recce-nightly 0.56.0.20250302__py3-none-any.whl → 0.56.0.20250304__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 +25 -3
- recce/cli.py +12 -0
- recce/data/404.html +1 -1
- recce/data/_next/static/chunks/app/page-5b86937f2974d587.js +1 -0
- recce/data/index.html +2 -2
- recce/data/index.txt +2 -2
- recce/event/__init__.py +7 -0
- recce/state.py +46 -8
- recce/util/cll.py +67 -1
- {recce_nightly-0.56.0.20250302.dist-info → recce_nightly-0.56.0.20250304.dist-info}/METADATA +1 -1
- {recce_nightly-0.56.0.20250302.dist-info → recce_nightly-0.56.0.20250304.dist-info}/RECORD +18 -18
- recce/data/_next/static/chunks/app/page-edc85fe647299e04.js +0 -1
- /recce/data/_next/static/{yhRltmKeCHagogYcUQFyx → PdAZtrSpaIDsiEHk9Nkxs}/_buildManifest.js +0 -0
- /recce/data/_next/static/{yhRltmKeCHagogYcUQFyx → PdAZtrSpaIDsiEHk9Nkxs}/_ssgManifest.js +0 -0
- {recce_nightly-0.56.0.20250302.dist-info → recce_nightly-0.56.0.20250304.dist-info}/LICENSE +0 -0
- {recce_nightly-0.56.0.20250302.dist-info → recce_nightly-0.56.0.20250304.dist-info}/WHEEL +0 -0
- {recce_nightly-0.56.0.20250302.dist-info → recce_nightly-0.56.0.20250304.dist-info}/entry_points.txt +0 -0
- {recce_nightly-0.56.0.20250302.dist-info → recce_nightly-0.56.0.20250304.dist-info}/top_level.txt +0 -0
recce/data/index.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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="image" href="/logo/recce-logo-white.png"/><link rel="stylesheet" href="/_next/static/css/1d7428fe54fca42f.css" data-precedence="next"/><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><script src="/_next/static/chunks/b3b1872b-97ea0be5bd9b42bc.js" async=""></script><script src="/_next/static/chunks/868e7b5c-36d94ba5a58a2e6a.js" async=""></script><script src="/_next/static/chunks/3998a672-e71829c331c77ccb.js" async=""></script><script src="/_next/static/chunks/9746af58-daab848e55b5faf7.js" async=""></script><script src="/_next/static/chunks/ce84277d-ced9559f73764a27.js" async=""></script><script src="/_next/static/chunks/47d8844f-ccb4e71fbabd12f3.js" async=""></script><script src="/_next/static/chunks/a30376cd-de90859763d1c500.js" async=""></script><script src="/_next/static/chunks/fee69bc6-2cf346c884a74e9d.js" async=""></script><script src="/_next/static/chunks/7a8a3e83-f7fe5f14c56108bf.js" async=""></script><script src="/_next/static/chunks/450c323b-79414be6f43ef15c.js" async=""></script><script src="/_next/static/chunks/36e1c10d-3bcdd9bb8564108c.js" async=""></script><script src="/_next/static/chunks/29e3cc0d-490dbff344996865.js" async=""></script><script src="/_next/static/chunks/b63b1b3f-13deddaaba264453.js" async=""></script><script src="/_next/static/chunks/7f27ae6c-c484e79185298424.js" async=""></script><script src="/_next/static/chunks/6dc81886-03da5372308c376d.js" async=""></script><script src="/_next/static/chunks/c132bf7d-740a7144e614cb2d.js" async=""></script><script src="/_next/static/chunks/cf0511cf-88e5bf54e88504a3.js" async=""></script><script src="/_next/static/chunks/771-71780b322a32673c.js" async=""></script><script src="/_next/static/chunks/app/page-edc85fe647299e04.js" async=""></script><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="32x32"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><style data-emotion="css-global rh8y69">:host,:root,[data-theme]{--chakra-ring-inset:var(--chakra-empty,/*!*/ /*!*/);--chakra-ring-offset-width:0px;--chakra-ring-offset-color:#fff;--chakra-ring-color:rgba(66, 153, 225, 0.6);--chakra-ring-offset-shadow:0 0 #0000;--chakra-ring-shadow:0 0 #0000;--chakra-space-x-reverse:0;--chakra-space-y-reverse:0;--chakra-colors-transparent:transparent;--chakra-colors-current:currentColor;--chakra-colors-black:#000000;--chakra-colors-white:#FFFFFF;--chakra-colors-whiteAlpha-50:rgba(255, 255, 255, 0.04);--chakra-colors-whiteAlpha-100:rgba(255, 255, 255, 0.06);--chakra-colors-whiteAlpha-200:rgba(255, 255, 255, 0.08);--chakra-colors-whiteAlpha-300:rgba(255, 255, 255, 0.16);--chakra-colors-whiteAlpha-400:rgba(255, 255, 255, 0.24);--chakra-colors-whiteAlpha-500:rgba(255, 255, 255, 0.36);--chakra-colors-whiteAlpha-600:rgba(255, 255, 255, 0.48);--chakra-colors-whiteAlpha-700:rgba(255, 255, 255, 0.64);--chakra-colors-whiteAlpha-800:rgba(255, 255, 255, 0.80);--chakra-colors-whiteAlpha-900:rgba(255, 255, 255, 0.92);--chakra-colors-blackAlpha-50:rgba(0, 0, 0, 0.04);--chakra-colors-blackAlpha-100:rgba(0, 0, 0, 0.06);--chakra-colors-blackAlpha-200:rgba(0, 0, 0, 0.08);--chakra-colors-blackAlpha-300:rgba(0, 0, 0, 0.16);--chakra-colors-blackAlpha-400:rgba(0, 0, 0, 0.24);--chakra-colors-blackAlpha-500:rgba(0, 0, 0, 0.36);--chakra-colors-blackAlpha-600:rgba(0, 0, 0, 0.48);--chakra-colors-blackAlpha-700:rgba(0, 0, 0, 0.64);--chakra-colors-blackAlpha-800:rgba(0, 0, 0, 0.80);--chakra-colors-blackAlpha-900:rgba(0, 0, 0, 0.92);--chakra-colors-gray-50:#F7FAFC;--chakra-colors-gray-100:#EDF2F7;--chakra-colors-gray-200:#E2E8F0;--chakra-colors-gray-300:#CBD5E0;--chakra-colors-gray-400:#A0AEC0;--chakra-colors-gray-500:#718096;--chakra-colors-gray-600:#4A5568;--chakra-colors-gray-700:#2D3748;--chakra-colors-gray-800:#1A202C;--chakra-colors-gray-900:#171923;--chakra-colors-red-50:#FFF5F5;--chakra-colors-red-100:#FED7D7;--chakra-colors-red-200:#FEB2B2;--chakra-colors-red-300:#FC8181;--chakra-colors-red-400:#F56565;--chakra-colors-red-500:#E53E3E;--chakra-colors-red-600:#C53030;--chakra-colors-red-700:#9B2C2C;--chakra-colors-red-800:#822727;--chakra-colors-red-900:#63171B;--chakra-colors-orange-50:#FFFAF0;--chakra-colors-orange-100:#FEEBC8;--chakra-colors-orange-200:#FBD38D;--chakra-colors-orange-300:#F6AD55;--chakra-colors-orange-400:#ED8936;--chakra-colors-orange-500:#DD6B20;--chakra-colors-orange-600:#C05621;--chakra-colors-orange-700:#9C4221;--chakra-colors-orange-800:#7B341E;--chakra-colors-orange-900:#652B19;--chakra-colors-yellow-50:#FFFFF0;--chakra-colors-yellow-100:#FEFCBF;--chakra-colors-yellow-200:#FAF089;--chakra-colors-yellow-300:#F6E05E;--chakra-colors-yellow-400:#ECC94B;--chakra-colors-yellow-500:#D69E2E;--chakra-colors-yellow-600:#B7791F;--chakra-colors-yellow-700:#975A16;--chakra-colors-yellow-800:#744210;--chakra-colors-yellow-900:#5F370E;--chakra-colors-green-50:#F0FFF4;--chakra-colors-green-100:#C6F6D5;--chakra-colors-green-200:#9AE6B4;--chakra-colors-green-300:#68D391;--chakra-colors-green-400:#48BB78;--chakra-colors-green-500:#38A169;--chakra-colors-green-600:#2F855A;--chakra-colors-green-700:#276749;--chakra-colors-green-800:#22543D;--chakra-colors-green-900:#1C4532;--chakra-colors-teal-50:#E6FFFA;--chakra-colors-teal-100:#B2F5EA;--chakra-colors-teal-200:#81E6D9;--chakra-colors-teal-300:#4FD1C5;--chakra-colors-teal-400:#38B2AC;--chakra-colors-teal-500:#319795;--chakra-colors-teal-600:#2C7A7B;--chakra-colors-teal-700:#285E61;--chakra-colors-teal-800:#234E52;--chakra-colors-teal-900:#1D4044;--chakra-colors-blue-50:#ebf8ff;--chakra-colors-blue-100:#bee3f8;--chakra-colors-blue-200:#90cdf4;--chakra-colors-blue-300:#63b3ed;--chakra-colors-blue-400:#4299e1;--chakra-colors-blue-500:#3182ce;--chakra-colors-blue-600:#2b6cb0;--chakra-colors-blue-700:#2c5282;--chakra-colors-blue-800:#2a4365;--chakra-colors-blue-900:#1A365D;--chakra-colors-cyan-50:#EDFDFD;--chakra-colors-cyan-100:#C4F1F9;--chakra-colors-cyan-200:#9DECF9;--chakra-colors-cyan-300:#76E4F7;--chakra-colors-cyan-400:#0BC5EA;--chakra-colors-cyan-500:#00B5D8;--chakra-colors-cyan-600:#00A3C4;--chakra-colors-cyan-700:#0987A0;--chakra-colors-cyan-800:#086F83;--chakra-colors-cyan-900:#065666;--chakra-colors-purple-50:#FAF5FF;--chakra-colors-purple-100:#E9D8FD;--chakra-colors-purple-200:#D6BCFA;--chakra-colors-purple-300:#B794F4;--chakra-colors-purple-400:#9F7AEA;--chakra-colors-purple-500:#805AD5;--chakra-colors-purple-600:#6B46C1;--chakra-colors-purple-700:#553C9A;--chakra-colors-purple-800:#44337A;--chakra-colors-purple-900:#322659;--chakra-colors-pink-50:#FFF5F7;--chakra-colors-pink-100:#FED7E2;--chakra-colors-pink-200:#FBB6CE;--chakra-colors-pink-300:#F687B3;--chakra-colors-pink-400:#ED64A6;--chakra-colors-pink-500:#D53F8C;--chakra-colors-pink-600:#B83280;--chakra-colors-pink-700:#97266D;--chakra-colors-pink-800:#702459;--chakra-colors-pink-900:#521B41;--chakra-borders-none:0;--chakra-borders-1px:1px solid;--chakra-borders-2px:2px solid;--chakra-borders-4px:4px solid;--chakra-borders-8px:8px solid;--chakra-fonts-heading:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--chakra-fontSizes-3xs:0.45rem;--chakra-fontSizes-2xs:0.625rem;--chakra-fontSizes-xs:0.75rem;--chakra-fontSizes-sm:0.875rem;--chakra-fontSizes-md:1rem;--chakra-fontSizes-lg:1.125rem;--chakra-fontSizes-xl:1.25rem;--chakra-fontSizes-2xl:1.5rem;--chakra-fontSizes-3xl:1.875rem;--chakra-fontSizes-4xl:2.25rem;--chakra-fontSizes-5xl:3rem;--chakra-fontSizes-6xl:3.75rem;--chakra-fontSizes-7xl:4.5rem;--chakra-fontSizes-8xl:6rem;--chakra-fontSizes-9xl:8rem;--chakra-fontWeights-hairline:100;--chakra-fontWeights-thin:200;--chakra-fontWeights-light:300;--chakra-fontWeights-normal:400;--chakra-fontWeights-medium:500;--chakra-fontWeights-semibold:600;--chakra-fontWeights-bold:700;--chakra-fontWeights-extrabold:800;--chakra-fontWeights-black:900;--chakra-letterSpacings-tighter:-0.05em;--chakra-letterSpacings-tight:-0.025em;--chakra-letterSpacings-normal:0;--chakra-letterSpacings-wide:0.025em;--chakra-letterSpacings-wider:0.05em;--chakra-letterSpacings-widest:0.1em;--chakra-lineHeights-3:.75rem;--chakra-lineHeights-4:1rem;--chakra-lineHeights-5:1.25rem;--chakra-lineHeights-6:1.5rem;--chakra-lineHeights-7:1.75rem;--chakra-lineHeights-8:2rem;--chakra-lineHeights-9:2.25rem;--chakra-lineHeights-10:2.5rem;--chakra-lineHeights-normal:normal;--chakra-lineHeights-none:1;--chakra-lineHeights-shorter:1.25;--chakra-lineHeights-short:1.375;--chakra-lineHeights-base:1.5;--chakra-lineHeights-tall:1.625;--chakra-lineHeights-taller:2;--chakra-radii-none:0;--chakra-radii-sm:0.125rem;--chakra-radii-base:0.25rem;--chakra-radii-md:0.375rem;--chakra-radii-lg:0.5rem;--chakra-radii-xl:0.75rem;--chakra-radii-2xl:1rem;--chakra-radii-3xl:1.5rem;--chakra-radii-full:9999px;--chakra-space-1:0.25rem;--chakra-space-2:0.5rem;--chakra-space-3:0.75rem;--chakra-space-4:1rem;--chakra-space-5:1.25rem;--chakra-space-6:1.5rem;--chakra-space-7:1.75rem;--chakra-space-8:2rem;--chakra-space-9:2.25rem;--chakra-space-10:2.5rem;--chakra-space-12:3rem;--chakra-space-14:3.5rem;--chakra-space-16:4rem;--chakra-space-20:5rem;--chakra-space-24:6rem;--chakra-space-28:7rem;--chakra-space-32:8rem;--chakra-space-36:9rem;--chakra-space-40:10rem;--chakra-space-44:11rem;--chakra-space-48:12rem;--chakra-space-52:13rem;--chakra-space-56:14rem;--chakra-space-60:15rem;--chakra-space-64:16rem;--chakra-space-72:18rem;--chakra-space-80:20rem;--chakra-space-96:24rem;--chakra-space-px:1px;--chakra-space-0-5:0.125rem;--chakra-space-1-5:0.375rem;--chakra-space-2-5:0.625rem;--chakra-space-3-5:0.875rem;--chakra-shadows-xs:0 0 0 1px rgba(0, 0, 0, 0.05);--chakra-shadows-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--chakra-shadows-base:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);--chakra-shadows-md:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);--chakra-shadows-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1),0 4px 6px -2px rgba(0, 0, 0, 0.05);--chakra-shadows-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1),0 10px 10px -5px rgba(0, 0, 0, 0.04);--chakra-shadows-2xl:0 25px 50px -12px rgba(0, 0, 0, 0.25);--chakra-shadows-outline:0 0 0 3px rgba(66, 153, 225, 0.6);--chakra-shadows-inner:inset 0 2px 4px 0 rgba(0,0,0,0.06);--chakra-shadows-none:none;--chakra-shadows-dark-lg:rgba(0, 0, 0, 0.1) 0px 0px 0px 1px,rgba(0, 0, 0, 0.2) 0px 5px 10px,rgba(0, 0, 0, 0.4) 0px 15px 40px;--chakra-sizes-1:0.25rem;--chakra-sizes-2:0.5rem;--chakra-sizes-3:0.75rem;--chakra-sizes-4:1rem;--chakra-sizes-5:1.25rem;--chakra-sizes-6:1.5rem;--chakra-sizes-7:1.75rem;--chakra-sizes-8:2rem;--chakra-sizes-9:2.25rem;--chakra-sizes-10:2.5rem;--chakra-sizes-12:3rem;--chakra-sizes-14:3.5rem;--chakra-sizes-16:4rem;--chakra-sizes-20:5rem;--chakra-sizes-24:6rem;--chakra-sizes-28:7rem;--chakra-sizes-32:8rem;--chakra-sizes-36:9rem;--chakra-sizes-40:10rem;--chakra-sizes-44:11rem;--chakra-sizes-48:12rem;--chakra-sizes-52:13rem;--chakra-sizes-56:14rem;--chakra-sizes-60:15rem;--chakra-sizes-64:16rem;--chakra-sizes-72:18rem;--chakra-sizes-80:20rem;--chakra-sizes-96:24rem;--chakra-sizes-px:1px;--chakra-sizes-0-5:0.125rem;--chakra-sizes-1-5:0.375rem;--chakra-sizes-2-5:0.625rem;--chakra-sizes-3-5:0.875rem;--chakra-sizes-max:max-content;--chakra-sizes-min:min-content;--chakra-sizes-full:100%;--chakra-sizes-3xs:14rem;--chakra-sizes-2xs:16rem;--chakra-sizes-xs:20rem;--chakra-sizes-sm:24rem;--chakra-sizes-md:28rem;--chakra-sizes-lg:32rem;--chakra-sizes-xl:36rem;--chakra-sizes-2xl:42rem;--chakra-sizes-3xl:48rem;--chakra-sizes-4xl:56rem;--chakra-sizes-5xl:64rem;--chakra-sizes-6xl:72rem;--chakra-sizes-7xl:80rem;--chakra-sizes-8xl:90rem;--chakra-sizes-prose:60ch;--chakra-sizes-container-sm:640px;--chakra-sizes-container-md:768px;--chakra-sizes-container-lg:1024px;--chakra-sizes-container-xl:1280px;--chakra-zIndices-hide:-1;--chakra-zIndices-auto:auto;--chakra-zIndices-base:0;--chakra-zIndices-docked:10;--chakra-zIndices-dropdown:1000;--chakra-zIndices-sticky:1100;--chakra-zIndices-banner:1200;--chakra-zIndices-overlay:1300;--chakra-zIndices-modal:1400;--chakra-zIndices-popover:1500;--chakra-zIndices-skipLink:1600;--chakra-zIndices-toast:1700;--chakra-zIndices-tooltip:1800;--chakra-transition-property-common:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;--chakra-transition-property-colors:background-color,border-color,color,fill,stroke;--chakra-transition-property-dimensions:width,height;--chakra-transition-property-position:left,right,top,bottom;--chakra-transition-property-background:background-color,background-image,background-position;--chakra-transition-easing-ease-in:cubic-bezier(0.4, 0, 1, 1);--chakra-transition-easing-ease-out:cubic-bezier(0, 0, 0.2, 1);--chakra-transition-easing-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--chakra-transition-duration-ultra-fast:50ms;--chakra-transition-duration-faster:100ms;--chakra-transition-duration-fast:150ms;--chakra-transition-duration-normal:200ms;--chakra-transition-duration-slow:300ms;--chakra-transition-duration-slower:400ms;--chakra-transition-duration-ultra-slow:500ms;--chakra-blur-none:0;--chakra-blur-sm:4px;--chakra-blur-base:8px;--chakra-blur-md:12px;--chakra-blur-lg:16px;--chakra-blur-xl:24px;--chakra-blur-2xl:40px;--chakra-blur-3xl:64px;--chakra-breakpoints-base:0em;--chakra-breakpoints-sm:30em;--chakra-breakpoints-md:48em;--chakra-breakpoints-lg:62em;--chakra-breakpoints-xl:80em;--chakra-breakpoints-2xl:96em;}.chakra-ui-light :host:not([data-theme]),.chakra-ui-light :root:not([data-theme]),.chakra-ui-light [data-theme]:not([data-theme]),[data-theme=light] :host:not([data-theme]),[data-theme=light] :root:not([data-theme]),[data-theme=light] [data-theme]:not([data-theme]),:host[data-theme=light],:root[data-theme=light],[data-theme][data-theme=light]{--chakra-colors-chakra-body-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-body-bg:var(--chakra-colors-white);--chakra-colors-chakra-border-color:var(--chakra-colors-gray-200);--chakra-colors-chakra-inverse-text:var(--chakra-colors-white);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-100);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-600);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-gray-500);}.chakra-ui-dark :host:not([data-theme]),.chakra-ui-dark :root:not([data-theme]),.chakra-ui-dark [data-theme]:not([data-theme]),[data-theme=dark] :host:not([data-theme]),[data-theme=dark] :root:not([data-theme]),[data-theme=dark] [data-theme]:not([data-theme]),:host[data-theme=dark],:root[data-theme=dark],[data-theme][data-theme=dark]{--chakra-colors-chakra-body-text:var(--chakra-colors-whiteAlpha-900);--chakra-colors-chakra-body-bg:var(--chakra-colors-gray-800);--chakra-colors-chakra-border-color:var(--chakra-colors-whiteAlpha-300);--chakra-colors-chakra-inverse-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-700);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-400);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-whiteAlpha-400);}</style><style data-emotion="css-global fubdgu">html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;}body{position:relative;min-height:100%;margin:0;font-feature-settings:"kern";}:where(*, *::before, *::after){border-width:0;border-style:solid;box-sizing:border-box;word-wrap:break-word;}main{display:block;}hr{border-top-width:1px;box-sizing:content-box;height:0;overflow:visible;}:where(pre, code, kbd,samp){font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1em;}a{background-color:transparent;color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration:underline dotted;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}:where(b, strong){font-weight:bold;}small{font-size:80%;}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}img{border-style:none;}:where(button, input, optgroup, select, textarea){font-family:inherit;font-size:100%;line-height:1.15;margin:0;}:where(button, input){overflow:visible;}:where(button, select){text-transform:none;}:where(
|
|
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="image" href="/logo/recce-logo-white.png"/><link rel="stylesheet" href="/_next/static/css/1d7428fe54fca42f.css" data-precedence="next"/><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><script src="/_next/static/chunks/b3b1872b-97ea0be5bd9b42bc.js" async=""></script><script src="/_next/static/chunks/868e7b5c-36d94ba5a58a2e6a.js" async=""></script><script src="/_next/static/chunks/3998a672-e71829c331c77ccb.js" async=""></script><script src="/_next/static/chunks/9746af58-daab848e55b5faf7.js" async=""></script><script src="/_next/static/chunks/ce84277d-ced9559f73764a27.js" async=""></script><script src="/_next/static/chunks/47d8844f-ccb4e71fbabd12f3.js" async=""></script><script src="/_next/static/chunks/a30376cd-de90859763d1c500.js" async=""></script><script src="/_next/static/chunks/fee69bc6-2cf346c884a74e9d.js" async=""></script><script src="/_next/static/chunks/7a8a3e83-f7fe5f14c56108bf.js" async=""></script><script src="/_next/static/chunks/450c323b-79414be6f43ef15c.js" async=""></script><script src="/_next/static/chunks/36e1c10d-3bcdd9bb8564108c.js" async=""></script><script src="/_next/static/chunks/29e3cc0d-490dbff344996865.js" async=""></script><script src="/_next/static/chunks/b63b1b3f-13deddaaba264453.js" async=""></script><script src="/_next/static/chunks/7f27ae6c-c484e79185298424.js" async=""></script><script src="/_next/static/chunks/6dc81886-03da5372308c376d.js" async=""></script><script src="/_next/static/chunks/c132bf7d-740a7144e614cb2d.js" async=""></script><script src="/_next/static/chunks/cf0511cf-88e5bf54e88504a3.js" async=""></script><script src="/_next/static/chunks/771-71780b322a32673c.js" async=""></script><script src="/_next/static/chunks/app/page-5b86937f2974d587.js" async=""></script><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="32x32"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><style data-emotion="css-global rh8y69">:host,:root,[data-theme]{--chakra-ring-inset:var(--chakra-empty,/*!*/ /*!*/);--chakra-ring-offset-width:0px;--chakra-ring-offset-color:#fff;--chakra-ring-color:rgba(66, 153, 225, 0.6);--chakra-ring-offset-shadow:0 0 #0000;--chakra-ring-shadow:0 0 #0000;--chakra-space-x-reverse:0;--chakra-space-y-reverse:0;--chakra-colors-transparent:transparent;--chakra-colors-current:currentColor;--chakra-colors-black:#000000;--chakra-colors-white:#FFFFFF;--chakra-colors-whiteAlpha-50:rgba(255, 255, 255, 0.04);--chakra-colors-whiteAlpha-100:rgba(255, 255, 255, 0.06);--chakra-colors-whiteAlpha-200:rgba(255, 255, 255, 0.08);--chakra-colors-whiteAlpha-300:rgba(255, 255, 255, 0.16);--chakra-colors-whiteAlpha-400:rgba(255, 255, 255, 0.24);--chakra-colors-whiteAlpha-500:rgba(255, 255, 255, 0.36);--chakra-colors-whiteAlpha-600:rgba(255, 255, 255, 0.48);--chakra-colors-whiteAlpha-700:rgba(255, 255, 255, 0.64);--chakra-colors-whiteAlpha-800:rgba(255, 255, 255, 0.80);--chakra-colors-whiteAlpha-900:rgba(255, 255, 255, 0.92);--chakra-colors-blackAlpha-50:rgba(0, 0, 0, 0.04);--chakra-colors-blackAlpha-100:rgba(0, 0, 0, 0.06);--chakra-colors-blackAlpha-200:rgba(0, 0, 0, 0.08);--chakra-colors-blackAlpha-300:rgba(0, 0, 0, 0.16);--chakra-colors-blackAlpha-400:rgba(0, 0, 0, 0.24);--chakra-colors-blackAlpha-500:rgba(0, 0, 0, 0.36);--chakra-colors-blackAlpha-600:rgba(0, 0, 0, 0.48);--chakra-colors-blackAlpha-700:rgba(0, 0, 0, 0.64);--chakra-colors-blackAlpha-800:rgba(0, 0, 0, 0.80);--chakra-colors-blackAlpha-900:rgba(0, 0, 0, 0.92);--chakra-colors-gray-50:#F7FAFC;--chakra-colors-gray-100:#EDF2F7;--chakra-colors-gray-200:#E2E8F0;--chakra-colors-gray-300:#CBD5E0;--chakra-colors-gray-400:#A0AEC0;--chakra-colors-gray-500:#718096;--chakra-colors-gray-600:#4A5568;--chakra-colors-gray-700:#2D3748;--chakra-colors-gray-800:#1A202C;--chakra-colors-gray-900:#171923;--chakra-colors-red-50:#FFF5F5;--chakra-colors-red-100:#FED7D7;--chakra-colors-red-200:#FEB2B2;--chakra-colors-red-300:#FC8181;--chakra-colors-red-400:#F56565;--chakra-colors-red-500:#E53E3E;--chakra-colors-red-600:#C53030;--chakra-colors-red-700:#9B2C2C;--chakra-colors-red-800:#822727;--chakra-colors-red-900:#63171B;--chakra-colors-orange-50:#FFFAF0;--chakra-colors-orange-100:#FEEBC8;--chakra-colors-orange-200:#FBD38D;--chakra-colors-orange-300:#F6AD55;--chakra-colors-orange-400:#ED8936;--chakra-colors-orange-500:#DD6B20;--chakra-colors-orange-600:#C05621;--chakra-colors-orange-700:#9C4221;--chakra-colors-orange-800:#7B341E;--chakra-colors-orange-900:#652B19;--chakra-colors-yellow-50:#FFFFF0;--chakra-colors-yellow-100:#FEFCBF;--chakra-colors-yellow-200:#FAF089;--chakra-colors-yellow-300:#F6E05E;--chakra-colors-yellow-400:#ECC94B;--chakra-colors-yellow-500:#D69E2E;--chakra-colors-yellow-600:#B7791F;--chakra-colors-yellow-700:#975A16;--chakra-colors-yellow-800:#744210;--chakra-colors-yellow-900:#5F370E;--chakra-colors-green-50:#F0FFF4;--chakra-colors-green-100:#C6F6D5;--chakra-colors-green-200:#9AE6B4;--chakra-colors-green-300:#68D391;--chakra-colors-green-400:#48BB78;--chakra-colors-green-500:#38A169;--chakra-colors-green-600:#2F855A;--chakra-colors-green-700:#276749;--chakra-colors-green-800:#22543D;--chakra-colors-green-900:#1C4532;--chakra-colors-teal-50:#E6FFFA;--chakra-colors-teal-100:#B2F5EA;--chakra-colors-teal-200:#81E6D9;--chakra-colors-teal-300:#4FD1C5;--chakra-colors-teal-400:#38B2AC;--chakra-colors-teal-500:#319795;--chakra-colors-teal-600:#2C7A7B;--chakra-colors-teal-700:#285E61;--chakra-colors-teal-800:#234E52;--chakra-colors-teal-900:#1D4044;--chakra-colors-blue-50:#ebf8ff;--chakra-colors-blue-100:#bee3f8;--chakra-colors-blue-200:#90cdf4;--chakra-colors-blue-300:#63b3ed;--chakra-colors-blue-400:#4299e1;--chakra-colors-blue-500:#3182ce;--chakra-colors-blue-600:#2b6cb0;--chakra-colors-blue-700:#2c5282;--chakra-colors-blue-800:#2a4365;--chakra-colors-blue-900:#1A365D;--chakra-colors-cyan-50:#EDFDFD;--chakra-colors-cyan-100:#C4F1F9;--chakra-colors-cyan-200:#9DECF9;--chakra-colors-cyan-300:#76E4F7;--chakra-colors-cyan-400:#0BC5EA;--chakra-colors-cyan-500:#00B5D8;--chakra-colors-cyan-600:#00A3C4;--chakra-colors-cyan-700:#0987A0;--chakra-colors-cyan-800:#086F83;--chakra-colors-cyan-900:#065666;--chakra-colors-purple-50:#FAF5FF;--chakra-colors-purple-100:#E9D8FD;--chakra-colors-purple-200:#D6BCFA;--chakra-colors-purple-300:#B794F4;--chakra-colors-purple-400:#9F7AEA;--chakra-colors-purple-500:#805AD5;--chakra-colors-purple-600:#6B46C1;--chakra-colors-purple-700:#553C9A;--chakra-colors-purple-800:#44337A;--chakra-colors-purple-900:#322659;--chakra-colors-pink-50:#FFF5F7;--chakra-colors-pink-100:#FED7E2;--chakra-colors-pink-200:#FBB6CE;--chakra-colors-pink-300:#F687B3;--chakra-colors-pink-400:#ED64A6;--chakra-colors-pink-500:#D53F8C;--chakra-colors-pink-600:#B83280;--chakra-colors-pink-700:#97266D;--chakra-colors-pink-800:#702459;--chakra-colors-pink-900:#521B41;--chakra-borders-none:0;--chakra-borders-1px:1px solid;--chakra-borders-2px:2px solid;--chakra-borders-4px:4px solid;--chakra-borders-8px:8px solid;--chakra-fonts-heading:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--chakra-fontSizes-3xs:0.45rem;--chakra-fontSizes-2xs:0.625rem;--chakra-fontSizes-xs:0.75rem;--chakra-fontSizes-sm:0.875rem;--chakra-fontSizes-md:1rem;--chakra-fontSizes-lg:1.125rem;--chakra-fontSizes-xl:1.25rem;--chakra-fontSizes-2xl:1.5rem;--chakra-fontSizes-3xl:1.875rem;--chakra-fontSizes-4xl:2.25rem;--chakra-fontSizes-5xl:3rem;--chakra-fontSizes-6xl:3.75rem;--chakra-fontSizes-7xl:4.5rem;--chakra-fontSizes-8xl:6rem;--chakra-fontSizes-9xl:8rem;--chakra-fontWeights-hairline:100;--chakra-fontWeights-thin:200;--chakra-fontWeights-light:300;--chakra-fontWeights-normal:400;--chakra-fontWeights-medium:500;--chakra-fontWeights-semibold:600;--chakra-fontWeights-bold:700;--chakra-fontWeights-extrabold:800;--chakra-fontWeights-black:900;--chakra-letterSpacings-tighter:-0.05em;--chakra-letterSpacings-tight:-0.025em;--chakra-letterSpacings-normal:0;--chakra-letterSpacings-wide:0.025em;--chakra-letterSpacings-wider:0.05em;--chakra-letterSpacings-widest:0.1em;--chakra-lineHeights-3:.75rem;--chakra-lineHeights-4:1rem;--chakra-lineHeights-5:1.25rem;--chakra-lineHeights-6:1.5rem;--chakra-lineHeights-7:1.75rem;--chakra-lineHeights-8:2rem;--chakra-lineHeights-9:2.25rem;--chakra-lineHeights-10:2.5rem;--chakra-lineHeights-normal:normal;--chakra-lineHeights-none:1;--chakra-lineHeights-shorter:1.25;--chakra-lineHeights-short:1.375;--chakra-lineHeights-base:1.5;--chakra-lineHeights-tall:1.625;--chakra-lineHeights-taller:2;--chakra-radii-none:0;--chakra-radii-sm:0.125rem;--chakra-radii-base:0.25rem;--chakra-radii-md:0.375rem;--chakra-radii-lg:0.5rem;--chakra-radii-xl:0.75rem;--chakra-radii-2xl:1rem;--chakra-radii-3xl:1.5rem;--chakra-radii-full:9999px;--chakra-space-1:0.25rem;--chakra-space-2:0.5rem;--chakra-space-3:0.75rem;--chakra-space-4:1rem;--chakra-space-5:1.25rem;--chakra-space-6:1.5rem;--chakra-space-7:1.75rem;--chakra-space-8:2rem;--chakra-space-9:2.25rem;--chakra-space-10:2.5rem;--chakra-space-12:3rem;--chakra-space-14:3.5rem;--chakra-space-16:4rem;--chakra-space-20:5rem;--chakra-space-24:6rem;--chakra-space-28:7rem;--chakra-space-32:8rem;--chakra-space-36:9rem;--chakra-space-40:10rem;--chakra-space-44:11rem;--chakra-space-48:12rem;--chakra-space-52:13rem;--chakra-space-56:14rem;--chakra-space-60:15rem;--chakra-space-64:16rem;--chakra-space-72:18rem;--chakra-space-80:20rem;--chakra-space-96:24rem;--chakra-space-px:1px;--chakra-space-0-5:0.125rem;--chakra-space-1-5:0.375rem;--chakra-space-2-5:0.625rem;--chakra-space-3-5:0.875rem;--chakra-shadows-xs:0 0 0 1px rgba(0, 0, 0, 0.05);--chakra-shadows-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--chakra-shadows-base:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);--chakra-shadows-md:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);--chakra-shadows-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1),0 4px 6px -2px rgba(0, 0, 0, 0.05);--chakra-shadows-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1),0 10px 10px -5px rgba(0, 0, 0, 0.04);--chakra-shadows-2xl:0 25px 50px -12px rgba(0, 0, 0, 0.25);--chakra-shadows-outline:0 0 0 3px rgba(66, 153, 225, 0.6);--chakra-shadows-inner:inset 0 2px 4px 0 rgba(0,0,0,0.06);--chakra-shadows-none:none;--chakra-shadows-dark-lg:rgba(0, 0, 0, 0.1) 0px 0px 0px 1px,rgba(0, 0, 0, 0.2) 0px 5px 10px,rgba(0, 0, 0, 0.4) 0px 15px 40px;--chakra-sizes-1:0.25rem;--chakra-sizes-2:0.5rem;--chakra-sizes-3:0.75rem;--chakra-sizes-4:1rem;--chakra-sizes-5:1.25rem;--chakra-sizes-6:1.5rem;--chakra-sizes-7:1.75rem;--chakra-sizes-8:2rem;--chakra-sizes-9:2.25rem;--chakra-sizes-10:2.5rem;--chakra-sizes-12:3rem;--chakra-sizes-14:3.5rem;--chakra-sizes-16:4rem;--chakra-sizes-20:5rem;--chakra-sizes-24:6rem;--chakra-sizes-28:7rem;--chakra-sizes-32:8rem;--chakra-sizes-36:9rem;--chakra-sizes-40:10rem;--chakra-sizes-44:11rem;--chakra-sizes-48:12rem;--chakra-sizes-52:13rem;--chakra-sizes-56:14rem;--chakra-sizes-60:15rem;--chakra-sizes-64:16rem;--chakra-sizes-72:18rem;--chakra-sizes-80:20rem;--chakra-sizes-96:24rem;--chakra-sizes-px:1px;--chakra-sizes-0-5:0.125rem;--chakra-sizes-1-5:0.375rem;--chakra-sizes-2-5:0.625rem;--chakra-sizes-3-5:0.875rem;--chakra-sizes-max:max-content;--chakra-sizes-min:min-content;--chakra-sizes-full:100%;--chakra-sizes-3xs:14rem;--chakra-sizes-2xs:16rem;--chakra-sizes-xs:20rem;--chakra-sizes-sm:24rem;--chakra-sizes-md:28rem;--chakra-sizes-lg:32rem;--chakra-sizes-xl:36rem;--chakra-sizes-2xl:42rem;--chakra-sizes-3xl:48rem;--chakra-sizes-4xl:56rem;--chakra-sizes-5xl:64rem;--chakra-sizes-6xl:72rem;--chakra-sizes-7xl:80rem;--chakra-sizes-8xl:90rem;--chakra-sizes-prose:60ch;--chakra-sizes-container-sm:640px;--chakra-sizes-container-md:768px;--chakra-sizes-container-lg:1024px;--chakra-sizes-container-xl:1280px;--chakra-zIndices-hide:-1;--chakra-zIndices-auto:auto;--chakra-zIndices-base:0;--chakra-zIndices-docked:10;--chakra-zIndices-dropdown:1000;--chakra-zIndices-sticky:1100;--chakra-zIndices-banner:1200;--chakra-zIndices-overlay:1300;--chakra-zIndices-modal:1400;--chakra-zIndices-popover:1500;--chakra-zIndices-skipLink:1600;--chakra-zIndices-toast:1700;--chakra-zIndices-tooltip:1800;--chakra-transition-property-common:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;--chakra-transition-property-colors:background-color,border-color,color,fill,stroke;--chakra-transition-property-dimensions:width,height;--chakra-transition-property-position:left,right,top,bottom;--chakra-transition-property-background:background-color,background-image,background-position;--chakra-transition-easing-ease-in:cubic-bezier(0.4, 0, 1, 1);--chakra-transition-easing-ease-out:cubic-bezier(0, 0, 0.2, 1);--chakra-transition-easing-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--chakra-transition-duration-ultra-fast:50ms;--chakra-transition-duration-faster:100ms;--chakra-transition-duration-fast:150ms;--chakra-transition-duration-normal:200ms;--chakra-transition-duration-slow:300ms;--chakra-transition-duration-slower:400ms;--chakra-transition-duration-ultra-slow:500ms;--chakra-blur-none:0;--chakra-blur-sm:4px;--chakra-blur-base:8px;--chakra-blur-md:12px;--chakra-blur-lg:16px;--chakra-blur-xl:24px;--chakra-blur-2xl:40px;--chakra-blur-3xl:64px;--chakra-breakpoints-base:0em;--chakra-breakpoints-sm:30em;--chakra-breakpoints-md:48em;--chakra-breakpoints-lg:62em;--chakra-breakpoints-xl:80em;--chakra-breakpoints-2xl:96em;}.chakra-ui-light :host:not([data-theme]),.chakra-ui-light :root:not([data-theme]),.chakra-ui-light [data-theme]:not([data-theme]),[data-theme=light] :host:not([data-theme]),[data-theme=light] :root:not([data-theme]),[data-theme=light] [data-theme]:not([data-theme]),:host[data-theme=light],:root[data-theme=light],[data-theme][data-theme=light]{--chakra-colors-chakra-body-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-body-bg:var(--chakra-colors-white);--chakra-colors-chakra-border-color:var(--chakra-colors-gray-200);--chakra-colors-chakra-inverse-text:var(--chakra-colors-white);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-100);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-600);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-gray-500);}.chakra-ui-dark :host:not([data-theme]),.chakra-ui-dark :root:not([data-theme]),.chakra-ui-dark [data-theme]:not([data-theme]),[data-theme=dark] :host:not([data-theme]),[data-theme=dark] :root:not([data-theme]),[data-theme=dark] [data-theme]:not([data-theme]),:host[data-theme=dark],:root[data-theme=dark],[data-theme][data-theme=dark]{--chakra-colors-chakra-body-text:var(--chakra-colors-whiteAlpha-900);--chakra-colors-chakra-body-bg:var(--chakra-colors-gray-800);--chakra-colors-chakra-border-color:var(--chakra-colors-whiteAlpha-300);--chakra-colors-chakra-inverse-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-700);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-400);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-whiteAlpha-400);}</style><style data-emotion="css-global fubdgu">html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;}body{position:relative;min-height:100%;margin:0;font-feature-settings:"kern";}:where(*, *::before, *::after){border-width:0;border-style:solid;box-sizing:border-box;word-wrap:break-word;}main{display:block;}hr{border-top-width:1px;box-sizing:content-box;height:0;overflow:visible;}:where(pre, code, kbd,samp){font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1em;}a{background-color:transparent;color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration:underline dotted;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}:where(b, strong){font-weight:bold;}small{font-size:80%;}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}img{border-style:none;}:where(button, input, optgroup, select, textarea){font-family:inherit;font-size:100%;line-height:1.15;margin:0;}:where(button, input){overflow:visible;}:where(button, select){text-transform:none;}:where(
|
|
2
2
|
button::-moz-focus-inner,
|
|
3
3
|
[type="button"]::-moz-focus-inner,
|
|
4
4
|
[type="reset"]::-moz-focus-inner,
|
|
@@ -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[21636,[\"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-de90859763d1c500.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\",\"771\",\"static/chunks/771-71780b322a32673c.js\",\"931\",\"static/chunks/app/page-
|
|
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[21636,[\"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-de90859763d1c500.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\",\"771\",\"static/chunks/771-71780b322a32673c.js\",\"931\",\"static/chunks/app/page-5b86937f2974d587.js\"],\"default\",1]\n6:I[60299,[],\"\"]\n7:I[43276,[],\"\"]\n9:I[28103,[],\"\"]\na:[]\n0:[\"$\",\"$L2\",null,{\"buildId\":\"PdAZtrSpaIDsiEHk9Nkxs\",\"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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
2:I[38443,[],"ClientPageRoot"]
|
|
2
|
-
3:I[21636,["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-de90859763d1c500.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","771","static/chunks/771-71780b322a32673c.js","931","static/chunks/app/page-
|
|
2
|
+
3:I[21636,["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-de90859763d1c500.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","771","static/chunks/771-71780b322a32673c.js","931","static/chunks/app/page-5b86937f2974d587.js"],"default",1]
|
|
3
3
|
4:I[60299,[],""]
|
|
4
4
|
5:I[43276,[],""]
|
|
5
|
-
0:["
|
|
5
|
+
0:["PdAZtrSpaIDsiEHk9Nkxs",[[["",{"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/event/__init__.py
CHANGED
|
@@ -6,6 +6,7 @@ import threading
|
|
|
6
6
|
import uuid
|
|
7
7
|
from datetime import datetime, timezone
|
|
8
8
|
from hashlib import sha256
|
|
9
|
+
from typing import Dict
|
|
9
10
|
|
|
10
11
|
import sentry_sdk
|
|
11
12
|
|
|
@@ -260,6 +261,12 @@ def log_single_env_event():
|
|
|
260
261
|
_collector.schedule_flush()
|
|
261
262
|
|
|
262
263
|
|
|
264
|
+
def log_performance(feature_name: str, metrics: Dict):
|
|
265
|
+
prop = metrics
|
|
266
|
+
log_event(prop, f'[Performance] {feature_name}')
|
|
267
|
+
_collector.schedule_flush()
|
|
268
|
+
|
|
269
|
+
|
|
263
270
|
def capture_exception(e):
|
|
264
271
|
user_id = load_user_profile().get('user_id')
|
|
265
272
|
if is_ci_env() is True:
|
recce/state.py
CHANGED
|
@@ -5,6 +5,7 @@ import os
|
|
|
5
5
|
import threading
|
|
6
6
|
import time
|
|
7
7
|
from base64 import b64encode
|
|
8
|
+
from dataclasses import dataclass
|
|
8
9
|
from datetime import datetime
|
|
9
10
|
from hashlib import md5, sha256
|
|
10
11
|
from typing import List, Optional, Dict, Union, Tuple
|
|
@@ -29,6 +30,23 @@ RECCE_STATE_FILE = 'recce-state.json'
|
|
|
29
30
|
RECCE_STATE_COMPRESSED_FILE = f'{RECCE_STATE_FILE}.gz'
|
|
30
31
|
|
|
31
32
|
|
|
33
|
+
@dataclass
|
|
34
|
+
class ErrorMessage:
|
|
35
|
+
error_message: str
|
|
36
|
+
hint_message: str
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
RECCE_CLOUD_TOKEN_MISSING = ErrorMessage(
|
|
40
|
+
error_message='No GitHub token is provided to access the pull request information',
|
|
41
|
+
hint_message='Please provide a GitHub token in the command argument'
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
RECCE_CLOUD_PASSWORD_MISSING = ErrorMessage(
|
|
45
|
+
error_message='No password provided to access the state file in Recce Cloud',
|
|
46
|
+
hint_message='Please provide a password with the option "--password <compress-password>"'
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
32
50
|
def s3_sse_c_headers(password: str) -> Dict[str, str]:
|
|
33
51
|
hashed_password = sha256()
|
|
34
52
|
md5_hash = md5()
|
|
@@ -179,7 +197,7 @@ class RecceStateLoader:
|
|
|
179
197
|
|
|
180
198
|
if self.cloud_mode:
|
|
181
199
|
if not self.cloud_options.get('token'):
|
|
182
|
-
raise Exception(
|
|
200
|
+
raise Exception(RECCE_CLOUD_TOKEN_MISSING.error_message)
|
|
183
201
|
self.pr_info = fetch_pr_metadata(cloud=self.cloud_mode, github_token=self.cloud_options.get('token'))
|
|
184
202
|
if self.pr_info.id is None:
|
|
185
203
|
raise Exception('Cannot get the pull request information from GitHub.')
|
|
@@ -190,13 +208,13 @@ class RecceStateLoader:
|
|
|
190
208
|
def verify(self) -> bool:
|
|
191
209
|
if self.cloud_mode:
|
|
192
210
|
if self.cloud_options.get('token') is None:
|
|
193
|
-
self.error_message =
|
|
194
|
-
self.hint_message =
|
|
211
|
+
self.error_message = RECCE_CLOUD_TOKEN_MISSING.error_message
|
|
212
|
+
self.hint_message = RECCE_CLOUD_TOKEN_MISSING.hint_message
|
|
195
213
|
return False
|
|
196
214
|
if not self.cloud_options.get('host'):
|
|
197
215
|
if self.cloud_options.get('password') is None:
|
|
198
|
-
self.error_message =
|
|
199
|
-
self.hint_message =
|
|
216
|
+
self.error_message = RECCE_CLOUD_PASSWORD_MISSING.error_message
|
|
217
|
+
self.hint_message = RECCE_CLOUD_PASSWORD_MISSING.hint_message
|
|
200
218
|
return False
|
|
201
219
|
else:
|
|
202
220
|
if self.review_mode is True and self.state_file is None:
|
|
@@ -356,7 +374,7 @@ class RecceStateLoader:
|
|
|
356
374
|
|
|
357
375
|
password = self.cloud_options.get('password')
|
|
358
376
|
if password is None:
|
|
359
|
-
raise Exception(
|
|
377
|
+
raise Exception(RECCE_CLOUD_PASSWORD_MISSING.error_message)
|
|
360
378
|
|
|
361
379
|
with tempfile.NamedTemporaryFile() as tmp:
|
|
362
380
|
headers = s3_sse_c_headers(password)
|
|
@@ -487,18 +505,38 @@ class RecceStateLoader:
|
|
|
487
505
|
|
|
488
506
|
|
|
489
507
|
class RecceCloudStateManager:
|
|
508
|
+
error_message: str
|
|
509
|
+
hint_message: str
|
|
510
|
+
|
|
490
511
|
# It is a class to upload, download and purge the state file on Recce Cloud.
|
|
491
512
|
|
|
492
513
|
def __init__(self, cloud_options: Optional[Dict[str, str]] = None):
|
|
493
514
|
self.cloud_options = cloud_options or {}
|
|
494
515
|
self.pr_info = None
|
|
516
|
+
self.error_message = None
|
|
517
|
+
self.hint_message = None
|
|
495
518
|
|
|
496
519
|
if not self.cloud_options.get('token'):
|
|
497
|
-
raise Exception(
|
|
520
|
+
raise Exception(RECCE_CLOUD_TOKEN_MISSING.error_message)
|
|
498
521
|
self.pr_info = fetch_pr_metadata(cloud=True, github_token=self.cloud_options.get('token'))
|
|
499
522
|
if self.pr_info.id is None:
|
|
500
523
|
raise Exception('Cannot get the pull request information from GitHub.')
|
|
501
524
|
|
|
525
|
+
def verify(self) -> bool:
|
|
526
|
+
if self.cloud_options.get('token') is None:
|
|
527
|
+
self.error_message = RECCE_CLOUD_TOKEN_MISSING.error_message
|
|
528
|
+
self.hint_message = RECCE_CLOUD_TOKEN_MISSING.hint_message
|
|
529
|
+
return False
|
|
530
|
+
if self.cloud_options.get('password') is None:
|
|
531
|
+
self.error_message = RECCE_CLOUD_PASSWORD_MISSING.error_message
|
|
532
|
+
self.hint_message = RECCE_CLOUD_PASSWORD_MISSING.hint_message
|
|
533
|
+
return False
|
|
534
|
+
return True
|
|
535
|
+
|
|
536
|
+
@property
|
|
537
|
+
def error_and_hint(self) -> (Union[str, None], Union[str, None]):
|
|
538
|
+
return self.error_message, self.hint_message
|
|
539
|
+
|
|
502
540
|
def _check_state_in_recce_cloud(self) -> bool:
|
|
503
541
|
return RecceCloud(token=self.cloud_options.get('token')).check_artifacts_exists(self.pr_info)
|
|
504
542
|
|
|
@@ -611,7 +649,7 @@ class RecceCloudStateManager:
|
|
|
611
649
|
|
|
612
650
|
password = self.cloud_options.get('password')
|
|
613
651
|
if password is None:
|
|
614
|
-
raise Exception(
|
|
652
|
+
raise Exception(RECCE_CLOUD_PASSWORD_MISSING.error_message)
|
|
615
653
|
|
|
616
654
|
headers = s3_sse_c_headers(password)
|
|
617
655
|
response = requests.get(presigned_url, headers=headers)
|
recce/util/cll.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import time
|
|
1
2
|
from dataclasses import dataclass
|
|
2
3
|
from typing import Dict, List, Literal
|
|
3
4
|
|
|
@@ -8,6 +9,63 @@ from sqlglot.optimizer import traverse_scope
|
|
|
8
9
|
from sqlglot.optimizer.qualify import qualify
|
|
9
10
|
|
|
10
11
|
from recce.exceptions import RecceException
|
|
12
|
+
from recce.util import SingletonMeta
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclass
|
|
16
|
+
class CLLPerformanceTracking(metaclass=SingletonMeta):
|
|
17
|
+
lineage_start = None
|
|
18
|
+
lineage_elapsed = None
|
|
19
|
+
column_lineage_start = None
|
|
20
|
+
column_lineage_elapsed = None
|
|
21
|
+
|
|
22
|
+
total_nodes = None
|
|
23
|
+
sqlglot_error_nodes = 0
|
|
24
|
+
other_error_nodes = 0
|
|
25
|
+
|
|
26
|
+
def start_lineage(self):
|
|
27
|
+
self.lineage_start = time.perf_counter_ns()
|
|
28
|
+
|
|
29
|
+
def end_lineage(self):
|
|
30
|
+
if self.lineage_start is None:
|
|
31
|
+
return
|
|
32
|
+
self.lineage_elapsed = (time.perf_counter_ns() - self.lineage_start) / 1000000
|
|
33
|
+
|
|
34
|
+
def start_column_lineage(self):
|
|
35
|
+
self.column_lineage_start = time.perf_counter_ns()
|
|
36
|
+
|
|
37
|
+
def end_column_lineage(self):
|
|
38
|
+
if self.column_lineage_start is None:
|
|
39
|
+
return
|
|
40
|
+
self.column_lineage_elapsed = (time.perf_counter_ns() - self.column_lineage_start) / 1000000
|
|
41
|
+
|
|
42
|
+
def set_total_nodes(self, total_nodes):
|
|
43
|
+
self.total_nodes = total_nodes
|
|
44
|
+
|
|
45
|
+
def increment_sqlglot_error_nodes(self):
|
|
46
|
+
self.sqlglot_error_nodes += 1
|
|
47
|
+
|
|
48
|
+
def increment_other_error_nodes(self):
|
|
49
|
+
self.other_error_nodes += 1
|
|
50
|
+
|
|
51
|
+
def to_dict(self):
|
|
52
|
+
return {
|
|
53
|
+
'lineage_elapsed_ms': self.lineage_elapsed,
|
|
54
|
+
'column_lineage_elapsed_ms': self.column_lineage_elapsed,
|
|
55
|
+
'total_nodes': self.total_nodes,
|
|
56
|
+
'sqlglot_error_nodes': self.sqlglot_error_nodes,
|
|
57
|
+
'other_error_nodes': self.other_error_nodes
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
def reset(self):
|
|
61
|
+
self.lineage_start = None
|
|
62
|
+
self.lineage_elapsed = None
|
|
63
|
+
self.column_lineage_start = None
|
|
64
|
+
self.column_lineage_elapsed = None
|
|
65
|
+
|
|
66
|
+
self.total_nodes = None
|
|
67
|
+
self.sqlglot_error_nodes = 0
|
|
68
|
+
self.other_error_nodes = 0
|
|
11
69
|
|
|
12
70
|
|
|
13
71
|
@dataclass
|
|
@@ -51,7 +109,8 @@ def _cll_expression(expression, default_table) -> ColumnLevelDependencyColumn:
|
|
|
51
109
|
for expr in ifs:
|
|
52
110
|
depends_on_one = _cll_expression(expr, default_table).depends_on
|
|
53
111
|
depends_on.extend(depends_on_one)
|
|
54
|
-
|
|
112
|
+
if default is not None:
|
|
113
|
+
depends_on.extend(_cll_expression(default, default_table).depends_on)
|
|
55
114
|
type = 'derived' if depends_on else 'source'
|
|
56
115
|
return ColumnLevelDependencyColumn(type=type, depends_on=depends_on)
|
|
57
116
|
elif isinstance(expression, If):
|
|
@@ -85,6 +144,13 @@ def _cll_expression(expression, default_table) -> ColumnLevelDependencyColumn:
|
|
|
85
144
|
depends_on = _cll_expression(expression.this, default_table).depends_on
|
|
86
145
|
type = 'derived' if depends_on else 'source'
|
|
87
146
|
return ColumnLevelDependencyColumn(type=type, depends_on=depends_on)
|
|
147
|
+
elif expression.expressions:
|
|
148
|
+
depends_on = []
|
|
149
|
+
for expr in expression.expressions:
|
|
150
|
+
depends_on_one = _cll_expression(expr, default_table).depends_on
|
|
151
|
+
depends_on.extend(depends_on_one)
|
|
152
|
+
type = 'derived' if depends_on else 'source'
|
|
153
|
+
return ColumnLevelDependencyColumn(type=type, depends_on=depends_on)
|
|
88
154
|
else:
|
|
89
155
|
depends_on = []
|
|
90
156
|
return ColumnLevelDependencyColumn(type='source', depends_on=depends_on)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
recce/VERSION,sha256=
|
|
1
|
+
recce/VERSION,sha256=qYVYcBsBZ1mLJk5aRwJcbTKCnt5cK2A1kbTdPaGWJYw,16
|
|
2
2
|
recce/__init__.py,sha256=PUViz81KEpWnnIvX3wRaz3hq7FVUorVoZdbLNfSBaoM,1879
|
|
3
3
|
recce/artifact.py,sha256=a7P1cXd6lglEZF2OYeNvsEg9ME-ocJo5oPU4VZVeaz0,6586
|
|
4
|
-
recce/cli.py,sha256=
|
|
4
|
+
recce/cli.py,sha256=vmZ-OwSlcWsYuIrxHpZdbdJOO67ZDQm8LLgBI6sMY4o,30295
|
|
5
5
|
recce/config.py,sha256=ajvh4ZOblIU4ho684ca2ESUtMlKv8_Q2EG9WqL1Ruwc,4673
|
|
6
6
|
recce/core.py,sha256=dwa-2mKYnBjJPJGf_siG_h2DO6Tj1Q5APfCJ5e368io,10463
|
|
7
7
|
recce/diff.py,sha256=xLcBt4sW4sJCJ9tTCIpnV4SUHtYvMfYB1kX136iQbc0,794
|
|
@@ -11,22 +11,24 @@ recce/github.py,sha256=cQBNCtloeLpem06RDhUGb4tR7PoptP1pkZYCM1z2qUQ,7369
|
|
|
11
11
|
recce/pull_request.py,sha256=d-9c9KLzQGY_1erotORdm8lTHqFZKjNN9-BfI-hbGJ8,3853
|
|
12
12
|
recce/run.py,sha256=g0lAjKuihL5s4zi_qVlczXxlvAcJSq6n0rAilKqjIgc,13006
|
|
13
13
|
recce/server.py,sha256=-3jBt7vdbs5GUNNIUnEJdmDqwbpeNzVognZOkKthOwA,15678
|
|
14
|
-
recce/state.py,sha256=
|
|
14
|
+
recce/state.py,sha256=Kr9xabbHkbq9wdr5pIAAbEK78vEsinHCyZqC3YvRAsM,29281
|
|
15
15
|
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=sRHOX20EjwyYZnVy1QIUeCspfCUEbz7U0SxVevxKsBA,45029
|
|
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=S4OYx3vR5iezo1vnWpk56JUZiprAr9UgYcz-HEIsROs,6211
|
|
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=ndEqhNzZtWvQsWUFhfPJ7GcjzJaI5vfBpDsU1adqOrI,7136
|
|
26
|
-
recce/data/404.html,sha256=
|
|
26
|
+
recce/data/404.html,sha256=XrENUaPSWiTrmcmSE9yBfkjKLUuWkOc7zj_8XIx1WIk,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=2YF5hsvxJRTExRivxLQyV73kV_ZtqVVUPwekrH1aDtU,38924
|
|
29
|
+
recce/data/index.txt,sha256=YIF_ld8DCyUPMLcZDt21anzDHrczmLthI3EJyJvvMs4,3283
|
|
30
|
+
recce/data/_next/static/PdAZtrSpaIDsiEHk9Nkxs/_buildManifest.js,sha256=YO8ZajobGBQfFtGDwJn72G4J4BUoFhXxEs4bevyXW9c,224
|
|
31
|
+
recce/data/_next/static/PdAZtrSpaIDsiEHk9Nkxs/_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
|
|
@@ -53,7 +55,7 @@ recce/data/_next/static/chunks/main-app-19c0918a6bb54549.js,sha256=RRCMb4CBnuCWu
|
|
|
53
55
|
recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
|
54
56
|
recce/data/_next/static/chunks/webpack-300961f547f48fe7.js,sha256=8OPi9L96S4ufdwFGh6_i4MY1ZBdCvgGKFhIUffnW52I,3836
|
|
55
57
|
recce/data/_next/static/chunks/app/layout-5b30ab0207459cb8.js,sha256=VFah6WC0V8g90J_Bn2EQbb0TqwMFtVbyQBf2HSyjmQE,161
|
|
56
|
-
recce/data/_next/static/chunks/app/page-
|
|
58
|
+
recce/data/_next/static/chunks/app/page-5b86937f2974d587.js,sha256=emOMYsVVk6DNlKuUwnke65Wh1QtVd7j58SnT9ypDS34,189243
|
|
57
59
|
recce/data/_next/static/chunks/app/_not-found/page-c2ee18b5ec3e3d57.js,sha256=IpT4caDEmZoJzQXmF-ne7PXemWi5E5nFF9t6SG0WHrk,1746
|
|
58
60
|
recce/data/_next/static/chunks/pages/_app-ff7f75fed61fbef3.js,sha256=6yZ4xjG5xNCedVNP1JeD4BBkJeQpKtkmE8tdO9bEXeE,283
|
|
59
61
|
recce/data/_next/static/chunks/pages/_error-5e587f051118d074.js,sha256=zvLvmg-hcW_z7aBjugTO5m2mDVJExs4bUMpeJee9-lU,249
|
|
@@ -68,14 +70,12 @@ 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/yhRltmKeCHagogYcUQFyx/_buildManifest.js,sha256=YO8ZajobGBQfFtGDwJn72G4J4BUoFhXxEs4bevyXW9c,224
|
|
72
|
-
recce/data/_next/static/yhRltmKeCHagogYcUQFyx/_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
|
|
76
76
|
recce/event/CONFIG,sha256=w8_AVcNu_JF-t8lNmjOqtsXbeOawMzpEhkISaMlm-iU,48
|
|
77
77
|
recce/event/SENTRY_DNS,sha256=nWXZevLC4qDScvNtjs329X13oxqvtFI_Kiu6cfCDOBA,83
|
|
78
|
-
recce/event/__init__.py,sha256=
|
|
78
|
+
recce/event/__init__.py,sha256=tD76QrC3RMopEUwZxQvXifaPVAceHqeBCDetBDM-1Gk,8352
|
|
79
79
|
recce/event/collector.py,sha256=c3ySWQ3Zab49Tz0BbSItPlA-pq0JxUPyWMjr-XBtwz4,5627
|
|
80
80
|
recce/event/track.py,sha256=5Md5im5c4ZRZg6FOtBshEN7KFA8xeP6QfxNZhrgWMZ8,4691
|
|
81
81
|
recce/models/__init__.py,sha256=m2N3rgyTeXYhgQUx5a8CNUeCykFT-luIHpN-gXfrOsM,104
|
|
@@ -96,7 +96,7 @@ recce/tasks/valuediff.py,sha256=7GcSy7emPSLXjqcJomJ5aK9V8Eamo864ln-iOyNnW5A,1511
|
|
|
96
96
|
recce/util/__init__.py,sha256=0lcJectK7Z7k9h0EaYCcv4Bgw2PN03OdJoxb3tbV5j8,37
|
|
97
97
|
recce/util/breaking.py,sha256=GnUHuk1xm1pEKu8u8kZx4rGhy1BQvUrD8oTSNTNMOq8,2052
|
|
98
98
|
recce/util/cache.py,sha256=QB6wzxe0M3jNTwP0M27Ys8F2hF-oda4-LyXXG9THuZQ,646
|
|
99
|
-
recce/util/cll.py,sha256=
|
|
99
|
+
recce/util/cll.py,sha256=jwmkt-DQTd1d9HOJQHjs8osbK_eq4g_He76wvQRAtYg,11283
|
|
100
100
|
recce/util/io.py,sha256=uMBpJBKKOUPHTBgntkVkuaVUkY8grDIlA8ORCtFLE5E,3372
|
|
101
101
|
recce/util/logger.py,sha256=Vmd2PuyzBkML7zvPmJKe3yNfELFjRZqX7abA23wquzg,746
|
|
102
102
|
recce/util/pydantic_model.py,sha256=KumKuyCjbTzEMsKLE4-b-eZfp0gLhYDdmVtw1-hxiJw,587
|
|
@@ -129,9 +129,9 @@ tests/tasks/test_row_count.py,sha256=hjrKP1u2aZ9V0EWb0WGXDz4-V2kYaiNeiJ_Mqin8BPg
|
|
|
129
129
|
tests/tasks/test_schema.py,sha256=O2zLJzzYZBwoKA5BVYDE7UuaeQtAznKzFDXNw7xzMU4,2897
|
|
130
130
|
tests/tasks/test_top_k.py,sha256=hqYWSd9xE1GU0wgvpgKeLHbPVd5CABYcTJvgA49JRyA,1707
|
|
131
131
|
tests/tasks/test_valuediff.py,sha256=_z1Ci4ba4lFSWwbj7cbKBRtWqLgV_1HIZGqQlEFl61o,1863
|
|
132
|
-
recce_nightly-0.56.0.
|
|
133
|
-
recce_nightly-0.56.0.
|
|
134
|
-
recce_nightly-0.56.0.
|
|
135
|
-
recce_nightly-0.56.0.
|
|
136
|
-
recce_nightly-0.56.0.
|
|
137
|
-
recce_nightly-0.56.0.
|
|
132
|
+
recce_nightly-0.56.0.20250304.dist-info/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
|
|
133
|
+
recce_nightly-0.56.0.20250304.dist-info/METADATA,sha256=CCfVhk41fNdJ8FBKLkPJg0XLmCPMqwV2tUiOi_7YqsU,13218
|
|
134
|
+
recce_nightly-0.56.0.20250304.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
135
|
+
recce_nightly-0.56.0.20250304.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
|
|
136
|
+
recce_nightly-0.56.0.20250304.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
|
|
137
|
+
recce_nightly-0.56.0.20250304.dist-info/RECORD,,
|