Resetting utils subtree.

This commit is contained in:
2025-01-07 18:51:02 +05:30
parent b20d4850c2
commit 9a9be7d4dc
187 changed files with 140 additions and 141306 deletions
@@ -1,200 +0,0 @@
"""
AUTHOR:
Khushal P Soonderji
DATE:
Saturday, 4th Jan., 2025.
OBJECTIVE:
To provide a data model for describing the tokens to be used for ICICI Breeze.
REFERENCES:
N/A
DOWNLOADS:
N/A
"""
# *****************************************************************************************************************
# ***** ****
# *** IMPORT ***
# ***** ****
# *****************************************************************************************************************
# To make sibling directories accessible for imports:
import sys
sys.path.append(".")
sys.path.append("..")
# For making data behaviour_models:
from pydantic import BaseModel, Field, field_validator, model_validator, AwareDatetime
from typing import Optional, Literal, Union, Dict, List, Any
# Related to Google:
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
# My utils:
from utils_v2.string import json
from utils_v2.string import regex
from utils_v2.date_time import date_time
# To work with date and time:
import datetime
import dateparser
# To make API calls:
import httpx
# *****************************************************************************************************************
# ***** ****
# *** MACROS / ONE-TIME INIT ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** VARIABLES ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** FUNCTIONS ***
# ***** ****
# *****************************************************************************************************************
class ICICIBreezeAuthTokens(BaseModel):
userId: str = Field(
description = "The id of the user as assigned by ICICI Breeze.",
alias = "idirect_userid"
)
name: str = Field(
description = "The name of the user.",
alias = "idirect_user_name"
)
displayName: str | None = Field(
description = "The short display name of the user.",
default = None,
alias = "idirect_user_name"
)
displayPictureUrl: str | None = Field(
description = "The display picture of the user.",
default = None,
alias = "avatar_url"
)
loginTs: AwareDatetime = Field(
description = "The time (utc) at which this user logged in.",
alias = "idirect_lastlogin_time"
)
sessionToken: str | None = Field(
description = "The main access token to be used in actual requests.",
default = None
)
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "ignore"
populate_by_name = True
# ┓┏ ┓• ┓ •
# ┃┃┏┓┃┓┏┫┏┓╋┓┏┓┏┓
# ┗┛┗┻┗┗┗┻┗┻┗┗┗┛┛┗
@field_validator("loginTs", mode = "before")
def parse_dates(cls, value):
if not isinstance(value, datetime.datetime):
parsed = date_time.parse_date_time(
value,
date_formats = ["%d-%b-%Y %H:%M:%S", "%Y-%m-%d %H:%M:%S"],
timezone = date_time.TIMEZONE_IST
)
value = parsed if isinstance(parsed, datetime.datetime) else dateparser.parse(value)
if isinstance(value, datetime.datetime): value = date_time.to_timezone(value, date_time.TIMEZONE_UTC)
return value
# ┏┓ •
# ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏
# ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛
# ┛
pass
# ┏┓ ┏┓
# ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏
# ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛
pass
# *****************************************************************************************************************
# ***** ****
# *** MAIN PROGRAM ***
# ***** ****
# *****************************************************************************************************************
if __name__ == "__main__":
print("BHOPLI & MUCHHI")
sample_token = {
"exg_trade_date": {
"NSE": "06-Jan-2025",
"BSE": "06-Jan-2025",
"FNO": "06-Jan-2025",
"NDX": "06-Jan-2025"
},
"exg_status": {
"NSE": "C",
"BSE": "C",
"FNO": "Y",
"NDX": "C"
},
"segments_allowed": {
"Trading": "Y",
"Equity": "Y",
"Derivatives": "Y",
"Currency": "Y"
},
"idirect_userid": "BHUSHaI4",
"idirect_user_name": "BHUSHAN C THAKKAR",
"idirect_ORD_TYP": "N",
"idirect_lastlogin_time": "04-Jan-2025 15:41:53",
"mf_holding_mode_popup_flg": "N",
"commodity_exchange_status": "Y",
"commodity_trade_date": "06-Jan-2025",
"commodity_allowed": "C"
}
model = ICICIBreezeAuthTokens(**sample_token)
print(json.to_string(model.model_dump(), default = str))