quantplay 2.0.58__tar.gz → 2.0.60__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.58 → quantplay-2.0.60}/PKG-INFO +1 -1
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/broker_factory.py +8 -7
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/flattrade.py +3 -3
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/shoonya.py +3 -5
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay.egg-info/PKG-INFO +1 -1
- {quantplay-2.0.58 → quantplay-2.0.60}/setup.py +1 -1
- {quantplay-2.0.58 → quantplay-2.0.60}/README.md +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/pyproject.toml +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/aliceblue.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/angelone.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/auto_login/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/auto_login/aliceblue.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/dhan.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/finvasia_utils/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/finvasia_utils/fa_noren.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/five_paisa.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/ft_utils/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/ft_utils/flattrade_utils.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/ft_utils/ft_noren.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/generics/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/generics/broker.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/iifl_xts.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/kite_utils.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/kotak.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/motilal.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/noren.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/uplink/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/uplink/uplink_utils.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/upstox.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/xts.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/xts_utils/Connect.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/xts_utils/Exception.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/xts_utils/InteractiveSocketClient.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/xts_utils/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/broker/zerodha.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/exception/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/exception/exceptions.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/model/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/model/broker.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/model/generics.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/model/instrument_data.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/model/order_event.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/py.typed +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/utils/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/utils/caching.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/utils/constant.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/utils/exchange.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/utils/number_utils.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/utils/pickle_utils.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/utils/selenium_utils.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/wrapper/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/wrapper/aws/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay/wrapper/aws/s3.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay.egg-info/SOURCES.txt +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay.egg-info/dependency_links.txt +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay.egg-info/requires.txt +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/quantplay.egg-info/top_level.txt +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/setup.cfg +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/tests/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/tests/conftest.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/tests/wrapper/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/tests/wrapper/aws/__init__.py +0 -0
- {quantplay-2.0.58 → quantplay-2.0.60}/tests/wrapper/aws/s3_test.py +0 -0
|
@@ -5,6 +5,7 @@ import traceback
|
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from typing import Any, Dict
|
|
7
7
|
|
|
8
|
+
|
|
8
9
|
from quantplay.broker.aliceblue import Aliceblue
|
|
9
10
|
from quantplay.broker.angelone import AngelOne
|
|
10
11
|
from quantplay.broker.dhan import Dhan
|
|
@@ -16,7 +17,7 @@ from quantplay.broker.motilal import Motilal
|
|
|
16
17
|
from quantplay.broker.shoonya import FinvAsia
|
|
17
18
|
from quantplay.broker.upstox import Upstox
|
|
18
19
|
from quantplay.broker.zerodha import Zerodha
|
|
19
|
-
from quantplay.exception.exceptions import InvalidArgumentException
|
|
20
|
+
from quantplay.exception.exceptions import InvalidArgumentException, TokenException
|
|
20
21
|
from quantplay.utils.caching import InstrumentCache
|
|
21
22
|
from quantplay.utils.pickle_utils import PickleUtils
|
|
22
23
|
|
|
@@ -91,7 +92,7 @@ broker_required_args = {
|
|
|
91
92
|
|
|
92
93
|
broker_generate_args = {
|
|
93
94
|
Broker.ZERODHA: set(["user_id", "api_key", "api_secret"]),
|
|
94
|
-
Broker.FLATTRADE: set(["user_id" "api_secret", "password", "
|
|
95
|
+
Broker.FLATTRADE: set(["user_id" "api_secret", "password", "totp", "api_key"]),
|
|
95
96
|
Broker.IIFL_XTS: set(["api_key", "api_secret", "md_api_key", "md_api_secret"]),
|
|
96
97
|
Broker.MOTILAL: set(["user_id", "password", "api_key", "two_fa", "totp"]),
|
|
97
98
|
Broker.ALICEBLUE: set(["user_id", "api_key"]),
|
|
@@ -110,7 +111,7 @@ broker_generate_args = {
|
|
|
110
111
|
),
|
|
111
112
|
Broker.ANGELONE: set(["user_id", "api_key", "mpin", "totp"]),
|
|
112
113
|
Broker.FINVASIA: set(
|
|
113
|
-
["api_secret", "imei", "password", "
|
|
114
|
+
["api_secret", "imei", "password", "totp", "user_id", "vendor_code"]
|
|
114
115
|
),
|
|
115
116
|
Broker.UPSTOX: set(["user_id", "access_token"]),
|
|
116
117
|
Broker.KOTAK: set(
|
|
@@ -138,8 +139,8 @@ class BrokerFactory:
|
|
|
138
139
|
raise InvalidArgumentException(f"Unsupported Broker: '{broker}'")
|
|
139
140
|
|
|
140
141
|
if not compare_map[broker].issubset(broker_data.keys()):
|
|
141
|
-
raise
|
|
142
|
-
f"Missing Arguments for {user_broker_account['username']}:{user_broker_account['nickname']} in broker '{broker}' -> {compare_map[broker].difference(
|
|
142
|
+
raise TokenException(
|
|
143
|
+
f"Missing Arguments for {user_broker_account['username']}:{user_broker_account['nickname']} in broker '{broker}' -> {compare_map[broker].difference(broker_data.keys())}"
|
|
143
144
|
)
|
|
144
145
|
|
|
145
146
|
def generate_token(
|
|
@@ -241,7 +242,7 @@ class BrokerFactory:
|
|
|
241
242
|
api_secret=broker_data["api_secret"],
|
|
242
243
|
imei=broker_data["imei"],
|
|
243
244
|
password=broker_data["password"],
|
|
244
|
-
|
|
245
|
+
totp=broker_data["totp_key"],
|
|
245
246
|
user_id=broker_data["user_id"],
|
|
246
247
|
vendor_code=broker_data["vendor_code"],
|
|
247
248
|
load_instrument=False,
|
|
@@ -255,7 +256,7 @@ class BrokerFactory:
|
|
|
255
256
|
user_id=broker_data["user_id"],
|
|
256
257
|
api_secret=broker_data["api_secret"],
|
|
257
258
|
password=broker_data["password"],
|
|
258
|
-
|
|
259
|
+
totp=broker_data["totp_key"],
|
|
259
260
|
api_key=broker_data["api_key"],
|
|
260
261
|
load_instrument=False,
|
|
261
262
|
)
|
|
@@ -17,7 +17,7 @@ class FlatTrade(Noren):
|
|
|
17
17
|
order_updates: Queue[OrderUpdateEvent] | None = None,
|
|
18
18
|
api_secret: str | None = None,
|
|
19
19
|
password: str | None = None,
|
|
20
|
-
|
|
20
|
+
totp: str | None = None,
|
|
21
21
|
user_id: str | None = None,
|
|
22
22
|
user_token: str | None = None,
|
|
23
23
|
api_key: str | None = None,
|
|
@@ -33,11 +33,11 @@ class FlatTrade(Noren):
|
|
|
33
33
|
if user_token and user_id:
|
|
34
34
|
self.api.set_session(userid=user_id, usertoken=user_token)
|
|
35
35
|
|
|
36
|
-
elif user_id and password and
|
|
36
|
+
elif user_id and password and totp and api_key and api_secret:
|
|
37
37
|
token = self.login(
|
|
38
38
|
user_id=user_id,
|
|
39
39
|
password=password,
|
|
40
|
-
totp_key=
|
|
40
|
+
totp_key=totp,
|
|
41
41
|
api_key=api_key,
|
|
42
42
|
api_secret=api_secret,
|
|
43
43
|
)
|
|
@@ -16,7 +16,7 @@ class FinvAsia(Noren):
|
|
|
16
16
|
api_secret: str | None = None,
|
|
17
17
|
imei: str | None = None,
|
|
18
18
|
password: str | None = None,
|
|
19
|
-
|
|
19
|
+
totp: str | None = None,
|
|
20
20
|
user_id: str | None = None,
|
|
21
21
|
vendor_code: str | None = None,
|
|
22
22
|
user_token: str | None = None,
|
|
@@ -37,10 +37,8 @@ class FinvAsia(Noren):
|
|
|
37
37
|
"email": None,
|
|
38
38
|
"uname": None,
|
|
39
39
|
}
|
|
40
|
-
elif
|
|
41
|
-
|
|
42
|
-
):
|
|
43
|
-
totp = pyotp.TOTP(totp_key).now()
|
|
40
|
+
elif user_id and password and totp and vendor_code and api_secret and imei:
|
|
41
|
+
totp = pyotp.TOTP(totp).now()
|
|
44
42
|
response = self.login(
|
|
45
43
|
user_id=user_id,
|
|
46
44
|
password=password,
|
|
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
|