unicex 0.5.0__py3-none-any.whl → 0.8.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 (100) 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 +2 -2
  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 +2 -2
  15. unicex/bybit/exchange_info.py +12 -0
  16. unicex/bybit/uni_client.py +2 -2
  17. unicex/enums.py +16 -5
  18. unicex/extra.py +84 -6
  19. unicex/gateio/__init__.py +12 -0
  20. unicex/gateio/adapter.py +4 -4
  21. unicex/gateio/exchange_info.py +12 -0
  22. unicex/hyperliquid/__init__.py +12 -0
  23. unicex/hyperliquid/adapter.py +151 -30
  24. unicex/hyperliquid/client.py +2208 -125
  25. unicex/hyperliquid/exchange_info.py +100 -0
  26. unicex/hyperliquid/uni_client.py +176 -22
  27. unicex/mapper.py +35 -33
  28. unicex/mexc/__init__.py +12 -0
  29. unicex/mexc/adapter.py +30 -13
  30. unicex/mexc/exchange_info.py +32 -0
  31. unicex/mexc/uni_client.py +6 -0
  32. unicex/okx/__init__.py +12 -0
  33. unicex/okx/adapter.py +25 -9
  34. unicex/okx/client.py +2599 -26
  35. unicex/okx/exchange_info.py +50 -0
  36. unicex/okx/uni_client.py +10 -10
  37. unicex/types.py +31 -0
  38. unicex-0.8.0.dist-info/METADATA +192 -0
  39. unicex-0.8.0.dist-info/RECORD +75 -0
  40. unicex/bitrue/__init__.py +0 -15
  41. unicex/bitrue/adapter.py +0 -8
  42. unicex/bitrue/client.py +0 -128
  43. unicex/bitrue/uni_client.py +0 -151
  44. unicex/bitrue/uni_websocket_manager.py +0 -269
  45. unicex/bitrue/user_websocket.py +0 -7
  46. unicex/bitrue/websocket_manager.py +0 -11
  47. unicex/bitunix/__init__.py +0 -15
  48. unicex/bitunix/adapter.py +0 -8
  49. unicex/bitunix/client.py +0 -8
  50. unicex/bitunix/uni_client.py +0 -151
  51. unicex/bitunix/uni_websocket_manager.py +0 -269
  52. unicex/bitunix/user_websocket.py +0 -7
  53. unicex/bitunix/websocket_manager.py +0 -11
  54. unicex/btse/__init__.py +0 -15
  55. unicex/btse/adapter.py +0 -8
  56. unicex/btse/client.py +0 -123
  57. unicex/btse/uni_client.py +0 -151
  58. unicex/btse/uni_websocket_manager.py +0 -269
  59. unicex/btse/user_websocket.py +0 -7
  60. unicex/btse/websocket_manager.py +0 -11
  61. unicex/kcex/__init__.py +0 -15
  62. unicex/kcex/adapter.py +0 -8
  63. unicex/kcex/client.py +0 -8
  64. unicex/kcex/uni_client.py +0 -151
  65. unicex/kcex/uni_websocket_manager.py +0 -269
  66. unicex/kcex/user_websocket.py +0 -7
  67. unicex/kcex/websocket_manager.py +0 -11
  68. unicex/kraken/__init__.py +0 -15
  69. unicex/kraken/adapter.py +0 -8
  70. unicex/kraken/client.py +0 -165
  71. unicex/kraken/uni_client.py +0 -151
  72. unicex/kraken/uni_websocket_manager.py +0 -269
  73. unicex/kraken/user_websocket.py +0 -7
  74. unicex/kraken/websocket_manager.py +0 -11
  75. unicex/kucoin/__init__.py +0 -15
  76. unicex/kucoin/adapter.py +0 -8
  77. unicex/kucoin/client.py +0 -120
  78. unicex/kucoin/uni_client.py +0 -151
  79. unicex/kucoin/uni_websocket_manager.py +0 -269
  80. unicex/kucoin/user_websocket.py +0 -7
  81. unicex/kucoin/websocket_manager.py +0 -11
  82. unicex/weex/__init__.py +0 -15
  83. unicex/weex/adapter.py +0 -8
  84. unicex/weex/client.py +0 -8
  85. unicex/weex/uni_client.py +0 -151
  86. unicex/weex/uni_websocket_manager.py +0 -269
  87. unicex/weex/user_websocket.py +0 -7
  88. unicex/weex/websocket_manager.py +0 -11
  89. unicex/xt/__init__.py +0 -15
  90. unicex/xt/adapter.py +0 -8
  91. unicex/xt/client.py +0 -8
  92. unicex/xt/uni_client.py +0 -151
  93. unicex/xt/uni_websocket_manager.py +0 -269
  94. unicex/xt/user_websocket.py +0 -7
  95. unicex/xt/websocket_manager.py +0 -11
  96. unicex-0.5.0.dist-info/METADATA +0 -170
  97. unicex-0.5.0.dist-info/RECORD +0 -123
  98. {unicex-0.5.0.dist-info → unicex-0.8.0.dist-info}/WHEEL +0 -0
  99. {unicex-0.5.0.dist-info → unicex-0.8.0.dist-info}/licenses/LICENSE +0 -0
  100. {unicex-0.5.0.dist-info → unicex-0.8.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`): Клиент Xt или унифицированный клиент. Нужен для подключения к приватным топикам.
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
- """Пользовательский вебсокет Xt."""
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
- """Менеджер асинхронных вебсокетов для Xt."""
@@ -1,170 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: unicex
3
- Version: 0.5.0
4
- Summary: Unified Crypto Exchange API
5
- Author-email: LoveBloodAndDiamonds <ayazshakirzyanov27@gmail.com>
6
- License: BSD 3-Clause License
7
-
8
- Copyright (c) 2025, LoveBloodAndDiamonds
9
-
10
- Redistribution and use in source and binary forms, with or without
11
- modification, are permitted provided that the following conditions are met:
12
-
13
- 1. Redistributions of source code must retain the above copyright notice, this
14
- list of conditions and the following disclaimer.
15
-
16
- 2. Redistributions in binary form must reproduce the above copyright notice,
17
- this list of conditions and the following disclaimer in the documentation
18
- and/or other materials provided with the distribution.
19
-
20
- 3. Neither the name of the copyright holder nor the names of its
21
- contributors may be used to endorse or promote products derived from
22
- this software without specific prior written permission.
23
-
24
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
-
35
- Project-URL: Github, https://github.com/LoveBloodAndDiamonds/uni-cex-api
36
- Project-URL: Author, https://t.me/LoveBloodAndDiamonds
37
- Project-URL: Readthedocs, https://unicex.readthedocs.io/ru/latest/
38
- Requires-Python: >=3.12
39
- Description-Content-Type: text/markdown
40
- License-File: LICENSE
41
- Requires-Dist: aiohttp>=3.12.15
42
- Requires-Dist: loguru>=0.7.3
43
- Requires-Dist: orjson>=3.11.3
44
- Requires-Dist: websockets>=15.0.1
45
- Dynamic: license-file
46
-
47
- # Unified Crypto Exchange API
48
-
49
- `unicex` — асинхронная библиотека для работы с криптовалютными биржами, реализующая унифицированный интерфейс поверх «сырых» REST и WebSocket API разных бирж.
50
-
51
- ## ✅ Статус реализации
52
-
53
- ## ✅ Статус реализации
54
-
55
- | Exchange | Client | Client Auth | Client Generic | WS Manager | User WS |
56
- |-------------|--------|-------------|----------------|------------|---------|
57
- | Binance | ✅ | ✅ | ✅ | ✅ | ✅ |
58
- | Bitget | ✅ | ✅ | ✅ | ✅ | |
59
- | Bitrue | | ✅ | ✅ | | |
60
- | Bitunix | | | | | |
61
- | Btse | | ✅ | ✅ | | |
62
- | Bybit | ✅ | ✅ | ✅ | | |
63
- | Gateio | ✅ | ✅ | ✅ | | |
64
- | Hyperliquid | | | | | |
65
- | Kcex | | | | | |
66
- | Kraken | | ✅ | ✅ | | |
67
- | Kucoin | | ✅ | ✅ | | |
68
- | Mexc | ✅ | ✅ | ✅ | | |
69
- | Okx | | ✅ | ✅ | | |
70
- | Weex | | | | | |
71
- | Xt | | | | | |
72
-
73
- ---
74
-
75
- ### 📖 Описание колонок
76
-
77
- - **Client** – Обертки над HTTP методами следующих разделов: market, order, position, account.
78
- - **Client Auth** – Поддержка авторизации и приватных эндпоинтов.
79
- - **Client Generic** – Универсальная функция для вызова не обернутых методов API.
80
- - **WS Manager** – Обертки над вебсокетами биржи.
81
- - **User WS** – Поддержка пользовательских вебсокетов.
82
-
83
- ---
84
-
85
- ## ✅ Статус реализации (Унифицированный интерфейс)
86
-
87
- | Exchange | UniClient | UniWebsocketManager |
88
- |-------------|-----------|----------------------|
89
- | Binance | ✅ | ✅ |
90
- | Bitget | ✅ | |
91
- | Bitrue | | |
92
- | Bitunix | | |
93
- | Btse | | |
94
- | Bybit | ✅ | |
95
- | Gateio | ✅ | |
96
- | Hyperliquid | | |
97
- | Kcex | | |
98
- | Kraken | | |
99
- | Kucoin | | |
100
- | Mexc | ✅ | |
101
- | Okx | ✅ | |
102
- | Weex | | |
103
- | Xt | | |
104
-
105
- ---
106
-
107
- ## 🚀 Быстрый старт
108
-
109
- - Установка: `pip install unicex` или из исходников: `pip install -e .`
110
- - Библиотека полностью асинхронная. Примеры импорта:
111
- - Сырые клиенты: `from unicex.binance import Client`
112
- - Унифицированные клиенты: `from unicex.binance import UniClient`
113
- - Вебсокет менеджеры: `from unicex.binance import WebsocketManager, UniWebsocketManager`
114
-
115
- Пример: получить последние цены через унифицированный клиент Binance
116
-
117
- ```
118
- import asyncio
119
- from unicex.binance import UniClient
120
-
121
-
122
- async def main():
123
- client = await UniClient.create()
124
- prices = await client.last_price()
125
- print(prices["BTCUSDT"])
126
- await client.close()
127
-
128
-
129
- if __name__ == "__main__":
130
- asyncio.run(main())
131
- ```
132
-
133
- Пример: подписаться на трейды через унифицированный WS‑менеджер Bitget
134
-
135
- ```
136
- import asyncio
137
- from unicex.bitget import UniWebsocketManager
138
- from unicex import TradeDict
139
-
140
-
141
- async def on_trade(msg: TradeDict):
142
- print(msg)
143
-
144
-
145
- async def main():
146
- uwm = UniWebsocketManager()
147
- socket = uwm.trades(callback=on_trade, symbol="BTCUSDT")
148
- await socket.start()
149
-
150
-
151
- if __name__ == "__main__":
152
- asyncio.run(main())
153
- ```
154
-
155
- ---
156
-
157
- ## 🧑‍💻 Блок для разработчика
158
-
159
- ### 📋 Todo
160
- - Написать 1–2 примера
161
- - На фьючерсах OKX ticker24hr и klines возвращают объем в контрактах
162
- - Как реализовать типы в сырых клиентах? str | int | float?
163
- - в klines и futures_klines нужно дать возможность передавать строки, чтобы они не маппились автоматически. Либо расширить список таймфреймов
164
- + В mexc клиенте неправильные ссылки на документацию на фьючах
165
- + Доделать BitgetClient и проверить типы
166
- + Пересмотреть вопрос: должен ли быть адаптер интерфейсом?
167
- + Добавить overload к методам с `None, None`
168
- + Определить порядок полей, возвращаемых адаптером
169
- + Не делать .get в адаптере
170
- + нужно ли как-то изменять тикер в юни клиенте и ападетере?
@@ -1,123 +0,0 @@
1
- unicex/__init__.py,sha256=YcTqQ92p6EZXAn3dQqpORHVqzHVZf5u5oxQ3TLv4yzA,6645
2
- unicex/enums.py,sha256=fEdvOdr35E0m8AFInZxaM1fh5CMsEORwNO6fM3svjuU,9124
3
- unicex/exceptions.py,sha256=r-xZzX78VuxVnI5pe99AM8FIiGcdIUDcF5CaTkQ4NE0,2213
4
- unicex/extra.py,sha256=fy_SS5vXtMIu9i_NdiD-XFHOnT0QC6PApHUGj6SrmPU,10376
5
- unicex/mapper.py,sha256=hqgDVibYIIyUlVjq0A3R3sHiwDjC4k72ats3ca_JMB4,4928
6
- unicex/types.py,sha256=QW0AEak5rPmiFwmRtAfO19Yaj2pkGfmLHzS81V2hMEI,2871
7
- unicex/utils.py,sha256=dwU1VYuP2xcMpzaETtNQerL1V8Y_JH8H8EsLJ__-M4s,8050
8
- unicex/_abc/__init__.py,sha256=BKlrEujEZi_O-5ue7VHdTefAVxTLKBT7cZCdPKFy_7A,152
9
- unicex/_abc/uni_client.py,sha256=mi8VeQHTITAmjo4-FIDK_YT8Tv21_ZAyRYghJEgnt4E,13794
10
- unicex/_abc/uni_websocket_manager.py,sha256=yYKypPkIe3rKfWBuTsS8rkwIPljpd1588CYDkeTOYqE,9905
11
- unicex/_base/__init__.py,sha256=ckqI6LVP3DHuIiLXKx67rJyG0SEEsPnBr8uk1Dw9cwg,114
12
- unicex/_base/client.py,sha256=Na6yIOCvuQgLzLeO5fOtsxZ0M71UMcYXIJA4ADFqYyU,8894
13
- unicex/_base/websocket.py,sha256=LEOmO5U4YmF3NjbCRdeiawGBkP_TCTjASU49civMT_c,10186
14
- unicex/binance/__init__.py,sha256=MY6RxpI8vRKYPXsWTM8ttodSfUFqyZXYlBtphSyegDM,471
15
- unicex/binance/adapter.py,sha256=pjkeWl-IGG4k7CkFK8YYrH7HjXZvuBxRS2rEUPBzrl0,8806
16
- unicex/binance/client.py,sha256=DuHpcQn3XfRBF5-8uFlY6gXr4QWPfeOte9vqQsCC7lI,61016
17
- unicex/binance/uni_client.py,sha256=W4yxiU0kkJKPJjimhv4KAWreuEBwt7GgrWXefcw5BEA,8365
18
- unicex/binance/uni_websocket_manager.py,sha256=FywEuUt3CiDcAQPo3ItdW2pPgbLDvVpVYFM2D_QscPU,8679
19
- unicex/binance/user_websocket.py,sha256=HJ_3VZV0Bil0vfsdLrZElXm-gUqd8mGzXzfQ0_sHjFc,7861
20
- unicex/binance/websocket_manager.py,sha256=Idrq0Qzi14QgpIG5d77S-r1h_BvRXphcxY2BT2IOQXA,45511
21
- unicex/bitget/__init__.py,sha256=-pYbfzVOMhZyqi8rv7ZRmaCX41V5xiNQfQ8K1rfkBZw,514
22
- unicex/bitget/adapter.py,sha256=och_imvUSgE8jr8waGE8ML304r1_3ad-5WxUn7f5muI,7741
23
- unicex/bitget/client.py,sha256=PNjozV_qRXU2_OZVWhfHao0jJcaBO4X66ysvMdShQ-s,89687
24
- unicex/bitget/uni_client.py,sha256=MrXAmthTDTEQZ1ZY3LuqkCKL1bw_mKHMdiV4XiRFO-M,8641
25
- unicex/bitget/uni_websocket_manager.py,sha256=hpahf-ylG3Bj5Awlt9NhnjbF_oNv1dFsKX-hJIEbzzg,9718
26
- unicex/bitget/user_websocket.py,sha256=tlkv7Rmsw_FSfCJnEMOK_9jRsXRk2Ah_slqG8C-uhuo,129
27
- unicex/bitget/websocket_manager.py,sha256=RmJmEWwdzi05cfsmwOI2jybjIHBgt6qyYipJZ5BUw94,9916
28
- unicex/bitrue/__init__.py,sha256=vOwFCzJkUSkMTSnn65V67MBwfL8LKztdKJcSFTwzn5E,470
29
- unicex/bitrue/adapter.py,sha256=UnCMHe91V5KEIEfIriAYXn_o-KzQnkEJiuQOvqJufRE,233
30
- unicex/bitrue/client.py,sha256=Y412EfiGDHV6WqHsa0JPQtk7RqNg_utTs4uTKRZOqDY,4409
31
- unicex/bitrue/uni_client.py,sha256=5Nm_TZFGKA3lHVYnn-ug4zfGFQ0LADQcGsAwzzPcFCs,6365
32
- unicex/bitrue/uni_websocket_manager.py,sha256=7aoGW1_omvVNpq_NLi5bSXqlb9ELH5o3PzUXciMIFtc,9329
33
- unicex/bitrue/user_websocket.py,sha256=B-BlNSjFcilzcS3HuHXqCX5hYhtvC9KSYnhXl2KohhI,129
34
- unicex/bitrue/websocket_manager.py,sha256=b2IvsWBYAUB7j0s4Qsvn8WTlObuaOeNduP2Z_uEFwYE,270
35
- unicex/bitunix/__init__.py,sha256=yaJ9kswScN3lhkAF1FHRshIWTX8GD9qeJcPqTXgcC7U,471
36
- unicex/bitunix/adapter.py,sha256=qoDA9LC3oeVxwoJqerK9C_VQRfXhuG3Ttf6Wv3slNTI,234
37
- unicex/bitunix/client.py,sha256=Qho0gMsw9IUNX_tcpvmdOtbUUyBdINts_dj2XCUm29Q,146
38
- unicex/bitunix/uni_client.py,sha256=3HIKUDp-iQT0k2nQ5AcF0uwYNspERz7il9z5yM48hYM,6368
39
- unicex/bitunix/uni_websocket_manager.py,sha256=e02BajZeM5JoujvdjGs8tKza2q2LxYtSJ3k0CsLfSE8,9330
40
- unicex/bitunix/user_websocket.py,sha256=MmyCTJBq6VZmlYXfW-9HgQUQUeisG0X5EiJefve-_Ac,130
41
- unicex/bitunix/websocket_manager.py,sha256=KZdxI308bWhkR3g8ZVAG1quOGUE4ElbcUmkpLRSxP_w,271
42
- unicex/btse/__init__.py,sha256=DNpduZ1BCBGcZ3UmXl1J6yj4AFSxpVmBKtmt7NFBPSQ,468
43
- unicex/btse/adapter.py,sha256=JXVJ4zSooAC4ItqnFEFSomdMdKt3nEVQFZrxSXZpDJw,231
44
- unicex/btse/client.py,sha256=wQ8uerZxAUJLSV0UppUmFrOPnZV8dfF2IMJAhrQ3g3w,3946
45
- unicex/btse/uni_client.py,sha256=z64fNqRYtcqaWVl8ROpoFTQ9orCKKjzEwAsx9-waPsY,6359
46
- unicex/btse/uni_websocket_manager.py,sha256=Mu5bDL_uGIjQazTuHwE8Bxrj_6xcLJ8d_qN4lF2zfbE,9327
47
- unicex/btse/user_websocket.py,sha256=NMpVE2Knxye7rKY_QFI0NOPvA9JlfWocwp13xgg0S0c,127
48
- unicex/btse/websocket_manager.py,sha256=IC7Qh6hw1_ZiTvHh-biufP1Hv41G8XH-6W7SL-eGX8w,268
49
- unicex/bybit/__init__.py,sha256=PynVYWTqFdN_n03X_vkmTTnglAjWN36upRnL3zi_CJA,469
50
- unicex/bybit/adapter.py,sha256=a5LdeiNT0kZ4eXcn4Eh6PxNVaTNeQP6uzsxLYK8BTPY,5206
51
- unicex/bybit/client.py,sha256=FRISjOcGqR4AM02TF16fUUY54o4GUvaarWKZdy61MYQ,60971
52
- unicex/bybit/uni_client.py,sha256=YXoz5lPfGDQnZNz48rqJ0hXnRMrl1wgvmJgsqy0_JAg,8360
53
- unicex/bybit/uni_websocket_manager.py,sha256=JQgZ_rl5qe30BOOMtzUYY2ZaAeQ-gYZj3HixQ1DiSpg,9328
54
- unicex/bybit/user_websocket.py,sha256=IGGEnwyWs5jOppgK_R7SisBDvsiF1_piTswBrdQOgDg,128
55
- unicex/bybit/websocket_manager.py,sha256=7edh7C0mMgYBRQx-_IcL21rdy-AvNfUyaZ9dL30syfI,269
56
- unicex/gateio/__init__.py,sha256=0oqviJif7YQ3ljzfo4kwsAX4SL4TSLT0DCuJJZz7Ow8,470
57
- unicex/gateio/adapter.py,sha256=tIxSDAJGLBCX2n7CK-2l-VWqHbFXPfCRxVT9m3_pidc,6856
58
- unicex/gateio/client.py,sha256=slwVygRBZT5dW8te6ysLJAbr56nVURwpB8eLc2xVoaA,53717
59
- unicex/gateio/uni_client.py,sha256=btfI-dozBRsbjEMvSlUX8zp6SOvIS1xDxk_5hNqRfz4,9648
60
- unicex/gateio/uni_websocket_manager.py,sha256=3KAHhgJNISTOZRBTwbZPigc8iq_IHS19NwnuAsnfeXg,9329
61
- unicex/gateio/user_websocket.py,sha256=4qZX9N2RjlJ-e25Eszz12OeCM17j5DdXVimBVaLj53w,129
62
- unicex/gateio/websocket_manager.py,sha256=l2gGGHrJTNAth15pURjDkzn36gplqlhsfslPPvdypIw,270
63
- unicex/hyperliquid/__init__.py,sha256=9GblbPQ94Hsm7TkqymqHd7MI2Ie7Wxx5amy88J2daC8,475
64
- unicex/hyperliquid/adapter.py,sha256=ALlpU2tgwIgCkpr8EiyNvNLd5YNxjJDhavi3CjlYEwI,5215
65
- unicex/hyperliquid/client.py,sha256=lJ1Ghql_r1dE0tsS7F6lA9aCxYbFi7LDlhQ9Dz7ma8M,9813
66
- unicex/hyperliquid/uni_client.py,sha256=Is3VuG6UL0r4V3Z8nHgGQHVNvguQNaPO1AOzpYJ9dvo,7513
67
- unicex/hyperliquid/uni_websocket_manager.py,sha256=AzR_8Aq98NkCA1oc2IiH02ysMOYLaisEmcuuaafeaJw,9334
68
- unicex/hyperliquid/user_websocket.py,sha256=BKD9ap2bx5DwpkkwwecfOTVedrZBR9eMAITgCBgg02w,134
69
- unicex/hyperliquid/websocket_manager.py,sha256=ijs5bDX6pdQmCKvCsRowhxVf6Su_PuW58NTblwxeeXw,275
70
- unicex/kcex/__init__.py,sha256=BCrNa_FX6V6GEszfQy0pkapk4RMJ218hm7WR6xCWnno,468
71
- unicex/kcex/adapter.py,sha256=M2PBOxoeJdg2N7mYSdQiHLkGhwQ8BGG8JH8MWcDF4pE,231
72
- unicex/kcex/client.py,sha256=HRtpY0vAPaEQZ5CoWQ-qufxF0Cg9kQFfbztkEFuafgY,143
73
- unicex/kcex/uni_client.py,sha256=c_DCh0-Wcfgyoy1ppbz1VGUfuaM8hcYPIiIt0k3SEvY,6359
74
- unicex/kcex/uni_websocket_manager.py,sha256=GuPLPiPEsloMn_DVllpxUVXBvxYkAkDI1KZ0HDdV0vU,9327
75
- unicex/kcex/user_websocket.py,sha256=M1jgIXVunfk6tjcb1oheN6L2JmPb-8XQ_wVepTMVmi8,127
76
- unicex/kcex/websocket_manager.py,sha256=r_aAfHDh5ucVJkmIf67cOT90PXeDaxY59YXLe5o-Ft4,268
77
- unicex/kraken/__init__.py,sha256=_kuYyEBBzMiYPrXD4m8CMJEr8D2Cokhfawm2wtJqIOg,470
78
- unicex/kraken/adapter.py,sha256=wnKDWybB9IvOWFB1lKM_nNsPZ9XT-CWKrP_fLJkS8Sw,233
79
- unicex/kraken/client.py,sha256=uqhhzHq69NzY559G3fvUIcM_WCUiJRNPvQEAVcK2P1E,5769
80
- unicex/kraken/uni_client.py,sha256=WRaeA1s1VsbAokegKS1QzIC82ny6B1xxnZEJ48p3KgI,6365
81
- unicex/kraken/uni_websocket_manager.py,sha256=PM4dtl2nu6GxBVaxAuK5TTtTJGhkOUyXCxYsC6N_OJk,9329
82
- unicex/kraken/user_websocket.py,sha256=Ati1e1MDAZtVuefYsrCoxzKo_AVm337Gay9_bw_Ybkg,129
83
- unicex/kraken/websocket_manager.py,sha256=5lzx9ESHdCKpjPQt64jHiaP5V-mKxjGvYmRf2qssbu0,270
84
- unicex/kucoin/__init__.py,sha256=nojztFGzcGSLj2pNq9i9yBLshz48d-kZRtyXG34KPpE,470
85
- unicex/kucoin/adapter.py,sha256=1HSbEIuUKNBrNlXWwwsfI8cp_EKFevaVOr58PNKZ8Qc,233
86
- unicex/kucoin/client.py,sha256=m8KcgfRRyWkbTFsyOa6x_UaWcvxb2TnqP5L8mfuvOoQ,4158
87
- unicex/kucoin/uni_client.py,sha256=8Ol302AJkWiKJN_u1ITkNx-dXf25KdabSIIHSH4CWME,6365
88
- unicex/kucoin/uni_websocket_manager.py,sha256=B9LZxp7KgitSq8k0Gk2lFcZr51mwStRWFfksz-5DL14,9329
89
- unicex/kucoin/user_websocket.py,sha256=Tx0yuGpf2HrPbcOHHZioYjVp6LBfagOKF-zzD3UM0Ok,129
90
- unicex/kucoin/websocket_manager.py,sha256=GNNpzxONgTuTByrsGk1MNMlj5-zx5vs_WBTgssYSYDQ,270
91
- unicex/mexc/__init__.py,sha256=zBnlgmwq2Y4gBDAh3oCcweAry800E4icvwUo58eqV90,468
92
- unicex/mexc/adapter.py,sha256=vLqRlY66FE7h_eHDm4K9by84tvjx9DyC-nqTUZozZH4,9197
93
- unicex/mexc/client.py,sha256=RZffkRARyViEPv_LeUEc7Tni4ZGJkvoyHrG25a1UANQ,30936
94
- unicex/mexc/uni_client.py,sha256=d9LZE7TdJgqLrgTyJtyRy7OqqZv6fKOvk-SphG59js8,9191
95
- unicex/mexc/uni_websocket_manager.py,sha256=MAKyGyit8Ve4doM7y8cTQbVVbpzlJx2HcHaSkLG4Jp4,9327
96
- unicex/mexc/user_websocket.py,sha256=l77-e6i0B2btd7a5IcCytbgswnV171NqOhunTcbaq48,127
97
- unicex/mexc/websocket_manager.py,sha256=6bl0LHPS7bDOeUkrRKVEpFBfrfHAUIG_SA_2P2beD3o,268
98
- unicex/okx/__init__.py,sha256=CkBZREBpQUqeeZqk8Hw6x_4QUs9FXUR_x-2Lm6pr-6M,467
99
- unicex/okx/adapter.py,sha256=SY5uVjl-zn2jWiHCX-UFyf7t741qcbuJ_kunB94NjWc,4560
100
- unicex/okx/client.py,sha256=KjjoPhpneIeBvOq7JwLFZwLAhaWYnFKMaQO5W2uD7Bc,11264
101
- unicex/okx/uni_client.py,sha256=4vBIldnJRWYP6z1su1lRZh5wyUp5dxFUfVvUaDXFTdA,8636
102
- unicex/okx/uni_websocket_manager.py,sha256=b4f_QjA64DJmENQdIGb5IOVc7kvit7KMCdWeCmRbxGY,9326
103
- unicex/okx/user_websocket.py,sha256=8c9kpm-xVa729pW93OKUGLHaE9MY0uzEpjIgNIFRF80,126
104
- unicex/okx/websocket_manager.py,sha256=Bw25A592zTuIJQu8yR55eG7V37RwntA2LWLeMY8Popo,267
105
- unicex/weex/__init__.py,sha256=bu8p1VeZscATCww_MJVMznrGqKwFWuqvCplLLzTRvag,468
106
- unicex/weex/adapter.py,sha256=IaOuknLUgGcZ4RBvj8LeWLHlAV2uqD4I426ydCnNTc0,231
107
- unicex/weex/client.py,sha256=kyFpAlAgep2yZZ6qeBPoNbta4Sw1-nWs8A-sSLP5gpE,143
108
- unicex/weex/uni_client.py,sha256=17TdQ1Qp2j9NQuSCIXQLn2GLq0DpMEWvbXHIFtio3xg,6359
109
- unicex/weex/uni_websocket_manager.py,sha256=ZaeI00coJQc-D7LOn9o1Xd5VUc8kDnXrdvNmfjcSBHo,9327
110
- unicex/weex/user_websocket.py,sha256=JurdwyRLKHrAIuaGapp8HY35rNg4z8xGX6lAKGnP21k,127
111
- unicex/weex/websocket_manager.py,sha256=MpRwEgzp0TqamPWsqo1HNau4eDJ7DTsBm1lit8l8U2E,268
112
- unicex/xt/__init__.py,sha256=Vwzcd7-ttTIS9av6V3MhjTx7aWN-rY7VOBP4Lj6fq98,466
113
- unicex/xt/adapter.py,sha256=xUCF-gYJ8M-088l0_jMQpVcKL39MdS9CcfuWcWXAs4g,229
114
- unicex/xt/client.py,sha256=hqh-Z7IlWxBjqQVYUpSZDVhTaBufclbNxS-iAUVODSg,141
115
- unicex/xt/uni_client.py,sha256=Boi13Lsbik3p5WOzb4_gspZMrD8pM5Y8W8Gjtk61TXI,6353
116
- unicex/xt/uni_websocket_manager.py,sha256=_mwIZuY9AEtRvYlUy9yxBHdNyDYUDKhaN0P3SZuLRFA,9325
117
- unicex/xt/user_websocket.py,sha256=7OX1O5dIw9X3iXDBP9eT3xOyd1-xbjrQytKqZUSxdTc,125
118
- unicex/xt/websocket_manager.py,sha256=iQZIucT5PbPt27yeukcsR2ufMQGf9gvMJG9aAliG5Ws,266
119
- unicex-0.5.0.dist-info/licenses/LICENSE,sha256=lNNK4Vqak9cXm6qVJLhbqS7iR_BMj6k7fd7XQ6l1k54,1507
120
- unicex-0.5.0.dist-info/METADATA,sha256=WgBjx9bF-ZhFi-GBzfBq6BaVNLzulT_pUFAEIpfsTqc,8149
121
- unicex-0.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
122
- unicex-0.5.0.dist-info/top_level.txt,sha256=_7rar-0OENIg4KRy6cgjWiebFYAJhjKEcMggAocGWG4,7
123
- unicex-0.5.0.dist-info/RECORD,,
File without changes