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.
Files changed (183) hide show
  1. singlestoredb/__init__.py +75 -0
  2. singlestoredb/ai/__init__.py +2 -0
  3. singlestoredb/ai/chat.py +139 -0
  4. singlestoredb/ai/embeddings.py +128 -0
  5. singlestoredb/alchemy/__init__.py +90 -0
  6. singlestoredb/apps/__init__.py +3 -0
  7. singlestoredb/apps/_cloud_functions.py +90 -0
  8. singlestoredb/apps/_config.py +72 -0
  9. singlestoredb/apps/_connection_info.py +18 -0
  10. singlestoredb/apps/_dashboards.py +47 -0
  11. singlestoredb/apps/_process.py +32 -0
  12. singlestoredb/apps/_python_udfs.py +100 -0
  13. singlestoredb/apps/_stdout_supress.py +30 -0
  14. singlestoredb/apps/_uvicorn_util.py +36 -0
  15. singlestoredb/auth.py +245 -0
  16. singlestoredb/config.py +484 -0
  17. singlestoredb/connection.py +1487 -0
  18. singlestoredb/converters.py +950 -0
  19. singlestoredb/docstring/__init__.py +33 -0
  20. singlestoredb/docstring/attrdoc.py +126 -0
  21. singlestoredb/docstring/common.py +230 -0
  22. singlestoredb/docstring/epydoc.py +267 -0
  23. singlestoredb/docstring/google.py +412 -0
  24. singlestoredb/docstring/numpydoc.py +562 -0
  25. singlestoredb/docstring/parser.py +100 -0
  26. singlestoredb/docstring/py.typed +1 -0
  27. singlestoredb/docstring/rest.py +256 -0
  28. singlestoredb/docstring/tests/__init__.py +1 -0
  29. singlestoredb/docstring/tests/_pydoctor.py +21 -0
  30. singlestoredb/docstring/tests/test_epydoc.py +729 -0
  31. singlestoredb/docstring/tests/test_google.py +1007 -0
  32. singlestoredb/docstring/tests/test_numpydoc.py +1100 -0
  33. singlestoredb/docstring/tests/test_parse_from_object.py +109 -0
  34. singlestoredb/docstring/tests/test_parser.py +248 -0
  35. singlestoredb/docstring/tests/test_rest.py +547 -0
  36. singlestoredb/docstring/tests/test_util.py +70 -0
  37. singlestoredb/docstring/util.py +141 -0
  38. singlestoredb/exceptions.py +120 -0
  39. singlestoredb/functions/__init__.py +16 -0
  40. singlestoredb/functions/decorator.py +201 -0
  41. singlestoredb/functions/dtypes.py +1793 -0
  42. singlestoredb/functions/ext/__init__.py +1 -0
  43. singlestoredb/functions/ext/arrow.py +375 -0
  44. singlestoredb/functions/ext/asgi.py +2133 -0
  45. singlestoredb/functions/ext/json.py +420 -0
  46. singlestoredb/functions/ext/mmap.py +413 -0
  47. singlestoredb/functions/ext/rowdat_1.py +724 -0
  48. singlestoredb/functions/ext/timer.py +89 -0
  49. singlestoredb/functions/ext/utils.py +218 -0
  50. singlestoredb/functions/signature.py +1578 -0
  51. singlestoredb/functions/typing/__init__.py +41 -0
  52. singlestoredb/functions/typing/numpy.py +20 -0
  53. singlestoredb/functions/typing/pandas.py +2 -0
  54. singlestoredb/functions/typing/polars.py +2 -0
  55. singlestoredb/functions/typing/pyarrow.py +2 -0
  56. singlestoredb/functions/utils.py +421 -0
  57. singlestoredb/fusion/__init__.py +11 -0
  58. singlestoredb/fusion/graphql.py +213 -0
  59. singlestoredb/fusion/handler.py +916 -0
  60. singlestoredb/fusion/handlers/__init__.py +0 -0
  61. singlestoredb/fusion/handlers/export.py +525 -0
  62. singlestoredb/fusion/handlers/files.py +690 -0
  63. singlestoredb/fusion/handlers/job.py +660 -0
  64. singlestoredb/fusion/handlers/models.py +250 -0
  65. singlestoredb/fusion/handlers/stage.py +502 -0
  66. singlestoredb/fusion/handlers/utils.py +324 -0
  67. singlestoredb/fusion/handlers/workspace.py +956 -0
  68. singlestoredb/fusion/registry.py +249 -0
  69. singlestoredb/fusion/result.py +399 -0
  70. singlestoredb/http/__init__.py +27 -0
  71. singlestoredb/http/connection.py +1267 -0
  72. singlestoredb/magics/__init__.py +34 -0
  73. singlestoredb/magics/run_personal.py +137 -0
  74. singlestoredb/magics/run_shared.py +134 -0
  75. singlestoredb/management/__init__.py +9 -0
  76. singlestoredb/management/billing_usage.py +148 -0
  77. singlestoredb/management/cluster.py +462 -0
  78. singlestoredb/management/export.py +295 -0
  79. singlestoredb/management/files.py +1102 -0
  80. singlestoredb/management/inference_api.py +105 -0
  81. singlestoredb/management/job.py +887 -0
  82. singlestoredb/management/manager.py +373 -0
  83. singlestoredb/management/organization.py +226 -0
  84. singlestoredb/management/region.py +169 -0
  85. singlestoredb/management/utils.py +423 -0
  86. singlestoredb/management/workspace.py +1927 -0
  87. singlestoredb/mysql/__init__.py +177 -0
  88. singlestoredb/mysql/_auth.py +298 -0
  89. singlestoredb/mysql/charset.py +214 -0
  90. singlestoredb/mysql/connection.py +2032 -0
  91. singlestoredb/mysql/constants/CLIENT.py +38 -0
  92. singlestoredb/mysql/constants/COMMAND.py +32 -0
  93. singlestoredb/mysql/constants/CR.py +78 -0
  94. singlestoredb/mysql/constants/ER.py +474 -0
  95. singlestoredb/mysql/constants/EXTENDED_TYPE.py +3 -0
  96. singlestoredb/mysql/constants/FIELD_TYPE.py +48 -0
  97. singlestoredb/mysql/constants/FLAG.py +15 -0
  98. singlestoredb/mysql/constants/SERVER_STATUS.py +10 -0
  99. singlestoredb/mysql/constants/VECTOR_TYPE.py +6 -0
  100. singlestoredb/mysql/constants/__init__.py +0 -0
  101. singlestoredb/mysql/converters.py +271 -0
  102. singlestoredb/mysql/cursors.py +896 -0
  103. singlestoredb/mysql/err.py +92 -0
  104. singlestoredb/mysql/optionfile.py +20 -0
  105. singlestoredb/mysql/protocol.py +450 -0
  106. singlestoredb/mysql/tests/__init__.py +19 -0
  107. singlestoredb/mysql/tests/base.py +126 -0
  108. singlestoredb/mysql/tests/conftest.py +37 -0
  109. singlestoredb/mysql/tests/test_DictCursor.py +132 -0
  110. singlestoredb/mysql/tests/test_SSCursor.py +141 -0
  111. singlestoredb/mysql/tests/test_basic.py +452 -0
  112. singlestoredb/mysql/tests/test_connection.py +851 -0
  113. singlestoredb/mysql/tests/test_converters.py +58 -0
  114. singlestoredb/mysql/tests/test_cursor.py +141 -0
  115. singlestoredb/mysql/tests/test_err.py +16 -0
  116. singlestoredb/mysql/tests/test_issues.py +514 -0
  117. singlestoredb/mysql/tests/test_load_local.py +75 -0
  118. singlestoredb/mysql/tests/test_nextset.py +88 -0
  119. singlestoredb/mysql/tests/test_optionfile.py +27 -0
  120. singlestoredb/mysql/tests/thirdparty/__init__.py +6 -0
  121. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/__init__.py +9 -0
  122. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/capabilities.py +323 -0
  123. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/dbapi20.py +865 -0
  124. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_capabilities.py +110 -0
  125. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_dbapi20.py +224 -0
  126. singlestoredb/mysql/tests/thirdparty/test_MySQLdb/test_MySQLdb_nonstandard.py +101 -0
  127. singlestoredb/mysql/times.py +23 -0
  128. singlestoredb/notebook/__init__.py +16 -0
  129. singlestoredb/notebook/_objects.py +213 -0
  130. singlestoredb/notebook/_portal.py +352 -0
  131. singlestoredb/py.typed +0 -0
  132. singlestoredb/pytest.py +352 -0
  133. singlestoredb/server/__init__.py +0 -0
  134. singlestoredb/server/docker.py +452 -0
  135. singlestoredb/server/free_tier.py +267 -0
  136. singlestoredb/tests/__init__.py +0 -0
  137. singlestoredb/tests/alltypes.sql +307 -0
  138. singlestoredb/tests/alltypes_no_nulls.sql +208 -0
  139. singlestoredb/tests/empty.sql +0 -0
  140. singlestoredb/tests/ext_funcs/__init__.py +702 -0
  141. singlestoredb/tests/local_infile.csv +3 -0
  142. singlestoredb/tests/test.ipynb +18 -0
  143. singlestoredb/tests/test.sql +680 -0
  144. singlestoredb/tests/test2.ipynb +18 -0
  145. singlestoredb/tests/test2.sql +1 -0
  146. singlestoredb/tests/test_basics.py +1332 -0
  147. singlestoredb/tests/test_config.py +318 -0
  148. singlestoredb/tests/test_connection.py +3103 -0
  149. singlestoredb/tests/test_dbapi.py +27 -0
  150. singlestoredb/tests/test_exceptions.py +45 -0
  151. singlestoredb/tests/test_ext_func.py +1472 -0
  152. singlestoredb/tests/test_ext_func_data.py +1101 -0
  153. singlestoredb/tests/test_fusion.py +1527 -0
  154. singlestoredb/tests/test_http.py +288 -0
  155. singlestoredb/tests/test_management.py +1599 -0
  156. singlestoredb/tests/test_plugin.py +33 -0
  157. singlestoredb/tests/test_results.py +171 -0
  158. singlestoredb/tests/test_types.py +132 -0
  159. singlestoredb/tests/test_udf.py +737 -0
  160. singlestoredb/tests/test_udf_returns.py +459 -0
  161. singlestoredb/tests/test_vectorstore.py +51 -0
  162. singlestoredb/tests/test_xdict.py +333 -0
  163. singlestoredb/tests/utils.py +141 -0
  164. singlestoredb/types.py +373 -0
  165. singlestoredb/utils/__init__.py +0 -0
  166. singlestoredb/utils/config.py +950 -0
  167. singlestoredb/utils/convert_rows.py +69 -0
  168. singlestoredb/utils/debug.py +13 -0
  169. singlestoredb/utils/dtypes.py +205 -0
  170. singlestoredb/utils/events.py +65 -0
  171. singlestoredb/utils/mogrify.py +151 -0
  172. singlestoredb/utils/results.py +585 -0
  173. singlestoredb/utils/xdict.py +425 -0
  174. singlestoredb/vectorstore.py +192 -0
  175. singlestoredb/warnings.py +5 -0
  176. singlestoredb-1.16.1.dist-info/METADATA +165 -0
  177. singlestoredb-1.16.1.dist-info/RECORD +183 -0
  178. singlestoredb-1.16.1.dist-info/WHEEL +5 -0
  179. singlestoredb-1.16.1.dist-info/entry_points.txt +2 -0
  180. singlestoredb-1.16.1.dist-info/licenses/LICENSE +201 -0
  181. singlestoredb-1.16.1.dist-info/top_level.txt +3 -0
  182. sqlx/__init__.py +4 -0
  183. sqlx/magic.py +113 -0
@@ -0,0 +1,256 @@
1
+ """ReST-style docstring parsing."""
2
+ import inspect
3
+ import re
4
+ import typing as T
5
+
6
+ from .common import DEPRECATION_KEYWORDS
7
+ from .common import Docstring
8
+ from .common import DocstringDeprecated
9
+ from .common import DocstringMeta
10
+ from .common import DocstringParam
11
+ from .common import DocstringRaises
12
+ from .common import DocstringReturns
13
+ from .common import DocstringStyle
14
+ from .common import PARAM_KEYWORDS
15
+ from .common import ParseError
16
+ from .common import RAISES_KEYWORDS
17
+ from .common import RenderingStyle
18
+ from .common import RETURNS_KEYWORDS
19
+ from .common import YIELDS_KEYWORDS
20
+
21
+
22
+ def _build_meta(args: T.List[str], desc: str) -> DocstringMeta:
23
+ key = args[0]
24
+
25
+ if key in PARAM_KEYWORDS:
26
+ if len(args) == 3:
27
+ key, type_name, arg_name = args
28
+ if type_name.endswith('?'):
29
+ is_optional = True
30
+ type_name = type_name[:-1]
31
+ else:
32
+ is_optional = False
33
+ elif len(args) == 2:
34
+ key, arg_name = args
35
+ type_name = None
36
+ is_optional = None
37
+ else:
38
+ raise ParseError(
39
+ f'Expected one or two arguments for a {key} keyword.',
40
+ )
41
+
42
+ match = re.match(r'.*defaults to (.+)', desc, flags=re.DOTALL)
43
+ default = match.group(1).rstrip('.') if match else None
44
+
45
+ return DocstringParam(
46
+ args=args,
47
+ description=desc,
48
+ arg_name=arg_name,
49
+ type_name=type_name,
50
+ is_optional=is_optional,
51
+ default=default,
52
+ )
53
+
54
+ if key in RETURNS_KEYWORDS | YIELDS_KEYWORDS:
55
+ if len(args) == 2:
56
+ type_name = args[1]
57
+ elif len(args) == 1:
58
+ type_name = None
59
+ else:
60
+ raise ParseError(
61
+ f'Expected one or no arguments for a {key} keyword.',
62
+ )
63
+
64
+ return DocstringReturns(
65
+ args=args,
66
+ description=desc,
67
+ type_name=type_name,
68
+ is_generator=key in YIELDS_KEYWORDS,
69
+ )
70
+
71
+ if key in DEPRECATION_KEYWORDS:
72
+ match = re.search(
73
+ r'^(?P<version>v?((?:\d+)(?:\.[0-9a-z\.]+))) (?P<desc>.+)',
74
+ desc,
75
+ flags=re.I,
76
+ )
77
+ return DocstringDeprecated(
78
+ args=args,
79
+ version=match.group('version') if match else None,
80
+ description=match.group('desc') if match else desc,
81
+ )
82
+
83
+ if key in RAISES_KEYWORDS:
84
+ if len(args) == 2:
85
+ type_name = args[1]
86
+ elif len(args) == 1:
87
+ type_name = None
88
+ else:
89
+ raise ParseError(
90
+ f'Expected one or no arguments for a {key} keyword.',
91
+ )
92
+ return DocstringRaises(
93
+ args=args, description=desc, type_name=type_name,
94
+ )
95
+
96
+ return DocstringMeta(args=args, description=desc)
97
+
98
+
99
+ def parse(text: T.Optional[str]) -> Docstring:
100
+ """Parse the ReST-style docstring into its components.
101
+
102
+ :returns: parsed docstring
103
+ """
104
+ ret = Docstring(style=DocstringStyle.REST)
105
+ if not text:
106
+ return ret
107
+
108
+ text = inspect.cleandoc(text)
109
+ match = re.search('^:', text, flags=re.M)
110
+ if match:
111
+ desc_chunk = text[:match.start()]
112
+ meta_chunk = text[match.start():]
113
+ else:
114
+ desc_chunk = text
115
+ meta_chunk = ''
116
+
117
+ parts = desc_chunk.split('\n', 1)
118
+ ret.short_description = parts[0] or None
119
+ if len(parts) > 1:
120
+ long_desc_chunk = parts[1] or ''
121
+ ret.blank_after_short_description = long_desc_chunk.startswith('\n')
122
+ ret.blank_after_long_description = long_desc_chunk.endswith('\n\n')
123
+ ret.long_description = long_desc_chunk.strip() or None
124
+
125
+ types = {}
126
+ rtypes = {}
127
+ for match in re.finditer(
128
+ r'(^:.*?)(?=^:|\Z)', meta_chunk, flags=re.S | re.M,
129
+ ):
130
+ chunk = match.group(0)
131
+ if not chunk:
132
+ continue
133
+ try:
134
+ args_chunk, desc_chunk = chunk.lstrip(':').split(':', 1)
135
+ except ValueError as ex:
136
+ raise ParseError(
137
+ f'Error parsing meta information near "{chunk}".',
138
+ ) from ex
139
+ args = args_chunk.split()
140
+ desc = desc_chunk.strip()
141
+
142
+ if '\n' in desc:
143
+ first_line, rest = desc.split('\n', 1)
144
+ desc = first_line + '\n' + inspect.cleandoc(rest)
145
+
146
+ # Add special handling for :type a: typename
147
+ if len(args) == 2 and args[0] == 'type':
148
+ types[args[1]] = desc
149
+ elif len(args) in [1, 2] and args[0] == 'rtype':
150
+ rtypes[None if len(args) == 1 else args[1]] = desc
151
+ else:
152
+ ret.meta.append(_build_meta(args, desc))
153
+
154
+ for meta in ret.meta:
155
+ if isinstance(meta, DocstringParam):
156
+ meta.type_name = meta.type_name or types.get(meta.arg_name)
157
+ elif isinstance(meta, DocstringReturns):
158
+ meta.type_name = meta.type_name or rtypes.get(meta.return_name)
159
+
160
+ if not any(isinstance(m, DocstringReturns) for m in ret.meta) and rtypes:
161
+ for return_name, type_name in rtypes.items():
162
+ ret.meta.append(
163
+ DocstringReturns(
164
+ args=[],
165
+ type_name=type_name,
166
+ description=None,
167
+ is_generator=False,
168
+ return_name=return_name,
169
+ ),
170
+ )
171
+
172
+ return ret
173
+
174
+
175
+ def compose(
176
+ docstring: Docstring,
177
+ rendering_style: RenderingStyle = RenderingStyle.COMPACT,
178
+ indent: str = ' ',
179
+ ) -> str:
180
+ """Render a parsed docstring into docstring text.
181
+
182
+ :param docstring: parsed docstring representation
183
+ :param rendering_style: the style to render docstrings
184
+ :param indent: the characters used as indentation in the docstring string
185
+ :returns: docstring text
186
+ """
187
+
188
+ def process_desc(desc: T.Optional[str]) -> str:
189
+ if not desc:
190
+ return ''
191
+
192
+ if rendering_style == RenderingStyle.CLEAN:
193
+ (first, *rest) = desc.splitlines()
194
+ return '\n'.join([' ' + first] + [indent + line for line in rest])
195
+
196
+ if rendering_style == RenderingStyle.EXPANDED:
197
+ (first, *rest) = desc.splitlines()
198
+ return '\n'.join(
199
+ ['\n' + indent + first] + [indent + line for line in rest],
200
+ )
201
+
202
+ return ' ' + desc
203
+
204
+ parts: T.List[str] = []
205
+ if docstring.short_description:
206
+ parts.append(docstring.short_description)
207
+ if docstring.blank_after_short_description:
208
+ parts.append('')
209
+ if docstring.long_description:
210
+ parts.append(docstring.long_description)
211
+ if docstring.blank_after_long_description:
212
+ parts.append('')
213
+
214
+ for meta in docstring.meta:
215
+ if isinstance(meta, DocstringParam):
216
+ if meta.type_name:
217
+ type_text = (
218
+ f' {meta.type_name}? '
219
+ if meta.is_optional
220
+ else f' {meta.type_name} '
221
+ )
222
+ else:
223
+ type_text = ' '
224
+ if rendering_style == RenderingStyle.EXPANDED:
225
+ text = f':param {meta.arg_name}:'
226
+ text += process_desc(meta.description)
227
+ parts.append(text)
228
+ if type_text[:-1]:
229
+ parts.append(f':type {meta.arg_name}:{type_text[:-1]}')
230
+ else:
231
+ text = f':param{type_text}{meta.arg_name}:'
232
+ text += process_desc(meta.description)
233
+ parts.append(text)
234
+ elif isinstance(meta, DocstringReturns):
235
+ type_text = f' {meta.type_name}' if meta.type_name else ''
236
+ key = 'yields' if meta.is_generator else 'returns'
237
+
238
+ if rendering_style == RenderingStyle.EXPANDED:
239
+ if meta.description:
240
+ text = f':{key}:'
241
+ text += process_desc(meta.description)
242
+ parts.append(text)
243
+ if type_text:
244
+ parts.append(f':rtype:{type_text}')
245
+ else:
246
+ text = f':{key}{type_text}:'
247
+ text += process_desc(meta.description)
248
+ parts.append(text)
249
+ elif isinstance(meta, DocstringRaises):
250
+ type_text = f' {meta.type_name} ' if meta.type_name else ''
251
+ text = f':raises{type_text}:' + process_desc(meta.description)
252
+ parts.append(text)
253
+ else:
254
+ text = f':{" ".join(meta.args)}:' + process_desc(meta.description)
255
+ parts.append(text)
256
+ return '\n'.join(parts)
@@ -0,0 +1 @@
1
+ """Tests for docstring parser."""
@@ -0,0 +1,21 @@
1
+ """Private pydoctor customization code in order to exclude the package
2
+ singlestoredb.docstring.tests from the API documentation. Based on Twisted code.
3
+ """
4
+ # pylint: disable=invalid-name
5
+
6
+ try:
7
+ from pydoctor.model import Documentable, PrivacyClass, System
8
+ except ImportError:
9
+ pass
10
+ else:
11
+
12
+ class HidesTestsPydoctorSystem(System):
13
+ """A PyDoctor "system" used to generate the docs."""
14
+
15
+ def privacyClass(self, documentable: Documentable) -> PrivacyClass:
16
+ """Report the privacy level for an object. Hide the module
17
+ 'singlestoredb.docstring.tests'.
18
+ """
19
+ if documentable.fullName().startswith('singlestoredb.docstring.tests'):
20
+ return PrivacyClass.HIDDEN
21
+ return super().privacyClass(documentable)