ygo 1.0.2__tar.gz → 1.0.4__tar.gz
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 ygo might be problematic. Click here for more details.
- {ygo-1.0.2/ygo.egg-info → ygo-1.0.4}/PKG-INFO +3 -1
- {ygo-1.0.2 → ygo-1.0.4}/pyproject.toml +8 -2
- ygo-1.0.4/qdf/__init__.py +529 -0
- ygo-1.0.4/qdf/errors.py +31 -0
- ygo-1.0.4/qdf/expr.py +301 -0
- ygo-1.0.4/qdf/qdf.py +158 -0
- ygo-1.0.4/qdf/udf/__init__.py +14 -0
- ygo-1.0.4/qdf/udf/base_udf.py +145 -0
- ygo-1.0.4/qdf/udf/cs_udf.py +97 -0
- ygo-1.0.4/qdf/udf/d_udf.py +176 -0
- ygo-1.0.4/qdf/udf/ind_udf.py +202 -0
- ygo-1.0.4/qdf/udf/ts_udf.py +175 -0
- {ygo-1.0.2 → ygo-1.0.4}/ycat/client.py +6 -3
- {ygo-1.0.2 → ygo-1.0.4/ygo.egg-info}/PKG-INFO +3 -1
- {ygo-1.0.2 → ygo-1.0.4}/ygo.egg-info/SOURCES.txt +10 -0
- {ygo-1.0.2 → ygo-1.0.4}/ygo.egg-info/requires.txt +2 -0
- {ygo-1.0.2 → ygo-1.0.4}/ygo.egg-info/top_level.txt +1 -0
- {ygo-1.0.2 → ygo-1.0.4}/ylog/core.py +17 -14
- {ygo-1.0.2 → ygo-1.0.4}/LICENSE +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/README.md +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/setup.cfg +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ycat/__init__.py +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ycat/dtype.py +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ycat/parse.py +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ycat/yck.py +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ygo/__init__.py +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ygo/exceptions.py +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ygo/ygo.py +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ygo.egg-info/dependency_links.txt +0 -0
- {ygo-1.0.2 → ygo-1.0.4}/ylog/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ygo
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.4
|
|
4
4
|
Project-URL: homepage, https://github.com/link-yundi/ygo
|
|
5
5
|
Project-URL: repository, https://github.com/link-yundi/ygo
|
|
6
6
|
Requires-Python: >=3.8
|
|
@@ -9,6 +9,7 @@ License-File: LICENSE
|
|
|
9
9
|
Requires-Dist: clickhouse-driver>=0.2.9
|
|
10
10
|
Requires-Dist: dynaconf>=3.2.11
|
|
11
11
|
Requires-Dist: joblib>=1.4.2
|
|
12
|
+
Requires-Dist: lark>=1.2.2
|
|
12
13
|
Requires-Dist: loguru>=0.7.3
|
|
13
14
|
Requires-Dist: pandas>=2.0.3
|
|
14
15
|
Requires-Dist: polars>=1.8.2
|
|
@@ -16,6 +17,7 @@ Requires-Dist: pyarrow>=17.0.0
|
|
|
16
17
|
Requires-Dist: pymysql>=1.1.1
|
|
17
18
|
Requires-Dist: sqlalchemy>=2.0.40
|
|
18
19
|
Requires-Dist: sqlparse>=0.5.3
|
|
20
|
+
Requires-Dist: toolz>=1.0.0
|
|
19
21
|
Requires-Dist: tqdm>=4.67.1
|
|
20
22
|
Dynamic: license-file
|
|
21
23
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ygo"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.4"
|
|
8
8
|
description = ""
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -12,6 +12,7 @@ dependencies = [
|
|
|
12
12
|
"clickhouse-driver>=0.2.9",
|
|
13
13
|
"dynaconf>=3.2.11",
|
|
14
14
|
"joblib>=1.4.2",
|
|
15
|
+
"lark>=1.2.2",
|
|
15
16
|
"loguru>=0.7.3",
|
|
16
17
|
"pandas>=2.0.3",
|
|
17
18
|
"polars>=1.8.2",
|
|
@@ -19,13 +20,18 @@ dependencies = [
|
|
|
19
20
|
"pymysql>=1.1.1",
|
|
20
21
|
"sqlalchemy>=2.0.40",
|
|
21
22
|
"sqlparse>=0.5.3",
|
|
23
|
+
"toolz>=1.0.0",
|
|
22
24
|
"tqdm>=4.67.1",
|
|
23
25
|
]
|
|
24
26
|
|
|
25
27
|
[tool.setuptools.packages.find]
|
|
26
28
|
where = ["."]
|
|
27
|
-
include = ["ygo", "ygo.*", "ylog", "ylog.*", "ycat", "ycat.*"]
|
|
29
|
+
include = ["ygo", "ygo.*", "ylog", "ylog.*", "ycat", "ycat.*", "qdf", "qdf.*"]
|
|
28
30
|
|
|
29
31
|
[project.urls]
|
|
30
32
|
homepage = "https://github.com/link-yundi/ygo"
|
|
31
33
|
repository = "https://github.com/link-yundi/ygo"
|
|
34
|
+
|
|
35
|
+
[[index]]
|
|
36
|
+
url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/"
|
|
37
|
+
default = true
|
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
---------------------------------------------
|
|
4
|
+
Created on 2025/3/5 21:40
|
|
5
|
+
@author: ZhangYundi
|
|
6
|
+
@email: yundi.xxii@outlook.com
|
|
7
|
+
---------------------------------------------
|
|
8
|
+
"""
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import math
|
|
12
|
+
from functools import wraps
|
|
13
|
+
|
|
14
|
+
import polars as pl
|
|
15
|
+
|
|
16
|
+
from .qdf import QDF
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def signature(function):
|
|
20
|
+
@wraps(function)
|
|
21
|
+
def wrapper(*args, **kwargs):
|
|
22
|
+
args = [str(arg) for arg in args]
|
|
23
|
+
for k, v in kwargs.items():
|
|
24
|
+
args.append(f"{k}={v}")
|
|
25
|
+
string = f"{function.__name__}({', '.join(args)})"
|
|
26
|
+
return string
|
|
27
|
+
|
|
28
|
+
return wrapper
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def from_polars(df: pl.DataFrame, index: tuple[str] = ("date", "time", "asset"), align: bool = True, ) -> QDF:
|
|
32
|
+
return QDF(df, index, align,)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@signature
|
|
36
|
+
def abs(expr: str): ...
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@signature
|
|
40
|
+
def log(expr: str, base=math.e): ...
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@signature
|
|
44
|
+
def sqrt(expr: str): ...
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@signature
|
|
48
|
+
def square(expr: str): ...
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@signature
|
|
52
|
+
def cube(expr: str): ...
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@signature
|
|
56
|
+
def cbrt(expr: str): ...
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@signature
|
|
60
|
+
def sin(expr: str): ...
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@signature
|
|
64
|
+
def sinh(expr: str): ...
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@signature
|
|
68
|
+
def arcsin(expr: str): ...
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@signature
|
|
72
|
+
def arcsinh(expr: str): ...
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@signature
|
|
76
|
+
def cos(expr: str): ...
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@signature
|
|
80
|
+
def cosh(expr: str): ...
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
@signature
|
|
84
|
+
def arccos(expr: str): ...
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@signature
|
|
88
|
+
def arccosh(expr: str): ...
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@signature
|
|
92
|
+
def tan(expr: str): ...
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
@signature
|
|
96
|
+
def tanh(expr: str): ...
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@signature
|
|
100
|
+
def arctan(expr: str): ...
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
@signature
|
|
104
|
+
def arctanh(expr: str): ...
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
@signature
|
|
108
|
+
def sign(expr: str): ...
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@signature
|
|
112
|
+
def sigmoid(expr: str): ...
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
@signature
|
|
116
|
+
def cot(expr: str): ...
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@signature
|
|
120
|
+
def degrees(expr: str): ...
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
@signature
|
|
124
|
+
def ind_entropy(expr: str, windows: int): ...
|
|
125
|
+
|
|
126
|
+
@signature
|
|
127
|
+
def d_entropy(expr: str, windows: int): ...
|
|
128
|
+
|
|
129
|
+
@signature
|
|
130
|
+
def cs_entropy(expr: str, windows: int): ...
|
|
131
|
+
|
|
132
|
+
@signature
|
|
133
|
+
def ts_entropy(expr: str, windows: int): ...
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
@signature
|
|
137
|
+
def exp(expr: str): ...
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
@signature
|
|
141
|
+
def log1p(expr: str): ...
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
@signature
|
|
145
|
+
def clip(expr: str, lower_bound, upper_bound): ...
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
@signature
|
|
149
|
+
def cs_ufit(expr: str): ...
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
@signature
|
|
153
|
+
def cs_rank(expr: str): ...
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
@signature
|
|
157
|
+
def cs_demean(expr: str): ...
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
@signature
|
|
161
|
+
def cs_mean(expr: str): ...
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
@signature
|
|
165
|
+
def cs_mid(expr: str): ...
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
@signature
|
|
169
|
+
def cs_moderate(expr: str): ...
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
@signature
|
|
173
|
+
def cs_qcut(expr: str, N: int = 10): ...
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
@signature
|
|
177
|
+
def cs_ic(left: str, right: str): ...
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
@signature
|
|
181
|
+
def cs_corr(left: str, right: str): ...
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
@signature
|
|
185
|
+
def cs_std(expr: str): ...
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
@signature
|
|
189
|
+
def cs_var(expr: str): ...
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
@signature
|
|
193
|
+
def cs_skew(expr: str): ...
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
@signature
|
|
197
|
+
def cs_slope(left: str, right: str): ...
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
@signature
|
|
201
|
+
def cs_resid(left: str, right: str): ...
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
@signature
|
|
205
|
+
def cs_zscore(expr: str): ...
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
@signature
|
|
209
|
+
def cs_midby(expr: str, *by: str): ...
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
@signature
|
|
213
|
+
def cs_meanby(expr: str, *by: str): ...
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
@signature
|
|
217
|
+
def cs_max(expr: str): ...
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
@signature
|
|
221
|
+
def cs_min(expr: str): ...
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
@signature
|
|
225
|
+
def cs_peakmax(expr: str): ...
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
@signature
|
|
229
|
+
def cs_peakmin(expr: str): ...
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
@signature
|
|
233
|
+
def ts_mean(expr: str, windows: int): ...
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
@signature
|
|
237
|
+
def ts_std(expr: str, windows: int): ...
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
@signature
|
|
241
|
+
def ts_sum(expr: str, windows: int): ...
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
@signature
|
|
245
|
+
def ts_var(expr: str, windows: int): ...
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
@signature
|
|
249
|
+
def ts_skew(expr: str, windows: int): ...
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
@signature
|
|
253
|
+
def ts_ref(expr: str, windows: int): ...
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
@signature
|
|
257
|
+
def ts_mid(expr: str, windows: int): ...
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
@signature
|
|
261
|
+
def ts_mad(expr: str, windows: int): ...
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
@signature
|
|
265
|
+
def ts_rank(expr: str, windows: int): ...
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
@signature
|
|
269
|
+
def ts_max(expr: str, windows: int): ...
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
@signature
|
|
273
|
+
def ts_min(expr: str, windows: int): ...
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
@signature
|
|
277
|
+
def ts_ewmmean(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
@signature
|
|
281
|
+
def ts_ewmstd(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
@signature
|
|
285
|
+
def ts_ewmvar(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
@signature
|
|
289
|
+
def ts_cv(expr: str, windows: int): ...
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
@signature
|
|
293
|
+
def ts_snr(expr: str, windows: int): ...
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
@signature
|
|
297
|
+
def ts_diff(expr: str, windows: int): ...
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
@signature
|
|
301
|
+
def ts_pct(expr: str, windows: int): ...
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
@signature
|
|
305
|
+
def ts_slope(left: str, right: str, windows: int): ...
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
@signature
|
|
309
|
+
def ts_corr(left: str, right: str, windows: int): ...
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
@signature
|
|
313
|
+
def ts_cov(left: str, right: str, windows: int): ...
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
@signature
|
|
317
|
+
def ts_resid(left: str, right: str, windows: int): ...
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
@signature
|
|
321
|
+
def ts_quantile(expr: str, windows: int, q: float): ...
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
@signature
|
|
325
|
+
def ts_prod(expr: str, windows: int): ...
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
@signature
|
|
329
|
+
def d_mean(expr: str, windows: int): ...
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
@signature
|
|
333
|
+
def d_std(expr: str, windows: int): ...
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
@signature
|
|
337
|
+
def d_sum(expr: str, windows: int): ...
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
@signature
|
|
341
|
+
def d_var(expr: str, windows: int): ...
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
@signature
|
|
345
|
+
def d_skew(expr: str, windows: int): ...
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
@signature
|
|
349
|
+
def d_ref(expr: str, windows: int): ...
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
@signature
|
|
353
|
+
def d_mid(expr: str, windows: int): ...
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
@signature
|
|
357
|
+
def d_mad(expr: str, windows: int): ...
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
@signature
|
|
361
|
+
def d_rank(expr: str, windows: int): ...
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
@signature
|
|
365
|
+
def d_max(expr: str, windows: int): ...
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
@signature
|
|
369
|
+
def d_min(expr: str, windows: int): ...
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
@signature
|
|
373
|
+
def d_ewmmean(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
@signature
|
|
377
|
+
def d_ewmstd(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
@signature
|
|
381
|
+
def d_ewmvar(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
@signature
|
|
385
|
+
def d_cv(expr: str, windows: int): ...
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
@signature
|
|
389
|
+
def d_snr(expr: str, windows: int): ...
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
@signature
|
|
393
|
+
def d_diff(expr: str, windows: int): ...
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
@signature
|
|
397
|
+
def d_pct(expr: str, windows: int): ...
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
@signature
|
|
401
|
+
def d_slope(left: str, right: str, windows: int): ...
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
@signature
|
|
405
|
+
def d_corr(left: str, right: str, windows: int): ...
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
@signature
|
|
409
|
+
def d_cov(left: str, right: str, windows: int): ...
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
@signature
|
|
413
|
+
def d_resid(left: str, right: str, windows: int): ...
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
@signature
|
|
417
|
+
def d_quantile(expr: str, windows: int, q: float): ...
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
@signature
|
|
421
|
+
def d_prod(expr: str, windows: int): ...
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
@signature
|
|
425
|
+
def ind_mean(expr: str, windows: int): ...
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
@signature
|
|
429
|
+
def ind_std(expr: str, windows: int): ...
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
@signature
|
|
433
|
+
def ind_sum(expr: str, windows: int): ...
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
@signature
|
|
437
|
+
def ind_var(expr: str, windows: int): ...
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
@signature
|
|
441
|
+
def ind_skew(expr: str, windows: int): ...
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
@signature
|
|
445
|
+
def ind_ref(expr: str, windows: int): ...
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
@signature
|
|
449
|
+
def ind_mid(expr: str, windows: int): ...
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
@signature
|
|
453
|
+
def ind_mad(expr: str, windows: int): ...
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
@signature
|
|
457
|
+
def ind_rank(expr: str, windows: int): ...
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
@signature
|
|
461
|
+
def ind_max(expr: str, windows: int): ...
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
@signature
|
|
465
|
+
def ind_min(expr: str, windows: int): ...
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
@signature
|
|
469
|
+
def ind_ewmmean(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
@signature
|
|
473
|
+
def ind_ewmstd(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
@signature
|
|
477
|
+
def ind_ewmvar(expr: str, com=None, span=None, half_life=None, alpha=None): ...
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
@signature
|
|
481
|
+
def ind_cv(expr: str, windows: int): ...
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
@signature
|
|
485
|
+
def ind_snr(expr: str, windows: int): ...
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
@signature
|
|
489
|
+
def ind_diff(expr: str, windows: int): ...
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
@signature
|
|
493
|
+
def ind_pct(expr: str, windows: int): ...
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
@signature
|
|
497
|
+
def ind_slope(left: str, right: str, windows: int): ...
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
@signature
|
|
501
|
+
def ind_corr(left: str, right: str, windows: int): ...
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
@signature
|
|
505
|
+
def ind_cov(left: str, right: str, windows: int): ...
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
@signature
|
|
509
|
+
def ind_resid(left: str, right: str, windows: int): ...
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
@signature
|
|
513
|
+
def ind_quantile(expr: str, windows: int, q: float): ...
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
@signature
|
|
517
|
+
def ind_prod(expr: str, windows: int): ...
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
@signature
|
|
521
|
+
def max(*exprs: str): ...
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
@signature
|
|
525
|
+
def min(*exprs: str): ...
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
@signature
|
|
529
|
+
def sum(*exprs: str): ...
|
ygo-1.0.4/qdf/errors.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
---------------------------------------------
|
|
4
|
+
Created on 2025/5/16 10:47
|
|
5
|
+
@author: ZhangYundi
|
|
6
|
+
@email: yundi.xxii@outlook.com
|
|
7
|
+
---------------------------------------------
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class ParseError(Exception):
|
|
14
|
+
message: str
|
|
15
|
+
|
|
16
|
+
def __str__(self):
|
|
17
|
+
return f"ParseError(message={self.message})"
|
|
18
|
+
|
|
19
|
+
@dataclass
|
|
20
|
+
class CalculateError(Exception):
|
|
21
|
+
message: str
|
|
22
|
+
|
|
23
|
+
def __str__(self):
|
|
24
|
+
return f"CalculateError(message={self.message})"
|
|
25
|
+
|
|
26
|
+
@dataclass
|
|
27
|
+
class PolarsError(Exception):
|
|
28
|
+
message: str
|
|
29
|
+
|
|
30
|
+
def __str__(self):
|
|
31
|
+
return f"PolarsError(message={self.message})"
|