recce-nightly 0.52.0.20250123__py3-none-any.whl → 0.52.0.20250126__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.
- recce/VERSION +1 -1
- recce/adapter/dbt_adapter/__init__.py +10 -4
- recce/data/404.html +1 -1
- recce/data/index.html +1 -1
- recce/data/index.txt +1 -1
- recce/util/breaking.py +31 -21
- {recce_nightly-0.52.0.20250123.dist-info → recce_nightly-0.52.0.20250126.dist-info}/METADATA +1 -1
- {recce_nightly-0.52.0.20250123.dist-info → recce_nightly-0.52.0.20250126.dist-info}/RECORD +14 -14
- /recce/data/_next/static/{tkveNCZyDlnnXqqFizCd- → 79raEzCsjmSMMSwf82Tf2}/_buildManifest.js +0 -0
- /recce/data/_next/static/{tkveNCZyDlnnXqqFizCd- → 79raEzCsjmSMMSwf82Tf2}/_ssgManifest.js +0 -0
- {recce_nightly-0.52.0.20250123.dist-info → recce_nightly-0.52.0.20250126.dist-info}/LICENSE +0 -0
- {recce_nightly-0.52.0.20250123.dist-info → recce_nightly-0.52.0.20250126.dist-info}/WHEEL +0 -0
- {recce_nightly-0.52.0.20250123.dist-info → recce_nightly-0.52.0.20250126.dist-info}/entry_points.txt +0 -0
- {recce_nightly-0.52.0.20250123.dist-info → recce_nightly-0.52.0.20250126.dist-info}/top_level.txt +0 -0
recce/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.52.0.
|
|
1
|
+
0.52.0.20250126
|
|
@@ -9,9 +9,14 @@ from functools import lru_cache
|
|
|
9
9
|
from pathlib import Path
|
|
10
10
|
from typing import Callable, Dict, List, Optional, Tuple, Iterator, Any, Set, Union, Literal, Type
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
import
|
|
14
|
-
|
|
12
|
+
try:
|
|
13
|
+
import agate
|
|
14
|
+
import dbt.adapters.factory
|
|
15
|
+
from dbt.contracts.state import PreviousState
|
|
16
|
+
except ImportError as e:
|
|
17
|
+
print("Error: dbt module not found. Please install it by running:")
|
|
18
|
+
print("pip install dbt-core dbt-<adapter>")
|
|
19
|
+
raise e
|
|
15
20
|
from watchdog.events import FileSystemEventHandler
|
|
16
21
|
from watchdog.observers import Observer
|
|
17
22
|
|
|
@@ -704,7 +709,8 @@ class DbtAdapter(BaseAdapter):
|
|
|
704
709
|
from recce.util.breaking import is_breaking_change
|
|
705
710
|
base_sql = self.generate_sql(base_node.get('raw_code'))
|
|
706
711
|
curr_sql = self.generate_sql(curr_node.get('raw_code'))
|
|
707
|
-
|
|
712
|
+
dialect = self.adapter.connections.TYPE
|
|
713
|
+
if not is_breaking_change(base_sql, curr_sql, dialect=dialect):
|
|
708
714
|
change_category = 'non-breaking'
|
|
709
715
|
except Exception:
|
|
710
716
|
pass
|
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-300961f547f48fe7.js"/><script src="/_next/static/chunks/157e448a-49151cad1ec51175.js" async=""></script><script src="/_next/static/chunks/312-3e9b49b718b98737.js" async=""></script><script src="/_next/static/chunks/main-app-19c0918a6bb54549.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-300961f547f48fe7.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[16892,[],\"\"]\n3:I[60299,[],\"\"]\n4:I[43276,[],\"\"]\na:I[28103,[],\"\"]\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-300961f547f48fe7.js"/><script src="/_next/static/chunks/157e448a-49151cad1ec51175.js" async=""></script><script src="/_next/static/chunks/312-3e9b49b718b98737.js" async=""></script><script src="/_next/static/chunks/main-app-19c0918a6bb54549.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-300961f547f48fe7.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[16892,[],\"\"]\n3:I[60299,[],\"\"]\n4:I[43276,[],\"\"]\na:I[28103,[],\"\"]\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\":\"79raEzCsjmSMMSwf82Tf2\",\"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>
|
recce/data/index.html
CHANGED
|
@@ -24,4 +24,4 @@
|
|
|
24
24
|
transparent 0%,
|
|
25
25
|
#3182ce 50%,
|
|
26
26
|
transparent 100%
|
|
27
|
-
);position:absolute;will-change:left;min-width:50%;-webkit-animation:animation-11lmxjq 1s ease infinite normal none running;animation:animation-11lmxjq 1s ease infinite normal none running;}@-webkit-keyframes animation-11lmxjq{0%{left:-40%;}100%{left:100%;}}@keyframes animation-11lmxjq{0%{left:-40%;}100%{left:100%;}}</style><div style="width:0%" data-indeterminate="" aria-valuemax="100" aria-valuemin="0" role="progressbar" class="css-h5ends"></div></div></div><div class="css-0"></div></div></div></div><span></span><span id="__chakra_env" hidden=""></span><script src="/_next/static/chunks/webpack-300961f547f48fe7.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:HL[\"/_next/static/css/1d7428fe54fca42f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[16892,[],\"\"]\n4:I[38443,[],\"ClientPageRoot\"]\n5:I[17149,[\"524\",\"static/chunks/b3b1872b-97ea0be5bd9b42bc.js\",\"434\",\"static/chunks/868e7b5c-36d94ba5a58a2e6a.js\",\"678\",\"static/chunks/3998a672-e71829c331c77ccb.js\",\"509\",\"static/chunks/9746af58-daab848e55b5faf7.js\",\"648\",\"static/chunks/ce84277d-ced9559f73764a27.js\",\"989\",\"static/chunks/47d8844f-ccb4e71fbabd12f3.js\",\"147\",\"static/chunks/a30376cd-ea4617387c84b12e.js\",\"995\",\"static/chunks/fee69bc6-2cf346c884a74e9d.js\",\"739\",\"static/chunks/7a8a3e83-f7fe5f14c56108bf.js\",\"283\",\"static/chunks/450c323b-79414be6f43ef15c.js\",\"303\",\"static/chunks/36e1c10d-3bcdd9bb8564108c.js\",\"22\",\"static/chunks/29e3cc0d-490dbff344996865.js\",\"25\",\"static/chunks/b63b1b3f-13deddaaba264453.js\",\"355\",\"static/chunks/7f27ae6c-c484e79185298424.js\",\"495\",\"static/chunks/6dc81886-03da5372308c376d.js\",\"599\",\"static/chunks/c132bf7d-740a7144e614cb2d.js\",\"852\",\"static/chunks/cf0511cf-88e5bf54e88504a3.js\",\"323\",\"static/chunks/323-9565a741f1447d32.js\",\"931\",\"static/chunks/app/page-5fd8da415e5e06aa.js\"],\"default\",1]\n6:I[60299,[],\"\"]\n7:I[43276,[],\"\"]\n9:I[28103,[],\"\"]\na:[]\n0:[\"$\",\"$L2\",null,{\"buildId\":\"
|
|
27
|
+
);position:absolute;will-change:left;min-width:50%;-webkit-animation:animation-11lmxjq 1s ease infinite normal none running;animation:animation-11lmxjq 1s ease infinite normal none running;}@-webkit-keyframes animation-11lmxjq{0%{left:-40%;}100%{left:100%;}}@keyframes animation-11lmxjq{0%{left:-40%;}100%{left:100%;}}</style><div style="width:0%" data-indeterminate="" aria-valuemax="100" aria-valuemin="0" role="progressbar" class="css-h5ends"></div></div></div><div class="css-0"></div></div></div></div><span></span><span id="__chakra_env" hidden=""></span><script src="/_next/static/chunks/webpack-300961f547f48fe7.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:HL[\"/_next/static/css/1d7428fe54fca42f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[16892,[],\"\"]\n4:I[38443,[],\"ClientPageRoot\"]\n5:I[17149,[\"524\",\"static/chunks/b3b1872b-97ea0be5bd9b42bc.js\",\"434\",\"static/chunks/868e7b5c-36d94ba5a58a2e6a.js\",\"678\",\"static/chunks/3998a672-e71829c331c77ccb.js\",\"509\",\"static/chunks/9746af58-daab848e55b5faf7.js\",\"648\",\"static/chunks/ce84277d-ced9559f73764a27.js\",\"989\",\"static/chunks/47d8844f-ccb4e71fbabd12f3.js\",\"147\",\"static/chunks/a30376cd-ea4617387c84b12e.js\",\"995\",\"static/chunks/fee69bc6-2cf346c884a74e9d.js\",\"739\",\"static/chunks/7a8a3e83-f7fe5f14c56108bf.js\",\"283\",\"static/chunks/450c323b-79414be6f43ef15c.js\",\"303\",\"static/chunks/36e1c10d-3bcdd9bb8564108c.js\",\"22\",\"static/chunks/29e3cc0d-490dbff344996865.js\",\"25\",\"static/chunks/b63b1b3f-13deddaaba264453.js\",\"355\",\"static/chunks/7f27ae6c-c484e79185298424.js\",\"495\",\"static/chunks/6dc81886-03da5372308c376d.js\",\"599\",\"static/chunks/c132bf7d-740a7144e614cb2d.js\",\"852\",\"static/chunks/cf0511cf-88e5bf54e88504a3.js\",\"323\",\"static/chunks/323-9565a741f1447d32.js\",\"931\",\"static/chunks/app/page-5fd8da415e5e06aa.js\"],\"default\",1]\n6:I[60299,[],\"\"]\n7:I[43276,[],\"\"]\n9:I[28103,[],\"\"]\na:[]\n0:[\"$\",\"$L2\",null,{\"buildId\":\"79raEzCsjmSMMSwf82Tf2\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1d7428fe54fca42f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]],null],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helv"])</script><script>self.__next_f.push([1,"etica,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.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L8\"],\"globalErrorComponent\":\"$9\",\"missingSlots\":\"$Wa\"}]\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"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\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"32x32\"}]]\n3:null\n"])</script></body></html>
|
recce/data/index.txt
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
3:I[17149,["524","static/chunks/b3b1872b-97ea0be5bd9b42bc.js","434","static/chunks/868e7b5c-36d94ba5a58a2e6a.js","678","static/chunks/3998a672-e71829c331c77ccb.js","509","static/chunks/9746af58-daab848e55b5faf7.js","648","static/chunks/ce84277d-ced9559f73764a27.js","989","static/chunks/47d8844f-ccb4e71fbabd12f3.js","147","static/chunks/a30376cd-ea4617387c84b12e.js","995","static/chunks/fee69bc6-2cf346c884a74e9d.js","739","static/chunks/7a8a3e83-f7fe5f14c56108bf.js","283","static/chunks/450c323b-79414be6f43ef15c.js","303","static/chunks/36e1c10d-3bcdd9bb8564108c.js","22","static/chunks/29e3cc0d-490dbff344996865.js","25","static/chunks/b63b1b3f-13deddaaba264453.js","355","static/chunks/7f27ae6c-c484e79185298424.js","495","static/chunks/6dc81886-03da5372308c376d.js","599","static/chunks/c132bf7d-740a7144e614cb2d.js","852","static/chunks/cf0511cf-88e5bf54e88504a3.js","323","static/chunks/323-9565a741f1447d32.js","931","static/chunks/app/page-5fd8da415e5e06aa.js"],"default",1]
|
|
3
3
|
4:I[60299,[],""]
|
|
4
4
|
5:I[43276,[],""]
|
|
5
|
-
0:["
|
|
5
|
+
0:["79raEzCsjmSMMSwf82Tf2",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/1d7428fe54fca42f.css","precedence":"next","crossOrigin":"$undefined"}]]],null],null]},[[null,["$","html",null,{"lang":"en","children":["$","body",null,{"suppressHydrationWarning":true,"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","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."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]]
|
|
6
6
|
6:[["$","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"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"32x32"}]]
|
|
7
7
|
1:null
|
recce/util/breaking.py
CHANGED
|
@@ -6,15 +6,21 @@ def is_breaking_change(original_sql, modified_sql, dialect=None):
|
|
|
6
6
|
return False
|
|
7
7
|
|
|
8
8
|
try:
|
|
9
|
-
from sqlglot import parse_one, diff
|
|
9
|
+
from sqlglot import parse_one, diff, Dialect
|
|
10
10
|
from sqlglot.diff import Insert, Keep
|
|
11
11
|
import sqlglot.expressions as exp
|
|
12
12
|
except ImportError:
|
|
13
13
|
return True
|
|
14
14
|
|
|
15
15
|
try:
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
dialect = Dialect.get(dialect)
|
|
17
|
+
|
|
18
|
+
def _parse(sql):
|
|
19
|
+
ast = parse_one(sql, dialect=dialect)
|
|
20
|
+
return optimize(ast, dialect=dialect)
|
|
21
|
+
|
|
22
|
+
original_ast = _parse(original_sql)
|
|
23
|
+
modified_ast = _parse(modified_sql)
|
|
18
24
|
except Exception:
|
|
19
25
|
return True
|
|
20
26
|
|
|
@@ -27,31 +33,35 @@ def is_breaking_change(original_sql, modified_sql, dialect=None):
|
|
|
27
33
|
e.expression for e in edits if isinstance(e, Insert)
|
|
28
34
|
}
|
|
29
35
|
|
|
36
|
+
VALID_EXPRESSIONS = (
|
|
37
|
+
exp.Where,
|
|
38
|
+
exp.Join,
|
|
39
|
+
exp.Order,
|
|
40
|
+
exp.Group,
|
|
41
|
+
exp.Having,
|
|
42
|
+
exp.Limit,
|
|
43
|
+
exp.Offset,
|
|
44
|
+
exp.Window,
|
|
45
|
+
exp.Union,
|
|
46
|
+
exp.Intersect,
|
|
47
|
+
exp.Except,
|
|
48
|
+
exp.Merge,
|
|
49
|
+
exp.Delete,
|
|
50
|
+
exp.Update,
|
|
51
|
+
exp.Insert,
|
|
52
|
+
exp.Subquery,
|
|
53
|
+
)
|
|
54
|
+
|
|
30
55
|
for edit in edits:
|
|
31
56
|
if isinstance(edit, Insert):
|
|
32
57
|
inserted_expr = edit.expression
|
|
33
|
-
VALID_EXPRESSIONS = (
|
|
34
|
-
exp.Where,
|
|
35
|
-
exp.Join,
|
|
36
|
-
exp.Order,
|
|
37
|
-
exp.Group,
|
|
38
|
-
exp.Having,
|
|
39
|
-
exp.Limit,
|
|
40
|
-
exp.Offset,
|
|
41
|
-
exp.Window,
|
|
42
|
-
exp.Union,
|
|
43
|
-
exp.Intersect,
|
|
44
|
-
exp.Except,
|
|
45
|
-
exp.Merge,
|
|
46
|
-
exp.Delete,
|
|
47
|
-
exp.Update,
|
|
48
|
-
exp.Insert,
|
|
49
|
-
exp.Subquery,
|
|
50
|
-
)
|
|
51
58
|
|
|
52
59
|
if isinstance(inserted_expr, VALID_EXPRESSIONS):
|
|
53
60
|
return True
|
|
54
61
|
|
|
62
|
+
if isinstance(inserted_expr, exp.UDTF):
|
|
63
|
+
return True
|
|
64
|
+
|
|
55
65
|
if (
|
|
56
66
|
not isinstance(inserted_expr.parent, exp.Select) and
|
|
57
67
|
inserted_expr.parent not in inserted_expressions
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
recce/VERSION,sha256=
|
|
1
|
+
recce/VERSION,sha256=L3s0u15V6fD2JTgYD_m2sZST_xJB0_MI7wpACmphhfk,16
|
|
2
2
|
recce/__init__.py,sha256=PUViz81KEpWnnIvX3wRaz3hq7FVUorVoZdbLNfSBaoM,1879
|
|
3
3
|
recce/artifact.py,sha256=a7P1cXd6lglEZF2OYeNvsEg9ME-ocJo5oPU4VZVeaz0,6586
|
|
4
4
|
recce/cli.py,sha256=yf597GtFtwZT9z3sojY_KO3nq0aOTLEqwxlAvTu74KE,29819
|
|
@@ -16,17 +16,19 @@ recce/summary.py,sha256=yPAaGCkOmfhLjwF2rGpS66XR88TjyNG6GI3T6lsRIeg,18809
|
|
|
16
16
|
recce/adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
recce/adapter/base.py,sha256=rCdRJklpgAnQ864Ez0c0tzU_YPCWIb4clNiJ87niDcg,3582
|
|
18
18
|
recce/adapter/sqlmesh_adapter.py,sha256=_nnWHhd46p1MIW5-riQFYMf638OlSdwugIKgTwYiRYM,5160
|
|
19
|
-
recce/adapter/dbt_adapter/__init__.py,sha256=
|
|
19
|
+
recce/adapter/dbt_adapter/__init__.py,sha256=fkk9a_CW6rezeKYuBZlT93b6QoYrXME2hqCGe6fuKJc,39976
|
|
20
20
|
recce/adapter/dbt_adapter/dbt_version.py,sha256=CwsOEu101fzMUwUYD3Y7btDPAALQNwA7J6C4Auc_wzM,1225
|
|
21
21
|
recce/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
recce/apis/check_api.py,sha256=24Fgt_a79rhLue9fYgQkgWbNXGb4XZjyU-7qA4lE03c,6014
|
|
23
23
|
recce/apis/check_func.py,sha256=onhGppZ7LDrVmipHaXZI-WaTVRFZDwb2oQhbYe0tSXY,4316
|
|
24
24
|
recce/apis/run_api.py,sha256=FdNFWt7JrPbCv2CQkswbsaw5gZNGesjQBi749jbQtK0,3326
|
|
25
25
|
recce/apis/run_func.py,sha256=vKunxDX4tfO7fSv8BZaDZIhvH1j6Kf1AT99AGNO9_0w,6401
|
|
26
|
-
recce/data/404.html,sha256=
|
|
26
|
+
recce/data/404.html,sha256=vid35rPuuNY8q533wT9x3aUjfrvYlEepJBxi3niOY9M,6206
|
|
27
27
|
recce/data/favicon.ico,sha256=B2mBumUOnzvUrXrqNkrc5QfdDXjzEXRcWkWur0fJ6sM,2565
|
|
28
|
-
recce/data/index.html,sha256=
|
|
29
|
-
recce/data/index.txt,sha256
|
|
28
|
+
recce/data/index.html,sha256=yo5fo4oJ0ymknEm888bbSi2f1fwPGb7kUodFBWLE6FU,38924
|
|
29
|
+
recce/data/index.txt,sha256=-fkEqCMGmquKeCtDB2Dvxz7kaNPRIn0wana4ojvx7I8,3283
|
|
30
|
+
recce/data/_next/static/79raEzCsjmSMMSwf82Tf2/_buildManifest.js,sha256=YO8ZajobGBQfFtGDwJn72G4J4BUoFhXxEs4bevyXW9c,224
|
|
31
|
+
recce/data/_next/static/79raEzCsjmSMMSwf82Tf2/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
30
32
|
recce/data/_next/static/chunks/157e448a-49151cad1ec51175.js,sha256=Gu8zzhH5DrQ1dtvwlQwYB71iXUHIwWFpQnlvFOWCpmc,172836
|
|
31
33
|
recce/data/_next/static/chunks/29e3cc0d-490dbff344996865.js,sha256=J_kTn0f6O93AITYvwPTtGocHNpWcRc6jxewfKoWypZM,700
|
|
32
34
|
recce/data/_next/static/chunks/312-3e9b49b718b98737.js,sha256=GwmjEY2_In1voBy2ydbBjiD1SKkYhBi4FpVzHz9SlBs,124102
|
|
@@ -68,8 +70,6 @@ recce/data/_next/static/media/montserrat-latin-ext-800-normal.40cba3c6.woff,sha2
|
|
|
68
70
|
recce/data/_next/static/media/montserrat-latin-ext-800-normal.85728e97.woff2,sha256=EpXJqJRuCdvNjtG4DT-ClT8ZyItLv2CuNwlYv9RtC50,13856
|
|
69
71
|
recce/data/_next/static/media/montserrat-vietnamese-800-normal.0bd05041.woff,sha256=cF1W1bAhFnd05_8ljijgMGrZIkQACMF1YBHcej06mC4,6920
|
|
70
72
|
recce/data/_next/static/media/montserrat-vietnamese-800-normal.dfbbc7ba.woff2,sha256=C0ZWWMMu_3IBlZL_FJVl8WyPFeSDWV4_Q4qDLlpTECo,5196
|
|
71
|
-
recce/data/_next/static/tkveNCZyDlnnXqqFizCd-/_buildManifest.js,sha256=YO8ZajobGBQfFtGDwJn72G4J4BUoFhXxEs4bevyXW9c,224
|
|
72
|
-
recce/data/_next/static/tkveNCZyDlnnXqqFizCd-/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
73
73
|
recce/data/imgs/feedback/thumbs-down.png,sha256=q9KVIbaZku1TWkYHuleYlO-b6HsTApYh3St5xNHMGMg,10695
|
|
74
74
|
recce/data/imgs/feedback/thumbs-up.png,sha256=VF3BH8bmYEqcSsMDJO57xMqW4t6crCXUXaMlOPgI_OE,10556
|
|
75
75
|
recce/data/logo/recce-logo-white.png,sha256=y3re8iEucJnMUkAkRS2CjWHTlOydyvgWdWjuQKcXDbk,46923
|
|
@@ -94,7 +94,7 @@ recce/tasks/schema.py,sha256=28mmZni0AU1bLfptt7Np3ddKhQ5XZsrtYINonQ2OQOo,2274
|
|
|
94
94
|
recce/tasks/top_k.py,sha256=E-V2p2St2W1RXa4cQMUYagHpja5rWj_mcPLtvJ3fKfI,5522
|
|
95
95
|
recce/tasks/valuediff.py,sha256=k7cveJsgUojAMu6UtxfovquDQeUO3oF239bjIounUXw,15114
|
|
96
96
|
recce/util/__init__.py,sha256=0lcJectK7Z7k9h0EaYCcv4Bgw2PN03OdJoxb3tbV5j8,37
|
|
97
|
-
recce/util/breaking.py,sha256=
|
|
97
|
+
recce/util/breaking.py,sha256=MsuFfihpizxdjLtQsLOvC3rHTvbf37Bvy5Kmxnd-4Ic,1914
|
|
98
98
|
recce/util/cache.py,sha256=QB6wzxe0M3jNTwP0M27Ys8F2hF-oda4-LyXXG9THuZQ,646
|
|
99
99
|
recce/util/io.py,sha256=uMBpJBKKOUPHTBgntkVkuaVUkY8grDIlA8ORCtFLE5E,3372
|
|
100
100
|
recce/util/logger.py,sha256=Vmd2PuyzBkML7zvPmJKe3yNfELFjRZqX7abA23wquzg,746
|
|
@@ -128,9 +128,9 @@ tests/tasks/test_row_count.py,sha256=hjrKP1u2aZ9V0EWb0WGXDz4-V2kYaiNeiJ_Mqin8BPg
|
|
|
128
128
|
tests/tasks/test_schema.py,sha256=89c0FLegCFoEQ2Kp3ddIxlKHC2ioUGm63OMYEgiDqTk,2714
|
|
129
129
|
tests/tasks/test_top_k.py,sha256=hqYWSd9xE1GU0wgvpgKeLHbPVd5CABYcTJvgA49JRyA,1707
|
|
130
130
|
tests/tasks/test_valuediff.py,sha256=_z1Ci4ba4lFSWwbj7cbKBRtWqLgV_1HIZGqQlEFl61o,1863
|
|
131
|
-
recce_nightly-0.52.0.
|
|
132
|
-
recce_nightly-0.52.0.
|
|
133
|
-
recce_nightly-0.52.0.
|
|
134
|
-
recce_nightly-0.52.0.
|
|
135
|
-
recce_nightly-0.52.0.
|
|
136
|
-
recce_nightly-0.52.0.
|
|
131
|
+
recce_nightly-0.52.0.20250126.dist-info/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
|
|
132
|
+
recce_nightly-0.52.0.20250126.dist-info/METADATA,sha256=3E53-1URTKi6xQxsfgxnslK7AZ2KWVtK11BXHYvqLAk,13163
|
|
133
|
+
recce_nightly-0.52.0.20250126.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
134
|
+
recce_nightly-0.52.0.20250126.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
|
|
135
|
+
recce_nightly-0.52.0.20250126.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
|
|
136
|
+
recce_nightly-0.52.0.20250126.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recce_nightly-0.52.0.20250123.dist-info → recce_nightly-0.52.0.20250126.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{recce_nightly-0.52.0.20250123.dist-info → recce_nightly-0.52.0.20250126.dist-info}/top_level.txt
RENAMED
|
File without changes
|