recce-nightly 0.62.0.20250417__py3-none-any.whl → 0.62.0.20250421__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of recce-nightly might be problematic. Click here for more details.
- recce/VERSION +1 -1
- recce/adapter/dbt_adapter/__init__.py +21 -0
- recce/cli.py +4 -10
- recce/config.py +1 -1
- recce/data/404.html +1 -1
- recce/data/_next/static/chunks/{500-e51c92a025a51234.js → 831-dcc439bb9b7d5f8d.js} +2 -2
- recce/data/_next/static/chunks/app/page-e1c54f41eac23bda.js +1 -0
- recce/data/index.html +3 -3
- recce/data/index.txt +2 -2
- recce/server.py +2 -2
- recce/util/breaking.py +56 -53
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-0.62.0.20250421.dist-info}/METADATA +16 -16
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-0.62.0.20250421.dist-info}/RECORD +19 -19
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-0.62.0.20250421.dist-info}/WHEEL +1 -1
- recce/data/_next/static/chunks/app/page-9adc25782272ed2e.js +0 -1
- /recce/data/_next/static/{qiyFlux77VkhxiceAJe_F → cXAlyf2RLZaXGigasQA0l}/_buildManifest.js +0 -0
- /recce/data/_next/static/{qiyFlux77VkhxiceAJe_F → cXAlyf2RLZaXGigasQA0l}/_ssgManifest.js +0 -0
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-0.62.0.20250421.dist-info}/entry_points.txt +0 -0
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-0.62.0.20250421.dist-info}/licenses/LICENSE +0 -0
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-0.62.0.20250421.dist-info}/top_level.txt +0 -0
recce/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.62.0.
|
|
1
|
+
0.62.0.20250421
|
|
@@ -776,6 +776,7 @@ class DbtAdapter(BaseAdapter):
|
|
|
776
776
|
if base_node and curr_node:
|
|
777
777
|
base_checksum = base_node.get('checksum', {}).get('checksum')
|
|
778
778
|
curr_checksum = curr_node.get('checksum', {}).get('checksum')
|
|
779
|
+
change = None
|
|
779
780
|
if base_checksum is None or curr_checksum is None or base_checksum == curr_checksum:
|
|
780
781
|
continue
|
|
781
782
|
|
|
@@ -817,6 +818,8 @@ class DbtAdapter(BaseAdapter):
|
|
|
817
818
|
base_schema = _get_schema(base)
|
|
818
819
|
curr_schema = _get_schema(current)
|
|
819
820
|
dialect = self.adapter.connections.TYPE
|
|
821
|
+
if curr_manifest.metadata.adapter_type is not None:
|
|
822
|
+
dialect = curr_manifest.metadata.adapter_type
|
|
820
823
|
|
|
821
824
|
change = parse_change_category(
|
|
822
825
|
base_sql,
|
|
@@ -826,6 +829,24 @@ class DbtAdapter(BaseAdapter):
|
|
|
826
829
|
dialect=dialect,
|
|
827
830
|
perf_tracking=perf_tracking,
|
|
828
831
|
)
|
|
832
|
+
|
|
833
|
+
# Make sure that the case of the column names are the same
|
|
834
|
+
changed_columns = {
|
|
835
|
+
column.lower(): change_status
|
|
836
|
+
for column, change_status in (change.columns or {}).items()
|
|
837
|
+
}
|
|
838
|
+
changed_columns_names = set(changed_columns)
|
|
839
|
+
changed_columns_final = {}
|
|
840
|
+
|
|
841
|
+
base_columns = base_node.get('columns') or {}
|
|
842
|
+
curr_columns = curr_node.get('columns') or {}
|
|
843
|
+
columns_names = set(base_columns) | set(curr_columns)
|
|
844
|
+
|
|
845
|
+
for column_name in columns_names:
|
|
846
|
+
if column_name.lower() in changed_columns_names:
|
|
847
|
+
changed_columns_final[column_name] = changed_columns[column_name.lower()]
|
|
848
|
+
|
|
849
|
+
change.columns = changed_columns_final
|
|
829
850
|
except Exception:
|
|
830
851
|
change = NodeChange(category='unknown')
|
|
831
852
|
|
recce/cli.py
CHANGED
|
@@ -278,7 +278,7 @@ def server(host, port, state_file=None, **kwargs):
|
|
|
278
278
|
console.print('Recce is launching in single environment mode with limited functionality.')
|
|
279
279
|
console.print('For full functionality, prepare a base set of dbt artifacts to compare against in '
|
|
280
280
|
f"'{target_base_path}'.")
|
|
281
|
-
console.print('https://datarecce.io/
|
|
281
|
+
console.print('https://docs.datarecce.io/get-started/#prepare-dbt-artifacts')
|
|
282
282
|
console.print()
|
|
283
283
|
|
|
284
284
|
state_loader = create_state_loader(is_review, is_cloud, state_file, cloud_options)
|
|
@@ -758,11 +758,10 @@ def artifact(**kwargs):
|
|
|
758
758
|
return recce_ci_artifact(**kwargs)
|
|
759
759
|
|
|
760
760
|
|
|
761
|
-
@cli.command(cls=TrackCommand
|
|
761
|
+
@cli.command(cls=TrackCommand)
|
|
762
762
|
@click.argument('state_file', type=click.Path(exists=True))
|
|
763
763
|
@click.option('--api-token', help='The token used by Recce Cloud API.', type=click.STRING,
|
|
764
764
|
envvar='RECCE_API_TOKEN')
|
|
765
|
-
@add_options(recce_options)
|
|
766
765
|
def share(state_file, **kwargs):
|
|
767
766
|
"""
|
|
768
767
|
Share the state file
|
|
@@ -776,13 +775,9 @@ def share(state_file, **kwargs):
|
|
|
776
775
|
# read or input the api token
|
|
777
776
|
api_token = kwargs.get('api_token') if kwargs.get('api_token') else get_recce_api_token()
|
|
778
777
|
if api_token is None:
|
|
779
|
-
console.print("
|
|
780
|
-
exit(1)
|
|
781
|
-
|
|
782
|
-
if api_token is None:
|
|
783
|
-
console.print("Please login Recce Cloud and copy the API token from the setting page.\n"
|
|
778
|
+
console.print("An API token is required to this. This can be obtained in your user account settings.\n"
|
|
784
779
|
f"{RECCE_CLOUD_API_HOST}/settings#tokens\n"
|
|
785
|
-
"
|
|
780
|
+
"Your API token will be added to '~/.recce/profile.yml' for more convenient sharing.")
|
|
786
781
|
api_token = click.prompt('Your Recce API token', type=str, hide_input=True, show_default=False)
|
|
787
782
|
update_user_profile({'api_token': api_token})
|
|
788
783
|
|
|
@@ -827,7 +822,6 @@ def share(state_file, **kwargs):
|
|
|
827
822
|
@click.option('--host', default='localhost', show_default=True, help='The host to bind to.')
|
|
828
823
|
@click.option('--port', default=8000, show_default=True, help='The port to bind to.', type=int)
|
|
829
824
|
def read_only(host, port, state_file=None, **kwargs):
|
|
830
|
-
|
|
831
825
|
from .server import app, AppState
|
|
832
826
|
from rich.console import Console
|
|
833
827
|
|
recce/config.py
CHANGED
|
@@ -7,7 +7,7 @@ from recce.util import SingletonMeta
|
|
|
7
7
|
|
|
8
8
|
RECCE_CONFIG_FILE = 'recce.yml'
|
|
9
9
|
RECCE_PRESET_CHECK_COMMENT = '''Preset Checks
|
|
10
|
-
Please see https://datarecce.io/
|
|
10
|
+
Please see https://docs.datarecce.io/features/preset-checks/
|
|
11
11
|
'''
|
|
12
12
|
RECCE_ERROR_LOG_FILE = 'recce_error.log'
|
|
13
13
|
console = Console()
|
recce/data/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-567d72f0bc0820d5.js"/><script src="/_next/static/chunks/1f229bf6-d9fe92e56db8d93b.js" async=""></script><script src="/_next/static/chunks/700-3b65fc3666820d00.js" async=""></script><script src="/_next/static/chunks/main-app-0225a2255968e566.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-567d72f0bc0820d5.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[37194,[],\"\"]\n3:I[79137,[],\"\"]\n4:I[63846,[],\"\"]\na:I[67160,[],\"\"]\n5:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-567d72f0bc0820d5.js"/><script src="/_next/static/chunks/1f229bf6-d9fe92e56db8d93b.js" async=""></script><script src="/_next/static/chunks/700-3b65fc3666820d00.js" async=""></script><script src="/_next/static/chunks/main-app-0225a2255968e566.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-567d72f0bc0820d5.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[37194,[],\"\"]\n3:I[79137,[],\"\"]\n4:I[63846,[],\"\"]\na:I[67160,[],\"\"]\n5:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"cXAlyf2RLZaXGigasQA0l\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L2\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$5\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$6\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$8\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"recce\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Recce: Data validation toolkit for comprehensive PR review\"}]]\n2:null\n"])</script></body></html>
|