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.
- unicex/__init__.py +56 -124
- unicex/_abc/__init__.py +2 -0
- unicex/_abc/exchange_info.py +176 -0
- unicex/_abc/uni_client.py +2 -2
- unicex/_base/client.py +2 -2
- unicex/binance/__init__.py +12 -0
- unicex/binance/adapter.py +2 -2
- unicex/binance/exchange_info.py +12 -0
- unicex/bitget/__init__.py +14 -4
- unicex/bitget/adapter.py +1 -1
- unicex/bitget/exchange_info.py +12 -0
- unicex/bitget/uni_websocket_manager.py +1 -1
- unicex/bybit/__init__.py +12 -0
- unicex/bybit/adapter.py +2 -2
- unicex/bybit/exchange_info.py +12 -0
- unicex/bybit/uni_client.py +2 -2
- unicex/enums.py +16 -5
- unicex/extra.py +84 -6
- unicex/gateio/__init__.py +12 -0
- unicex/gateio/adapter.py +4 -4
- unicex/gateio/exchange_info.py +12 -0
- unicex/hyperliquid/__init__.py +12 -0
- unicex/hyperliquid/adapter.py +151 -30
- unicex/hyperliquid/client.py +2208 -125
- unicex/hyperliquid/exchange_info.py +100 -0
- unicex/hyperliquid/uni_client.py +176 -22
- unicex/mapper.py +35 -33
- unicex/mexc/__init__.py +12 -0
- unicex/mexc/adapter.py +30 -13
- unicex/mexc/exchange_info.py +32 -0
- unicex/mexc/uni_client.py +6 -0
- unicex/okx/__init__.py +12 -0
- unicex/okx/adapter.py +25 -9
- unicex/okx/client.py +2599 -26
- unicex/okx/exchange_info.py +50 -0
- unicex/okx/uni_client.py +10 -10
- unicex/types.py +31 -0
- unicex-0.8.0.dist-info/METADATA +192 -0
- unicex-0.8.0.dist-info/RECORD +75 -0
- unicex/bitrue/__init__.py +0 -15
- unicex/bitrue/adapter.py +0 -8
- unicex/bitrue/client.py +0 -128
- unicex/bitrue/uni_client.py +0 -151
- unicex/bitrue/uni_websocket_manager.py +0 -269
- unicex/bitrue/user_websocket.py +0 -7
- unicex/bitrue/websocket_manager.py +0 -11
- unicex/bitunix/__init__.py +0 -15
- unicex/bitunix/adapter.py +0 -8
- unicex/bitunix/client.py +0 -8
- unicex/bitunix/uni_client.py +0 -151
- unicex/bitunix/uni_websocket_manager.py +0 -269
- unicex/bitunix/user_websocket.py +0 -7
- unicex/bitunix/websocket_manager.py +0 -11
- unicex/btse/__init__.py +0 -15
- unicex/btse/adapter.py +0 -8
- unicex/btse/client.py +0 -123
- unicex/btse/uni_client.py +0 -151
- unicex/btse/uni_websocket_manager.py +0 -269
- unicex/btse/user_websocket.py +0 -7
- unicex/btse/websocket_manager.py +0 -11
- unicex/kcex/__init__.py +0 -15
- unicex/kcex/adapter.py +0 -8
- unicex/kcex/client.py +0 -8
- unicex/kcex/uni_client.py +0 -151
- unicex/kcex/uni_websocket_manager.py +0 -269
- unicex/kcex/user_websocket.py +0 -7
- unicex/kcex/websocket_manager.py +0 -11
- unicex/kraken/__init__.py +0 -15
- unicex/kraken/adapter.py +0 -8
- unicex/kraken/client.py +0 -165
- unicex/kraken/uni_client.py +0 -151
- unicex/kraken/uni_websocket_manager.py +0 -269
- unicex/kraken/user_websocket.py +0 -7
- unicex/kraken/websocket_manager.py +0 -11
- unicex/kucoin/__init__.py +0 -15
- unicex/kucoin/adapter.py +0 -8
- unicex/kucoin/client.py +0 -120
- unicex/kucoin/uni_client.py +0 -151
- unicex/kucoin/uni_websocket_manager.py +0 -269
- unicex/kucoin/user_websocket.py +0 -7
- unicex/kucoin/websocket_manager.py +0 -11
- unicex/weex/__init__.py +0 -15
- unicex/weex/adapter.py +0 -8
- unicex/weex/client.py +0 -8
- unicex/weex/uni_client.py +0 -151
- unicex/weex/uni_websocket_manager.py +0 -269
- unicex/weex/user_websocket.py +0 -7
- unicex/weex/websocket_manager.py +0 -11
- unicex/xt/__init__.py +0 -15
- unicex/xt/adapter.py +0 -8
- unicex/xt/client.py +0 -8
- unicex/xt/uni_client.py +0 -151
- unicex/xt/uni_websocket_manager.py +0 -269
- unicex/xt/user_websocket.py +0 -7
- unicex/xt/websocket_manager.py +0 -11
- unicex-0.5.0.dist-info/METADATA +0 -170
- unicex-0.5.0.dist-info/RECORD +0 -123
- {unicex-0.5.0.dist-info → unicex-0.8.0.dist-info}/WHEEL +0 -0
- {unicex-0.5.0.dist-info → unicex-0.8.0.dist-info}/licenses/LICENSE +0 -0
- {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()
|
unicex/xt/user_websocket.py
DELETED
unicex/xt/websocket_manager.py
DELETED
unicex-0.5.0.dist-info/METADATA
DELETED
|
@@ -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
|
-
+ нужно ли как-то изменять тикер в юни клиенте и ападетере?
|
unicex-0.5.0.dist-info/RECORD
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|