trd-utils 0.0.26__tar.gz → 0.0.28__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.

Potentially problematic release.


This version of trd-utils might be problematic. Click here for more details.

Files changed (36) hide show
  1. {trd_utils-0.0.26 → trd_utils-0.0.28}/PKG-INFO +1 -1
  2. {trd_utils-0.0.26 → trd_utils-0.0.28}/pyproject.toml +1 -1
  3. trd_utils-0.0.28/trd_utils/__init__.py +3 -0
  4. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/exchange_base.py +56 -9
  5. trd_utils-0.0.26/trd_utils/__init__.py +0 -3
  6. {trd_utils-0.0.26 → trd_utils-0.0.28}/LICENSE +0 -0
  7. {trd_utils-0.0.26 → trd_utils-0.0.28}/README.md +0 -0
  8. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/cipher/__init__.py +0 -0
  9. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/common_utils/float_utils.py +0 -0
  10. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/common_utils/wallet_utils.py +0 -0
  11. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/date_utils/__init__.py +0 -0
  12. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/date_utils/datetime_helpers.py +0 -0
  13. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/README.md +0 -0
  14. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/__init__.py +0 -0
  15. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/base_types.py +0 -0
  16. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/blofin/__init__.py +0 -0
  17. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/blofin/blofin_client.py +0 -0
  18. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/blofin/blofin_types.py +0 -0
  19. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/bx_ultra/__init__.py +0 -0
  20. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/bx_ultra/bx_types.py +0 -0
  21. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/bx_ultra/bx_ultra_client.py +0 -0
  22. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/bx_ultra/bx_utils.py +0 -0
  23. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/hyperliquid/README.md +0 -0
  24. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/hyperliquid/__init__.py +0 -0
  25. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/hyperliquid/hyperliquid_client.py +0 -0
  26. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/hyperliquid/hyperliquid_types.py +0 -0
  27. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/okx/__init__.py +0 -0
  28. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/okx/okx_client.py +0 -0
  29. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/exchanges/okx/okx_types.py +0 -0
  30. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/html_utils/__init__.py +0 -0
  31. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/html_utils/html_formats.py +0 -0
  32. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/tradingview/__init__.py +0 -0
  33. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/tradingview/tradingview_client.py +0 -0
  34. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/tradingview/tradingview_types.py +0 -0
  35. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/types_helper/__init__.py +0 -0
  36. {trd_utils-0.0.26 → trd_utils-0.0.28}/trd_utils/types_helper/base_model.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: trd_utils
3
- Version: 0.0.26
3
+ Version: 0.0.28
4
4
  Summary: Common Basic Utils for Python3. By ALiwoto.
5
5
  Keywords: utils,trd_utils,basic-utils,common-utils
6
6
  Author: ALiwoto
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "trd_utils"
3
- version = "0.0.26"
3
+ version = "0.0.28"
4
4
  description = "Common Basic Utils for Python3. By ALiwoto."
5
5
  authors = ["ALiwoto <aminnimaj@gmail.com>"]
6
6
  packages = [
@@ -0,0 +1,3 @@
1
+
2
+ __version__ = "0.0.28"
3
+
@@ -82,13 +82,12 @@ class ExchangeBase(ABC):
82
82
  headers=headers,
83
83
  params=params,
84
84
  )
85
- if raw_data:
86
- return response.content
87
-
88
- if not model_type:
89
- return response.json()
90
-
91
- return model_type.deserialize(response.json(parse_float=parse_float))
85
+ return self._handle_response(
86
+ response=response,
87
+ model_type=model_type,
88
+ parse_float=parse_float,
89
+ raw_data=raw_data,
90
+ )
92
91
 
93
92
  async def invoke_post(
94
93
  self,
@@ -113,14 +112,62 @@ class ExchangeBase(ABC):
113
112
  params=params,
114
113
  content=content,
115
114
  )
115
+ return self._handle_response(
116
+ response=response,
117
+ model_type=model_type,
118
+ parse_float=parse_float,
119
+ raw_data=raw_data,
120
+ )
121
+
122
+ def _handle_response(
123
+ self,
124
+ response: httpx.Response,
125
+ model_type: Type[BaseModel] | None = None,
126
+ parse_float=Decimal,
127
+ raw_data: bool = False,
128
+ ) -> "BaseModel":
116
129
  if raw_data:
117
130
  return response.content
118
131
 
132
+ j_obj = self._resp_to_json(
133
+ response=response,
134
+ parse_float=parse_float,
135
+ )
119
136
  if not model_type:
120
- return response.json()
137
+ return j_obj
121
138
 
122
- return model_type.deserialize(response.json(parse_float=parse_float))
139
+ return model_type.deserialize(j_obj)
123
140
 
141
+ def _resp_to_json(
142
+ self,
143
+ response: httpx.Response,
144
+ parse_float=None,
145
+ ):
146
+ try:
147
+ return response.json(parse_float=parse_float)
148
+ except UnicodeDecodeError:
149
+ # try to decompress manually
150
+ import gzip
151
+ import brotli
152
+
153
+ content_encoding = response.headers.get("Content-Encoding", "").lower()
154
+ content = response.content
155
+
156
+ if "gzip" in content_encoding:
157
+ content = gzip.decompress(content)
158
+ elif "br" in content_encoding:
159
+ content = brotli.decompress(content)
160
+ elif "deflate" in content_encoding:
161
+ import zlib
162
+
163
+ content = zlib.decompress(content, -zlib.MAX_WBITS)
164
+ else:
165
+ raise ValueError(
166
+ f"failed to detect content encoding: {content_encoding}"
167
+ )
168
+
169
+ # Now parse the decompressed content
170
+ return json.loads(content.decode("utf-8"), parse_float=parse_float)
124
171
 
125
172
  async def aclose(self) -> None:
126
173
  await self.httpx_client.aclose()
@@ -1,3 +0,0 @@
1
-
2
- __version__ = "0.0.26"
3
-
File without changes
File without changes