recce-nightly 1.9.0.20250623__py3-none-any.whl → 1.10.0.20250625__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.

@@ -1,8 +1,9 @@
1
- recce/VERSION,sha256=h9fRG99db2LfCZiDVaiKOps9YxdL-lmHHrimg0QCuKs,15
1
+ recce/VERSION,sha256=OPRTyx2o-EC6wUdTSX8AunguCb0Km1k-wtrnviGPr_k,16
2
2
  recce/__init__.py,sha256=yNb0QT-yoStex0VZALNJvUwtPLommoVCStcow31guqo,2392
3
3
  recce/artifact.py,sha256=tKQAHSrLRjiR3ppOI4sym8SxYiiLTuD3DPMYh4DWQdA,6506
4
- recce/cli.py,sha256=aitBalvi-dBhOmqwGCfjjvzdVYDTcVQl0nn4l6ktVFA,39627
5
- recce/config.py,sha256=fs22mpFj8CFIxftGbhFAV5xIsPLX2xNTwWSer3UYn5k,4658
4
+ recce/cli.py,sha256=sb9h1Wp48cjp7EWv-lnodmSk78twSJA5YAvJ7z6-dAw,40710
5
+ recce/config.py,sha256=A4CbKcIdwQ4A9Q2ba4riHUshVQw1D-qDelMOdlt2khU,4661
6
+ recce/connect_to_cloud.py,sha256=_SkX2pdyXa9FNyaHvItyYVPF2nZxy2JnCyd_o_psh2Y,4750
6
7
  recce/core.py,sha256=3Nv2QWBGz3yj1QI0wyPNRaDj1rH80DsX2qRQn9ydpg0,10747
7
8
  recce/diff.py,sha256=L2_bzQ3__PO-0aeir8PHF8FvSOUmQ8WcDXgML1-mHdY,748
8
9
  recce/exceptions.py,sha256=SclQ678GrHGjw7p_ZFJ3vZaL_yMU5xABeIAm2u_W2bk,592
@@ -10,8 +11,8 @@ recce/git.py,sha256=8Eg-6NzL-KjA3rT-ibbAyaCwGlzV0JqH3yGikrJNMDA,2344
10
11
  recce/github.py,sha256=PEpM6ZRiinsPbXSWj4aJCKbZrN1jUXzpzAfJq_CGah4,7420
11
12
  recce/pull_request.py,sha256=aW0B1NE2LUKTam1S4TQ7smXB9KLE1DV8GnyBqNXA6j8,3832
12
13
  recce/run.py,sha256=LAjbWUF8loZ9cL25d_maQELwROHHmfaFn7iqFRy5O1o,13567
13
- recce/server.py,sha256=cp5XW0X1N314b5lOz75yU7rHMQZtlh_4oGZM9K6_CdE,20311
14
- recce/state.py,sha256=VPzKyEdmyBeZ45BQArB587QN5C3Sfr7O5Oh_JRBcKrc,30616
14
+ recce/server.py,sha256=RFbZQP9RAsbtGEgtP-ltLc9ZvBZZM6T9qEn9nIwh3HY,20944
15
+ recce/state.py,sha256=fOzy09rn96XqOQuA0RcMW-k2KpjNVH9FQhihEXLvlA0,30634
15
16
  recce/summary.py,sha256=Mbxvxr9KazR5o9icqhhjiGHsoAiWxQU4PdN7HytBJ1c,19154
16
17
  recce/adapter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
18
  recce/adapter/base.py,sha256=T_JNeLHgiHSaegw-DbrvHOaYjMyZcjj2Qtg5cWh_fco,3548
@@ -23,12 +24,13 @@ recce/apis/check_api.py,sha256=KMCXSMl1qqzx2jQgRqCrD4j_cY3EHBbM3H2-t-6saAU,6227
23
24
  recce/apis/check_func.py,sha256=gktbCcyk3WGvWRJJ-wDnwv7NrIny2nTHWLl1-kdiVRo,4183
24
25
  recce/apis/run_api.py,sha256=eOaxOxXDkH59uqGCd4blld7edavUx7JU_DCd2WAYrL8,3416
25
26
  recce/apis/run_func.py,sha256=6wC8TDU-h7TLr2VZH7HNsWaUVlQ9HBN5N_dwqfi4lMY,7440
26
- recce/data/404.html,sha256=2jEAEilUmYNl2p4bzngbU0WR5YZZ7vuv3rATHhy7IKU,26574
27
+ recce/data/404.html,sha256=UdzrC9_oa4co5DMQq0RUcPz7DGbXKyqnSi6yVhwL9Do,26574
28
+ recce/data/auth_callback.html,sha256=2QnhHRc2eLPiaxCYl-HndNsGDGmM6jZAMbqoMlehal4,94783
27
29
  recce/data/favicon.ico,sha256=B2mBumUOnzvUrXrqNkrc5QfdDXjzEXRcWkWur0fJ6sM,2565
28
- recce/data/index.html,sha256=BavWLVZ03JFLaUxaIJjFFYff2qTGxldM4x0jiEPAim8,42155
29
- recce/data/index.txt,sha256=XA3HBkMkVX3dqELQKElyiviGFm12dIW_C-TsaufLSb4,4462
30
- recce/data/_next/static/WrRUb3nV8BhAZG_R8kVma/_buildManifest.js,sha256=sjy6FmOqWlkXWmod2oXwqKv7L582_MTycs9THCE6G-c,224
31
- recce/data/_next/static/WrRUb3nV8BhAZG_R8kVma/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
30
+ recce/data/index.html,sha256=O9LAzdl-b1ys9yxjr2mVqFZ6D1zYc0fNZnegI5IhTu8,42155
31
+ recce/data/index.txt,sha256=gDl4Z1wxKosGQ_29sYbNzFLziX3C9ZDy84O5VoLG-XU,4462
32
+ recce/data/_next/static/abCX3x3UoIdRLEDWxx4xd/_buildManifest.js,sha256=sjy6FmOqWlkXWmod2oXwqKv7L582_MTycs9THCE6G-c,224
33
+ recce/data/_next/static/abCX3x3UoIdRLEDWxx4xd/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
32
34
  recce/data/_next/static/chunks/181-acc61ddada3bc0ca.js,sha256=2zRVkcaI906lYW_aM2mNqnt2HbLxmUaYFjft7eNcuTQ,310191
33
35
  recce/data/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js,sha256=wTH-_PbE1XdP-wmGaQStF5y2yH6XcZXeYX_hDaGMfh4,153777
34
36
  recce/data/_next/static/chunks/217-879a84d70f7a907c.js,sha256=kNJkLcwaIlWnQY7akbrFimbcHHdK6lMVTbTYCNKXIjc,124102
@@ -45,7 +47,7 @@ recce/data/_next/static/chunks/7a8a3e83-edf6dc64b5d5f0a5.js,sha256=NfgBK9op5SzWm
45
47
  recce/data/_next/static/chunks/7f27ae6c-d5f0438edd5c2a5b.js,sha256=ewMLioJbTUUDeqV0J9NDKE0Bj-XCFg8QqMLOmLPgpcc,777
46
48
  recce/data/_next/static/chunks/86730205-cfb14e3f051bab35.js,sha256=qKkzgWsNqSrn-PUGBloZopIlacGCy8hH0BZA9tpqQoQ,172837
47
49
  recce/data/_next/static/chunks/8d700b6a.8bb140898499c512.js,sha256=NPGWvqv8Y_rbNaKxYnoq16mi6FDoQHxOOjpH4tJnUkE,119972
48
- recce/data/_next/static/chunks/92-7ab55ae02606193c.js,sha256=f0YhpleWOSyqlxfS32YC25CQnb0EJAujrN4BWncRKdY,80497
50
+ recce/data/_next/static/chunks/92-607cd1af83c41f43.js,sha256=0ThWZlPjuwxRRFkwB0qN9Q6QdMxJzdGhuIyLAOHO4lw,80466
49
51
  recce/data/_next/static/chunks/9746af58-a42b7d169cacadf0.js,sha256=lV-V6BYpd4HEt-pFtT03G6qQD2Wa-2L_jp6aH9VgoeM,4177
50
52
  recce/data/_next/static/chunks/a30376cd-de84559016d7e133.js,sha256=qzgyjrX5PdPKGeSwb-Gh0RfM_NEF2zjMvMK14ixq228,864
51
53
  recce/data/_next/static/chunks/b63b1b3f-4282bdcf459e075c.js,sha256=s2EZ59zDBJDmy2kh0cHkQ_pAWxiQr_yCPlnttCj0x_k,572
@@ -60,7 +62,7 @@ recce/data/_next/static/chunks/main-b5b3ae20a1405261.js,sha256=28hJH2VsiTdxZGZrQ
60
62
  recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
61
63
  recce/data/_next/static/chunks/webpack-7b49d5ba7e3a434d.js,sha256=lcK59Juk4EZqi3jIsY35lQqAlB5TLTPy-neri0BIZL0,3929
62
64
  recce/data/_next/static/chunks/app/layout-177a410a97e0d018.js,sha256=Hmy6Lmrt4GPYYa0f1qhxTiMj4K47PCmkAkrm1Rbnd7w,1731
63
- recce/data/_next/static/chunks/app/page-59241c42b7dd4fcf.js,sha256=5G46SScopZfjA1KxuSNwUunWAz7FIP_81LQ0Oc5DoI4,156420
65
+ recce/data/_next/static/chunks/app/page-da6e046a8235dbfc.js,sha256=pgWvu9fFwA7namOsi52ywwJQlJjjVNjG9-9F3iuTEAk,156424
64
66
  recce/data/_next/static/chunks/app/_not-found/page-01ed58b7f971d311.js,sha256=_l3JSAaIJxInWqyqdDsobkhJ3JP6DZuwXkw-MsRakQA,1751
65
67
  recce/data/_next/static/chunks/pages/_app-437c455677d62394.js,sha256=FaxURD1wuAmnMU1zJlsQKT9rRdfuspR7yx7BckcoCLY,284
66
68
  recce/data/_next/static/chunks/pages/_error-e7650df18ca04bde.js,sha256=0Vzx_hCqw4RcptsFzHfUigpI13sToBnFw38owTP7ruo,250
@@ -116,10 +118,11 @@ recce/util/pydantic_model.py,sha256=KumKuyCjbTzEMsKLE4-b-eZfp0gLhYDdmVtw1-hxiJw,
116
118
  recce/util/recce_cloud.py,sha256=YgRs9PhER3EhESaJInJo6mf3uwvnp0OavHBY1OYHPXw,7958
117
119
  recce/util/singleton.py,sha256=1cU99I0f9tjuMQLMJyLsK1oK3fZJMsO5-TbRHAMXqds,627
118
120
  recce/yaml/__init__.py,sha256=EgXYlFeJZchatUClRDXbIC5Oqb2_nBvB2NqItYVihio,1292
119
- recce_nightly-1.9.0.20250623.dist-info/licenses/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
121
+ recce_nightly-1.10.0.20250625.dist-info/licenses/LICENSE,sha256=CQjjMy9aYPhfe8xG_bcpIfKtNkdxLZ5IOb8oPygtUhY,11343
120
122
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
123
  tests/test_cli.py,sha256=_ikuZW4bYEGyj5A_V7nDSyBa1tVZqc0TVm-TJ0rEYVo,5467
122
124
  tests/test_config.py,sha256=ODDFe_XF6gphmSmmc422dGLBaCCmG-IjDzTkD5SJsJE,1557
125
+ tests/test_connect_to_cloud.py,sha256=b2fgV8L1iQBdEwh6RumMsIIyYg7GtMOMRz1dvE3WRPg,3059
123
126
  tests/test_core.py,sha256=jfn9dV-k89O2TywUYHmMTSdvyfBUips1ful1cIY2oFY,799
124
127
  tests/test_dbt.py,sha256=VzXvdoJNwwEmKNhJJDNB1N_qZYwp1aoJQ1sLcoyRBmk,1316
125
128
  tests/test_pull_request.py,sha256=HmZo5MoDaoKSgPwbLxJ3Ur3ajZ7IxhkzJxaOmhg6bwE,3562
@@ -144,8 +147,8 @@ tests/tasks/test_row_count.py,sha256=21PaP2aq-x8-pqwzWHRT1sixhQ8g3CQNRWOZTTmbK0s
144
147
  tests/tasks/test_schema.py,sha256=7ds4Vx8ixaiIWDR49Lvjem4xlPkRP1cXazDRY3roUak,3121
145
148
  tests/tasks/test_top_k.py,sha256=YR_GS__DJsbDlQVaEEdJvNQ3fh1VmV5Nb3G7lb0r6YM,1779
146
149
  tests/tasks/test_valuediff.py,sha256=_xQJGgxsXoy2NYk_Z6Hsw2FlVh6zk2nN_iUueyRN1e8,2046
147
- recce_nightly-1.9.0.20250623.dist-info/METADATA,sha256=HlG1PEA0-VELPkwBVp7BfxNfoWqPqNK8aAxhM82xSHE,9397
148
- recce_nightly-1.9.0.20250623.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
149
- recce_nightly-1.9.0.20250623.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
150
- recce_nightly-1.9.0.20250623.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
151
- recce_nightly-1.9.0.20250623.dist-info/RECORD,,
150
+ recce_nightly-1.10.0.20250625.dist-info/METADATA,sha256=7mItLT4k75wBtKN04-E_OJX5gllsTv9iLmxFE8aI1OE,9367
151
+ recce_nightly-1.10.0.20250625.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
152
+ recce_nightly-1.10.0.20250625.dist-info/entry_points.txt,sha256=oqoY_IiwIqXbgrIsPnlqUqao2eiIeP2dprowkOlmeyg,40
153
+ recce_nightly-1.10.0.20250625.dist-info/top_level.txt,sha256=6PKGVpf75idP0C6KEaldDzzZUauIxNu1ZDstau1pI4I,12
154
+ recce_nightly-1.10.0.20250625.dist-info/RECORD,,
@@ -0,0 +1,82 @@
1
+ import base64
2
+ import unittest
3
+ from unittest.mock import patch
4
+ from urllib.parse import quote
5
+
6
+ from cryptography.hazmat.primitives import hashes
7
+ from cryptography.hazmat.primitives.asymmetric import padding
8
+
9
+ from recce.connect_to_cloud import (
10
+ connect_to_cloud_background_task,
11
+ decrypt_code,
12
+ generate_key_pair,
13
+ is_callback_server_running,
14
+ prepare_connection_url,
15
+ )
16
+
17
+
18
+ class ConnectToCloudTests(unittest.TestCase):
19
+
20
+ def test_generate_key_pair(self):
21
+ private_key, public_key = generate_key_pair()
22
+ self.assertIsNotNone(private_key)
23
+ self.assertIsNotNone(public_key)
24
+ self.assertEqual(private_key.public_key().public_numbers(), public_key.public_numbers())
25
+
26
+ def test_prepare_connection_url(self):
27
+ _, public_key = generate_key_pair()
28
+ url, port = prepare_connection_url(public_key)
29
+ self.assertIn("connect?", url)
30
+ self.assertTrue(port >= 10000 and port <= 15000)
31
+
32
+ def test_decrypt_code(self):
33
+ private_key, public_key = generate_key_pair()
34
+ test_string = "recce-api-token-123"
35
+ ciphertext = public_key.encrypt(
36
+ test_string.encode(),
37
+ padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None),
38
+ )
39
+ b64_ciphertext = base64.b64encode(ciphertext).decode()
40
+ result = decrypt_code(private_key, b64_ciphertext)
41
+ self.assertEqual(result, test_string)
42
+
43
+ @patch("recce.connect_to_cloud.update_recce_api_token")
44
+ @patch("recce.connect_to_cloud.update_onboarding_state")
45
+ @patch("recce.connect_to_cloud.RecceCloud")
46
+ def test_handle_callback_request_success(self, mock_recce_cloud, mock_update_state, mock_update_token):
47
+ private_key, public_key = generate_key_pair()
48
+
49
+ # Prepare encrypted token
50
+ test_token = "recce-api-token-xyz"
51
+ ciphertext = public_key.encrypt(
52
+ test_token.encode(),
53
+ padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA1()), algorithm=hashes.SHA1(), label=None),
54
+ )
55
+ encrypted_b64 = base64.b64encode(ciphertext).decode()
56
+
57
+ # Set up mocks
58
+ mock_recce_cloud.return_value.verify_token.return_value = True
59
+
60
+ from recce.connect_to_cloud import handle_callback_request
61
+
62
+ result = handle_callback_request(f"code={quote(encrypted_b64)}", private_key)
63
+
64
+ assert result == test_token
65
+ mock_update_token.assert_called_once_with(test_token)
66
+ mock_update_state.assert_called_once_with(test_token, False)
67
+
68
+ def test_is_callback_server_running(self):
69
+ # Should return False by default
70
+ self.assertFalse(is_callback_server_running())
71
+
72
+ @patch("recce.connect_to_cloud.run_one_time_http_server")
73
+ def test_connect_to_cloud_background_task_runs(self, mock_server):
74
+ private_key, public_key = generate_key_pair()
75
+ url, port = prepare_connection_url(public_key)
76
+
77
+ connect_to_cloud_background_task(private_key, port, url)
78
+ mock_server.assert_called_once()
79
+
80
+
81
+ if __name__ == "__main__":
82
+ unittest.main()