Skip to content

Commit 5d30bc5

Browse files
committed
Chore: Allow duplicate keys in dbt project yaml files
1 parent 5318b81 commit 5d30bc5

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

sqlmesh/dbt/common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
}
3535

3636

37-
def load_yaml(source: str | Path) -> t.Dict:
37+
def load_yaml(source: str | Path, allow_duplicate_keys: bool = False) -> t.Dict:
3838
try:
39-
return load(source, render_jinja=False)
39+
return load(source, render_jinja=False, allow_duplicate_keys=allow_duplicate_keys)
4040
except DuplicateKeyError as ex:
4141
raise ConfigError(f"{source}: {ex}" if isinstance(source, Path) else f"{ex}")
4242

sqlmesh/dbt/package.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def load(self, package_root: Path) -> Package:
7575
if not project_file_path.exists():
7676
raise ConfigError(f"Could not find {PROJECT_FILENAME} in '{package_root}'.")
7777

78-
project_yaml = load_yaml(project_file_path)
78+
project_yaml = load_yaml(project_file_path, allow_duplicate_keys=True)
7979
package_name = self._context.render(project_yaml.get("name", ""))
8080
if not package_name:
8181
raise ConfigError(f"Package '{package_root}' must include package name.")

sqlmesh/dbt/profile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def load(cls, context: DbtContext, target_name: t.Optional[str] = None) -> Profi
5353
if not project_file.exists():
5454
raise ConfigError(f"Could not find {PROJECT_FILENAME} in {context.project_root}")
5555

56-
project_yaml = load_yaml(project_file)
56+
project_yaml = load_yaml(project_file, allow_duplicate_keys=True)
5757
context.profile_name = context.render(
5858
project_yaml.get("profile", "")
5959
) or context.render(project_yaml.get("name", ""))

sqlmesh/dbt/project.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def load(cls, context: DbtContext, variables: t.Optional[t.Dict[str, t.Any]] = N
5353
logger.debug("Processing project file '%s'.", project_file_path)
5454
if not project_file_path.exists():
5555
raise ConfigError(f"Could not find {PROJECT_FILENAME} in {context.project_root}")
56-
project_yaml = load_yaml(project_file_path)
56+
project_yaml = load_yaml(project_file_path, allow_duplicate_keys=True)
5757

5858
project_name = context.render(project_yaml.get("name", ""))
5959
context.project_name = project_name

0 commit comments

Comments
 (0)