recce-nightly 0.62.0.20250417__py3-none-any.whl → 1.30.0.20251221__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/__init__.py +27 -22
- recce/adapter/base.py +11 -14
- recce/adapter/dbt_adapter/__init__.py +845 -461
- recce/adapter/dbt_adapter/dbt_version.py +3 -0
- recce/adapter/sqlmesh_adapter.py +24 -35
- recce/apis/check_api.py +59 -42
- recce/apis/check_events_api.py +353 -0
- recce/apis/check_func.py +41 -35
- recce/apis/run_api.py +25 -19
- recce/apis/run_func.py +64 -25
- recce/artifact.py +119 -51
- recce/cli.py +1301 -324
- recce/config.py +43 -34
- recce/connect_to_cloud.py +138 -0
- recce/core.py +55 -47
- recce/data/404/index.html +2 -0
- recce/data/404.html +2 -1
- recce/data/__next.@lineage.!KHNsb3Qp.__PAGE__.txt +7 -0
- recce/data/__next.@lineage.!KHNsb3Qp.txt +4 -0
- recce/data/__next.__PAGE__.txt +6 -0
- recce/data/__next._full.txt +32 -0
- recce/data/__next._head.txt +8 -0
- recce/data/__next._index.txt +14 -0
- recce/data/__next._tree.txt +8 -0
- recce/data/_next/static/chunks/025a7e3e3f9f40ae.js +1 -0
- recce/data/_next/static/chunks/0ce56d67ef5779ca.js +4 -0
- recce/data/_next/static/chunks/1a6a78780155dac7.js +48 -0
- recce/data/_next/static/chunks/1de8485918b9182a.css +2 -0
- recce/data/_next/static/chunks/1e4b1b50d1e34993.js +1 -0
- recce/data/_next/static/chunks/206d5d181e4c738e.js +1 -0
- recce/data/_next/static/chunks/2c357efc34c5b859.js +25 -0
- recce/data/_next/static/chunks/2e9d95d2d48c479c.js +1 -0
- recce/data/_next/static/chunks/2f016dc4a3edad2e.js +2 -0
- recce/data/_next/static/chunks/313251962d698f7c.js +1 -0
- recce/data/_next/static/chunks/3a9f021f38eb5574.css +1 -0
- recce/data/_next/static/chunks/40079da8d2b8f651.js +1 -0
- recce/data/_next/static/chunks/4599182bffb64661.js +38 -0
- recce/data/_next/static/chunks/4e62f6e184173580.js +1 -0
- recce/data/_next/static/chunks/5c4dfb0d09eaa401.js +1 -0
- recce/data/_next/static/chunks/69e4f06ccfdfc3ac.js +1 -0
- recce/data/_next/static/chunks/6b206cb4707d6bee.js +1 -0
- recce/data/_next/static/chunks/6d8557f062aa4386.css +1 -0
- recce/data/_next/static/chunks/7fbe3650bd83b6b5.js +1 -0
- recce/data/_next/static/chunks/83fa823a825674f6.js +1 -0
- recce/data/_next/static/chunks/848a6c9b5f55f7ed.js +1 -0
- recce/data/_next/static/chunks/859462b0858aef88.css +2 -0
- recce/data/_next/static/chunks/923964f18c87d0f1.css +1 -0
- recce/data/_next/static/chunks/939390f911895d7c.js +48 -0
- recce/data/_next/static/chunks/99a9817237a07f43.js +1 -0
- recce/data/_next/static/chunks/9fed8b4b2b924054.js +5 -0
- recce/data/_next/static/chunks/b6949f6c5892110c.js +1 -0
- recce/data/_next/static/chunks/b851a1d3f8149828.js +1 -0
- recce/data/_next/static/chunks/c734f9ad957de0b4.js +1 -0
- recce/data/_next/static/chunks/cdde321b0ec75717.js +2 -0
- recce/data/_next/static/chunks/d0f91117d77ff844.css +1 -0
- recce/data/_next/static/chunks/d6c8667911c2500f.js +1 -0
- recce/data/_next/static/chunks/da8dab68c02752cf.js +74 -0
- recce/data/_next/static/chunks/dc074049c9d12d97.js +109 -0
- recce/data/_next/static/chunks/ee7f1a8227342421.js +1 -0
- recce/data/_next/static/chunks/fa2f4e56c2fccc73.js +1 -0
- recce/data/_next/static/chunks/turbopack-1fad664f62979b93.js +3 -0
- recce/data/_next/static/media/favicon.a8d38d84.ico +0 -0
- recce/data/_next/static/media/montserrat-cyrillic-800-normal.d80d830d.woff2 +0 -0
- recce/data/_next/static/media/montserrat-cyrillic-800-normal.f9d58125.woff +0 -0
- recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.076c2a93.woff2 +0 -0
- recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.a4fa76b5.woff +0 -0
- recce/data/_next/static/media/montserrat-latin-800-normal.cde454cc.woff2 +0 -0
- recce/data/_next/static/media/montserrat-latin-800-normal.d5761935.woff +0 -0
- recce/data/_next/static/media/montserrat-latin-ext-800-normal.40ec0659.woff2 +0 -0
- recce/data/_next/static/media/montserrat-latin-ext-800-normal.b671449b.woff +0 -0
- recce/data/_next/static/media/montserrat-vietnamese-800-normal.9f7b8541.woff +0 -0
- recce/data/_next/static/media/montserrat-vietnamese-800-normal.f9eb854e.woff2 +0 -0
- recce/data/_next/static/nX-Uz0AH6Tc6hIQUFGqaB/_buildManifest.js +11 -0
- recce/data/_next/static/nX-Uz0AH6Tc6hIQUFGqaB/_clientMiddlewareManifest.json +1 -0
- recce/data/_not-found/__next._full.txt +24 -0
- recce/data/_not-found/__next._head.txt +8 -0
- recce/data/_not-found/__next._index.txt +13 -0
- recce/data/_not-found/__next._not-found.__PAGE__.txt +5 -0
- recce/data/_not-found/__next._not-found.txt +4 -0
- recce/data/_not-found/__next._tree.txt +6 -0
- recce/data/_not-found/index.html +2 -0
- recce/data/_not-found/index.txt +24 -0
- recce/data/auth_callback.html +68 -0
- recce/data/checks/__next.@lineage.__DEFAULT__.txt +7 -0
- recce/data/checks/__next._full.txt +39 -0
- recce/data/checks/__next._head.txt +8 -0
- recce/data/checks/__next._index.txt +14 -0
- recce/data/checks/__next._tree.txt +8 -0
- recce/data/checks/__next.checks.__PAGE__.txt +10 -0
- recce/data/checks/__next.checks.txt +4 -0
- recce/data/checks/index.html +2 -0
- recce/data/checks/index.txt +39 -0
- recce/data/imgs/reload-image.svg +4 -0
- recce/data/index.html +2 -27
- recce/data/index.txt +32 -7
- recce/data/lineage/__next.@lineage.__DEFAULT__.txt +7 -0
- recce/data/lineage/__next._full.txt +39 -0
- recce/data/lineage/__next._head.txt +8 -0
- recce/data/lineage/__next._index.txt +14 -0
- recce/data/lineage/__next._tree.txt +8 -0
- recce/data/lineage/__next.lineage.__PAGE__.txt +10 -0
- recce/data/lineage/__next.lineage.txt +4 -0
- recce/data/lineage/index.html +2 -0
- recce/data/lineage/index.txt +39 -0
- recce/data/query/__next.@lineage.__DEFAULT__.txt +7 -0
- recce/data/query/__next._full.txt +37 -0
- recce/data/query/__next._head.txt +8 -0
- recce/data/query/__next._index.txt +14 -0
- recce/data/query/__next._tree.txt +8 -0
- recce/data/query/__next.query.__PAGE__.txt +9 -0
- recce/data/query/__next.query.txt +4 -0
- recce/data/query/index.html +2 -0
- recce/data/query/index.txt +37 -0
- recce/diff.py +6 -12
- recce/event/CONFIG.bak +1 -0
- recce/event/__init__.py +86 -74
- recce/event/collector.py +33 -22
- recce/event/track.py +49 -27
- recce/exceptions.py +1 -1
- recce/git.py +7 -7
- recce/github.py +57 -53
- recce/mcp_server.py +725 -0
- recce/models/__init__.py +4 -1
- recce/models/check.py +438 -21
- recce/models/run.py +1 -0
- recce/models/types.py +134 -28
- recce/pull_request.py +27 -25
- recce/run.py +179 -122
- recce/server.py +394 -104
- recce/state/__init__.py +31 -0
- recce/state/cloud.py +644 -0
- recce/state/const.py +26 -0
- recce/state/local.py +56 -0
- recce/state/state.py +119 -0
- recce/state/state_loader.py +174 -0
- recce/summary.py +196 -149
- recce/tasks/__init__.py +19 -3
- recce/tasks/core.py +11 -13
- recce/tasks/dataframe.py +82 -18
- recce/tasks/histogram.py +69 -34
- recce/tasks/lineage.py +2 -2
- recce/tasks/profile.py +152 -86
- recce/tasks/query.py +180 -89
- recce/tasks/rowcount.py +37 -31
- recce/tasks/schema.py +18 -15
- recce/tasks/top_k.py +35 -35
- recce/tasks/utils.py +147 -0
- recce/tasks/valuediff.py +247 -155
- recce/util/__init__.py +3 -0
- recce/util/api_token.py +80 -0
- recce/util/breaking.py +105 -100
- recce/util/cll.py +274 -219
- recce/util/cloud/__init__.py +15 -0
- recce/util/cloud/base.py +115 -0
- recce/util/cloud/check_events.py +190 -0
- recce/util/cloud/checks.py +242 -0
- recce/util/io.py +22 -17
- recce/util/lineage.py +65 -16
- recce/util/logger.py +1 -1
- recce/util/onboarding_state.py +45 -0
- recce/util/perf_tracking.py +85 -0
- recce/util/recce_cloud.py +347 -72
- recce/util/singleton.py +4 -4
- recce/util/startup_perf.py +121 -0
- recce/yaml/__init__.py +7 -10
- recce_nightly-1.30.0.20251221.dist-info/METADATA +195 -0
- recce_nightly-1.30.0.20251221.dist-info/RECORD +183 -0
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-1.30.0.20251221.dist-info}/WHEEL +1 -2
- recce/data/_next/static/chunks/1f229bf6-d9fe92e56db8d93b.js +0 -1
- recce/data/_next/static/chunks/29e3cc0d-8c150e37dff9631b.js +0 -1
- recce/data/_next/static/chunks/36e1c10d-bb0210cbd6573a8d.js +0 -1
- recce/data/_next/static/chunks/3998a672-eaad84bdd88cc73e.js +0 -1
- recce/data/_next/static/chunks/450c323b-1bb5db526e54435a.js +0 -1
- recce/data/_next/static/chunks/47d8844f-79a1b53c66a7d7ec.js +0 -1
- recce/data/_next/static/chunks/500-e51c92a025a51234.js +0 -65
- recce/data/_next/static/chunks/6dc81886-c94b9b91bc2c3caf.js +0 -1
- recce/data/_next/static/chunks/700-3b65fc3666820d00.js +0 -2
- recce/data/_next/static/chunks/7a8a3e83-d7fa409d97b38b2b.js +0 -1
- recce/data/_next/static/chunks/7f27ae6c-413f6b869a04183a.js +0 -1
- recce/data/_next/static/chunks/9746af58-d74bef4d03eea6ab.js +0 -1
- recce/data/_next/static/chunks/a30376cd-7d806e1602f2dc3a.js +0 -1
- recce/data/_next/static/chunks/app/_not-found/page-8a886fa0855c3105.js +0 -1
- recce/data/_next/static/chunks/app/layout-9102e22cb73f74d6.js +0 -1
- recce/data/_next/static/chunks/app/page-9adc25782272ed2e.js +0 -1
- recce/data/_next/static/chunks/b63b1b3f-7395c74e11a14e95.js +0 -1
- recce/data/_next/static/chunks/c132bf7d-8102037f9ccf372a.js +0 -1
- recce/data/_next/static/chunks/c1ceaa8b-a1e442154d23515e.js +0 -1
- recce/data/_next/static/chunks/cd9f8d63-cf0d5a7b0f7a92e8.js +0 -54
- recce/data/_next/static/chunks/ce84277d-f42c2c58049cea2d.js +0 -1
- recce/data/_next/static/chunks/e24bf851-0f8cbc99656833e7.js +0 -1
- recce/data/_next/static/chunks/fee69bc6-f17d36c080742e74.js +0 -1
- recce/data/_next/static/chunks/framework-ded83d71b51ce901.js +0 -1
- recce/data/_next/static/chunks/main-a0859f1f36d0aa6c.js +0 -1
- recce/data/_next/static/chunks/main-app-0225a2255968e566.js +0 -1
- recce/data/_next/static/chunks/pages/_app-d5672bf3d8b6371b.js +0 -1
- recce/data/_next/static/chunks/pages/_error-ed75be3f25588548.js +0 -1
- recce/data/_next/static/chunks/webpack-567d72f0bc0820d5.js +0 -1
- recce/data/_next/static/css/c9ecb46a4b21c126.css +0 -14
- recce/data/_next/static/media/montserrat-cyrillic-800-normal.22628180.woff2 +0 -0
- recce/data/_next/static/media/montserrat-cyrillic-800-normal.31d693bb.woff +0 -0
- recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.7e2c1e62.woff +0 -0
- recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.94a63aea.woff2 +0 -0
- recce/data/_next/static/media/montserrat-latin-800-normal.6f8fa298.woff2 +0 -0
- recce/data/_next/static/media/montserrat-latin-800-normal.97e20d5e.woff +0 -0
- recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2 +0 -0
- recce/data/_next/static/media/montserrat-latin-ext-800-normal.aff52ab0.woff +0 -0
- recce/data/_next/static/media/montserrat-vietnamese-800-normal.5f21869b.woff +0 -0
- recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2 +0 -0
- recce/data/_next/static/qiyFlux77VkhxiceAJe_F/_buildManifest.js +0 -1
- recce/state.py +0 -753
- recce_nightly-0.62.0.20250417.dist-info/METADATA +0 -311
- recce_nightly-0.62.0.20250417.dist-info/RECORD +0 -139
- recce_nightly-0.62.0.20250417.dist-info/top_level.txt +0 -2
- tests/__init__.py +0 -0
- tests/adapter/__init__.py +0 -0
- tests/adapter/dbt_adapter/__init__.py +0 -0
- tests/adapter/dbt_adapter/conftest.py +0 -13
- tests/adapter/dbt_adapter/dbt_test_helper.py +0 -283
- tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -40
- tests/adapter/dbt_adapter/test_dbt_cll.py +0 -102
- tests/adapter/dbt_adapter/test_selector.py +0 -177
- tests/tasks/__init__.py +0 -0
- tests/tasks/conftest.py +0 -4
- tests/tasks/test_histogram.py +0 -137
- tests/tasks/test_lineage.py +0 -42
- tests/tasks/test_preset_checks.py +0 -50
- tests/tasks/test_profile.py +0 -73
- tests/tasks/test_query.py +0 -151
- tests/tasks/test_row_count.py +0 -116
- tests/tasks/test_schema.py +0 -99
- tests/tasks/test_top_k.py +0 -73
- tests/tasks/test_valuediff.py +0 -74
- tests/test_cli.py +0 -122
- tests/test_config.py +0 -45
- tests/test_core.py +0 -27
- tests/test_dbt.py +0 -36
- tests/test_pull_request.py +0 -130
- tests/test_server.py +0 -98
- tests/test_state.py +0 -123
- tests/test_summary.py +0 -57
- /recce/data/_next/static/chunks/{polyfills-42372ed130431b0a.js → a6dad97d9634a72d.js} +0 -0
- /recce/data/_next/static/{qiyFlux77VkhxiceAJe_F → nX-Uz0AH6Tc6hIQUFGqaB}/_ssgManifest.js +0 -0
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-1.30.0.20251221.dist-info}/entry_points.txt +0 -0
- {recce_nightly-0.62.0.20250417.dist-info → recce_nightly-1.30.0.20251221.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: recce-nightly
|
|
3
|
-
Version: 0.62.0.20250417
|
|
4
|
-
Summary: Environment diff tool for dbt
|
|
5
|
-
Home-page: https://github.com/InfuseAI/recce
|
|
6
|
-
Author: InfuseAI Dev Team
|
|
7
|
-
Author-email: dev@infuseai.io
|
|
8
|
-
Project-URL: Bug Tracker, https://github.com/InfuseAI/recce/issues
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
|
-
Classifier: Operating System :: OS Independent
|
|
14
|
-
Classifier: Development Status :: 4 - Beta
|
|
15
|
-
Requires-Python: >=3.9
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
License-File: LICENSE
|
|
18
|
-
Requires-Dist: boto3
|
|
19
|
-
Requires-Dist: requests>=2.28.1
|
|
20
|
-
Requires-Dist: ruamel.yaml>=0.18.6
|
|
21
|
-
Requires-Dist: click>=7.1
|
|
22
|
-
Requires-Dist: deepdiff<8.0,>=7.0
|
|
23
|
-
Requires-Dist: portalocker
|
|
24
|
-
Requires-Dist: fastapi
|
|
25
|
-
Requires-Dist: itsdangerous
|
|
26
|
-
Requires-Dist: uvicorn
|
|
27
|
-
Requires-Dist: pydantic
|
|
28
|
-
Requires-Dist: jinja2
|
|
29
|
-
Requires-Dist: requests>=2.28.1
|
|
30
|
-
Requires-Dist: rich>=12.0.0
|
|
31
|
-
Requires-Dist: sentry-sdk
|
|
32
|
-
Requires-Dist: watchdog
|
|
33
|
-
Requires-Dist: websockets
|
|
34
|
-
Requires-Dist: py-markdown-table
|
|
35
|
-
Requires-Dist: python-dateutil
|
|
36
|
-
Requires-Dist: python-multipart
|
|
37
|
-
Requires-Dist: GitPython
|
|
38
|
-
Requires-Dist: PyGithub
|
|
39
|
-
Requires-Dist: sqlglot
|
|
40
|
-
Provides-Extra: dev
|
|
41
|
-
Requires-Dist: pytest>=4.6; extra == "dev"
|
|
42
|
-
Requires-Dist: pytest-flake8; extra == "dev"
|
|
43
|
-
Requires-Dist: flake8==3.9.2; extra == "dev"
|
|
44
|
-
Requires-Dist: pytest-mypy; extra == "dev"
|
|
45
|
-
Requires-Dist: pytest-cov; extra == "dev"
|
|
46
|
-
Requires-Dist: twine; extra == "dev"
|
|
47
|
-
Requires-Dist: tox; extra == "dev"
|
|
48
|
-
Requires-Dist: pandas; extra == "dev"
|
|
49
|
-
Requires-Dist: httpx; extra == "dev"
|
|
50
|
-
Dynamic: author
|
|
51
|
-
Dynamic: author-email
|
|
52
|
-
Dynamic: classifier
|
|
53
|
-
Dynamic: description
|
|
54
|
-
Dynamic: description-content-type
|
|
55
|
-
Dynamic: home-page
|
|
56
|
-
Dynamic: license-file
|
|
57
|
-
Dynamic: project-url
|
|
58
|
-
Dynamic: provides-extra
|
|
59
|
-
Dynamic: requires-dist
|
|
60
|
-
Dynamic: requires-python
|
|
61
|
-
Dynamic: summary
|
|
62
|
-
|
|
63
|
-
<p align="center">
|
|
64
|
-
<a href="https://datarecce.io">
|
|
65
|
-
<picture>
|
|
66
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://datarecce.io/assets/images/recce-logo-stacked.png">
|
|
67
|
-
<source media="(prefers-color-scheme: light)" srcset="https://datarecce.io/assets/images/recce-logo-stacked.png">
|
|
68
|
-
<img alt="Recce: DataRecce.io" src="https://datarecce.io/assets/images/recce-logo-stacked.png" width="200" style="width: 100%; max-width: 200px; display: block; margin: 0 auto 20px;">
|
|
69
|
-
</picture>
|
|
70
|
-
</a>
|
|
71
|
-
</p>
|
|
72
|
-
|
|
73
|
-
<h3 align="center">The data validation toolkit<br />for teams that care about building better data</h3>
|
|
74
|
-
|
|
75
|
-
<p align="center">
|
|
76
|
-
<a href="https://pypi.org/project/recce/"><img src="https://img.shields.io/badge/pip_install-recce-006DAD?style=flat-square" alt="install"></a>
|
|
77
|
-
<a href="https://pypi.org/project/recce/"><img src="https://img.shields.io/pypi/v/recce?style=flat-square" alt="pipy"></a>
|
|
78
|
-
<a href="https://pypi.org/project/recce/"><img src="https://img.shields.io/pypi/pyversions/recce?style=flat-square" alt="Python"></a>
|
|
79
|
-
<a href="https://pypi.org/project/recce/#files"><img src="https://img.shields.io/pypi/dw/recce?style=flat-square" alt="downloads"></a>
|
|
80
|
-
<a href="https://github.com/DataRecce/recce/blob/main/LICENSE"><img src="https://img.shields.io/github/license/DataRecce/recce?style=flat-square" alt="license"></a>
|
|
81
|
-
<a href="https://getdbt.slack.com/archives/C05C28V7CPP"><img src="https://img.shields.io/badge/Slack-4A154B?style=flat-square&logo=slack&logoColor=white" alt="Slack"></a>
|
|
82
|
-
<a href="https://discord.com/invite/5zb2aK9KBV"><img src="https://img.shields.io/discord/664381609771925514?color=%237289DA&label=chat&logo=discord&logoColor=white&style=flat-square" alt="InfuseAI Discord Invite"></a>
|
|
83
|
-
</p>
|
|
84
|
-
|
|
85
|
-
<p align="center">
|
|
86
|
-
<a href="https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss">
|
|
87
|
-
<img alt="Book us with Cal.com" src="https://cal.com/book-with-cal-light.svg" />
|
|
88
|
-
</a>
|
|
89
|
-
</p>
|
|
90
|
-
|
|
91
|
-
## Introduction
|
|
92
|
-
|
|
93
|
-
`Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your
|
|
94
|
-
team’s dbt modeling changes impact data by comparing your dev branch with stable production data. Run manual data checks
|
|
95
|
-
during development, and automate checks in CI for PR review.
|
|
96
|
-
|
|
97
|
-
## Quick Start
|
|
98
|
-
|
|
99
|
-
You can launch Recce in any dbt project in just two commands:
|
|
100
|
-
|
|
101
|
-
```Bash
|
|
102
|
-
# cd into your dbt project
|
|
103
|
-
pip install -U recce
|
|
104
|
-
recce server
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
To use the full suite of diffing tools in Recce, please prepare two environments to compare against. Follow
|
|
108
|
-
our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) to try it out for yourself.
|
|
109
|
-
|
|
110
|
-
## What you get
|
|
111
|
-
|
|
112
|
-
`recce server` launches a web UI that shows you the area of your lineage that is impacted by the branch changes.
|
|
113
|
-
|
|
114
|
-
<a href="https://datarecce.io"><img src="https://datarecce.io/assets/images/readme/recce-overview-screenshot.png" style="width: 100%; max-width: 600px; display: block; margin: 0 auto 20px;" /></a>
|
|
115
|
-
|
|
116
|
-
### Using Recce for Impact Assessment in dbt PR Review
|
|
117
|
-
|
|
118
|
-
- Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR
|
|
119
|
-
review.
|
|
120
|
-
- Add Checks to your Checklist to note observed impacts.
|
|
121
|
-
- Share your Checklist with the PR reviewer.
|
|
122
|
-
- (`Recce Cloud`) Automatically sync Check status between Recce Instances
|
|
123
|
-
- (`Recce Cloud`) Block PR merging until all Recce Checks have been approved
|
|
124
|
-
|
|
125
|
-
Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on
|
|
126
|
-
the Recce blog.
|
|
127
|
-
|
|
128
|
-
## Try the Online Demo
|
|
129
|
-
|
|
130
|
-
We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos
|
|
131
|
-
to inspect the data impact caused by the modeling changes in the PR.
|
|
132
|
-
|
|
133
|
-
For each demo, review the following:
|
|
134
|
-
|
|
135
|
-
- The pull request comment
|
|
136
|
-
- The code changes
|
|
137
|
-
- How the lineage and data has changed in `Recce`
|
|
138
|
-
|
|
139
|
-
This will enable you to validate if the intention of the PR has been successfully implemented without unintended impact.
|
|
140
|
-
|
|
141
|
-
> [!TIP]
|
|
142
|
-
> Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further
|
|
143
|
-
> investigation.
|
|
144
|
-
>
|
|
145
|
-
|
|
146
|
-
### Demo 1: Calculation logic change
|
|
147
|
-
|
|
148
|
-
This pull request adjusts the **logic** for how customer lifetime value is calculated:
|
|
149
|
-
|
|
150
|
-
- [Demo #1](https://pr1.demo.datarecce.io/)
|
|
151
|
-
- [Pull request #1](https://github.com/DataRecce/jaffle_shop_duckdb/pull/1)
|
|
152
|
-
|
|
153
|
-
### Demo 2: Refactoring
|
|
154
|
-
|
|
155
|
-
This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models,
|
|
156
|
-
enhancing readability and maintainability:
|
|
157
|
-
|
|
158
|
-
- [Demo #2](https://pr2.demo.datarecce.io/)
|
|
159
|
-
- [Pull request #2](https://github.com/DataRecce/jaffle_shop_duckdb/pull/2)
|
|
160
|
-
|
|
161
|
-
### Demo 3: Analysis
|
|
162
|
-
|
|
163
|
-
This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of
|
|
164
|
-
rounding in our data processing.
|
|
165
|
-
|
|
166
|
-
- [Demo #3](https://pr3.demo.datarecce.io/)
|
|
167
|
-
- [Pull request #3](https://github.com/DataRecce/jaffle_shop_duckdb/pull/3)
|
|
168
|
-
|
|
169
|
-
### Demo 4: Enhancing the existing model
|
|
170
|
-
|
|
171
|
-
This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as
|
|
172
|
-
part of a promotion.
|
|
173
|
-
|
|
174
|
-
- [Demo #4](https://pr44.demo.datarecce.io/)
|
|
175
|
-
- [Pull request #44](https://github.com/DataRecce/jaffle_shop_duckdb/pull/44)
|
|
176
|
-
|
|
177
|
-
## Why `Recce`
|
|
178
|
-
|
|
179
|
-
[dbt](https://www.getdbt.com/) has brought many software best practices to data projects, such as:
|
|
180
|
-
|
|
181
|
-
- Version controlled code
|
|
182
|
-
- Modular SQL
|
|
183
|
-
- Reproducible pipelines
|
|
184
|
-
|
|
185
|
-
Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve
|
|
186
|
-
analytics opens dbt projects to many roles, and the size of dbt projects increase, the job of reviewing data modeling
|
|
187
|
-
changes is even more critical.
|
|
188
|
-
|
|
189
|
-
The only way to understand the impact of code changes on data is to compare the data before-and-after the changes.
|
|
190
|
-
|
|
191
|
-
## Features
|
|
192
|
-
|
|
193
|
-
`Recce` provides a data review environment for data teams to check their work during development, and then again as part
|
|
194
|
-
of PR review. The suite of tools and diffs in Recce are specifically geared towards surfacing, understanding, and
|
|
195
|
-
recording data impact from code changes.
|
|
196
|
-
|
|
197
|
-
### Lineage Diff
|
|
198
|
-
|
|
199
|
-
[Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in
|
|
200
|
-
the lineage have been added, removed, or modified.
|
|
201
|
-
|
|
202
|
-
### Structural Diffs
|
|
203
|
-
|
|
204
|
-
- [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including
|
|
205
|
-
added or removed columns
|
|
206
|
-
- [Row Count Diff](https://datarecce.io/docs/features/lineage/#row-count-diff) - Compares the row count for tables
|
|
207
|
-
|
|
208
|
-
### Statistical Diffs
|
|
209
|
-
|
|
210
|
-
Advanced Diffs provide high level statistics about data change:
|
|
211
|
-
|
|
212
|
-
- [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct
|
|
213
|
-
count, min, max, average.
|
|
214
|
-
- [Value Diff](https://datarecce.io/docs/features/lineage/#value-diff): The matched count and percentage for each column
|
|
215
|
-
in the table.
|
|
216
|
-
- [Top-K Diff](https://datarecce.io/docs/features/lineage/#top-k-diff): Compares the distribution of a categorical
|
|
217
|
-
column.
|
|
218
|
-
- [Histogram Diff](https://datarecce.io/docs/features/lineage/#histogram-diff): Compares the distribution of a numeric
|
|
219
|
-
column in an overlay histogram chart.
|
|
220
|
-
|
|
221
|
-
### Query Diff
|
|
222
|
-
|
|
223
|
-
[Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use
|
|
224
|
-
of dbt macros.
|
|
225
|
-
|
|
226
|
-
### Checklist
|
|
227
|
-
|
|
228
|
-
The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data
|
|
229
|
-
validation process.
|
|
230
|
-
|
|
231
|
-
- Save the results of checks
|
|
232
|
-
- Re-run checks
|
|
233
|
-
- Annotate checks to add context
|
|
234
|
-
- Share the results of checks
|
|
235
|
-
- (`Recce Cloud`) Sync checks and check results across Recce instances
|
|
236
|
-
- (`Recce Cloud`) Block PR merging until checks have been approved
|
|
237
|
-
|
|
238
|
-
## Who's using `Recce`?
|
|
239
|
-
|
|
240
|
-
`Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with
|
|
241
|
-
non-technical stakeholders to approve data checks.
|
|
242
|
-
|
|
243
|
-
- **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact
|
|
244
|
-
before merging.
|
|
245
|
-
- **Analysts** can use `Recce` to self-review and understand how data modeling changes have changed the data.
|
|
246
|
-
- **Stakeholders** can use `Recce` to sign-off on data after updates have been made
|
|
247
|
-
|
|
248
|
-
## Documentation / How to use `Recce`
|
|
249
|
-
|
|
250
|
-
The [Recce Documentation](https://datarecce.io/docs/) covers everything you need to get started.
|
|
251
|
-
|
|
252
|
-
We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle
|
|
253
|
-
Shop and then [trying out Recce](https://datarecce.io/docs/get-started/) in your own project.
|
|
254
|
-
|
|
255
|
-
For advice on best practices in preparing dbt environments to enable effective PR review, check
|
|
256
|
-
out [Best Practices for Preparing Environments](https://datarecce.io/docs/guides/best-practices-prep-env/).
|
|
257
|
-
|
|
258
|
-
## Recce Cloud
|
|
259
|
-
|
|
260
|
-
`Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing
|
|
261
|
-
multiple pull requests.
|
|
262
|
-
|
|
263
|
-
With `Recce Cloud`:
|
|
264
|
-
|
|
265
|
-
- `Recce` Instances can be launched **directly from a PR**
|
|
266
|
-
- **Checks** are automatically **synced** across `Recce` Instances
|
|
267
|
-
- **Blocked merging** until all checks are approved
|
|
268
|
-
|
|
269
|
-
[Recce Cloud](https://datarecce.io/cloud) is currently in early-access private beta.
|
|
270
|
-
|
|
271
|
-
To find out how you can get access
|
|
272
|
-
please [book an appointment](https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss) for a short meeting.
|
|
273
|
-
|
|
274
|
-
<a href="https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss">
|
|
275
|
-
<img alt="Book us with [Cal.com](http://cal.com/)" src="https://cal.com/book-with-cal-light.svg" />
|
|
276
|
-
</a>
|
|
277
|
-
|
|
278
|
-
## Data Security
|
|
279
|
-
|
|
280
|
-
`Recce` consists of a local server application that you run on your own device or compute services.
|
|
281
|
-
|
|
282
|
-
- Diffs or queries that are performed by `Recce` happen either in your data warehouse, or in the browser itself.
|
|
283
|
-
- `Recce` does not store your data.
|
|
284
|
-
|
|
285
|
-
For `Recce Cloud` users:
|
|
286
|
-
|
|
287
|
-
- An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon
|
|
288
|
-
`Recce Cloud`. This file is encrypted *before* transmission.
|
|
289
|
-
|
|
290
|
-
## Community & Support
|
|
291
|
-
|
|
292
|
-
Here's where you can get in touch with the `Recce` team and find support:
|
|
293
|
-
|
|
294
|
-
- [dbt Slack](https://www.getdbt.com/community/join-the-community) in
|
|
295
|
-
the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
|
|
296
|
-
- [Recce Discord](https://discord.gg/VpwXRC34jz)
|
|
297
|
-
- Email us [product@datarecce.io](mailto:product@datarecce.io)
|
|
298
|
-
|
|
299
|
-
If you believe you have found a bug, or there is some missing functionality in Recce, please open
|
|
300
|
-
a [GitHub Issue](https://github.com/DataRecce/recce/issues).
|
|
301
|
-
|
|
302
|
-
## Recce on the web
|
|
303
|
-
|
|
304
|
-
You can follow along with news about `Recce` and blogs from our team in the following places:
|
|
305
|
-
|
|
306
|
-
- [DataRecce.io](https://DataRecce.io)
|
|
307
|
-
- [LinkedIn](https://www.linkedin.com/company/datarecce)
|
|
308
|
-
- [Medium blog](https://medium.com/inthepipeline)
|
|
309
|
-
- [@datarecce](https://x.com/DataRecce) on Twitter/X
|
|
310
|
-
- [@DataRecce@mastodon.social](https://mastodon.social/@DataRecce) on Mastodon
|
|
311
|
-
- [@datarecce.bsky.social](https://bsky.app/profile/datarecce.bsky.social) on BlueSky
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
recce/VERSION,sha256=_yJw44mCUkyeAabamkWnSOJ9tGVVg8rgx2srGuU7ScY,16
|
|
2
|
-
recce/__init__.py,sha256=e0lFWHcmyw6LDA9ZVRJUToPe7ApnJjPTCylw4aBowto,2392
|
|
3
|
-
recce/artifact.py,sha256=a7P1cXd6lglEZF2OYeNvsEg9ME-ocJo5oPU4VZVeaz0,6586
|
|
4
|
-
recce/cli.py,sha256=Z7yJZcBScNjDrL-MqOTTw3YSMkiS2LNTzAMCbjKjFuk,34877
|
|
5
|
-
recce/config.py,sha256=76_tIycylWqIWLpdYJOuqffXn6q1sCJN57eH98gOEz4,4665
|
|
6
|
-
recce/core.py,sha256=aMNHWi8bhwPrUCVYp2KyAkoR20NHD7pMJPxFUZ-XHes,10679
|
|
7
|
-
recce/diff.py,sha256=xLcBt4sW4sJCJ9tTCIpnV4SUHtYvMfYB1kX136iQbc0,794
|
|
8
|
-
recce/exceptions.py,sha256=FNxafrJVEsu0TMu9xM5bW-PeKPsc4TKPJMTipRz-iaw,592
|
|
9
|
-
recce/git.py,sha256=uig5sh347jZJKTD2Ml5b0lySSGJhdQ4VCIZqdgKH_y4,2344
|
|
10
|
-
recce/github.py,sha256=cQBNCtloeLpem06RDhUGb4tR7PoptP1pkZYCM1z2qUQ,7369
|
|
11
|
-
recce/pull_request.py,sha256=d-9c9KLzQGY_1erotORdm8lTHqFZKjNN9-BfI-hbGJ8,3853
|
|
12
|
-
recce/run.py,sha256=g0lAjKuihL5s4zi_qVlczXxlvAcJSq6n0rAilKqjIgc,13006
|
|
13
|
-
recce/server.py,sha256=aR-VoY59fqMQHVzhERGaBMwbOmKX0iXOdnjCcv4-A_8,18030
|
|
14
|
-
recce/state.py,sha256=YlT6iEO3xplKX8t7z_EYTYN_vzZd6jkF0elN6fS5V88,30564
|
|
15
|
-
recce/summary.py,sha256=yPAaGCkOmfhLjwF2rGpS66XR88TjyNG6GI3T6lsRIeg,18809
|
|
16
|
-
recce/adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
recce/adapter/base.py,sha256=2IwK18bIn8myCoz98I1PA--FdAzZ-GBI9ZCGyYr-B-4,3582
|
|
18
|
-
recce/adapter/sqlmesh_adapter.py,sha256=_nnWHhd46p1MIW5-riQFYMf638OlSdwugIKgTwYiRYM,5160
|
|
19
|
-
recce/adapter/dbt_adapter/__init__.py,sha256=PixMHlCw4bsSPCXXMq62q0wdh1YvvDH69kX5m4kuVU0,53111
|
|
20
|
-
recce/adapter/dbt_adapter/dbt_version.py,sha256=CwsOEu101fzMUwUYD3Y7btDPAALQNwA7J6C4Auc_wzM,1225
|
|
21
|
-
recce/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
recce/apis/check_api.py,sha256=S4OYx3vR5iezo1vnWpk56JUZiprAr9UgYcz-HEIsROs,6211
|
|
23
|
-
recce/apis/check_func.py,sha256=onhGppZ7LDrVmipHaXZI-WaTVRFZDwb2oQhbYe0tSXY,4316
|
|
24
|
-
recce/apis/run_api.py,sha256=FdNFWt7JrPbCv2CQkswbsaw5gZNGesjQBi749jbQtK0,3326
|
|
25
|
-
recce/apis/run_func.py,sha256=zxxRo9_VdvSMeDbzQnBgVo5_msOmauiVF4XJTe-hvOg,7179
|
|
26
|
-
recce/data/404.html,sha256=8bqNvrl3ilmdfv7BVOd-GcAC2wd_A1GE0bhI080Adko,6206
|
|
27
|
-
recce/data/favicon.ico,sha256=B2mBumUOnzvUrXrqNkrc5QfdDXjzEXRcWkWur0fJ6sM,2565
|
|
28
|
-
recce/data/index.html,sha256=nekvVDzZADL8OG3deCvnub4sxHiNZW_4ohxX68qBw14,38924
|
|
29
|
-
recce/data/index.txt,sha256=yhcgl5yeXpJoEpY1h9jpp19Uky8wA9QnRtwPI3UgqQM,3283
|
|
30
|
-
recce/data/_next/static/chunks/1f229bf6-d9fe92e56db8d93b.js,sha256=NvhILR-yLwIu-WlvwD9Hkr2H_I7ZK64vwYvR6c84wC0,172836
|
|
31
|
-
recce/data/_next/static/chunks/29e3cc0d-8c150e37dff9631b.js,sha256=4ZQR-OYMhGWnYPNwUjG5FpsTVzVTPEAf6T0v0E5g-4o,700
|
|
32
|
-
recce/data/_next/static/chunks/36e1c10d-bb0210cbd6573a8d.js,sha256=SkfIoUJXsrjEoql4hRRcWKtW2vMfHOAHUm4NE6eaho4,7797
|
|
33
|
-
recce/data/_next/static/chunks/3998a672-eaad84bdd88cc73e.js,sha256=7FRm86VFsyXQL6M4J0qFq7e4cvhs48uKJF2Qp0tYraM,9024
|
|
34
|
-
recce/data/_next/static/chunks/450c323b-1bb5db526e54435a.js,sha256=3M8dU9CapPo-oey7uyaRBaSrnwoPHUQb671T-_Nv7bs,2205
|
|
35
|
-
recce/data/_next/static/chunks/47d8844f-79a1b53c66a7d7ec.js,sha256=WwhEczkWeoHd3z0pTrh4u_XwBoUxePZ7rjEMPjajmx8,697
|
|
36
|
-
recce/data/_next/static/chunks/500-e51c92a025a51234.js,sha256=MxXlCvIbimURCzZompSCWqtSOeve8ZdZ5wR1A7Cq5jE,1257314
|
|
37
|
-
recce/data/_next/static/chunks/6dc81886-c94b9b91bc2c3caf.js,sha256=xIxqOzAWk07uQb5pgQGMv0O4CHereLF86Fwm2wX0Mmo,69733
|
|
38
|
-
recce/data/_next/static/chunks/700-3b65fc3666820d00.js,sha256=JokVG7hi66aCWFukVWlzc2vIBKa7EFW7JrSGW9F_2tU,124133
|
|
39
|
-
recce/data/_next/static/chunks/7a8a3e83-d7fa409d97b38b2b.js,sha256=MmsF3qQgQXqSPGhUHQbIqAtVz7Maa_O3rWErEq0N3gY,1649
|
|
40
|
-
recce/data/_next/static/chunks/7f27ae6c-413f6b869a04183a.js,sha256=8Hs6bhtsCfZiOFrX3_IBxLZKPsdqhkLzikrACS1Pe0M,779
|
|
41
|
-
recce/data/_next/static/chunks/9746af58-d74bef4d03eea6ab.js,sha256=9MwsjNv8XMd92eUpXYeA32Ahk8ORP_oWMXnpTYOQQ-c,4177
|
|
42
|
-
recce/data/_next/static/chunks/a30376cd-7d806e1602f2dc3a.js,sha256=cvkpSEaZn5Johnsf3DT_x-hKNlNIhYFb6CZcMqpXpTE,797
|
|
43
|
-
recce/data/_next/static/chunks/b63b1b3f-7395c74e11a14e95.js,sha256=g2ArwRSeMZ-o6dODDGh3orC0iRkyxjXTk4NgyVk1nBw,572
|
|
44
|
-
recce/data/_next/static/chunks/c132bf7d-8102037f9ccf372a.js,sha256=CSRe9MSZI7ohCFzU6umTdDDkw2aBiLhA0HLurQwrjUY,198537
|
|
45
|
-
recce/data/_next/static/chunks/c1ceaa8b-a1e442154d23515e.js,sha256=mL85IeBYKB6YBgKlDs2n5lA7iLaxU8nTEtE8jduhGRI,81302
|
|
46
|
-
recce/data/_next/static/chunks/cd9f8d63-cf0d5a7b0f7a92e8.js,sha256=QqsQqnIVC7xADuujk3GhMZIUZCGiWwe_fqVh_2iSEV0,82989
|
|
47
|
-
recce/data/_next/static/chunks/ce84277d-f42c2c58049cea2d.js,sha256=4FzO_5dSRNQKZHQ2EmZW0iau4yBguMBJ324J0e70UXQ,2562
|
|
48
|
-
recce/data/_next/static/chunks/e24bf851-0f8cbc99656833e7.js,sha256=aaPLADhg4KN7KoE09dpPiE831gBYqepVrIJj6Qh2amk,154153
|
|
49
|
-
recce/data/_next/static/chunks/fee69bc6-f17d36c080742e74.js,sha256=r51nWC424b7AoD-Y68JLMXDDpS_n-IUL3zcJNStzOLA,483
|
|
50
|
-
recce/data/_next/static/chunks/framework-ded83d71b51ce901.js,sha256=0Xsxxnmw5fjRHz8ni6vlaF9tQjfjNGZcZv2oMy7A_T4,140000
|
|
51
|
-
recce/data/_next/static/chunks/main-a0859f1f36d0aa6c.js,sha256=nTSd5jisBq_nX5_3Yf1JMakSk9Rq5IQEhtzeFU0VRyY,111204
|
|
52
|
-
recce/data/_next/static/chunks/main-app-0225a2255968e566.js,sha256=zVNui79GYFi-pNlmSB_zwxzps-uRW9L1-HZXXBUFj-Y,471
|
|
53
|
-
recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
|
54
|
-
recce/data/_next/static/chunks/webpack-567d72f0bc0820d5.js,sha256=8boCnz01og_Qj7lbDux_TTNcPnNFuefZdgpC8-Pb_XU,3839
|
|
55
|
-
recce/data/_next/static/chunks/app/layout-9102e22cb73f74d6.js,sha256=dXobUGeQ7wXuAkSTFzSJ7mqKKKsZD2sud0xqn3YEv3Y,161
|
|
56
|
-
recce/data/_next/static/chunks/app/page-9adc25782272ed2e.js,sha256=lEYUKCWlczeVJEf6yAbtz_Bk42mZaJeGDoCxoV9mxuE,210735
|
|
57
|
-
recce/data/_next/static/chunks/app/_not-found/page-8a886fa0855c3105.js,sha256=T5MBvLNarbZQll8vwvggCZWFzcNwqe6LlL0hGI9YPXA,1751
|
|
58
|
-
recce/data/_next/static/chunks/pages/_app-d5672bf3d8b6371b.js,sha256=UcYdHJMmCNfuMevCyY_iFfFwMGbxcEkLGRbBnEx_cCU,284
|
|
59
|
-
recce/data/_next/static/chunks/pages/_error-ed75be3f25588548.js,sha256=o_MwN3cYfszhI-hy_wkB0XAyTgcEcXt43rrzk-oKIe0,250
|
|
60
|
-
recce/data/_next/static/css/c9ecb46a4b21c126.css,sha256=JbGypR8aDNuZavNvH6dhPtSbMVSCsy0ycPrz_6XkiVc,21925
|
|
61
|
-
recce/data/_next/static/media/montserrat-cyrillic-800-normal.22628180.woff2,sha256=P5Sx5PNkdTlDYzAdulW_OPRfMokDLi6XTpmS8KJSRoI,11148
|
|
62
|
-
recce/data/_next/static/media/montserrat-cyrillic-800-normal.31d693bb.woff,sha256=ITxULbMzWscxwUi_v3GpzTSYVWlwq_z9fpEvAkEvHJw,11020
|
|
63
|
-
recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.7e2c1e62.woff,sha256=6J3PqBk_hOFVM8PpfZeSfwZQumQd6LTPPjnaVha2KQ0,12672
|
|
64
|
-
recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.94a63aea.woff2,sha256=qHQDcPj9VkK-6sE5nxIKvejtNLo5RwBULzyH9nZsEwo,12052
|
|
65
|
-
recce/data/_next/static/media/montserrat-latin-800-normal.6f8fa298.woff2,sha256=Tyiv8SvOCaTmT_S2FaOZ5FuZz52F1aVV9hzIfrI7sEI,19036
|
|
66
|
-
recce/data/_next/static/media/montserrat-latin-800-normal.97e20d5e.woff,sha256=O3hUbMaqKvL7tlGscLIlvxQbLpHgOmCRLfwQ6RjJvE0,20784
|
|
67
|
-
recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2,sha256=tOnyR2cgiUm1cKtlrN9CY6FzD2yAMBe90slHKC0cBms,33776
|
|
68
|
-
recce/data/_next/static/media/montserrat-latin-ext-800-normal.aff52ab0.woff,sha256=IaGLu1tg0bPED9SLQjsK_VdkG3_RCq82GBmSP56xNFU,41956
|
|
69
|
-
recce/data/_next/static/media/montserrat-vietnamese-800-normal.5f21869b.woff,sha256=9ke3AivSl-ihV218s2s9NyJS8t0ETKDdqIK4rJWiPl0,7544
|
|
70
|
-
recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2,sha256=bnmP7vEVe-4gLSDBsmKqD-SATv6-Pg-pxnTpSj7BCeI,7948
|
|
71
|
-
recce/data/_next/static/qiyFlux77VkhxiceAJe_F/_buildManifest.js,sha256=gZrGHi2LPMw1gkjYWs13MYkJyb5aOtihBRSJ1w0E6QA,224
|
|
72
|
-
recce/data/_next/static/qiyFlux77VkhxiceAJe_F/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
73
|
-
recce/data/imgs/feedback/thumbs-down.png,sha256=q9KVIbaZku1TWkYHuleYlO-b6HsTApYh3St5xNHMGMg,10695
|
|
74
|
-
recce/data/imgs/feedback/thumbs-up.png,sha256=VF3BH8bmYEqcSsMDJO57xMqW4t6crCXUXaMlOPgI_OE,10556
|
|
75
|
-
recce/data/logo/recce-logo-white.png,sha256=y3re8iEucJnMUkAkRS2CjWHTlOydyvgWdWjuQKcXDbk,46923
|
|
76
|
-
recce/event/CONFIG,sha256=w8_AVcNu_JF-t8lNmjOqtsXbeOawMzpEhkISaMlm-iU,48
|
|
77
|
-
recce/event/SENTRY_DNS,sha256=nWXZevLC4qDScvNtjs329X13oxqvtFI_Kiu6cfCDOBA,83
|
|
78
|
-
recce/event/__init__.py,sha256=zcVm28UljfLVwOzWpAz0M94GAsZ-6xeYKTEPQQOWS1c,8429
|
|
79
|
-
recce/event/collector.py,sha256=c3ySWQ3Zab49Tz0BbSItPlA-pq0JxUPyWMjr-XBtwz4,5627
|
|
80
|
-
recce/event/track.py,sha256=5Md5im5c4ZRZg6FOtBshEN7KFA8xeP6QfxNZhrgWMZ8,4691
|
|
81
|
-
recce/models/__init__.py,sha256=m2N3rgyTeXYhgQUx5a8CNUeCykFT-luIHpN-gXfrOsM,104
|
|
82
|
-
recce/models/check.py,sha256=LP98PSF7BdifI4IGnFGjSI2mzElIy9B7tKRwa8to7Es,1620
|
|
83
|
-
recce/models/run.py,sha256=H47fydFSpiq_qC4kNldBnoQ2OghIq4RDGUyrhVNzUyo,1160
|
|
84
|
-
recce/models/types.py,sha256=hCdfEiFlb81178dtP4bplRHBCghAd854JdI2pldIdAU,3130
|
|
85
|
-
recce/tasks/__init__.py,sha256=P8BnsFisakA-EpYA3DK2vDfqtYpJExeVU945Jh8aN_o,316
|
|
86
|
-
recce/tasks/core.py,sha256=BM8LCyRaOJ_YEgeng0qpJkhEJm654pe7U-epJr6a9hg,4115
|
|
87
|
-
recce/tasks/dataframe.py,sha256=ppOUanqNT0PdCg2PZoo4uk_L3vzfRxS0uU5aXlE7bIQ,3648
|
|
88
|
-
recce/tasks/histogram.py,sha256=OY3hzFmlhzRvgYbw2LEV9R63Pl3RdJZp81s5AbKS4KQ,13444
|
|
89
|
-
recce/tasks/lineage.py,sha256=0my9cyB93IYIUFgVQrLd_7VoQAlkcHrCv_dMDYVnqrc,541
|
|
90
|
-
recce/tasks/profile.py,sha256=i5LNBGChfAlfBO5kc8mIPPYZTLNf8fi8oKdmlqcl4tQ,10144
|
|
91
|
-
recce/tasks/query.py,sha256=kBCITSpgShSfHRsRur0glKKHa7jCwFivtFChYXdwu7Y,12139
|
|
92
|
-
recce/tasks/rowcount.py,sha256=cxQaEU1K_wp6EcCiNXuQxtSDvJXyC82CX5csjiB7eFs,9747
|
|
93
|
-
recce/tasks/schema.py,sha256=28mmZni0AU1bLfptt7Np3ddKhQ5XZsrtYINonQ2OQOo,2274
|
|
94
|
-
recce/tasks/top_k.py,sha256=E-V2p2St2W1RXa4cQMUYagHpja5rWj_mcPLtvJ3fKfI,5522
|
|
95
|
-
recce/tasks/valuediff.py,sha256=7GcSy7emPSLXjqcJomJ5aK9V8Eamo864ln-iOyNnW5A,15118
|
|
96
|
-
recce/util/__init__.py,sha256=0lcJectK7Z7k9h0EaYCcv4Bgw2PN03OdJoxb3tbV5j8,37
|
|
97
|
-
recce/util/breaking.py,sha256=VcJNBqmn0jzie9vSoc66c4xdZROr9vMVFLb50eH59JY,12136
|
|
98
|
-
recce/util/cache.py,sha256=QB6wzxe0M3jNTwP0M27Ys8F2hF-oda4-LyXXG9THuZQ,646
|
|
99
|
-
recce/util/cll.py,sha256=fEh13utsobam6fEqyDRXvtxUqXfqZRN-rlTxXXK7NDI,12206
|
|
100
|
-
recce/util/io.py,sha256=uMBpJBKKOUPHTBgntkVkuaVUkY8grDIlA8ORCtFLE5E,3372
|
|
101
|
-
recce/util/lineage.py,sha256=C-jNqRARgwAEQoicO5t7D0XGBkcVs6SyxLzfzCAqkPQ,707
|
|
102
|
-
recce/util/logger.py,sha256=Vmd2PuyzBkML7zvPmJKe3yNfELFjRZqX7abA23wquzg,746
|
|
103
|
-
recce/util/pydantic_model.py,sha256=KumKuyCjbTzEMsKLE4-b-eZfp0gLhYDdmVtw1-hxiJw,587
|
|
104
|
-
recce/util/recce_cloud.py,sha256=6Nq5MFGsV6AziUHSuON9cPkVpS6bpybuOmqTQbFLhks,7215
|
|
105
|
-
recce/util/singleton.py,sha256=l2Q31ulDNCMJCuzUIGNXuvniHdGg6EMg80mrW48-97w,643
|
|
106
|
-
recce/yaml/__init__.py,sha256=489WHH9pAPf68gx04qifA0AmexIopJona3EPWxGxa-Y,1296
|
|
107
|
-
recce_nightly-0.62.0.20250417.dist-info/licenses/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
|
|
108
|
-
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
|
-
tests/test_cli.py,sha256=tEQJVT8TbrAOPkIqkVJR6e2k-4dGJZMQVdsYC4DSQAE,5613
|
|
110
|
-
tests/test_config.py,sha256=FM55tG0Yaqu8x9l6EiJtFJDUu6F2n96vW4_xbX3O7DY,1579
|
|
111
|
-
tests/test_core.py,sha256=1gdyHLU-7fOLPiFSYUevFRFcbTJzDuWK4t_mMojPlz8,769
|
|
112
|
-
tests/test_dbt.py,sha256=5F0mBFy9hLs3Cd5LMZb2TPiail-ROJDeaZLoM5pOOac,1323
|
|
113
|
-
tests/test_pull_request.py,sha256=DJl4NIxDiNfcskSuRf2qFgWDb7CSVoCB3EzzUwvRn-o,3562
|
|
114
|
-
tests/test_server.py,sha256=TgHjn3J1GGqgEpx2FEaf0IIdCIipiSjt97Kt_ISgjgc,3377
|
|
115
|
-
tests/test_state.py,sha256=bKMjJ9Cq9rXDIEkWeZMNbdTZzwcVpTSiKlztJQO-ajY,4951
|
|
116
|
-
tests/test_summary.py,sha256=d8V7dhJuQHsEkEOGq7nCiV_a0m2uEEoFwhlH7atBHE0,2735
|
|
117
|
-
tests/adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
|
-
tests/adapter/dbt_adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
|
-
tests/adapter/dbt_adapter/conftest.py,sha256=xLt7XJctbPqY4KtAkD1fcxhoAk0v0QUFNzAyJiGunkA,271
|
|
120
|
-
tests/adapter/dbt_adapter/dbt_test_helper.py,sha256=TFz2ETjmmwyHmpz08wnBBYRMbXL-mvoCnqNP5oioX0M,9973
|
|
121
|
-
tests/adapter/dbt_adapter/test_dbt_adapter.py,sha256=ZksKGGEo2rIziPjVG-dAh3xaj8YDBbHg_D5q2GPQRR8,1520
|
|
122
|
-
tests/adapter/dbt_adapter/test_dbt_cll.py,sha256=X7xbTnDZolwP6BIiL5iVl2yRI4-_z4NaeGBD1LW2QT4,4338
|
|
123
|
-
tests/adapter/dbt_adapter/test_selector.py,sha256=z6mStaj31d4BuNjvfpoMq4QbWZKLyo4rTFYL0rQvMK0,6255
|
|
124
|
-
tests/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
|
-
tests/tasks/conftest.py,sha256=UefgbNfJufLOmgHLiEFXIjOVmu8-58GbS6m5-NcEu20,143
|
|
126
|
-
tests/tasks/test_histogram.py,sha256=F-FwgVuNpkcz_u7GsJ_xaMDaaSlay9nnHKBYt4sLV1I,4119
|
|
127
|
-
tests/tasks/test_lineage.py,sha256=UxiG7gNjbfT8UIsdgM5TFfwl69xSIZ0WhNOLVw41VkQ,918
|
|
128
|
-
tests/tasks/test_preset_checks.py,sha256=BQWwlo1_C9trrkuiTF4opXjAApgU7TvNbx9EzWXc8u0,1263
|
|
129
|
-
tests/tasks/test_profile.py,sha256=1CCAEKdgbXCPQUzD85iEbuH5IN9BEBtLpfg4tGy8Y_E,1953
|
|
130
|
-
tests/tasks/test_query.py,sha256=aLbMw6O9hMkbT0wol_Q447a6X1MEwWJYZtwJjHmm0bs,4177
|
|
131
|
-
tests/tasks/test_row_count.py,sha256=hjrKP1u2aZ9V0EWb0WGXDz4-V2kYaiNeiJ_Mqin8BPg,2920
|
|
132
|
-
tests/tasks/test_schema.py,sha256=02guW2UXwUW3Ts8x27KjdL6V9fVatGlx8XFEEcVq3bU,2810
|
|
133
|
-
tests/tasks/test_top_k.py,sha256=hqYWSd9xE1GU0wgvpgKeLHbPVd5CABYcTJvgA49JRyA,1707
|
|
134
|
-
tests/tasks/test_valuediff.py,sha256=_z1Ci4ba4lFSWwbj7cbKBRtWqLgV_1HIZGqQlEFl61o,1863
|
|
135
|
-
recce_nightly-0.62.0.20250417.dist-info/METADATA,sha256=VhchOuPBndFWpg5-jqQdJrcQPCwx_JvOoUcs_A8wjdw,13240
|
|
136
|
-
recce_nightly-0.62.0.20250417.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
137
|
-
recce_nightly-0.62.0.20250417.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
|
|
138
|
-
recce_nightly-0.62.0.20250417.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
|
|
139
|
-
recce_nightly-0.62.0.20250417.dist-info/RECORD,,
|
tests/__init__.py
DELETED
|
File without changes
|
tests/adapter/__init__.py
DELETED
|
File without changes
|
|
File without changes
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import pytest
|
|
2
|
-
|
|
3
|
-
from recce.core import set_default_context
|
|
4
|
-
from .dbt_test_helper import DbtTestHelper
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@pytest.fixture
|
|
8
|
-
def dbt_test_helper():
|
|
9
|
-
helper = DbtTestHelper()
|
|
10
|
-
context = helper.context
|
|
11
|
-
set_default_context(context)
|
|
12
|
-
yield helper
|
|
13
|
-
helper.cleanup()
|