unicex 0.16.5__py3-none-any.whl → 0.16.7__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,
@@ -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,
@@ -36,6 +36,13 @@ 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
+ """Дополнительно обрабатывает ошибку адаптации сообщения на случай, если это сервисное сообщение, например `ping` или `subscribe`.
41
+
42
+ Переопределяется в каждом наследнике в связи с разным форматом входящих данных.
43
+ """
44
+ return raw_msg.get("msg") == "PONG"
45
+
39
46
  @overload
40
47
  def klines(
41
48
  self,
unicex/okx/uni_client.py CHANGED
@@ -173,7 +173,7 @@ class UniClient(IUniClient[Client]):
173
173
  raise ValueError("Symbol is required to okx funding rate")
174
174
  raw_data = await self._client.get_funding_rate(inst_id=symbol)
175
175
  adapted_data = Adapter.funding_rate(raw_data)
176
- return adapted_data
176
+ return adapted_data[symbol]
177
177
 
178
178
  @overload
179
179
  async def open_interest(self, symbol: str) -> OpenInterestItem: ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unicex
3
- Version: 0.16.5
3
+ Version: 0.16.7
4
4
  Summary: Unified Crypto Exchange API
5
5
  Author-email: LoveBloodAndDiamonds <ayazshakirzyanov27@gmail.com>
6
6
  License: BSD 3-Clause License
@@ -8,7 +8,7 @@ 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
14
  unicex/_base/websocket.py,sha256=F6fwFeDkn6GLI0IC0g_SNOrfCJw4RR3Uqo8JMWkCApc,13422
@@ -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
@@ -73,7 +73,7 @@ unicex/mexc/adapter.py,sha256=OGlTAJ0IRg4YVu9cMKDH9orPd6FnIUDqKO8jHa_BpQs,13631
73
73
  unicex/mexc/client.py,sha256=FBUSs4Hu2DExVKPKJG9OawbqidACPFJ1U_1md05E3Mc,31004
74
74
  unicex/mexc/exchange_info.py,sha256=z2bQsVU0ciXV2_DFkueZHo1X35KIK2alD-7ZZjNg5Kc,1763
75
75
  unicex/mexc/uni_client.py,sha256=ldsFyE02x3cHjUDzGXMcWRVNkdiYWhrqrFZt2auas_4,9454
76
- unicex/mexc/uni_websocket_manager.py,sha256=4doElI-dPvAXs8a5HpU8gtpZznWf7YtAXTl8lTLjsiU,10804
76
+ unicex/mexc/uni_websocket_manager.py,sha256=TIaIWsjK1N5bqtBHqOafzEyKpSnb30O3uIx6aCS8lOY,11307
77
77
  unicex/mexc/user_websocket.py,sha256=l77-e6i0B2btd7a5IcCytbgswnV171NqOhunTcbaq48,127
78
78
  unicex/mexc/websocket_manager.py,sha256=0VhgXJil4xXm-YLuW2WVT7REv0oaivd9nZ4VI14rUzI,22926
79
79
  unicex/mexc/_spot_ws_proto/PrivateAccountV3Api_pb2.py,sha256=3bP1pGjeO-Norp7DhhdrQ4FcQTEKkCiL2mLagyoJHp8,1879
@@ -98,12 +98,12 @@ unicex/okx/__init__.py,sha256=Ljbw3AP0YrPF5bIPJi_3JP3B_czR9xurYHI24rgWk9M,920
98
98
  unicex/okx/adapter.py,sha256=4MpQh12nzlzB0HbOCHItYoWNFXbFCe9DntVC0smm-PY,7609
99
99
  unicex/okx/client.py,sha256=N7ma49ToMGjYiTvuoV52-NaG-vLx3s087KF67dQCRBs,91079
100
100
  unicex/okx/exchange_info.py,sha256=z2GrMkhZSJLdLsscqIfwQnWlnsX-RWPqGIbVfVbOVg4,1786
101
- unicex/okx/uni_client.py,sha256=E_Wod0JSGt1K6k1mAIWnOv350pELbv-nic7g1KgOuos,8694
101
+ unicex/okx/uni_client.py,sha256=fQVR4kz_2UvWD6V-MRlVVyAfaNIh2Q3PxpIgJrXY5hc,8702
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.5.dist-info/licenses/LICENSE,sha256=lNNK4Vqak9cXm6qVJLhbqS7iR_BMj6k7fd7XQ6l1k54,1507
106
- unicex-0.16.5.dist-info/METADATA,sha256=WUm5KyhQuCnz9I57V0GS1Ovxn1cj3D2bH8I2ymFUfwk,11972
107
- unicex-0.16.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
- unicex-0.16.5.dist-info/top_level.txt,sha256=_7rar-0OENIg4KRy6cgjWiebFYAJhjKEcMggAocGWG4,7
109
- unicex-0.16.5.dist-info/RECORD,,
105
+ unicex-0.16.7.dist-info/licenses/LICENSE,sha256=lNNK4Vqak9cXm6qVJLhbqS7iR_BMj6k7fd7XQ6l1k54,1507
106
+ unicex-0.16.7.dist-info/METADATA,sha256=HHv5Tf9r0hkhlvUJikeErpukMgeb-vMITVF9bACMnX0,11972
107
+ unicex-0.16.7.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
108
+ unicex-0.16.7.dist-info/top_level.txt,sha256=_7rar-0OENIg4KRy6cgjWiebFYAJhjKEcMggAocGWG4,7
109
+ unicex-0.16.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5