Squashed 'utils_v2/' content from commit d593c1ec

git-subtree-dir: utils_v2
git-subtree-split: d593c1ec43b43c6881c40cbef6ae7c170dc76776
This commit is contained in:
2025-01-07 10:13:06 +05:30
commit 6d1f731ff7
185 changed files with 141092 additions and 0 deletions
+257
View File
@@ -0,0 +1,257 @@
"""
AUTHOR:
Khushal P Soonderji
DATE:
Monday, 6th Jan., 2024.
OBJECTIVE:
To provide a data model for describing the margin/funds of a user of Zerodha Kite.
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 AvailableFunds(BaseModel):
adhocMargin: float | int = Field(default = 0, alias = "adhoc_margin")
cash: float | int = Field(default = 0, alias = "cash")
openingBalance: float | int = Field(default = 0, alias = "opening_balance")
liveBalance: float | int = Field(default = 0, alias = "live_balance")
collateral: float | int = Field(default = 0, alias = "collateral")
intradayPayin: float | int = Field(default = 0, alias = "intraday_payin")
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "ignore"
populate_by_name = True
# ┓┏ ┓• ┓ •
# ┃┃┏┓┃┓┏┫┏┓╋┓┏┓┏┓
# ┗┛┗┻┗┗┗┻┗┻┗┗┗┛┛┗
pass
# ┏┓ •
# ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏
# ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛
# ┛
pass
# ┏┓ ┏┓
# ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏
# ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛
pass
# ---------------------------------------------------------------------------------------------------------------------
class UtilizedFunds(BaseModel):
debits: float | int = Field(default = 0, alias = "debits")
exposure: float | int = Field(default = 0, alias = "exposure")
m2mRealized: float | int = Field(default = 0, alias = "m2m_realised")
m2mUnrealized: float | int = Field(default = 0, alias = "m2m_unrealised")
optionPremium: float | int = Field(default = 0, alias = "option_premium")
payout: float | int = Field(default = 0, alias = "payout")
span: float | int = Field(default = 0, alias = "span")
holdingSales: float | int = Field(default = 0, alias = "holding_sales")
turnover: float | int = Field(default = 0, alias = "turnover")
liquidCollateral: float | int = Field(default = 0, alias = "liquid_collateral")
stockCollateral: float | int = Field(default = 0, alias = "stock_collateral")
equity: float | int = Field(default = 0, alias = "equity")
delivery: float | int = Field(default = 0, alias = "delivery")
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "ignore"
populate_by_name = True
# ┓┏ ┓• ┓ •
# ┃┃┏┓┃┓┏┫┏┓╋┓┏┓┏┓
# ┗┛┗┻┗┗┗┻┗┻┗┗┗┛┛┗
pass
# ┏┓ •
# ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏
# ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛
# ┛
pass
# ┏┓ ┏┓
# ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏
# ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛
pass
# ---------------------------------------------------------------------------------------------------------------------
class SegmentInfo(BaseModel):
enabled: bool = Field(default = False, alias = "enabled")
net: float | int = Field(default = 0, alias = "net")
available: AvailableFunds = Field(default = AvailableFunds(), alias = "available")
utilized: UtilizedFunds = Field(default = UtilizedFunds(), alias = "utilised")
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "ignore"
populate_by_name = True
# ┓┏ ┓• ┓ •
# ┃┃┏┓┃┓┏┫┏┓╋┓┏┓┏┓
# ┗┛┗┻┗┗┗┻┗┻┗┗┗┛┛┗
pass
# ┏┓ •
# ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏
# ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛
# ┛
pass
# ┏┓ ┏┓
# ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏
# ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛
pass
# ---------------------------------------------------------------------------------------------------------------------
class ZerodhaKiteUserFunds(BaseModel):
equity: SegmentInfo = Field(default = SegmentInfo(), alias = "equity")
commodity: SegmentInfo = Field(default = SegmentInfo(), alias = "commodity")
# ┏┓ ┏•
# ┃ ┏┓┏┓╋┓┏┓
# ┗┛┗┛┛┗┛┗┗┫
# ┛
class Config:
extra = "ignore"
populate_by_name = True
# ┓┏ ┓• ┓ •
# ┃┃┏┓┃┓┏┫┏┓╋┓┏┓┏┓
# ┗┛┗┻┗┗┗┻┗┻┗┗┗┛┛┗
pass
# ┏┓ •
# ┃┃┏┓┏┓┏┓┏┓┏┓╋┓┏┓┏
# ┣┛┛ ┗┛┣┛┗ ┛ ┗┗┗ ┛
# ┛
pass
# ┏┓ ┏┓
# ┃ ┓┏┏╋┏┓┏┳┓ ┣ ┓┏┏┓┏┏
# ┗┛┗┻┛┗┗┛┛┗┗ ┻ ┗┻┛┗┗┛
pass
# *****************************************************************************************************************
# ***** ****
# *** MAIN PROGRAM ***
# ***** ****
# *****************************************************************************************************************
if __name__ == "__main__":
pass