recce-nightly 0.56.0.20250226__tar.gz → 0.56.0.20250227__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.
Files changed (145) hide show
  1. {recce_nightly-0.56.0.20250226/recce_nightly.egg-info → recce_nightly-0.56.0.20250227}/PKG-INFO +64 -48
  2. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/README.md +64 -48
  3. recce_nightly-0.56.0.20250227/recce/VERSION +1 -0
  4. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/dbt_adapter/__init__.py +3 -2
  5. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/404.html +1 -1
  6. recce_nightly-0.56.0.20250226/recce/data/_next/static/chunks/323-9565a741f1447d32.js → recce_nightly-0.56.0.20250227/recce/data/_next/static/chunks/771-71780b322a32673c.js +16 -16
  7. recce_nightly-0.56.0.20250227/recce/data/_next/static/chunks/a30376cd-de90859763d1c500.js +1 -0
  8. recce_nightly-0.56.0.20250227/recce/data/_next/static/chunks/app/page-edc85fe647299e04.js +1 -0
  9. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/index.html +2 -2
  10. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/index.txt +2 -2
  11. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/cll.py +7 -4
  12. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227/recce_nightly.egg-info}/PKG-INFO +64 -48
  13. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/SOURCES.txt +5 -5
  14. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_schema.py +6 -0
  15. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_dbt.py +33 -15
  16. recce_nightly-0.56.0.20250226/recce/VERSION +0 -1
  17. recce_nightly-0.56.0.20250226/recce/data/_next/static/chunks/a30376cd-ea4617387c84b12e.js +0 -1
  18. recce_nightly-0.56.0.20250226/recce/data/_next/static/chunks/app/page-cbfaebac7904d946.js +0 -1
  19. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/LICENSE +0 -0
  20. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/__init__.py +0 -0
  21. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/__init__.py +0 -0
  22. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/base.py +0 -0
  23. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/dbt_adapter/dbt_version.py +0 -0
  24. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/sqlmesh_adapter.py +0 -0
  25. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/__init__.py +0 -0
  26. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/check_api.py +0 -0
  27. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/check_func.py +0 -0
  28. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/run_api.py +0 -0
  29. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/run_func.py +0 -0
  30. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/artifact.py +0 -0
  31. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/cli.py +0 -0
  32. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/config.py +0 -0
  33. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/core.py +0 -0
  34. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/157e448a-49151cad1ec51175.js +0 -0
  35. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/29e3cc0d-490dbff344996865.js +0 -0
  36. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/312-3e9b49b718b98737.js +0 -0
  37. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/36e1c10d-3bcdd9bb8564108c.js +0 -0
  38. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/3998a672-e71829c331c77ccb.js +0 -0
  39. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/450c323b-79414be6f43ef15c.js +0 -0
  40. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/47d8844f-ccb4e71fbabd12f3.js +0 -0
  41. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/6dc81886-03da5372308c376d.js +0 -0
  42. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/7a8a3e83-f7fe5f14c56108bf.js +0 -0
  43. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/7f27ae6c-c484e79185298424.js +0 -0
  44. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/868e7b5c-36d94ba5a58a2e6a.js +0 -0
  45. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/9746af58-daab848e55b5faf7.js +0 -0
  46. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/app/_not-found/page-c2ee18b5ec3e3d57.js +0 -0
  47. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/app/layout-5b30ab0207459cb8.js +0 -0
  48. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/b3b1872b-97ea0be5bd9b42bc.js +0 -0
  49. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/b63b1b3f-13deddaaba264453.js +0 -0
  50. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/c132bf7d-740a7144e614cb2d.js +0 -0
  51. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/ce84277d-ced9559f73764a27.js +0 -0
  52. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/cf0511cf-88e5bf54e88504a3.js +0 -0
  53. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/fee69bc6-2cf346c884a74e9d.js +0 -0
  54. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/framework-ded83d71b51ce901.js +0 -0
  55. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/main-45628b9d5f140527.js +0 -0
  56. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/main-app-19c0918a6bb54549.js +0 -0
  57. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/pages/_app-ff7f75fed61fbef3.js +0 -0
  58. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/pages/_error-5e587f051118d074.js +0 -0
  59. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  60. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/webpack-300961f547f48fe7.js +0 -0
  61. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/css/1d7428fe54fca42f.css +0 -0
  62. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.5c8b3804.woff +0 -0
  63. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.c03acce9.woff2 +0 -0
  64. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.83d3554a.woff2 +0 -0
  65. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.8a4a9645.woff +0 -0
  66. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-latin-800-normal.388abfc2.woff2 +0 -0
  67. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-latin-800-normal.e7b55ea8.woff +0 -0
  68. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.40cba3c6.woff +0 -0
  69. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.85728e97.woff2 +0 -0
  70. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.0bd05041.woff +0 -0
  71. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.dfbbc7ba.woff2 +0 -0
  72. {recce_nightly-0.56.0.20250226/recce/data/_next/static/VoDYiUXoc7vMf5GJnfqdi → recce_nightly-0.56.0.20250227/recce/data/_next/static/rQ7Tqp0WxQV1LCcOMdNrh}/_buildManifest.js +0 -0
  73. {recce_nightly-0.56.0.20250226/recce/data/_next/static/VoDYiUXoc7vMf5GJnfqdi → recce_nightly-0.56.0.20250227/recce/data/_next/static/rQ7Tqp0WxQV1LCcOMdNrh}/_ssgManifest.js +0 -0
  74. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/favicon.ico +0 -0
  75. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/imgs/feedback/thumbs-down.png +0 -0
  76. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/imgs/feedback/thumbs-up.png +0 -0
  77. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/logo/recce-logo-white.png +0 -0
  78. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/diff.py +0 -0
  79. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/CONFIG +0 -0
  80. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/SENTRY_DNS +0 -0
  81. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/__init__.py +0 -0
  82. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/collector.py +0 -0
  83. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/track.py +0 -0
  84. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/exceptions.py +0 -0
  85. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/git.py +0 -0
  86. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/github.py +0 -0
  87. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/models/__init__.py +0 -0
  88. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/models/check.py +0 -0
  89. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/models/run.py +0 -0
  90. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/models/types.py +0 -0
  91. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/pull_request.py +0 -0
  92. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/run.py +0 -0
  93. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/server.py +0 -0
  94. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/state.py +0 -0
  95. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/summary.py +0 -0
  96. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/__init__.py +0 -0
  97. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/core.py +0 -0
  98. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/dataframe.py +0 -0
  99. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/histogram.py +0 -0
  100. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/lineage.py +0 -0
  101. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/profile.py +0 -0
  102. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/query.py +0 -0
  103. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/rowcount.py +0 -0
  104. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/schema.py +0 -0
  105. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/top_k.py +0 -0
  106. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/valuediff.py +0 -0
  107. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/__init__.py +0 -0
  108. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/breaking.py +0 -0
  109. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/cache.py +0 -0
  110. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/io.py +0 -0
  111. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/logger.py +0 -0
  112. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/pydantic_model.py +0 -0
  113. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/recce_cloud.py +0 -0
  114. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/singleton.py +0 -0
  115. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/yaml/__init__.py +0 -0
  116. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/dependency_links.txt +0 -0
  117. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/entry_points.txt +0 -0
  118. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/requires.txt +0 -0
  119. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/top_level.txt +0 -0
  120. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/setup.cfg +0 -0
  121. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/setup.py +0 -0
  122. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/__init__.py +0 -0
  123. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/__init__.py +0 -0
  124. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/__init__.py +0 -0
  125. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/conftest.py +0 -0
  126. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -0
  127. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -0
  128. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/test_selector.py +0 -0
  129. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/__init__.py +0 -0
  130. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/conftest.py +0 -0
  131. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_histogram.py +0 -0
  132. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_lineage.py +0 -0
  133. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_preset_checks.py +0 -0
  134. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_profile.py +0 -0
  135. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_query.py +0 -0
  136. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_row_count.py +0 -0
  137. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_top_k.py +0 -0
  138. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_valuediff.py +0 -0
  139. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_cli.py +0 -0
  140. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_config.py +0 -0
  141. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_core.py +0 -0
  142. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_pull_request.py +0 -0
  143. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_server.py +0 -0
  144. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_state.py +0 -0
  145. {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_summary.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: recce-nightly
3
- Version: 0.56.0.20250226
3
+ Version: 0.56.0.20250227
4
4
  Summary: Environment diff tool for dbt
5
5
  Home-page: https://github.com/InfuseAI/recce
6
6
  Author: InfuseAI Dev Team
@@ -89,32 +89,22 @@ Dynamic: summary
89
89
 
90
90
  ## Introduction
91
91
 
92
- `Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your team’s dbt modeling changes impact data by comparing your dev branch with stable production data. Run manual data checks during development, and automate checks in CI for PR review.
93
-
92
+ `Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your
93
+ team’s dbt modeling changes impact data by comparing your dev branch with stable production data. Run manual data checks
94
+ during development, and automate checks in CI for PR review.
94
95
 
95
96
  ## Quick Start
96
97
 
97
- Get up and running quickly by prepping your dev and prod environments. The key is building prod into the `target-base` folder to use as the base for the data comparison.
98
+ You can launch Recce in any dbt project in just two commands:
98
99
 
99
100
  ```Bash
100
- # Build prod and generate dbt docs into ./target-base
101
- dbt seed --target prod
102
- dbt run --target prod
103
- dbt docs generate --target prod --target-path ./target-base
104
-
105
- # Switch to your dev branch
106
- git switch my-awesome-branch
107
-
108
- # build your dev environment
109
- dbt seed
110
- dbt run
111
- dbt docs generate
112
-
113
- # Start a Recce Instance
101
+ # cd into your dbt project
102
+ pip install -U recce
114
103
  recce server
115
104
  ```
116
105
 
117
- Follow our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) to try it out for yourself.
106
+ To use the full suite of diffing tools in Recce, please prepare two environments to compare against. Follow
107
+ our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) to try it out for yourself.
118
108
 
119
109
  ## What you get
120
110
 
@@ -124,18 +114,20 @@ Follow our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started
124
114
 
125
115
  ### Using Recce for Impact Assessment in dbt PR Review
126
116
 
127
- - Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR review.
117
+ - Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR
118
+ review.
128
119
  - Add Checks to your Checklist to note observed impacts.
129
120
  - Share your Checklist with the PR reviewer.
130
121
  - (`Recce Cloud`) Automatically sync Check status between Recce Instances
131
122
  - (`Recce Cloud`) Block PR merging until all Recce Checks have been approved
132
123
 
133
- Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on the Recce blog.
134
-
124
+ Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on
125
+ the Recce blog.
135
126
 
136
127
  ## Try the Online Demo
137
128
 
138
- We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos to inspect the data impact caused by the modeling changes in the PR.
129
+ We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos
130
+ to inspect the data impact caused by the modeling changes in the PR.
139
131
 
140
132
  For each demo, review the following:
141
133
 
@@ -146,8 +138,9 @@ For each demo, review the following:
146
138
  This will enable you to validate if the intention of the PR has been successfully implemented without unintended impact.
147
139
 
148
140
  > [!TIP]
149
- Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further investigation.
150
- >
141
+ > Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further
142
+ > investigation.
143
+ >
151
144
 
152
145
  ### Demo 1: Calculation logic change
153
146
 
@@ -158,22 +151,24 @@ This pull request adjusts the **logic** for how customer lifetime value is calcu
158
151
 
159
152
  ### Demo 2: Refactoring
160
153
 
161
- This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models, enhancing readability and maintainability:
154
+ This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models,
155
+ enhancing readability and maintainability:
162
156
 
163
157
  - [Demo #2](https://pr2.demo.datarecce.io/)
164
158
  - [Pull request #2](https://github.com/DataRecce/jaffle_shop_duckdb/pull/2)
165
159
 
166
160
  ### Demo 3: Analysis
167
161
 
168
- This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of rounding in our data processing.
162
+ This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of
163
+ rounding in our data processing.
169
164
 
170
165
  - [Demo #3](https://pr3.demo.datarecce.io/)
171
166
  - [Pull request #3](https://github.com/DataRecce/jaffle_shop_duckdb/pull/3)
172
167
 
173
-
174
168
  ### Demo 4: Enhancing the existing model
175
169
 
176
- This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as part of a promotion.
170
+ This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as
171
+ part of a promotion.
177
172
 
178
173
  - [Demo #4](https://pr44.demo.datarecce.io/)
179
174
  - [Pull request #44](https://github.com/DataRecce/jaffle_shop_duckdb/pull/44)
@@ -186,39 +181,51 @@ This pull request **enhances** the existing `customers` model by categorizing wh
186
181
  - Modular SQL
187
182
  - Reproducible pipelines
188
183
 
189
- Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve analytics opens dbt projects to many roles, and the size of dbt projects increase, the job of reviewing data modeling changes is even more critical.
184
+ Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve
185
+ analytics opens dbt projects to many roles, and the size of dbt projects increase, the job of reviewing data modeling
186
+ changes is even more critical.
190
187
 
191
188
  The only way to understand the impact of code changes on data is to compare the data before-and-after the changes.
192
189
 
193
190
  ## Features
194
191
 
195
- `Recce` provides a data review environment for data teams to check their work during development, and then again as part of PR review. The suite of tools and diffs in Recce are specifically geared towards surfacing, understanding, and recording data impact from code changes.
192
+ `Recce` provides a data review environment for data teams to check their work during development, and then again as part
193
+ of PR review. The suite of tools and diffs in Recce are specifically geared towards surfacing, understanding, and
194
+ recording data impact from code changes.
196
195
 
197
196
  ### Lineage Diff
198
197
 
199
- [Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in the lineage have been added, removed, or modified.
198
+ [Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in
199
+ the lineage have been added, removed, or modified.
200
200
 
201
201
  ### Structural Diffs
202
202
 
203
- - [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including added or removed columns
203
+ - [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including
204
+ added or removed columns
204
205
  - [Row Count Diff](https://datarecce.io/docs/features/lineage/#row-count-diff) - Compares the row count for tables
205
206
 
206
207
  ### Statistical Diffs
207
208
 
208
209
  Advanced Diffs provide high level statistics about data change:
209
210
 
210
- - [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct count, min, max, average.
211
- - [Value Diff](https://datarecce.io/docs/features/lineage/#value-diff): The matched count and percentage for each column in the table.
212
- - [Top-K Diff](https://datarecce.io/docs/features/lineage/#top-k-diff): Compares the distribution of a categorical column.
213
- - [Histogram Diff](https://datarecce.io/docs/features/lineage/#histogram-diff): Compares the distribution of a numeric column in an overlay histogram chart.
211
+ - [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct
212
+ count, min, max, average.
213
+ - [Value Diff](https://datarecce.io/docs/features/lineage/#value-diff): The matched count and percentage for each column
214
+ in the table.
215
+ - [Top-K Diff](https://datarecce.io/docs/features/lineage/#top-k-diff): Compares the distribution of a categorical
216
+ column.
217
+ - [Histogram Diff](https://datarecce.io/docs/features/lineage/#histogram-diff): Compares the distribution of a numeric
218
+ column in an overlay histogram chart.
214
219
 
215
220
  ### Query Diff
216
221
 
217
- [Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use of dbt macros.
222
+ [Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use
223
+ of dbt macros.
218
224
 
219
225
  ### Checklist
220
226
 
221
- The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data validation process.
227
+ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data
228
+ validation process.
222
229
 
223
230
  - Save the results of checks
224
231
  - Re-run checks
@@ -229,9 +236,11 @@ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to
229
236
 
230
237
  ## Who's using `Recce`?
231
238
 
232
- `Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with non-technical stakeholders to approve data checks.
239
+ `Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with
240
+ non-technical stakeholders to approve data checks.
233
241
 
234
- - **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact before merging.
242
+ - **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact
243
+ before merging.
235
244
  - **Analysts** can use `Recce` to self-review and understand how data modeling changes have changed the data.
236
245
  - **Stakeholders** can use `Recce` to sign-off on data after updates have been made
237
246
 
@@ -239,13 +248,16 @@ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to
239
248
 
240
249
  The [Recce Documentation](https://datarecce.io/docs/) covers everything you need to get started.
241
250
 
242
- We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle Shop and then [trying out Recce](https://datarecce.io/docs/get-started/) in your own project.
251
+ We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle
252
+ Shop and then [trying out Recce](https://datarecce.io/docs/get-started/) in your own project.
243
253
 
244
- For advice on best practices in preparing dbt environments to enable effective PR review, check out [Best Practices for Preparing Environments](https://datarecce.io/docs/guides/best-practices-prep-env/).
254
+ For advice on best practices in preparing dbt environments to enable effective PR review, check
255
+ out [Best Practices for Preparing Environments](https://datarecce.io/docs/guides/best-practices-prep-env/).
245
256
 
246
257
  ## Recce Cloud
247
258
 
248
- `Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing multiple pull requests.
259
+ `Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing
260
+ multiple pull requests.
249
261
 
250
262
  With `Recce Cloud`:
251
263
 
@@ -255,7 +267,8 @@ With `Recce Cloud`:
255
267
 
256
268
  [Recce Cloud](https://datarecce.io/cloud) is currently in early-access private beta.
257
269
 
258
- To find out how you can get access please [book an appointment](https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss) for a short meeting.
270
+ To find out how you can get access
271
+ please [book an appointment](https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss) for a short meeting.
259
272
 
260
273
  <a href="https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss">
261
274
  <img alt="Book us with [Cal.com](http://cal.com/)" src="https://cal.com/book-with-cal-light.svg" />
@@ -270,17 +283,20 @@ To find out how you can get access please [book an appointment](https://cal.com/
270
283
 
271
284
  For `Recce Cloud` users:
272
285
 
273
- - An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon `Recce Cloud`. This file is encrypted *before* transmission.
286
+ - An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon
287
+ `Recce Cloud`. This file is encrypted *before* transmission.
274
288
 
275
289
  ## Community & Support
276
290
 
277
291
  Here's where you can get in touch with the `Recce` team and find support:
278
292
 
279
- - [dbt Slack](https://www.getdbt.com/community/join-the-community) in the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
293
+ - [dbt Slack](https://www.getdbt.com/community/join-the-community) in
294
+ the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
280
295
  - [Recce Discord](https://discord.gg/VpwXRC34jz)
281
296
  - Email us [product@datarecce.io](mailto:product@datarecce.io)
282
297
 
283
- If you believe you have found a bug, or there is some missing functionality in Recce, please open a [GitHub Issue](https://github.com/DataRecce/recce/issues).
298
+ If you believe you have found a bug, or there is some missing functionality in Recce, please open
299
+ a [GitHub Issue](https://github.com/DataRecce/recce/issues).
284
300
 
285
301
  ## Recce on the web
286
302
 
@@ -28,32 +28,22 @@
28
28
 
29
29
  ## Introduction
30
30
 
31
- `Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your team’s dbt modeling changes impact data by comparing your dev branch with stable production data. Run manual data checks during development, and automate checks in CI for PR review.
32
-
31
+ `Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your
32
+ team’s dbt modeling changes impact data by comparing your dev branch with stable production data. Run manual data checks
33
+ during development, and automate checks in CI for PR review.
33
34
 
34
35
  ## Quick Start
35
36
 
36
- Get up and running quickly by prepping your dev and prod environments. The key is building prod into the `target-base` folder to use as the base for the data comparison.
37
+ You can launch Recce in any dbt project in just two commands:
37
38
 
38
39
  ```Bash
39
- # Build prod and generate dbt docs into ./target-base
40
- dbt seed --target prod
41
- dbt run --target prod
42
- dbt docs generate --target prod --target-path ./target-base
43
-
44
- # Switch to your dev branch
45
- git switch my-awesome-branch
46
-
47
- # build your dev environment
48
- dbt seed
49
- dbt run
50
- dbt docs generate
51
-
52
- # Start a Recce Instance
40
+ # cd into your dbt project
41
+ pip install -U recce
53
42
  recce server
54
43
  ```
55
44
 
56
- Follow our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) to try it out for yourself.
45
+ To use the full suite of diffing tools in Recce, please prepare two environments to compare against. Follow
46
+ our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) to try it out for yourself.
57
47
 
58
48
  ## What you get
59
49
 
@@ -63,18 +53,20 @@ Follow our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started
63
53
 
64
54
  ### Using Recce for Impact Assessment in dbt PR Review
65
55
 
66
- - Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR review.
56
+ - Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR
57
+ review.
67
58
  - Add Checks to your Checklist to note observed impacts.
68
59
  - Share your Checklist with the PR reviewer.
69
60
  - (`Recce Cloud`) Automatically sync Check status between Recce Instances
70
61
  - (`Recce Cloud`) Block PR merging until all Recce Checks have been approved
71
62
 
72
- Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on the Recce blog.
73
-
63
+ Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on
64
+ the Recce blog.
74
65
 
75
66
  ## Try the Online Demo
76
67
 
77
- We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos to inspect the data impact caused by the modeling changes in the PR.
68
+ We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos
69
+ to inspect the data impact caused by the modeling changes in the PR.
78
70
 
79
71
  For each demo, review the following:
80
72
 
@@ -85,8 +77,9 @@ For each demo, review the following:
85
77
  This will enable you to validate if the intention of the PR has been successfully implemented without unintended impact.
86
78
 
87
79
  > [!TIP]
88
- Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further investigation.
89
- >
80
+ > Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further
81
+ > investigation.
82
+ >
90
83
 
91
84
  ### Demo 1: Calculation logic change
92
85
 
@@ -97,22 +90,24 @@ This pull request adjusts the **logic** for how customer lifetime value is calcu
97
90
 
98
91
  ### Demo 2: Refactoring
99
92
 
100
- This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models, enhancing readability and maintainability:
93
+ This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models,
94
+ enhancing readability and maintainability:
101
95
 
102
96
  - [Demo #2](https://pr2.demo.datarecce.io/)
103
97
  - [Pull request #2](https://github.com/DataRecce/jaffle_shop_duckdb/pull/2)
104
98
 
105
99
  ### Demo 3: Analysis
106
100
 
107
- This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of rounding in our data processing.
101
+ This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of
102
+ rounding in our data processing.
108
103
 
109
104
  - [Demo #3](https://pr3.demo.datarecce.io/)
110
105
  - [Pull request #3](https://github.com/DataRecce/jaffle_shop_duckdb/pull/3)
111
106
 
112
-
113
107
  ### Demo 4: Enhancing the existing model
114
108
 
115
- This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as part of a promotion.
109
+ This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as
110
+ part of a promotion.
116
111
 
117
112
  - [Demo #4](https://pr44.demo.datarecce.io/)
118
113
  - [Pull request #44](https://github.com/DataRecce/jaffle_shop_duckdb/pull/44)
@@ -125,39 +120,51 @@ This pull request **enhances** the existing `customers` model by categorizing wh
125
120
  - Modular SQL
126
121
  - Reproducible pipelines
127
122
 
128
- Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve analytics opens dbt projects to many roles, and the size of dbt projects increase, the job of reviewing data modeling changes is even more critical.
123
+ Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve
124
+ analytics opens dbt projects to many roles, and the size of dbt projects increase, the job of reviewing data modeling
125
+ changes is even more critical.
129
126
 
130
127
  The only way to understand the impact of code changes on data is to compare the data before-and-after the changes.
131
128
 
132
129
  ## Features
133
130
 
134
- `Recce` provides a data review environment for data teams to check their work during development, and then again as part of PR review. The suite of tools and diffs in Recce are specifically geared towards surfacing, understanding, and recording data impact from code changes.
131
+ `Recce` provides a data review environment for data teams to check their work during development, and then again as part
132
+ of PR review. The suite of tools and diffs in Recce are specifically geared towards surfacing, understanding, and
133
+ recording data impact from code changes.
135
134
 
136
135
  ### Lineage Diff
137
136
 
138
- [Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in the lineage have been added, removed, or modified.
137
+ [Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in
138
+ the lineage have been added, removed, or modified.
139
139
 
140
140
  ### Structural Diffs
141
141
 
142
- - [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including added or removed columns
142
+ - [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including
143
+ added or removed columns
143
144
  - [Row Count Diff](https://datarecce.io/docs/features/lineage/#row-count-diff) - Compares the row count for tables
144
145
 
145
146
  ### Statistical Diffs
146
147
 
147
148
  Advanced Diffs provide high level statistics about data change:
148
149
 
149
- - [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct count, min, max, average.
150
- - [Value Diff](https://datarecce.io/docs/features/lineage/#value-diff): The matched count and percentage for each column in the table.
151
- - [Top-K Diff](https://datarecce.io/docs/features/lineage/#top-k-diff): Compares the distribution of a categorical column.
152
- - [Histogram Diff](https://datarecce.io/docs/features/lineage/#histogram-diff): Compares the distribution of a numeric column in an overlay histogram chart.
150
+ - [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct
151
+ count, min, max, average.
152
+ - [Value Diff](https://datarecce.io/docs/features/lineage/#value-diff): The matched count and percentage for each column
153
+ in the table.
154
+ - [Top-K Diff](https://datarecce.io/docs/features/lineage/#top-k-diff): Compares the distribution of a categorical
155
+ column.
156
+ - [Histogram Diff](https://datarecce.io/docs/features/lineage/#histogram-diff): Compares the distribution of a numeric
157
+ column in an overlay histogram chart.
153
158
 
154
159
  ### Query Diff
155
160
 
156
- [Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use of dbt macros.
161
+ [Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use
162
+ of dbt macros.
157
163
 
158
164
  ### Checklist
159
165
 
160
- The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data validation process.
166
+ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data
167
+ validation process.
161
168
 
162
169
  - Save the results of checks
163
170
  - Re-run checks
@@ -168,9 +175,11 @@ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to
168
175
 
169
176
  ## Who's using `Recce`?
170
177
 
171
- `Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with non-technical stakeholders to approve data checks.
178
+ `Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with
179
+ non-technical stakeholders to approve data checks.
172
180
 
173
- - **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact before merging.
181
+ - **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact
182
+ before merging.
174
183
  - **Analysts** can use `Recce` to self-review and understand how data modeling changes have changed the data.
175
184
  - **Stakeholders** can use `Recce` to sign-off on data after updates have been made
176
185
 
@@ -178,13 +187,16 @@ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to
178
187
 
179
188
  The [Recce Documentation](https://datarecce.io/docs/) covers everything you need to get started.
180
189
 
181
- We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle Shop and then [trying out Recce](https://datarecce.io/docs/get-started/) in your own project.
190
+ We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle
191
+ Shop and then [trying out Recce](https://datarecce.io/docs/get-started/) in your own project.
182
192
 
183
- For advice on best practices in preparing dbt environments to enable effective PR review, check out [Best Practices for Preparing Environments](https://datarecce.io/docs/guides/best-practices-prep-env/).
193
+ For advice on best practices in preparing dbt environments to enable effective PR review, check
194
+ out [Best Practices for Preparing Environments](https://datarecce.io/docs/guides/best-practices-prep-env/).
184
195
 
185
196
  ## Recce Cloud
186
197
 
187
- `Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing multiple pull requests.
198
+ `Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing
199
+ multiple pull requests.
188
200
 
189
201
  With `Recce Cloud`:
190
202
 
@@ -194,7 +206,8 @@ With `Recce Cloud`:
194
206
 
195
207
  [Recce Cloud](https://datarecce.io/cloud) is currently in early-access private beta.
196
208
 
197
- To find out how you can get access please [book an appointment](https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss) for a short meeting.
209
+ To find out how you can get access
210
+ please [book an appointment](https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss) for a short meeting.
198
211
 
199
212
  <a href="https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss">
200
213
  <img alt="Book us with [Cal.com](http://cal.com/)" src="https://cal.com/book-with-cal-light.svg" />
@@ -209,17 +222,20 @@ To find out how you can get access please [book an appointment](https://cal.com/
209
222
 
210
223
  For `Recce Cloud` users:
211
224
 
212
- - An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon `Recce Cloud`. This file is encrypted *before* transmission.
225
+ - An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon
226
+ `Recce Cloud`. This file is encrypted *before* transmission.
213
227
 
214
228
  ## Community & Support
215
229
 
216
230
  Here's where you can get in touch with the `Recce` team and find support:
217
231
 
218
- - [dbt Slack](https://www.getdbt.com/community/join-the-community) in the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
232
+ - [dbt Slack](https://www.getdbt.com/community/join-the-community) in
233
+ the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
219
234
  - [Recce Discord](https://discord.gg/VpwXRC34jz)
220
235
  - Email us [product@datarecce.io](mailto:product@datarecce.io)
221
236
 
222
- If you believe you have found a bug, or there is some missing functionality in Recce, please open a [GitHub Issue](https://github.com/DataRecce/recce/issues).
237
+ If you believe you have found a bug, or there is some missing functionality in Recce, please open
238
+ a [GitHub Issue](https://github.com/DataRecce/recce/issues).
223
239
 
224
240
  ## Recce on the web
225
241
 
@@ -230,4 +246,4 @@ You can follow along with news about `Recce` and blogs from our team in the foll
230
246
  - [Medium blog](https://medium.com/inthepipeline)
231
247
  - [@datarecce](https://x.com/DataRecce) on Twitter/X
232
248
  - [@DataRecce@mastodon.social](https://mastodon.social/@DataRecce) on Mastodon
233
- - [@datarecce.bsky.social](https://bsky.app/profile/datarecce.bsky.social) on BlueSky
249
+ - [@datarecce.bsky.social](https://bsky.app/profile/datarecce.bsky.social) on BlueSky
@@ -0,0 +1 @@
1
+ 0.56.0.20250227
@@ -721,7 +721,7 @@ class DbtAdapter(BaseAdapter):
721
721
  table_map = {}
722
722
 
723
723
  # Handle column-level lineage, only enable if env var is set to true
724
- if os.getenv('RECCE_CLL_ENABLED') == 'true':
724
+ if os.getenv('RECCE_CLL_ENABLED') != 'false':
725
725
  if base is False:
726
726
  table_map = self.build_table_map(base)
727
727
  self.append_column_lineage(nodes, parent_map, base)
@@ -770,7 +770,8 @@ class DbtAdapter(BaseAdapter):
770
770
  }
771
771
 
772
772
  try:
773
- column_lineage = cll(compiled_sql, schema=schema)
773
+ dialect = self.adapter.type()
774
+ column_lineage = cll(compiled_sql, schema=schema, dialect=dialect)
774
775
  except RecceException as exception:
775
776
  print(exception)
776
777
  _apply_all_columns(node, 'unknown', [])
@@ -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,&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-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\":\"VoDYiUXoc7vMf5GJnfqdi\",\"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-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,&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-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\":\"rQ7Tqp0WxQV1LCcOMdNrh\",\"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>