trd-utils 0.0.17__py3-none-any.whl → 0.0.19__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.

Potentially problematic release.


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

trd_utils/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
 
2
- __version__ = "0.0.17"
2
+ __version__ = "0.0.19"
3
3
 
@@ -14,3 +14,12 @@ def dt_from_ts(timestamp: float) -> datetime:
14
14
  # Timezone in ms - convert to seconds
15
15
  timestamp /= 1000
16
16
  return datetime.fromtimestamp(timestamp, tz=timezone.utc)
17
+
18
+ def dt_to_ts(dt: datetime, default: int = 0) -> int:
19
+ """
20
+ Return dt in ms as a timestamp in UTC.
21
+ If dt is None, return the given default.
22
+ """
23
+ if dt:
24
+ return int(dt.timestamp() * 1000)
25
+ return default
@@ -656,7 +656,7 @@ class BXUltraClient(ExchangeBase):
656
656
  api_identity=api_identity,
657
657
  page_size=50, # TODO: make this dynamic I guess...
658
658
  )
659
- if result.data.hide:
659
+ if result.data.hide == 0 and not result.data.positions:
660
660
  # TODO: do proper exceptions here...
661
661
  raise ValueError("The trader has made their positions hidden")
662
662
  unified_result = UnifiedTraderPositions()
@@ -668,12 +668,12 @@ class BXUltraClient(ExchangeBase):
668
668
  unified_pos.position_side = position.position_side
669
669
  unified_pos.margin_mode = "isolated" # TODO: fix this
670
670
  unified_pos.position_leverage = position.leverage
671
- unified_pos.position_pair = (
672
- position.symbol
673
- ) # TODO: make sure correct format
671
+ unified_pos.position_pair = position.symbol.replace("-", "/")
674
672
  unified_pos.open_time = None # TODO: do something for this?
675
673
  unified_pos.open_price = position.avg_price
676
- unified_pos.open_price_unit = position.symbol.split("-")[-1] # TODO
674
+ unified_pos.open_price_unit = (
675
+ position.valuation_coin_name or position.symbol.split("-")[-1]
676
+ ) # TODO
677
677
  unified_result.positions.append(unified_pos)
678
678
 
679
679
  return unified_result
@@ -10,6 +10,7 @@ from typing import (
10
10
 
11
11
  import dateutil.parser
12
12
 
13
+ from trd_utils.date_utils.datetime_helpers import dt_from_ts, dt_to_ts
13
14
  from trd_utils.html_utils.html_formats import camel_to_snake
14
15
 
15
16
  # Whether to use ultra-list instead of normal python list or not.
@@ -91,6 +92,9 @@ def value_to_normal_obj(value, omit_none: bool = False):
91
92
  result[inner_key] = normalized_value
92
93
 
93
94
  return result
95
+
96
+ if isinstance(value, datetime.datetime):
97
+ return dt_to_ts(value)
94
98
 
95
99
  raise TypeError(f"unsupported type provided: {type(value)}")
96
100
 
@@ -244,9 +248,12 @@ class BaseModel:
244
248
 
245
249
  if ULTRA_LIST_ENABLED and isinstance(value, list):
246
250
  value = convert_to_ultra_list(value)
247
- elif expected_type is datetime.datetime and isinstance(value, str):
251
+ elif expected_type is datetime.datetime:
248
252
  try:
249
- value = dateutil.parser.parse(value)
253
+ if isinstance(value, str):
254
+ value = dateutil.parser.parse(value)
255
+ elif isinstance(value, int):
256
+ value = dt_from_ts(value)
250
257
  except Exception as ex:
251
258
  raise ValueError(
252
259
  f"Failed to parse the string as datetime: {value}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: trd_utils
3
- Version: 0.0.17
3
+ Version: 0.0.19
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,8 +1,8 @@
1
- trd_utils/__init__.py,sha256=qin7IBck4QMJJnfUYIvDLa3FErU898cEhS4UdX6YXj4,25
1
+ trd_utils/__init__.py,sha256=5VsjvbcZt1tZKEb5CSJ0arTPA63xHY8ibWQ5EXVRXvY,25
2
2
  trd_utils/cipher/__init__.py,sha256=V05KNuzQwCic-ihMVHlC8sENaJGc3I8MCb4pg4849X8,1765
3
3
  trd_utils/common_utils/float_utils.py,sha256=W-jv7nzjl88xwGB6gsEXmDDhF6DseOrrVT2qx7OvyCo,266
4
4
  trd_utils/date_utils/__init__.py,sha256=Erg_E1TfKWNpiuZFm_NXRjCwoRMfxpPS2-mJK6V4lFM,77
5
- trd_utils/date_utils/datetime_helpers.py,sha256=Ai9rDCLoMg2dRH8NIBTJQgUSfNQp15Vtp6a1IQwHEbw,366
5
+ trd_utils/date_utils/datetime_helpers.py,sha256=euIJBr-6PfJzLScOC9xVXd8Re_Gw5CSBPwtHX9_Il4A,596
6
6
  trd_utils/exchanges/README.md,sha256=UwkpsfcoLCJaMvJe4yBsFkDpf8P6DOLYhtybb6xWMLc,6738
7
7
  trd_utils/exchanges/__init__.py,sha256=x74_8-P7ktZyL-1AuAU_SDQD8eKZMPh1gfkLzPuS1xY,440
8
8
  trd_utils/exchanges/base_types.py,sha256=bPsRUetQIHdW7ESMAQcjvX-Z2uixtCC93Vb-XnX6FFs,3229
@@ -11,7 +11,7 @@ trd_utils/exchanges/blofin/blofin_client.py,sha256=x0CU75_wWRA6RmVfm2wh7y-jNjohp
11
11
  trd_utils/exchanges/blofin/blofin_types.py,sha256=LnK3LEVlqU3Vg0Cg1jNmb5GGHQImwI6LCKaDw-aQa6A,4059
12
12
  trd_utils/exchanges/bx_ultra/__init__.py,sha256=8Ssy-eOemQR32Nv1-FoPHm87nRqRO4Fm2PU5GHEFKfQ,80
13
13
  trd_utils/exchanges/bx_ultra/bx_types.py,sha256=muHLa9lEjIOIDLQCb6xdyxSoQiIMSHErVe0NCoAS-RI,31017
14
- trd_utils/exchanges/bx_ultra/bx_ultra_client.py,sha256=nyLk9Z6OHc92jAfKkpydjZCxocavDXQ2MpB4YudSPPA,25059
14
+ trd_utils/exchanges/bx_ultra/bx_ultra_client.py,sha256=AjaKbUFPWLTO_KwyCAB7DVbmJKUjSQqZs5A1NfSUCBo,25110
15
15
  trd_utils/exchanges/bx_ultra/bx_utils.py,sha256=PwapomwDW33arVmKIDj6cL-aP0ptu4BYy_lOCqSAPOo,1392
16
16
  trd_utils/exchanges/exchange_base.py,sha256=ZY_9vL9LXtAbAmlWygdVyy0wC-QDla-JGWZ8HMRlkk8,4266
17
17
  trd_utils/exchanges/hyperliquid/README.md,sha256=-qaxmDt_9NTus2xRuzyFGkKgYDWgWk7ufHVTSkyn3t4,105
@@ -24,8 +24,8 @@ trd_utils/tradingview/__init__.py,sha256=H0QYb-O5qvy7qC3yswtlcSWLmeBnaS6oJ3Jtjvm
24
24
  trd_utils/tradingview/tradingview_client.py,sha256=g_eWYaCRQAL8Kvd-r6AnAdbH7Jha6C_GAyCuxh-RQUU,3917
25
25
  trd_utils/tradingview/tradingview_types.py,sha256=z21MXPVdWHAduEl3gSeMIRhxtBN9yK-jPYHfZSMIbSA,6144
26
26
  trd_utils/types_helper/__init__.py,sha256=lLbUiW1jUV1gjzTMFLthwkvF0hwauH-F_J2JZq--1U0,67
27
- trd_utils/types_helper/base_model.py,sha256=cdkvzkjZ1RE__GY98YvhtALHKMux9M4uzcdd8ofQNYU,10617
28
- trd_utils-0.0.17.dist-info/LICENSE,sha256=J1EP2xt87RjjmsTV1jTjHDQMLIM9FjdwEftTpw8hyv4,1067
29
- trd_utils-0.0.17.dist-info/METADATA,sha256=KjtGosT9tq54MR-LagZZrp_KK5xM5-jDc0mmeqGqRPM,1095
30
- trd_utils-0.0.17.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
31
- trd_utils-0.0.17.dist-info/RECORD,,
27
+ trd_utils/types_helper/base_model.py,sha256=zehCrDH-9OhWtdKVu05yfcKP52oBD303aMEhs_nytSg,10892
28
+ trd_utils-0.0.19.dist-info/LICENSE,sha256=J1EP2xt87RjjmsTV1jTjHDQMLIM9FjdwEftTpw8hyv4,1067
29
+ trd_utils-0.0.19.dist-info/METADATA,sha256=GB_FuAcnnuw3a6HaRWIlEZeeF2IR1u5f4zFIYaXvqbg,1095
30
+ trd_utils-0.0.19.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
31
+ trd_utils-0.0.19.dist-info/RECORD,,