quantplay 2.0.76__tar.gz → 2.0.81__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 (65) hide show
  1. {quantplay-2.0.76 → quantplay-2.0.81}/PKG-INFO +1 -26
  2. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/dhan.py +29 -6
  3. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/generics/broker.py +5 -1
  4. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/noren.py +5 -1
  5. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay.egg-info/PKG-INFO +1 -26
  6. {quantplay-2.0.76 → quantplay-2.0.81}/setup.py +1 -1
  7. {quantplay-2.0.76 → quantplay-2.0.81}/README.md +0 -0
  8. {quantplay-2.0.76 → quantplay-2.0.81}/pyproject.toml +0 -0
  9. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/__init__.py +0 -0
  10. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/__init__.py +0 -0
  11. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/aliceblue.py +0 -0
  12. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/angelone.py +0 -0
  13. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/auto_login/__init__.py +0 -0
  14. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/auto_login/aliceblue.py +0 -0
  15. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/broker_factory.py +0 -0
  16. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/finvasia_utils/__init__.py +0 -0
  17. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/finvasia_utils/fa_noren.py +0 -0
  18. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/five_paisa.py +0 -0
  19. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/flattrade.py +0 -0
  20. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/ft_utils/__init__.py +0 -0
  21. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/ft_utils/flattrade_utils.py +0 -0
  22. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/ft_utils/ft_noren.py +0 -0
  23. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/generics/__init__.py +0 -0
  24. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/iifl_xts.py +0 -0
  25. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/kite_utils.py +0 -0
  26. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/kotak.py +0 -0
  27. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/motilal.py +0 -0
  28. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/shoonya.py +0 -0
  29. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/uplink/__init__.py +0 -0
  30. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/uplink/uplink_utils.py +0 -0
  31. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/upstox.py +0 -0
  32. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/xts.py +0 -0
  33. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/xts_utils/Connect.py +0 -0
  34. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/xts_utils/Exception.py +0 -0
  35. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/xts_utils/InteractiveSocketClient.py +0 -0
  36. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/xts_utils/__init__.py +0 -0
  37. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/broker/zerodha.py +0 -0
  38. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/exception/__init__.py +0 -0
  39. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/exception/exceptions.py +0 -0
  40. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/model/__init__.py +0 -0
  41. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/model/broker.py +0 -0
  42. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/model/generics.py +0 -0
  43. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/model/instrument_data.py +0 -0
  44. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/model/order_event.py +0 -0
  45. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/py.typed +0 -0
  46. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/utils/__init__.py +0 -0
  47. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/utils/caching.py +0 -0
  48. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/utils/constant.py +0 -0
  49. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/utils/exchange.py +0 -0
  50. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/utils/number_utils.py +0 -0
  51. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/utils/pickle_utils.py +0 -0
  52. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/utils/selenium_utils.py +0 -0
  53. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/wrapper/__init__.py +0 -0
  54. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/wrapper/aws/__init__.py +0 -0
  55. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay/wrapper/aws/s3.py +0 -0
  56. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay.egg-info/SOURCES.txt +0 -0
  57. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay.egg-info/dependency_links.txt +0 -0
  58. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay.egg-info/requires.txt +0 -0
  59. {quantplay-2.0.76 → quantplay-2.0.81}/quantplay.egg-info/top_level.txt +0 -0
  60. {quantplay-2.0.76 → quantplay-2.0.81}/setup.cfg +0 -0
  61. {quantplay-2.0.76 → quantplay-2.0.81}/tests/__init__.py +0 -0
  62. {quantplay-2.0.76 → quantplay-2.0.81}/tests/conftest.py +0 -0
  63. {quantplay-2.0.76 → quantplay-2.0.81}/tests/wrapper/__init__.py +0 -0
  64. {quantplay-2.0.76 → quantplay-2.0.81}/tests/wrapper/aws/__init__.py +0 -0
  65. {quantplay-2.0.76 → quantplay-2.0.81}/tests/wrapper/aws/s3_test.py +0 -0
@@ -1,36 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: quantplay
3
- Version: 2.0.76
3
+ Version: 2.0.81
4
4
  Summary: This python package will be stored in AWS CodeArtifact
5
5
  Home-page:
6
6
  Author:
7
7
  Author-email:
8
8
  License: MIT
9
- Requires-Dist: setuptools
10
- Requires-Dist: path
11
- Requires-Dist: pyotp
12
- Requires-Dist: retrying
13
- Requires-Dist: boto3
14
- Requires-Dist: numpy
15
- Requires-Dist: websocket-client
16
- Requires-Dist: smartapi-python
17
- Requires-Dist: logzero
18
- Requires-Dist: selenium
19
- Requires-Dist: requests
20
- Requires-Dist: pandas
21
- Requires-Dist: pyarrow
22
- Requires-Dist: polars
23
- Requires-Dist: kiteconnect
24
- Requires-Dist: pya3
25
- Requires-Dist: py5paisa
26
- Requires-Dist: upstox-python-sdk
27
- Requires-Dist: undetected-chromedriver
28
- Requires-Dist: cachetools
29
- Requires-Dist: py_vollib
30
- Requires-Dist: python-engineio
31
- Requires-Dist: python-socketio
32
- Requires-Dist: six
33
- Requires-Dist: dhanhq
34
9
 
35
10
  # Quantplay Alpha playground
36
11
 
@@ -24,6 +24,8 @@ from quantplay.model.generics import (
24
24
  TransactionType,
25
25
  )
26
26
  from quantplay.utils.constant import Constants, OrderType
27
+ from quantplay.utils.pickle_utils import InstrumentData
28
+ from quantplay.wrapper.aws.s3 import S3Utils
27
29
 
28
30
 
29
31
  class Dhan(Broker):
@@ -38,14 +40,26 @@ class Dhan(Broker):
38
40
  client_id=user_id,
39
41
  access_token=access_token,
40
42
  )
41
-
43
+ self.user_id = user_id
42
44
  except Exception:
43
45
  raise TokenException("Dhan Session Expired")
44
46
  if load_instrument:
45
47
  self.load_instrument()
46
48
 
47
49
  def load_instrument(self, file_name: str | None = None) -> None:
48
- super().load_instrument("dhan_instruments")
50
+ try:
51
+ self.symbol_data = InstrumentData.get_instance().load_data( # type: ignore
52
+ "dhan_instruments"
53
+ )
54
+ Constants.logger.info("[LOADING_INSTRUMENTS] loading data from cache")
55
+ except Exception:
56
+ self.instrument_data = S3Utils.read_csv(
57
+ "quantplay-market-data",
58
+ "symbol_data/dhan_instruments.csv",
59
+ )
60
+ self.initialize_symbol_data(save_as="dhan_instruments")
61
+
62
+ self.initialize_broker_symbol_map()
49
63
 
50
64
  def set_username(self, username: str):
51
65
  self.username = username
@@ -53,9 +67,6 @@ class Dhan(Broker):
53
67
  def get_username(self):
54
68
  return self.username
55
69
 
56
- def get_quantplay_symbol(self, symbol: str):
57
- return symbol
58
-
59
70
  @retry(
60
71
  wait_exponential_multiplier=3000,
61
72
  wait_exponential_max=10000,
@@ -321,7 +332,12 @@ class Dhan(Broker):
321
332
  }
322
333
  )
323
334
  orders_df = orders_df.with_columns(
324
- pl.when(pl.col("product") == "INTRADAY").then(pl.lit("MIS")).alias("product"),
335
+ pl.when(pl.col("product") == "INTRADAY")
336
+ .then(pl.lit("MIS"))
337
+ .when(pl.col("product") == "MARGIN")
338
+ .then(pl.lit("NRML"))
339
+ .otherwise(pl.col("product"))
340
+ .alias("product"),
325
341
  pl.when(pl.col("exchange") == "NSE_FNO")
326
342
  .then(pl.lit("NFO"))
327
343
  .when(pl.col("exchange") == "BSE_FO")
@@ -346,6 +362,13 @@ class Dhan(Broker):
346
362
  .alias("status"),
347
363
  )
348
364
 
365
+ orders_df = orders_df.with_columns(
366
+ pl.when((pl.col("status") == "OPEN") & (pl.col("trigger_price") > 0))
367
+ .then(pl.lit("TRIGGER PENDING"))
368
+ .otherwise(pl.col("status"))
369
+ .alias("status")
370
+ )
371
+
349
372
  orders_df = orders_df.with_columns(
350
373
  pl.lit(None).cast(pl.Float64).alias("ltp"),
351
374
  pl.lit(0.0).alias("average_price"),
@@ -74,6 +74,7 @@ class Broker(ABC):
74
74
  "trigger_price": pl.Float64,
75
75
  "ltp": pl.Float64,
76
76
  "order_timestamp": pl.Datetime(time_unit="ms"),
77
+ "update_timestamp": pl.Datetime(time_unit="ms"),
77
78
  "token": pl.Int64,
78
79
  "quantity": pl.Int64,
79
80
  "pending_quantity": pl.Int64,
@@ -595,7 +596,10 @@ class Broker(ABC):
595
596
  delta_time = str(
596
597
  datetime.now().replace(microsecond=0) - timedelta(seconds=120)
597
598
  )
598
- orders = orders[orders["update_timestamp"] >= delta_time]
599
+ orders = orders.filter(
600
+ pl.col("update_timestamp").dt.strftime("%Y-%m-%d %H:%M:%S")
601
+ >= delta_time
602
+ )
599
603
 
600
604
  orders = orders.to_dicts()
601
605
  for order in orders:
@@ -711,6 +711,10 @@ class Noren(Broker):
711
711
  if "collateral" in api_margins:
712
712
  collateral = api_margins["collateral"]
713
713
 
714
+ holdings_val = 0
715
+ if "grcoll" in api_margins:
716
+ holdings_val = api_margins["grcoll"]
717
+
714
718
  if "marginused" not in api_margins:
715
719
  api_margins["margin_used"] = 0
716
720
  else:
@@ -735,7 +739,7 @@ class Noren(Broker):
735
739
  except Exception:
736
740
  margins["cash"] = 0
737
741
 
738
- margins["total_balance"] = float(api_margins["cash"]) + float(collateral)
742
+ margins["total_balance"] = float(api_margins["cash"]) + float(holdings_val)
739
743
 
740
744
  return margins
741
745
 
@@ -1,36 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: quantplay
3
- Version: 2.0.76
3
+ Version: 2.0.81
4
4
  Summary: This python package will be stored in AWS CodeArtifact
5
5
  Home-page:
6
6
  Author:
7
7
  Author-email:
8
8
  License: MIT
9
- Requires-Dist: setuptools
10
- Requires-Dist: path
11
- Requires-Dist: pyotp
12
- Requires-Dist: retrying
13
- Requires-Dist: boto3
14
- Requires-Dist: numpy
15
- Requires-Dist: websocket-client
16
- Requires-Dist: smartapi-python
17
- Requires-Dist: logzero
18
- Requires-Dist: selenium
19
- Requires-Dist: requests
20
- Requires-Dist: pandas
21
- Requires-Dist: pyarrow
22
- Requires-Dist: polars
23
- Requires-Dist: kiteconnect
24
- Requires-Dist: pya3
25
- Requires-Dist: py5paisa
26
- Requires-Dist: upstox-python-sdk
27
- Requires-Dist: undetected-chromedriver
28
- Requires-Dist: cachetools
29
- Requires-Dist: py_vollib
30
- Requires-Dist: python-engineio
31
- Requires-Dist: python-socketio
32
- Requires-Dist: six
33
- Requires-Dist: dhanhq
34
9
 
35
10
  # Quantplay Alpha playground
36
11
 
@@ -21,7 +21,7 @@ requirements = [
21
21
  setup(
22
22
  name="quantplay",
23
23
  long_description=Path("README.md").read_text(),
24
- version="2.0.76",
24
+ version="2.0.81",
25
25
  setup_requires=["pytest-runner"],
26
26
  install_requires=requirements,
27
27
  tests_require=[],
File without changes
File without changes
File without changes
File without changes
File without changes