recce-nightly 1.15.0.20250806__py3-none-any.whl → 1.26.0.20251124__py3-none-any.whl

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 (167) hide show
  1. recce/VERSION +1 -1
  2. recce/__init__.py +5 -0
  3. recce/adapter/dbt_adapter/__init__.py +12 -3
  4. recce/artifact.py +74 -1
  5. recce/cli.py +642 -101
  6. recce/config.py +2 -2
  7. recce/connect_to_cloud.py +1 -1
  8. recce/core.py +2 -2
  9. recce/data/404.html +1 -1
  10. recce/data/__next.__PAGE__.txt +10 -0
  11. recce/data/__next._full.txt +23 -0
  12. recce/data/__next._head.txt +8 -0
  13. recce/data/__next._index.txt +8 -0
  14. recce/data/__next._tree.txt +5 -0
  15. recce/data/_next/static/52aV_JrNUZU6dMFgvTQEO/_buildManifest.js +11 -0
  16. recce/data/_next/static/52aV_JrNUZU6dMFgvTQEO/_clientMiddlewareManifest.json +1 -0
  17. recce/data/_next/static/chunks/02b996c7f6a29a06.js +4 -0
  18. recce/data/_next/static/chunks/19c10d219a6a21ff.js +1 -0
  19. recce/data/_next/static/chunks/2df9ec28a061971d.js +11 -0
  20. recce/data/_next/static/chunks/3098c987393bda15.js +1 -0
  21. recce/data/_next/static/chunks/393dc43e483f717a.css +2 -0
  22. recce/data/_next/static/chunks/399e8d91a7e45073.js +2 -0
  23. recce/data/_next/static/chunks/4d0186f631230245.js +1 -0
  24. recce/data/_next/static/chunks/5794ba9e10a9c060.js +11 -0
  25. recce/data/_next/static/chunks/715761c929a3f28b.js +110 -0
  26. recce/data/_next/static/chunks/71f88fcc615bf282.js +1 -0
  27. recce/data/_next/static/chunks/80d2a95eaf1201ea.js +1 -0
  28. recce/data/_next/static/chunks/9979c6109bbbee35.js +1 -0
  29. recce/data/_next/static/chunks/99d638224186c118.js +1 -0
  30. recce/data/_next/static/chunks/d003eb36240e92f3.js +1 -0
  31. recce/data/_next/static/chunks/d3167cdfec4fc351.js +1 -0
  32. recce/data/_next/static/chunks/e124bccf574a3361.css +1 -0
  33. recce/data/_next/static/chunks/f40141db1bdb46f0.css +6 -0
  34. recce/data/_next/static/chunks/fcc53a88741a52f9.js +1 -0
  35. recce/data/_next/static/chunks/turbopack-b1920d28cfb1f28d.js +3 -0
  36. recce/data/_next/static/media/favicon.a8d38d84.ico +0 -0
  37. recce/data/_next/static/media/montserrat-cyrillic-800-normal.d80d830d.woff2 +0 -0
  38. recce/data/_next/static/media/{montserrat-cyrillic-800-normal.bd5c9f50.woff → montserrat-cyrillic-800-normal.f9d58125.woff} +0 -0
  39. recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.076c2a93.woff2 +0 -0
  40. recce/data/_next/static/media/montserrat-latin-800-normal.cde454cc.woff2 +0 -0
  41. recce/data/_next/static/media/{montserrat-latin-800-normal.fc315020.woff → montserrat-latin-800-normal.d5761935.woff} +0 -0
  42. recce/data/_next/static/media/montserrat-latin-ext-800-normal.40ec0659.woff2 +0 -0
  43. recce/data/_next/static/media/{montserrat-latin-ext-800-normal.2e5381b2.woff → montserrat-latin-ext-800-normal.b671449b.woff} +0 -0
  44. recce/data/_next/static/media/{montserrat-vietnamese-800-normal.20c545e6.woff → montserrat-vietnamese-800-normal.9f7b8541.woff} +0 -0
  45. recce/data/_next/static/media/montserrat-vietnamese-800-normal.f9eb854e.woff2 +0 -0
  46. recce/data/_not-found/__next._full.txt +17 -0
  47. recce/data/_not-found/__next._head.txt +8 -0
  48. recce/data/_not-found/__next._index.txt +8 -0
  49. recce/data/_not-found/__next._not-found.__PAGE__.txt +5 -0
  50. recce/data/_not-found/__next._not-found.txt +4 -0
  51. recce/data/_not-found/__next._tree.txt +3 -0
  52. recce/data/_not-found.html +1 -0
  53. recce/data/_not-found.txt +17 -0
  54. recce/data/index.html +1 -1
  55. recce/data/index.txt +21 -23
  56. recce/event/__init__.py +9 -8
  57. recce/event/collector.py +3 -1
  58. recce/event/track.py +10 -0
  59. recce/github.py +1 -1
  60. recce/mcp_server.py +716 -0
  61. recce/models/types.py +35 -2
  62. recce/pull_request.py +1 -1
  63. recce/run.py +2 -2
  64. recce/server.py +105 -3
  65. recce/state/__init__.py +31 -0
  66. recce/state/cloud.py +632 -0
  67. recce/state/const.py +26 -0
  68. recce/state/local.py +56 -0
  69. recce/state/state.py +119 -0
  70. recce/state/state_loader.py +174 -0
  71. recce/summary.py +21 -1
  72. recce/tasks/dataframe.py +63 -1
  73. recce/tasks/rowcount.py +4 -1
  74. recce/tasks/schema.py +4 -1
  75. recce/util/api_token.py +9 -2
  76. recce/util/breaking.py +1 -1
  77. recce/util/io.py +2 -2
  78. recce/util/lineage.py +14 -18
  79. recce/util/recce_cloud.py +187 -7
  80. recce/yaml/__init__.py +2 -2
  81. recce_cloud/__init__.py +24 -0
  82. recce_cloud/api/__init__.py +17 -0
  83. recce_cloud/api/base.py +111 -0
  84. recce_cloud/api/client.py +150 -0
  85. recce_cloud/api/exceptions.py +26 -0
  86. recce_cloud/api/factory.py +63 -0
  87. recce_cloud/api/github.py +76 -0
  88. recce_cloud/api/gitlab.py +82 -0
  89. recce_cloud/artifact.py +57 -0
  90. recce_cloud/ci_providers/__init__.py +9 -0
  91. recce_cloud/ci_providers/base.py +82 -0
  92. recce_cloud/ci_providers/detector.py +147 -0
  93. recce_cloud/ci_providers/github_actions.py +136 -0
  94. recce_cloud/ci_providers/gitlab_ci.py +130 -0
  95. recce_cloud/cli.py +245 -0
  96. recce_cloud/upload.py +214 -0
  97. {recce_nightly-1.15.0.20250806.dist-info → recce_nightly-1.26.0.20251124.dist-info}/METADATA +54 -28
  98. recce_nightly-1.26.0.20251124.dist-info/RECORD +180 -0
  99. {recce_nightly-1.15.0.20250806.dist-info → recce_nightly-1.26.0.20251124.dist-info}/top_level.txt +1 -0
  100. tests/adapter/dbt_adapter/test_dbt_cll.py +4 -2
  101. tests/recce_cloud/__init__.py +0 -0
  102. tests/recce_cloud/test_ci_providers.py +351 -0
  103. tests/recce_cloud/test_cli.py +372 -0
  104. tests/recce_cloud/test_client.py +273 -0
  105. tests/recce_cloud/test_platform_clients.py +333 -0
  106. tests/test_cli.py +106 -3
  107. tests/test_cli_mcp_optional.py +45 -0
  108. tests/test_cloud_listing_cli.py +324 -0
  109. tests/test_core.py +147 -0
  110. tests/test_mcp_server.py +332 -0
  111. tests/test_server.py +6 -6
  112. tests/test_summary.py +14 -6
  113. recce/data/_next/static/Q_5ThPsmamd4VAGXuqwgi/_buildManifest.js +0 -1
  114. recce/data/_next/static/chunks/0376eeba-3db2196398d62270.js +0 -1
  115. recce/data/_next/static/chunks/068b80ea-833a129468ee1622.js +0 -1
  116. recce/data/_next/static/chunks/0ddaf06c-c7961285f66460f6.js +0 -1
  117. recce/data/_next/static/chunks/1268aea1-6dc1251c01bd724b.js +0 -54
  118. recce/data/_next/static/chunks/12f8fac4-16838e42d28d45c3.js +0 -1
  119. recce/data/_next/static/chunks/235b8375-8c84c51d7bd4f6aa.js +0 -1
  120. recce/data/_next/static/chunks/2541941f-2cd3a7c2d629bd33.js +0 -1
  121. recce/data/_next/static/chunks/273-f3fa401bd2b6fc91.js +0 -10
  122. recce/data/_next/static/chunks/2fc37c1e-910deebeb3d77c90.js +0 -1
  123. recce/data/_next/static/chunks/338-2e7eed5135c64550.js +0 -30
  124. recce/data/_next/static/chunks/367-ab8b16dd5f8586ca.js +0 -1
  125. recce/data/_next/static/chunks/3a92ee20-0400ffe460c7c803.js +0 -1
  126. recce/data/_next/static/chunks/62446465-423c03bb8c1f59b6.js +0 -1
  127. recce/data/_next/static/chunks/6af7f9e9-60aa8706f49dae45.js +0 -1
  128. recce/data/_next/static/chunks/6cf54382-49d52ae6e564e2ac.js +0 -1
  129. recce/data/_next/static/chunks/6dc81886-78e2efe4538794ae.js +0 -1
  130. recce/data/_next/static/chunks/715e4acc-9e2e6df4eb3809d1.js +0 -1
  131. recce/data/_next/static/chunks/72-181b430654230f0e.js +0 -1
  132. recce/data/_next/static/chunks/786-774e3e3ed70a41b3.js +0 -1
  133. recce/data/_next/static/chunks/8d700b6a.7fe2c8c3f4e333a6.js +0 -1
  134. recce/data/_next/static/chunks/a69d64b4-d6890125a87b0aba.js +0 -1
  135. recce/data/_next/static/chunks/ae307f12-01100009689ace61.js +0 -1
  136. recce/data/_next/static/chunks/app/_not-found/page-c7ef8ed6dc07aaeb.js +0 -1
  137. recce/data/_next/static/chunks/app/layout-744f0a78e9e50e60.js +0 -1
  138. recce/data/_next/static/chunks/app/page-e8f798c2ae3f59c2.js +0 -1
  139. recce/data/_next/static/chunks/c0015c5c-82c219792582c104.js +0 -1
  140. recce/data/_next/static/chunks/d90cfbaa-e7d779b3912afeec.js +0 -1
  141. recce/data/_next/static/chunks/e07c302e-cd170429646873e1.js +0 -1
  142. recce/data/_next/static/chunks/fa5fb511-15fb438349ad5b97.js +0 -1
  143. recce/data/_next/static/chunks/framework-7950757d31580329.js +0 -1
  144. recce/data/_next/static/chunks/main-app-4df79eb11c34d43c.js +0 -1
  145. recce/data/_next/static/chunks/main-cd6c104af638214a.js +0 -1
  146. recce/data/_next/static/chunks/pages/_app-73008661edbd5e05.js +0 -1
  147. recce/data/_next/static/chunks/pages/_error-cf8bbdc3cf76c83f.js +0 -1
  148. recce/data/_next/static/chunks/webpack-84df6dd5ae3cf908.js +0 -1
  149. recce/data/_next/static/css/188a3a1687e2a064.css +0 -1
  150. recce/data/_next/static/css/8edca58d4abcf908.css +0 -14
  151. recce/data/_next/static/css/abdb9814a3dd18bb.css +0 -1
  152. recce/data/_next/static/css/c21263c1520b615b.css +0 -1
  153. recce/data/_next/static/media/montserrat-cyrillic-800-normal.22628180.woff2 +0 -0
  154. recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.94a63aea.woff2 +0 -0
  155. recce/data/_next/static/media/montserrat-latin-800-normal.6f8fa298.woff2 +0 -0
  156. recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2 +0 -0
  157. recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2 +0 -0
  158. recce/state.py +0 -865
  159. recce_nightly-1.15.0.20250806.dist-info/RECORD +0 -156
  160. tests/test_state.py +0 -134
  161. /recce/data/_next/static/{Q_5ThPsmamd4VAGXuqwgi → 52aV_JrNUZU6dMFgvTQEO}/_ssgManifest.js +0 -0
  162. /recce/data/_next/static/chunks/{polyfills-42372ed130431b0a.js → a6dad97d9634a72d.js} +0 -0
  163. /recce/data/_next/static/media/{montserrat-cyrillic-ext-800-normal.e6e0d8d0.woff → montserrat-cyrillic-ext-800-normal.a4fa76b5.woff} +0 -0
  164. /recce/data/_next/static/media/{reload-image.79aabb7d.svg → reload-image.7aa931c7.svg} +0 -0
  165. {recce_nightly-1.15.0.20250806.dist-info → recce_nightly-1.26.0.20251124.dist-info}/WHEEL +0 -0
  166. {recce_nightly-1.15.0.20250806.dist-info → recce_nightly-1.26.0.20251124.dist-info}/entry_points.txt +0 -0
  167. {recce_nightly-1.15.0.20250806.dist-info → recce_nightly-1.26.0.20251124.dist-info}/licenses/LICENSE +0 -0
@@ -1,156 +0,0 @@
1
- recce/VERSION,sha256=2gbmGA9KaqkXYb0qlt1UNtgNELv9cMySpsggk5bEDYY,16
2
- recce/__init__.py,sha256=yNb0QT-yoStex0VZALNJvUwtPLommoVCStcow31guqo,2392
3
- recce/artifact.py,sha256=ds0erp0-gGnH4Nx2vvapWR02pX8FmKQcqcd6QGqiVPw,6536
4
- recce/cli.py,sha256=nF29mB5hk-nLmabKEZ3V86s7XHxipvgKOSnSH_RqYNM,44276
5
- recce/config.py,sha256=A4CbKcIdwQ4A9Q2ba4riHUshVQw1D-qDelMOdlt2khU,4661
6
- recce/connect_to_cloud.py,sha256=_SkX2pdyXa9FNyaHvItyYVPF2nZxy2JnCyd_o_psh2Y,4750
7
- recce/core.py,sha256=MtBWxemvCQDdUITwkU2JyuQYqcjlA0a76M8Kg53ECxQ,10754
8
- recce/diff.py,sha256=L2_bzQ3__PO-0aeir8PHF8FvSOUmQ8WcDXgML1-mHdY,748
9
- recce/exceptions.py,sha256=SclQ678GrHGjw7p_ZFJ3vZaL_yMU5xABeIAm2u_W2bk,592
10
- recce/git.py,sha256=8Eg-6NzL-KjA3rT-ibbAyaCwGlzV0JqH3yGikrJNMDA,2344
11
- recce/github.py,sha256=PEpM6ZRiinsPbXSWj4aJCKbZrN1jUXzpzAfJq_CGah4,7420
12
- recce/pull_request.py,sha256=aW0B1NE2LUKTam1S4TQ7smXB9KLE1DV8GnyBqNXA6j8,3832
13
- recce/run.py,sha256=PNafwUUJdIG8b1o0y1QuvjACpA3E-5a3keH45CrWHN0,14044
14
- recce/server.py,sha256=qW81QRZVYEfeDT0n6FwsN9TGhzk6-Zx2mPUjjy01DRM,22473
15
- recce/state.py,sha256=p4CBneaat-OFwhABfj_zG6n0mPGzrYE-F5xi28Cnzuc,34069
16
- recce/summary.py,sha256=Mbxvxr9KazR5o9icqhhjiGHsoAiWxQU4PdN7HytBJ1c,19154
17
- recce/adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- recce/adapter/base.py,sha256=T_JNeLHgiHSaegw-DbrvHOaYjMyZcjj2Qtg5cWh_fco,3548
19
- recce/adapter/sqlmesh_adapter.py,sha256=IU3N-F6ToDoO7_bV5vsG8pmTuDcbFtewTIuCxedTaRM,5046
20
- recce/adapter/dbt_adapter/__init__.py,sha256=C5xRPDs3q86CMgewa0HTKayJc3d5KkQ1cqYN8s0nKno,66822
21
- recce/adapter/dbt_adapter/dbt_version.py,sha256=M7aedZIWslXnJsryK8Ki4OL_t2oAKxy4uE2pRwfWIkk,1228
22
- recce/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- recce/apis/check_api.py,sha256=KMCXSMl1qqzx2jQgRqCrD4j_cY3EHBbM3H2-t-6saAU,6227
24
- recce/apis/check_func.py,sha256=gktbCcyk3WGvWRJJ-wDnwv7NrIny2nTHWLl1-kdiVRo,4183
25
- recce/apis/run_api.py,sha256=eOaxOxXDkH59uqGCd4blld7edavUx7JU_DCd2WAYrL8,3416
26
- recce/apis/run_func.py,sha256=6wC8TDU-h7TLr2VZH7HNsWaUVlQ9HBN5N_dwqfi4lMY,7440
27
- recce/data/404.html,sha256=S-_AXWfwuh6NYtL9PSFUpV0XkCuJbH6QAWFIS6pl8iE,59079
28
- recce/data/auth_callback.html,sha256=H-XfdlAFiw5VU2RpKBVQbwh1AIqJrPHrFA0S09nNJZA,94779
29
- recce/data/favicon.ico,sha256=B2mBumUOnzvUrXrqNkrc5QfdDXjzEXRcWkWur0fJ6sM,2565
30
- recce/data/index.html,sha256=QbiYbIeNTDxgL6NDf2U-3vC4HpRtIiPGf7en6ii66KM,77443
31
- recce/data/index.txt,sha256=VLeUYGy_QtxIcM6TIbFzbRz_Lq0Z01PH0osmoluZ6fI,6403
32
- recce/data/_next/static/Q_5ThPsmamd4VAGXuqwgi/_buildManifest.js,sha256=xih3ZGwUimzWECoZJsiH_MfTi3cNvK2DbJ_VXPRZHWY,544
33
- recce/data/_next/static/Q_5ThPsmamd4VAGXuqwgi/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
34
- recce/data/_next/static/chunks/0376eeba-3db2196398d62270.js,sha256=ef3PXUZocFm_JH0fYU_EfcaLKov9vMUhrat1YvV-IIU,80953
35
- recce/data/_next/static/chunks/068b80ea-833a129468ee1622.js,sha256=LrX07Wm6qBJ1uVFYOIkium2ZZ7TkhoCzaz5F_D5P-sM,4627
36
- recce/data/_next/static/chunks/0ddaf06c-c7961285f66460f6.js,sha256=rY2q_JCikDHZGB8z6nHMV7TON5MlsD4B2zxkj_9DFkE,697
37
- recce/data/_next/static/chunks/1268aea1-6dc1251c01bd724b.js,sha256=o2kP28fiIxMMpjU4S_PbKzQyLCofztY5NuKb3dE95Js,81786
38
- recce/data/_next/static/chunks/12f8fac4-16838e42d28d45c3.js,sha256=v1Bc31aD0IOpfixlIyQgOkteLw4ZCwYttEg37O8CdQk,152794
39
- recce/data/_next/static/chunks/235b8375-8c84c51d7bd4f6aa.js,sha256=CuHpoYgoktXz63qQW5XLGJdY1Cq0-ZJqk3LTmVOe2ug,1682
40
- recce/data/_next/static/chunks/2541941f-2cd3a7c2d629bd33.js,sha256=03PEb_eExziXtGvmd8-QLru-pPbrkJZh2dj3JR1VZx0,689
41
- recce/data/_next/static/chunks/273-f3fa401bd2b6fc91.js,sha256=HopLAKoEGP0dFN57b_41PkPqWAdxDAGzXPrVB0tHSt4,1277071
42
- recce/data/_next/static/chunks/2fc37c1e-910deebeb3d77c90.js,sha256=npExGSkJthgMbnqcvsiEb9b8aCCf7EQLWu1Io-6By0U,3836
43
- recce/data/_next/static/chunks/338-2e7eed5135c64550.js,sha256=0MRikUq4wS_iboITYISGCEWffqgtIr95bvSA_gVx5KY,264552
44
- recce/data/_next/static/chunks/367-ab8b16dd5f8586ca.js,sha256=ij9VwVffJpkXU2-XwXW1SVA2LTLVoyoyAGyoVqUv0XU,84641
45
- recce/data/_next/static/chunks/3a92ee20-0400ffe460c7c803.js,sha256=wI3cuxjDqcE8hRKMg29Mt2dl16jcQ6lBr4JYcLk3_IU,177908
46
- recce/data/_next/static/chunks/62446465-423c03bb8c1f59b6.js,sha256=xiGo3FRqRpbbBqPwj2UV2zXSfCAPA35TRbyA77kiNMY,2622
47
- recce/data/_next/static/chunks/6af7f9e9-60aa8706f49dae45.js,sha256=bLrPO62eNT0ez4mooE8DDJITbbm_v6kFB_t8e5hlhx8,767
48
- recce/data/_next/static/chunks/6cf54382-49d52ae6e564e2ac.js,sha256=5v9VAkSAZMKNXwaGWjMAkkuP8YKP79F-y6c7RA4U_wE,8973
49
- recce/data/_next/static/chunks/6dc81886-78e2efe4538794ae.js,sha256=IM7QQ9wo-m0E1H1X7mrvEzSFUwm90eJzaom1QIDa_6M,69715
50
- recce/data/_next/static/chunks/715e4acc-9e2e6df4eb3809d1.js,sha256=Oc4RwCTpratqwzi7e5BvF5UIB_kC1foA4F4DKFuigMc,867
51
- recce/data/_next/static/chunks/72-181b430654230f0e.js,sha256=1U7NpDH1sUKrXLx8XebUVjJY9MBy2VDOEf4Z0iY2Ck4,166422
52
- recce/data/_next/static/chunks/786-774e3e3ed70a41b3.js,sha256=ylQ9e5VQSdHyrOZdJsXSycnJL5ZxcAQ3uv5peMz-EQo,11654
53
- recce/data/_next/static/chunks/8d700b6a.7fe2c8c3f4e333a6.js,sha256=drJF3LrBc6gwgD-Yj_rRz-Ap5Cf0_XH7w6HTEwZhcrU,120029
54
- recce/data/_next/static/chunks/a69d64b4-d6890125a87b0aba.js,sha256=M75FwsnNr_AA9jDad2sHuXK9WZxgvN10xCMcn9gRIHU,172734
55
- recce/data/_next/static/chunks/ae307f12-01100009689ace61.js,sha256=-5FIEA3ucphP6IGvMeJkSXJ4jxnxJ-jPuuNl1isHn48,211281
56
- recce/data/_next/static/chunks/c0015c5c-82c219792582c104.js,sha256=39vsBp9YjOMCTy1IehEBh7UCxYbzeh07NQcifOqMV2g,481
57
- recce/data/_next/static/chunks/d90cfbaa-e7d779b3912afeec.js,sha256=fEHB0fWh_Fl1TlK7NaBe11fokveLejfj4R3yOfhrAVQ,1909
58
- recce/data/_next/static/chunks/e07c302e-cd170429646873e1.js,sha256=0uUFHO2Mm5q2SWTHTC5loXxKoWuwOwIvt2sAyH_Rj0c,555
59
- recce/data/_next/static/chunks/fa5fb511-15fb438349ad5b97.js,sha256=UaaRM07bG8X9-E08mxaKLCA98d3V3OP8MqFOvZlBFjc,8899
60
- recce/data/_next/static/chunks/framework-7950757d31580329.js,sha256=WJSQaB_D-Qck95sQYmkMg3clAB7GfsgPYVAmEmOMkrk,182740
61
- recce/data/_next/static/chunks/main-app-4df79eb11c34d43c.js,sha256=3QIEMM6pO9b9MvW7xK4Toukx48-I-X1-0eqc4Bv7YaY,567
62
- recce/data/_next/static/chunks/main-cd6c104af638214a.js,sha256=pYGvgDmnAThczzBHShkI4dMuXUSZnzq6TIkW4ZI-61U,117829
63
- recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
64
- recce/data/_next/static/chunks/webpack-84df6dd5ae3cf908.js,sha256=_FsecrHvMVA-0EfxZv-v8svx7W50DkEH-jb1NbVSSlU,3580
65
- recce/data/_next/static/chunks/app/layout-744f0a78e9e50e60.js,sha256=C1sJ1DG8RYccuG-VVTUBO-mmSjiOvJPdxqS9z0maJLk,1410
66
- recce/data/_next/static/chunks/app/page-e8f798c2ae3f59c2.js,sha256=5zckfX5OoWAY3HAqSLKdawS1XgWiWkbFLvbwP02LDs4,166586
67
- recce/data/_next/static/chunks/app/_not-found/page-c7ef8ed6dc07aaeb.js,sha256=1FE2NEJaSY3ZE8PzMkICM5FcbAbGa8K5ee0ucm2gNfU,2673
68
- recce/data/_next/static/chunks/pages/_app-73008661edbd5e05.js,sha256=wV9XbJ2FbdpnEztEcX5YE7ecw4ec7LPp2fYhOnLbcoo,240
69
- recce/data/_next/static/chunks/pages/_error-cf8bbdc3cf76c83f.js,sha256=k0UKnF-ueCkgYTKsUejnYmf31Stt9q5mOjX66XWVqrY,217
70
- recce/data/_next/static/css/188a3a1687e2a064.css,sha256=fKJMV0A2hM3cjuRmNhx2V_IL8SPaEsfucP-1sc0QVy4,12258
71
- recce/data/_next/static/css/8edca58d4abcf908.css,sha256=Ab-wk7RhsXgiX5fkJsrCJ-EVvrS1hZtOFpI0uZQSgL0,8093
72
- recce/data/_next/static/css/abdb9814a3dd18bb.css,sha256=Do5x9FJaOIe-pSBlbk_PP7PQAYFbDXTTl_0PWY4cnBM,1327
73
- recce/data/_next/static/css/c21263c1520b615b.css,sha256=2TrfHvYUzCBJKLdPzYN6hOAg1n8CoOsJFo36LJPQbOI,13037
74
- recce/data/_next/static/media/montserrat-cyrillic-800-normal.22628180.woff2,sha256=P5Sx5PNkdTlDYzAdulW_OPRfMokDLi6XTpmS8KJSRoI,11148
75
- recce/data/_next/static/media/montserrat-cyrillic-800-normal.bd5c9f50.woff,sha256=PFm1Nwt11gmigNvVqPOoDbUFo70fZzUfyZ9S_5f8AnE,10920
76
- recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.94a63aea.woff2,sha256=qHQDcPj9VkK-6sE5nxIKvejtNLo5RwBULzyH9nZsEwo,12052
77
- recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.e6e0d8d0.woff,sha256=lpODDPTBtDBAla5_gN_MO8RAFRT1bUJQ1XsBGNN3LHA,12036
78
- recce/data/_next/static/media/montserrat-latin-800-normal.6f8fa298.woff2,sha256=Tyiv8SvOCaTmT_S2FaOZ5FuZz52F1aVV9hzIfrI7sEI,19036
79
- recce/data/_next/static/media/montserrat-latin-800-normal.fc315020.woff,sha256=Hgj7H-0GgOWQTmq6qCLtwYYQWBZPUP9-DIrF0NJQ2dE,20696
80
- recce/data/_next/static/media/montserrat-latin-ext-800-normal.013b84f9.woff2,sha256=tOnyR2cgiUm1cKtlrN9CY6FzD2yAMBe90slHKC0cBms,33776
81
- recce/data/_next/static/media/montserrat-latin-ext-800-normal.2e5381b2.woff,sha256=5IGjXSVdJCIHAJI-R0Qf6XEufetEiQ-5GOY9UuhbtmQ,41700
82
- recce/data/_next/static/media/montserrat-vietnamese-800-normal.20c545e6.woff,sha256=U5YlWNp5ytuS5tfT8Tt07U5xG3Qs0b2ze6vPx2KKG4s,7328
83
- recce/data/_next/static/media/montserrat-vietnamese-800-normal.c0035377.woff2,sha256=bnmP7vEVe-4gLSDBsmKqD-SATv6-Pg-pxnTpSj7BCeI,7948
84
- recce/data/_next/static/media/reload-image.79aabb7d.svg,sha256=l-jdOsD0OBCpFrVYh1ubO8oajafPuPNs6MYnbanO7K0,840
85
- recce/data/imgs/reload-image.svg,sha256=l-jdOsD0OBCpFrVYh1ubO8oajafPuPNs6MYnbanO7K0,840
86
- recce/data/imgs/feedback/thumbs-down.png,sha256=q9KVIbaZku1TWkYHuleYlO-b6HsTApYh3St5xNHMGMg,10695
87
- recce/data/imgs/feedback/thumbs-up.png,sha256=VF3BH8bmYEqcSsMDJO57xMqW4t6crCXUXaMlOPgI_OE,10556
88
- recce/data/logo/recce-logo-white.png,sha256=y3re8iEucJnMUkAkRS2CjWHTlOydyvgWdWjuQKcXDbk,46923
89
- recce/event/CONFIG,sha256=w8_AVcNu_JF-t8lNmjOqtsXbeOawMzpEhkISaMlm-iU,48
90
- recce/event/SENTRY_DNS,sha256=nWXZevLC4qDScvNtjs329X13oxqvtFI_Kiu6cfCDOBA,83
91
- recce/event/__init__.py,sha256=q82uD7GvAvp9nknyrOC2E-OtGsk0x-aM_rWEqzpkEgY,8613
92
- recce/event/collector.py,sha256=Tqe5nMAMvDveaJ1_AfGaq23y5ccoRqhIC1-fTdVZAVg,5720
93
- recce/event/track.py,sha256=xDyDWblhR6mp0tezEYhkA0aOyZLqXBpJyHZwhI2xhU8,4803
94
- recce/models/__init__.py,sha256=F7cgALtdWnwv37R0eEgKZ_yBsMwxWnUfo3jAZ3u6qyU,209
95
- recce/models/check.py,sha256=jjR1SGyczjrqyK-0Zas6ikLIGSgVp54lvfcQA19AniI,1588
96
- recce/models/run.py,sha256=QK2gvOWvko9YYhd2NLs3BPt5l4MSCZGwpzTAiqx9zJw,1161
97
- recce/models/types.py,sha256=9ReOyIv3rUD3_cIQfB9Rplb0L2YQuZr4kS9Zai30nB8,5234
98
- recce/tasks/__init__.py,sha256=b553AtDHjYROgmMePv_Hv_X3fjh4iEn11gzzpUJz6_o,610
99
- recce/tasks/core.py,sha256=JFYa1CfgOiRPQ7KVTwMuxJjhMB-pvCwB-xezVt-h3RU,4080
100
- recce/tasks/dataframe.py,sha256=03UBWwt0DFTXlaEOtnV5i_mxdRKD7UbRayewEL2Ub48,3650
101
- recce/tasks/histogram.py,sha256=SMdSznzrBdAFvAbhsoUGAK9o0QUMYy00IVbamUVTpBk,13601
102
- recce/tasks/lineage.py,sha256=_PbY0ZkDr620U8V2olqoX_T9XA0-G8ILt_6m1Q5TfBs,541
103
- recce/tasks/profile.py,sha256=gMgms9qvdDsihh2aSC6LvCm9ggah4Oq3xjvmCh_exrU,11352
104
- recce/tasks/query.py,sha256=k3y_IK1_3D2j4Scw-70ccDjVMa-Oe9jqxlDyLHfjagw,12790
105
- recce/tasks/rowcount.py,sha256=DIC17VUKtGhEHz6lW4VFLHyD6F4e4QV0i_Dsz4HAv1w,9750
106
- recce/tasks/schema.py,sha256=HHrSvhd_ZJdrNj2QKi9W8vmig0NuYci5cgsKFvp2bu4,2274
107
- recce/tasks/top_k.py,sha256=vY3VCBmg61E8I4V-9-hJOv5RCYCmhxl6sHiKR9Zv7eE,5521
108
- recce/tasks/valuediff.py,sha256=QLv0zgM9pWibvjyfZHjkpGopY9qqlpU0-WdFB109MUQ,16418
109
- recce/util/__init__.py,sha256=cDvL3WT32cJR9CUPIJmibwJoyYcB3ZaKBFbOZDyvqP8,95
110
- recce/util/api_token.py,sha256=NE8lIFcr2GZ6ft4FS3zcsbvZaFdBF-e-fMYAYL2PDkM,2938
111
- recce/util/breaking.py,sha256=ajCOWMR8Qw492wCiuz5_DKqpI3uoj_qHuJjvelEoSkw,13068
112
- recce/util/cache.py,sha256=QB6wzxe0M3jNTwP0M27Ys8F2hF-oda4-LyXXG9THuZQ,646
113
- recce/util/cll.py,sha256=p8BrsG_1Lm-jXO8n4ulUgFw13C4mN0WjCXZbihDxQrs,13253
114
- recce/util/io.py,sha256=fNiIafNxPlTF6NNXlugzeJjfVGGrP3RXb39ERzRWD3Q,3459
115
- recce/util/lineage.py,sha256=6N1oTP39NNUBLhpT8xQPNRP04Smzn9IQiQGRXoOQeoo,2355
116
- recce/util/logger.py,sha256=6UgLFkRiur9jJfu2ZRdo4LUvMw4f75V-l-1HT1-sgKo,747
117
- recce/util/onboarding_state.py,sha256=kwFirKlfXdl5WFkR_nmilqGKFyELNcSPMqYq-by35fk,1991
118
- recce/util/perf_tracking.py,sha256=FjhrdbbXIgybxS_oPpFsJ9VUDR93d7bUs8VNNqpXNxw,2483
119
- recce/util/pydantic_model.py,sha256=KumKuyCjbTzEMsKLE4-b-eZfp0gLhYDdmVtw1-hxiJw,587
120
- recce/util/recce_cloud.py,sha256=mqZn63Fh1kZaT0L6AR9K4yqTnGpZBGEWGBHFapLmS_w,9882
121
- recce/util/singleton.py,sha256=1cU99I0f9tjuMQLMJyLsK1oK3fZJMsO5-TbRHAMXqds,627
122
- recce/yaml/__init__.py,sha256=EgXYlFeJZchatUClRDXbIC5Oqb2_nBvB2NqItYVihio,1292
123
- recce_nightly-1.15.0.20250806.dist-info/licenses/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
124
- tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
- tests/test_cli.py,sha256=_ikuZW4bYEGyj5A_V7nDSyBa1tVZqc0TVm-TJ0rEYVo,5467
126
- tests/test_config.py,sha256=ODDFe_XF6gphmSmmc422dGLBaCCmG-IjDzTkD5SJsJE,1557
127
- tests/test_connect_to_cloud.py,sha256=b2fgV8L1iQBdEwh6RumMsIIyYg7GtMOMRz1dvE3WRPg,3059
128
- tests/test_core.py,sha256=7NKQc_8Krjsp3imMMmXHV6hQ7Kvw8QGE2nVtigebZYE,735
129
- tests/test_dbt.py,sha256=VzXvdoJNwwEmKNhJJDNB1N_qZYwp1aoJQ1sLcoyRBmk,1316
130
- tests/test_pull_request.py,sha256=HmZo5MoDaoKSgPwbLxJ3Ur3ajZ7IxhkzJxaOmhg6bwE,3562
131
- tests/test_server.py,sha256=l2EDIonpDU3CzuCpZSXTCyH_X32xdscSz-bdNSuTkjA,3397
132
- tests/test_state.py,sha256=phSYlyxTx2Sq0K8DXUrfaO5Jc7lgZeeWNNtc9JD3fYc,4988
133
- tests/test_summary.py,sha256=D0WvAkdO-vzGcvholH2rfS1wTxUXjVHwWm59fWy45eA,2876
134
- tests/adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
- tests/adapter/dbt_adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
- tests/adapter/dbt_adapter/conftest.py,sha256=WlMVytJcyfLJlMBeYhpk8Q-nyCDR9x_7qgsy6Uh9ECw,386
137
- tests/adapter/dbt_adapter/dbt_test_helper.py,sha256=o_7m0cnVeGwPwEFXBCx3Me5QqLzQMOBR3dXD-MS2eaM,10406
138
- tests/adapter/dbt_adapter/test_dbt_adapter.py,sha256=Y5TSlqkXGjJC6hC7YYs45bnRht5aou_KLjPMjpAGxNM,830
139
- tests/adapter/dbt_adapter/test_dbt_cll.py,sha256=IGufMSjGWEoMlna29U1qeEMFaxvlDueMCQoCPuSZ3_I,28642
140
- tests/adapter/dbt_adapter/test_selector.py,sha256=uKFm0QxrxG-xyUEXGobCMueCRUssgnZMyo-S1Nlk3_s,6856
141
- tests/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- tests/tasks/conftest.py,sha256=lyZFx4jEY3To3xVhfMQ-G45egYOCttKN2lxeyExACkY,157
143
- tests/tasks/test_histogram.py,sha256=g69R2Ljvcd8RQTnq7EMZEa93_1vVWNe4ZLg990rWuyA,4088
144
- tests/tasks/test_lineage.py,sha256=HODSP2_uSu98e4jV-t9TIOSrln_5mXd-6baKv9aEmws,1095
145
- tests/tasks/test_preset_checks.py,sha256=fAro5kAv67YiXgRFj7hDAgZEd8fVSHW_VTapVDq4G04,1457
146
- tests/tasks/test_profile.py,sha256=yDavc2-8AneOtkkPGCHJM0QUEYq6S8lJpQbQsJVfa_k,10233
147
- tests/tasks/test_query.py,sha256=EkldbvckZkTOlm9b3y9zLzGIhlo1RShSsv-ycCjDHrg,4218
148
- tests/tasks/test_row_count.py,sha256=21PaP2aq-x8-pqwzWHRT1sixhQ8g3CQNRWOZTTmbK0s,3151
149
- tests/tasks/test_schema.py,sha256=7ds4Vx8ixaiIWDR49Lvjem4xlPkRP1cXazDRY3roUak,3121
150
- tests/tasks/test_top_k.py,sha256=YR_GS__DJsbDlQVaEEdJvNQ3fh1VmV5Nb3G7lb0r6YM,1779
151
- tests/tasks/test_valuediff.py,sha256=_xQJGgxsXoy2NYk_Z6Hsw2FlVh6zk2nN_iUueyRN1e8,2046
152
- recce_nightly-1.15.0.20250806.dist-info/METADATA,sha256=hdvIwinTDWuzfZpoxipWkfBK6W8gOlsMBcgJk_LE1qE,9366
153
- recce_nightly-1.15.0.20250806.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
154
- recce_nightly-1.15.0.20250806.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
155
- recce_nightly-1.15.0.20250806.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
156
- recce_nightly-1.15.0.20250806.dist-info/RECORD,,
tests/test_state.py DELETED
@@ -1,134 +0,0 @@
1
- # add the RecceState test case
2
- import os
3
- import unittest
4
- from datetime import datetime
5
-
6
- from recce.core import RecceContext
7
- from recce.models import Check, Run
8
- from recce.state import ArtifactsRoot, RecceState, RecceStateLoader
9
-
10
- current_dir = os.path.dirname(os.path.abspath(__file__))
11
-
12
-
13
- class TestRecceState(unittest.TestCase):
14
- def test_merge_checks(self):
15
- check1 = Check(name="test1", description="", type="query")
16
- check2 = Check(name="test2", description="", type="query", updated_at=datetime(2000, 1, 1))
17
- check2_2 = Check(
18
- name="test2_2", description="", type="query", updated_at=datetime(2020, 1, 1), check_id=check2.check_id
19
- )
20
- check3 = Check(name="test3", description="", type="query")
21
-
22
- context = RecceContext()
23
- state = RecceState(checks=[check1], runs=[])
24
- context.import_state(state)
25
- self.assertEqual(1, len(context.checks))
26
- self.assertEqual(check1.name, context.checks[0].name)
27
-
28
- context = RecceContext(checks=[check1, check2])
29
- state = RecceState(checks=[check1, check2_2, check3], runs=[])
30
- context.import_state(state)
31
- self.assertEqual(3, len(context.checks))
32
- self.assertEqual(check2_2.name, context.checks[1].name)
33
-
34
- def test_merge_preset_checks(self):
35
- check1 = Check(
36
- name="test1",
37
- description="test1",
38
- type="query",
39
- params=dict(foo="bar"),
40
- updated_at=datetime(2000, 1, 1),
41
- is_preset=True,
42
- )
43
- check2 = Check(
44
- name="test2",
45
- description="test2",
46
- type="query",
47
- params=dict(foo="bar"),
48
- updated_at=datetime(2001, 1, 1),
49
- is_preset=True,
50
- )
51
-
52
- context = RecceContext(checks=[check1])
53
- state = RecceState(checks=[check2], runs=[])
54
- context.import_state(state)
55
- self.assertEqual(1, len(context.checks))
56
- self.assertEqual(check2.name, context.checks[0].name)
57
-
58
- context = RecceContext(checks=[check2])
59
- state = RecceState(checks=[check1], runs=[])
60
- context.import_state(state)
61
- self.assertEqual(1, len(context.checks))
62
- self.assertEqual(check2.name, context.checks[0].name)
63
-
64
- def test_revert_checks(self):
65
- check1 = Check(name="test1", description="", type="query")
66
- check2 = Check(name="test2", description="", type="query")
67
- check2_2 = Check(name="test2_2", description="", type="query", check_id=check2.check_id)
68
- check3 = Check(name="test3", description="", type="query")
69
-
70
- context = RecceContext(checks=[check1, check2])
71
- state = RecceState(checks=[check2_2, check3], runs=[])
72
- context.import_state(state, merge=False)
73
- self.assertEqual(2, len(context.checks))
74
- self.assertEqual(check2_2.name, context.checks[0].name)
75
-
76
- def test_merge_runs(self):
77
- run1 = Run(type="query")
78
- run2 = Run(type="query")
79
- run3 = Run(type="query")
80
-
81
- context = RecceContext(runs=[])
82
- state = RecceState(runs=[run1])
83
- context.import_state(state)
84
- self.assertEqual(1, len(context.runs))
85
-
86
- context = RecceContext(runs=[run1, run2])
87
- state = RecceState(runs=[run2, run3])
88
- context.import_state(state)
89
- self.assertEqual(3, len(context.runs))
90
-
91
- def test_merge_dbt_artifacts(self):
92
- import json
93
- import os
94
-
95
- with open(os.path.join(current_dir, "manifest.json"), "r") as f:
96
- manifest = json.load(f)
97
- manifest["metadata"]["generated_at"] = "2000-01-01T00:00:00Z"
98
- artifacts = ArtifactsRoot(
99
- base=dict(
100
- manifest=manifest,
101
- ),
102
- current=dict(
103
- manifest=manifest,
104
- ),
105
- )
106
-
107
- from tests.adapter.dbt_adapter.dbt_test_helper import DbtTestHelper
108
-
109
- adapter = DbtTestHelper().adapter
110
- adapter.import_artifacts(artifacts)
111
- self.assertNotEqual(adapter.base_manifest.metadata.invocation_id, manifest.get("metadata").get("invocation_id"))
112
-
113
- manifest["metadata"]["generated_at"] = "2099-01-01T00:00:00Z"
114
- adapter.import_artifacts(artifacts)
115
- self.assertEqual(adapter.base_manifest.metadata.invocation_id, manifest.get("metadata").get("invocation_id"))
116
-
117
- def test_state_loader(self):
118
- # copy ./recce_state.json to temp and open
119
-
120
- # use library to create a temp file in the context
121
- import os
122
- import shutil
123
- import tempfile
124
-
125
- with tempfile.NamedTemporaryFile() as f:
126
- # copy ./recce_state.json to temp file
127
- current_dir = os.path.dirname(os.path.abspath(__file__))
128
- state_file = os.path.join(current_dir, "recce_state.json")
129
- shutil.copy(state_file, f.name)
130
-
131
- # load the state file
132
- state_loader = RecceStateLoader(state_file=f.name)
133
- state = state_loader.load()
134
- assert len(state.runs) == 17