unicex 0.13.5__tar.gz → 0.13.6__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.
- {unicex-0.13.5/unicex.egg-info → unicex-0.13.6}/PKG-INFO +1 -1
- {unicex-0.13.5 → unicex-0.13.6}/pyproject.toml +1 -1
- {unicex-0.13.5 → unicex-0.13.6}/unicex/_base/websocket.py +15 -8
- {unicex-0.13.5 → unicex-0.13.6/unicex.egg-info}/PKG-INFO +1 -1
- {unicex-0.13.5 → unicex-0.13.6}/LICENSE +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/README.md +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/setup.cfg +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/_abc/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/_abc/exchange_info.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/_abc/uni_client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/_abc/uni_websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/_base/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/_base/client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/binance/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/binance/adapter.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/binance/client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/binance/exchange_info.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/binance/uni_client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/binance/uni_websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/binance/user_websocket.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/binance/websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bitget/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bitget/adapter.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bitget/client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bitget/exchange_info.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bitget/uni_client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bitget/uni_websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bitget/user_websocket.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bitget/websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bybit/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bybit/adapter.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bybit/client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bybit/exchange_info.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bybit/uni_client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bybit/uni_websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bybit/user_websocket.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/bybit/websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/enums.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/exceptions.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/extra.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/gate/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/gate/adapter.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/gate/client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/gate/exchange_info.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/gate/uni_client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/gate/uni_websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/gate/user_websocket.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/gate/websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/hyperliquid/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/hyperliquid/adapter.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/hyperliquid/client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/hyperliquid/exchange_info.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/hyperliquid/uni_client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/hyperliquid/uni_websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/hyperliquid/user_websocket.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/hyperliquid/websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mapper.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PrivateAccountV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PrivateDealsV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PrivateOrdersV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicAggreBookTickerV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicAggreDealsV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicAggreDepthsV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicBookTickerBatchV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicBookTickerV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicDealsV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicFuture_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicIncreaseDepthsBatchV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicIncreaseDepthsV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicLimitDepthsV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicMiniTickerV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicMiniTickersV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicSpotKlineV3Api_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PushDataV3ApiWrapper_pb2.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/adapter.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/exchange_info.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/uni_client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/uni_websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/user_websocket.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/okx/__init__.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/okx/adapter.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/okx/client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/okx/exchange_info.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/okx/uni_client.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/okx/uni_websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/okx/user_websocket.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/okx/websocket_manager.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/types.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex/utils.py +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex.egg-info/SOURCES.txt +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex.egg-info/dependency_links.txt +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex.egg-info/requires.txt +0 -0
- {unicex-0.13.5 → unicex-0.13.6}/unicex.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ name = "unicex"
|
|
|
4
4
|
# • PATCH (x.y.Z) → увеличивается при багфиксе, который не ломает совместимость.
|
|
5
5
|
# • MINOR (x.Y.z) → увеличивается при добавлении новой функциональности, но без ломающих изменений (backward-compatible).
|
|
6
6
|
# • MAJOR (X.y.z) → увеличивается при изменениях, которые ломают обратную совместимость.
|
|
7
|
-
version = "0.13.
|
|
7
|
+
version = "0.13.6"
|
|
8
8
|
|
|
9
9
|
description = "Unified Crypto Exchange API "
|
|
10
10
|
readme = "README.md"
|
|
@@ -179,18 +179,25 @@ class Websocket:
|
|
|
179
179
|
|
|
180
180
|
async def _after_disconnect(self) -> None:
|
|
181
181
|
"""Вызывается после отключения от вебсокета."""
|
|
182
|
-
|
|
182
|
+
current_task = asyncio.current_task()
|
|
183
|
+
|
|
184
|
+
# Останавливаем воркеров, исключая задачу, которая уже выполняет остановку
|
|
185
|
+
tasks_to_wait: list[asyncio.Task] = []
|
|
183
186
|
for task in self._tasks:
|
|
187
|
+
if task is current_task:
|
|
188
|
+
continue
|
|
189
|
+
|
|
184
190
|
task.cancel()
|
|
191
|
+
tasks_to_wait.append(task)
|
|
185
192
|
|
|
186
193
|
# Дожидаемся завершения задач (в т.ч. воркеров)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
+
if tasks_to_wait:
|
|
195
|
+
results = await asyncio.gather(*tasks_to_wait, return_exceptions=True)
|
|
196
|
+
for task_result in results:
|
|
197
|
+
if isinstance(task_result, asyncio.CancelledError):
|
|
198
|
+
continue
|
|
199
|
+
if isinstance(task_result, Exception):
|
|
200
|
+
self._logger.warning(f"Worker raised during shutdown: {task_result}")
|
|
194
201
|
|
|
195
202
|
self._tasks.clear()
|
|
196
203
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicAggreBookTickerV3Api_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicBookTickerBatchV3Api_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unicex-0.13.5 → unicex-0.13.6}/unicex/mexc/_spot_ws_proto/PublicIncreaseDepthsBatchV3Api_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|