unicex 0.16.4__py3-none-any.whl → 0.16.6__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.
@@ -8,6 +8,7 @@ from loguru import logger as _logger
8
8
 
9
9
  from unicex._base import BaseClient, Websocket
10
10
  from unicex.enums import Timeframe
11
+ from unicex.exceptions import AdapterError
11
12
  from unicex.types import LoggerLike
12
13
 
13
14
  from .uni_client import IUniClient
@@ -41,6 +42,13 @@ class IUniWebsocketManager(ABC):
41
42
  try:
42
43
  adapted = adapter_func(raw_msg)
43
44
  except Exception as e:
45
+ if isinstance(e, AdapterError):
46
+ try:
47
+ if self._is_service_message(raw_msg):
48
+ return
49
+ except Exception as err:
50
+ self._logger.error(f"Failed to handle adapter error: {e}")
51
+ raise err from e
44
52
  self._logger.warning(f"Failed to adapt message: {e}")
45
53
  return
46
54
  if isinstance(adapted, list):
@@ -51,6 +59,13 @@ class IUniWebsocketManager(ABC):
51
59
 
52
60
  return _wrapper
53
61
 
62
+ def _is_service_message(self, raw_msg: Any) -> bool:
63
+ """Дополнительно обрабатывает ошибку адаптации сообщения на случай, если это сервисное сообщение, например `ping` или `subscribe`.
64
+
65
+ Переопределяется в каждом наследнике в связи с разным форматом входящих данных.
66
+ """
67
+ return False
68
+
54
69
  @overload
55
70
  def klines(
56
71
  self,
unicex/_base/websocket.py CHANGED
@@ -103,6 +103,11 @@ class Websocket:
103
103
  await asyncio.sleep(self._reconnect_timeout)
104
104
  await self.start()
105
105
 
106
+ @property
107
+ def running(self) -> bool:
108
+ """Возвращает статус вебсокета."""
109
+ return self._running
110
+
106
111
  async def _connect(self) -> None:
107
112
  """Подключается к вебсокету и настраивает соединение."""
108
113
  self._logger.debug(f"Establishing connection with {self._url}")
@@ -36,6 +36,12 @@ class UniWebsocketManager(IUniWebsocketManager):
36
36
  self._websocket_manager = WebsocketManager(self._client, **ws_kwargs) # type: ignore
37
37
  self._adapter = Adapter()
38
38
 
39
+ def _is_service_message(self, raw_msg: Any) -> bool:
40
+ """Дополнительно обрабатывает ошибку адаптации сообщения с вебсокета Bybit."""
41
+ if raw_msg.get("op") == "subscribe":
42
+ return True
43
+ return False
44
+
39
45
  @overload
40
46
  def klines(
41
47
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unicex
3
- Version: 0.16.4
3
+ Version: 0.16.6
4
4
  Summary: Unified Crypto Exchange API
5
5
  Author-email: LoveBloodAndDiamonds <ayazshakirzyanov27@gmail.com>
6
6
  License: BSD 3-Clause License
@@ -8,10 +8,10 @@ unicex/utils.py,sha256=1iK-ifZ-hUaU4Z-YCLoZsjAZREfJO7amYsjzG70JEk8,9963
8
8
  unicex/_abc/__init__.py,sha256=fxZjNFJFeFwWTXz8iSDe7eCWwE6xfFwFwAuG6l-TI8A,289
9
9
  unicex/_abc/exchange_info.py,sha256=TP_theOj1JS3Dcx5hqGT1yma1Jed776N4okOKXB7ePw,9537
10
10
  unicex/_abc/uni_client.py,sha256=-kFVA2W2Nm50ZbTzxzrRqbh_To3vSrPNE9IxdfxCCVI,14946
11
- unicex/_abc/uni_websocket_manager.py,sha256=ojAsQFViX6UjREQOg6aSvvw9pHLFhN4T-gorplODlFw,9882
11
+ unicex/_abc/uni_websocket_manager.py,sha256=fhZh2e2EDnt7YejCa0Uk3oqmg0OOcL8Kp5Ts0F9tpco,10744
12
12
  unicex/_base/__init__.py,sha256=0TmevATGnRB3qow6tkCR8dQKNZCWKeib6YQjNJ4a1b0,236
13
13
  unicex/_base/client.py,sha256=GuWfNNO6jVLAN-YUNKLmd-W5AfRelJIgKUe7vIQ12Qk,9318
14
- unicex/_base/websocket.py,sha256=J_okxWq1CiDqU64_GlcwE7Vgq8LZKsSRYpCoXVazJGk,13279
14
+ unicex/_base/websocket.py,sha256=F6fwFeDkn6GLI0IC0g_SNOrfCJw4RR3Uqo8JMWkCApc,13422
15
15
  unicex/binance/__init__.py,sha256=sDk4ZjakRdpFMaMSpOCfqjf6ZPfAS9tlrt4WlDHtDkw,932
16
16
  unicex/binance/adapter.py,sha256=adRi2XxF-VyU0nmjgigx6I1MiQHHtsGPtSxzx3_bX9I,8220
17
17
  unicex/binance/client.py,sha256=LXHZJpX7HpaUTlQcjuGEjm3qin4mczemJnCay1LncZo,62444
@@ -41,7 +41,7 @@ unicex/bybit/adapter.py,sha256=yxdcn9wLcwQClnEL2kTHoPPkGiEDBNgeQ3J5qFHqcng,8174
41
41
  unicex/bybit/client.py,sha256=TB69fwMgvmKmkTFcO9Wf8S_Fe4JJGOM_208AlL4Dh8A,61673
42
42
  unicex/bybit/exchange_info.py,sha256=S5IrN5c-jW0QbuO4LGH5rluO6qo7ib-wL-8LJWNOZgI,2422
43
43
  unicex/bybit/uni_client.py,sha256=0wmIRRgofuJXWvZMB1gHwuIEfoWuPhLJXthmK1f9w40,8382
44
- unicex/bybit/uni_websocket_manager.py,sha256=wRiaB42RliHmqR6ek3CJw69u7MgZ2qifyLCSya_PA3w,11737
44
+ unicex/bybit/uni_websocket_manager.py,sha256=6Stzcr1ii97zLhE7Jam1254VNsUwNFmtfv2u6XKPLG4,12031
45
45
  unicex/bybit/user_websocket.py,sha256=IGGEnwyWs5jOppgK_R7SisBDvsiF1_piTswBrdQOgDg,128
46
46
  unicex/bybit/websocket_manager.py,sha256=SYe2gGoPZvhasCehR7K2DOw_2nbewauF3BBIKYN88FQ,14463
47
47
  unicex/gate/__init__.py,sha256=dsKvhQhDcw4_w0S4c9IjKkCoOg4DCUtSecEUOlfstug,929
@@ -102,8 +102,8 @@ unicex/okx/uni_client.py,sha256=E_Wod0JSGt1K6k1mAIWnOv350pELbv-nic7g1KgOuos,8694
102
102
  unicex/okx/uni_websocket_manager.py,sha256=wrROl5RmxCJC8o_k6mc1UufbNsOKTRhIFqq5yinXUBQ,11626
103
103
  unicex/okx/user_websocket.py,sha256=8c9kpm-xVa729pW93OKUGLHaE9MY0uzEpjIgNIFRF80,126
104
104
  unicex/okx/websocket_manager.py,sha256=3sXjN0BJGyj2aK05J4WJ_-hhwaSX9PvzhaZri86OlZg,25038
105
- unicex-0.16.4.dist-info/licenses/LICENSE,sha256=lNNK4Vqak9cXm6qVJLhbqS7iR_BMj6k7fd7XQ6l1k54,1507
106
- unicex-0.16.4.dist-info/METADATA,sha256=QJmZcuFhoiz3LQtIvSApwEL0scuIdbOVFvte9iGBafQ,11972
107
- unicex-0.16.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
- unicex-0.16.4.dist-info/top_level.txt,sha256=_7rar-0OENIg4KRy6cgjWiebFYAJhjKEcMggAocGWG4,7
109
- unicex-0.16.4.dist-info/RECORD,,
105
+ unicex-0.16.6.dist-info/licenses/LICENSE,sha256=lNNK4Vqak9cXm6qVJLhbqS7iR_BMj6k7fd7XQ6l1k54,1507
106
+ unicex-0.16.6.dist-info/METADATA,sha256=rYx7QJeKoxUGOqAOOgK774-_Vl9rQW8LC672G-5Imgs,11972
107
+ unicex-0.16.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
+ unicex-0.16.6.dist-info/top_level.txt,sha256=_7rar-0OENIg4KRy6cgjWiebFYAJhjKEcMggAocGWG4,7
109
+ unicex-0.16.6.dist-info/RECORD,,