Qubx 0.7.9__cp312-cp312-manylinux_2_39_x86_64.whl → 0.7.10__cp312-cp312-manylinux_2_39_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.

@@ -255,6 +255,13 @@ class LighterClient:
255
255
  resolution_ms = self._resolution_to_milliseconds(resolution)
256
256
  start_timestamp = end_timestamp - (count_back * resolution_ms)
257
257
 
258
+ start_td = cast(pd.Timestamp, pd.Timestamp(start_timestamp, unit="ms"))
259
+ end_td = cast(pd.Timestamp, pd.Timestamp(end_timestamp, unit="ms"))
260
+ tf = pd.Timedelta(resolution)
261
+ if start_td + tf > end_td:
262
+ start_td = end_td - tf
263
+ start_timestamp = int(start_td.timestamp() * 1000) # type: ignore
264
+
258
265
  start_timestamp_str = (
259
266
  cast(pd.Timestamp, pd.Timestamp(start_timestamp, unit="ms")).strftime("%Y-%m-%d %H:%M:%S")
260
267
  if start_timestamp is not None
@@ -75,10 +75,6 @@ class IndicatorEmitter(Indicator):
75
75
  # Since Indicator extends TimeSeries, we can pass the wrapped_indicator directly
76
76
  super().__init__(name, wrapped_indicator)
77
77
 
78
- logger.debug(
79
- f"[IndicatorEmitter] Created emitter '{name}' wrapping '{wrapped_indicator.name}' -> metric '{self._metric_name}'"
80
- )
81
-
82
78
  def calculate(self, time: int, value: float, new_item_started: bool) -> float:
83
79
  """
84
80
  Calculate method that handles the emission logic.
@@ -117,10 +113,10 @@ class IndicatorEmitter(Indicator):
117
113
  # Emit the metric with the proper timestamp
118
114
  # Convert time to numpy datetime64 if needed
119
115
  if isinstance(time, int):
120
- timestamp = np.datetime64(time, 'ns')
116
+ timestamp = np.datetime64(time, "ns")
121
117
  else:
122
118
  timestamp = pd.Timestamp(time).to_datetime64()
123
-
119
+
124
120
  self._metric_emitter.emit(
125
121
  name=self._metric_name,
126
122
  value=float(current_value),
@@ -130,10 +126,6 @@ class IndicatorEmitter(Indicator):
130
126
  )
131
127
 
132
128
  if not self._has_emitted:
133
- logger.debug(
134
- f"[IndicatorEmitter] '{self.name}' started emitting '{self._metric_name}' "
135
- f"values from '{self._wrapped_indicator.name}'"
136
- )
137
129
  self._has_emitted = True
138
130
 
139
131
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Qubx
3
- Version: 0.7.9
3
+ Version: 0.7.10
4
4
  Summary: Qubx - Quantitative Trading Framework
5
5
  License-File: LICENSE
6
6
  Author: Dmitry Marienko
@@ -62,7 +62,7 @@ qubx/connectors/tardis/utils.py,sha256=epThu9DwqbDb7BgScH6fHa_FVpKUaItOqp3JwtKGc
62
62
  qubx/connectors/xlighter/__init__.py,sha256=6Cs8jUvlDasyjue5KFQBgp5ws7Sh-BiMd-O2ECCIHAE,2174
63
63
  qubx/connectors/xlighter/account.py,sha256=Z1iGxRJezFrgNYrnyv9O9hAxc5hgme5R3kVWFbyqsd8,19717
64
64
  qubx/connectors/xlighter/broker.py,sha256=AeqVMwTn-1oyEvChFt2WLJktrQZvrDAcimX0QSFR4Ug,28681
65
- qubx/connectors/xlighter/client.py,sha256=0u99uK93KUIvqPRRdY5tAklO5FLPmLRwTb2qk9sABTs,14685
65
+ qubx/connectors/xlighter/client.py,sha256=FdFA9nw2xX8-5j-vfLVKDnzD12nM4NL5H5yLY-VmNyE,15053
66
66
  qubx/connectors/xlighter/constants.py,sha256=l4R1ednOGpvwJ9qnPG6bjsL6YY6QJA6kKNwu1bZXLGE,4200
67
67
  qubx/connectors/xlighter/data.py,sha256=4aXsxv5owmW2SljAo5ueF38LkZiPeM_s4Mc5dOj_i0g,32545
68
68
  qubx/connectors/xlighter/extensions.py,sha256=_AxsB24I_sOU6Efvw4oKxhQ-dAI-U7IISn9NiAUoXZs,8915
@@ -103,11 +103,11 @@ qubx/core/mixins/subscription.py,sha256=2nUikNNPsMExS9yO38kNt7jk1vKE-RPm0b3h1bU6
103
103
  qubx/core/mixins/trading.py,sha256=jW4P6Gba0O1kaQIy5rl3UqwPwAmEJrMdGYoWj1AhleI,20422
104
104
  qubx/core/mixins/universe.py,sha256=aj1Ai_WUccotBt419SMPgAf2xPZL5n0U9CdTD4tQGGI,10845
105
105
  qubx/core/mixins/utils.py,sha256=P71cLuqKjId8989MwOL_BtvvCnnwOFMkZyB1SY-0Ork,147
106
- qubx/core/series.cpython-312-x86_64-linux-gnu.so,sha256=dWFUsV8CwrW_1whGbRD1kHSw50IyI-mOX6D7mgBEmfg,1192328
106
+ qubx/core/series.cpython-312-x86_64-linux-gnu.so,sha256=nd1gkkLkA1EC3xPU34yqiAvKtTwUgxcTEaQmKsY_iiQ,1192328
107
107
  qubx/core/series.pxd,sha256=DebCNOl7e7_OIZLTG-vSqubcgYuE0EC2_0-dov7QoIM,5195
108
108
  qubx/core/series.pyi,sha256=5xJ0-_SOGhfGgbu1RGyjP4b0T6oRyckS9LoRePPAHqs,8050
109
109
  qubx/core/series.pyx,sha256=A-6BbaweFmeuwNvcg-yMrLPQodAFbjZeHqrVfvE2x-o,63520
110
- qubx/core/utils.cpython-312-x86_64-linux-gnu.so,sha256=juRYF4MEhxyTSHGuiqEH2fAE3TCmrnFmKGr6zLljuzM,86568
110
+ qubx/core/utils.cpython-312-x86_64-linux-gnu.so,sha256=MANm3HimBNTQOG1KkBt7XSsE1P2hbS8QYWlBsdsMGD0,86568
111
111
  qubx/core/utils.pyi,sha256=a-wS13V2p_dM1CnGq40JVulmiAhixTwVwt0ah5By0Hc,348
112
112
  qubx/core/utils.pyx,sha256=UR9achMR-LARsztd2eelFsDsFH3n0gXACIKoGNPI9X4,1766
113
113
  qubx/data/__init__.py,sha256=cCUJjuq0LCBeeOKXIvBh_YQI00je_IQmr9OcHARJCPE,896
@@ -127,7 +127,7 @@ qubx/emitters/__init__.py,sha256=MPs7ZRZZnURljusiuvlO5g8M4H1UjEfg5fkyKeJmIBI,791
127
127
  qubx/emitters/base.py,sha256=uEgdWwCkDdzVyFWlDmlw7INv2BSzDp9WC2ccuaKp-rA,9067
128
128
  qubx/emitters/composite.py,sha256=4L-wGNt3xuFdpkH6uAj9_904pXnMbekJfsRdZUxy-dg,4537
129
129
  qubx/emitters/csv.py,sha256=vVAfeW40UW4KiTum6x1BHYOO2WRFwX0MbZyKBD7EAwM,4986
130
- qubx/emitters/indicator.py,sha256=3sZbrlXmIOWQUeTYQAu92AS-2gfa9z5f_MdiM3KIBVY,8230
130
+ qubx/emitters/indicator.py,sha256=o3EXBIWKLs_6iinL1XjmWx97jplwgrrUjV4wK_6mX4o,7822
131
131
  qubx/emitters/inmemory.py,sha256=mDPlncqd7Bz4rrr4gJezYaMd9tPUaurfqRg4STCdNXc,8891
132
132
  qubx/emitters/prometheus.py,sha256=HmQdhL6Nu-UzxAkahZRjFMoDqxhfg8mlEVpH_ozYc2Q,10521
133
133
  qubx/emitters/questdb.py,sha256=LMIfgWUYq8boXWB48mL-bgOKJ27D73EoUFeZGdEF-D8,14440
@@ -188,7 +188,7 @@ qubx/restorers/signal.py,sha256=5nK5ji8AucyWrFBK9uW619YCI_vPRGFnuDu8JnG3B_Y,1451
188
188
  qubx/restorers/state.py,sha256=I1VIN0ZcOjigc3WMHIYTNJeAAbN9YB21MDcMl04ZWmY,8018
189
189
  qubx/restorers/utils.py,sha256=We2gfqwQKWziUYhuUnjb-xo-5tSlbuHWpPQn0CEMTn0,1155
190
190
  qubx/ta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- qubx/ta/indicators.cpython-312-x86_64-linux-gnu.so,sha256=Kt1Ryy6sMewT2MSYBfXAb0iyhKaK7Ia6OFZIK9cJh4k,1004488
191
+ qubx/ta/indicators.cpython-312-x86_64-linux-gnu.so,sha256=4lRv3ePi13UJ7iy84FfMw9Xi4t0E09qo9cly8w9jbnQ,1004488
192
192
  qubx/ta/indicators.pxd,sha256=LpUPTN5Ja2gCP2SNBstjzhll2lW4hFFWfiS_kw_ChHA,7045
193
193
  qubx/ta/indicators.pyi,sha256=3sNsNlzU9VQWrEqTeI5ZMjq8-lSQgoWeYqIP0k6w92E,4149
194
194
  qubx/ta/indicators.pyx,sha256=mKv8g9C1TYhnewQSz4bjOFRqst-wTpGfJp4oBW18oXI,63109
@@ -223,7 +223,7 @@ qubx/utils/charting/orderbook.py,sha256=NmeXxru3CUiKLtl1DzCBbQgSdL4qmTDIxV0u81p2
223
223
  qubx/utils/collections.py,sha256=go2sH_q2TlXqI3Vxq8GHLfNGlYL4JwS3X1lwJWbpFLE,7425
224
224
  qubx/utils/hft/__init__.py,sha256=rZjNmRtD1TWAEe7JPgiak9qJftf8yQavLviWReKQJ5w,101
225
225
  qubx/utils/hft/numba_utils.py,sha256=C_C3MwEW5ZbLhOMSH6SSYbQ7BfnvuKhgOtY_N-U-ULM,146
226
- qubx/utils/hft/orderbook.cpython-312-x86_64-linux-gnu.so,sha256=U4gOB0lPI0bmrF4huPzczcGYPSN5QtMrNjaFqd7hmZk,316592
226
+ qubx/utils/hft/orderbook.cpython-312-x86_64-linux-gnu.so,sha256=NpTWDSA4GgMhfm_A6uzBQE88ljS-8LCxe1szniIhIUk,316592
227
227
  qubx/utils/hft/orderbook.pyi,sha256=F2P9kbh314wjCwfn6BivFWQMEDMLnZDQ2rmWbGoM7-o,5076
228
228
  qubx/utils/hft/orderbook.pyx,sha256=gbNrtpNRZjZ8DjXjrIXsw20UixErDrLzN-8Qep8sSJg,15217
229
229
  qubx/utils/marketdata/binance.py,sha256=hWX3noZj704JIMBqlwsXA5IzUP7EgiLiC2r12dJAKQA,11565
@@ -242,7 +242,7 @@ qubx/utils/plotting/renderers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
242
242
  qubx/utils/plotting/renderers/plotly.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
243
  qubx/utils/questdb.py,sha256=fIOMImSa3N3eZKMakHqs5q5ld4m5jkG6IkrTGfuvXFg,5191
244
244
  qubx/utils/rate_limiter.py,sha256=nI4yJ2VjTGoHYPQvURyd7rtpfn37ms6xd0hLt6RJeDc,7008
245
- qubx/utils/ringbuffer.cpython-312-x86_64-linux-gnu.so,sha256=UkbrxqK7zjjATiPiTItB37lBMlIWijI6OjRjXkBi6wY,108328
245
+ qubx/utils/ringbuffer.cpython-312-x86_64-linux-gnu.so,sha256=QbekH0LL1KdWJYq8oft4UHFCSHu2OZ12nv1p2PIp6fg,108328
246
246
  qubx/utils/ringbuffer.pxd,sha256=NiLNnVwSJuDZj6M99DnHt07OEhKVBlEEf80rNukJJeQ,374
247
247
  qubx/utils/ringbuffer.pyi,sha256=H0MD68jctVlko09KfxI9-1MloapO5Ba6smaqx1_X5Zo,4580
248
248
  qubx/utils/ringbuffer.pyx,sha256=3S8MQreAKMfhaMm3RwztfEQ2AJYDyfPQpfMAsb-JCWA,7069
@@ -270,8 +270,8 @@ qubx/utils/slack.py,sha256=jhos-5pNGomg3TvFZRVvF0b_FrzxfvnTqAEMlDIrgn8,12234
270
270
  qubx/utils/time.py,sha256=SYOiz2UqX7dCUhO_vBeWcm42_LmDl-59wp7INu0R8is,15355
271
271
  qubx/utils/version.py,sha256=e52fIHyxzCiIuH7svCF6pkHuDlqL64rklqz-2XjWons,5309
272
272
  qubx/utils/websocket_manager.py,sha256=ld4jvwnWyIkdKpgpUzyfnXGT3Ul4bGemXjy4HX9XTKs,17182
273
- qubx-0.7.9.dist-info/METADATA,sha256=QBXAFLX51Co8jGvbGESwFjyO7t8XCeBmVA52H6TUqC4,6062
274
- qubx-0.7.9.dist-info/WHEEL,sha256=RA6gLSyyVpI0R7d3ofBrM1iY5kDUsPwh15AF0XpvgQo,110
275
- qubx-0.7.9.dist-info/entry_points.txt,sha256=VqilDTe8mVuV9SbR-yVlZJBTjbkHIL2JBgXfQw076HY,47
276
- qubx-0.7.9.dist-info/licenses/LICENSE,sha256=qwMHOSJ2TD0nx6VUJvFhu1ynJdBfNozRMt6tnSul-Ts,35140
277
- qubx-0.7.9.dist-info/RECORD,,
273
+ qubx-0.7.10.dist-info/METADATA,sha256=dsmjk40WXYfbDckYm0LYw_HIeWmXBJhmBKmJmGlsG8s,6063
274
+ qubx-0.7.10.dist-info/WHEEL,sha256=RA6gLSyyVpI0R7d3ofBrM1iY5kDUsPwh15AF0XpvgQo,110
275
+ qubx-0.7.10.dist-info/entry_points.txt,sha256=VqilDTe8mVuV9SbR-yVlZJBTjbkHIL2JBgXfQw076HY,47
276
+ qubx-0.7.10.dist-info/licenses/LICENSE,sha256=qwMHOSJ2TD0nx6VUJvFhu1ynJdBfNozRMt6tnSul-Ts,35140
277
+ qubx-0.7.10.dist-info/RECORD,,
File without changes