From 6fd0fbdde1b960e674d985669b68ad7b5bd69220 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 5 May 2023 13:56:28 -0600 Subject: [PATCH 1/3] instantiate MACRO_DEBUGGING global for dbt --- data_diff/dbt_parser.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/data_diff/dbt_parser.py b/data_diff/dbt_parser.py index ea8e7126..5f2d9830 100644 --- a/data_diff/dbt_parser.py +++ b/data_diff/dbt_parser.py @@ -1,3 +1,4 @@ +from argparse import Namespace from collections import defaultdict import json import os @@ -22,6 +23,13 @@ def import_dbt_dependencies(): raise RuntimeError("Could not import 'dbt' package. You can install it using: pip install 'data-diff[dbt]'.") # dbt 1.5+ specific stuff to power selection of models + try: + # ProfileRenderer.render_data() fails without instantiating global flag MACRO_DEBUGGING in dbt-core 1.5 + from dbt.flags import set_flags + set_flags(Namespace(MACRO_DEBUGGING=False)) + except: + pass + try: from dbt.cli.main import dbtRunner except ImportError: @@ -190,7 +198,7 @@ def get_connection_creds(self) -> Tuple[Dict[str, str], str]: profiles, dbt_profile_var, f"No profile '{dbt_profile_var}' found in '{profiles_path}'." ) # values can contain env_vars - rendered_profile = self.ProfileRenderer().render_data(profile) + rendered_profile = self.ProfileRenderer({'flags':{'DBT_MACRO_DEBUGGING': 0}}).render_data(profile) profile_target = get_from_dict_with_raise( rendered_profile, "target", f"No target found in profile '{dbt_profile_var}' in '{profiles_path}'." ) From c80edac47c12cbe1c73cfa9c380eb40fd68c1cf8 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 5 May 2023 13:57:24 -0600 Subject: [PATCH 2/3] cleanup --- data_diff/dbt_parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_diff/dbt_parser.py b/data_diff/dbt_parser.py index 5f2d9830..0798e430 100644 --- a/data_diff/dbt_parser.py +++ b/data_diff/dbt_parser.py @@ -198,7 +198,7 @@ def get_connection_creds(self) -> Tuple[Dict[str, str], str]: profiles, dbt_profile_var, f"No profile '{dbt_profile_var}' found in '{profiles_path}'." ) # values can contain env_vars - rendered_profile = self.ProfileRenderer({'flags':{'DBT_MACRO_DEBUGGING': 0}}).render_data(profile) + rendered_profile = self.ProfileRenderer().render_data(profile) profile_target = get_from_dict_with_raise( rendered_profile, "target", f"No target found in profile '{dbt_profile_var}' in '{profiles_path}'." ) From eef79abb954ab7ff9875e3f4d653c7632ddcceb5 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 5 May 2023 13:57:42 -0600 Subject: [PATCH 3/3] format --- data_diff/dbt_parser.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_diff/dbt_parser.py b/data_diff/dbt_parser.py index 0798e430..f80133be 100644 --- a/data_diff/dbt_parser.py +++ b/data_diff/dbt_parser.py @@ -26,6 +26,7 @@ def import_dbt_dependencies(): try: # ProfileRenderer.render_data() fails without instantiating global flag MACRO_DEBUGGING in dbt-core 1.5 from dbt.flags import set_flags + set_flags(Namespace(MACRO_DEBUGGING=False)) except: pass