recce-nightly 0.56.0.20250302__tar.gz → 0.56.0.20250303__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {recce_nightly-0.56.0.20250302/recce_nightly.egg-info → recce_nightly-0.56.0.20250303}/PKG-INFO +1 -1
- recce_nightly-0.56.0.20250303/recce/VERSION +1 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/adapter/dbt_adapter/__init__.py +8 -2
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/cli.py +12 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/404.html +1 -1
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/index.html +1 -1
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/index.txt +1 -1
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/state.py +46 -8
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/cll.py +9 -1
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303/recce_nightly.egg-info}/PKG-INFO +1 -1
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce_nightly.egg-info/SOURCES.txt +2 -2
- recce_nightly-0.56.0.20250302/recce/VERSION +0 -1
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/LICENSE +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/README.md +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/adapter/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/adapter/base.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/adapter/dbt_adapter/dbt_version.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/adapter/sqlmesh_adapter.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/apis/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/apis/check_api.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/apis/check_func.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/apis/run_api.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/apis/run_func.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/artifact.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/config.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/core.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/157e448a-49151cad1ec51175.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/29e3cc0d-490dbff344996865.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/312-3e9b49b718b98737.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/36e1c10d-3bcdd9bb8564108c.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/3998a672-e71829c331c77ccb.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/450c323b-79414be6f43ef15c.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/47d8844f-ccb4e71fbabd12f3.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/6dc81886-03da5372308c376d.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/771-71780b322a32673c.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/7a8a3e83-f7fe5f14c56108bf.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/7f27ae6c-c484e79185298424.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/868e7b5c-36d94ba5a58a2e6a.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/9746af58-daab848e55b5faf7.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/a30376cd-de90859763d1c500.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/app/_not-found/page-c2ee18b5ec3e3d57.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/app/layout-5b30ab0207459cb8.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/app/page-edc85fe647299e04.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/b3b1872b-97ea0be5bd9b42bc.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/b63b1b3f-13deddaaba264453.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/c132bf7d-740a7144e614cb2d.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/ce84277d-ced9559f73764a27.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/cf0511cf-88e5bf54e88504a3.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/fee69bc6-2cf346c884a74e9d.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/framework-ded83d71b51ce901.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/main-45628b9d5f140527.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/main-app-19c0918a6bb54549.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/pages/_app-ff7f75fed61fbef3.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/pages/_error-5e587f051118d074.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/chunks/webpack-300961f547f48fe7.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/css/1d7428fe54fca42f.css +0 -0
- {recce_nightly-0.56.0.20250302/recce/data/_next/static/yhRltmKeCHagogYcUQFyx → recce_nightly-0.56.0.20250303/recce/data/_next/static/hJPyciGzo_u9ecuwxXUJf}/_buildManifest.js +0 -0
- {recce_nightly-0.56.0.20250302/recce/data/_next/static/yhRltmKeCHagogYcUQFyx → recce_nightly-0.56.0.20250303/recce/data/_next/static/hJPyciGzo_u9ecuwxXUJf}/_ssgManifest.js +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.5c8b3804.woff +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.c03acce9.woff2 +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.83d3554a.woff2 +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.8a4a9645.woff +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-latin-800-normal.388abfc2.woff2 +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-latin-800-normal.e7b55ea8.woff +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.40cba3c6.woff +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.85728e97.woff2 +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.0bd05041.woff +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.dfbbc7ba.woff2 +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/favicon.ico +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/imgs/feedback/thumbs-down.png +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/imgs/feedback/thumbs-up.png +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/logo/recce-logo-white.png +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/diff.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/event/CONFIG +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/event/SENTRY_DNS +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/event/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/event/collector.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/event/track.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/exceptions.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/git.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/github.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/models/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/models/check.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/models/run.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/models/types.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/pull_request.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/run.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/server.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/summary.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/core.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/dataframe.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/histogram.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/lineage.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/profile.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/query.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/rowcount.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/schema.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/top_k.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/tasks/valuediff.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/breaking.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/cache.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/io.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/logger.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/pydantic_model.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/recce_cloud.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/singleton.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/yaml/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce_nightly.egg-info/dependency_links.txt +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce_nightly.egg-info/entry_points.txt +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce_nightly.egg-info/requires.txt +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce_nightly.egg-info/top_level.txt +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/setup.cfg +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/setup.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/adapter/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/adapter/dbt_adapter/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/adapter/dbt_adapter/conftest.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/adapter/dbt_adapter/test_selector.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/__init__.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/conftest.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_histogram.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_lineage.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_preset_checks.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_profile.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_query.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_row_count.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_schema.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_top_k.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_valuediff.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/test_cli.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/test_config.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/test_core.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/test_dbt.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/test_pull_request.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/test_server.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/test_state.py +0 -0
- {recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/test_summary.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.56.0.20250303
|
|
@@ -772,13 +772,19 @@ class DbtAdapter(BaseAdapter):
|
|
|
772
772
|
try:
|
|
773
773
|
dialect = self.adapter.type()
|
|
774
774
|
column_lineage = cll(compiled_sql, schema=schema, dialect=dialect)
|
|
775
|
-
except RecceException
|
|
776
|
-
|
|
775
|
+
except RecceException:
|
|
776
|
+
# TODO: provide parsing error message if needed
|
|
777
|
+
_apply_all_columns(node, 'unknown', [])
|
|
778
|
+
continue
|
|
779
|
+
except Exception:
|
|
777
780
|
_apply_all_columns(node, 'unknown', [])
|
|
778
781
|
continue
|
|
779
782
|
|
|
780
783
|
for name, column in node.get('columns', {}).items():
|
|
781
784
|
if name in column_lineage:
|
|
785
|
+
for cld in column_lineage[name].depends_on:
|
|
786
|
+
# manifest node name is case-insensitive
|
|
787
|
+
cld.node = cld.node.lower()
|
|
782
788
|
column['depends_on'] = column_lineage[name].depends_on
|
|
783
789
|
column['transformation_type'] = column_lineage[name].type
|
|
784
790
|
|
|
@@ -541,6 +541,12 @@ def upload(state_file, **kwargs):
|
|
|
541
541
|
|
|
542
542
|
# check if state exists in cloud
|
|
543
543
|
state_manager = RecceCloudStateManager(cloud_options)
|
|
544
|
+
if not state_manager.verify():
|
|
545
|
+
error, hint = state_manager.error_and_hint
|
|
546
|
+
console.print(f"[[red]Error[/red]] {error}")
|
|
547
|
+
console.print(f"{hint}")
|
|
548
|
+
exit(1)
|
|
549
|
+
|
|
544
550
|
cloud_state_file_exists = state_manager.check_cloud_state_exists()
|
|
545
551
|
|
|
546
552
|
if cloud_state_file_exists and not click.confirm('\nDo you want to overwrite the existing state file?'):
|
|
@@ -577,6 +583,12 @@ def download(**kwargs):
|
|
|
577
583
|
|
|
578
584
|
# check if state exists in cloud
|
|
579
585
|
state_manager = RecceCloudStateManager(cloud_options)
|
|
586
|
+
if not state_manager.verify():
|
|
587
|
+
error, hint = state_manager.error_and_hint
|
|
588
|
+
console.print(f"[[red]Error[/red]] {error}")
|
|
589
|
+
console.print(f"{hint}")
|
|
590
|
+
exit(1)
|
|
591
|
+
|
|
580
592
|
cloud_state_file_exists = state_manager.check_cloud_state_exists()
|
|
581
593
|
|
|
582
594
|
if not cloud_state_file_exists:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-300961f547f48fe7.js"/><script src="/_next/static/chunks/157e448a-49151cad1ec51175.js" async=""></script><script src="/_next/static/chunks/312-3e9b49b718b98737.js" async=""></script><script src="/_next/static/chunks/main-app-19c0918a6bb54549.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-300961f547f48fe7.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[16892,[],\"\"]\n3:I[60299,[],\"\"]\n4:I[43276,[],\"\"]\na:I[28103,[],\"\"]\n5:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-300961f547f48fe7.js"/><script src="/_next/static/chunks/157e448a-49151cad1ec51175.js" async=""></script><script src="/_next/static/chunks/312-3e9b49b718b98737.js" async=""></script><script src="/_next/static/chunks/main-app-19c0918a6bb54549.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-300961f547f48fe7.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[16892,[],\"\"]\n3:I[60299,[],\"\"]\n4:I[43276,[],\"\"]\na:I[28103,[],\"\"]\n5:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"hJPyciGzo_u9ecuwxXUJf\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L2\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$5\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$6\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$8\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"recce\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Recce: Data validation toolkit for comprehensive PR review\"}]]\n2:null\n"])</script></body></html>
|
|
@@ -24,4 +24,4 @@
|
|
|
24
24
|
transparent 0%,
|
|
25
25
|
#3182ce 50%,
|
|
26
26
|
transparent 100%
|
|
27
|
-
);position:absolute;will-change:left;min-width:50%;-webkit-animation:animation-11lmxjq 1s ease infinite normal none running;animation:animation-11lmxjq 1s ease infinite normal none running;}@-webkit-keyframes animation-11lmxjq{0%{left:-40%;}100%{left:100%;}}@keyframes animation-11lmxjq{0%{left:-40%;}100%{left:100%;}}</style><div style="width:0%" data-indeterminate="" aria-valuemax="100" aria-valuemin="0" role="progressbar" class="css-h5ends"></div></div></div><div class="css-0"></div></div></div></div><span></span><span id="__chakra_env" hidden=""></span><script src="/_next/static/chunks/webpack-300961f547f48fe7.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/1d7428fe54fca42f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[16892,[],\"\"]\n4:I[38443,[],\"ClientPageRoot\"]\n5:I[21636,[\"524\",\"static/chunks/b3b1872b-97ea0be5bd9b42bc.js\",\"434\",\"static/chunks/868e7b5c-36d94ba5a58a2e6a.js\",\"678\",\"static/chunks/3998a672-e71829c331c77ccb.js\",\"509\",\"static/chunks/9746af58-daab848e55b5faf7.js\",\"648\",\"static/chunks/ce84277d-ced9559f73764a27.js\",\"989\",\"static/chunks/47d8844f-ccb4e71fbabd12f3.js\",\"147\",\"static/chunks/a30376cd-de90859763d1c500.js\",\"995\",\"static/chunks/fee69bc6-2cf346c884a74e9d.js\",\"739\",\"static/chunks/7a8a3e83-f7fe5f14c56108bf.js\",\"283\",\"static/chunks/450c323b-79414be6f43ef15c.js\",\"303\",\"static/chunks/36e1c10d-3bcdd9bb8564108c.js\",\"22\",\"static/chunks/29e3cc0d-490dbff344996865.js\",\"25\",\"static/chunks/b63b1b3f-13deddaaba264453.js\",\"355\",\"static/chunks/7f27ae6c-c484e79185298424.js\",\"495\",\"static/chunks/6dc81886-03da5372308c376d.js\",\"599\",\"static/chunks/c132bf7d-740a7144e614cb2d.js\",\"852\",\"static/chunks/cf0511cf-88e5bf54e88504a3.js\",\"771\",\"static/chunks/771-71780b322a32673c.js\",\"931\",\"static/chunks/app/page-edc85fe647299e04.js\"],\"default\",1]\n6:I[60299,[],\"\"]\n7:I[43276,[],\"\"]\n9:I[28103,[],\"\"]\na:[]\n0:[\"$\",\"$L2\",null,{\"buildId\":\"
|
|
27
|
+
);position:absolute;will-change:left;min-width:50%;-webkit-animation:animation-11lmxjq 1s ease infinite normal none running;animation:animation-11lmxjq 1s ease infinite normal none running;}@-webkit-keyframes animation-11lmxjq{0%{left:-40%;}100%{left:100%;}}@keyframes animation-11lmxjq{0%{left:-40%;}100%{left:100%;}}</style><div style="width:0%" data-indeterminate="" aria-valuemax="100" aria-valuemin="0" role="progressbar" class="css-h5ends"></div></div></div><div class="css-0"></div></div></div></div><span></span><span id="__chakra_env" hidden=""></span><script src="/_next/static/chunks/webpack-300961f547f48fe7.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/1d7428fe54fca42f.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[16892,[],\"\"]\n4:I[38443,[],\"ClientPageRoot\"]\n5:I[21636,[\"524\",\"static/chunks/b3b1872b-97ea0be5bd9b42bc.js\",\"434\",\"static/chunks/868e7b5c-36d94ba5a58a2e6a.js\",\"678\",\"static/chunks/3998a672-e71829c331c77ccb.js\",\"509\",\"static/chunks/9746af58-daab848e55b5faf7.js\",\"648\",\"static/chunks/ce84277d-ced9559f73764a27.js\",\"989\",\"static/chunks/47d8844f-ccb4e71fbabd12f3.js\",\"147\",\"static/chunks/a30376cd-de90859763d1c500.js\",\"995\",\"static/chunks/fee69bc6-2cf346c884a74e9d.js\",\"739\",\"static/chunks/7a8a3e83-f7fe5f14c56108bf.js\",\"283\",\"static/chunks/450c323b-79414be6f43ef15c.js\",\"303\",\"static/chunks/36e1c10d-3bcdd9bb8564108c.js\",\"22\",\"static/chunks/29e3cc0d-490dbff344996865.js\",\"25\",\"static/chunks/b63b1b3f-13deddaaba264453.js\",\"355\",\"static/chunks/7f27ae6c-c484e79185298424.js\",\"495\",\"static/chunks/6dc81886-03da5372308c376d.js\",\"599\",\"static/chunks/c132bf7d-740a7144e614cb2d.js\",\"852\",\"static/chunks/cf0511cf-88e5bf54e88504a3.js\",\"771\",\"static/chunks/771-71780b322a32673c.js\",\"931\",\"static/chunks/app/page-edc85fe647299e04.js\"],\"default\",1]\n6:I[60299,[],\"\"]\n7:I[43276,[],\"\"]\n9:I[28103,[],\"\"]\na:[]\n0:[\"$\",\"$L2\",null,{\"buildId\":\"hJPyciGzo_u9ecuwxXUJf\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"\"],\"initialTree\":[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{\"props\":{\"params\":{},\"searchParams\":{}},\"Component\":\"$5\"}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1d7428fe54fca42f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]],null],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helv"])</script><script>self.__next_f.push([1,"etica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L8\"],\"globalErrorComponent\":\"$9\",\"missingSlots\":\"$Wa\"}]\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"recce\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Recce: Data validation toolkit for comprehensive PR review\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"32x32\"}]]\n3:null\n"])</script></body></html>
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
3:I[21636,["524","static/chunks/b3b1872b-97ea0be5bd9b42bc.js","434","static/chunks/868e7b5c-36d94ba5a58a2e6a.js","678","static/chunks/3998a672-e71829c331c77ccb.js","509","static/chunks/9746af58-daab848e55b5faf7.js","648","static/chunks/ce84277d-ced9559f73764a27.js","989","static/chunks/47d8844f-ccb4e71fbabd12f3.js","147","static/chunks/a30376cd-de90859763d1c500.js","995","static/chunks/fee69bc6-2cf346c884a74e9d.js","739","static/chunks/7a8a3e83-f7fe5f14c56108bf.js","283","static/chunks/450c323b-79414be6f43ef15c.js","303","static/chunks/36e1c10d-3bcdd9bb8564108c.js","22","static/chunks/29e3cc0d-490dbff344996865.js","25","static/chunks/b63b1b3f-13deddaaba264453.js","355","static/chunks/7f27ae6c-c484e79185298424.js","495","static/chunks/6dc81886-03da5372308c376d.js","599","static/chunks/c132bf7d-740a7144e614cb2d.js","852","static/chunks/cf0511cf-88e5bf54e88504a3.js","771","static/chunks/771-71780b322a32673c.js","931","static/chunks/app/page-edc85fe647299e04.js"],"default",1]
|
|
3
3
|
4:I[60299,[],""]
|
|
4
4
|
5:I[43276,[],""]
|
|
5
|
-
0:["
|
|
5
|
+
0:["hJPyciGzo_u9ecuwxXUJf",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/1d7428fe54fca42f.css","precedence":"next","crossOrigin":"$undefined"}]]],null],null]},[[null,["$","html",null,{"lang":"en","children":["$","body",null,{"suppressHydrationWarning":true,"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]]
|
|
6
6
|
6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"recce"}],["$","meta","3",{"name":"description","content":"Recce: Data validation toolkit for comprehensive PR review"}],["$","link","4",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"32x32"}]]
|
|
7
7
|
1:null
|
|
@@ -5,6 +5,7 @@ import os
|
|
|
5
5
|
import threading
|
|
6
6
|
import time
|
|
7
7
|
from base64 import b64encode
|
|
8
|
+
from dataclasses import dataclass
|
|
8
9
|
from datetime import datetime
|
|
9
10
|
from hashlib import md5, sha256
|
|
10
11
|
from typing import List, Optional, Dict, Union, Tuple
|
|
@@ -29,6 +30,23 @@ RECCE_STATE_FILE = 'recce-state.json'
|
|
|
29
30
|
RECCE_STATE_COMPRESSED_FILE = f'{RECCE_STATE_FILE}.gz'
|
|
30
31
|
|
|
31
32
|
|
|
33
|
+
@dataclass
|
|
34
|
+
class ErrorMessage:
|
|
35
|
+
error_message: str
|
|
36
|
+
hint_message: str
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
RECCE_CLOUD_TOKEN_MISSING = ErrorMessage(
|
|
40
|
+
error_message='No GitHub token is provided to access the pull request information',
|
|
41
|
+
hint_message='Please provide a GitHub token in the command argument'
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
RECCE_CLOUD_PASSWORD_MISSING = ErrorMessage(
|
|
45
|
+
error_message='No password provided to access the state file in Recce Cloud',
|
|
46
|
+
hint_message='Please provide a password with the option "--password <compress-password>"'
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
32
50
|
def s3_sse_c_headers(password: str) -> Dict[str, str]:
|
|
33
51
|
hashed_password = sha256()
|
|
34
52
|
md5_hash = md5()
|
|
@@ -179,7 +197,7 @@ class RecceStateLoader:
|
|
|
179
197
|
|
|
180
198
|
if self.cloud_mode:
|
|
181
199
|
if not self.cloud_options.get('token'):
|
|
182
|
-
raise Exception(
|
|
200
|
+
raise Exception(RECCE_CLOUD_TOKEN_MISSING.error_message)
|
|
183
201
|
self.pr_info = fetch_pr_metadata(cloud=self.cloud_mode, github_token=self.cloud_options.get('token'))
|
|
184
202
|
if self.pr_info.id is None:
|
|
185
203
|
raise Exception('Cannot get the pull request information from GitHub.')
|
|
@@ -190,13 +208,13 @@ class RecceStateLoader:
|
|
|
190
208
|
def verify(self) -> bool:
|
|
191
209
|
if self.cloud_mode:
|
|
192
210
|
if self.cloud_options.get('token') is None:
|
|
193
|
-
self.error_message =
|
|
194
|
-
self.hint_message =
|
|
211
|
+
self.error_message = RECCE_CLOUD_TOKEN_MISSING.error_message
|
|
212
|
+
self.hint_message = RECCE_CLOUD_TOKEN_MISSING.hint_message
|
|
195
213
|
return False
|
|
196
214
|
if not self.cloud_options.get('host'):
|
|
197
215
|
if self.cloud_options.get('password') is None:
|
|
198
|
-
self.error_message =
|
|
199
|
-
self.hint_message =
|
|
216
|
+
self.error_message = RECCE_CLOUD_PASSWORD_MISSING.error_message
|
|
217
|
+
self.hint_message = RECCE_CLOUD_PASSWORD_MISSING.hint_message
|
|
200
218
|
return False
|
|
201
219
|
else:
|
|
202
220
|
if self.review_mode is True and self.state_file is None:
|
|
@@ -356,7 +374,7 @@ class RecceStateLoader:
|
|
|
356
374
|
|
|
357
375
|
password = self.cloud_options.get('password')
|
|
358
376
|
if password is None:
|
|
359
|
-
raise Exception(
|
|
377
|
+
raise Exception(RECCE_CLOUD_PASSWORD_MISSING.error_message)
|
|
360
378
|
|
|
361
379
|
with tempfile.NamedTemporaryFile() as tmp:
|
|
362
380
|
headers = s3_sse_c_headers(password)
|
|
@@ -487,18 +505,38 @@ class RecceStateLoader:
|
|
|
487
505
|
|
|
488
506
|
|
|
489
507
|
class RecceCloudStateManager:
|
|
508
|
+
error_message: str
|
|
509
|
+
hint_message: str
|
|
510
|
+
|
|
490
511
|
# It is a class to upload, download and purge the state file on Recce Cloud.
|
|
491
512
|
|
|
492
513
|
def __init__(self, cloud_options: Optional[Dict[str, str]] = None):
|
|
493
514
|
self.cloud_options = cloud_options or {}
|
|
494
515
|
self.pr_info = None
|
|
516
|
+
self.error_message = None
|
|
517
|
+
self.hint_message = None
|
|
495
518
|
|
|
496
519
|
if not self.cloud_options.get('token'):
|
|
497
|
-
raise Exception(
|
|
520
|
+
raise Exception(RECCE_CLOUD_TOKEN_MISSING.error_message)
|
|
498
521
|
self.pr_info = fetch_pr_metadata(cloud=True, github_token=self.cloud_options.get('token'))
|
|
499
522
|
if self.pr_info.id is None:
|
|
500
523
|
raise Exception('Cannot get the pull request information from GitHub.')
|
|
501
524
|
|
|
525
|
+
def verify(self) -> bool:
|
|
526
|
+
if self.cloud_options.get('token') is None:
|
|
527
|
+
self.error_message = RECCE_CLOUD_TOKEN_MISSING.error_message
|
|
528
|
+
self.hint_message = RECCE_CLOUD_TOKEN_MISSING.hint_message
|
|
529
|
+
return False
|
|
530
|
+
if self.cloud_options.get('password') is None:
|
|
531
|
+
self.error_message = RECCE_CLOUD_PASSWORD_MISSING.error_message
|
|
532
|
+
self.hint_message = RECCE_CLOUD_PASSWORD_MISSING.hint_message
|
|
533
|
+
return False
|
|
534
|
+
return True
|
|
535
|
+
|
|
536
|
+
@property
|
|
537
|
+
def error_and_hint(self) -> (Union[str, None], Union[str, None]):
|
|
538
|
+
return self.error_message, self.hint_message
|
|
539
|
+
|
|
502
540
|
def _check_state_in_recce_cloud(self) -> bool:
|
|
503
541
|
return RecceCloud(token=self.cloud_options.get('token')).check_artifacts_exists(self.pr_info)
|
|
504
542
|
|
|
@@ -611,7 +649,7 @@ class RecceCloudStateManager:
|
|
|
611
649
|
|
|
612
650
|
password = self.cloud_options.get('password')
|
|
613
651
|
if password is None:
|
|
614
|
-
raise Exception(
|
|
652
|
+
raise Exception(RECCE_CLOUD_PASSWORD_MISSING.error_message)
|
|
615
653
|
|
|
616
654
|
headers = s3_sse_c_headers(password)
|
|
617
655
|
response = requests.get(presigned_url, headers=headers)
|
|
@@ -51,7 +51,8 @@ def _cll_expression(expression, default_table) -> ColumnLevelDependencyColumn:
|
|
|
51
51
|
for expr in ifs:
|
|
52
52
|
depends_on_one = _cll_expression(expr, default_table).depends_on
|
|
53
53
|
depends_on.extend(depends_on_one)
|
|
54
|
-
|
|
54
|
+
if default is not None:
|
|
55
|
+
depends_on.extend(_cll_expression(default, default_table).depends_on)
|
|
55
56
|
type = 'derived' if depends_on else 'source'
|
|
56
57
|
return ColumnLevelDependencyColumn(type=type, depends_on=depends_on)
|
|
57
58
|
elif isinstance(expression, If):
|
|
@@ -85,6 +86,13 @@ def _cll_expression(expression, default_table) -> ColumnLevelDependencyColumn:
|
|
|
85
86
|
depends_on = _cll_expression(expression.this, default_table).depends_on
|
|
86
87
|
type = 'derived' if depends_on else 'source'
|
|
87
88
|
return ColumnLevelDependencyColumn(type=type, depends_on=depends_on)
|
|
89
|
+
elif expression.expressions:
|
|
90
|
+
depends_on = []
|
|
91
|
+
for expr in expression.expressions:
|
|
92
|
+
depends_on_one = _cll_expression(expr, default_table).depends_on
|
|
93
|
+
depends_on.extend(depends_on_one)
|
|
94
|
+
type = 'derived' if depends_on else 'source'
|
|
95
|
+
return ColumnLevelDependencyColumn(type=type, depends_on=depends_on)
|
|
88
96
|
else:
|
|
89
97
|
depends_on = []
|
|
90
98
|
return ColumnLevelDependencyColumn(type='source', depends_on=depends_on)
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce_nightly.egg-info/SOURCES.txt
RENAMED
|
@@ -61,6 +61,8 @@ recce/data/_next/static/chunks/app/_not-found/page-c2ee18b5ec3e3d57.js
|
|
|
61
61
|
recce/data/_next/static/chunks/pages/_app-ff7f75fed61fbef3.js
|
|
62
62
|
recce/data/_next/static/chunks/pages/_error-5e587f051118d074.js
|
|
63
63
|
recce/data/_next/static/css/1d7428fe54fca42f.css
|
|
64
|
+
recce/data/_next/static/hJPyciGzo_u9ecuwxXUJf/_buildManifest.js
|
|
65
|
+
recce/data/_next/static/hJPyciGzo_u9ecuwxXUJf/_ssgManifest.js
|
|
64
66
|
recce/data/_next/static/media/montserrat-cyrillic-800-normal.5c8b3804.woff
|
|
65
67
|
recce/data/_next/static/media/montserrat-cyrillic-800-normal.c03acce9.woff2
|
|
66
68
|
recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.83d3554a.woff2
|
|
@@ -71,8 +73,6 @@ recce/data/_next/static/media/montserrat-latin-ext-800-normal.40cba3c6.woff
|
|
|
71
73
|
recce/data/_next/static/media/montserrat-latin-ext-800-normal.85728e97.woff2
|
|
72
74
|
recce/data/_next/static/media/montserrat-vietnamese-800-normal.0bd05041.woff
|
|
73
75
|
recce/data/_next/static/media/montserrat-vietnamese-800-normal.dfbbc7ba.woff2
|
|
74
|
-
recce/data/_next/static/yhRltmKeCHagogYcUQFyx/_buildManifest.js
|
|
75
|
-
recce/data/_next/static/yhRltmKeCHagogYcUQFyx/_ssgManifest.js
|
|
76
76
|
recce/data/imgs/feedback/thumbs-down.png
|
|
77
77
|
recce/data/imgs/feedback/thumbs-up.png
|
|
78
78
|
recce/data/logo/recce-logo-white.png
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.56.0.20250302
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/adapter/sqlmesh_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/data/logo/recce-logo-white.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce/util/pydantic_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce_nightly.egg-info/requires.txt
RENAMED
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/recce_nightly.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_histogram.py
RENAMED
|
File without changes
|
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_preset_checks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_row_count.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recce_nightly-0.56.0.20250302 → recce_nightly-0.56.0.20250303}/tests/tasks/test_valuediff.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|