unicex 0.5.0__py3-none-any.whl → 0.7.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 (97) hide show
  1. unicex/__init__.py +56 -124
  2. unicex/_abc/__init__.py +2 -0
  3. unicex/_abc/exchange_info.py +176 -0
  4. unicex/_abc/uni_client.py +2 -2
  5. unicex/_base/client.py +2 -2
  6. unicex/binance/__init__.py +12 -0
  7. unicex/binance/adapter.py +1 -1
  8. unicex/binance/exchange_info.py +12 -0
  9. unicex/bitget/__init__.py +14 -4
  10. unicex/bitget/adapter.py +1 -1
  11. unicex/bitget/exchange_info.py +12 -0
  12. unicex/bitget/uni_websocket_manager.py +1 -1
  13. unicex/bybit/__init__.py +12 -0
  14. unicex/bybit/adapter.py +1 -1
  15. unicex/bybit/exchange_info.py +12 -0
  16. unicex/enums.py +16 -5
  17. unicex/gateio/__init__.py +12 -0
  18. unicex/gateio/adapter.py +2 -2
  19. unicex/gateio/exchange_info.py +12 -0
  20. unicex/hyperliquid/__init__.py +12 -0
  21. unicex/hyperliquid/adapter.py +140 -30
  22. unicex/hyperliquid/client.py +2208 -125
  23. unicex/hyperliquid/exchange_info.py +100 -0
  24. unicex/hyperliquid/uni_client.py +176 -22
  25. unicex/mapper.py +35 -33
  26. unicex/mexc/__init__.py +12 -0
  27. unicex/mexc/adapter.py +28 -11
  28. unicex/mexc/exchange_info.py +32 -0
  29. unicex/mexc/uni_client.py +6 -0
  30. unicex/okx/__init__.py +12 -0
  31. unicex/okx/adapter.py +23 -7
  32. unicex/okx/exchange_info.py +50 -0
  33. unicex/okx/uni_client.py +2 -2
  34. unicex/types.py +31 -0
  35. unicex-0.7.0.dist-info/METADATA +192 -0
  36. unicex-0.7.0.dist-info/RECORD +75 -0
  37. unicex/bitrue/__init__.py +0 -15
  38. unicex/bitrue/adapter.py +0 -8
  39. unicex/bitrue/client.py +0 -128
  40. unicex/bitrue/uni_client.py +0 -151
  41. unicex/bitrue/uni_websocket_manager.py +0 -269
  42. unicex/bitrue/user_websocket.py +0 -7
  43. unicex/bitrue/websocket_manager.py +0 -11
  44. unicex/bitunix/__init__.py +0 -15
  45. unicex/bitunix/adapter.py +0 -8
  46. unicex/bitunix/client.py +0 -8
  47. unicex/bitunix/uni_client.py +0 -151
  48. unicex/bitunix/uni_websocket_manager.py +0 -269
  49. unicex/bitunix/user_websocket.py +0 -7
  50. unicex/bitunix/websocket_manager.py +0 -11
  51. unicex/btse/__init__.py +0 -15
  52. unicex/btse/adapter.py +0 -8
  53. unicex/btse/client.py +0 -123
  54. unicex/btse/uni_client.py +0 -151
  55. unicex/btse/uni_websocket_manager.py +0 -269
  56. unicex/btse/user_websocket.py +0 -7
  57. unicex/btse/websocket_manager.py +0 -11
  58. unicex/kcex/__init__.py +0 -15
  59. unicex/kcex/adapter.py +0 -8
  60. unicex/kcex/client.py +0 -8
  61. unicex/kcex/uni_client.py +0 -151
  62. unicex/kcex/uni_websocket_manager.py +0 -269
  63. unicex/kcex/user_websocket.py +0 -7
  64. unicex/kcex/websocket_manager.py +0 -11
  65. unicex/kraken/__init__.py +0 -15
  66. unicex/kraken/adapter.py +0 -8
  67. unicex/kraken/client.py +0 -165
  68. unicex/kraken/uni_client.py +0 -151
  69. unicex/kraken/uni_websocket_manager.py +0 -269
  70. unicex/kraken/user_websocket.py +0 -7
  71. unicex/kraken/websocket_manager.py +0 -11
  72. unicex/kucoin/__init__.py +0 -15
  73. unicex/kucoin/adapter.py +0 -8
  74. unicex/kucoin/client.py +0 -120
  75. unicex/kucoin/uni_client.py +0 -151
  76. unicex/kucoin/uni_websocket_manager.py +0 -269
  77. unicex/kucoin/user_websocket.py +0 -7
  78. unicex/kucoin/websocket_manager.py +0 -11
  79. unicex/weex/__init__.py +0 -15
  80. unicex/weex/adapter.py +0 -8
  81. unicex/weex/client.py +0 -8
  82. unicex/weex/uni_client.py +0 -151
  83. unicex/weex/uni_websocket_manager.py +0 -269
  84. unicex/weex/user_websocket.py +0 -7
  85. unicex/weex/websocket_manager.py +0 -11
  86. unicex/xt/__init__.py +0 -15
  87. unicex/xt/adapter.py +0 -8
  88. unicex/xt/client.py +0 -8
  89. unicex/xt/uni_client.py +0 -151
  90. unicex/xt/uni_websocket_manager.py +0 -269
  91. unicex/xt/user_websocket.py +0 -7
  92. unicex/xt/websocket_manager.py +0 -11
  93. unicex-0.5.0.dist-info/METADATA +0 -170
  94. unicex-0.5.0.dist-info/RECORD +0 -123
  95. {unicex-0.5.0.dist-info → unicex-0.7.0.dist-info}/WHEEL +0 -0
  96. {unicex-0.5.0.dist-info → unicex-0.7.0.dist-info}/licenses/LICENSE +0 -0
  97. {unicex-0.5.0.dist-info → unicex-0.7.0.dist-info}/top_level.txt +0 -0
@@ -1,269 +0,0 @@
1
- __all__ = ["IUniWebsocketManager"]
2
-
3
- from collections.abc import Awaitable, Callable, Sequence
4
- from typing import Any, overload
5
-
6
- from unicex._abc import IUniWebsocketManager
7
- from unicex._base import Websocket
8
- from unicex.enums import Timeframe
9
- from unicex.types import LoggerLike
10
-
11
- from .adapter import Adapter
12
- from .client import Client
13
- from .uni_client import UniClient
14
- from .websocket_manager import WebsocketManager
15
-
16
- type CallbackType = Callable[[Any], Awaitable[None]]
17
-
18
-
19
- class UniWebsocketManager(IUniWebsocketManager):
20
- """Реализация менеджера асинхронных унифицированных вебсокетов."""
21
-
22
- def __init__(
23
- self, client: Client | UniClient | None = None, logger: LoggerLike | None = None
24
- ) -> None:
25
- """Инициализирует унифицированный менеджер вебсокетов.
26
-
27
- Параметры:
28
- client (`Client | UniClient | None`): Клиент Weex или унифицированный клиент. Нужен для подключения к приватным топикам.
29
- logger (`LoggerLike | None`): Логгер для записи логов.
30
- """
31
- super().__init__(client=client, logger=logger)
32
- self._websocket_manager = WebsocketManager(self._client) # type: ignore
33
- self._adapter = Adapter()
34
-
35
- @overload
36
- def klines(
37
- self,
38
- callback: CallbackType,
39
- timeframe: Timeframe,
40
- *,
41
- symbol: str,
42
- symbols: None = None,
43
- ) -> Websocket: ...
44
-
45
- @overload
46
- def klines(
47
- self,
48
- callback: CallbackType,
49
- timeframe: Timeframe,
50
- *,
51
- symbol: None = None,
52
- symbols: Sequence[str],
53
- ) -> Websocket: ...
54
-
55
- def klines(
56
- self,
57
- callback: CallbackType,
58
- timeframe: Timeframe,
59
- symbol: str | None = None,
60
- symbols: Sequence[str] | None = None,
61
- ) -> Websocket:
62
- """Открывает стрим свечей (spot) с унификацией сообщений.
63
-
64
- Параметры:
65
- callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
66
- timeframe (`Timeframe`): Временной интервал свечей.
67
- symbol (`str | None`): Один символ для подписки.
68
- symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
69
-
70
- Должен быть указан либо `symbol`, либо `symbols`.
71
-
72
- Возвращает:
73
- `Websocket`: Экземпляр вебсокета для управления соединением.
74
- """
75
- raise NotImplementedError()
76
-
77
- @overload
78
- def futures_klines(
79
- self,
80
- callback: CallbackType,
81
- timeframe: Timeframe,
82
- *,
83
- symbol: str,
84
- symbols: None = None,
85
- ) -> Websocket: ...
86
-
87
- @overload
88
- def futures_klines(
89
- self,
90
- callback: CallbackType,
91
- timeframe: Timeframe,
92
- *,
93
- symbol: None = None,
94
- symbols: Sequence[str],
95
- ) -> Websocket: ...
96
-
97
- def futures_klines(
98
- self,
99
- callback: CallbackType,
100
- timeframe: Timeframe,
101
- symbol: str | None = None,
102
- symbols: Sequence[str] | None = None,
103
- ) -> Websocket:
104
- """Открывает стрим свечей (futures) с унификацией сообщений.
105
-
106
- Параметры:
107
- callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
108
- timeframe (`Timeframe`): Временной интервал свечей.
109
- symbol (`str | None`): Один символ для подписки.
110
- symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
111
-
112
- Должен быть указан либо `symbol`, либо `symbols`.
113
-
114
- Возвращает:
115
- `Websocket`: Экземпляр вебсокета.
116
- """
117
- raise NotImplementedError()
118
-
119
- @overload
120
- def trades(
121
- self,
122
- callback: CallbackType,
123
- *,
124
- symbol: str,
125
- symbols: None = None,
126
- ) -> Websocket: ...
127
-
128
- @overload
129
- def trades(
130
- self,
131
- callback: CallbackType,
132
- *,
133
- symbol: None = None,
134
- symbols: Sequence[str],
135
- ) -> Websocket: ...
136
-
137
- def trades(
138
- self,
139
- callback: CallbackType,
140
- symbol: str | None = None,
141
- symbols: Sequence[str] | None = None,
142
- ) -> Websocket:
143
- """Открывает стрим сделок (spot) с унификацией сообщений.
144
-
145
- Параметры:
146
- callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
147
- symbol (`str | None`): Один символ для подписки.
148
- symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
149
-
150
- Должен быть указан либо `symbol`, либо `symbols`.
151
-
152
- Возвращает:
153
- `Websocket`: Экземпляр вебсокета.
154
- """
155
- raise NotImplementedError()
156
-
157
- @overload
158
- def aggtrades(
159
- self,
160
- callback: CallbackType,
161
- *,
162
- symbol: str,
163
- symbols: None = None,
164
- ) -> Websocket: ...
165
-
166
- @overload
167
- def aggtrades(
168
- self,
169
- callback: CallbackType,
170
- *,
171
- symbol: None = None,
172
- symbols: Sequence[str],
173
- ) -> Websocket: ...
174
-
175
- def aggtrades(
176
- self,
177
- callback: CallbackType,
178
- symbol: str | None = None,
179
- symbols: Sequence[str] | None = None,
180
- ) -> Websocket:
181
- """Открывает стрим агрегированных сделок (spot) с унификацией сообщений.
182
-
183
- Параметры:
184
- callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
185
- symbol (`str | None`): Один символ для подписки.
186
- symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
187
-
188
- Должен быть указан либо `symbol`, либо `symbols`.
189
-
190
- Возвращает:
191
- `Websocket`: Экземпляр вебсокета.
192
- """
193
- raise NotImplementedError()
194
-
195
- @overload
196
- def futures_trades(
197
- self,
198
- callback: CallbackType,
199
- *,
200
- symbol: str,
201
- symbols: None = None,
202
- ) -> Websocket: ...
203
-
204
- @overload
205
- def futures_trades(
206
- self,
207
- callback: CallbackType,
208
- *,
209
- symbol: None = None,
210
- symbols: Sequence[str],
211
- ) -> Websocket: ...
212
-
213
- def futures_trades(
214
- self,
215
- callback: CallbackType,
216
- symbol: str | None = None,
217
- symbols: Sequence[str] | None = None,
218
- ) -> Websocket:
219
- """Открывает стрим сделок (futures) с унификацией сообщений.
220
-
221
- Параметры:
222
- callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
223
- symbol (`str | None`): Один символ для подписки.
224
- symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
225
-
226
- Должен быть указан либо `symbol`, либо `symbols`.
227
-
228
- Возвращает:
229
- `Websocket`: Экземпляр вебсокета.
230
- """
231
- raise NotImplementedError()
232
-
233
- @overload
234
- def futures_aggtrades(
235
- self,
236
- callback: CallbackType,
237
- *,
238
- symbol: str,
239
- symbols: None = None,
240
- ) -> Websocket: ...
241
-
242
- @overload
243
- def futures_aggtrades(
244
- self,
245
- callback: CallbackType,
246
- *,
247
- symbol: None = None,
248
- symbols: Sequence[str],
249
- ) -> Websocket: ...
250
-
251
- def futures_aggtrades(
252
- self,
253
- callback: CallbackType,
254
- symbol: str | None = None,
255
- symbols: Sequence[str] | None = None,
256
- ) -> Websocket:
257
- """Открывает стрим агрегированных сделок (futures) с унификацией сообщений.
258
-
259
- Параметры:
260
- callback (`CallbackType`): Асинхронная функция обратного вызова для обработки сообщений.
261
- symbol (`str | None`): Один символ для подписки.
262
- symbols (`Sequence[str] | None`): Список символов для мультиплекс‑подключения.
263
-
264
- Должен быть указан либо `symbol`, либо `symbols`.
265
-
266
- Возвращает:
267
- `Websocket`: Экземпляр вебсокета.
268
- """
269
- raise NotImplementedError()
@@ -1,7 +0,0 @@
1
- __all__ = ["UserWebsocket"]
2
-
3
-
4
- class UserWebsocket:
5
- """Пользовательский вебсокет Weex."""
6
-
7
- pass
@@ -1,11 +0,0 @@
1
- __all__ = ["WebsocketManager"]
2
-
3
-
4
- from collections.abc import Awaitable, Callable
5
- from typing import Any
6
-
7
- type CallbackType = Callable[[Any], Awaitable[None]]
8
-
9
-
10
- class WebsocketManager:
11
- """Менеджер асинхронных вебсокетов для Weex."""
unicex/xt/__init__.py DELETED
@@ -1,15 +0,0 @@
1
- """Пакет, содержащий реализации клиентов и менеджеров для работы с биржей Xt."""
2
-
3
- __all__ = [
4
- "Client",
5
- "UniClient",
6
- "UserWebsocket",
7
- "WebsocketManager",
8
- "UniWebsocketManager",
9
- ]
10
-
11
- from .client import Client
12
- from .uni_client import UniClient
13
- from .uni_websocket_manager import UniWebsocketManager
14
- from .user_websocket import UserWebsocket
15
- from .websocket_manager import WebsocketManager
unicex/xt/adapter.py DELETED
@@ -1,8 +0,0 @@
1
- __all__ = ["Adapter"]
2
-
3
- from unicex.utils import catch_adapter_errors, decorate_all_methods
4
-
5
-
6
- @decorate_all_methods(catch_adapter_errors)
7
- class Adapter:
8
- """Адаптер для унификации данных с Xt API."""
unicex/xt/client.py DELETED
@@ -1,8 +0,0 @@
1
- __all__ = ["Client"]
2
-
3
-
4
- from unicex._base import BaseClient
5
-
6
-
7
- class Client(BaseClient):
8
- """Клиент для работы с Xt API."""
unicex/xt/uni_client.py DELETED
@@ -1,151 +0,0 @@
1
- __all__ = ["UniClient"]
2
-
3
-
4
- from typing import overload
5
-
6
- from unicex._abc import IUniClient
7
- from unicex.enums import Timeframe
8
- from unicex.types import KlineDict, OpenInterestDict, OpenInterestItem, TickerDailyDict
9
-
10
- from .client import Client
11
-
12
-
13
- class UniClient(IUniClient[Client]):
14
- """Унифицированный клиент для работы с Xt API."""
15
-
16
- @property
17
- def _client_cls(self) -> type[Client]:
18
- """Возвращает класс клиента для Xt.
19
-
20
- Возвращает:
21
- type[Client]: Класс клиента для Xt.
22
- """
23
- return Client
24
-
25
- async def tickers(self, only_usdt: bool = True) -> list[str]:
26
- """Возвращает список тикеров.
27
-
28
- Параметры:
29
- only_usdt (bool): Если True, возвращает только тикеры в паре к USDT.
30
-
31
- Возвращает:
32
- list[str]: Список тикеров.
33
- """
34
- raise NotImplementedError()
35
-
36
- async def futures_tickers(self, only_usdt: bool = True) -> list[str]:
37
- """Возвращает список тикеров.
38
-
39
- Параметры:
40
- only_usdt (bool): Если True, возвращает только тикеры в паре к USDT.
41
-
42
- Возвращает:
43
- list[str]: Список тикеров.
44
- """
45
- raise NotImplementedError()
46
-
47
- async def last_price(self) -> dict[str, float]:
48
- """Возвращает последнюю цену для каждого тикера.
49
-
50
- Возвращает:
51
- dict[str, float]: Словарь с последними ценами для каждого тикера.
52
- """
53
- raise NotImplementedError()
54
-
55
- async def futures_last_price(self) -> dict[str, float]:
56
- """Возвращает последнюю цену для каждого тикера.
57
-
58
- Возвращает:
59
- dict[str, float]: Словарь с последними ценами для каждого тикера.
60
- """
61
- raise NotImplementedError()
62
-
63
- async def ticker_24hr(self) -> TickerDailyDict:
64
- """Возвращает статистику за последние 24 часа для каждого тикера.
65
-
66
- Возвращает:
67
- TickerDailyDict: Словарь с статистикой за последние 24 часа для каждого тикера.
68
- """
69
- raise NotImplementedError()
70
-
71
- async def futures_ticker_24hr(self) -> TickerDailyDict:
72
- """Возвращает статистику за последние 24 часа для каждого тикера.
73
-
74
- Возвращает:
75
- TickerDailyDict: Словарь с статистикой за последние 24 часа для каждого тикера.
76
- """
77
- raise NotImplementedError()
78
-
79
- async def klines(
80
- self,
81
- symbol: str,
82
- interval: Timeframe | str,
83
- limit: int | None = None,
84
- start_time: int | None = None,
85
- end_time: int | None = None,
86
- ) -> list[KlineDict]:
87
- """Возвращает список свечей для тикера.
88
-
89
- Параметры:
90
- symbol (str): Название тикера.
91
- limit (int | None): Количество свечей.
92
- interval (Timeframe | str): Таймфрейм свечей.
93
- start_time (int | None): Время начала периода в миллисекундах.
94
- end_time (int | None): Время окончания периода в миллисекундах.
95
-
96
- Возвращает:
97
- list[KlineDict]: Список свечей для тикера.
98
- """
99
- raise NotImplementedError()
100
-
101
- async def futures_klines(
102
- self,
103
- symbol: str,
104
- interval: Timeframe | str,
105
- limit: int | None = None,
106
- start_time: int | None = None,
107
- end_time: int | None = None,
108
- ) -> list[KlineDict]:
109
- """Возвращает список свечей для тикера.
110
-
111
- Параметры:
112
- symbol (str): Название тикера.
113
- limit (int | None): Количество свечей.
114
- interval (Timeframe | str): Таймфрейм свечей.
115
- start_time (int | None): Время начала периода в миллисекундах.
116
- end_time (int | None): Время окончания периода в миллисекундах.
117
-
118
- Возвращает:
119
- list[KlineDict]: Список свечей для тикера.
120
- """
121
- raise NotImplementedError()
122
-
123
- async def funding_rate(self) -> dict[str, float]:
124
- """Возвращает ставку финансирования для всех тикеров.
125
-
126
- Возвращает:
127
- dict[str, float]: Ставка финансирования для каждого тикера.
128
- """
129
- raise NotImplementedError()
130
-
131
- @overload
132
- async def open_interest(self, symbol: str) -> OpenInterestItem: ...
133
-
134
- @overload
135
- async def open_interest(self, symbol: None) -> OpenInterestDict: ...
136
-
137
- @overload
138
- async def open_interest(self) -> OpenInterestDict: ...
139
-
140
- async def open_interest(self, symbol: str | None = None) -> OpenInterestItem | OpenInterestDict:
141
- """Возвращает объем открытого интереса для тикера или всех тикеров, если тикер не указан.
142
-
143
- Параметры:
144
- symbol (`str | None`): Название тикера. (Опционально, но обязателен для следующих бирж: BINANCE).
145
-
146
- Возвращает:
147
- `OpenInterestItem | OpenInterestDict`: Если тикер передан - словарь со временем и объемом
148
- открытого интереса в монетах. Если нет передан - то словарь, в котором ключ - тикер,
149
- а значение - словарь с временем и объемом открытого интереса в монетах.
150
- """
151
- raise NotImplementedError()