Upload 42 files
Browse files- __pycache__/kotak_neo.cpython-311.pyc +0 -0
- kotak_neo.py +28 -7
__pycache__/kotak_neo.cpython-311.pyc
CHANGED
|
Binary files a/__pycache__/kotak_neo.cpython-311.pyc and b/__pycache__/kotak_neo.cpython-311.pyc differ
|
|
|
kotak_neo.py
CHANGED
|
@@ -58,6 +58,19 @@ def _first_number(*values: Any) -> float | None:
|
|
| 58 |
return None
|
| 59 |
|
| 60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
def _first_text(*values: Any) -> str | None:
|
| 62 |
for value in values:
|
| 63 |
if isinstance(value, dict):
|
|
@@ -403,6 +416,14 @@ class KotakNeoManager:
|
|
| 403 |
raise KotakNeoError("Kotak Neo did not return a NIFTY 50 quote.")
|
| 404 |
|
| 405 |
item = items[0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 406 |
payload = {
|
| 407 |
"symbol": "NIFTY 50",
|
| 408 |
"exchange_segment": "nse_cm",
|
|
@@ -414,13 +435,13 @@ class KotakNeoManager:
|
|
| 414 |
reference["quote_instrument_token"],
|
| 415 |
),
|
| 416 |
"display_name": _first_text(item.get("trading_symbol"), item.get("ts"), item.get("name"), "NIFTY 50"),
|
| 417 |
-
"last_traded_price":
|
| 418 |
-
"close":
|
| 419 |
-
"change":
|
| 420 |
-
"change_pct":
|
| 421 |
-
"open":
|
| 422 |
-
"high":
|
| 423 |
-
"low":
|
| 424 |
"exchange_feed_time": _first_text(item.get("tvalue"), item.get("updRecvTm"), item.get("hsUpTm")),
|
| 425 |
"as_of": _utc_now_iso(),
|
| 426 |
"source": {
|
|
|
|
| 58 |
return None
|
| 59 |
|
| 60 |
|
| 61 |
+
def _first_market_number(*values: Any) -> float | None:
|
| 62 |
+
fallback = None
|
| 63 |
+
for value in values:
|
| 64 |
+
parsed = _to_float(value)
|
| 65 |
+
if parsed is None:
|
| 66 |
+
continue
|
| 67 |
+
if fallback is None:
|
| 68 |
+
fallback = parsed
|
| 69 |
+
if parsed > 0:
|
| 70 |
+
return parsed
|
| 71 |
+
return fallback
|
| 72 |
+
|
| 73 |
+
|
| 74 |
def _first_text(*values: Any) -> str | None:
|
| 75 |
for value in values:
|
| 76 |
if isinstance(value, dict):
|
|
|
|
| 416 |
raise KotakNeoError("Kotak Neo did not return a NIFTY 50 quote.")
|
| 417 |
|
| 418 |
item = items[0]
|
| 419 |
+
last_traded_price = _first_market_number(item.get("last_traded_price"), item.get("ltp"), item.get("iv"))
|
| 420 |
+
close = _first_market_number(item.get("ic"), item.get("close"), item.get("c"))
|
| 421 |
+
change = _first_number(item.get("cng"), item.get("change"))
|
| 422 |
+
change_pct = _first_number(item.get("nc"), item.get("net_change_percentage"))
|
| 423 |
+
high = _first_market_number(item.get("highPrice"), item.get("high"), item.get("h"), item.get("hp"))
|
| 424 |
+
low = _first_market_number(item.get("lowPrice"), item.get("low"), item.get("l"), item.get("lp"))
|
| 425 |
+
open_price = _first_market_number(item.get("openingPrice"), item.get("open"), item.get("o"))
|
| 426 |
+
|
| 427 |
payload = {
|
| 428 |
"symbol": "NIFTY 50",
|
| 429 |
"exchange_segment": "nse_cm",
|
|
|
|
| 435 |
reference["quote_instrument_token"],
|
| 436 |
),
|
| 437 |
"display_name": _first_text(item.get("trading_symbol"), item.get("ts"), item.get("name"), "NIFTY 50"),
|
| 438 |
+
"last_traded_price": last_traded_price,
|
| 439 |
+
"close": close,
|
| 440 |
+
"change": change,
|
| 441 |
+
"change_pct": change_pct,
|
| 442 |
+
"open": open_price,
|
| 443 |
+
"high": high,
|
| 444 |
+
"low": low,
|
| 445 |
"exchange_feed_time": _first_text(item.get("tvalue"), item.get("updRecvTm"), item.get("hsUpTm")),
|
| 446 |
"as_of": _utc_now_iso(),
|
| 447 |
"source": {
|