recce-nightly 1.9.0.20250619__py3-none-any.whl → 1.9.0.20250623__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 +108 -45
- recce/cli.py +12 -11
- recce/data/404.html +1 -1
- recce/data/_next/static/chunks/app/{page-707b8e8d98d7f780.js → page-59241c42b7dd4fcf.js} +1 -1
- recce/data/index.html +2 -2
- recce/data/index.txt +2 -2
- recce/models/types.py +7 -0
- recce/server.py +14 -30
- recce/util/api_token.py +1 -9
- recce/util/lineage.py +16 -12
- recce/util/onboarding_state.py +45 -0
- recce/util/recce_cloud.py +7 -7
- {recce_nightly-1.9.0.20250619.dist-info → recce_nightly-1.9.0.20250623.dist-info}/METADATA +1 -1
- {recce_nightly-1.9.0.20250619.dist-info → recce_nightly-1.9.0.20250623.dist-info}/RECORD +22 -21
- tests/adapter/dbt_adapter/test_dbt_cll.py +9 -9
- /recce/data/_next/static/{T2ShdYDyPGcOWrwJnitax → WrRUb3nV8BhAZG_R8kVma}/_buildManifest.js +0 -0
- /recce/data/_next/static/{T2ShdYDyPGcOWrwJnitax → WrRUb3nV8BhAZG_R8kVma}/_ssgManifest.js +0 -0
- {recce_nightly-1.9.0.20250619.dist-info → recce_nightly-1.9.0.20250623.dist-info}/WHEEL +0 -0
- {recce_nightly-1.9.0.20250619.dist-info → recce_nightly-1.9.0.20250623.dist-info}/entry_points.txt +0 -0
- {recce_nightly-1.9.0.20250619.dist-info → recce_nightly-1.9.0.20250623.dist-info}/licenses/LICENSE +0 -0
- {recce_nightly-1.9.0.20250619.dist-info → recce_nightly-1.9.0.20250623.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/1b121dc4d36aeb4d.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/951e2e0eea2d4a5b.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/17a96168e3a9db13.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/35c6679a098e1e34.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js"/><script src="/_next/static/chunks/86730205-cfb14e3f051bab35.js" async=""></script><script src="/_next/static/chunks/217-879a84d70f7a907c.js" async=""></script><script src="/_next/static/chunks/main-app-39061b0166c47f55.js" async=""></script><script src="/_next/static/chunks/9746af58-a42b7d169cacadf0.js" async=""></script><script src="/_next/static/chunks/47d8844f-929aed9b1c73a905.js" async=""></script><script src="/_next/static/chunks/a30376cd-de84559016d7e133.js" async=""></script><script src="/_next/static/chunks/6dc81886-adbfa45836061d79.js" async=""></script><script src="/_next/static/chunks/3a92ee20-1081c360214f9602.js" async=""></script><script src="/_next/static/chunks/3998a672-03adacad07b346ac.js" async=""></script><script src="/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js" async=""></script><script src="/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js" async=""></script><script src="/_next/static/chunks/ce84277d-2e5d1d46910cf052.js" async=""></script><script src="/_next/static/chunks/fee69bc6-2dbccaf9b90474e6.js" async=""></script><script src="/_next/static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js" async=""></script><script src="/_next/static/chunks/450c323b-fd94e7ffaa4a5efa.js" async=""></script><script src="/_next/static/chunks/36e1c10d-8e7be4a6c1f6ab2d.js" async=""></script><script src="/_next/static/chunks/29e3cc0d-60045b2e47aa3916.js" async=""></script><script src="/_next/static/chunks/b63b1b3f-4282bdcf459e075c.js" async=""></script><script src="/_next/static/chunks/7f27ae6c-d5f0438edd5c2a5b.js" async=""></script><script src="/_next/static/chunks/c132bf7d-08cb668a789d6afd.js" async=""></script><script src="/_next/static/chunks/febdd86e-c6b525341634b860.js" async=""></script><script src="/_next/static/chunks/42-cd3c06533f5fd47c.js" async=""></script><script src="/_next/static/chunks/181-acc61ddada3bc0ca.js" async=""></script><script src="/_next/static/chunks/92-7ab55ae02606193c.js" async=""></script><script src="/_next/static/chunks/app/page-707b8e8d98d7f780.js" async=""></script><script src="/_next/static/chunks/608-3b079b544e5d5f5e.js" async=""></script><script src="/_next/static/chunks/app/layout-177a410a97e0d018.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 dh58eu">: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-colors-brand-100:#fd683e;--chakra-colors-brand-200:#fd683e;--chakra-colors-brand-300:#fd683e;--chakra-colors-brand-400:#fd683e;--chakra-colors-brand-500:#fd683e;--chakra-colors-brand-600:#fd683e;--chakra-colors-brand-700:#fd683e;--chakra-colors-brand-800:#fd683e;--chakra-colors-brand-900:#fd683e;--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/1b121dc4d36aeb4d.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/951e2e0eea2d4a5b.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/17a96168e3a9db13.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/35c6679a098e1e34.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js"/><script src="/_next/static/chunks/86730205-cfb14e3f051bab35.js" async=""></script><script src="/_next/static/chunks/217-879a84d70f7a907c.js" async=""></script><script src="/_next/static/chunks/main-app-39061b0166c47f55.js" async=""></script><script src="/_next/static/chunks/9746af58-a42b7d169cacadf0.js" async=""></script><script src="/_next/static/chunks/47d8844f-929aed9b1c73a905.js" async=""></script><script src="/_next/static/chunks/a30376cd-de84559016d7e133.js" async=""></script><script src="/_next/static/chunks/6dc81886-adbfa45836061d79.js" async=""></script><script src="/_next/static/chunks/3a92ee20-1081c360214f9602.js" async=""></script><script src="/_next/static/chunks/3998a672-03adacad07b346ac.js" async=""></script><script src="/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js" async=""></script><script src="/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js" async=""></script><script src="/_next/static/chunks/ce84277d-2e5d1d46910cf052.js" async=""></script><script src="/_next/static/chunks/fee69bc6-2dbccaf9b90474e6.js" async=""></script><script src="/_next/static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js" async=""></script><script src="/_next/static/chunks/450c323b-fd94e7ffaa4a5efa.js" async=""></script><script src="/_next/static/chunks/36e1c10d-8e7be4a6c1f6ab2d.js" async=""></script><script src="/_next/static/chunks/29e3cc0d-60045b2e47aa3916.js" async=""></script><script src="/_next/static/chunks/b63b1b3f-4282bdcf459e075c.js" async=""></script><script src="/_next/static/chunks/7f27ae6c-d5f0438edd5c2a5b.js" async=""></script><script src="/_next/static/chunks/c132bf7d-08cb668a789d6afd.js" async=""></script><script src="/_next/static/chunks/febdd86e-c6b525341634b860.js" async=""></script><script src="/_next/static/chunks/42-cd3c06533f5fd47c.js" async=""></script><script src="/_next/static/chunks/181-acc61ddada3bc0ca.js" async=""></script><script src="/_next/static/chunks/92-7ab55ae02606193c.js" async=""></script><script src="/_next/static/chunks/app/page-59241c42b7dd4fcf.js" async=""></script><script src="/_next/static/chunks/608-3b079b544e5d5f5e.js" async=""></script><script src="/_next/static/chunks/app/layout-177a410a97e0d018.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 dh58eu">: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-colors-brand-100:#fd683e;--chakra-colors-brand-200:#fd683e;--chakra-colors-brand-300:#fd683e;--chakra-colors-brand-400:#fd683e;--chakra-colors-brand-500:#fd683e;--chakra-colors-brand-600:#fd683e;--chakra-colors-brand-700:#fd683e;--chakra-colors-brand-800:#fd683e;--chakra-colors-brand-900:#fd683e;--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-7b49d5ba7e3a434d.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/1b121dc4d36aeb4d.css\",\"style\"]\n2:HL[\"/_next/static/css/951e2e0eea2d4a5b.css\",\"style\"]\n3:HL[\"/_next/static/css/17a96168e3a9db13.css\",\"style\"]\n4:HL[\"/_next/static/css/35c6679a098e1e34.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"5:I[35639,[],\"\"]\n7:I[7073,[],\"ClientPageRoot\"]\n8:I[62500,[\"509\",\"static/chunks/9746af58-a42b7d169cacadf0.js\",\"989\",\"static/chunks/47d8844f-929aed9b1c73a905.js\",\"147\",\"static/chunks/a30376cd-de84559016d7e133.js\",\"495\",\"static/chunks/6dc81886-adbfa45836061d79.js\",\"376\",\"static/chunks/3a92ee20-1081c360214f9602.js\",\"678\",\"static/chunks/3998a672-03adacad07b346ac.js\",\"20\",\"static/chunks/1bff33f1-1ef85cf5e658a751.js\",\"413\",\"static/chunks/bbda5537-9ec25eb1dd62348a.js\",\"648\",\"static/chunks/ce84277d-2e5d1d46910cf052.js\",\"995\",\"static/chunks/fee69bc6-2dbccaf9b90474e6.js\",\"739\",\"static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js\",\"283\",\"static/chunks/450c323b-fd94e7ffaa4a5efa.js\",\"303\",\"static/chunks/36e1c10d-8e7be4a6c1f6ab2d.js\",\"22\",\"static/chunks/29e3cc0d-60045b2e47aa3916.js\",\"25\",\"static/chunks/b63b1b3f-4282bdcf459e075c.js\",\"355\",\"static/chunks/7f27ae6c-d5f0438edd5c2a5b.js\",\"599\",\"static/chunks/c132bf7d-08cb668a789d6afd.js\",\"63\",\"static/chunks/febdd86e-c6b525341634b860.js\",\"42\",\"static/chunks/42-cd3c06533f5fd47c.js\",\"181\",\"static/chunks/181-acc61ddada3bc0ca.js\",\"92\",\"static/chunks/92-7ab55ae02606193c.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-7b49d5ba7e3a434d.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/1b121dc4d36aeb4d.css\",\"style\"]\n2:HL[\"/_next/static/css/951e2e0eea2d4a5b.css\",\"style\"]\n3:HL[\"/_next/static/css/17a96168e3a9db13.css\",\"style\"]\n4:HL[\"/_next/static/css/35c6679a098e1e34.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"5:I[35639,[],\"\"]\n7:I[7073,[],\"ClientPageRoot\"]\n8:I[62500,[\"509\",\"static/chunks/9746af58-a42b7d169cacadf0.js\",\"989\",\"static/chunks/47d8844f-929aed9b1c73a905.js\",\"147\",\"static/chunks/a30376cd-de84559016d7e133.js\",\"495\",\"static/chunks/6dc81886-adbfa45836061d79.js\",\"376\",\"static/chunks/3a92ee20-1081c360214f9602.js\",\"678\",\"static/chunks/3998a672-03adacad07b346ac.js\",\"20\",\"static/chunks/1bff33f1-1ef85cf5e658a751.js\",\"413\",\"static/chunks/bbda5537-9ec25eb1dd62348a.js\",\"648\",\"static/chunks/ce84277d-2e5d1d46910cf052.js\",\"995\",\"static/chunks/fee69bc6-2dbccaf9b90474e6.js\",\"739\",\"static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js\",\"283\",\"static/chunks/450c323b-fd94e7ffaa4a5efa.js\",\"303\",\"static/chunks/36e1c10d-8e7be4a6c1f6ab2d.js\",\"22\",\"static/chunks/29e3cc0d-60045b2e47aa3916.js\",\"25\",\"static/chunks/b63b1b3f-4282bdcf459e075c.js\",\"355\",\"static/chunks/7f27ae6c-d5f0438edd5c2a5b.js\",\"599\",\"static/chunks/c132bf7d-08cb668a789d6afd.js\",\"63\",\"static/chunks/febdd86e-c6b525341634b860.js\",\"42\",\"static/chunks/42-cd3c06533f5fd47c.js\",\"181\",\"static/chunks/181-acc61ddada3bc0ca.js\",\"92\",\"static/chunks/92-7ab55ae02606193c.js\",\"931\",\"static/chunks/app/page-59241c42b7dd4fcf.js\"],\"default\",1]\n9:I[76413,[\"509\",\"static/chunks/9746af58-a42b7d169cacadf0.js\",\"989\",\"static/chunks/47d8844f-929aed9b1c73a905.js\",\"147\",\"static/chunks/a30376cd-de84559016d7e133.js\",\"495\",\"static/chunks/6dc81886-adbfa45836061d79.js\",\"376\",\"static/chunks/3a92ee20-1081c360214f9602.js\",\"678\",\"static/chunks/3998a672-03adacad07b346ac.js\",\"20\",\"static/chunks/1bff33f1-1ef85cf5e658a751.js\",\"413\",\"static/chunks/bbda5537-9ec25eb1dd62348a.js\",\"42\",\"static/chunks/42-cd3c06533f5fd47c.js\",\"608\",\"static/chunks/608-3b079b544e5d5f5e.js\",\"92\",\"static/chunks/92-7ab55ae02606193c.js\",\"185\",\"static/chunks/app/layout-177a410a97e0d018.js\"],\"default\"]\na:I[51454,[],\"\"]\nb:I[48464,[],\"\"]\nd:I[26480,[],\"\"]\ne:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L5\",null,{\"buildId\":\"WrRUb3nV8BhAZG_R8kVma\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L6\",[\"$\",\"$L7\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$8\"}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/17a96168e3a9db13.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/35c6679a098e1e34.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]],null],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1b121dc4d36aeb4d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/951e2e0eea2d4a5b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",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],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$Lc\"],\"globalErrorComponent\":\"$d\",\"missingSlots\":\"$We\"}]\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"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\"}]]\n6:null\n"])</script></body></html>
|
recce/data/index.txt
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
2:I[7073,[],"ClientPageRoot"]
|
|
2
|
-
3:I[62500,["509","static/chunks/9746af58-a42b7d169cacadf0.js","989","static/chunks/47d8844f-929aed9b1c73a905.js","147","static/chunks/a30376cd-de84559016d7e133.js","495","static/chunks/6dc81886-adbfa45836061d79.js","376","static/chunks/3a92ee20-1081c360214f9602.js","678","static/chunks/3998a672-03adacad07b346ac.js","20","static/chunks/1bff33f1-1ef85cf5e658a751.js","413","static/chunks/bbda5537-9ec25eb1dd62348a.js","648","static/chunks/ce84277d-2e5d1d46910cf052.js","995","static/chunks/fee69bc6-2dbccaf9b90474e6.js","739","static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js","283","static/chunks/450c323b-fd94e7ffaa4a5efa.js","303","static/chunks/36e1c10d-8e7be4a6c1f6ab2d.js","22","static/chunks/29e3cc0d-60045b2e47aa3916.js","25","static/chunks/b63b1b3f-4282bdcf459e075c.js","355","static/chunks/7f27ae6c-d5f0438edd5c2a5b.js","599","static/chunks/c132bf7d-08cb668a789d6afd.js","63","static/chunks/febdd86e-c6b525341634b860.js","42","static/chunks/42-cd3c06533f5fd47c.js","181","static/chunks/181-acc61ddada3bc0ca.js","92","static/chunks/92-7ab55ae02606193c.js","931","static/chunks/app/page-
|
|
2
|
+
3:I[62500,["509","static/chunks/9746af58-a42b7d169cacadf0.js","989","static/chunks/47d8844f-929aed9b1c73a905.js","147","static/chunks/a30376cd-de84559016d7e133.js","495","static/chunks/6dc81886-adbfa45836061d79.js","376","static/chunks/3a92ee20-1081c360214f9602.js","678","static/chunks/3998a672-03adacad07b346ac.js","20","static/chunks/1bff33f1-1ef85cf5e658a751.js","413","static/chunks/bbda5537-9ec25eb1dd62348a.js","648","static/chunks/ce84277d-2e5d1d46910cf052.js","995","static/chunks/fee69bc6-2dbccaf9b90474e6.js","739","static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js","283","static/chunks/450c323b-fd94e7ffaa4a5efa.js","303","static/chunks/36e1c10d-8e7be4a6c1f6ab2d.js","22","static/chunks/29e3cc0d-60045b2e47aa3916.js","25","static/chunks/b63b1b3f-4282bdcf459e075c.js","355","static/chunks/7f27ae6c-d5f0438edd5c2a5b.js","599","static/chunks/c132bf7d-08cb668a789d6afd.js","63","static/chunks/febdd86e-c6b525341634b860.js","42","static/chunks/42-cd3c06533f5fd47c.js","181","static/chunks/181-acc61ddada3bc0ca.js","92","static/chunks/92-7ab55ae02606193c.js","931","static/chunks/app/page-59241c42b7dd4fcf.js"],"default",1]
|
|
3
3
|
4:I[76413,["509","static/chunks/9746af58-a42b7d169cacadf0.js","989","static/chunks/47d8844f-929aed9b1c73a905.js","147","static/chunks/a30376cd-de84559016d7e133.js","495","static/chunks/6dc81886-adbfa45836061d79.js","376","static/chunks/3a92ee20-1081c360214f9602.js","678","static/chunks/3998a672-03adacad07b346ac.js","20","static/chunks/1bff33f1-1ef85cf5e658a751.js","413","static/chunks/bbda5537-9ec25eb1dd62348a.js","42","static/chunks/42-cd3c06533f5fd47c.js","608","static/chunks/608-3b079b544e5d5f5e.js","92","static/chunks/92-7ab55ae02606193c.js","185","static/chunks/app/layout-177a410a97e0d018.js"],"default"]
|
|
4
4
|
5:I[51454,[],""]
|
|
5
5
|
6:I[48464,[],""]
|
|
6
|
-
0:["
|
|
6
|
+
0:["WrRUb3nV8BhAZG_R8kVma",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/17a96168e3a9db13.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/35c6679a098e1e34.css","precedence":"next","crossOrigin":"$undefined"}]]],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/1b121dc4d36aeb4d.css","precedence":"next","crossOrigin":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/951e2e0eea2d4a5b.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"suppressHydrationWarning":true,"children":["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",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],["$L7",null]]]]
|
|
7
7
|
7:[["$","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"}]]
|
|
8
8
|
1:null
|
recce/models/types.py
CHANGED
|
@@ -129,6 +129,9 @@ class CllColumn(BaseModel):
|
|
|
129
129
|
# transformation type
|
|
130
130
|
transformation_type: Literal["source", "passthrough", "renamed", "derived", "unknown"] = "unknown"
|
|
131
131
|
|
|
132
|
+
# change analysis
|
|
133
|
+
change_status: Optional[ChangeStatus] = None
|
|
134
|
+
|
|
132
135
|
# column-to-column dependencies
|
|
133
136
|
depends_on: List[CllColumnDep] = Field(default_factory=list)
|
|
134
137
|
|
|
@@ -141,6 +144,10 @@ class CllNode(BaseModel):
|
|
|
141
144
|
raw_code: Optional[str] = None
|
|
142
145
|
source_name: Optional[str] = None
|
|
143
146
|
|
|
147
|
+
# change analysis
|
|
148
|
+
change_status: Optional[ChangeStatus] = None
|
|
149
|
+
change_category: Optional[ChangeCategory] = None
|
|
150
|
+
|
|
144
151
|
# Column to column dependencies
|
|
145
152
|
columns: Dict[str, CllColumn] = Field(default_factory=dict)
|
|
146
153
|
|
recce/server.py
CHANGED
|
@@ -8,7 +8,7 @@ from contextlib import asynccontextmanager
|
|
|
8
8
|
from dataclasses import dataclass
|
|
9
9
|
from datetime import datetime, timedelta
|
|
10
10
|
from pathlib import Path
|
|
11
|
-
from typing import Annotated, Any,
|
|
11
|
+
from typing import Annotated, Any, Literal, Optional, Set
|
|
12
12
|
|
|
13
13
|
from fastapi import (
|
|
14
14
|
BackgroundTasks,
|
|
@@ -271,13 +271,6 @@ async def config_flag():
|
|
|
271
271
|
return flag
|
|
272
272
|
|
|
273
273
|
|
|
274
|
-
@app.post("/api/onboarding/completed", status_code=204)
|
|
275
|
-
async def mark_onboarding_completed():
|
|
276
|
-
context = default_context()
|
|
277
|
-
context.mark_onboarding_completed()
|
|
278
|
-
app.state.flag["show_onboarding_guide"] = False
|
|
279
|
-
|
|
280
|
-
|
|
281
274
|
@app.post("/api/relaunch-hint/completed", status_code=204)
|
|
282
275
|
async def mark_relaunch_hint_completed():
|
|
283
276
|
app.state.flag["show_relaunch_hint"] = False
|
|
@@ -335,7 +328,12 @@ async def get_info():
|
|
|
335
328
|
|
|
336
329
|
|
|
337
330
|
class CllIn(BaseModel):
|
|
338
|
-
|
|
331
|
+
node_id: Optional[str] = None
|
|
332
|
+
column: Optional[str] = None
|
|
333
|
+
change_analysis: Optional[bool] = False
|
|
334
|
+
cll: Optional[bool] = False
|
|
335
|
+
upstream: Optional[bool] = False
|
|
336
|
+
downstream: Optional[bool] = False
|
|
339
337
|
|
|
340
338
|
|
|
341
339
|
class CllOutput(BaseModel):
|
|
@@ -347,27 +345,13 @@ async def column_level_lineage_by_node(cll_input: CllIn):
|
|
|
347
345
|
from recce.adapter.dbt_adapter import DbtAdapter
|
|
348
346
|
|
|
349
347
|
dbt_adapter: DbtAdapter = default_context().adapter
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
class ImpactRadiusIn(BaseModel):
|
|
359
|
-
node_id: str
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
@app.post("/api/impact-radius", response_model=CllOutput)
|
|
363
|
-
async def impact_radius_by_node(impact_input: ImpactRadiusIn):
|
|
364
|
-
from recce.adapter.dbt_adapter import DbtAdapter
|
|
365
|
-
|
|
366
|
-
context = default_context()
|
|
367
|
-
dbt_adapter: DbtAdapter = context.adapter
|
|
368
|
-
node_id = impact_input.node_id
|
|
369
|
-
|
|
370
|
-
cll = dbt_adapter.get_impact_radius(node_id)
|
|
348
|
+
cll = dbt_adapter.get_cll(
|
|
349
|
+
node_id=cll_input.node_id,
|
|
350
|
+
column=cll_input.column,
|
|
351
|
+
change_analysis=cll_input.change_analysis,
|
|
352
|
+
upstream=cll_input.upstream,
|
|
353
|
+
downstream=cll_input.downstream,
|
|
354
|
+
)
|
|
371
355
|
|
|
372
356
|
return CllOutput(current=cll)
|
|
373
357
|
|
recce/util/api_token.py
CHANGED
|
@@ -7,8 +7,6 @@ from recce.exceptions import RecceConfigException
|
|
|
7
7
|
from recce.util.recce_cloud import (
|
|
8
8
|
RECCE_CLOUD_BASE_URL,
|
|
9
9
|
RecceCloud,
|
|
10
|
-
get_recce_cloud_onboarding_state,
|
|
11
|
-
set_recce_cloud_onboarding_state,
|
|
12
10
|
)
|
|
13
11
|
|
|
14
12
|
console = Console()
|
|
@@ -54,7 +52,7 @@ def prepare_api_token(
|
|
|
54
52
|
event.log_connected_to_cloud()
|
|
55
53
|
else:
|
|
56
54
|
# No api_token provided
|
|
57
|
-
if interaction
|
|
55
|
+
if interaction:
|
|
58
56
|
console.print(
|
|
59
57
|
"An API token is required for this feature. This can be obtained in your user account settings.\n"
|
|
60
58
|
f"{RECCE_CLOUD_BASE_URL}/settings#tokens\n"
|
|
@@ -70,10 +68,4 @@ def prepare_api_token(
|
|
|
70
68
|
"You no longer need to append --api-token to the recce command"
|
|
71
69
|
)
|
|
72
70
|
|
|
73
|
-
if api_token:
|
|
74
|
-
cloud_onboarding_state = get_recce_cloud_onboarding_state(api_token)
|
|
75
|
-
if cloud_onboarding_state == "new":
|
|
76
|
-
# Mark the onboarding state as "launched" if the user is new
|
|
77
|
-
set_recce_cloud_onboarding_state(api_token, "launched")
|
|
78
|
-
|
|
79
71
|
return api_token
|
recce/util/lineage.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
from typing import Dict, Set, Tuple
|
|
1
|
+
from typing import Dict, Iterable, Set, Tuple
|
|
2
2
|
|
|
3
3
|
from recce.models.types import CllColumn, CllNode
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
def find_upstream(
|
|
6
|
+
def find_upstream(node_ids: Iterable, parent_map):
|
|
7
7
|
visited = set()
|
|
8
8
|
upstream = set()
|
|
9
9
|
|
|
@@ -17,11 +17,13 @@ def find_upstream(node, parent_map):
|
|
|
17
17
|
upstream.add(parent)
|
|
18
18
|
dfs(parent)
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
for node_id in node_ids:
|
|
21
|
+
dfs(node_id)
|
|
22
|
+
|
|
21
23
|
return upstream
|
|
22
24
|
|
|
23
25
|
|
|
24
|
-
def find_downstream(
|
|
26
|
+
def find_downstream(node_ids: Iterable, child_map):
|
|
25
27
|
visited = set()
|
|
26
28
|
downstream = set()
|
|
27
29
|
|
|
@@ -35,13 +37,15 @@ def find_downstream(node, child_map):
|
|
|
35
37
|
downstream.add(child)
|
|
36
38
|
dfs(child)
|
|
37
39
|
|
|
38
|
-
|
|
40
|
+
for node_id in node_ids:
|
|
41
|
+
dfs(node_id)
|
|
42
|
+
|
|
39
43
|
return downstream
|
|
40
44
|
|
|
41
45
|
|
|
42
46
|
def find_column_dependencies(node_column_id: str, parent_map: Dict, child_map: Dict) -> Tuple[Set, Set]:
|
|
43
|
-
upstream_cols = find_upstream(node_column_id, parent_map)
|
|
44
|
-
downstream_cols = find_downstream(node_column_id, child_map)
|
|
47
|
+
upstream_cols = find_upstream([node_column_id], parent_map)
|
|
48
|
+
downstream_cols = find_downstream([node_column_id], child_map)
|
|
45
49
|
return upstream_cols, downstream_cols
|
|
46
50
|
|
|
47
51
|
|
|
@@ -63,16 +67,16 @@ def filter_lineage_vertices(
|
|
|
63
67
|
|
|
64
68
|
|
|
65
69
|
def filter_dependency_maps(
|
|
66
|
-
parent_map: Dict, child_map: Dict,
|
|
70
|
+
parent_map: Dict, child_map: Dict, relevant_ids: Set
|
|
67
71
|
) -> Tuple[Dict[str, Set], Dict[str, Set]]:
|
|
68
72
|
p_map = {}
|
|
69
73
|
c_map = {}
|
|
70
74
|
for node_id, parents in parent_map.items():
|
|
71
|
-
if node_id in
|
|
72
|
-
p_map[node_id] = {p for p in parents if p in
|
|
75
|
+
if node_id in relevant_ids:
|
|
76
|
+
p_map[node_id] = {p for p in parents if p in relevant_ids}
|
|
73
77
|
|
|
74
78
|
for node_id, children in child_map.items():
|
|
75
|
-
if node_id in
|
|
76
|
-
c_map[node_id] = {c for c in children if c in
|
|
79
|
+
if node_id in relevant_ids:
|
|
80
|
+
c_map[node_id] = {c for c in children if c in relevant_ids}
|
|
77
81
|
|
|
78
82
|
return p_map, c_map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import Union
|
|
3
|
+
|
|
4
|
+
from recce.util.recce_cloud import (
|
|
5
|
+
get_recce_cloud_onboarding_state,
|
|
6
|
+
set_recce_cloud_onboarding_state,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class OnboardingState(Enum):
|
|
11
|
+
SIGNUP_SUCCESSFUL = "signup_successful"
|
|
12
|
+
LAUNCHED_WITH_TOKEN = "launched_with_token"
|
|
13
|
+
CONFIGURE_TWO_ENV = "configure_two_env"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def update_onboarding_state(api_token: Union[str, bool, None], is_single_env: bool) -> OnboardingState:
|
|
17
|
+
if api_token:
|
|
18
|
+
# existing onboarding_state values -> new, launched, launched_with_two_envs
|
|
19
|
+
# new -> launched
|
|
20
|
+
# new -> launched_with_two_envs
|
|
21
|
+
# launched -> launched_with_two_envs
|
|
22
|
+
cloud_onboarding_state = get_recce_cloud_onboarding_state(api_token)
|
|
23
|
+
|
|
24
|
+
if cloud_onboarding_state == OnboardingState.SIGNUP_SUCCESSFUL.value:
|
|
25
|
+
# User has an API Token and is a "new" user
|
|
26
|
+
if is_single_env:
|
|
27
|
+
# Mark the onboarding state as "launched" if the user is new
|
|
28
|
+
set_recce_cloud_onboarding_state(api_token, OnboardingState.LAUNCHED_WITH_TOKEN.value)
|
|
29
|
+
return OnboardingState.LAUNCHED_WITH_TOKEN
|
|
30
|
+
else:
|
|
31
|
+
set_recce_cloud_onboarding_state(api_token, OnboardingState.CONFIGURE_TWO_ENV.value)
|
|
32
|
+
return OnboardingState.CONFIGURE_TWO_ENV
|
|
33
|
+
elif cloud_onboarding_state == OnboardingState.LAUNCHED_WITH_TOKEN.value:
|
|
34
|
+
# User has an API Token and has Two Environments
|
|
35
|
+
if is_single_env:
|
|
36
|
+
# Just return the current state
|
|
37
|
+
return OnboardingState.LAUNCHED_WITH_TOKEN
|
|
38
|
+
else:
|
|
39
|
+
set_recce_cloud_onboarding_state(api_token, OnboardingState.CONFIGURE_TWO_ENV.value)
|
|
40
|
+
return OnboardingState.CONFIGURE_TWO_ENV
|
|
41
|
+
elif cloud_onboarding_state == OnboardingState.CONFIGURE_TWO_ENV.value:
|
|
42
|
+
# Just return the current state
|
|
43
|
+
return OnboardingState.CONFIGURE_TWO_ENV
|
|
44
|
+
|
|
45
|
+
return OnboardingState.SIGNUP_SUCCESSFUL
|
recce/util/recce_cloud.py
CHANGED
|
@@ -180,13 +180,13 @@ class RecceCloud:
|
|
|
180
180
|
|
|
181
181
|
def set_onboarding_state(self, state: str):
|
|
182
182
|
api_url = f"{self.base_url}/users/onboarding-state"
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
183
|
+
try:
|
|
184
|
+
response = self._request("PUT", api_url, json={"state": state})
|
|
185
|
+
response.raise_for_status()
|
|
186
|
+
except requests.exceptions.HTTPError as e:
|
|
187
|
+
# Don't Raise an exception if setting onboarding_state fails
|
|
188
|
+
logger.warning(f"Failed to set Onboarding State in Recce Cloud. Reason: {str(e)}")
|
|
189
|
+
return
|
|
190
190
|
|
|
191
191
|
|
|
192
192
|
def get_recce_cloud_onboarding_state(token: str) -> str:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
recce/VERSION,sha256=
|
|
1
|
+
recce/VERSION,sha256=h9fRG99db2LfCZiDVaiKOps9YxdL-lmHHrimg0QCuKs,15
|
|
2
2
|
recce/__init__.py,sha256=yNb0QT-yoStex0VZALNJvUwtPLommoVCStcow31guqo,2392
|
|
3
3
|
recce/artifact.py,sha256=tKQAHSrLRjiR3ppOI4sym8SxYiiLTuD3DPMYh4DWQdA,6506
|
|
4
|
-
recce/cli.py,sha256=
|
|
4
|
+
recce/cli.py,sha256=aitBalvi-dBhOmqwGCfjjvzdVYDTcVQl0nn4l6ktVFA,39627
|
|
5
5
|
recce/config.py,sha256=fs22mpFj8CFIxftGbhFAV5xIsPLX2xNTwWSer3UYn5k,4658
|
|
6
6
|
recce/core.py,sha256=3Nv2QWBGz3yj1QI0wyPNRaDj1rH80DsX2qRQn9ydpg0,10747
|
|
7
7
|
recce/diff.py,sha256=L2_bzQ3__PO-0aeir8PHF8FvSOUmQ8WcDXgML1-mHdY,748
|
|
@@ -10,25 +10,25 @@ recce/git.py,sha256=8Eg-6NzL-KjA3rT-ibbAyaCwGlzV0JqH3yGikrJNMDA,2344
|
|
|
10
10
|
recce/github.py,sha256=PEpM6ZRiinsPbXSWj4aJCKbZrN1jUXzpzAfJq_CGah4,7420
|
|
11
11
|
recce/pull_request.py,sha256=aW0B1NE2LUKTam1S4TQ7smXB9KLE1DV8GnyBqNXA6j8,3832
|
|
12
12
|
recce/run.py,sha256=LAjbWUF8loZ9cL25d_maQELwROHHmfaFn7iqFRy5O1o,13567
|
|
13
|
-
recce/server.py,sha256=
|
|
13
|
+
recce/server.py,sha256=cp5XW0X1N314b5lOz75yU7rHMQZtlh_4oGZM9K6_CdE,20311
|
|
14
14
|
recce/state.py,sha256=VPzKyEdmyBeZ45BQArB587QN5C3Sfr7O5Oh_JRBcKrc,30616
|
|
15
15
|
recce/summary.py,sha256=Mbxvxr9KazR5o9icqhhjiGHsoAiWxQU4PdN7HytBJ1c,19154
|
|
16
16
|
recce/adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
recce/adapter/base.py,sha256=T_JNeLHgiHSaegw-DbrvHOaYjMyZcjj2Qtg5cWh_fco,3548
|
|
18
18
|
recce/adapter/sqlmesh_adapter.py,sha256=IU3N-F6ToDoO7_bV5vsG8pmTuDcbFtewTIuCxedTaRM,5046
|
|
19
|
-
recce/adapter/dbt_adapter/__init__.py,sha256=
|
|
19
|
+
recce/adapter/dbt_adapter/__init__.py,sha256=TqxYCxIe675XswFmx57hW55GV-YgC9pGMZW4mikVvV4,62852
|
|
20
20
|
recce/adapter/dbt_adapter/dbt_version.py,sha256=M7aedZIWslXnJsryK8Ki4OL_t2oAKxy4uE2pRwfWIkk,1228
|
|
21
21
|
recce/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
recce/apis/check_api.py,sha256=KMCXSMl1qqzx2jQgRqCrD4j_cY3EHBbM3H2-t-6saAU,6227
|
|
23
23
|
recce/apis/check_func.py,sha256=gktbCcyk3WGvWRJJ-wDnwv7NrIny2nTHWLl1-kdiVRo,4183
|
|
24
24
|
recce/apis/run_api.py,sha256=eOaxOxXDkH59uqGCd4blld7edavUx7JU_DCd2WAYrL8,3416
|
|
25
25
|
recce/apis/run_func.py,sha256=6wC8TDU-h7TLr2VZH7HNsWaUVlQ9HBN5N_dwqfi4lMY,7440
|
|
26
|
-
recce/data/404.html,sha256=
|
|
26
|
+
recce/data/404.html,sha256=2jEAEilUmYNl2p4bzngbU0WR5YZZ7vuv3rATHhy7IKU,26574
|
|
27
27
|
recce/data/favicon.ico,sha256=B2mBumUOnzvUrXrqNkrc5QfdDXjzEXRcWkWur0fJ6sM,2565
|
|
28
|
-
recce/data/index.html,sha256=
|
|
29
|
-
recce/data/index.txt,sha256=
|
|
30
|
-
recce/data/_next/static/
|
|
31
|
-
recce/data/_next/static/
|
|
28
|
+
recce/data/index.html,sha256=BavWLVZ03JFLaUxaIJjFFYff2qTGxldM4x0jiEPAim8,42155
|
|
29
|
+
recce/data/index.txt,sha256=XA3HBkMkVX3dqELQKElyiviGFm12dIW_C-TsaufLSb4,4462
|
|
30
|
+
recce/data/_next/static/WrRUb3nV8BhAZG_R8kVma/_buildManifest.js,sha256=sjy6FmOqWlkXWmod2oXwqKv7L582_MTycs9THCE6G-c,224
|
|
31
|
+
recce/data/_next/static/WrRUb3nV8BhAZG_R8kVma/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
32
32
|
recce/data/_next/static/chunks/181-acc61ddada3bc0ca.js,sha256=2zRVkcaI906lYW_aM2mNqnt2HbLxmUaYFjft7eNcuTQ,310191
|
|
33
33
|
recce/data/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js,sha256=wTH-_PbE1XdP-wmGaQStF5y2yH6XcZXeYX_hDaGMfh4,153777
|
|
34
34
|
recce/data/_next/static/chunks/217-879a84d70f7a907c.js,sha256=kNJkLcwaIlWnQY7akbrFimbcHHdK6lMVTbTYCNKXIjc,124102
|
|
@@ -60,7 +60,7 @@ recce/data/_next/static/chunks/main-b5b3ae20a1405261.js,sha256=28hJH2VsiTdxZGZrQ
|
|
|
60
60
|
recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
|
61
61
|
recce/data/_next/static/chunks/webpack-7b49d5ba7e3a434d.js,sha256=lcK59Juk4EZqi3jIsY35lQqAlB5TLTPy-neri0BIZL0,3929
|
|
62
62
|
recce/data/_next/static/chunks/app/layout-177a410a97e0d018.js,sha256=Hmy6Lmrt4GPYYa0f1qhxTiMj4K47PCmkAkrm1Rbnd7w,1731
|
|
63
|
-
recce/data/_next/static/chunks/app/page-
|
|
63
|
+
recce/data/_next/static/chunks/app/page-59241c42b7dd4fcf.js,sha256=5G46SScopZfjA1KxuSNwUunWAz7FIP_81LQ0Oc5DoI4,156420
|
|
64
64
|
recce/data/_next/static/chunks/app/_not-found/page-01ed58b7f971d311.js,sha256=_l3JSAaIJxInWqyqdDsobkhJ3JP6DZuwXkw-MsRakQA,1751
|
|
65
65
|
recce/data/_next/static/chunks/pages/_app-437c455677d62394.js,sha256=FaxURD1wuAmnMU1zJlsQKT9rRdfuspR7yx7BckcoCLY,284
|
|
66
66
|
recce/data/_next/static/chunks/pages/_error-e7650df18ca04bde.js,sha256=0Vzx_hCqw4RcptsFzHfUigpI13sToBnFw38owTP7ruo,250
|
|
@@ -91,7 +91,7 @@ recce/event/track.py,sha256=xDyDWblhR6mp0tezEYhkA0aOyZLqXBpJyHZwhI2xhU8,4803
|
|
|
91
91
|
recce/models/__init__.py,sha256=F7cgALtdWnwv37R0eEgKZ_yBsMwxWnUfo3jAZ3u6qyU,209
|
|
92
92
|
recce/models/check.py,sha256=jjR1SGyczjrqyK-0Zas6ikLIGSgVp54lvfcQA19AniI,1588
|
|
93
93
|
recce/models/run.py,sha256=QK2gvOWvko9YYhd2NLs3BPt5l4MSCZGwpzTAiqx9zJw,1161
|
|
94
|
-
recce/models/types.py,sha256=
|
|
94
|
+
recce/models/types.py,sha256=0YbhuL_MiDinhtqq9UQJQYu5_zTNWOjm7G5t-WKbDV0,4390
|
|
95
95
|
recce/tasks/__init__.py,sha256=b553AtDHjYROgmMePv_Hv_X3fjh4iEn11gzzpUJz6_o,610
|
|
96
96
|
recce/tasks/core.py,sha256=JFYa1CfgOiRPQ7KVTwMuxJjhMB-pvCwB-xezVt-h3RU,4080
|
|
97
97
|
recce/tasks/dataframe.py,sha256=03UBWwt0DFTXlaEOtnV5i_mxdRKD7UbRayewEL2Ub48,3650
|
|
@@ -104,18 +104,19 @@ recce/tasks/schema.py,sha256=HHrSvhd_ZJdrNj2QKi9W8vmig0NuYci5cgsKFvp2bu4,2274
|
|
|
104
104
|
recce/tasks/top_k.py,sha256=vY3VCBmg61E8I4V-9-hJOv5RCYCmhxl6sHiKR9Zv7eE,5521
|
|
105
105
|
recce/tasks/valuediff.py,sha256=XJWkA307B5qTerT87fJRhJxPCqjmXn5eILYCXDfPtSQ,16439
|
|
106
106
|
recce/util/__init__.py,sha256=cDvL3WT32cJR9CUPIJmibwJoyYcB3ZaKBFbOZDyvqP8,95
|
|
107
|
-
recce/util/api_token.py,sha256=
|
|
107
|
+
recce/util/api_token.py,sha256=D1fM5romXnxXIvmedr8_0r_jspRRjWsmDK-lM7VSrk4,2737
|
|
108
108
|
recce/util/breaking.py,sha256=evT-xlDWMgIbuPQH6w5yNoDjOqopKzBXnCF9_xTn1S0,12591
|
|
109
109
|
recce/util/cache.py,sha256=QB6wzxe0M3jNTwP0M27Ys8F2hF-oda4-LyXXG9THuZQ,646
|
|
110
110
|
recce/util/cll.py,sha256=VXhtyoPIcPEW3_SmNUTbZWwOmmv8_JRfAB9CLJ4S2Wg,13315
|
|
111
111
|
recce/util/io.py,sha256=fNiIafNxPlTF6NNXlugzeJjfVGGrP3RXb39ERzRWD3Q,3459
|
|
112
|
-
recce/util/lineage.py,sha256=
|
|
112
|
+
recce/util/lineage.py,sha256=WdHxFTViqykBT8hBIbhGOovpEVnu9hbaW0VEQJUiCmE,2186
|
|
113
113
|
recce/util/logger.py,sha256=6UgLFkRiur9jJfu2ZRdo4LUvMw4f75V-l-1HT1-sgKo,747
|
|
114
|
+
recce/util/onboarding_state.py,sha256=kwFirKlfXdl5WFkR_nmilqGKFyELNcSPMqYq-by35fk,1991
|
|
114
115
|
recce/util/pydantic_model.py,sha256=KumKuyCjbTzEMsKLE4-b-eZfp0gLhYDdmVtw1-hxiJw,587
|
|
115
|
-
recce/util/recce_cloud.py,sha256=
|
|
116
|
+
recce/util/recce_cloud.py,sha256=YgRs9PhER3EhESaJInJo6mf3uwvnp0OavHBY1OYHPXw,7958
|
|
116
117
|
recce/util/singleton.py,sha256=1cU99I0f9tjuMQLMJyLsK1oK3fZJMsO5-TbRHAMXqds,627
|
|
117
118
|
recce/yaml/__init__.py,sha256=EgXYlFeJZchatUClRDXbIC5Oqb2_nBvB2NqItYVihio,1292
|
|
118
|
-
recce_nightly-1.9.0.
|
|
119
|
+
recce_nightly-1.9.0.20250623.dist-info/licenses/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
|
|
119
120
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
121
|
tests/test_cli.py,sha256=_ikuZW4bYEGyj5A_V7nDSyBa1tVZqc0TVm-TJ0rEYVo,5467
|
|
121
122
|
tests/test_config.py,sha256=ODDFe_XF6gphmSmmc422dGLBaCCmG-IjDzTkD5SJsJE,1557
|
|
@@ -130,7 +131,7 @@ tests/adapter/dbt_adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
|
130
131
|
tests/adapter/dbt_adapter/conftest.py,sha256=WlMVytJcyfLJlMBeYhpk8Q-nyCDR9x_7qgsy6Uh9ECw,386
|
|
131
132
|
tests/adapter/dbt_adapter/dbt_test_helper.py,sha256=o_7m0cnVeGwPwEFXBCx3Me5QqLzQMOBR3dXD-MS2eaM,10406
|
|
132
133
|
tests/adapter/dbt_adapter/test_dbt_adapter.py,sha256=Y5TSlqkXGjJC6hC7YYs45bnRht5aou_KLjPMjpAGxNM,830
|
|
133
|
-
tests/adapter/dbt_adapter/test_dbt_cll.py,sha256=
|
|
134
|
+
tests/adapter/dbt_adapter/test_dbt_cll.py,sha256=IvFIImI6SQF-F-Ti0tHvUEZkAiKOmdpb9ZeJ_5JOw9w,14294
|
|
134
135
|
tests/adapter/dbt_adapter/test_selector.py,sha256=uKFm0QxrxG-xyUEXGobCMueCRUssgnZMyo-S1Nlk3_s,6856
|
|
135
136
|
tests/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
137
|
tests/tasks/conftest.py,sha256=lyZFx4jEY3To3xVhfMQ-G45egYOCttKN2lxeyExACkY,157
|
|
@@ -143,8 +144,8 @@ tests/tasks/test_row_count.py,sha256=21PaP2aq-x8-pqwzWHRT1sixhQ8g3CQNRWOZTTmbK0s
|
|
|
143
144
|
tests/tasks/test_schema.py,sha256=7ds4Vx8ixaiIWDR49Lvjem4xlPkRP1cXazDRY3roUak,3121
|
|
144
145
|
tests/tasks/test_top_k.py,sha256=YR_GS__DJsbDlQVaEEdJvNQ3fh1VmV5Nb3G7lb0r6YM,1779
|
|
145
146
|
tests/tasks/test_valuediff.py,sha256=_xQJGgxsXoy2NYk_Z6Hsw2FlVh6zk2nN_iUueyRN1e8,2046
|
|
146
|
-
recce_nightly-1.9.0.
|
|
147
|
-
recce_nightly-1.9.0.
|
|
148
|
-
recce_nightly-1.9.0.
|
|
149
|
-
recce_nightly-1.9.0.
|
|
150
|
-
recce_nightly-1.9.0.
|
|
147
|
+
recce_nightly-1.9.0.20250623.dist-info/METADATA,sha256=HlG1PEA0-VELPkwBVp7BfxNfoWqPqNK8aAxhM82xSHE,9397
|
|
148
|
+
recce_nightly-1.9.0.20250623.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
149
|
+
recce_nightly-1.9.0.20250623.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
|
|
150
|
+
recce_nightly-1.9.0.20250623.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
|
|
151
|
+
recce_nightly-1.9.0.20250623.dist-info/RECORD,,
|