mirror of
https://github.com/dbt-labs/dbt-core
synced 2025-12-20 23:01:28 +00:00
Compare commits
60 Commits
enable-pos
...
7444/spike
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8b1bc9745 | ||
|
|
e38e0c8813 | ||
|
|
7471b2f349 | ||
|
|
a0611a47fd | ||
|
|
f12e9b6e50 | ||
|
|
f705d26759 | ||
|
|
6369410694 | ||
|
|
552b623952 | ||
|
|
b81157fdac | ||
|
|
3fc17fe059 | ||
|
|
97f1fc9385 | ||
|
|
1589c754c6 | ||
|
|
a256083a36 | ||
|
|
fce5c070ca | ||
|
|
2aad937740 | ||
|
|
325415478c | ||
|
|
acfae95cf6 | ||
|
|
0425c3bcf6 | ||
|
|
4fdfb2b475 | ||
|
|
f286af2fdb | ||
|
|
6b01773ca3 | ||
|
|
2e938e3317 | ||
|
|
dac9fa8ce8 | ||
|
|
bac92eadf2 | ||
|
|
41364be1d8 | ||
|
|
719ab9a52b | ||
|
|
34b813a93b | ||
|
|
9e2284c1dd | ||
|
|
e9d5a4c9aa | ||
|
|
3f54bb0ea6 | ||
|
|
c4db8c0857 | ||
|
|
a5429cc389 | ||
|
|
fcd545b3b6 | ||
|
|
3054aed817 | ||
|
|
942f7120eb | ||
|
|
a43327df80 | ||
|
|
5bd828e396 | ||
|
|
f7202ae894 | ||
|
|
0dd963a34a | ||
|
|
22cb844228 | ||
|
|
fb12f7cd0b | ||
|
|
c3c2940568 | ||
|
|
17542fb587 | ||
|
|
c96c2a2b1d | ||
|
|
bd652a7cba | ||
|
|
babaf6a7d5 | ||
|
|
22d6e851e3 | ||
|
|
f8a7bfdf8e | ||
|
|
6a9c06dd66 | ||
|
|
800934946e | ||
|
|
86045ca67a | ||
|
|
ede647ac55 | ||
|
|
8dcc2b5cac | ||
|
|
6bb6e5767b | ||
|
|
77d2a5ba00 | ||
|
|
9add2a61f2 | ||
|
|
8ba476abe3 | ||
|
|
7ffadafe10 | ||
|
|
6d511ebe06 | ||
|
|
0daea9fb5a |
@@ -568,11 +568,11 @@ class MacroMethods:
|
||||
|
||||
return candidates.last()
|
||||
|
||||
def find_generate_macro_by_name(
|
||||
def find_default_generate_macro_by_name(
|
||||
self, component: str, root_project_name: str
|
||||
) -> Optional[Macro]:
|
||||
"""
|
||||
The `generate_X_name` macros are similar to regular ones, but ignore
|
||||
The default `generate_X_name` macros are similar to regular ones, and ignore
|
||||
imported packages.
|
||||
- if there is a `generate_{component}_name` macro in the root
|
||||
project, return it
|
||||
@@ -591,6 +591,21 @@ class MacroMethods:
|
||||
)
|
||||
return candidates.last()
|
||||
|
||||
def find_package_generate_macros_by_name(
|
||||
self, component: str, root_project_name: str
|
||||
) -> List[Macro]:
|
||||
"""
|
||||
Return any `generate_X_name` macros defined in imported packages
|
||||
"""
|
||||
|
||||
def filter(candidate: MacroCandidate) -> bool:
|
||||
return candidate.locality == Locality.Imported
|
||||
|
||||
candidates: CandidateList = self._find_macros_by_name(
|
||||
name=f"generate_{component}_name", root_project_name=root_project_name, filter=filter
|
||||
)
|
||||
return [candidate.macro for candidate in candidates]
|
||||
|
||||
def _find_macros_by_name(
|
||||
self,
|
||||
name: str,
|
||||
|
||||
@@ -71,20 +71,43 @@ class Parser(BaseParser[FinalValue], Generic[FinalValue]):
|
||||
|
||||
class RelationUpdate:
|
||||
def __init__(self, config: RuntimeConfig, manifest: Manifest, component: str) -> None:
|
||||
macro = manifest.find_generate_macro_by_name(
|
||||
default_macro = manifest.find_default_generate_macro_by_name(
|
||||
component=component,
|
||||
root_project_name=config.project_name,
|
||||
)
|
||||
if macro is None:
|
||||
|
||||
package_macros = manifest.find_package_generate_macros_by_name(
|
||||
component=component,
|
||||
root_project_name=config.project_name,
|
||||
)
|
||||
|
||||
if default_macro is None:
|
||||
raise DbtInternalError(f"No macro with name generate_{component}_name found")
|
||||
|
||||
root_context = generate_generate_name_macro_context(macro, config, manifest)
|
||||
self.updater = MacroGenerator(macro, root_context)
|
||||
default_macro_context = generate_generate_name_macro_context(
|
||||
default_macro, config, manifest
|
||||
)
|
||||
self.default_updater = MacroGenerator(default_macro, default_macro_context)
|
||||
|
||||
package_updaters = {}
|
||||
for package_macro in package_macros:
|
||||
imported_macro_context = generate_generate_name_macro_context(
|
||||
package_macro, config, manifest
|
||||
)
|
||||
package_updaters[package_macro.package_name] = MacroGenerator(
|
||||
package_macro, imported_macro_context
|
||||
)
|
||||
|
||||
self.package_updaters = package_updaters
|
||||
self.component = component
|
||||
|
||||
def __call__(self, parsed_node: Any, config_dict: Dict[str, Any]) -> None:
|
||||
override = config_dict.get(self.component)
|
||||
new_value = self.updater(override, parsed_node)
|
||||
if parsed_node.package_name in self.package_updaters:
|
||||
new_value = self.package_updaters[parsed_node.package_name](override, parsed_node)
|
||||
else:
|
||||
new_value = self.default_updater(override, parsed_node)
|
||||
|
||||
if isinstance(new_value, str):
|
||||
new_value = new_value.strip()
|
||||
setattr(parsed_node, self.component, new_value)
|
||||
|
||||
Reference in New Issue
Block a user