plotext-plus 1.0.9__py3-none-any.whl → 1.0.11__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.
- plotext_plus/__init__.py +20 -15
- plotext_plus/__main__.py +1 -0
- plotext_plus/_api.py +632 -371
- plotext_plus/_build.py +765 -149
- plotext_plus/_core.py +609 -164
- plotext_plus/_date.py +50 -32
- plotext_plus/_default.py +35 -28
- plotext_plus/_dict.py +807 -103
- plotext_plus/_doc.py +867 -296
- plotext_plus/_doc_utils.py +279 -245
- plotext_plus/_figure.py +1295 -303
- plotext_plus/_global.py +238 -140
- plotext_plus/_matrix.py +217 -63
- plotext_plus/_monitor.py +1036 -489
- plotext_plus/_output.py +29 -23
- plotext_plus/_shtab.py +2 -0
- plotext_plus/_themes.py +363 -247
- plotext_plus/_utility.py +581 -313
- plotext_plus/api.py +418 -332
- plotext_plus/charts.py +47 -24
- plotext_plus/core.py +570 -177
- plotext_plus/mcp_cli.py +15 -13
- plotext_plus/mcp_server.py +813 -332
- plotext_plus/plotext_cli.py +414 -275
- plotext_plus/plotting.py +86 -70
- plotext_plus/themes.py +10 -13
- plotext_plus/utilities.py +33 -33
- plotext_plus/utils.py +240 -140
- {plotext_plus-1.0.9.dist-info → plotext_plus-1.0.11.dist-info}/METADATA +32 -27
- plotext_plus-1.0.11.dist-info/RECORD +33 -0
- {plotext_plus-1.0.9.dist-info → plotext_plus-1.0.11.dist-info}/WHEEL +1 -1
- plotext_plus-1.0.9.dist-info/RECORD +0 -33
- {plotext_plus-1.0.9.dist-info → plotext_plus-1.0.11.dist-info}/entry_points.txt +0 -0
- {plotext_plus-1.0.9.dist-info → plotext_plus-1.0.11.dist-info}/licenses/LICENSE +0 -0
plotext_plus/_doc_utils.py
CHANGED
|
@@ -1,285 +1,319 @@
|
|
|
1
1
|
# this file contains all tools necessary to build the docstrings in _doc.py
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import copy
|
|
4
4
|
from inspect import getfullargspec as args
|
|
5
5
|
from re import sub
|
|
6
|
-
import copy
|
|
7
6
|
|
|
7
|
+
from plotext_plus._utility import colorize
|
|
8
|
+
from plotext_plus._utility import uncolorize
|
|
8
9
|
|
|
10
|
+
method_name_color = "blue+"
|
|
11
|
+
method_name_style = "bold"
|
|
12
|
+
alias_style = "italic"
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
alias_style = 'italic'
|
|
14
|
+
parameters_title_color = "none"
|
|
15
|
+
parameters_title_style = "none"
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
parameter_name_color = "red+"
|
|
18
|
+
parameter_name_style = "bold"
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
parameter_specs_color = "orange+"
|
|
21
|
+
parameter_specs_style = "dim"
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
parameter_specs_style = 'dim'
|
|
23
|
+
parameter_doc_style = "italic"
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
return_color = "orange+"
|
|
26
|
+
return_style = "bold"
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
return_style = 'bold'
|
|
28
|
+
warning = colorize("Warning", "orange", "bold")
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
nl = "\n"
|
|
31
|
+
sp = " "
|
|
32
|
+
cm = ", "
|
|
33
|
+
sc = "; "
|
|
29
34
|
|
|
30
|
-
nl = '\n'
|
|
31
|
-
sp = ' '
|
|
32
|
-
cm = ', '
|
|
33
|
-
sc = '; '
|
|
34
35
|
|
|
35
36
|
def correct_doc(doc):
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
37
|
+
doc = doc.strip()
|
|
38
|
+
doc = doc[:1].upper() + doc[1:]
|
|
39
|
+
doc = doc if len(doc) == 0 or doc[-1] == "." else doc + "."
|
|
40
|
+
doc = sub(" ", " ", doc)
|
|
41
|
+
return doc
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class ParameterClass: # parameter doc
|
|
45
|
+
def __init__(self, name, doc="", type="", default=""):
|
|
46
|
+
self.name = name.lower()
|
|
47
|
+
self.doc = correct_doc(doc)
|
|
48
|
+
self.type = None if type is None else str(type)
|
|
49
|
+
self.set_default(default)
|
|
50
|
+
|
|
51
|
+
def set_default(self, default=""):
|
|
52
|
+
if default == "":
|
|
53
|
+
self.default = ""
|
|
54
|
+
elif isinstance(default, str):
|
|
55
|
+
self.default = "'" + default + "'"
|
|
56
|
+
elif isinstance(default, float):
|
|
57
|
+
self.default = str(round(default, 3))
|
|
58
|
+
else:
|
|
59
|
+
self.default = str(default)
|
|
60
|
+
|
|
61
|
+
def get_doc(self):
|
|
62
|
+
name = colorize(self.name, parameter_name_color, parameter_name_style)
|
|
63
|
+
type = "" if self.type == "" else "type: " + str(self.type)
|
|
64
|
+
default = "" if self.default == "" else "default: " + self.default
|
|
65
|
+
specs = sc.join([spec for spec in [type, default] if spec != ""])
|
|
66
|
+
specs = (
|
|
67
|
+
nl + colorize(specs, parameter_specs_color, parameter_specs_style)
|
|
68
|
+
if specs != ""
|
|
69
|
+
else ""
|
|
70
|
+
)
|
|
71
|
+
doc = colorize(self.doc, style=parameter_doc_style)
|
|
72
|
+
return nl + name + sp + doc + specs
|
|
73
|
+
|
|
74
|
+
def copy(self, default=""):
|
|
75
|
+
par = copy.copy(self)
|
|
76
|
+
par.set_default(default)
|
|
77
|
+
return par
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class ParametersClass:
|
|
81
|
+
def __init__(self):
|
|
82
|
+
self.list = []
|
|
83
|
+
|
|
84
|
+
def append(self, parameter):
|
|
85
|
+
self.list.append(parameter)
|
|
86
|
+
|
|
87
|
+
def add(self, name, doc="", type="", default=""):
|
|
88
|
+
self.append(ParameterClass(name, doc, type, default))
|
|
89
|
+
|
|
90
|
+
def get_title(self):
|
|
91
|
+
lp = len(self.list)
|
|
92
|
+
title = "This is its parameter:" if lp == 1 else "These are its parameters:"
|
|
93
|
+
return colorize(title, parameters_title_color, parameters_title_style)
|
|
94
|
+
|
|
95
|
+
def get_doc(self):
|
|
96
|
+
docs = [el.get_doc() for el in self.list]
|
|
97
|
+
return nl + self.get_title() + nl + nl.join(docs) if len(self.list) != 0 else ""
|
|
98
|
+
|
|
99
|
+
def get_parameter(self, name):
|
|
100
|
+
names = [el.name for el in self.list]
|
|
101
|
+
if name not in names:
|
|
102
|
+
print(warning, "no parameter", name, "found")
|
|
103
|
+
index = names.index(name) if name in names else None
|
|
104
|
+
return self.list[index] if name in names else None
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class OutputClass:
|
|
108
|
+
def __init__(self, doc="", type=None):
|
|
109
|
+
self.type = type
|
|
110
|
+
self.doc = correct_doc(doc)
|
|
111
|
+
|
|
112
|
+
def get_doc(self):
|
|
113
|
+
title = colorize("Returns", return_color, return_style)
|
|
114
|
+
type = "" if self.type is None else "type: " + str(self.type)
|
|
115
|
+
type = (
|
|
116
|
+
colorize(type, parameter_specs_color, parameter_specs_style)
|
|
117
|
+
if type != ""
|
|
118
|
+
else ""
|
|
119
|
+
)
|
|
120
|
+
doc = colorize(self.doc, style=parameter_doc_style)
|
|
121
|
+
return nl + title + sp + doc + nl + type if self.doc != "" else ""
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class MethodClass:
|
|
125
|
+
def __init__(self, name, alias=None):
|
|
126
|
+
self.name = name.lower()
|
|
127
|
+
self.set_doc()
|
|
128
|
+
self.alias = alias
|
|
129
|
+
|
|
130
|
+
self.parameters = ParametersClass()
|
|
131
|
+
self.set_output()
|
|
132
|
+
self.status = False
|
|
133
|
+
|
|
134
|
+
def set_doc(self, doc=""):
|
|
135
|
+
self.doc = correct_doc(doc)
|
|
136
|
+
|
|
137
|
+
def set_output(self, doc="", type=""):
|
|
138
|
+
self.output = OutputClass(doc, type)
|
|
139
|
+
|
|
140
|
+
def append_parameter(self, parameter_object):
|
|
141
|
+
self.parameters.append(parameter_object)
|
|
142
|
+
|
|
143
|
+
def add_parameter(self, name, doc="", type="", default=""):
|
|
144
|
+
self.parameters.add(name, doc, type, default)
|
|
145
|
+
|
|
146
|
+
def get_title(self):
|
|
147
|
+
return colorize(self.name, method_name_color, method_name_style)
|
|
148
|
+
|
|
149
|
+
def get_doc(self):
|
|
150
|
+
alias = (
|
|
151
|
+
(
|
|
152
|
+
nl
|
|
153
|
+
+ "The methods "
|
|
154
|
+
+ colorize(self.name + "()", style=alias_style)
|
|
155
|
+
+ " and "
|
|
156
|
+
+ colorize(self.alias + "()", style=alias_style)
|
|
157
|
+
+ " are equivalent."
|
|
158
|
+
)
|
|
159
|
+
if self.alias != ""
|
|
160
|
+
else ""
|
|
161
|
+
)
|
|
162
|
+
pars = self.parameters.get_doc()
|
|
163
|
+
out = self.output.get_doc()
|
|
164
|
+
return nl.join([el for el in [self.doc, alias, pars, out] if el != ""])
|
|
165
|
+
|
|
166
|
+
def get_parameters(self):
|
|
167
|
+
return [el.name for el in self.parameters.list]
|
|
168
|
+
|
|
169
|
+
def get_parameter(self, name):
|
|
170
|
+
return self.parameters.get_parameter(name)
|
|
171
|
+
|
|
172
|
+
def show(self):
|
|
173
|
+
print(self.get_doc())
|
|
165
174
|
|
|
166
175
|
|
|
167
|
-
|
|
176
|
+
def get_parameters(method):
|
|
177
|
+
spec = args(method)
|
|
178
|
+
parameters = (
|
|
179
|
+
([spec.varargs] if spec.varargs is not None else [])
|
|
180
|
+
+ spec.args
|
|
181
|
+
+ spec.kwonlyargs
|
|
182
|
+
)
|
|
183
|
+
parameters = [el for el in parameters if el != "self"]
|
|
184
|
+
# defaults = spec.defaults if spec.defaults is not None else spec.kwonlydefaults.values() if spec.kwonlydefaults is not None else []
|
|
185
|
+
# lp, ld = len(parameters), len(defaults)
|
|
186
|
+
# defaults = [None] * (lp - ld) + list(defaults)
|
|
187
|
+
# return [(parameters[i], defaults[i]) for i in range(lp)]
|
|
188
|
+
return parameters # , defaults
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
class DocumentationClass: # a list of MethodClass objects
|
|
168
192
|
"It contains the doc-strings of all the main plotext functions."
|
|
169
193
|
|
|
170
194
|
def __init__(self):
|
|
171
|
-
|
|
195
|
+
self._methods = []
|
|
172
196
|
|
|
173
|
-
def _add_method(self, name, alias
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
197
|
+
def _add_method(self, name, alias=""):
|
|
198
|
+
method = MethodClass(name, alias)
|
|
199
|
+
self._methods.append(method)
|
|
200
|
+
setattr(self, name, method.show)
|
|
177
201
|
|
|
178
202
|
def _last(self):
|
|
179
|
-
|
|
203
|
+
return self._methods[-1]
|
|
180
204
|
|
|
181
205
|
def _set_doc(self, doc):
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
def _add_parameter(self, name, doc = '', type = '', default = ''):
|
|
185
|
-
self._last().add_parameter(name, doc, type, default)
|
|
206
|
+
self._last().set_doc(doc)
|
|
186
207
|
|
|
187
|
-
def
|
|
188
|
-
|
|
208
|
+
def _add_parameter(self, name, doc="", type="", default=""):
|
|
209
|
+
self._last().add_parameter(name, doc, type, default)
|
|
210
|
+
|
|
211
|
+
def _set_output(self, doc="", type=""):
|
|
212
|
+
self._last().set_output(doc, type)
|
|
189
213
|
|
|
190
214
|
def _get_method(self, name):
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
215
|
+
names = [el.name for el in self._methods]
|
|
216
|
+
if name not in names:
|
|
217
|
+
print(warning, "no method", name + "() found")
|
|
218
|
+
return self._methods[names.index(name)] if name in names else None
|
|
195
219
|
|
|
196
220
|
def _get_parameters(self, parameter, method):
|
|
197
|
-
|
|
198
|
-
|
|
221
|
+
method = self.get_method(method)
|
|
222
|
+
return method.get_parameters(parameter) if method is not None else None
|
|
199
223
|
|
|
200
|
-
def _add_past_parameter(self, name, method, default
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
224
|
+
def _add_past_parameter(self, name, method, default=None):
|
|
225
|
+
method = self._get_method(method)
|
|
226
|
+
parameter = method.get_parameter(name) if method is not None else None
|
|
227
|
+
parameter = parameter if default is None else parameter.copy(default)
|
|
228
|
+
self._last().append_parameter(parameter) if parameter is not None else None
|
|
205
229
|
|
|
206
230
|
def _set_past_output(self, method):
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
231
|
+
method = self.get_method(method)
|
|
232
|
+
output = method.output
|
|
233
|
+
self._set_output(output.type, output.doc)
|
|
210
234
|
|
|
211
235
|
def all(self):
|
|
212
|
-
|
|
213
|
-
|
|
236
|
+
docs = (nl * 3).join(
|
|
237
|
+
[
|
|
238
|
+
el.get_title() + nl + el.get_doc()
|
|
239
|
+
for el in self._methods
|
|
240
|
+
if el.status in [0, 1]
|
|
241
|
+
]
|
|
242
|
+
)
|
|
243
|
+
print(docs)
|
|
214
244
|
|
|
215
245
|
def _add_function(self, function):
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
class
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
246
|
+
name = function.__name__
|
|
247
|
+
method = self._get_method(name)
|
|
248
|
+
name += "()"
|
|
249
|
+
if method is None:
|
|
250
|
+
print(warning, name, "doc not present")
|
|
251
|
+
return
|
|
252
|
+
doc = method.get_doc()
|
|
253
|
+
function.__doc__ = uncolorize(doc)
|
|
254
|
+
function.doc = lambda: print(doc)
|
|
255
|
+
parameters_actual = get_parameters(function)
|
|
256
|
+
parameters_found = method.get_parameters()
|
|
257
|
+
if parameters_actual != parameters_found:
|
|
258
|
+
actual = colorize(cm.join(parameters_actual), style="italic")
|
|
259
|
+
found = colorize(cm.join(parameters_found), style="italic")
|
|
260
|
+
print(warning, "the parameters of", name, "are", actual, "not", found + ".")
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
class ParameterTypes:
|
|
264
|
+
def __init__(self):
|
|
265
|
+
self.int = "an integer"
|
|
266
|
+
self.float = "a float"
|
|
267
|
+
self.num = "a number"
|
|
268
|
+
self.str = "a string"
|
|
269
|
+
self.bool = "a Boolean"
|
|
270
|
+
|
|
271
|
+
self.ints = "integers"
|
|
272
|
+
self.floats = "floats"
|
|
273
|
+
self.nums = "numbers"
|
|
274
|
+
self.strs = "strings"
|
|
275
|
+
self.bools = "Booleans"
|
|
276
|
+
|
|
277
|
+
self.list_int = lambda n="many": self.plural(self.ints, n)
|
|
278
|
+
self.list_float = lambda n="many": self.plural(self.floats, n)
|
|
279
|
+
self.list_num = lambda n="many": self.plural(self.nums, n)
|
|
280
|
+
self.list_str = lambda n="many": self.plural(self.strs, n)
|
|
281
|
+
self.list_bool = lambda n="many": self.plural(self.bools, n)
|
|
282
|
+
|
|
283
|
+
self.fig = "a plotext figure"
|
|
284
|
+
self.xy = "one or two lists of numbers or string dates"
|
|
285
|
+
self.multiple_xy = "an optional list of numbers or date strings and a mandatory matrix of numbers"
|
|
286
|
+
self.x = "a list of numbers or string dates"
|
|
287
|
+
self.marker = "a string or a list of strings"
|
|
288
|
+
self.color = "a string or an integer (from 0 to 255) or a tuple of 3 integers (from 0 to 255)"
|
|
289
|
+
self.colors = "strings or integers (from 0 to 255) or tuples of 3 integers (from 0 to 255)"
|
|
290
|
+
self.list_color = lambda n="many": self.plural(self.colors, n)
|
|
291
|
+
self.color_list = self.color + " or a list of those"
|
|
292
|
+
self.str_list = self.mix(self.str, self.list_str())
|
|
293
|
+
|
|
294
|
+
self.str_int = self.mix(self.str, self.int)
|
|
295
|
+
self.str_num = self.mix(self.str, self.num)
|
|
296
|
+
self.list_str_num = lambda n="many": self.plural(
|
|
297
|
+
self.mix(self.strs, self.nums), n
|
|
298
|
+
)
|
|
299
|
+
self.list_num_bool = lambda n="many": self.plural(
|
|
300
|
+
self.mix(self.nums, self.bools), n
|
|
301
|
+
)
|
|
302
|
+
self.bool_num_str = self.mix(self.bool, self.num, self.str)
|
|
303
|
+
self.dic = "a dictionary with mandatory keys: 'Open', 'Close', 'High', 'Low'; each value should be a list of numbers."
|
|
304
|
+
self.matrix = "a list of numbers or a list of tuples 3 integers (from 0 to 255)"
|
|
305
|
+
self.datetime = "a datetime object"
|
|
306
|
+
self.list_datetime = self.plural(self.datetime)
|
|
307
|
+
self.data = "a 2 dimensional matrix of numbers or strings"
|
|
308
|
+
|
|
309
|
+
def plural(self, type, n="many"):
|
|
310
|
+
return "a list of " + (str(n) + sp if not isinstance(n, str) else "") + type
|
|
311
|
+
|
|
312
|
+
def mix(self, *types):
|
|
313
|
+
return " or ".join(types)
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
documentation = DocumentationClass()
|
|
283
317
|
method = documentation._add_method
|
|
284
318
|
doc = documentation._set_doc
|
|
285
319
|
par = documentation._add_parameter
|
|
@@ -288,4 +322,4 @@ out = documentation._set_output
|
|
|
288
322
|
past_out = documentation._set_past_output
|
|
289
323
|
add = documentation._add_function
|
|
290
324
|
|
|
291
|
-
t =
|
|
325
|
+
t = ParameterTypes()
|