singlestoredb 1.4.2__cp38-abi3-win_amd64.whl → 1.5.0__cp38-abi3-win_amd64.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 singlestoredb might be problematic. Click here for more details.
- _singlestoredb_accel.pyd +0 -0
- singlestoredb/__init__.py +1 -1
- singlestoredb/config.py +11 -0
- singlestoredb/connection.py +3 -0
- singlestoredb/fusion/handlers/workspace.py +53 -0
- singlestoredb/http/connection.py +2 -0
- singlestoredb/management/utils.py +20 -4
- singlestoredb/mysql/connection.py +19 -0
- singlestoredb/notebook/_portal.py +32 -0
- {singlestoredb-1.4.2.dist-info → singlestoredb-1.5.0.dist-info}/METADATA +1 -1
- {singlestoredb-1.4.2.dist-info → singlestoredb-1.5.0.dist-info}/RECORD +15 -15
- {singlestoredb-1.4.2.dist-info → singlestoredb-1.5.0.dist-info}/LICENSE +0 -0
- {singlestoredb-1.4.2.dist-info → singlestoredb-1.5.0.dist-info}/WHEEL +0 -0
- {singlestoredb-1.4.2.dist-info → singlestoredb-1.5.0.dist-info}/entry_points.txt +0 -0
- {singlestoredb-1.4.2.dist-info → singlestoredb-1.5.0.dist-info}/top_level.txt +0 -0
_singlestoredb_accel.pyd
CHANGED
|
Binary file
|
singlestoredb/__init__.py
CHANGED
singlestoredb/config.py
CHANGED
|
@@ -221,6 +221,17 @@ register_option(
|
|
|
221
221
|
environ='SINGLESTOREDB_ENABLE_EXTENDED_DATA_TYPES',
|
|
222
222
|
)
|
|
223
223
|
|
|
224
|
+
register_option(
|
|
225
|
+
'vector_data_format', 'string',
|
|
226
|
+
functools.partial(
|
|
227
|
+
check_str,
|
|
228
|
+
valid_values=['json', 'binary'],
|
|
229
|
+
),
|
|
230
|
+
'binary',
|
|
231
|
+
'Format for vector data values',
|
|
232
|
+
environ='SINGLESTOREDB_VECTOR_DATA_FORMAT',
|
|
233
|
+
)
|
|
234
|
+
|
|
224
235
|
register_option(
|
|
225
236
|
'fusion.enabled', 'bool', check_bool, False,
|
|
226
237
|
'Should Fusion SQL queries be enabled?',
|
singlestoredb/connection.py
CHANGED
|
@@ -1304,6 +1304,7 @@ def connect(
|
|
|
1304
1304
|
encoding_errors: Optional[str] = None,
|
|
1305
1305
|
track_env: Optional[bool] = None,
|
|
1306
1306
|
enable_extended_data_types: Optional[bool] = None,
|
|
1307
|
+
vector_data_format: Optional[str] = None,
|
|
1307
1308
|
) -> Connection:
|
|
1308
1309
|
"""
|
|
1309
1310
|
Return a SingleStoreDB connection.
|
|
@@ -1387,6 +1388,8 @@ def connect(
|
|
|
1387
1388
|
Should the connection track the SINGLESTOREDB_URL environment variable?
|
|
1388
1389
|
enable_extended_data_types : bool, optional
|
|
1389
1390
|
Should extended data types (BSON, vector) be enabled?
|
|
1391
|
+
vector_data_format : str, optional
|
|
1392
|
+
Format for vector types: json or binary
|
|
1390
1393
|
|
|
1391
1394
|
Examples
|
|
1392
1395
|
--------
|
|
@@ -13,6 +13,59 @@ from .utils import get_workspace_group
|
|
|
13
13
|
from .utils import get_workspace_manager
|
|
14
14
|
|
|
15
15
|
|
|
16
|
+
class UseWorkspaceHandler(SQLHandler):
|
|
17
|
+
"""
|
|
18
|
+
USE WORKSPACE workspace [ with_database ];
|
|
19
|
+
|
|
20
|
+
# Workspace
|
|
21
|
+
workspace = { workspace_id | workspace_name }
|
|
22
|
+
|
|
23
|
+
# ID of workspace
|
|
24
|
+
workspace_id = ID '<workspace-id>'
|
|
25
|
+
|
|
26
|
+
# Name of workspace
|
|
27
|
+
workspace_name = '<workspace-name>'
|
|
28
|
+
|
|
29
|
+
# Name of database
|
|
30
|
+
with_database = WITH DATABASE 'database-name'
|
|
31
|
+
|
|
32
|
+
Description
|
|
33
|
+
-----------
|
|
34
|
+
Change the workspace and database in the notebook.
|
|
35
|
+
|
|
36
|
+
Arguments
|
|
37
|
+
---------
|
|
38
|
+
* ``<workspace-id>``: The ID of the workspace to delete.
|
|
39
|
+
* ``<workspace-name>``: The name of the workspace to delete.
|
|
40
|
+
|
|
41
|
+
Remarks
|
|
42
|
+
-------
|
|
43
|
+
* Specify the ``WITH DATABASE`` clause to select a default
|
|
44
|
+
database for the session.
|
|
45
|
+
* This command only works in a notebook session in the
|
|
46
|
+
Managed Service.
|
|
47
|
+
|
|
48
|
+
Example
|
|
49
|
+
-------
|
|
50
|
+
The following command sets the workspace to ``examplews`` and
|
|
51
|
+
select 'dbname' as the default database::
|
|
52
|
+
|
|
53
|
+
USE WORKSPACE 'examplews' WITH DATABASE 'dbname';
|
|
54
|
+
|
|
55
|
+
"""
|
|
56
|
+
def run(self, params: Dict[str, Any]) -> Optional[FusionSQLResult]:
|
|
57
|
+
from singlestoredb.notebook import portal
|
|
58
|
+
if params.get('with_database'):
|
|
59
|
+
portal.connection = params['workspace']['workspace_name'], \
|
|
60
|
+
params['with_database']
|
|
61
|
+
else:
|
|
62
|
+
portal.workspace = params['workspace']['workspace_name']
|
|
63
|
+
return None
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
UseWorkspaceHandler.register(overwrite=True)
|
|
67
|
+
|
|
68
|
+
|
|
16
69
|
class ShowRegionsHandler(SQLHandler):
|
|
17
70
|
"""
|
|
18
71
|
SHOW REGIONS [ <like> ]
|
singlestoredb/http/connection.py
CHANGED
|
@@ -1243,5 +1243,7 @@ def connect(
|
|
|
1243
1243
|
inf_as_null: Optional[bool] = None,
|
|
1244
1244
|
encoding_errors: Optional[str] = None,
|
|
1245
1245
|
track_env: Optional[bool] = None,
|
|
1246
|
+
enable_extended_data_types: Optional[bool] = None,
|
|
1247
|
+
vector_data_format: Optional[str] = None,
|
|
1246
1248
|
) -> Connection:
|
|
1247
1249
|
return Connection(**dict(locals()))
|
|
@@ -123,14 +123,14 @@ class NamedList(List[T]):
|
|
|
123
123
|
def _setup_authentication_info_handler() -> Callable[..., Dict[str, Any]]:
|
|
124
124
|
"""Setup authentication info event handler."""
|
|
125
125
|
|
|
126
|
-
authentication_info:
|
|
126
|
+
authentication_info: Dict[str, Any] = {}
|
|
127
127
|
|
|
128
128
|
def handle_authentication_info(msg: Dict[str, Any]) -> None:
|
|
129
129
|
"""Handle authentication info events."""
|
|
130
130
|
nonlocal authentication_info
|
|
131
131
|
if msg.get('name', '') != 'singlestore.portal.authentication_updated':
|
|
132
132
|
return
|
|
133
|
-
authentication_info =
|
|
133
|
+
authentication_info = dict(msg.get('data', {}))
|
|
134
134
|
|
|
135
135
|
events.subscribe(handle_authentication_info)
|
|
136
136
|
|
|
@@ -145,11 +145,27 @@ def _setup_authentication_info_handler() -> Callable[..., Dict[str, Any]]:
|
|
|
145
145
|
out['user'] = data['user']
|
|
146
146
|
if 'password' in data:
|
|
147
147
|
out['password'] = data['password']
|
|
148
|
-
authentication_info =
|
|
148
|
+
authentication_info = out
|
|
149
149
|
|
|
150
150
|
events.subscribe(handle_authentication_info)
|
|
151
151
|
|
|
152
|
+
def retrieve_current_authentication_info() -> List[Tuple[str, Any]]:
|
|
153
|
+
"""Retrieve JWT if not expired."""
|
|
154
|
+
nonlocal authentication_info
|
|
155
|
+
password = authentication_info.get('password')
|
|
156
|
+
if password:
|
|
157
|
+
expires = datetime.datetime.fromtimestamp(
|
|
158
|
+
jwt.decode(
|
|
159
|
+
password,
|
|
160
|
+
options={'verify_signature': False},
|
|
161
|
+
)['exp'],
|
|
162
|
+
)
|
|
163
|
+
if datetime.datetime.now() > expires:
|
|
164
|
+
authentication_info = {}
|
|
165
|
+
return list(authentication_info.items())
|
|
166
|
+
|
|
152
167
|
def get_env() -> List[Tuple[str, Any]]:
|
|
168
|
+
"""Retrieve JWT from environment."""
|
|
153
169
|
conn = {}
|
|
154
170
|
url = os.environ.get('SINGLESTOREDB_URL') or get_option('host')
|
|
155
171
|
if url:
|
|
@@ -170,7 +186,7 @@ def _setup_authentication_info_handler() -> Callable[..., Dict[str, Any]]:
|
|
|
170
186
|
return dict(
|
|
171
187
|
itertools.chain(
|
|
172
188
|
(get_env() if include_env else []),
|
|
173
|
-
|
|
189
|
+
retrieve_current_authentication_info(),
|
|
174
190
|
),
|
|
175
191
|
)
|
|
176
192
|
|
|
@@ -280,6 +280,8 @@ class Connection(BaseConnection):
|
|
|
280
280
|
Should the connection track the SINGLESTOREDB_URL environment variable?
|
|
281
281
|
enable_extended_data_types : bool, optional
|
|
282
282
|
Should extended data types (BSON, vector) be enabled?
|
|
283
|
+
vector_data_format : str, optional
|
|
284
|
+
Specify the data type of vector values: json or binary
|
|
283
285
|
|
|
284
286
|
See `Connection <https://www.python.org/dev/peps/pep-0249/#connection-objects>`_
|
|
285
287
|
in the specification.
|
|
@@ -350,6 +352,7 @@ class Connection(BaseConnection):
|
|
|
350
352
|
encoding_errors='strict',
|
|
351
353
|
track_env=False,
|
|
352
354
|
enable_extended_data_types=True,
|
|
355
|
+
vector_data_format='binary',
|
|
353
356
|
):
|
|
354
357
|
BaseConnection.__init__(**dict(locals()))
|
|
355
358
|
|
|
@@ -634,6 +637,13 @@ class Connection(BaseConnection):
|
|
|
634
637
|
self._in_sync = False
|
|
635
638
|
self._track_env = bool(track_env) or self.host == 'singlestore.com'
|
|
636
639
|
self._enable_extended_data_types = enable_extended_data_types
|
|
640
|
+
if vector_data_format.lower() in ['json', 'binary']:
|
|
641
|
+
self._vector_data_format = vector_data_format
|
|
642
|
+
else:
|
|
643
|
+
raise ValueError(
|
|
644
|
+
'unknown value for vector_data_format, '
|
|
645
|
+
f'expecting "json" or "binary": {vector_data_format}',
|
|
646
|
+
)
|
|
637
647
|
self._connection_info = {}
|
|
638
648
|
events.subscribe(self._handle_event)
|
|
639
649
|
|
|
@@ -1117,6 +1127,15 @@ class Connection(BaseConnection):
|
|
|
1117
1127
|
pass
|
|
1118
1128
|
c.close()
|
|
1119
1129
|
|
|
1130
|
+
if self._vector_data_format:
|
|
1131
|
+
c = self.cursor()
|
|
1132
|
+
try:
|
|
1133
|
+
val = self._vector_data_format
|
|
1134
|
+
c.execute(f'SET @@SESSION.vector_type_project_format={val}')
|
|
1135
|
+
except self.OperationalError:
|
|
1136
|
+
pass
|
|
1137
|
+
c.close()
|
|
1138
|
+
|
|
1120
1139
|
if self.init_command is not None:
|
|
1121
1140
|
c = self.cursor()
|
|
1122
1141
|
c.execute(self.init_command)
|
|
@@ -9,6 +9,7 @@ from typing import Callable
|
|
|
9
9
|
from typing import Dict
|
|
10
10
|
from typing import List
|
|
11
11
|
from typing import Optional
|
|
12
|
+
from typing import Tuple
|
|
12
13
|
|
|
13
14
|
from . import _objects as obj
|
|
14
15
|
from ..management import workspace as mgr
|
|
@@ -187,6 +188,37 @@ class Portal(object):
|
|
|
187
188
|
timeout_message='timeout waiting for workspace update',
|
|
188
189
|
)
|
|
189
190
|
|
|
191
|
+
deployment = workspace
|
|
192
|
+
|
|
193
|
+
@property
|
|
194
|
+
def connection(self) -> Tuple[obj.Workspace, Optional[str]]:
|
|
195
|
+
"""Workspace and default database name."""
|
|
196
|
+
return self.workspace, self.default_database
|
|
197
|
+
|
|
198
|
+
@connection.setter
|
|
199
|
+
def connection(self, workspace_and_default_database: Tuple[str, str]) -> None:
|
|
200
|
+
"""Set workspace and default database name."""
|
|
201
|
+
name_or_id, default_database = workspace_and_default_database
|
|
202
|
+
if re.match(
|
|
203
|
+
r'[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}',
|
|
204
|
+
name_or_id, flags=re.I,
|
|
205
|
+
):
|
|
206
|
+
w = mgr.get_workspace(name_or_id)
|
|
207
|
+
else:
|
|
208
|
+
w = mgr.get_workspace_group(self.workspace_group_id).workspaces[name_or_id]
|
|
209
|
+
|
|
210
|
+
if w.state and w.state.lower() not in ['active', 'resumed']:
|
|
211
|
+
raise RuntimeError('workspace is not active')
|
|
212
|
+
|
|
213
|
+
id = w.id
|
|
214
|
+
|
|
215
|
+
self._call_javascript(
|
|
216
|
+
'changeConnection', [id, default_database],
|
|
217
|
+
wait_on_condition=lambda: self.workspace_id == id and
|
|
218
|
+
self.default_database == default_database, # type: ignore
|
|
219
|
+
timeout_message='timeout waiting for workspace update',
|
|
220
|
+
)
|
|
221
|
+
|
|
190
222
|
@property
|
|
191
223
|
def cluster_id(self) -> Optional[str]:
|
|
192
224
|
"""Cluster ID."""
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
_singlestoredb_accel.pyd,sha256=
|
|
2
|
-
singlestoredb/__init__.py,sha256=
|
|
1
|
+
_singlestoredb_accel.pyd,sha256=7yg5FRkK95l7N7OkPPBPC4O3QkqwlKkBd5mD7bh9x14,59392
|
|
2
|
+
singlestoredb/__init__.py,sha256=JmRMLxVTnSEebFN9UCjgzhvHrFwwih57UKmtuWjPCTo,1697
|
|
3
3
|
singlestoredb/auth.py,sha256=RmYiH0Wlc2RXc4pTlRMysxtBI445ggCIwojWKC_eDLE,7844
|
|
4
|
-
singlestoredb/config.py,sha256=
|
|
5
|
-
singlestoredb/connection.py,sha256=
|
|
4
|
+
singlestoredb/config.py,sha256=U2v66Ua0eLWWOcmD9-XfCG-bjqQCHS6iMSejiogXVbw,12491
|
|
5
|
+
singlestoredb/connection.py,sha256=CvdVyLfR_08ONma1BiwqqjVVSsdXxeHdfpR-zaq0wwc,46765
|
|
6
6
|
singlestoredb/converters.py,sha256=7_Of1f3Ow-JUoY1pHFlMPYxvt8llzdk-7X8qk5z2xJM,21631
|
|
7
7
|
singlestoredb/exceptions.py,sha256=WCCJrNSsU-hD-621Jpd6bwmvGftQ7byXkk-XKXlaxpg,3354
|
|
8
8
|
singlestoredb/pytest.py,sha256=TH364xRCN7_QaN0oRQDHixrEcDx_ZBgu3bmY0tvKrYU,9357
|
|
@@ -29,21 +29,21 @@ singlestoredb/fusion/result.py,sha256=EcFY5Qv43ySlQsfl_JB-I3ko7PzVdjuhhoKN96uHSA
|
|
|
29
29
|
singlestoredb/fusion/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
30
|
singlestoredb/fusion/handlers/stage.py,sha256=uPqawMvchnpyrPYLhB0joTremCURNYKOvYntFc3zTRU,14133
|
|
31
31
|
singlestoredb/fusion/handlers/utils.py,sha256=7xWb_1mJzxW0po9iHVY2ZVnRvHIQgOlKZQZ1zllJBjk,5271
|
|
32
|
-
singlestoredb/fusion/handlers/workspace.py,sha256=
|
|
32
|
+
singlestoredb/fusion/handlers/workspace.py,sha256=i2DllEVcBEzSKVPp380ezqFT5gcbluhk-OjEo17ejnQ,27323
|
|
33
33
|
singlestoredb/http/__init__.py,sha256=4cEDvLloGc3LSpU-PnIwacyu0n5oIIIE6xk2SPyWD_w,939
|
|
34
|
-
singlestoredb/http/connection.py,sha256=
|
|
34
|
+
singlestoredb/http/connection.py,sha256=dbMIxT5CeD5ABnXgFwY9fFbW42IXQWUi3ZC6ID7mnPY,40699
|
|
35
35
|
singlestoredb/management/__init__.py,sha256=pQbsOffl-i6zIzR63MCxSjxPY6TNmy7Kg0BCTExt3mk,244
|
|
36
36
|
singlestoredb/management/billing_usage.py,sha256=0UHFSPCrN0nyeGFFM-HXS3NP8pYmYo2BCCahDEPXvzg,3883
|
|
37
37
|
singlestoredb/management/cluster.py,sha256=XfdBuTlrAG-mnW1BFKeoAr4YSE5IVgxLjbuBSpqIySo,14823
|
|
38
38
|
singlestoredb/management/manager.py,sha256=uGNrUe3zhuP-HUqdfwvy4MdEXTCmq-FZKjIwZSc3hOM,9096
|
|
39
39
|
singlestoredb/management/organization.py,sha256=MjZ_tIoJGZwF95yfQ_Adz8LHYwkrKyj3p5JHDk6rWHE,5187
|
|
40
40
|
singlestoredb/management/region.py,sha256=oGoLLS88dE1GmY7GCc0BV7X3f7bWwKQyeXOVBFmK9Pk,1678
|
|
41
|
-
singlestoredb/management/utils.py,sha256=
|
|
41
|
+
singlestoredb/management/utils.py,sha256=uXrKlMnzlHj3qWO2vWCJP9mykUzIfbBxzZNN2vdXCvo,11775
|
|
42
42
|
singlestoredb/management/workspace.py,sha256=BBNa3Af5IaUAwtzHWrNTJXoc8anXJ7FiWH9yIvtg79Q,63610
|
|
43
43
|
singlestoredb/mysql/__init__.py,sha256=CbpwzNUJPAmKPpIobC0-ugBta_RgHCMq7X7N75QLReY,4669
|
|
44
44
|
singlestoredb/mysql/_auth.py,sha256=YaqqyvAHmeraBv3BM207rNveUVPM-mPnW20ts_ynVWg,8341
|
|
45
45
|
singlestoredb/mysql/charset.py,sha256=mnCdMpvdub1S2mm2PSk2j5JddgsWRjsVLtGx-y9TskE,10724
|
|
46
|
-
singlestoredb/mysql/connection.py,sha256=
|
|
46
|
+
singlestoredb/mysql/connection.py,sha256=d8gtajX4SWbBk6dpOKqQX_ZS5_wNiCmrvZ1gVV294io,74224
|
|
47
47
|
singlestoredb/mysql/converters.py,sha256=vebFFm6IrC0WgY-5Eh-esaPizY5cq3vDOUlEKGaYM-U,7771
|
|
48
48
|
singlestoredb/mysql/cursors.py,sha256=pkrP-1t8IhBJRnYpdM7Rdm-332nOq1RYTDJ_yg_q5HI,27682
|
|
49
49
|
singlestoredb/mysql/err.py,sha256=aDbmfq08gWVmfgIea735wSeiFdvYbB5wusgd3qTVq1s,2480
|
|
@@ -83,7 +83,7 @@ singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_dbapi20.py,sha256
|
|
|
83
83
|
singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_nonstandard.py,sha256=K4EnQCWI_4ShmCv6xHSBDo0B2HVbJvGGYHWygp2bBBk,2920
|
|
84
84
|
singlestoredb/notebook/__init__.py,sha256=XGvAnkjV_6MjaNv6aqxqDL3ovPApKmNX-2UYH1t0cec,549
|
|
85
85
|
singlestoredb/notebook/_objects.py,sha256=rDfHGLLwrnuhVMOyNojzrGamykyfOQxZfH2EnFd8vEw,8256
|
|
86
|
-
singlestoredb/notebook/_portal.py,sha256=
|
|
86
|
+
singlestoredb/notebook/_portal.py,sha256=ip3MkJ51syxppUVGRjgqLfR0He4KCZVklFwWT_X270s,10011
|
|
87
87
|
singlestoredb/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
88
|
singlestoredb/tests/empty.sql,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
89
|
singlestoredb/tests/local_infile.csv,sha256=0fYxcZcTvcwS2McF4sktFsipRY1G-ClGmCRR1eCqdEQ,45
|
|
@@ -115,9 +115,9 @@ singlestoredb/utils/events.py,sha256=rC9cHAetua_E1f-EiFkFM-gJzQSQIH5Uk-4sspC3KjI
|
|
|
115
115
|
singlestoredb/utils/mogrify.py,sha256=gCcn99-vgsGVjTUV7RHJ6hH4vCNrsGB_Xo4z8kiSPDQ,4201
|
|
116
116
|
singlestoredb/utils/results.py,sha256=wR70LhCqlobniZf52r67zYLBOKjWHQm68NAskdRQND8,15862
|
|
117
117
|
singlestoredb/utils/xdict.py,sha256=-wi1lSPTnY99fhVMBhPKJ8cCsQhNG4GMUfkEBDKYgCw,13321
|
|
118
|
-
singlestoredb-1.
|
|
119
|
-
singlestoredb-1.
|
|
120
|
-
singlestoredb-1.
|
|
121
|
-
singlestoredb-1.
|
|
122
|
-
singlestoredb-1.
|
|
123
|
-
singlestoredb-1.
|
|
118
|
+
singlestoredb-1.5.0.dist-info/LICENSE,sha256=Bojenzui8aPNjlF3w4ojguDP7sTf8vFV_9Gc2UAG1sg,11542
|
|
119
|
+
singlestoredb-1.5.0.dist-info/METADATA,sha256=bENk-7v217z-lq59jAreazeMlGOaNo59QyWDIammDvo,5710
|
|
120
|
+
singlestoredb-1.5.0.dist-info/WHEEL,sha256=UyMHzmWA0xVqVPKfTiLs2eN3OWWZUl-kQemNbpIqlKo,100
|
|
121
|
+
singlestoredb-1.5.0.dist-info/entry_points.txt,sha256=bSLaTWB5zGjpVYPAaI46MkkDup0su-eb3uAhCNYuRV0,48
|
|
122
|
+
singlestoredb-1.5.0.dist-info/top_level.txt,sha256=SDtemIXf-Kp-_F2f_S6x0db33cHGOILdAEsIQZe2LZc,35
|
|
123
|
+
singlestoredb-1.5.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|