unicex 0.2.0__py3-none-any.whl → 0.4.0__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.
Files changed (120) hide show
  1. unicex/__init__.py +217 -12
  2. unicex/_abc/__init__.py +0 -2
  3. unicex/_abc/uni_client.py +44 -41
  4. unicex/_abc/uni_websocket_manager.py +6 -6
  5. unicex/_base/websocket.py +7 -7
  6. unicex/binance/__init__.py +7 -1
  7. unicex/binance/adapter.py +42 -123
  8. unicex/binance/client.py +69 -127
  9. unicex/binance/uni_client.py +75 -46
  10. unicex/binance/uni_websocket_manager.py +4 -4
  11. unicex/bitget/__init__.py +9 -1
  12. unicex/bitget/adapter.py +72 -136
  13. unicex/bitget/client.py +1648 -27
  14. unicex/bitget/uni_client.py +80 -41
  15. unicex/bitget/uni_websocket_manager.py +9 -4
  16. unicex/bitget/user_websocket.py +7 -0
  17. unicex/bitget/websocket_manager.py +143 -6
  18. unicex/bitrue/__init__.py +15 -0
  19. unicex/bitrue/adapter.py +8 -0
  20. unicex/bitrue/client.py +128 -0
  21. unicex/bitrue/uni_client.py +151 -0
  22. unicex/bitrue/uni_websocket_manager.py +269 -0
  23. unicex/bitrue/user_websocket.py +7 -0
  24. unicex/bitrue/websocket_manager.py +11 -0
  25. unicex/bitunix/__init__.py +15 -0
  26. unicex/bitunix/adapter.py +8 -0
  27. unicex/bitunix/client.py +8 -0
  28. unicex/bitunix/uni_client.py +151 -0
  29. unicex/bitunix/uni_websocket_manager.py +269 -0
  30. unicex/bitunix/user_websocket.py +7 -0
  31. unicex/bitunix/websocket_manager.py +11 -0
  32. unicex/btse/__init__.py +15 -0
  33. unicex/btse/adapter.py +8 -0
  34. unicex/btse/client.py +123 -0
  35. unicex/btse/uni_client.py +151 -0
  36. unicex/btse/uni_websocket_manager.py +269 -0
  37. unicex/btse/user_websocket.py +7 -0
  38. unicex/btse/websocket_manager.py +11 -0
  39. unicex/bybit/__init__.py +15 -0
  40. unicex/bybit/adapter.py +127 -0
  41. unicex/bybit/client.py +1869 -0
  42. unicex/bybit/uni_client.py +200 -0
  43. unicex/bybit/uni_websocket_manager.py +269 -0
  44. unicex/bybit/user_websocket.py +7 -0
  45. unicex/bybit/websocket_manager.py +11 -0
  46. unicex/enums.py +133 -9
  47. unicex/extra.py +56 -17
  48. unicex/gateio/__init__.py +15 -0
  49. unicex/gateio/adapter.py +178 -0
  50. unicex/gateio/client.py +1667 -0
  51. unicex/gateio/uni_client.py +214 -0
  52. unicex/gateio/uni_websocket_manager.py +269 -0
  53. unicex/gateio/user_websocket.py +7 -0
  54. unicex/gateio/websocket_manager.py +11 -0
  55. unicex/hyperliquid/__init__.py +15 -0
  56. unicex/hyperliquid/adapter.py +140 -0
  57. unicex/hyperliquid/client.py +232 -0
  58. unicex/hyperliquid/uni_client.py +171 -0
  59. unicex/hyperliquid/uni_websocket_manager.py +269 -0
  60. unicex/hyperliquid/user_websocket.py +7 -0
  61. unicex/hyperliquid/websocket_manager.py +11 -0
  62. unicex/kcex/__init__.py +15 -0
  63. unicex/kcex/adapter.py +8 -0
  64. unicex/kcex/client.py +8 -0
  65. unicex/kcex/uni_client.py +151 -0
  66. unicex/kcex/uni_websocket_manager.py +269 -0
  67. unicex/kcex/user_websocket.py +7 -0
  68. unicex/kcex/websocket_manager.py +11 -0
  69. unicex/kraken/__init__.py +15 -0
  70. unicex/kraken/adapter.py +8 -0
  71. unicex/kraken/client.py +165 -0
  72. unicex/kraken/uni_client.py +151 -0
  73. unicex/kraken/uni_websocket_manager.py +269 -0
  74. unicex/kraken/user_websocket.py +7 -0
  75. unicex/kraken/websocket_manager.py +11 -0
  76. unicex/kucoin/__init__.py +15 -0
  77. unicex/kucoin/adapter.py +8 -0
  78. unicex/kucoin/client.py +120 -0
  79. unicex/kucoin/uni_client.py +151 -0
  80. unicex/kucoin/uni_websocket_manager.py +269 -0
  81. unicex/kucoin/user_websocket.py +7 -0
  82. unicex/kucoin/websocket_manager.py +11 -0
  83. unicex/mapper.py +53 -1
  84. unicex/mexc/__init__.py +15 -0
  85. unicex/mexc/adapter.py +222 -0
  86. unicex/mexc/client.py +846 -0
  87. unicex/mexc/uni_client.py +205 -0
  88. unicex/mexc/uni_websocket_manager.py +269 -0
  89. unicex/mexc/user_websocket.py +7 -0
  90. unicex/mexc/websocket_manager.py +11 -0
  91. unicex/okx/__init__.py +15 -0
  92. unicex/okx/adapter.py +122 -0
  93. unicex/okx/client.py +280 -0
  94. unicex/okx/uni_client.py +202 -0
  95. unicex/okx/uni_websocket_manager.py +269 -0
  96. unicex/okx/user_websocket.py +7 -0
  97. unicex/okx/websocket_manager.py +11 -0
  98. unicex/types.py +24 -3
  99. unicex/utils.py +82 -6
  100. unicex/weex/__init__.py +15 -0
  101. unicex/weex/adapter.py +8 -0
  102. unicex/weex/client.py +8 -0
  103. unicex/weex/uni_client.py +151 -0
  104. unicex/weex/uni_websocket_manager.py +269 -0
  105. unicex/weex/user_websocket.py +7 -0
  106. unicex/weex/websocket_manager.py +11 -0
  107. unicex/xt/__init__.py +15 -0
  108. unicex/xt/adapter.py +8 -0
  109. unicex/xt/client.py +8 -0
  110. unicex/xt/uni_client.py +151 -0
  111. unicex/xt/uni_websocket_manager.py +269 -0
  112. unicex/xt/user_websocket.py +7 -0
  113. unicex/xt/websocket_manager.py +11 -0
  114. {unicex-0.2.0.dist-info → unicex-0.4.0.dist-info}/METADATA +63 -15
  115. unicex-0.4.0.dist-info/RECORD +123 -0
  116. unicex/_abc/adapter.py +0 -231
  117. unicex-0.2.0.dist-info/RECORD +0 -32
  118. {unicex-0.2.0.dist-info → unicex-0.4.0.dist-info}/WHEEL +0 -0
  119. {unicex-0.2.0.dist-info → unicex-0.4.0.dist-info}/licenses/LICENSE +0 -0
  120. {unicex-0.2.0.dist-info → unicex-0.4.0.dist-info}/top_level.txt +0 -0
unicex/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- """`unicex` - библиотека для работы с криптовалютными биржами, реализующая унифицированный интерфейс для работы с различными криптовалютными биржами."""
1
+ """unicex - библиотека для работы с криптовалютными биржами, реализующая унифицированный интерфейс для работы с различными криптовалютными биржами."""
2
2
 
3
3
  __all__ = [
4
4
  # Mappers
@@ -19,7 +19,6 @@ __all__ = [
19
19
  # Interfaces
20
20
  "IUniClient",
21
21
  "IUniWebsocketManager",
22
- "IAdapter",
23
22
  # Base clients and websockets
24
23
  "Websocket",
25
24
  "BaseClient",
@@ -28,23 +27,229 @@ __all__ = [
28
27
  "BinanceUniClient",
29
28
  "BinanceWebsocketManager",
30
29
  "BinanceUniWebsocketManager",
30
+ "BinanceUserWebsocket",
31
31
  # Bitget
32
32
  "BitgetClient",
33
33
  "BitgetUniClient",
34
34
  "BitgetUniWebsocketManager",
35
35
  "BitgetWebsocketManager",
36
+ "BitgetUserWebsocket",
37
+ # Bitrue
38
+ "BitrueClient",
39
+ "BitrueUniClient",
40
+ "BitrueUniWebsocketManager",
41
+ "BitrueWebsocketManager",
42
+ "BitrueUserWebsocket",
43
+ # Mexc
44
+ "MexcClient",
45
+ "MexcUniClient",
46
+ "MexcUniWebsocketManager",
47
+ "MexcWebsocketManager",
48
+ "MexcUserWebsocket",
49
+ # Bybit
50
+ "BybitClient",
51
+ "BybitUniClient",
52
+ "BybitUniWebsocketManager",
53
+ "BybitWebsocketManager",
54
+ "BybitUserWebsocket",
55
+ # Okx
56
+ "OkxClient",
57
+ "OkxUniClient",
58
+ "OkxUniWebsocketManager",
59
+ "OkxWebsocketManager",
60
+ "OkxUserWebsocket",
61
+ # Hyperliquid
62
+ "HyperliquidClient",
63
+ "HyperliquidUniClient",
64
+ "HyperliquidUniWebsocketManager",
65
+ "HyperliquidWebsocketManager",
66
+ "HyperliquidUserWebsocket",
67
+ # Gateio
68
+ "GateioClient",
69
+ "GateioUniClient",
70
+ "GateioUniWebsocketManager",
71
+ "GateioWebsocketManager",
72
+ "GateioUserWebsocket",
73
+ # Bitunix
74
+ "BitunixClient",
75
+ "BitunixUniClient",
76
+ "BitunixUniWebsocketManager",
77
+ "BitunixWebsocketManager",
78
+ "BitunixUserWebsocket",
79
+ # Btse
80
+ "BtseClient",
81
+ "BtseUniClient",
82
+ "BtseUniWebsocketManager",
83
+ "BtseWebsocketManager",
84
+ "BtseUserWebsocket",
85
+ # Kcex
86
+ "KcexClient",
87
+ "KcexUniClient",
88
+ "KcexUniWebsocketManager",
89
+ "KcexWebsocketManager",
90
+ "KcexUserWebsocket",
91
+ # Kraken
92
+ "KrakenClient",
93
+ "KrakenUniClient",
94
+ "KrakenUniWebsocketManager",
95
+ "KrakenWebsocketManager",
96
+ "KrakenUserWebsocket",
97
+ # Kucoin
98
+ "KucoinClient",
99
+ "KucoinUniClient",
100
+ "KucoinUniWebsocketManager",
101
+ "KucoinWebsocketManager",
102
+ "KucoinUserWebsocket",
103
+ # Weex
104
+ "WeexClient",
105
+ "WeexUniClient",
106
+ "WeexUniWebsocketManager",
107
+ "WeexWebsocketManager",
108
+ "WeexUserWebsocket",
109
+ # Xt
110
+ "XtClient",
111
+ "XtUniClient",
112
+ "XtUniWebsocketManager",
113
+ "XtWebsocketManager",
114
+ "XtUserWebsocket",
36
115
  ]
37
116
 
38
- from ._abc import IAdapter, IUniClient, IUniWebsocketManager
117
+ # ruff: noqa
118
+
119
+ # abstract & base
120
+ from ._abc import IUniClient, IUniWebsocketManager
39
121
  from ._base import BaseClient, Websocket
40
- from .binance import Client as BinanceClient
41
- from .binance import UniClient as BinanceUniClient
42
- from .binance import UniWebsocketManager as BinanceUniWebsocketManager
43
- from .binance import WebsocketManager as BinanceWebsocketManager
44
- from .bitget import Client as BitgetClient
45
- from .bitget import UniClient as BitgetUniClient
46
- from .bitget import UniWebsocketManager as BitgetUniWebsocketManager
47
- from .bitget import WebsocketManager as BitgetWebsocketManager
122
+
123
+ # enums, mappers, types
48
124
  from .enums import Exchange, MarketType, Side, Timeframe
49
125
  from .mapper import get_uni_client, get_uni_websocket_manager
50
- from .types import AggTradeDict, KlineDict, LoggerLike, RequestMethod, TickerDailyDict, TradeDict
126
+ from .types import (
127
+ AggTradeDict,
128
+ KlineDict,
129
+ LoggerLike,
130
+ RequestMethod,
131
+ TickerDailyDict,
132
+ TradeDict,
133
+ )
134
+
135
+ # exchanges
136
+
137
+ from .binance import (
138
+ Client as BinanceClient,
139
+ UniClient as BinanceUniClient,
140
+ UniWebsocketManager as BinanceUniWebsocketManager,
141
+ UserWebsocket as BinanceUserWebsocket,
142
+ WebsocketManager as BinanceWebsocketManager,
143
+ )
144
+
145
+ from .bitget import (
146
+ Client as BitgetClient,
147
+ UniClient as BitgetUniClient,
148
+ UniWebsocketManager as BitgetUniWebsocketManager,
149
+ UserWebsocket as BitgetUserWebsocket,
150
+ WebsocketManager as BitgetWebsocketManager,
151
+ )
152
+
153
+ from .bitrue import (
154
+ Client as BitrueClient,
155
+ UniClient as BitrueUniClient,
156
+ UniWebsocketManager as BitrueUniWebsocketManager,
157
+ UserWebsocket as BitrueUserWebsocket,
158
+ WebsocketManager as BitrueWebsocketManager,
159
+ )
160
+
161
+ from .bitunix import (
162
+ Client as BitunixClient,
163
+ UniClient as BitunixUniClient,
164
+ UniWebsocketManager as BitunixUniWebsocketManager,
165
+ UserWebsocket as BitunixUserWebsocket,
166
+ WebsocketManager as BitunixWebsocketManager,
167
+ )
168
+
169
+ from .btse import (
170
+ Client as BtseClient,
171
+ UniClient as BtseUniClient,
172
+ UniWebsocketManager as BtseUniWebsocketManager,
173
+ UserWebsocket as BtseUserWebsocket,
174
+ WebsocketManager as BtseWebsocketManager,
175
+ )
176
+
177
+ from .bybit import (
178
+ Client as BybitClient,
179
+ UniClient as BybitUniClient,
180
+ UniWebsocketManager as BybitUniWebsocketManager,
181
+ UserWebsocket as BybitUserWebsocket,
182
+ WebsocketManager as BybitWebsocketManager,
183
+ )
184
+
185
+ from .gateio import (
186
+ Client as GateioClient,
187
+ UniClient as GateioUniClient,
188
+ UniWebsocketManager as GateioUniWebsocketManager,
189
+ UserWebsocket as GateioUserWebsocket,
190
+ WebsocketManager as GateioWebsocketManager,
191
+ )
192
+
193
+ from .hyperliquid import (
194
+ Client as HyperliquidClient,
195
+ UniClient as HyperliquidUniClient,
196
+ UniWebsocketManager as HyperliquidUniWebsocketManager,
197
+ UserWebsocket as HyperliquidUserWebsocket,
198
+ WebsocketManager as HyperliquidWebsocketManager,
199
+ )
200
+
201
+ from .kcex import (
202
+ Client as KcexClient,
203
+ UniClient as KcexUniClient,
204
+ UniWebsocketManager as KcexUniWebsocketManager,
205
+ UserWebsocket as KcexUserWebsocket,
206
+ WebsocketManager as KcexWebsocketManager,
207
+ )
208
+
209
+ from .kraken import (
210
+ Client as KrakenClient,
211
+ UniClient as KrakenUniClient,
212
+ UniWebsocketManager as KrakenUniWebsocketManager,
213
+ UserWebsocket as KrakenUserWebsocket,
214
+ WebsocketManager as KrakenWebsocketManager,
215
+ )
216
+
217
+ from .kucoin import (
218
+ Client as KucoinClient,
219
+ UniClient as KucoinUniClient,
220
+ UniWebsocketManager as KucoinUniWebsocketManager,
221
+ UserWebsocket as KucoinUserWebsocket,
222
+ WebsocketManager as KucoinWebsocketManager,
223
+ )
224
+
225
+ from .mexc import (
226
+ Client as MexcClient,
227
+ UniClient as MexcUniClient,
228
+ UniWebsocketManager as MexcUniWebsocketManager,
229
+ UserWebsocket as MexcUserWebsocket,
230
+ WebsocketManager as MexcWebsocketManager,
231
+ )
232
+
233
+ from .okx import (
234
+ Client as OkxClient,
235
+ UniClient as OkxUniClient,
236
+ UniWebsocketManager as OkxUniWebsocketManager,
237
+ UserWebsocket as OkxUserWebsocket,
238
+ WebsocketManager as OkxWebsocketManager,
239
+ )
240
+
241
+ from .weex import (
242
+ Client as WeexClient,
243
+ UniClient as WeexUniClient,
244
+ UniWebsocketManager as WeexUniWebsocketManager,
245
+ UserWebsocket as WeexUserWebsocket,
246
+ WebsocketManager as WeexWebsocketManager,
247
+ )
248
+
249
+ from .xt import (
250
+ Client as XtClient,
251
+ UniClient as XtUniClient,
252
+ UniWebsocketManager as XtUniWebsocketManager,
253
+ UserWebsocket as XtUserWebsocket,
254
+ WebsocketManager as XtWebsocketManager,
255
+ )
unicex/_abc/__init__.py CHANGED
@@ -1,9 +1,7 @@
1
1
  __all__ = [
2
2
  "IUniClient",
3
- "IAdapter",
4
3
  "IUniWebsocketManager",
5
4
  ]
6
5
 
7
- from .adapter import IAdapter
8
6
  from .uni_client import IUniClient
9
7
  from .uni_websocket_manager import IUniWebsocketManager
unicex/_abc/uni_client.py CHANGED
@@ -1,18 +1,15 @@
1
1
  __all__ = ["IUniClient"]
2
2
 
3
3
  from abc import ABC, abstractmethod
4
- from functools import cached_property
5
4
  from typing import Generic, Self, TypeVar, overload
6
5
 
7
6
  import aiohttp
8
7
 
9
8
  from unicex._base import BaseClient
10
9
  from unicex.enums import Timeframe
11
- from unicex.types import KlineDict, LoggerLike, TickerDailyDict
10
+ from unicex.types import KlineDict, LoggerLike, OpenInterestDict, OpenInterestItem, TickerDailyDict
12
11
  from unicex.utils import batched_list
13
12
 
14
- from .adapter import IAdapter
15
-
16
13
  TClient = TypeVar("TClient", bound="BaseClient")
17
14
 
18
15
 
@@ -149,17 +146,7 @@ class IUniClient(ABC, Generic[TClient]):
149
146
  Возвращает:
150
147
  `type[TClient]`: Класс клиента.
151
148
  """
152
- pass
153
-
154
- @cached_property
155
- @abstractmethod
156
- def adapter(self) -> IAdapter:
157
- """Возвращает реализацию адаптера под конкретную биржу.
158
-
159
- Возвращает:
160
- `IAdapter`: Реализация адаптера.
161
- """
162
- pass
149
+ ...
163
150
 
164
151
  @abstractmethod
165
152
  async def tickers(self, only_usdt: bool = True) -> list[str]:
@@ -171,7 +158,7 @@ class IUniClient(ABC, Generic[TClient]):
171
158
  Возвращает:
172
159
  `list[str]`: Список тикеров.
173
160
  """
174
- pass
161
+ ...
175
162
 
176
163
  async def tickers_batched(
177
164
  self, only_usdt: bool = True, batch_size: int = 20
@@ -198,7 +185,7 @@ class IUniClient(ABC, Generic[TClient]):
198
185
  Возвращает:
199
186
  `list[str]`: Список тикеров.
200
187
  """
201
- pass
188
+ ...
202
189
 
203
190
  async def futures_tickers_batched(
204
191
  self, only_usdt: bool = True, batch_size: int = 20
@@ -222,7 +209,7 @@ class IUniClient(ABC, Generic[TClient]):
222
209
  Возвращает:
223
210
  `dict[str, float]`: Словарь с последними ценами для каждого тикера.
224
211
  """
225
- pass
212
+ ...
226
213
 
227
214
  @abstractmethod
228
215
  async def futures_last_price(self) -> dict[str, float]:
@@ -231,31 +218,31 @@ class IUniClient(ABC, Generic[TClient]):
231
218
  Возвращает:
232
219
  `dict[str, float]`: Словарь с последними ценами для каждого тикера.
233
220
  """
234
- pass
221
+ ...
235
222
 
236
223
  @abstractmethod
237
- async def ticker_24h(self) -> dict[str, TickerDailyDict]:
224
+ async def ticker_24hr(self) -> TickerDailyDict:
238
225
  """Возвращает статистику за последние 24 часа для каждого тикера.
239
226
 
240
227
  Возвращает:
241
- `dict[str, TickerDailyDict]`: Словарь с статистикой за последние 24 часа для каждого тикера.
228
+ `TickerDailyDict`: Словарь с статистикой за последние 24 часа для каждого тикера.
242
229
  """
243
- pass
230
+ ...
244
231
 
245
232
  @abstractmethod
246
- async def futures_ticker_24h(self) -> dict[str, TickerDailyDict]:
233
+ async def futures_ticker_24hr(self) -> TickerDailyDict:
247
234
  """Возвращает статистику за последние 24 часа для каждого тикера.
248
235
 
249
236
  Возвращает:
250
- `dict[str, TickerDailyDict]`: Словарь с статистикой за последние 24 часа для каждого тикера.
237
+ `TickerDailyDict`: Словарь с статистикой за последние 24 часа для каждого тикера.
251
238
  """
252
- pass
239
+ ...
253
240
 
254
241
  @abstractmethod
255
242
  async def klines(
256
243
  self,
257
244
  symbol: str,
258
- interval: Timeframe,
245
+ interval: Timeframe | str,
259
246
  limit: int | None = None,
260
247
  start_time: int | None = None,
261
248
  end_time: int | None = None,
@@ -272,13 +259,13 @@ class IUniClient(ABC, Generic[TClient]):
272
259
  Возвращает:
273
260
  `list[KlineDict]`: Список свечей.
274
261
  """
275
- pass
262
+ ...
276
263
 
277
264
  @abstractmethod
278
265
  async def futures_klines(
279
266
  self,
280
267
  symbol: str,
281
- interval: Timeframe,
268
+ interval: Timeframe | str,
282
269
  limit: int | None = None,
283
270
  start_time: int | None = None,
284
271
  end_time: int | None = None,
@@ -295,32 +282,48 @@ class IUniClient(ABC, Generic[TClient]):
295
282
  Возвращает:
296
283
  `list[KlineDict]`: Список свечей.
297
284
  """
298
- pass
285
+ ...
286
+
287
+ @overload
288
+ async def funding_rate(self, symbol: str) -> float: ...
289
+
290
+ @overload
291
+ async def funding_rate(self, symbol: None) -> dict[str, float]: ...
292
+
293
+ @overload
294
+ async def funding_rate(self) -> dict[str, float]: ...
299
295
 
300
296
  @abstractmethod
301
- async def funding_rate(self) -> dict[str, float]:
302
- """Возвращает ставку финансирования для всех тикеров.
297
+ async def funding_rate(self, symbol: str | None = None) -> dict[str, float] | float:
298
+ """Возвращает ставку финансирования для тикера или всех тикеров, если тикер не указан.
299
+
300
+ Параметры:
301
+ symbol (`str | None`): Название тикера (Опционально).
303
302
 
304
303
  Возвращает:
305
- `dict[str, float]`: Ставка финансирования для каждого тикера.
304
+ `dict[str, float] | float`: Ставка финансирования для тикера или словарь со ставками для всех тикеров.
306
305
  """
307
- pass
306
+ ...
307
+
308
+ @overload
309
+ async def open_interest(self, symbol: str) -> OpenInterestItem: ...
308
310
 
309
311
  @overload
310
- async def open_interest(self, symbol: str) -> float: ...
312
+ async def open_interest(self, symbol: None) -> OpenInterestDict: ...
311
313
 
312
314
  @overload
313
- async def open_interest(self, symbol: None) -> dict[str, float]: ...
315
+ async def open_interest(self) -> OpenInterestDict: ...
314
316
 
315
317
  @abstractmethod
316
- async def open_interest(self, symbol: str | None) -> float | dict[str, float]:
317
- """Возвращает объем открытого интереса для тикера или всех тикеров,
318
- если тикер не указан.
318
+ async def open_interest(self, symbol: str | None = None) -> OpenInterestItem | OpenInterestDict:
319
+ """Возвращает объем открытого интереса для тикера или всех тикеров, если тикер не указан.
319
320
 
320
321
  Параметры:
321
- symbol (`str | None`): Название тикера (Опционально).
322
+ symbol (`str | None`): Название тикера (Опционально, но обязателен для следующих бирж: BINANCE).
322
323
 
323
324
  Возвращает:
324
- `float`: Объем открытых позиций в монетах.
325
+ `OpenInterestItem | OpenInterestDict`: Если тикер передан - словарь со временем и объемом
326
+ открытого интереса в монетах. Если нет передан - то словарь, в котором ключ - тикер,
327
+ а значение - словарь с временем и объемом открытого интереса в монетах.
325
328
  """
326
- pass
329
+ ...
@@ -92,7 +92,7 @@ class IUniWebsocketManager(ABC):
92
92
  Возвращает:
93
93
  `Websocket`: Экземпляр вебсокета для управления соединением.
94
94
  """
95
- pass
95
+ ...
96
96
 
97
97
  @overload
98
98
  def futures_klines(
@@ -135,7 +135,7 @@ class IUniWebsocketManager(ABC):
135
135
  Возвращает:
136
136
  `Websocket`: Экземпляр вебсокета.
137
137
  """
138
- pass
138
+ ...
139
139
 
140
140
  @overload
141
141
  def trades(
@@ -174,7 +174,7 @@ class IUniWebsocketManager(ABC):
174
174
  Возвращает:
175
175
  `Websocket`: Экземпляр вебсокета.
176
176
  """
177
- pass
177
+ ...
178
178
 
179
179
  @overload
180
180
  def aggtrades(
@@ -213,7 +213,7 @@ class IUniWebsocketManager(ABC):
213
213
  Возвращает:
214
214
  `Websocket`: Экземпляр вебсокета.
215
215
  """
216
- pass
216
+ ...
217
217
 
218
218
  @overload
219
219
  def futures_trades(
@@ -252,7 +252,7 @@ class IUniWebsocketManager(ABC):
252
252
  Возвращает:
253
253
  `Websocket`: Экземпляр вебсокета.
254
254
  """
255
- pass
255
+ ...
256
256
 
257
257
  @overload
258
258
  def futures_aggtrades(
@@ -291,4 +291,4 @@ class IUniWebsocketManager(ABC):
291
291
  Возвращает:
292
292
  `Websocket`: Экземпляр вебсокета.
293
293
  """
294
- pass
294
+ ...
unicex/_base/websocket.py CHANGED
@@ -125,11 +125,15 @@ class Websocket:
125
125
 
126
126
  # Проверяем размер очереди сообщений и выбрасываем ошибку, если он превышает максимальный размер
127
127
  self._check_queue_size()
128
+ except QueueOverflowError:
129
+ self._logger.error("Message queue is overflow")
128
130
  except orjson.JSONDecodeError as e:
129
131
  if message in ["ping", "pong"]:
130
- self._logger.debug(f"{self} Received ping message: {message}")
132
+ self._logger.debug(f"Received ping message: {message}")
131
133
  else:
132
134
  self._logger.error(f"Failed to decode JSON message: {message}, error: {e}")
135
+ except Exception as e:
136
+ self._logger.error(f"Unexpected error: {e}")
133
137
 
134
138
  def _check_queue_size(self) -> None:
135
139
  """Проверяет размер очереди и выбрасывает ошибку при переполнении."""
@@ -182,13 +186,9 @@ class Websocket:
182
186
  except asyncio.exceptions.CancelledError:
183
187
  break
184
188
  except Exception as e:
185
- self._logger.error(f"{self} Error({type(e)}) while processing message: {e}")
189
+ self._logger.error(f"Error({type(e)}) while processing message: {e}")
186
190
 
187
- try:
188
- self._queue.task_done()
189
- except Exception as e:
190
- if self._running:
191
- self._logger.error(f"{self} Error({type(e)}) while marking task done: {e}")
191
+ self._queue.task_done()
192
192
 
193
193
  def _generate_ws_kwargs(self) -> dict:
194
194
  """Генерирует аргументы для запуска вебсокета."""
@@ -1,6 +1,12 @@
1
1
  """Пакет, содержащий реализации клиентов и менеджеров для работы с биржей Binance."""
2
2
 
3
- __all__ = ["Client", "UniClient", "UserWebsocket", "WebsocketManager", "UniWebsocketManager"]
3
+ __all__ = [
4
+ "Client",
5
+ "UniClient",
6
+ "UserWebsocket",
7
+ "WebsocketManager",
8
+ "UniWebsocketManager",
9
+ ]
4
10
 
5
11
  from .client import Client
6
12
  from .uni_client import UniClient