Qubx 0.2.80__cp311-cp311-manylinux_2_35_x86_64.whl → 0.2.82__cp311-cp311-manylinux_2_35_x86_64.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.

Potentially problematic release.


This version of Qubx might be problematic. Click here for more details.

qubx/data/helpers.py CHANGED
@@ -166,9 +166,11 @@ class InMemoryCachedReader(InMemoryDataFrameReader):
166
166
  for (s, e), data in zip(_ranges, _results):
167
167
  assert isinstance(data, pd.DataFrame)
168
168
  try:
169
- data_symbols = data.index.get_level_values(1).unique()
170
- for smb in data_symbols:
171
- _ohlcs[smb].append(data.loc[pd.IndexSlice[:, smb], :].droplevel(1))
169
+ # - some periods of data may be empty so just skipping it to avoid error log
170
+ if not data.empty:
171
+ data_symbols = data.index.get_level_values(1).unique()
172
+ for smb in data_symbols:
173
+ _ohlcs[smb].append(data.loc[pd.IndexSlice[:, smb], :].droplevel(1))
172
174
  except Exception as exc:
173
175
  logger.error(f"> Failed to load data for {s} - {e} : {str(exc)}")
174
176
 
qubx/pandaz/utils.py CHANGED
@@ -5,7 +5,7 @@ import numpy as np
5
5
 
6
6
  from numpy.lib.stride_tricks import as_strided as stride
7
7
 
8
- from qubx.utils.misc import Struct, blue
8
+ from qubx.utils.misc import Struct
9
9
 
10
10
 
11
11
  def has_columns(x, *args):
@@ -572,16 +572,20 @@ class OhlcDict(dict):
572
572
  _fields: Set[str]
573
573
 
574
574
  def __init__(self, orig: dict):
575
+ _o_copy = {}
575
576
  if isinstance(orig, dict):
576
577
  _lst = []
577
578
  for k, o in orig.items():
578
- if not k[0].isalpha():
579
- raise ValueError("Keys in the dictionary must start with an alphabet")
580
579
  if not isinstance(o, (pd.DataFrame | pd.Series)):
581
- raise ValueError("All values in the dictionary must be pandas Series or DataFrames")
582
- _lst.extend(o.columns.values)
580
+ raise ValueError(
581
+ f"All values in the dictionary must be pandas Series or DataFrames, but {k} is {type(o)}"
582
+ )
583
+ # - skip empty data
584
+ if not o.empty:
585
+ _o_copy[k] = o
586
+ _lst.extend(o.columns.values)
583
587
  self._fields = set(_lst)
584
- super().__init__(orig)
588
+ super().__init__(_o_copy)
585
589
 
586
590
  def __call__(self, *args: Any, **kwds: Any) -> Any:
587
591
  if args:
@@ -592,7 +596,6 @@ class OhlcDict(dict):
592
596
  return self
593
597
 
594
598
  def __getattribute__(self, name: str) -> Any:
595
-
596
599
  if name != "_fields":
597
600
  if name in self._fields:
598
601
  return retain_columns_and_join(self, name)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Qubx
3
- Version: 0.2.80
3
+ Version: 0.2.82
4
4
  Summary: Qubx - quantitative trading framework
5
5
  Home-page: https://github.com/dmarienko/Qubx
6
6
  Author: Dmitry Marienko
@@ -14,16 +14,16 @@ qubx/core/helpers.py,sha256=V_3505UiQhQcNwKVFN3S7hQAgmfU0Lly3JX1kk3GW8E,12664
14
14
  qubx/core/loggers.py,sha256=zpehm2-RdKG1ISe6t3DiM3RrL_zzGni3YFcxfgDkV24,16575
15
15
  qubx/core/lookups.py,sha256=GzGmw8sEtS1ly2YSQMwrBVywFtWaAcXSd6mPCA1HIvQ,14614
16
16
  qubx/core/metrics.py,sha256=HcuwaAdyNS5CYQ39c8cM872jAR-B26ac6ODFczmBK-8,39522
17
- qubx/core/series.cpython-311-x86_64-linux-gnu.so,sha256=zXHFViKhB1Rpi7zImNd-bl1jI0TtdTQVZ8BCMC3FCL8,779016
17
+ qubx/core/series.cpython-311-x86_64-linux-gnu.so,sha256=02F6sCYgBdvPNY3VhDIgdHyEUxocx1WPx2UIQA5-GQA,779016
18
18
  qubx/core/series.pxd,sha256=kF7QeLFgCM-C2hDxVvJM97ZOmyw1v7JEI9WfPKtQ6xs,3002
19
19
  qubx/core/series.pyi,sha256=vxCXVZt6hn2RdqR9M3CnXHR0Offv-YyR9nW2q8H5moY,2855
20
20
  qubx/core/series.pyx,sha256=UhZsnT7R3-UED05Fnp3mGxr4RSdMpWAHB4lkcz46MFo,32598
21
21
  qubx/core/strategy.py,sha256=K_Co6T4yXwj8N4Q7wZAEAVXm6dwyikvLdwnQdPEw4Zg,14973
22
- qubx/core/utils.cpython-311-x86_64-linux-gnu.so,sha256=_szinRUxZG8Ac3D7xlSa-efRZ5Vte3lT8GWKG0Ci5G0,82504
22
+ qubx/core/utils.cpython-311-x86_64-linux-gnu.so,sha256=khp05CHWu6FkgyOU3fZ2QvTXsO7yRmNK3SVb7Hh7IaE,82504
23
23
  qubx/core/utils.pyi,sha256=DAjyRVPJSxK4Em-9wui2F0yYHfP5tI5DjKavXNOnHa8,276
24
24
  qubx/core/utils.pyx,sha256=-8ek58CrbqWZq0-OY7WSREsCXBoBeWrD_wEYbIBS9rI,1696
25
25
  qubx/data/__init__.py,sha256=ZBIOlciDTD44xyCYAJOngxwqxrKSgwJYDpMQdecPUIQ,245
26
- qubx/data/helpers.py,sha256=5FLjoyzB-gqWEsAZn-DzWmIRiaAefmpnFV_xSgqWgT0,15450
26
+ qubx/data/helpers.py,sha256=FsdUMMa7Hoov-vknVXFf906-6-KNlpWbzCaZsOAkZkg,15590
27
27
  qubx/data/readers.py,sha256=crjs5ZekSGiEuRWI9MfucUyKK1aCsNTBYFO3-yepeSg,42362
28
28
  qubx/gathering/simplest.py,sha256=Ez3YFZMKH3o0jV0Qbg1SuZiuFNs_5No_C7wZ6vOeqfo,3814
29
29
  qubx/impl/ccxt_connector.py,sha256=ja_0WJDyZfkzqhNvoV-c5CCg15YnbRIThxw0TTNdwcc,13066
@@ -34,9 +34,9 @@ qubx/math/__init__.py,sha256=QRat0pqEqmbJF7CIHBuqnB1xUek4CsDDhv7SpgssnFw,57
34
34
  qubx/math/stats.py,sha256=OAovG31EDJjkTOV5aRC9W4MoquiW8U0BrahlysXP2EQ,3085
35
35
  qubx/pandaz/__init__.py,sha256=xlZvm48eBur0U7N4F4xTKqh7-n5fN0wghj1Tb8lCCNk,332
36
36
  qubx/pandaz/ta.py,sha256=NthiiueUoqWGRcjovcKKThcCcdImZn3JRdWDA2vL28k,85075
37
- qubx/pandaz/utils.py,sha256=SySWTH2XJvV4UTy_YPwCjELzNbxeY9kjftMzybO-heA,22021
37
+ qubx/pandaz/utils.py,sha256=msq1sMz67AdXHYEgStkE255mdpo2nt2uoXteq4kfCro,22084
38
38
  qubx/ta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- qubx/ta/indicators.cpython-311-x86_64-linux-gnu.so,sha256=05RQs3ytS60CDbSPMLwFGuBQXdwcDmeMRE5hq0OBJPI,609640
39
+ qubx/ta/indicators.cpython-311-x86_64-linux-gnu.so,sha256=s2J5ww67vyESb_MClQ5T4J1KKooDpkosWqmWcNzV5QQ,609640
40
40
  qubx/ta/indicators.pxd,sha256=eCJ9paOxtxbDFx4U5CUhcgB1jjCQAfVqMF2FnbJ03Lo,4222
41
41
  qubx/ta/indicators.pyi,sha256=NJlvN_774UV1U3_lvaYYbCEikLR8sOUo0TdcUGR5GBM,1940
42
42
  qubx/ta/indicators.pyx,sha256=FVkv5ld04TpZMT3a_kR1MU3IUuWfijzjJnh_lG78JxM,26029
@@ -54,6 +54,6 @@ qubx/utils/misc.py,sha256=-iqFcpY9jAxlpvQKeplsRUJsxUqT2bsGT5jhPqzDEvo,10450
54
54
  qubx/utils/ntp.py,sha256=LZo4FPVY3rqLUV9VWkLcZaPOpUDFC8Qleynmfggg9No,1758
55
55
  qubx/utils/runner.py,sha256=Czo01KUCc9Oj9TIcs03d6Qh7fOpQV5w8oH6UDZ6Yqn0,9539
56
56
  qubx/utils/time.py,sha256=fIVWYRmqRT1zkLIWy9jo_Fpfpc03S0sYyOcrHZcfF74,5198
57
- qubx-0.2.80.dist-info/METADATA,sha256=cWCJNAXmpnavUlmK66KtyS_ZuT3COjamfEoE1W1OlTE,2572
58
- qubx-0.2.80.dist-info/WHEEL,sha256=MLOa6LysROdjgj4FVxsHitAnIh8Be2D_c9ZSBHKrz2M,110
59
- qubx-0.2.80.dist-info/RECORD,,
57
+ qubx-0.2.82.dist-info/METADATA,sha256=V0lm2mjdLNinXURJ8NTJSsm1vsp6HH_xEkvxdssJTSs,2572
58
+ qubx-0.2.82.dist-info/WHEEL,sha256=MLOa6LysROdjgj4FVxsHitAnIh8Be2D_c9ZSBHKrz2M,110
59
+ qubx-0.2.82.dist-info/RECORD,,
File without changes