recce-nightly 0.58.0.20250318__py3-none-any.whl → 0.59.0.20250319__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of recce-nightly might be problematic. Click here for more details.
- recce/VERSION +1 -1
- recce/adapter/dbt_adapter/__init__.py +13 -3
- recce/config.py +2 -2
- recce/data/404.html +1 -1
- recce/data/_next/static/chunks/7a8a3e83-277b00caf162a419.js +1 -0
- recce/data/_next/static/chunks/app/page-cb35d0a6bd52f477.js +1 -0
- recce/data/index.html +2 -2
- recce/data/index.txt +2 -2
- recce/models/types.py +1 -0
- recce/tasks/__init__.py +1 -1
- recce/tasks/profile.py +70 -6
- {recce_nightly-0.58.0.20250318.dist-info → recce_nightly-0.59.0.20250319.dist-info}/METADATA +1 -1
- {recce_nightly-0.58.0.20250318.dist-info → recce_nightly-0.59.0.20250319.dist-info}/RECORD +20 -20
- tests/tasks/test_profile.py +20 -3
- recce/data/_next/static/chunks/7a8a3e83-1a4edb77e4d0142d.js +0 -1
- recce/data/_next/static/chunks/app/page-904cdda04903cb1a.js +0 -1
- /recce/data/_next/static/{O27gCGR2ICoHv7Bz0-rDS → s-icc2FiZoBcba9j12tQb}/_buildManifest.js +0 -0
- /recce/data/_next/static/{O27gCGR2ICoHv7Bz0-rDS → s-icc2FiZoBcba9j12tQb}/_ssgManifest.js +0 -0
- {recce_nightly-0.58.0.20250318.dist-info → recce_nightly-0.59.0.20250319.dist-info}/LICENSE +0 -0
- {recce_nightly-0.58.0.20250318.dist-info → recce_nightly-0.59.0.20250319.dist-info}/WHEEL +0 -0
- {recce_nightly-0.58.0.20250318.dist-info → recce_nightly-0.59.0.20250319.dist-info}/entry_points.txt +0 -0
- {recce_nightly-0.58.0.20250318.dist-info → recce_nightly-0.59.0.20250319.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/c9ecb46a4b21c126.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-5ab3237140d2c0f8.js"/><script src="/_next/static/chunks/523b8219-cd28a6efac8e1cf1.js" async=""></script><script src="/_next/static/chunks/921-4158ef2dc23e4a01.js" async=""></script><script src="/_next/static/chunks/main-app-6f45568a6a7cd7b0.js" async=""></script><script src="/_next/static/chunks/e24bf851-38fffe87a7b8784a.js" async=""></script><script src="/_next/static/chunks/c1ceaa8b-c4f0232ef5c2c9ba.js" async=""></script><script src="/_next/static/chunks/3998a672-18454f939c052b39.js" async=""></script><script src="/_next/static/chunks/9746af58-344daabf5df08121.js" async=""></script><script src="/_next/static/chunks/ce84277d-3aa717f588901c96.js" async=""></script><script src="/_next/static/chunks/47d8844f-cac2989cb39ba350.js" async=""></script><script src="/_next/static/chunks/a30376cd-0e2abcaded0e4cfc.js" async=""></script><script src="/_next/static/chunks/fee69bc6-4490eb47d2aaaa72.js" async=""></script><script src="/_next/static/chunks/7a8a3e83-1a4edb77e4d0142d.js" async=""></script><script src="/_next/static/chunks/450c323b-ff537c106edf3f59.js" async=""></script><script src="/_next/static/chunks/36e1c10d-28bb82b9a3d959e7.js" async=""></script><script src="/_next/static/chunks/29e3cc0d-b9131230fdb267e7.js" async=""></script><script src="/_next/static/chunks/b63b1b3f-fbe2ac2c00b4eb2f.js" async=""></script><script src="/_next/static/chunks/7f27ae6c-9c6bdf82ccd2f646.js" async=""></script><script src="/_next/static/chunks/6dc81886-d45acadb4b6674c7.js" async=""></script><script src="/_next/static/chunks/c132bf7d-3375ff4277eceb81.js" async=""></script><script src="/_next/static/chunks/cd9f8d63-ba9b342f3d5e92ac.js" async=""></script><script src="/_next/static/chunks/727-81ddfe5839f762d5.js" async=""></script><script src="/_next/static/chunks/app/page-904cdda04903cb1a.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/c9ecb46a4b21c126.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-5ab3237140d2c0f8.js"/><script src="/_next/static/chunks/523b8219-cd28a6efac8e1cf1.js" async=""></script><script src="/_next/static/chunks/921-4158ef2dc23e4a01.js" async=""></script><script src="/_next/static/chunks/main-app-6f45568a6a7cd7b0.js" async=""></script><script src="/_next/static/chunks/e24bf851-38fffe87a7b8784a.js" async=""></script><script src="/_next/static/chunks/c1ceaa8b-c4f0232ef5c2c9ba.js" async=""></script><script src="/_next/static/chunks/3998a672-18454f939c052b39.js" async=""></script><script src="/_next/static/chunks/9746af58-344daabf5df08121.js" async=""></script><script src="/_next/static/chunks/ce84277d-3aa717f588901c96.js" async=""></script><script src="/_next/static/chunks/47d8844f-cac2989cb39ba350.js" async=""></script><script src="/_next/static/chunks/a30376cd-0e2abcaded0e4cfc.js" async=""></script><script src="/_next/static/chunks/fee69bc6-4490eb47d2aaaa72.js" async=""></script><script src="/_next/static/chunks/7a8a3e83-277b00caf162a419.js" async=""></script><script src="/_next/static/chunks/450c323b-ff537c106edf3f59.js" async=""></script><script src="/_next/static/chunks/36e1c10d-28bb82b9a3d959e7.js" async=""></script><script src="/_next/static/chunks/29e3cc0d-b9131230fdb267e7.js" async=""></script><script src="/_next/static/chunks/b63b1b3f-fbe2ac2c00b4eb2f.js" async=""></script><script src="/_next/static/chunks/7f27ae6c-9c6bdf82ccd2f646.js" async=""></script><script src="/_next/static/chunks/6dc81886-d45acadb4b6674c7.js" async=""></script><script src="/_next/static/chunks/c132bf7d-3375ff4277eceb81.js" async=""></script><script src="/_next/static/chunks/cd9f8d63-ba9b342f3d5e92ac.js" async=""></script><script src="/_next/static/chunks/727-81ddfe5839f762d5.js" async=""></script><script src="/_next/static/chunks/app/page-cb35d0a6bd52f477.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-5ab3237140d2c0f8.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/c9ecb46a4b21c126.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[65035,[],\"\"]\n4:I[59969,[],\"ClientPageRoot\"]\n5:I[
|
|
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-5ab3237140d2c0f8.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/c9ecb46a4b21c126.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[65035,[],\"\"]\n4:I[59969,[],\"ClientPageRoot\"]\n5:I[92049,[\"266\",\"static/chunks/e24bf851-38fffe87a7b8784a.js\",\"517\",\"static/chunks/c1ceaa8b-c4f0232ef5c2c9ba.js\",\"678\",\"static/chunks/3998a672-18454f939c052b39.js\",\"509\",\"static/chunks/9746af58-344daabf5df08121.js\",\"895\",\"static/chunks/ce84277d-3aa717f588901c96.js\",\"989\",\"static/chunks/47d8844f-cac2989cb39ba350.js\",\"147\",\"static/chunks/a30376cd-0e2abcaded0e4cfc.js\",\"995\",\"static/chunks/fee69bc6-4490eb47d2aaaa72.js\",\"739\",\"static/chunks/7a8a3e83-277b00caf162a419.js\",\"283\",\"static/chunks/450c323b-ff537c106edf3f59.js\",\"303\",\"static/chunks/36e1c10d-28bb82b9a3d959e7.js\",\"22\",\"static/chunks/29e3cc0d-b9131230fdb267e7.js\",\"25\",\"static/chunks/b63b1b3f-fbe2ac2c00b4eb2f.js\",\"355\",\"static/chunks/7f27ae6c-9c6bdf82ccd2f646.js\",\"495\",\"static/chunks/6dc81886-d45acadb4b6674c7.js\",\"599\",\"static/chunks/c132bf7d-3375ff4277eceb81.js\",\"971\",\"static/chunks/cd9f8d63-ba9b342f3d5e92ac.js\",\"727\",\"static/chunks/727-81ddfe5839f762d5.js\",\"931\",\"static/chunks/app/page-cb35d0a6bd52f477.js\"],\"default\",1]\n6:I[49712,[],\"\"]\n7:I[30691,[],\"\"]\n9:I[36979,[],\"\"]\na:[]\n0:[\"$\",\"$L2\",null,{\"buildId\":\"s-icc2FiZoBcba9j12tQb\",\"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/c9ecb46a4b21c126.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[59969,[],"ClientPageRoot"]
|
|
2
|
-
3:I[
|
|
2
|
+
3:I[92049,["266","static/chunks/e24bf851-38fffe87a7b8784a.js","517","static/chunks/c1ceaa8b-c4f0232ef5c2c9ba.js","678","static/chunks/3998a672-18454f939c052b39.js","509","static/chunks/9746af58-344daabf5df08121.js","895","static/chunks/ce84277d-3aa717f588901c96.js","989","static/chunks/47d8844f-cac2989cb39ba350.js","147","static/chunks/a30376cd-0e2abcaded0e4cfc.js","995","static/chunks/fee69bc6-4490eb47d2aaaa72.js","739","static/chunks/7a8a3e83-277b00caf162a419.js","283","static/chunks/450c323b-ff537c106edf3f59.js","303","static/chunks/36e1c10d-28bb82b9a3d959e7.js","22","static/chunks/29e3cc0d-b9131230fdb267e7.js","25","static/chunks/b63b1b3f-fbe2ac2c00b4eb2f.js","355","static/chunks/7f27ae6c-9c6bdf82ccd2f646.js","495","static/chunks/6dc81886-d45acadb4b6674c7.js","599","static/chunks/c132bf7d-3375ff4277eceb81.js","971","static/chunks/cd9f8d63-ba9b342f3d5e92ac.js","727","static/chunks/727-81ddfe5839f762d5.js","931","static/chunks/app/page-cb35d0a6bd52f477.js"],"default",1]
|
|
3
3
|
4:I[49712,[],""]
|
|
4
4
|
5:I[30691,[],""]
|
|
5
|
-
0:["
|
|
5
|
+
0:["s-icc2FiZoBcba9j12tQb",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c9ecb46a4b21c126.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/models/types.py
CHANGED
recce/tasks/__init__.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from .core import Task
|
|
2
2
|
from .histogram import HistogramDiffTask
|
|
3
|
-
from .profile import ProfileDiffTask
|
|
3
|
+
from .profile import ProfileDiffTask, ProfileTask
|
|
4
4
|
from .query import QueryTask, QueryDiffTask, QueryBaseTask
|
|
5
5
|
from .rowcount import RowCountTask, RowCountDiffTask
|
|
6
6
|
from .top_k import TopKDiffTask
|
recce/tasks/profile.py
CHANGED
|
@@ -10,21 +10,25 @@ from ..exceptions import RecceException
|
|
|
10
10
|
from ..models import Check
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class
|
|
13
|
+
class ProfileParams(BaseModel):
|
|
14
14
|
model: str
|
|
15
15
|
columns: List[str] = None
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
class
|
|
18
|
+
class ProfileDiffResult(BaseModel):
|
|
19
19
|
base: DataFrame
|
|
20
20
|
current: DataFrame
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
class ProfileResult(BaseModel):
|
|
24
|
+
current: DataFrame
|
|
25
|
+
|
|
26
|
+
|
|
23
27
|
class ProfileDiffTask(Task):
|
|
24
28
|
|
|
25
29
|
def __init__(self, params):
|
|
26
30
|
super().__init__()
|
|
27
|
-
self.params =
|
|
31
|
+
self.params = ProfileParams(**params)
|
|
28
32
|
self.connection = None
|
|
29
33
|
|
|
30
34
|
def execute(self):
|
|
@@ -72,7 +76,7 @@ class ProfileDiffTask(Task):
|
|
|
72
76
|
self.check_cancel()
|
|
73
77
|
current = DataFrame.from_agate(merge_tables(tables))
|
|
74
78
|
|
|
75
|
-
return
|
|
79
|
+
return ProfileDiffResult(base=base, current=current)
|
|
76
80
|
|
|
77
81
|
def _verify_dbt_profiler(self, dbt_adapter):
|
|
78
82
|
for macro_name, macro in dbt_adapter.manifest.macros.items():
|
|
@@ -120,6 +124,33 @@ class ProfileDiffTask(Task):
|
|
|
120
124
|
from
|
|
121
125
|
{{ relation }}
|
|
122
126
|
""")
|
|
127
|
+
elif db_type == 'redshift':
|
|
128
|
+
# DRC-1149: Support redshift median calculation
|
|
129
|
+
# https://github.com/data-mie/dbt-profiler/pull/89
|
|
130
|
+
#
|
|
131
|
+
# Since dbt-profiler 0.8.2, there is the third parameter for measure_median
|
|
132
|
+
# For sake of compatibility, we use the new way to call the macro only for redshift
|
|
133
|
+
sql_template = textwrap.dedent(r"""
|
|
134
|
+
with source_data as (
|
|
135
|
+
select
|
|
136
|
+
*
|
|
137
|
+
from {{ relation }}
|
|
138
|
+
)
|
|
139
|
+
select
|
|
140
|
+
'{{column_name}}' as column_name,
|
|
141
|
+
nullif('{{column_type}}', '') as data_type,
|
|
142
|
+
{{ dbt_profiler.measure_row_count(column_name, column_type) }} as row_count,
|
|
143
|
+
{{ dbt_profiler.measure_not_null_proportion(column_name, column_type) }} as not_null_proportion,
|
|
144
|
+
{{ dbt_profiler.measure_distinct_proportion(column_name, column_type) }} as distinct_proportion,
|
|
145
|
+
{{ dbt_profiler.measure_distinct_count(column_name, column_type) }} as distinct_count,
|
|
146
|
+
{{ dbt_profiler.measure_is_unique(column_name, column_type) }} as is_unique,
|
|
147
|
+
{{ dbt_profiler.measure_min(column_name, column_type) }} as min,
|
|
148
|
+
{{ dbt_profiler.measure_max(column_name, column_type) }} as max,
|
|
149
|
+
{{ dbt_profiler.measure_avg(column_name, column_type) }} as avg,
|
|
150
|
+
({{ dbt_profiler.measure_median(column_name, column_type, 'source_data') }}) as median
|
|
151
|
+
from
|
|
152
|
+
source_data
|
|
153
|
+
""")
|
|
123
154
|
|
|
124
155
|
try:
|
|
125
156
|
sql = dbt_adapter.generate_sql(
|
|
@@ -159,10 +190,43 @@ class ProfileDiffResultDiffer(TaskResultDiffer):
|
|
|
159
190
|
return self.diff(result['base'], result['current'])
|
|
160
191
|
|
|
161
192
|
|
|
162
|
-
class
|
|
193
|
+
class ProfileCheckValidator(CheckValidator):
|
|
163
194
|
|
|
164
195
|
def validate_check(self, check: Check):
|
|
165
196
|
try:
|
|
166
|
-
|
|
197
|
+
ProfileParams(**check.params)
|
|
167
198
|
except Exception as e:
|
|
168
199
|
raise ValueError(f"Invalid check: {str(e)}")
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class ProfileTask(ProfileDiffTask):
|
|
203
|
+
def execute(self):
|
|
204
|
+
import agate
|
|
205
|
+
from recce.adapter.dbt_adapter import DbtAdapter, merge_tables
|
|
206
|
+
dbt_adapter: DbtAdapter = default_context().adapter
|
|
207
|
+
|
|
208
|
+
model: str = self.params.model
|
|
209
|
+
selected_columns: List[str] = self.params.columns
|
|
210
|
+
|
|
211
|
+
self._verify_dbt_profiler(dbt_adapter)
|
|
212
|
+
|
|
213
|
+
with dbt_adapter.connection_named("query"):
|
|
214
|
+
self.connection = dbt_adapter.get_thread_connection()
|
|
215
|
+
curr_columns = [column for column in dbt_adapter.get_columns(model, base=False)]
|
|
216
|
+
|
|
217
|
+
if selected_columns:
|
|
218
|
+
curr_columns = [column for column in curr_columns if column.name in selected_columns]
|
|
219
|
+
|
|
220
|
+
total = len(curr_columns)
|
|
221
|
+
completed = 0
|
|
222
|
+
|
|
223
|
+
tables: List[agate.Table] = []
|
|
224
|
+
for column in curr_columns:
|
|
225
|
+
self.update_progress(message=f'[Current] Profile column: {column.column}', percentage=completed / total)
|
|
226
|
+
relation = dbt_adapter.create_relation(model, base=False)
|
|
227
|
+
response, table = self._profile_column(dbt_adapter, relation, column)
|
|
228
|
+
tables.append(table)
|
|
229
|
+
completed = completed + 1
|
|
230
|
+
self.check_cancel()
|
|
231
|
+
current = DataFrame.from_agate(merge_tables(tables))
|
|
232
|
+
return ProfileResult(current=current)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
recce/VERSION,sha256=
|
|
1
|
+
recce/VERSION,sha256=VaC2uukz2TjbhaEGQUKERNIEDczqGNraFJvdTKU6KVM,16
|
|
2
2
|
recce/__init__.py,sha256=e0lFWHcmyw6LDA9ZVRJUToPe7ApnJjPTCylw4aBowto,2392
|
|
3
3
|
recce/artifact.py,sha256=a7P1cXd6lglEZF2OYeNvsEg9ME-ocJo5oPU4VZVeaz0,6586
|
|
4
4
|
recce/cli.py,sha256=DFJ9bt1-jq5wkLO-Rjwp-kwCCT6YBUmC9s2llM0sW3Y,30719
|
|
5
|
-
recce/config.py,sha256=
|
|
5
|
+
recce/config.py,sha256=76_tIycylWqIWLpdYJOuqffXn6q1sCJN57eH98gOEz4,4665
|
|
6
6
|
recce/core.py,sha256=dwa-2mKYnBjJPJGf_siG_h2DO6Tj1Q5APfCJ5e368io,10463
|
|
7
7
|
recce/diff.py,sha256=xLcBt4sW4sJCJ9tTCIpnV4SUHtYvMfYB1kX136iQbc0,794
|
|
8
8
|
recce/exceptions.py,sha256=FNxafrJVEsu0TMu9xM5bW-PeKPsc4TKPJMTipRz-iaw,592
|
|
@@ -16,19 +16,17 @@ 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=Xdmbe4ZO6ILO75mPuC-6y7Y9L1hwUWv0sUvhKcGGp3c,47651
|
|
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=I9tYBXEmEewY8imd4pjqXFae1w_xcKkHQM17iizALEM,6206
|
|
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/O27gCGR2ICoHv7Bz0-rDS/_buildManifest.js,sha256=exkbHO1leuEKEXHHfj0lbuMtCwdCvEooo-IROnmIziM,224
|
|
31
|
-
recce/data/_next/static/O27gCGR2ICoHv7Bz0-rDS/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
28
|
+
recce/data/index.html,sha256=MSFJm6ShV9MxDkpPI5DwVz6L9Lpj0jRzwBbLz30tbeU,38924
|
|
29
|
+
recce/data/index.txt,sha256=wMNCbliFwBXfBmhbrNXbmikyQay_drnA6pYlNm2ejKM,3283
|
|
32
30
|
recce/data/_next/static/chunks/29e3cc0d-b9131230fdb267e7.js,sha256=37FmTMjhQVxlEmYqvJJ216ETHQvHptSPibf99Lu80Hw,700
|
|
33
31
|
recce/data/_next/static/chunks/36e1c10d-28bb82b9a3d959e7.js,sha256=sxumM2EW9zhNt-9ifVfPk6Lyh3HN_txl4i4WKD9etNg,7797
|
|
34
32
|
recce/data/_next/static/chunks/3998a672-18454f939c052b39.js,sha256=AYGoGBDH2RnulfT1bZn9h-lxrI1T9qxcB-vCkQakYvs,9024
|
|
@@ -37,7 +35,7 @@ recce/data/_next/static/chunks/47d8844f-cac2989cb39ba350.js,sha256=EcdugrMXcIR4m
|
|
|
37
35
|
recce/data/_next/static/chunks/523b8219-cd28a6efac8e1cf1.js,sha256=nNll8F-JeZ-LfIPX8hKd5yhuPU9g66yPwdafpEW9FD8,172836
|
|
38
36
|
recce/data/_next/static/chunks/6dc81886-d45acadb4b6674c7.js,sha256=acPrcw_y7gPN0nYgoOD-kNIXDDG1_dMf4vOkdGewn-w,69733
|
|
39
37
|
recce/data/_next/static/chunks/727-81ddfe5839f762d5.js,sha256=6vJTbIKyrAkq-RW-bZqMBIcqG1rGkQU9h_r1NmOJrYQ,1256260
|
|
40
|
-
recce/data/_next/static/chunks/7a8a3e83-
|
|
38
|
+
recce/data/_next/static/chunks/7a8a3e83-277b00caf162a419.js,sha256=00LzvME6b5rSxoNv371IvGeSSpTSyPjX2ZH9rFkdk-o,1649
|
|
41
39
|
recce/data/_next/static/chunks/7f27ae6c-9c6bdf82ccd2f646.js,sha256=gpeILbbuIpWFePOS3aGr8q6wxbUe66edKf6xxntkaUs,779
|
|
42
40
|
recce/data/_next/static/chunks/921-4158ef2dc23e4a01.js,sha256=O6tcaghpaqUPi5qYX1Ns1nY7MPlNDUzvIR-RnKTbbGM,124084
|
|
43
41
|
recce/data/_next/static/chunks/9746af58-344daabf5df08121.js,sha256=NahogxMs7qzQO6aMxRoHmX1pmoT_CXGVivTQtXzLtbY,3750
|
|
@@ -55,7 +53,7 @@ recce/data/_next/static/chunks/main-app-6f45568a6a7cd7b0.js,sha256=hGpeb-FK-N-AX
|
|
|
55
53
|
recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
|
56
54
|
recce/data/_next/static/chunks/webpack-5ab3237140d2c0f8.js,sha256=UhIOPFOodp6y1VtJwVwZ3pJpFRAcL8fxH3StMg_GmKI,3839
|
|
57
55
|
recce/data/_next/static/chunks/app/layout-2ba8d6f3664176aa.js,sha256=a7GPQIB1NRTmOOtJjq6T6jgW94croNWWad7y8nVUTyY,162
|
|
58
|
-
recce/data/_next/static/chunks/app/page-
|
|
56
|
+
recce/data/_next/static/chunks/app/page-cb35d0a6bd52f477.js,sha256=M_PANLVfQ74xeRJpO1xP61tJrzmxVJnmbTXCmh7Qhn0,202596
|
|
59
57
|
recce/data/_next/static/chunks/app/_not-found/page-8fb2dd95da4548ae.js,sha256=KHevuFyLhcoxj_GPVwKGwjm6TlpxZwKerTojSKeA0vY,1749
|
|
60
58
|
recce/data/_next/static/chunks/pages/_app-bbd1966052cb1e5d.js,sha256=J3yb8gzUVS_QjdgYlepNJ9mPJWsQ73io3cS5S8aa_yE,284
|
|
61
59
|
recce/data/_next/static/chunks/pages/_error-2456b9a2e0600a52.js,sha256=OQiA3e-DyZV7_RmSuJcxYK7KPaWYAhOTx8gW6cdaNI8,250
|
|
@@ -70,6 +68,8 @@ recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2,sha
|
|
|
70
68
|
recce/data/_next/static/media/montserrat-latin-ext-800-normal.aff52ab0.woff,sha256=IaGLu1tg0bPED9SLQjsK_VdkG3_RCq82GBmSP56xNFU,41956
|
|
71
69
|
recce/data/_next/static/media/montserrat-vietnamese-800-normal.5f21869b.woff,sha256=9ke3AivSl-ihV218s2s9NyJS8t0ETKDdqIK4rJWiPl0,7544
|
|
72
70
|
recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2,sha256=bnmP7vEVe-4gLSDBsmKqD-SATv6-Pg-pxnTpSj7BCeI,7948
|
|
71
|
+
recce/data/_next/static/s-icc2FiZoBcba9j12tQb/_buildManifest.js,sha256=exkbHO1leuEKEXHHfj0lbuMtCwdCvEooo-IROnmIziM,224
|
|
72
|
+
recce/data/_next/static/s-icc2FiZoBcba9j12tQb/_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
|
|
@@ -81,13 +81,13 @@ recce/event/track.py,sha256=5Md5im5c4ZRZg6FOtBshEN7KFA8xeP6QfxNZhrgWMZ8,4691
|
|
|
81
81
|
recce/models/__init__.py,sha256=m2N3rgyTeXYhgQUx5a8CNUeCykFT-luIHpN-gXfrOsM,104
|
|
82
82
|
recce/models/check.py,sha256=LP98PSF7BdifI4IGnFGjSI2mzElIy9B7tKRwa8to7Es,1620
|
|
83
83
|
recce/models/run.py,sha256=H47fydFSpiq_qC4kNldBnoQ2OghIq4RDGUyrhVNzUyo,1160
|
|
84
|
-
recce/models/types.py,sha256=
|
|
85
|
-
recce/tasks/__init__.py,sha256=
|
|
84
|
+
recce/models/types.py,sha256=SRWX06fdpxkWSCpyEv7JmlEZLTmCMl8cObds7WsP860,2936
|
|
85
|
+
recce/tasks/__init__.py,sha256=P8BnsFisakA-EpYA3DK2vDfqtYpJExeVU945Jh8aN_o,316
|
|
86
86
|
recce/tasks/core.py,sha256=BM8LCyRaOJ_YEgeng0qpJkhEJm654pe7U-epJr6a9hg,4115
|
|
87
87
|
recce/tasks/dataframe.py,sha256=ppOUanqNT0PdCg2PZoo4uk_L3vzfRxS0uU5aXlE7bIQ,3648
|
|
88
88
|
recce/tasks/histogram.py,sha256=OY3hzFmlhzRvgYbw2LEV9R63Pl3RdJZp81s5AbKS4KQ,13444
|
|
89
89
|
recce/tasks/lineage.py,sha256=0my9cyB93IYIUFgVQrLd_7VoQAlkcHrCv_dMDYVnqrc,541
|
|
90
|
-
recce/tasks/profile.py,sha256=
|
|
90
|
+
recce/tasks/profile.py,sha256=i5LNBGChfAlfBO5kc8mIPPYZTLNf8fi8oKdmlqcl4tQ,10144
|
|
91
91
|
recce/tasks/query.py,sha256=kBCITSpgShSfHRsRur0glKKHa7jCwFivtFChYXdwu7Y,12139
|
|
92
92
|
recce/tasks/rowcount.py,sha256=cxQaEU1K_wp6EcCiNXuQxtSDvJXyC82CX5csjiB7eFs,9747
|
|
93
93
|
recce/tasks/schema.py,sha256=28mmZni0AU1bLfptt7Np3ddKhQ5XZsrtYINonQ2OQOo,2274
|
|
@@ -124,15 +124,15 @@ tests/tasks/conftest.py,sha256=UefgbNfJufLOmgHLiEFXIjOVmu8-58GbS6m5-NcEu20,143
|
|
|
124
124
|
tests/tasks/test_histogram.py,sha256=F-FwgVuNpkcz_u7GsJ_xaMDaaSlay9nnHKBYt4sLV1I,4119
|
|
125
125
|
tests/tasks/test_lineage.py,sha256=UxiG7gNjbfT8UIsdgM5TFfwl69xSIZ0WhNOLVw41VkQ,918
|
|
126
126
|
tests/tasks/test_preset_checks.py,sha256=BQWwlo1_C9trrkuiTF4opXjAApgU7TvNbx9EzWXc8u0,1263
|
|
127
|
-
tests/tasks/test_profile.py,sha256=
|
|
127
|
+
tests/tasks/test_profile.py,sha256=1CCAEKdgbXCPQUzD85iEbuH5IN9BEBtLpfg4tGy8Y_E,1953
|
|
128
128
|
tests/tasks/test_query.py,sha256=aLbMw6O9hMkbT0wol_Q447a6X1MEwWJYZtwJjHmm0bs,4177
|
|
129
129
|
tests/tasks/test_row_count.py,sha256=hjrKP1u2aZ9V0EWb0WGXDz4-V2kYaiNeiJ_Mqin8BPg,2920
|
|
130
130
|
tests/tasks/test_schema.py,sha256=O2zLJzzYZBwoKA5BVYDE7UuaeQtAznKzFDXNw7xzMU4,2897
|
|
131
131
|
tests/tasks/test_top_k.py,sha256=hqYWSd9xE1GU0wgvpgKeLHbPVd5CABYcTJvgA49JRyA,1707
|
|
132
132
|
tests/tasks/test_valuediff.py,sha256=_z1Ci4ba4lFSWwbj7cbKBRtWqLgV_1HIZGqQlEFl61o,1863
|
|
133
|
-
recce_nightly-0.
|
|
134
|
-
recce_nightly-0.
|
|
135
|
-
recce_nightly-0.
|
|
136
|
-
recce_nightly-0.
|
|
137
|
-
recce_nightly-0.
|
|
138
|
-
recce_nightly-0.
|
|
133
|
+
recce_nightly-0.59.0.20250319.dist-info/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
|
|
134
|
+
recce_nightly-0.59.0.20250319.dist-info/METADATA,sha256=hk5X_LcH38g-ndDdmIbs7hOAul0N2b-TnrYWD7QyU6Q,13218
|
|
135
|
+
recce_nightly-0.59.0.20250319.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
|
|
136
|
+
recce_nightly-0.59.0.20250319.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
|
|
137
|
+
recce_nightly-0.59.0.20250319.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
|
|
138
|
+
recce_nightly-0.59.0.20250319.dist-info/RECORD,,
|
tests/tasks/test_profile.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
from recce.tasks import ProfileDiffTask
|
|
3
|
+
from recce.tasks import ProfileDiffTask, ProfileTask
|
|
4
4
|
|
|
5
5
|
csv_data_curr = """
|
|
6
6
|
customer_id,name,age
|
|
@@ -17,6 +17,23 @@ csv_data_base = """
|
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
19
|
|
|
20
|
+
def test_profile(dbt_test_helper):
|
|
21
|
+
dbt_test_helper.create_model("customers", None, csv_data_curr)
|
|
22
|
+
params = dict(model='customers')
|
|
23
|
+
task = ProfileTask(params)
|
|
24
|
+
run_result = task.execute()
|
|
25
|
+
|
|
26
|
+
assert len(run_result.current.data) == 3
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_profile_with_selected_columns(dbt_test_helper):
|
|
30
|
+
dbt_test_helper.create_model("customers", None, csv_data_curr)
|
|
31
|
+
params = dict(model='customers', columns=['name', 'age'])
|
|
32
|
+
task = ProfileTask(params)
|
|
33
|
+
run_result = task.execute()
|
|
34
|
+
assert len(run_result.current.data) == 2
|
|
35
|
+
|
|
36
|
+
|
|
20
37
|
def test_profile_diff(dbt_test_helper):
|
|
21
38
|
dbt_test_helper.create_model("customers", csv_data_base, csv_data_curr)
|
|
22
39
|
params = dict(model='customers')
|
|
@@ -37,10 +54,10 @@ def test_profile_diff_with_selected_columns(dbt_test_helper):
|
|
|
37
54
|
|
|
38
55
|
|
|
39
56
|
def test_validator():
|
|
40
|
-
from recce.tasks.profile import
|
|
57
|
+
from recce.tasks.profile import ProfileCheckValidator
|
|
41
58
|
|
|
42
59
|
def validate(params: dict = {}, view_options: dict = {}):
|
|
43
|
-
|
|
60
|
+
ProfileCheckValidator().validate({
|
|
44
61
|
'name': 'test',
|
|
45
62
|
'type': 'profile_diff',
|
|
46
63
|
'params': params,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[739],{61953:function(t,r,n){n.d(r,{C3L:function(){return i},Rgz:function(){return o},zFh:function(){return a}});var e=n(67623);function o(t){return(0,e.w_)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"line",attr:{x1:"5",y1:"12",x2:"19",y2:"12"}},{tag:"polyline",attr:{points:"12 5 19 12 12 19"}}]})(t)}function i(t){return(0,e.w_)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"rect",attr:{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}},{tag:"path",attr:{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"}}]})(t)}function a(t){return(0,e.w_)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"line",attr:{x1:"16.5",y1:"9.4",x2:"7.5",y2:"4.21"}},{tag:"path",attr:{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"}},{tag:"polyline",attr:{points:"3.27 6.96 12 12.01 20.73 6.96"}},{tag:"line",attr:{x1:"12",y1:"22.08",x2:"12",y2:"12"}}]})(t)}}}]);
|