unicex 0.4.0__tar.gz → 0.5.0__tar.gz

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 (128) hide show
  1. {unicex-0.4.0/unicex.egg-info → unicex-0.5.0}/PKG-INFO +1 -1
  2. {unicex-0.4.0 → unicex-0.5.0}/pyproject.toml +1 -1
  3. {unicex-0.4.0 → unicex-0.5.0}/unicex/extra.py +49 -0
  4. {unicex-0.4.0 → unicex-0.5.0/unicex.egg-info}/PKG-INFO +1 -1
  5. {unicex-0.4.0 → unicex-0.5.0}/LICENSE +0 -0
  6. {unicex-0.4.0 → unicex-0.5.0}/README.md +0 -0
  7. {unicex-0.4.0 → unicex-0.5.0}/setup.cfg +0 -0
  8. {unicex-0.4.0 → unicex-0.5.0}/unicex/__init__.py +0 -0
  9. {unicex-0.4.0 → unicex-0.5.0}/unicex/_abc/__init__.py +0 -0
  10. {unicex-0.4.0 → unicex-0.5.0}/unicex/_abc/uni_client.py +0 -0
  11. {unicex-0.4.0 → unicex-0.5.0}/unicex/_abc/uni_websocket_manager.py +0 -0
  12. {unicex-0.4.0 → unicex-0.5.0}/unicex/_base/__init__.py +0 -0
  13. {unicex-0.4.0 → unicex-0.5.0}/unicex/_base/client.py +0 -0
  14. {unicex-0.4.0 → unicex-0.5.0}/unicex/_base/websocket.py +0 -0
  15. {unicex-0.4.0 → unicex-0.5.0}/unicex/binance/__init__.py +0 -0
  16. {unicex-0.4.0 → unicex-0.5.0}/unicex/binance/adapter.py +0 -0
  17. {unicex-0.4.0 → unicex-0.5.0}/unicex/binance/client.py +0 -0
  18. {unicex-0.4.0 → unicex-0.5.0}/unicex/binance/uni_client.py +0 -0
  19. {unicex-0.4.0 → unicex-0.5.0}/unicex/binance/uni_websocket_manager.py +0 -0
  20. {unicex-0.4.0 → unicex-0.5.0}/unicex/binance/user_websocket.py +0 -0
  21. {unicex-0.4.0 → unicex-0.5.0}/unicex/binance/websocket_manager.py +0 -0
  22. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitget/__init__.py +0 -0
  23. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitget/adapter.py +0 -0
  24. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitget/client.py +0 -0
  25. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitget/uni_client.py +0 -0
  26. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitget/uni_websocket_manager.py +0 -0
  27. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitget/user_websocket.py +0 -0
  28. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitget/websocket_manager.py +0 -0
  29. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitrue/__init__.py +0 -0
  30. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitrue/adapter.py +0 -0
  31. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitrue/client.py +0 -0
  32. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitrue/uni_client.py +0 -0
  33. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitrue/uni_websocket_manager.py +0 -0
  34. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitrue/user_websocket.py +0 -0
  35. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitrue/websocket_manager.py +0 -0
  36. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitunix/__init__.py +0 -0
  37. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitunix/adapter.py +0 -0
  38. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitunix/client.py +0 -0
  39. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitunix/uni_client.py +0 -0
  40. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitunix/uni_websocket_manager.py +0 -0
  41. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitunix/user_websocket.py +0 -0
  42. {unicex-0.4.0 → unicex-0.5.0}/unicex/bitunix/websocket_manager.py +0 -0
  43. {unicex-0.4.0 → unicex-0.5.0}/unicex/btse/__init__.py +0 -0
  44. {unicex-0.4.0 → unicex-0.5.0}/unicex/btse/adapter.py +0 -0
  45. {unicex-0.4.0 → unicex-0.5.0}/unicex/btse/client.py +0 -0
  46. {unicex-0.4.0 → unicex-0.5.0}/unicex/btse/uni_client.py +0 -0
  47. {unicex-0.4.0 → unicex-0.5.0}/unicex/btse/uni_websocket_manager.py +0 -0
  48. {unicex-0.4.0 → unicex-0.5.0}/unicex/btse/user_websocket.py +0 -0
  49. {unicex-0.4.0 → unicex-0.5.0}/unicex/btse/websocket_manager.py +0 -0
  50. {unicex-0.4.0 → unicex-0.5.0}/unicex/bybit/__init__.py +0 -0
  51. {unicex-0.4.0 → unicex-0.5.0}/unicex/bybit/adapter.py +0 -0
  52. {unicex-0.4.0 → unicex-0.5.0}/unicex/bybit/client.py +0 -0
  53. {unicex-0.4.0 → unicex-0.5.0}/unicex/bybit/uni_client.py +0 -0
  54. {unicex-0.4.0 → unicex-0.5.0}/unicex/bybit/uni_websocket_manager.py +0 -0
  55. {unicex-0.4.0 → unicex-0.5.0}/unicex/bybit/user_websocket.py +0 -0
  56. {unicex-0.4.0 → unicex-0.5.0}/unicex/bybit/websocket_manager.py +0 -0
  57. {unicex-0.4.0 → unicex-0.5.0}/unicex/enums.py +0 -0
  58. {unicex-0.4.0 → unicex-0.5.0}/unicex/exceptions.py +0 -0
  59. {unicex-0.4.0 → unicex-0.5.0}/unicex/gateio/__init__.py +0 -0
  60. {unicex-0.4.0 → unicex-0.5.0}/unicex/gateio/adapter.py +0 -0
  61. {unicex-0.4.0 → unicex-0.5.0}/unicex/gateio/client.py +0 -0
  62. {unicex-0.4.0 → unicex-0.5.0}/unicex/gateio/uni_client.py +0 -0
  63. {unicex-0.4.0 → unicex-0.5.0}/unicex/gateio/uni_websocket_manager.py +0 -0
  64. {unicex-0.4.0 → unicex-0.5.0}/unicex/gateio/user_websocket.py +0 -0
  65. {unicex-0.4.0 → unicex-0.5.0}/unicex/gateio/websocket_manager.py +0 -0
  66. {unicex-0.4.0 → unicex-0.5.0}/unicex/hyperliquid/__init__.py +0 -0
  67. {unicex-0.4.0 → unicex-0.5.0}/unicex/hyperliquid/adapter.py +0 -0
  68. {unicex-0.4.0 → unicex-0.5.0}/unicex/hyperliquid/client.py +0 -0
  69. {unicex-0.4.0 → unicex-0.5.0}/unicex/hyperliquid/uni_client.py +0 -0
  70. {unicex-0.4.0 → unicex-0.5.0}/unicex/hyperliquid/uni_websocket_manager.py +0 -0
  71. {unicex-0.4.0 → unicex-0.5.0}/unicex/hyperliquid/user_websocket.py +0 -0
  72. {unicex-0.4.0 → unicex-0.5.0}/unicex/hyperliquid/websocket_manager.py +0 -0
  73. {unicex-0.4.0 → unicex-0.5.0}/unicex/kcex/__init__.py +0 -0
  74. {unicex-0.4.0 → unicex-0.5.0}/unicex/kcex/adapter.py +0 -0
  75. {unicex-0.4.0 → unicex-0.5.0}/unicex/kcex/client.py +0 -0
  76. {unicex-0.4.0 → unicex-0.5.0}/unicex/kcex/uni_client.py +0 -0
  77. {unicex-0.4.0 → unicex-0.5.0}/unicex/kcex/uni_websocket_manager.py +0 -0
  78. {unicex-0.4.0 → unicex-0.5.0}/unicex/kcex/user_websocket.py +0 -0
  79. {unicex-0.4.0 → unicex-0.5.0}/unicex/kcex/websocket_manager.py +0 -0
  80. {unicex-0.4.0 → unicex-0.5.0}/unicex/kraken/__init__.py +0 -0
  81. {unicex-0.4.0 → unicex-0.5.0}/unicex/kraken/adapter.py +0 -0
  82. {unicex-0.4.0 → unicex-0.5.0}/unicex/kraken/client.py +0 -0
  83. {unicex-0.4.0 → unicex-0.5.0}/unicex/kraken/uni_client.py +0 -0
  84. {unicex-0.4.0 → unicex-0.5.0}/unicex/kraken/uni_websocket_manager.py +0 -0
  85. {unicex-0.4.0 → unicex-0.5.0}/unicex/kraken/user_websocket.py +0 -0
  86. {unicex-0.4.0 → unicex-0.5.0}/unicex/kraken/websocket_manager.py +0 -0
  87. {unicex-0.4.0 → unicex-0.5.0}/unicex/kucoin/__init__.py +0 -0
  88. {unicex-0.4.0 → unicex-0.5.0}/unicex/kucoin/adapter.py +0 -0
  89. {unicex-0.4.0 → unicex-0.5.0}/unicex/kucoin/client.py +0 -0
  90. {unicex-0.4.0 → unicex-0.5.0}/unicex/kucoin/uni_client.py +0 -0
  91. {unicex-0.4.0 → unicex-0.5.0}/unicex/kucoin/uni_websocket_manager.py +0 -0
  92. {unicex-0.4.0 → unicex-0.5.0}/unicex/kucoin/user_websocket.py +0 -0
  93. {unicex-0.4.0 → unicex-0.5.0}/unicex/kucoin/websocket_manager.py +0 -0
  94. {unicex-0.4.0 → unicex-0.5.0}/unicex/mapper.py +0 -0
  95. {unicex-0.4.0 → unicex-0.5.0}/unicex/mexc/__init__.py +0 -0
  96. {unicex-0.4.0 → unicex-0.5.0}/unicex/mexc/adapter.py +0 -0
  97. {unicex-0.4.0 → unicex-0.5.0}/unicex/mexc/client.py +0 -0
  98. {unicex-0.4.0 → unicex-0.5.0}/unicex/mexc/uni_client.py +0 -0
  99. {unicex-0.4.0 → unicex-0.5.0}/unicex/mexc/uni_websocket_manager.py +0 -0
  100. {unicex-0.4.0 → unicex-0.5.0}/unicex/mexc/user_websocket.py +0 -0
  101. {unicex-0.4.0 → unicex-0.5.0}/unicex/mexc/websocket_manager.py +0 -0
  102. {unicex-0.4.0 → unicex-0.5.0}/unicex/okx/__init__.py +0 -0
  103. {unicex-0.4.0 → unicex-0.5.0}/unicex/okx/adapter.py +0 -0
  104. {unicex-0.4.0 → unicex-0.5.0}/unicex/okx/client.py +0 -0
  105. {unicex-0.4.0 → unicex-0.5.0}/unicex/okx/uni_client.py +0 -0
  106. {unicex-0.4.0 → unicex-0.5.0}/unicex/okx/uni_websocket_manager.py +0 -0
  107. {unicex-0.4.0 → unicex-0.5.0}/unicex/okx/user_websocket.py +0 -0
  108. {unicex-0.4.0 → unicex-0.5.0}/unicex/okx/websocket_manager.py +0 -0
  109. {unicex-0.4.0 → unicex-0.5.0}/unicex/types.py +0 -0
  110. {unicex-0.4.0 → unicex-0.5.0}/unicex/utils.py +0 -0
  111. {unicex-0.4.0 → unicex-0.5.0}/unicex/weex/__init__.py +0 -0
  112. {unicex-0.4.0 → unicex-0.5.0}/unicex/weex/adapter.py +0 -0
  113. {unicex-0.4.0 → unicex-0.5.0}/unicex/weex/client.py +0 -0
  114. {unicex-0.4.0 → unicex-0.5.0}/unicex/weex/uni_client.py +0 -0
  115. {unicex-0.4.0 → unicex-0.5.0}/unicex/weex/uni_websocket_manager.py +0 -0
  116. {unicex-0.4.0 → unicex-0.5.0}/unicex/weex/user_websocket.py +0 -0
  117. {unicex-0.4.0 → unicex-0.5.0}/unicex/weex/websocket_manager.py +0 -0
  118. {unicex-0.4.0 → unicex-0.5.0}/unicex/xt/__init__.py +0 -0
  119. {unicex-0.4.0 → unicex-0.5.0}/unicex/xt/adapter.py +0 -0
  120. {unicex-0.4.0 → unicex-0.5.0}/unicex/xt/client.py +0 -0
  121. {unicex-0.4.0 → unicex-0.5.0}/unicex/xt/uni_client.py +0 -0
  122. {unicex-0.4.0 → unicex-0.5.0}/unicex/xt/uni_websocket_manager.py +0 -0
  123. {unicex-0.4.0 → unicex-0.5.0}/unicex/xt/user_websocket.py +0 -0
  124. {unicex-0.4.0 → unicex-0.5.0}/unicex/xt/websocket_manager.py +0 -0
  125. {unicex-0.4.0 → unicex-0.5.0}/unicex.egg-info/SOURCES.txt +0 -0
  126. {unicex-0.4.0 → unicex-0.5.0}/unicex.egg-info/dependency_links.txt +0 -0
  127. {unicex-0.4.0 → unicex-0.5.0}/unicex.egg-info/requires.txt +0 -0
  128. {unicex-0.4.0 → unicex-0.5.0}/unicex.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unicex
3
- Version: 0.4.0
3
+ Version: 0.5.0
4
4
  Summary: Unified Crypto Exchange API
5
5
  Author-email: LoveBloodAndDiamonds <ayazshakirzyanov27@gmail.com>
6
6
  License: BSD 3-Clause License
@@ -4,7 +4,7 @@ name = "unicex"
4
4
  # • PATCH (x.y.Z) → увеличивается при багфиксе, который не ломает совместимость.
5
5
  # • MINOR (x.Y.z) → увеличивается при добавлении новой функциональности, но без ломающих изменений (backward-compatible).
6
6
  # • MAJOR (X.y.z) → увеличивается при изменениях, которые ломают обратную совместимость.
7
- version = "0.4.0"
7
+ version = "0.5.0"
8
8
 
9
9
  description = "Unified Crypto Exchange API "
10
10
  readme = "README.md"
@@ -7,9 +7,11 @@ __all__ = [
7
7
  "generate_ex_link",
8
8
  "generate_tv_link",
9
9
  "generate_cg_link",
10
+ "make_humanreadable",
10
11
  ]
11
12
 
12
13
  import time
14
+ from typing import Literal
13
15
 
14
16
  from .enums import Exchange, MarketType
15
17
  from .exceptions import NotSupported
@@ -205,3 +207,50 @@ def generate_cg_link(exchange: Exchange, market_type: MarketType, symbol: str) -
205
207
  return f"{base_url}/SPOT_{exchange.upper()}_{symbol.replace('USDT', '-USDT')}"
206
208
  # Для остальных бирж ссылки нет → возвращаем заглушку
207
209
  return base_url
210
+
211
+
212
+ def make_humanreadable(value: float, locale: Literal["ru", "en"] = "ru") -> str:
213
+ """Функция превращает большие числа в удобочитаемый вид.
214
+
215
+ Принимает:
216
+ value (float): число для преобразования
217
+ locale (Literal["ru", "en"]): язык для форматирования числа
218
+
219
+ Возвращает:
220
+ str: Человеческое представление числа
221
+ """
222
+ suffixes = {
223
+ "ru": {
224
+ 1_000: "тыс.",
225
+ 1_000_000: "млн.",
226
+ 1_000_000_000: "млрд.",
227
+ 1_000_000_000_000: "трлн.",
228
+ 1_000_000_000_000_000: "квдрлн.",
229
+ 1_000_000_000_000_000_000: "квнтлн.",
230
+ },
231
+ "en": {
232
+ 1_000: "K",
233
+ 1_000_000: "M",
234
+ 1_000_000_000: "B",
235
+ 1_000_000_000_000: "T",
236
+ 1_000_000_000_000_000: "Qa", # Quadrillion
237
+ 1_000_000_000_000_000_000: "Qi", # Quintillion
238
+ },
239
+ }
240
+
241
+ selected_suffixes = suffixes[locale]
242
+
243
+ for divisor in sorted(selected_suffixes.keys(), reverse=True):
244
+ if abs(value) >= divisor:
245
+ number = value / divisor
246
+ if locale == "ru":
247
+ return (
248
+ f"{number:,.2f}".replace(",", " ").replace(".", ",")
249
+ + f" {selected_suffixes[divisor]}"
250
+ )
251
+ return f"{number:,.2f} {selected_suffixes[divisor]}"
252
+
253
+ # Форматирование "малых" чисел
254
+ if locale == "ru":
255
+ return f"{value:,.2f}".replace(",", " ").replace(".", ",")
256
+ return f"{value:,.2f}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unicex
3
- Version: 0.4.0
3
+ Version: 0.5.0
4
4
  Summary: Unified Crypto Exchange API
5
5
  Author-email: LoveBloodAndDiamonds <ayazshakirzyanov27@gmail.com>
6
6
  License: BSD 3-Clause License
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes