quantplay 2.0.80__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.
- {quantplay-2.0.80 → quantplay-2.0.81}/PKG-INFO +1 -1
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/angelone.py +1 -1
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/ft_utils/flattrade_utils.py +12 -6
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/noren.py +5 -1
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay.egg-info/PKG-INFO +1 -1
- {quantplay-2.0.80 → quantplay-2.0.81}/setup.py +1 -1
- {quantplay-2.0.80 → quantplay-2.0.81}/README.md +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/pyproject.toml +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/aliceblue.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/auto_login/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/auto_login/aliceblue.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/broker_factory.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/dhan.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/finvasia_utils/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/finvasia_utils/fa_noren.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/five_paisa.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/flattrade.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/ft_utils/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/ft_utils/ft_noren.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/generics/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/generics/broker.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/iifl_xts.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/kite_utils.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/kotak.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/motilal.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/shoonya.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/uplink/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/uplink/uplink_utils.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/upstox.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/xts.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/xts_utils/Connect.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/xts_utils/Exception.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/xts_utils/InteractiveSocketClient.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/xts_utils/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/broker/zerodha.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/exception/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/exception/exceptions.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/model/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/model/broker.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/model/generics.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/model/instrument_data.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/model/order_event.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/py.typed +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/utils/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/utils/caching.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/utils/constant.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/utils/exchange.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/utils/number_utils.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/utils/pickle_utils.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/utils/selenium_utils.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/wrapper/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/wrapper/aws/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay/wrapper/aws/s3.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay.egg-info/SOURCES.txt +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay.egg-info/dependency_links.txt +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay.egg-info/requires.txt +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/quantplay.egg-info/top_level.txt +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/setup.cfg +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/tests/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/tests/conftest.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/tests/wrapper/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/tests/wrapper/aws/__init__.py +0 -0
- {quantplay-2.0.80 → quantplay-2.0.81}/tests/wrapper/aws/s3_test.py +0 -0
|
@@ -85,7 +85,7 @@ class AngelOne(Broker):
|
|
|
85
85
|
totp=pyotp.TOTP(str(totp)).now(),
|
|
86
86
|
)
|
|
87
87
|
|
|
88
|
-
if response["status"]
|
|
88
|
+
if not response["status"]:
|
|
89
89
|
if "message" in response:
|
|
90
90
|
raise InvalidArgumentException(response["message"])
|
|
91
91
|
raise InvalidArgumentException("Invalid API credentials")
|
|
@@ -9,6 +9,7 @@ from selenium.common.exceptions import WebDriverException
|
|
|
9
9
|
from quantplay.exception.exceptions import (
|
|
10
10
|
InvalidArgumentException,
|
|
11
11
|
RetryableException,
|
|
12
|
+
TokenException,
|
|
12
13
|
WrongLibrarySetup,
|
|
13
14
|
retry_exception,
|
|
14
15
|
)
|
|
@@ -68,9 +69,11 @@ class FlatTradeUtils:
|
|
|
68
69
|
)
|
|
69
70
|
error_message = error_attempt.text
|
|
70
71
|
|
|
71
|
-
if error_message in [
|
|
72
|
-
"
|
|
73
|
-
"
|
|
72
|
+
if error_message.lower() in [
|
|
73
|
+
"invalid input : wrong password",
|
|
74
|
+
"invalid api key",
|
|
75
|
+
"resetpassword",
|
|
76
|
+
"user blocked due to multiple wrong attempts",
|
|
74
77
|
]:
|
|
75
78
|
raise InvalidArgumentException(
|
|
76
79
|
f"Flattrade Login Failed: {error_message}"
|
|
@@ -79,19 +82,22 @@ class FlatTradeUtils:
|
|
|
79
82
|
except Exception as e:
|
|
80
83
|
Constants.logger.error(f"Flattrade Selenium Error : {e}")
|
|
81
84
|
traceback.print_exc()
|
|
85
|
+
raise TokenException(str(e))
|
|
82
86
|
|
|
83
87
|
finally:
|
|
84
88
|
Constants.logger.error(
|
|
85
89
|
f"Flattrade Unkown Selenium Error : {error_message}"
|
|
86
90
|
)
|
|
87
|
-
raise
|
|
91
|
+
raise TokenException(
|
|
92
|
+
f"Flattrade Unkown Selenium Error : {error_message}"
|
|
93
|
+
)
|
|
88
94
|
|
|
89
95
|
try:
|
|
90
96
|
request_token = url.split("code=")[1].split("&")[0]
|
|
91
97
|
except Exception as e:
|
|
92
98
|
Constants.logger.error(f"Flattrade Selenium Error for {url}")
|
|
93
99
|
traceback.print_exc()
|
|
94
|
-
raise e
|
|
100
|
+
raise TokenException(str(e))
|
|
95
101
|
|
|
96
102
|
driver.close()
|
|
97
103
|
|
|
@@ -99,7 +105,7 @@ class FlatTradeUtils:
|
|
|
99
105
|
|
|
100
106
|
except binascii.Error:
|
|
101
107
|
raise InvalidArgumentException("Invalid TOTP key provided")
|
|
102
|
-
except InvalidArgumentException as e:
|
|
108
|
+
except (InvalidArgumentException, TokenException) as e:
|
|
103
109
|
raise e
|
|
104
110
|
except WebDriverException:
|
|
105
111
|
raise WrongLibrarySetup("Selenium setup need to be fixed")
|
|
@@ -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(
|
|
742
|
+
margins["total_balance"] = float(api_margins["cash"]) + float(holdings_val)
|
|
739
743
|
|
|
740
744
|
return margins
|
|
741
745
|
|
|
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
|