recce-nightly 0.61.0.20250407__tar.gz → 0.61.0.20250408__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (145) hide show
  1. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/PKG-INFO +1 -1
  2. recce_nightly-0.61.0.20250408/recce/VERSION +1 -0
  3. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/cli.py +61 -2
  4. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/404.html +1 -1
  5. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/index.html +1 -1
  6. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/index.txt +1 -1
  7. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/event/__init__.py +4 -0
  8. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/state.py +38 -0
  9. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/recce_cloud.py +18 -6
  10. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce_nightly.egg-info/PKG-INFO +1 -1
  11. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce_nightly.egg-info/SOURCES.txt +2 -2
  12. recce_nightly-0.61.0.20250407/recce/VERSION +0 -1
  13. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/LICENSE +0 -0
  14. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/README.md +0 -0
  15. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/__init__.py +0 -0
  16. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/adapter/__init__.py +0 -0
  17. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/adapter/base.py +0 -0
  18. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/adapter/dbt_adapter/__init__.py +0 -0
  19. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/adapter/dbt_adapter/dbt_version.py +0 -0
  20. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/adapter/sqlmesh_adapter.py +0 -0
  21. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/apis/__init__.py +0 -0
  22. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/apis/check_api.py +0 -0
  23. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/apis/check_func.py +0 -0
  24. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/apis/run_api.py +0 -0
  25. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/apis/run_func.py +0 -0
  26. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/artifact.py +0 -0
  27. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/config.py +0 -0
  28. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/core.py +0 -0
  29. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/269-83bbdbcbd0cc1ddb.js +0 -0
  30. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/29e3cc0d-6e3b0cf904a6874d.js +0 -0
  31. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/36e1c10d-800596efe83e74a6.js +0 -0
  32. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/38610ee6-24a85e2dfb424ddb.js +0 -0
  33. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/3998a672-63fc54b2b517ee2b.js +0 -0
  34. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/450c323b-b36e745822edebe2.js +0 -0
  35. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/47d8844f-0516cea2ef568380.js +0 -0
  36. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/6dc81886-9871b611a22bd997.js +0 -0
  37. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/783-784ce10322400a48.js +0 -0
  38. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/7a8a3e83-dd26fafa0a7421e5.js +0 -0
  39. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/7f27ae6c-4ddea120696db611.js +0 -0
  40. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/9746af58-527fd8cbd2d17eee.js +0 -0
  41. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/a30376cd-1ad5a3f522da896c.js +0 -0
  42. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/app/_not-found/page-76f691066176b63a.js +0 -0
  43. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/app/layout-fdacc83a3bf974a3.js +0 -0
  44. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/app/page-35403e208468490c.js +0 -0
  45. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/b63b1b3f-fe714039749c1250.js +0 -0
  46. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/c132bf7d-4cb4c4a123e27340.js +0 -0
  47. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/c1ceaa8b-64142a5184f1b8b2.js +0 -0
  48. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/cd9f8d63-543677b0ef49da87.js +0 -0
  49. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/ce84277d-4bca7695ec1ada94.js +0 -0
  50. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/e24bf851-5db5db8459b0b291.js +0 -0
  51. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/fee69bc6-1df8306af9d11293.js +0 -0
  52. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/framework-ded83d71b51ce901.js +0 -0
  53. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/main-7183c49fe89a1f9b.js +0 -0
  54. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/main-app-cfd795a5fe58bf37.js +0 -0
  55. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/pages/_app-9f1049bbd7b90455.js +0 -0
  56. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/pages/_error-71ed60313c005df1.js +0 -0
  57. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  58. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/chunks/webpack-8a8709fe9d22c323.js +0 -0
  59. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/css/c9ecb46a4b21c126.css +0 -0
  60. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.22628180.woff2 +0 -0
  61. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.31d693bb.woff +0 -0
  62. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.7e2c1e62.woff +0 -0
  63. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.94a63aea.woff2 +0 -0
  64. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-latin-800-normal.6f8fa298.woff2 +0 -0
  65. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-latin-800-normal.97e20d5e.woff +0 -0
  66. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2 +0 -0
  67. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.aff52ab0.woff +0 -0
  68. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.5f21869b.woff +0 -0
  69. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2 +0 -0
  70. {recce_nightly-0.61.0.20250407/recce/data/_next/static/XwZXp8bbe3xKkxcsCPgsZ → recce_nightly-0.61.0.20250408/recce/data/_next/static/poWNiO-9u2knvOaIjX61p}/_buildManifest.js +0 -0
  71. {recce_nightly-0.61.0.20250407/recce/data/_next/static/XwZXp8bbe3xKkxcsCPgsZ → recce_nightly-0.61.0.20250408/recce/data/_next/static/poWNiO-9u2knvOaIjX61p}/_ssgManifest.js +0 -0
  72. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/favicon.ico +0 -0
  73. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/imgs/feedback/thumbs-down.png +0 -0
  74. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/imgs/feedback/thumbs-up.png +0 -0
  75. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/data/logo/recce-logo-white.png +0 -0
  76. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/diff.py +0 -0
  77. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/event/CONFIG +0 -0
  78. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/event/SENTRY_DNS +0 -0
  79. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/event/collector.py +0 -0
  80. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/event/track.py +0 -0
  81. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/exceptions.py +0 -0
  82. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/git.py +0 -0
  83. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/github.py +0 -0
  84. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/models/__init__.py +0 -0
  85. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/models/check.py +0 -0
  86. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/models/run.py +0 -0
  87. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/models/types.py +0 -0
  88. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/pull_request.py +0 -0
  89. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/run.py +0 -0
  90. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/server.py +0 -0
  91. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/summary.py +0 -0
  92. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/__init__.py +0 -0
  93. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/core.py +0 -0
  94. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/dataframe.py +0 -0
  95. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/histogram.py +0 -0
  96. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/lineage.py +0 -0
  97. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/profile.py +0 -0
  98. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/query.py +0 -0
  99. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/rowcount.py +0 -0
  100. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/schema.py +0 -0
  101. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/top_k.py +0 -0
  102. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/tasks/valuediff.py +0 -0
  103. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/__init__.py +0 -0
  104. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/breaking.py +0 -0
  105. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/cache.py +0 -0
  106. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/cll.py +0 -0
  107. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/io.py +0 -0
  108. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/lineage.py +0 -0
  109. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/logger.py +0 -0
  110. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/pydantic_model.py +0 -0
  111. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/util/singleton.py +0 -0
  112. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce/yaml/__init__.py +0 -0
  113. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce_nightly.egg-info/dependency_links.txt +0 -0
  114. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce_nightly.egg-info/entry_points.txt +0 -0
  115. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce_nightly.egg-info/requires.txt +0 -0
  116. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/recce_nightly.egg-info/top_level.txt +0 -0
  117. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/setup.cfg +0 -0
  118. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/setup.py +0 -0
  119. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/__init__.py +0 -0
  120. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/adapter/__init__.py +0 -0
  121. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/adapter/dbt_adapter/__init__.py +0 -0
  122. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/adapter/dbt_adapter/conftest.py +0 -0
  123. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -0
  124. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -0
  125. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/adapter/dbt_adapter/test_dbt_cll.py +0 -0
  126. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/adapter/dbt_adapter/test_selector.py +0 -0
  127. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/__init__.py +0 -0
  128. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/conftest.py +0 -0
  129. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_histogram.py +0 -0
  130. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_lineage.py +0 -0
  131. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_preset_checks.py +0 -0
  132. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_profile.py +0 -0
  133. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_query.py +0 -0
  134. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_row_count.py +0 -0
  135. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_schema.py +0 -0
  136. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_top_k.py +0 -0
  137. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/tasks/test_valuediff.py +0 -0
  138. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/test_cli.py +0 -0
  139. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/test_config.py +0 -0
  140. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/test_core.py +0 -0
  141. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/test_dbt.py +0 -0
  142. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/test_pull_request.py +0 -0
  143. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/test_server.py +0 -0
  144. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/test_state.py +0 -0
  145. {recce_nightly-0.61.0.20250407 → recce_nightly-0.61.0.20250408}/tests/test_summary.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: recce-nightly
3
- Version: 0.61.0.20250407
3
+ Version: 0.61.0.20250408
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.61.0.20250408
@@ -9,12 +9,13 @@ import uvicorn
9
9
  from recce import event
10
10
  from recce.artifact import upload_dbt_artifacts, download_dbt_artifacts
11
11
  from recce.config import RecceConfig, RECCE_CONFIG_FILE, RECCE_ERROR_LOG_FILE
12
+ from recce.event import get_recce_api_token, update_user_profile
12
13
  from recce.git import current_branch, current_default_branch
13
14
  from recce.run import cli_run, check_github_ci_env
14
- from recce.state import RecceStateLoader, RecceCloudStateManager
15
+ from recce.state import RecceStateLoader, RecceCloudStateManager, RecceShareStateManager
15
16
  from recce.summary import generate_markdown_summary
16
17
  from recce.util.logger import CustomFormatter
17
- from recce.util.recce_cloud import RecceCloudException, get_recce_cloud_onboarding_state
18
+ from recce.util.recce_cloud import RecceCloudException, get_recce_cloud_onboarding_state, RECCE_CLOUD_API_HOST
18
19
  from .core import RecceContext, set_default_context
19
20
  from .event.track import TrackCommand
20
21
 
@@ -751,6 +752,64 @@ def artifact(**kwargs):
751
752
  return recce_ci_artifact(**kwargs)
752
753
 
753
754
 
755
+ @cli.command(cls=TrackCommand)
756
+ @click.argument('state_file', type=click.Path(exists=True))
757
+ @click.option('--api-token', help='The token used by Recce Cloud API.', type=click.STRING,
758
+ envvar='RECCE_API_TOKEN')
759
+ @add_options(recce_options)
760
+ def share(state_file, **kwargs):
761
+ """
762
+ Share the state file
763
+ """
764
+ from rich.console import Console
765
+
766
+ handle_debug_flag(**kwargs)
767
+ cloud_options = {
768
+ 'api_token': kwargs.get('api_token'),
769
+ }
770
+
771
+ console = Console()
772
+
773
+ # read or input the api token
774
+ api_token = cloud_options.get('api_token') if cloud_options.get('api_token') else get_recce_api_token()
775
+ if api_token is None:
776
+ console.print("Please login Recce Cloud and copy the API token from the setting page.\n"
777
+ f"{RECCE_CLOUD_API_HOST}/settings#tokens\n"
778
+ "You can also edit it in the recce profiles yaml file later.")
779
+ api_token = click.prompt('Your Recce API token', type=str, hide_input=True, show_default=False)
780
+ update_user_profile({'api_token': api_token})
781
+
782
+ cloud_options['api_token'] = api_token
783
+
784
+ # load local state
785
+ state_loader = create_state_loader(review_mode=True, cloud_mode=False, state_file=state_file,
786
+ cloud_options=cloud_options)
787
+
788
+ if not state_loader.verify():
789
+ error, hint = state_loader.error_and_hint
790
+ console.print(f"[[red]Error[/red]] {error}")
791
+ console.print(f"{hint}")
792
+ exit(1)
793
+
794
+ # check if state exists in cloud
795
+ state_manager = RecceShareStateManager(cloud_options)
796
+ if not state_manager.verify():
797
+ error, hint = state_manager.error_and_hint
798
+ console.print(f"[[red]Error[/red]] {error}")
799
+ console.print(f"{hint}")
800
+ exit(1)
801
+
802
+ # check if state exists in cloud
803
+ state_file_name = os.path.basename(state_file)
804
+
805
+ try:
806
+ console.print(f'Shared Link: {state_manager.share_state(state_file_name, state_loader.state)}')
807
+ except RecceCloudException as e:
808
+ console.print(f"[[red]Error[/red]] {e}")
809
+ console.print(f"Reason: {e.reason}")
810
+ exit(1)
811
+
812
+
754
813
  @cli.command(hidden=True, cls=TrackCommand)
755
814
  @click.argument('state_file', required=True)
756
815
  @click.option('--host', default='localhost', show_default=True, help='The host to bind to.')
@@ -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-8a8709fe9d22c323.js"/><script src="/_next/static/chunks/38610ee6-24a85e2dfb424ddb.js" async=""></script><script src="/_next/static/chunks/783-784ce10322400a48.js" async=""></script><script src="/_next/static/chunks/main-app-cfd795a5fe58bf37.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-8a8709fe9d22c323.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[83798,[],\"\"]\n3:I[26375,[],\"\"]\n4:I[22587,[],\"\"]\na:I[114,[],\"\"]\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\":\"XwZXp8bbe3xKkxcsCPgsZ\",\"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-8a8709fe9d22c323.js"/><script src="/_next/static/chunks/38610ee6-24a85e2dfb424ddb.js" async=""></script><script src="/_next/static/chunks/783-784ce10322400a48.js" async=""></script><script src="/_next/static/chunks/main-app-cfd795a5fe58bf37.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-8a8709fe9d22c323.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[83798,[],\"\"]\n3:I[26375,[],\"\"]\n4:I[22587,[],\"\"]\na:I[114,[],\"\"]\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\":\"poWNiO-9u2knvOaIjX61p\",\"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-8a8709fe9d22c323.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/c9ecb46a4b21c126.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[83798,[],\"\"]\n4:I[49272,[],\"ClientPageRoot\"]\n5:I[12963,[\"266\",\"static/chunks/e24bf851-5db5db8459b0b291.js\",\"517\",\"static/chunks/c1ceaa8b-64142a5184f1b8b2.js\",\"678\",\"static/chunks/3998a672-63fc54b2b517ee2b.js\",\"509\",\"static/chunks/9746af58-527fd8cbd2d17eee.js\",\"648\",\"static/chunks/ce84277d-4bca7695ec1ada94.js\",\"989\",\"static/chunks/47d8844f-0516cea2ef568380.js\",\"147\",\"static/chunks/a30376cd-1ad5a3f522da896c.js\",\"995\",\"static/chunks/fee69bc6-1df8306af9d11293.js\",\"739\",\"static/chunks/7a8a3e83-dd26fafa0a7421e5.js\",\"283\",\"static/chunks/450c323b-b36e745822edebe2.js\",\"303\",\"static/chunks/36e1c10d-800596efe83e74a6.js\",\"22\",\"static/chunks/29e3cc0d-6e3b0cf904a6874d.js\",\"25\",\"static/chunks/b63b1b3f-fe714039749c1250.js\",\"355\",\"static/chunks/7f27ae6c-4ddea120696db611.js\",\"495\",\"static/chunks/6dc81886-9871b611a22bd997.js\",\"599\",\"static/chunks/c132bf7d-4cb4c4a123e27340.js\",\"971\",\"static/chunks/cd9f8d63-543677b0ef49da87.js\",\"269\",\"static/chunks/269-83bbdbcbd0cc1ddb.js\",\"931\",\"static/chunks/app/page-35403e208468490c.js\"],\"default\",1]\n6:I[26375,[],\"\"]\n7:I[22587,[],\"\"]\n9:I[114,[],\"\"]\na:[]\n0:[\"$\",\"$L2\",null,{\"buildId\":\"XwZXp8bbe3xKkxcsCPgsZ\",\"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/c9ecb46a4b21c126.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,Helvet"])</script><script>self.__next_f.push([1,"ica,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-8a8709fe9d22c323.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/c9ecb46a4b21c126.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[83798,[],\"\"]\n4:I[49272,[],\"ClientPageRoot\"]\n5:I[12963,[\"266\",\"static/chunks/e24bf851-5db5db8459b0b291.js\",\"517\",\"static/chunks/c1ceaa8b-64142a5184f1b8b2.js\",\"678\",\"static/chunks/3998a672-63fc54b2b517ee2b.js\",\"509\",\"static/chunks/9746af58-527fd8cbd2d17eee.js\",\"648\",\"static/chunks/ce84277d-4bca7695ec1ada94.js\",\"989\",\"static/chunks/47d8844f-0516cea2ef568380.js\",\"147\",\"static/chunks/a30376cd-1ad5a3f522da896c.js\",\"995\",\"static/chunks/fee69bc6-1df8306af9d11293.js\",\"739\",\"static/chunks/7a8a3e83-dd26fafa0a7421e5.js\",\"283\",\"static/chunks/450c323b-b36e745822edebe2.js\",\"303\",\"static/chunks/36e1c10d-800596efe83e74a6.js\",\"22\",\"static/chunks/29e3cc0d-6e3b0cf904a6874d.js\",\"25\",\"static/chunks/b63b1b3f-fe714039749c1250.js\",\"355\",\"static/chunks/7f27ae6c-4ddea120696db611.js\",\"495\",\"static/chunks/6dc81886-9871b611a22bd997.js\",\"599\",\"static/chunks/c132bf7d-4cb4c4a123e27340.js\",\"971\",\"static/chunks/cd9f8d63-543677b0ef49da87.js\",\"269\",\"static/chunks/269-83bbdbcbd0cc1ddb.js\",\"931\",\"static/chunks/app/page-35403e208468490c.js\"],\"default\",1]\n6:I[26375,[],\"\"]\n7:I[22587,[],\"\"]\n9:I[114,[],\"\"]\na:[]\n0:[\"$\",\"$L2\",null,{\"buildId\":\"poWNiO-9u2knvOaIjX61p\",\"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/c9ecb46a4b21c126.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,Helvet"])</script><script>self.__next_f.push([1,"ica,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[12963,["266","static/chunks/e24bf851-5db5db8459b0b291.js","517","static/chunks/c1ceaa8b-64142a5184f1b8b2.js","678","static/chunks/3998a672-63fc54b2b517ee2b.js","509","static/chunks/9746af58-527fd8cbd2d17eee.js","648","static/chunks/ce84277d-4bca7695ec1ada94.js","989","static/chunks/47d8844f-0516cea2ef568380.js","147","static/chunks/a30376cd-1ad5a3f522da896c.js","995","static/chunks/fee69bc6-1df8306af9d11293.js","739","static/chunks/7a8a3e83-dd26fafa0a7421e5.js","283","static/chunks/450c323b-b36e745822edebe2.js","303","static/chunks/36e1c10d-800596efe83e74a6.js","22","static/chunks/29e3cc0d-6e3b0cf904a6874d.js","25","static/chunks/b63b1b3f-fe714039749c1250.js","355","static/chunks/7f27ae6c-4ddea120696db611.js","495","static/chunks/6dc81886-9871b611a22bd997.js","599","static/chunks/c132bf7d-4cb4c4a123e27340.js","971","static/chunks/cd9f8d63-543677b0ef49da87.js","269","static/chunks/269-83bbdbcbd0cc1ddb.js","931","static/chunks/app/page-35403e208468490c.js"],"default",1]
3
3
  4:I[26375,[],""]
4
4
  5:I[22587,[],""]
5
- 0:["XwZXp8bbe3xKkxcsCPgsZ",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c9ecb46a4b21c126.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:["poWNiO-9u2knvOaIjX61p",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/c9ecb46a4b21c126.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
@@ -60,6 +60,10 @@ def get_user_id():
60
60
  return load_user_profile().get('user_id')
61
61
 
62
62
 
63
+ def get_recce_api_token():
64
+ return load_user_profile().get('api_token')
65
+
66
+
63
67
  def is_anonymous_tracking():
64
68
  return load_user_profile().get('anonymous_tracking', False)
65
69
 
@@ -46,6 +46,11 @@ RECCE_CLOUD_PASSWORD_MISSING = ErrorMessage(
46
46
  hint_message='Please provide a password with the option "--password <compress-password>"'
47
47
  )
48
48
 
49
+ RECCE_API_TOKEN_MISSING = ErrorMessage(
50
+ error_message='No Recc API token is provided',
51
+ hint_message='Please login to Recce Cloud and copy the API token from the settings page'
52
+ )
53
+
49
54
 
50
55
  def s3_sse_c_headers(password: str) -> Dict[str, str]:
51
56
  hashed_password = sha256()
@@ -715,3 +720,36 @@ class RecceCloudStateManager:
715
720
  return self._purge_state_from_s3_bucket()
716
721
  else:
717
722
  return self._purge_state_from_recce_cloud()
723
+
724
+
725
+ class RecceShareStateManager:
726
+ error_message: str
727
+ hint_message: str
728
+
729
+ # It is a class to share state file on Recce Cloud.
730
+
731
+ def __init__(self, cloud_options: Optional[Dict[str, str]] = None):
732
+ self.cloud_options = cloud_options or {}
733
+ self.error_message = None
734
+ self.hint_message = None
735
+
736
+ def verify(self) -> bool:
737
+ if self.cloud_options.get('api_token') is None:
738
+ self.error_message = RECCE_API_TOKEN_MISSING.error_message
739
+ self.hint_message = RECCE_API_TOKEN_MISSING.hint_message
740
+ return False
741
+ return True
742
+
743
+ @property
744
+ def error_and_hint(self) -> (Union[str, None], Union[str, None]):
745
+ return self.error_message, self.hint_message
746
+
747
+ def share_state(self, file_name: str, state: RecceState) -> Union[str, None]:
748
+ import tempfile
749
+
750
+ with tempfile.NamedTemporaryFile() as tmp:
751
+ state.to_file(tmp.name, file_type=SupportedFileTypes.FILE)
752
+ response = RecceCloud(token=self.cloud_options.get('api_token')).share_state(file_name, open(tmp.name, 'rb'))
753
+ if response.get('status') != 'success':
754
+ return f"Failed to share the state file. Reason: {response.get('message')}"
755
+ return response.get('share_url')
@@ -1,7 +1,7 @@
1
1
  import json
2
2
  import logging
3
3
  import os
4
- from typing import Dict
4
+ from typing import Dict, IO
5
5
 
6
6
  import requests
7
7
 
@@ -34,11 +34,11 @@ class RecceCloud:
34
34
  self.token = token
35
35
  self.base_url = f'{RECCE_CLOUD_API_HOST}/api/v1'
36
36
 
37
- def _request(self, method, url, data=None):
37
+ def _request(self, method, url, **kwargs):
38
38
  headers = {
39
39
  'Authorization': f'Bearer {self.token}'
40
40
  }
41
- return requests.request(method, url, headers=headers, json=data)
41
+ return requests.request(method, url, headers=headers, **kwargs)
42
42
 
43
43
  def get_presigned_url(self,
44
44
  method: PresignedUrlMethod,
@@ -70,7 +70,7 @@ class RecceCloud:
70
70
  api_url = f'{self.base_url}/{repository}/commits/{branch}/artifacts/{method}?artifact_name={artifact_name}&enable_ssec=true'
71
71
  else:
72
72
  raise ValueError('Either pr_id or sha must be provided.')
73
- response = self._request('POST', api_url, data=metadata)
73
+ response = self._request('POST', api_url, json=metadata)
74
74
  if response.status_code != 200:
75
75
  raise RecceCloudException(
76
76
  message='Failed to {method} artifact {preposition} Recce Cloud.'.format(
@@ -119,10 +119,22 @@ class RecceCloud:
119
119
  status_code=response.status_code
120
120
  )
121
121
 
122
+ def share_state(self, file_name: str, file_io: IO):
123
+ api_url = f'{self.base_url}/recce-state/upload'
124
+ files = {'file': (file_name, file_io, 'application/json')}
125
+ response = self._request('POST', api_url, files=files)
126
+ if response.status_code != 200:
127
+ raise RecceCloudException(
128
+ message='Failed to share Recce state.',
129
+ reason=response.text,
130
+ status_code=response.status_code
131
+ )
132
+ return response.json()
133
+
122
134
  def update_github_pull_request_check(self, pr_info: PullRequestInfo, metadata: dict = None):
123
135
  api_url = f'{self.base_url}/{pr_info.repository}/pulls/{pr_info.id}/github/checks'
124
136
  try:
125
- self._request('POST', api_url, data=metadata)
137
+ self._request('POST', api_url, json=metadata)
126
138
  except Exception as e:
127
139
  # We don't care the response of this request, so we don't need to raise any exception.
128
140
  logger.debug(f'Failed to update the GitHub PR check. Reason: {str(e)}')
@@ -140,7 +152,7 @@ class RecceCloud:
140
152
 
141
153
  def set_onboarding_state(self, state: str):
142
154
  api_url = f'{self.base_url}/users/onboarding-state'
143
- response = self._request('PUT', api_url, data={'state': state})
155
+ response = self._request('PUT', api_url, json={'state': state})
144
156
  if response.status_code != 200:
145
157
  raise RecceCloudException(
146
158
  message='Failed to update onboarding state in Recce Cloud.',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: recce-nightly
3
- Version: 0.61.0.20250407
3
+ Version: 0.61.0.20250408
4
4
  Summary: Environment diff tool for dbt
5
5
  Home-page: https://github.com/InfuseAI/recce
6
6
  Author: InfuseAI Dev Team
@@ -30,8 +30,6 @@ recce/data/404.html
30
30
  recce/data/favicon.ico
31
31
  recce/data/index.html
32
32
  recce/data/index.txt
33
- recce/data/_next/static/XwZXp8bbe3xKkxcsCPgsZ/_buildManifest.js
34
- recce/data/_next/static/XwZXp8bbe3xKkxcsCPgsZ/_ssgManifest.js
35
33
  recce/data/_next/static/chunks/269-83bbdbcbd0cc1ddb.js
36
34
  recce/data/_next/static/chunks/29e3cc0d-6e3b0cf904a6874d.js
37
35
  recce/data/_next/static/chunks/36e1c10d-800596efe83e74a6.js
@@ -73,6 +71,8 @@ recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2
73
71
  recce/data/_next/static/media/montserrat-latin-ext-800-normal.aff52ab0.woff
74
72
  recce/data/_next/static/media/montserrat-vietnamese-800-normal.5f21869b.woff
75
73
  recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2
74
+ recce/data/_next/static/poWNiO-9u2knvOaIjX61p/_buildManifest.js
75
+ recce/data/_next/static/poWNiO-9u2knvOaIjX61p/_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.61.0.20250407