singlestoredb 1.16.1__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.
- singlestoredb/__init__.py +75 -0
- singlestoredb/ai/__init__.py +2 -0
- singlestoredb/ai/chat.py +139 -0
- singlestoredb/ai/embeddings.py +128 -0
- singlestoredb/alchemy/__init__.py +90 -0
- singlestoredb/apps/__init__.py +3 -0
- singlestoredb/apps/_cloud_functions.py +90 -0
- singlestoredb/apps/_config.py +72 -0
- singlestoredb/apps/_connection_info.py +18 -0
- singlestoredb/apps/_dashboards.py +47 -0
- singlestoredb/apps/_process.py +32 -0
- singlestoredb/apps/_python_udfs.py +100 -0
- singlestoredb/apps/_stdout_supress.py +30 -0
- singlestoredb/apps/_uvicorn_util.py +36 -0
- singlestoredb/auth.py +245 -0
- singlestoredb/config.py +484 -0
- singlestoredb/connection.py +1487 -0
- singlestoredb/converters.py +950 -0
- singlestoredb/docstring/__init__.py +33 -0
- singlestoredb/docstring/attrdoc.py +126 -0
- singlestoredb/docstring/common.py +230 -0
- singlestoredb/docstring/epydoc.py +267 -0
- singlestoredb/docstring/google.py +412 -0
- singlestoredb/docstring/numpydoc.py +562 -0
- singlestoredb/docstring/parser.py +100 -0
- singlestoredb/docstring/py.typed +1 -0
- singlestoredb/docstring/rest.py +256 -0
- singlestoredb/docstring/tests/__init__.py +1 -0
- singlestoredb/docstring/tests/_pydoctor.py +21 -0
- singlestoredb/docstring/tests/test_epydoc.py +729 -0
- singlestoredb/docstring/tests/test_google.py +1007 -0
- singlestoredb/docstring/tests/test_numpydoc.py +1100 -0
- singlestoredb/docstring/tests/test_parse_from_object.py +109 -0
- singlestoredb/docstring/tests/test_parser.py +248 -0
- singlestoredb/docstring/tests/test_rest.py +547 -0
- singlestoredb/docstring/tests/test_util.py +70 -0
- singlestoredb/docstring/util.py +141 -0
- singlestoredb/exceptions.py +120 -0
- singlestoredb/functions/__init__.py +16 -0
- singlestoredb/functions/decorator.py +201 -0
- singlestoredb/functions/dtypes.py +1793 -0
- singlestoredb/functions/ext/__init__.py +1 -0
- singlestoredb/functions/ext/arrow.py +375 -0
- singlestoredb/functions/ext/asgi.py +2133 -0
- singlestoredb/functions/ext/json.py +420 -0
- singlestoredb/functions/ext/mmap.py +413 -0
- singlestoredb/functions/ext/rowdat_1.py +724 -0
- singlestoredb/functions/ext/timer.py +89 -0
- singlestoredb/functions/ext/utils.py +218 -0
- singlestoredb/functions/signature.py +1578 -0
- singlestoredb/functions/typing/__init__.py +41 -0
- singlestoredb/functions/typing/numpy.py +20 -0
- singlestoredb/functions/typing/pandas.py +2 -0
- singlestoredb/functions/typing/polars.py +2 -0
- singlestoredb/functions/typing/pyarrow.py +2 -0
- singlestoredb/functions/utils.py +421 -0
- singlestoredb/fusion/__init__.py +11 -0
- singlestoredb/fusion/graphql.py +213 -0
- singlestoredb/fusion/handler.py +916 -0
- singlestoredb/fusion/handlers/__init__.py +0 -0
- singlestoredb/fusion/handlers/export.py +525 -0
- singlestoredb/fusion/handlers/files.py +690 -0
- singlestoredb/fusion/handlers/job.py +660 -0
- singlestoredb/fusion/handlers/models.py +250 -0
- singlestoredb/fusion/handlers/stage.py +502 -0
- singlestoredb/fusion/handlers/utils.py +324 -0
- singlestoredb/fusion/handlers/workspace.py +956 -0
- singlestoredb/fusion/registry.py +249 -0
- singlestoredb/fusion/result.py +399 -0
- singlestoredb/http/__init__.py +27 -0
- singlestoredb/http/connection.py +1267 -0
- singlestoredb/magics/__init__.py +34 -0
- singlestoredb/magics/run_personal.py +137 -0
- singlestoredb/magics/run_shared.py +134 -0
- singlestoredb/management/__init__.py +9 -0
- singlestoredb/management/billing_usage.py +148 -0
- singlestoredb/management/cluster.py +462 -0
- singlestoredb/management/export.py +295 -0
- singlestoredb/management/files.py +1102 -0
- singlestoredb/management/inference_api.py +105 -0
- singlestoredb/management/job.py +887 -0
- singlestoredb/management/manager.py +373 -0
- singlestoredb/management/organization.py +226 -0
- singlestoredb/management/region.py +169 -0
- singlestoredb/management/utils.py +423 -0
- singlestoredb/management/workspace.py +1927 -0
- singlestoredb/mysql/__init__.py +177 -0
- singlestoredb/mysql/_auth.py +298 -0
- singlestoredb/mysql/charset.py +214 -0
- singlestoredb/mysql/connection.py +2032 -0
- singlestoredb/mysql/constants/CLIENT.py +38 -0
- singlestoredb/mysql/constants/COMMAND.py +32 -0
- singlestoredb/mysql/constants/CR.py +78 -0
- singlestoredb/mysql/constants/ER.py +474 -0
- singlestoredb/mysql/constants/EXTENDED_TYPE.py +3 -0
- singlestoredb/mysql/constants/FIELD_TYPE.py +48 -0
- singlestoredb/mysql/constants/FLAG.py +15 -0
- singlestoredb/mysql/constants/SERVER_STATUS.py +10 -0
- singlestoredb/mysql/constants/VECTOR_TYPE.py +6 -0
- singlestoredb/mysql/constants/__init__.py +0 -0
- singlestoredb/mysql/converters.py +271 -0
- singlestoredb/mysql/cursors.py +896 -0
- singlestoredb/mysql/err.py +92 -0
- singlestoredb/mysql/optionfile.py +20 -0
- singlestoredb/mysql/protocol.py +450 -0
- singlestoredb/mysql/tests/__init__.py +19 -0
- singlestoredb/mysql/tests/base.py +126 -0
- singlestoredb/mysql/tests/conftest.py +37 -0
- singlestoredb/mysql/tests/test_DictCursor.py +132 -0
- singlestoredb/mysql/tests/test_SSCursor.py +141 -0
- singlestoredb/mysql/tests/test_basic.py +452 -0
- singlestoredb/mysql/tests/test_connection.py +851 -0
- singlestoredb/mysql/tests/test_converters.py +58 -0
- singlestoredb/mysql/tests/test_cursor.py +141 -0
- singlestoredb/mysql/tests/test_err.py +16 -0
- singlestoredb/mysql/tests/test_issues.py +514 -0
- singlestoredb/mysql/tests/test_load_local.py +75 -0
- singlestoredb/mysql/tests/test_nextset.py +88 -0
- singlestoredb/mysql/tests/test_optionfile.py +27 -0
- singlestoredb/mysql/tests/thirdparty/__init__.py +6 -0
- singlestoredb/mysql/tests/thirdparty/test_MySQLdb/__init__.py +9 -0
- singlestoredb/mysql/tests/thirdparty/test_MySQLdb/capabilities.py +323 -0
- singlestoredb/mysql/tests/thirdparty/test_MySQLdb/dbapi20.py +865 -0
- singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_capabilities.py +110 -0
- singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_dbapi20.py +224 -0
- singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_nonstandard.py +101 -0
- singlestoredb/mysql/times.py +23 -0
- singlestoredb/notebook/__init__.py +16 -0
- singlestoredb/notebook/_objects.py +213 -0
- singlestoredb/notebook/_portal.py +352 -0
- singlestoredb/py.typed +0 -0
- singlestoredb/pytest.py +352 -0
- singlestoredb/server/__init__.py +0 -0
- singlestoredb/server/docker.py +452 -0
- singlestoredb/server/free_tier.py +267 -0
- singlestoredb/tests/__init__.py +0 -0
- singlestoredb/tests/alltypes.sql +307 -0
- singlestoredb/tests/alltypes_no_nulls.sql +208 -0
- singlestoredb/tests/empty.sql +0 -0
- singlestoredb/tests/ext_funcs/__init__.py +702 -0
- singlestoredb/tests/local_infile.csv +3 -0
- singlestoredb/tests/test.ipynb +18 -0
- singlestoredb/tests/test.sql +680 -0
- singlestoredb/tests/test2.ipynb +18 -0
- singlestoredb/tests/test2.sql +1 -0
- singlestoredb/tests/test_basics.py +1332 -0
- singlestoredb/tests/test_config.py +318 -0
- singlestoredb/tests/test_connection.py +3103 -0
- singlestoredb/tests/test_dbapi.py +27 -0
- singlestoredb/tests/test_exceptions.py +45 -0
- singlestoredb/tests/test_ext_func.py +1472 -0
- singlestoredb/tests/test_ext_func_data.py +1101 -0
- singlestoredb/tests/test_fusion.py +1527 -0
- singlestoredb/tests/test_http.py +288 -0
- singlestoredb/tests/test_management.py +1599 -0
- singlestoredb/tests/test_plugin.py +33 -0
- singlestoredb/tests/test_results.py +171 -0
- singlestoredb/tests/test_types.py +132 -0
- singlestoredb/tests/test_udf.py +737 -0
- singlestoredb/tests/test_udf_returns.py +459 -0
- singlestoredb/tests/test_vectorstore.py +51 -0
- singlestoredb/tests/test_xdict.py +333 -0
- singlestoredb/tests/utils.py +141 -0
- singlestoredb/types.py +373 -0
- singlestoredb/utils/__init__.py +0 -0
- singlestoredb/utils/config.py +950 -0
- singlestoredb/utils/convert_rows.py +69 -0
- singlestoredb/utils/debug.py +13 -0
- singlestoredb/utils/dtypes.py +205 -0
- singlestoredb/utils/events.py +65 -0
- singlestoredb/utils/mogrify.py +151 -0
- singlestoredb/utils/results.py +585 -0
- singlestoredb/utils/xdict.py +425 -0
- singlestoredb/vectorstore.py +192 -0
- singlestoredb/warnings.py +5 -0
- singlestoredb-1.16.1.dist-info/METADATA +165 -0
- singlestoredb-1.16.1.dist-info/RECORD +183 -0
- singlestoredb-1.16.1.dist-info/WHEEL +5 -0
- singlestoredb-1.16.1.dist-info/entry_points.txt +2 -0
- singlestoredb-1.16.1.dist-info/licenses/LICENSE +201 -0
- singlestoredb-1.16.1.dist-info/top_level.txt +3 -0
- sqlx/__init__.py +4 -0
- sqlx/magic.py +113 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
import datetime
|
|
3
|
+
import os
|
|
4
|
+
from typing import Any
|
|
5
|
+
from typing import Dict
|
|
6
|
+
from typing import Optional
|
|
7
|
+
from typing import Union
|
|
8
|
+
|
|
9
|
+
from ...exceptions import ManagementError
|
|
10
|
+
from ...management import files as mgmt_files
|
|
11
|
+
from ...management import manage_workspaces
|
|
12
|
+
from ...management.files import FilesManager
|
|
13
|
+
from ...management.files import FileSpace
|
|
14
|
+
from ...management.files import manage_files
|
|
15
|
+
from ...management.workspace import StarterWorkspace
|
|
16
|
+
from ...management.workspace import Workspace
|
|
17
|
+
from ...management.workspace import WorkspaceGroup
|
|
18
|
+
from ...management.workspace import WorkspaceManager
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_workspace_manager() -> WorkspaceManager:
|
|
22
|
+
"""Return a new workspace manager."""
|
|
23
|
+
return manage_workspaces()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def get_files_manager() -> FilesManager:
|
|
27
|
+
"""Return a new files manager."""
|
|
28
|
+
return manage_files()
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def dt_isoformat(dt: Optional[datetime.datetime]) -> Optional[str]:
|
|
32
|
+
"""Convert datetime to string."""
|
|
33
|
+
if dt is None:
|
|
34
|
+
return None
|
|
35
|
+
return dt.isoformat()
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def get_workspace_group(params: Dict[str, Any]) -> WorkspaceGroup:
|
|
39
|
+
"""
|
|
40
|
+
Find a workspace group matching group_id or group_name.
|
|
41
|
+
|
|
42
|
+
This function will get a workspace group or ID from the
|
|
43
|
+
following parameters:
|
|
44
|
+
|
|
45
|
+
* params['group_name']
|
|
46
|
+
* params['group_id']
|
|
47
|
+
* params['group']['group_name']
|
|
48
|
+
* params['group']['group_id']
|
|
49
|
+
* params['in_group']['group_name']
|
|
50
|
+
* params['in_group']['group_id']
|
|
51
|
+
|
|
52
|
+
Or, from the SINGLESTOREDB_WORKSPACE_GROUP environment variable.
|
|
53
|
+
|
|
54
|
+
"""
|
|
55
|
+
manager = get_workspace_manager()
|
|
56
|
+
|
|
57
|
+
group_name = params.get('group_name') or \
|
|
58
|
+
(params.get('in_group') or {}).get('group_name') or \
|
|
59
|
+
(params.get('group') or {}).get('group_name')
|
|
60
|
+
if group_name:
|
|
61
|
+
workspace_groups = [
|
|
62
|
+
x for x in manager.workspace_groups
|
|
63
|
+
if x.name == group_name
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
if not workspace_groups:
|
|
67
|
+
raise KeyError(
|
|
68
|
+
f'no workspace group found with name: {group_name}',
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
if len(workspace_groups) > 1:
|
|
72
|
+
ids = ', '.join(x.id for x in workspace_groups)
|
|
73
|
+
raise ValueError(
|
|
74
|
+
f'more than one workspace group with given name was found: {ids}',
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
return workspace_groups[0]
|
|
78
|
+
|
|
79
|
+
group_id = params.get('group_id') or \
|
|
80
|
+
(params.get('in_group') or {}).get('group_id') or \
|
|
81
|
+
(params.get('group') or {}).get('group_id')
|
|
82
|
+
if group_id:
|
|
83
|
+
try:
|
|
84
|
+
return manager.get_workspace_group(group_id)
|
|
85
|
+
except ManagementError as exc:
|
|
86
|
+
if exc.errno == 404:
|
|
87
|
+
raise KeyError(f'no workspace group found with ID: {group_id}')
|
|
88
|
+
raise
|
|
89
|
+
|
|
90
|
+
if os.environ.get('SINGLESTOREDB_WORKSPACE_GROUP'):
|
|
91
|
+
try:
|
|
92
|
+
return manager.get_workspace_group(
|
|
93
|
+
os.environ['SINGLESTOREDB_WORKSPACE_GROUP'],
|
|
94
|
+
)
|
|
95
|
+
except ManagementError as exc:
|
|
96
|
+
if exc.errno == 404:
|
|
97
|
+
raise KeyError(
|
|
98
|
+
'no workspace found with ID: '
|
|
99
|
+
f'{os.environ["SINGLESTOREDB_WORKSPACE_GROUP"]}',
|
|
100
|
+
)
|
|
101
|
+
raise
|
|
102
|
+
|
|
103
|
+
if os.environ.get('SINGLESTOREDB_CLUSTER'):
|
|
104
|
+
raise ValueError('clusters and shared workspaces are not currently supported')
|
|
105
|
+
|
|
106
|
+
raise KeyError('no workspace group was specified')
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def get_workspace(params: Dict[str, Any]) -> Workspace:
|
|
110
|
+
"""
|
|
111
|
+
Retrieve the specified workspace.
|
|
112
|
+
|
|
113
|
+
This function will get a workspace group or ID from the
|
|
114
|
+
following parameters:
|
|
115
|
+
|
|
116
|
+
* params['workspace_name']
|
|
117
|
+
* params['workspace_id']
|
|
118
|
+
* params['workspace']['workspace_name']
|
|
119
|
+
* params['workspace']['workspace_id']
|
|
120
|
+
|
|
121
|
+
Or, from the SINGLESTOREDB_WORKSPACE environment variable.
|
|
122
|
+
|
|
123
|
+
"""
|
|
124
|
+
manager = get_workspace_manager()
|
|
125
|
+
workspace_name = params.get('workspace_name') or \
|
|
126
|
+
(params.get('workspace') or {}).get('workspace_name')
|
|
127
|
+
if workspace_name:
|
|
128
|
+
wg = get_workspace_group(params)
|
|
129
|
+
workspaces = [
|
|
130
|
+
x for x in wg.workspaces
|
|
131
|
+
if x.name == workspace_name
|
|
132
|
+
]
|
|
133
|
+
|
|
134
|
+
if not workspaces:
|
|
135
|
+
raise KeyError(
|
|
136
|
+
f'no workspace found with name: {workspace_name}',
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
if len(workspaces) > 1:
|
|
140
|
+
ids = ', '.join(x.id for x in workspaces)
|
|
141
|
+
raise ValueError(
|
|
142
|
+
f'more than one workspace with given name was found: {ids}',
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
return workspaces[0]
|
|
146
|
+
|
|
147
|
+
workspace_id = params.get('workspace_id') or \
|
|
148
|
+
(params.get('workspace') or {}).get('workspace_id')
|
|
149
|
+
if workspace_id:
|
|
150
|
+
try:
|
|
151
|
+
return manager.get_workspace(workspace_id)
|
|
152
|
+
except ManagementError as exc:
|
|
153
|
+
if exc.errno == 404:
|
|
154
|
+
raise KeyError(f'no workspace found with ID: {workspace_id}')
|
|
155
|
+
raise
|
|
156
|
+
|
|
157
|
+
if os.environ.get('SINGLESTOREDB_WORKSPACE'):
|
|
158
|
+
try:
|
|
159
|
+
return manager.get_workspace(
|
|
160
|
+
os.environ['SINGLESTOREDB_WORKSPACE'],
|
|
161
|
+
)
|
|
162
|
+
except ManagementError as exc:
|
|
163
|
+
if exc.errno == 404:
|
|
164
|
+
raise KeyError(
|
|
165
|
+
'no workspace found with ID: '
|
|
166
|
+
f'{os.environ["SINGLESTOREDB_WORKSPACE"]}',
|
|
167
|
+
)
|
|
168
|
+
raise
|
|
169
|
+
|
|
170
|
+
if os.environ.get('SINGLESTOREDB_CLUSTER'):
|
|
171
|
+
raise ValueError('clusters and shared workspaces are not currently supported')
|
|
172
|
+
|
|
173
|
+
raise KeyError('no workspace was specified')
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def get_deployment(
|
|
177
|
+
params: Dict[str, Any],
|
|
178
|
+
) -> Union[WorkspaceGroup, StarterWorkspace]:
|
|
179
|
+
"""
|
|
180
|
+
Find a starter workspace matching deployment_id or deployment_name.
|
|
181
|
+
|
|
182
|
+
This function will get a starter workspace or ID from the
|
|
183
|
+
following parameters:
|
|
184
|
+
|
|
185
|
+
* params['deployment_name']
|
|
186
|
+
* params['deployment_id']
|
|
187
|
+
* params['group']['deployment_name']
|
|
188
|
+
* params['group']['deployment_id']
|
|
189
|
+
* params['in_deployment']['deployment_name']
|
|
190
|
+
* params['in_deployment']['deployment_id']
|
|
191
|
+
* params['in']['in_group']['deployment_name']
|
|
192
|
+
* params['in']['in_group']['deployment_id']
|
|
193
|
+
* params['in']['in_deployment']['deployment_name']
|
|
194
|
+
* params['in']['in_deployment']['deployment_id']
|
|
195
|
+
|
|
196
|
+
Or, from the SINGLESTOREDB_WORKSPACE_GROUP
|
|
197
|
+
or SINGLESTOREDB_CLUSTER environment variables.
|
|
198
|
+
|
|
199
|
+
"""
|
|
200
|
+
manager = get_workspace_manager()
|
|
201
|
+
|
|
202
|
+
#
|
|
203
|
+
# Search for deployment by name
|
|
204
|
+
#
|
|
205
|
+
deployment_name = params.get('deployment_name') or \
|
|
206
|
+
(params.get('in_deployment') or {}).get('deployment_name') or \
|
|
207
|
+
(params.get('group') or {}).get('deployment_name') or \
|
|
208
|
+
((params.get('in') or {}).get('in_group') or {}).get('deployment_name') or \
|
|
209
|
+
((params.get('in') or {}).get('in_deployment') or {}).get('deployment_name')
|
|
210
|
+
|
|
211
|
+
if deployment_name:
|
|
212
|
+
# Standard workspace group
|
|
213
|
+
workspace_groups = [
|
|
214
|
+
x for x in manager.workspace_groups
|
|
215
|
+
if x.name == deployment_name
|
|
216
|
+
]
|
|
217
|
+
|
|
218
|
+
if len(workspace_groups) == 1:
|
|
219
|
+
return workspace_groups[0]
|
|
220
|
+
|
|
221
|
+
elif len(workspace_groups) > 1:
|
|
222
|
+
ids = ', '.join(x.id for x in workspace_groups)
|
|
223
|
+
raise ValueError(
|
|
224
|
+
f'more than one workspace group with given name was found: {ids}',
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
# Starter workspace
|
|
228
|
+
starter_workspaces = [
|
|
229
|
+
x for x in manager.starter_workspaces
|
|
230
|
+
if x.name == deployment_name
|
|
231
|
+
]
|
|
232
|
+
|
|
233
|
+
if len(starter_workspaces) == 1:
|
|
234
|
+
return starter_workspaces[0]
|
|
235
|
+
|
|
236
|
+
elif len(starter_workspaces) > 1:
|
|
237
|
+
ids = ', '.join(x.id for x in starter_workspaces)
|
|
238
|
+
raise ValueError(
|
|
239
|
+
f'more than one starter workspace with given name was found: {ids}',
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
raise KeyError(f'no deployment found with name: {deployment_name}')
|
|
243
|
+
|
|
244
|
+
#
|
|
245
|
+
# Search for deployment by ID
|
|
246
|
+
#
|
|
247
|
+
deployment_id = params.get('deployment_id') or \
|
|
248
|
+
(params.get('in_deployment') or {}).get('deployment_id') or \
|
|
249
|
+
(params.get('group') or {}).get('deployment_id') or \
|
|
250
|
+
((params.get('in') or {}).get('in_group') or {}).get('deployment_id') or \
|
|
251
|
+
((params.get('in') or {}).get('in_deployment') or {}).get('deployment_id')
|
|
252
|
+
|
|
253
|
+
if deployment_id:
|
|
254
|
+
try:
|
|
255
|
+
# Standard workspace group
|
|
256
|
+
return manager.get_workspace_group(deployment_id)
|
|
257
|
+
except ManagementError as exc:
|
|
258
|
+
if exc.errno == 404:
|
|
259
|
+
try:
|
|
260
|
+
# Starter workspace
|
|
261
|
+
return manager.get_starter_workspace(deployment_id)
|
|
262
|
+
except ManagementError as exc:
|
|
263
|
+
if exc.errno == 404:
|
|
264
|
+
raise KeyError(f'no deployment found with ID: {deployment_id}')
|
|
265
|
+
raise
|
|
266
|
+
else:
|
|
267
|
+
raise
|
|
268
|
+
|
|
269
|
+
# Use workspace group from environment
|
|
270
|
+
if os.environ.get('SINGLESTOREDB_WORKSPACE_GROUP'):
|
|
271
|
+
try:
|
|
272
|
+
return manager.get_workspace_group(
|
|
273
|
+
os.environ['SINGLESTOREDB_WORKSPACE_GROUP'],
|
|
274
|
+
)
|
|
275
|
+
except ManagementError as exc:
|
|
276
|
+
if exc.errno == 404:
|
|
277
|
+
raise KeyError(
|
|
278
|
+
'no workspace found with ID: '
|
|
279
|
+
f'{os.environ["SINGLESTOREDB_WORKSPACE_GROUP"]}',
|
|
280
|
+
)
|
|
281
|
+
raise
|
|
282
|
+
|
|
283
|
+
# Use cluster from environment
|
|
284
|
+
if os.environ.get('SINGLESTOREDB_CLUSTER'):
|
|
285
|
+
try:
|
|
286
|
+
return manager.get_starter_workspace(
|
|
287
|
+
os.environ['SINGLESTOREDB_CLUSTER'],
|
|
288
|
+
)
|
|
289
|
+
except ManagementError as exc:
|
|
290
|
+
if exc.errno == 404:
|
|
291
|
+
raise KeyError(
|
|
292
|
+
'no starter workspace found with ID: '
|
|
293
|
+
f'{os.environ["SINGLESTOREDB_CLUSTER"]}',
|
|
294
|
+
)
|
|
295
|
+
raise
|
|
296
|
+
|
|
297
|
+
raise KeyError('no deployment was specified')
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
def get_file_space(params: Dict[str, Any]) -> FileSpace:
|
|
301
|
+
"""
|
|
302
|
+
Retrieve the specified file space.
|
|
303
|
+
|
|
304
|
+
This function will get a file space from the
|
|
305
|
+
following parameters:
|
|
306
|
+
|
|
307
|
+
* params['file_location']
|
|
308
|
+
"""
|
|
309
|
+
manager = get_files_manager()
|
|
310
|
+
|
|
311
|
+
file_location = params.get('file_location')
|
|
312
|
+
if file_location:
|
|
313
|
+
file_location_lower_case = file_location.lower()
|
|
314
|
+
|
|
315
|
+
if file_location_lower_case == mgmt_files.PERSONAL_SPACE:
|
|
316
|
+
return manager.personal_space
|
|
317
|
+
elif file_location_lower_case == mgmt_files.SHARED_SPACE:
|
|
318
|
+
return manager.shared_space
|
|
319
|
+
elif file_location_lower_case == mgmt_files.MODELS_SPACE:
|
|
320
|
+
return manager.models_space
|
|
321
|
+
else:
|
|
322
|
+
raise ValueError(f'invalid file location: {file_location}')
|
|
323
|
+
|
|
324
|
+
raise KeyError('no file space was specified')
|