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,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)
|