recce-nightly 0.56.0.20250227__tar.gz → 0.56.0.20250303__tar.gz

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