recce-nightly 1.1.0.20250423__tar.gz → 1.1.0.20250424__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.

Potentially problematic release.


This version of recce-nightly might be problematic. Click here for more details.

Files changed (148) hide show
  1. recce_nightly-1.1.0.20250424/PKG-INFO +170 -0
  2. recce_nightly-1.1.0.20250424/README.md +108 -0
  3. recce_nightly-1.1.0.20250424/recce/VERSION +1 -0
  4. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/adapter/dbt_adapter/__init__.py +11 -1
  5. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/404.html +1 -1
  6. recce_nightly-1.1.0.20250423/recce/data/_next/static/chunks/app/page-03812768be89e01f.js → recce_nightly-1.1.0.20250424/recce/data/_next/static/chunks/app/page-9f5bd0b3ba651c06.js +1 -1
  7. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/index.html +2 -2
  8. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/index.txt +2 -2
  9. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/summary.py +6 -6
  10. recce_nightly-1.1.0.20250424/recce_nightly.egg-info/PKG-INFO +170 -0
  11. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce_nightly.egg-info/SOURCES.txt +3 -3
  12. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/adapter/dbt_adapter/test_selector.py +24 -0
  13. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/test_summary.py +5 -1
  14. recce_nightly-1.1.0.20250423/PKG-INFO +0 -311
  15. recce_nightly-1.1.0.20250423/README.md +0 -249
  16. recce_nightly-1.1.0.20250423/recce/VERSION +0 -1
  17. recce_nightly-1.1.0.20250423/recce_nightly.egg-info/PKG-INFO +0 -311
  18. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/LICENSE +0 -0
  19. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/__init__.py +0 -0
  20. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/adapter/__init__.py +0 -0
  21. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/adapter/base.py +0 -0
  22. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/adapter/dbt_adapter/dbt_version.py +0 -0
  23. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/adapter/sqlmesh_adapter.py +0 -0
  24. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/apis/__init__.py +0 -0
  25. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/apis/check_api.py +0 -0
  26. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/apis/check_func.py +0 -0
  27. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/apis/run_api.py +0 -0
  28. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/apis/run_func.py +0 -0
  29. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/artifact.py +0 -0
  30. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/cli.py +0 -0
  31. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/config.py +0 -0
  32. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/core.py +0 -0
  33. {recce_nightly-1.1.0.20250423/recce/data/_next/static/T34yldfDFE5_4DZpMyVFS → recce_nightly-1.1.0.20250424/recce/data/_next/static/DRMRvxRKQ6OyHDT9ZFgid}/_buildManifest.js +0 -0
  34. {recce_nightly-1.1.0.20250423/recce/data/_next/static/T34yldfDFE5_4DZpMyVFS → recce_nightly-1.1.0.20250424/recce/data/_next/static/DRMRvxRKQ6OyHDT9ZFgid}/_ssgManifest.js +0 -0
  35. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/1f229bf6-d9fe92e56db8d93b.js +0 -0
  36. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/29e3cc0d-8c150e37dff9631b.js +0 -0
  37. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/36e1c10d-bb0210cbd6573a8d.js +0 -0
  38. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/3998a672-eaad84bdd88cc73e.js +0 -0
  39. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/450c323b-1bb5db526e54435a.js +0 -0
  40. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/47d8844f-79a1b53c66a7d7ec.js +0 -0
  41. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/6dc81886-c94b9b91bc2c3caf.js +0 -0
  42. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/700-3b65fc3666820d00.js +0 -0
  43. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/7a8a3e83-d7fa409d97b38b2b.js +0 -0
  44. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/7f27ae6c-413f6b869a04183a.js +0 -0
  45. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/831-dcc439bb9b7d5f8d.js +0 -0
  46. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/9746af58-d74bef4d03eea6ab.js +0 -0
  47. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/a30376cd-7d806e1602f2dc3a.js +0 -0
  48. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/app/_not-found/page-8a886fa0855c3105.js +0 -0
  49. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/app/layout-9102e22cb73f74d6.js +0 -0
  50. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/b63b1b3f-7395c74e11a14e95.js +0 -0
  51. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/c132bf7d-8102037f9ccf372a.js +0 -0
  52. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/c1ceaa8b-a1e442154d23515e.js +0 -0
  53. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/cd9f8d63-cf0d5a7b0f7a92e8.js +0 -0
  54. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/ce84277d-f42c2c58049cea2d.js +0 -0
  55. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/e24bf851-0f8cbc99656833e7.js +0 -0
  56. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/fee69bc6-f17d36c080742e74.js +0 -0
  57. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/framework-ded83d71b51ce901.js +0 -0
  58. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/main-a0859f1f36d0aa6c.js +0 -0
  59. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/main-app-0225a2255968e566.js +0 -0
  60. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/pages/_app-d5672bf3d8b6371b.js +0 -0
  61. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/pages/_error-ed75be3f25588548.js +0 -0
  62. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  63. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/chunks/webpack-567d72f0bc0820d5.js +0 -0
  64. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/css/c9ecb46a4b21c126.css +0 -0
  65. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.22628180.woff2 +0 -0
  66. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.31d693bb.woff +0 -0
  67. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.7e2c1e62.woff +0 -0
  68. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.94a63aea.woff2 +0 -0
  69. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-latin-800-normal.6f8fa298.woff2 +0 -0
  70. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-latin-800-normal.97e20d5e.woff +0 -0
  71. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2 +0 -0
  72. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.aff52ab0.woff +0 -0
  73. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.5f21869b.woff +0 -0
  74. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2 +0 -0
  75. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/favicon.ico +0 -0
  76. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/imgs/feedback/thumbs-down.png +0 -0
  77. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/imgs/feedback/thumbs-up.png +0 -0
  78. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/data/logo/recce-logo-white.png +0 -0
  79. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/diff.py +0 -0
  80. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/event/CONFIG +0 -0
  81. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/event/SENTRY_DNS +0 -0
  82. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/event/__init__.py +0 -0
  83. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/event/collector.py +0 -0
  84. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/event/track.py +0 -0
  85. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/exceptions.py +0 -0
  86. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/git.py +0 -0
  87. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/github.py +0 -0
  88. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/models/__init__.py +0 -0
  89. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/models/check.py +0 -0
  90. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/models/run.py +0 -0
  91. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/models/types.py +0 -0
  92. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/pull_request.py +0 -0
  93. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/run.py +0 -0
  94. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/server.py +0 -0
  95. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/state.py +0 -0
  96. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/__init__.py +0 -0
  97. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/core.py +0 -0
  98. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/dataframe.py +0 -0
  99. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/histogram.py +0 -0
  100. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/lineage.py +0 -0
  101. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/profile.py +0 -0
  102. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/query.py +0 -0
  103. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/rowcount.py +0 -0
  104. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/schema.py +0 -0
  105. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/top_k.py +0 -0
  106. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/tasks/valuediff.py +0 -0
  107. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/__init__.py +0 -0
  108. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/breaking.py +0 -0
  109. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/cache.py +0 -0
  110. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/cll.py +0 -0
  111. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/io.py +0 -0
  112. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/lineage.py +0 -0
  113. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/logger.py +0 -0
  114. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/pydantic_model.py +0 -0
  115. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/recce_cloud.py +0 -0
  116. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/util/singleton.py +0 -0
  117. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce/yaml/__init__.py +0 -0
  118. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce_nightly.egg-info/dependency_links.txt +0 -0
  119. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce_nightly.egg-info/entry_points.txt +0 -0
  120. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce_nightly.egg-info/requires.txt +0 -0
  121. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/recce_nightly.egg-info/top_level.txt +0 -0
  122. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/setup.cfg +0 -0
  123. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/setup.py +0 -0
  124. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/__init__.py +0 -0
  125. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/adapter/__init__.py +0 -0
  126. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/adapter/dbt_adapter/__init__.py +0 -0
  127. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/adapter/dbt_adapter/conftest.py +0 -0
  128. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -0
  129. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -0
  130. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/adapter/dbt_adapter/test_dbt_cll.py +0 -0
  131. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/__init__.py +0 -0
  132. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/conftest.py +0 -0
  133. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_histogram.py +0 -0
  134. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_lineage.py +0 -0
  135. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_preset_checks.py +0 -0
  136. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_profile.py +0 -0
  137. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_query.py +0 -0
  138. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_row_count.py +0 -0
  139. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_schema.py +0 -0
  140. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_top_k.py +0 -0
  141. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/tasks/test_valuediff.py +0 -0
  142. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/test_cli.py +0 -0
  143. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/test_config.py +0 -0
  144. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/test_core.py +0 -0
  145. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/test_dbt.py +0 -0
  146. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/test_pull_request.py +0 -0
  147. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/test_server.py +0 -0
  148. {recce_nightly-1.1.0.20250423 → recce_nightly-1.1.0.20250424}/tests/test_state.py +0 -0
@@ -0,0 +1,170 @@
1
+ Metadata-Version: 2.4
2
+ Name: recce-nightly
3
+ Version: 1.1.0.20250424
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">Helping data teams preview, validate, and ship data changes with confidence.</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> &nbsp;
77
+ <a href="https://pypi.org/project/recce/"><img src="https://img.shields.io/pypi/v/recce?style=flat-square" alt="pipy"></a> &nbsp;
78
+ <a href="https://pypi.org/project/recce/"><img src="https://img.shields.io/pypi/pyversions/recce?style=flat-square" alt="Python"></a> &nbsp;
79
+ <a href="https://pypi.org/project/recce/#files"><img src="https://img.shields.io/pypi/dw/recce?style=flat-square" alt="downloads"></a> &nbsp;
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> &nbsp;
81
+ <a href="https://getdbt.slack.com/archives/C05C28V7CPP"><img src="https://img.shields.io/badge/Slack-4A154B?style=flat-square&amp;logo=slack&amp;logoColor=white" alt="Slack"></a> &nbsp;
82
+ <a href="https://discord.com/invite/5zb2aK9KBV"><img src="https://img.shields.io/discord/664381609771925514?color=%237289DA&amp;label=chat&amp;logo=discord&amp;logoColor=white&amp;style=flat-square" alt="InfuseAI Discord Invite"></a> &nbsp;
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
+ ## Trust, Verify, Ship
92
+ Cut dbt review time by 90% and ship accurate data fast
93
+
94
+ Recce gives data teams a faster, more reliable way to understand, review, and ship changes without all the guesswork or manual overhead.
95
+
96
+ ## Quick Start
97
+ You can launch Recce in any dbt project in just two commands:
98
+
99
+ ```Bash
100
+ # cd into your dbt project
101
+ pip install -U recce
102
+ recce server
103
+ ```
104
+ This starts Recce locally, where you can explore lineage and run queries. To unlock the full set of diffing tools, such as data comparisons and impact checks, you’ll need to prepare two environments to compare against. You can follow our [Getting Started](https://docs.datarecce.io/get-started/) and [5-minute Jaffle Shop tutorial](https://docs.datarecce.io/get-started-jaffle-shop/) to try it out step-by-step.
105
+
106
+ ## What You Get
107
+
108
+ Recce gives you a clear, fast way to understand what your data changes are doing and why they matter. It helps you catch problems early, verify metrics, and share your findings with others, all as part of your normal workflow.
109
+
110
+ <a href="https://pr46.demo.datarecce.io/"><img width="1347" alt="readme" src="https://github.com/user-attachments/assets/773e4c3a-0a15-49e0-8d1b-38a55af17cb0" /></a>
111
+
112
+ <a href="https://datarecce.io"><img src="https://docs.datarecce.io/assets/images/home/diff-readme2.png" style="width: 100%; max-width: 600px; display: block; margin: 0 auto 20px;" alt="Model and column level diff"/></a>
113
+
114
+ <a href="https://datarecce.io"><img src="https://docs.datarecce.io/assets/images/home/checklist-readme3.png" style="width: 100%; max-width: 600px; display: block; margin: 0 auto 20px;" alt="Checklist for collaboration"/></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
+ ### What’s Included
129
+
130
+ - [Lineage and impact mapping](https://docs.datarecce.io/features/lineage/): Quickly see which models and columns are affected by a change. Navigate lineage down to the column level, and spot breaking changes with clear visual cues.
131
+ - Metric and data comparisons: Use [Profile, Value, Top-K, and Histogram Diffs](https://docs.datarecce.io/features/lineage/#node-details) to compare results before and after changes. Validate things like row counts, category distributions, and numeric ranges without writing extra SQL.
132
+ - [Query diff](https://docs.datarecce.io/features/query/): Write and compare any two queries side by side. This is helpful when validating fixes or reviewing changes with teammates.
133
+ - [Checklist for reviews and approvals](https://docs.datarecce.io/features/checklist/): Turn your validation steps into a checklist. Add notes, rerun checks, and share the results with reviewers or stakeholders. In Recce Cloud, checklists can sync automatically and even block PRs until checks are approved.
134
+ - Secure by design: Recce is [SOC 2 compliant](https://trust.cloud.datarecce.io/) to meet enterprise security standards. It runs locally or in your private environment, and your data stays in your warehouse.
135
+
136
+ 👉 Want to dive deeper? Check out the [full documentation](https://docs.datarecce.io/) like [running Recce in CI/CD](https://docs.datarecce.io/guides/scenario-ci/)
137
+
138
+ ## Recce Cloud
139
+
140
+ Ready to collaborate and move faster as a team? Recce Cloud adds real-time collaboration, automatic checklist sync, and PR gating, so nothing gets merged without a full review.
141
+
142
+ - Share checklists across environments
143
+ - Invite stakeholders to review data changes
144
+ - Block merges until all Checks are approved
145
+ - Launch demo links from your CI with full context
146
+
147
+ Recce Cloud is a hosted version of Recce that standardizes your workflow, keeps teams aligned, and reduces errors—so you can ship data changes with confidence.
148
+ 👉 [View Pricing and Plans](https://datarecce.io/pricing)
149
+
150
+ ## Community & Support
151
+
152
+ Here's where you can get in touch with the Recce team and find support:
153
+
154
+ - [dbt Slack](https://www.getdbt.com/community/join-the-community) in
155
+ the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
156
+ - Email us [product@datarecce.io](mailto:product@datarecce.io)
157
+
158
+ If you believe you have found a bug, or there is some missing functionality in Recce, please open
159
+ a [GitHub Issue](https://github.com/DataRecce/recce/issues).
160
+
161
+ ## Recce on the web
162
+
163
+ You can follow along with news about Recce and blogs from our team in the following places:
164
+
165
+ - [DataRecce.io](https://DataRecce.io)
166
+ - [LinkedIn](https://www.linkedin.com/company/datarecce)
167
+ - [Medium blog](https://medium.com/inthepipeline)
168
+ - [@datarecce](https://x.com/DataRecce) on Twitter/X
169
+ - [@DataRecce@mastodon.social](https://mastodon.social/@DataRecce) on Mastodon
170
+ - [@datarecce.bsky.social](https://bsky.app/profile/datarecce.bsky.social) on BlueSky
@@ -0,0 +1,108 @@
1
+ <p align="center">
2
+ <a href="https://datarecce.io">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://datarecce.io/assets/images/recce-logo-stacked.png">
5
+ <source media="(prefers-color-scheme: light)" srcset="https://datarecce.io/assets/images/recce-logo-stacked.png">
6
+ <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;">
7
+ </picture>
8
+ </a>
9
+ </p>
10
+
11
+ <h3 align="center">Helping data teams preview, validate, and ship data changes with confidence.</h3>
12
+
13
+ <p align="center">
14
+ <a href="https://pypi.org/project/recce/"><img src="https://img.shields.io/badge/pip_install-recce-006DAD?style=flat-square" alt="install"></a> &nbsp;
15
+ <a href="https://pypi.org/project/recce/"><img src="https://img.shields.io/pypi/v/recce?style=flat-square" alt="pipy"></a> &nbsp;
16
+ <a href="https://pypi.org/project/recce/"><img src="https://img.shields.io/pypi/pyversions/recce?style=flat-square" alt="Python"></a> &nbsp;
17
+ <a href="https://pypi.org/project/recce/#files"><img src="https://img.shields.io/pypi/dw/recce?style=flat-square" alt="downloads"></a> &nbsp;
18
+ <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> &nbsp;
19
+ <a href="https://getdbt.slack.com/archives/C05C28V7CPP"><img src="https://img.shields.io/badge/Slack-4A154B?style=flat-square&amp;logo=slack&amp;logoColor=white" alt="Slack"></a> &nbsp;
20
+ <a href="https://discord.com/invite/5zb2aK9KBV"><img src="https://img.shields.io/discord/664381609771925514?color=%237289DA&amp;label=chat&amp;logo=discord&amp;logoColor=white&amp;style=flat-square" alt="InfuseAI Discord Invite"></a> &nbsp;
21
+ </p>
22
+
23
+ <p align="center">
24
+ <a href="https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss">
25
+ <img alt="Book us with Cal.com" src="https://cal.com/book-with-cal-light.svg" />
26
+ </a>
27
+ </p>
28
+
29
+ ## Trust, Verify, Ship
30
+ Cut dbt review time by 90% and ship accurate data fast
31
+
32
+ Recce gives data teams a faster, more reliable way to understand, review, and ship changes without all the guesswork or manual overhead.
33
+
34
+ ## Quick Start
35
+ You can launch Recce in any dbt project in just two commands:
36
+
37
+ ```Bash
38
+ # cd into your dbt project
39
+ pip install -U recce
40
+ recce server
41
+ ```
42
+ This starts Recce locally, where you can explore lineage and run queries. To unlock the full set of diffing tools, such as data comparisons and impact checks, you’ll need to prepare two environments to compare against. You can follow our [Getting Started](https://docs.datarecce.io/get-started/) and [5-minute Jaffle Shop tutorial](https://docs.datarecce.io/get-started-jaffle-shop/) to try it out step-by-step.
43
+
44
+ ## What You Get
45
+
46
+ Recce gives you a clear, fast way to understand what your data changes are doing and why they matter. It helps you catch problems early, verify metrics, and share your findings with others, all as part of your normal workflow.
47
+
48
+ <a href="https://pr46.demo.datarecce.io/"><img width="1347" alt="readme" src="https://github.com/user-attachments/assets/773e4c3a-0a15-49e0-8d1b-38a55af17cb0" /></a>
49
+
50
+ <a href="https://datarecce.io"><img src="https://docs.datarecce.io/assets/images/home/diff-readme2.png" style="width: 100%; max-width: 600px; display: block; margin: 0 auto 20px;" alt="Model and column level diff"/></a>
51
+
52
+ <a href="https://datarecce.io"><img src="https://docs.datarecce.io/assets/images/home/checklist-readme3.png" style="width: 100%; max-width: 600px; display: block; margin: 0 auto 20px;" alt="Checklist for collaboration"/></a>
53
+
54
+ ### Using Recce for Impact Assessment in dbt PR Review
55
+
56
+ - Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR
57
+ review.
58
+ - Add Checks to your Checklist to note observed impacts.
59
+ - Share your Checklist with the PR reviewer.
60
+ - (`Recce Cloud`) Automatically sync Check status between Recce Instances
61
+ - (`Recce Cloud`) Block PR merging until all Recce Checks have been approved
62
+
63
+ Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on
64
+ the Recce blog.
65
+
66
+ ### What’s Included
67
+
68
+ - [Lineage and impact mapping](https://docs.datarecce.io/features/lineage/): Quickly see which models and columns are affected by a change. Navigate lineage down to the column level, and spot breaking changes with clear visual cues.
69
+ - Metric and data comparisons: Use [Profile, Value, Top-K, and Histogram Diffs](https://docs.datarecce.io/features/lineage/#node-details) to compare results before and after changes. Validate things like row counts, category distributions, and numeric ranges without writing extra SQL.
70
+ - [Query diff](https://docs.datarecce.io/features/query/): Write and compare any two queries side by side. This is helpful when validating fixes or reviewing changes with teammates.
71
+ - [Checklist for reviews and approvals](https://docs.datarecce.io/features/checklist/): Turn your validation steps into a checklist. Add notes, rerun checks, and share the results with reviewers or stakeholders. In Recce Cloud, checklists can sync automatically and even block PRs until checks are approved.
72
+ - Secure by design: Recce is [SOC 2 compliant](https://trust.cloud.datarecce.io/) to meet enterprise security standards. It runs locally or in your private environment, and your data stays in your warehouse.
73
+
74
+ 👉 Want to dive deeper? Check out the [full documentation](https://docs.datarecce.io/) like [running Recce in CI/CD](https://docs.datarecce.io/guides/scenario-ci/)
75
+
76
+ ## Recce Cloud
77
+
78
+ Ready to collaborate and move faster as a team? Recce Cloud adds real-time collaboration, automatic checklist sync, and PR gating, so nothing gets merged without a full review.
79
+
80
+ - Share checklists across environments
81
+ - Invite stakeholders to review data changes
82
+ - Block merges until all Checks are approved
83
+ - Launch demo links from your CI with full context
84
+
85
+ Recce Cloud is a hosted version of Recce that standardizes your workflow, keeps teams aligned, and reduces errors—so you can ship data changes with confidence.
86
+ 👉 [View Pricing and Plans](https://datarecce.io/pricing)
87
+
88
+ ## Community & Support
89
+
90
+ Here's where you can get in touch with the Recce team and find support:
91
+
92
+ - [dbt Slack](https://www.getdbt.com/community/join-the-community) in
93
+ the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
94
+ - Email us [product@datarecce.io](mailto:product@datarecce.io)
95
+
96
+ If you believe you have found a bug, or there is some missing functionality in Recce, please open
97
+ a [GitHub Issue](https://github.com/DataRecce/recce/issues).
98
+
99
+ ## Recce on the web
100
+
101
+ You can follow along with news about Recce and blogs from our team in the following places:
102
+
103
+ - [DataRecce.io](https://DataRecce.io)
104
+ - [LinkedIn](https://www.linkedin.com/company/datarecce)
105
+ - [Medium blog](https://medium.com/inthepipeline)
106
+ - [@datarecce](https://x.com/DataRecce) on Twitter/X
107
+ - [@DataRecce@mastodon.social](https://mastodon.social/@DataRecce) on Mastodon
108
+ - [@datarecce.bsky.social](https://bsky.app/profile/datarecce.bsky.social) on BlueSky
@@ -0,0 +1 @@
1
+ 1.1.0.20250424
@@ -1207,7 +1207,17 @@ class DbtAdapter(BaseAdapter):
1207
1207
  manifest_prev = self.previous_state.manifest
1208
1208
  manifest_curr = self.manifest
1209
1209
 
1210
- manifest.nodes = {**manifest_prev.nodes, **manifest_curr.nodes}
1210
+ manifest.nodes = {**manifest_curr.nodes}
1211
+ # # mark a node is removed if the node id is no in the curr nodes
1212
+ for node_id, node in manifest_prev.nodes.items():
1213
+ if node_id not in manifest.nodes:
1214
+ node_dict = node.to_dict()
1215
+ if 'raw_code' in node_dict:
1216
+ node_dict['raw_code'] = "__removed__"
1217
+ node_class = type(node)
1218
+ removed_node = node_class.from_dict(node_dict)
1219
+ manifest.nodes[node_id] = removed_node
1220
+
1211
1221
  manifest.macros = {**manifest_prev.macros, **manifest_curr.macros}
1212
1222
  manifest.sources = {**manifest_prev.sources, **manifest_curr.sources}
1213
1223
  manifest.exposures = {**manifest_prev.exposures, **manifest_curr.exposures}
@@ -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-567d72f0bc0820d5.js"/><script src="/_next/static/chunks/1f229bf6-d9fe92e56db8d93b.js" async=""></script><script src="/_next/static/chunks/700-3b65fc3666820d00.js" async=""></script><script src="/_next/static/chunks/main-app-0225a2255968e566.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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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-567d72f0bc0820d5.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[37194,[],\"\"]\n3:I[79137,[],\"\"]\n4:I[63846,[],\"\"]\na:I[67160,[],\"\"]\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\":\"T34yldfDFE5_4DZpMyVFS\",\"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>
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-567d72f0bc0820d5.js"/><script src="/_next/static/chunks/1f229bf6-d9fe92e56db8d93b.js" async=""></script><script src="/_next/static/chunks/700-3b65fc3666820d00.js" async=""></script><script src="/_next/static/chunks/main-app-0225a2255968e566.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,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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-567d72f0bc0820d5.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[37194,[],\"\"]\n3:I[79137,[],\"\"]\n4:I[63846,[],\"\"]\na:I[67160,[],\"\"]\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\":\"DRMRvxRKQ6OyHDT9ZFgid\",\"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>