Merge commit 'a1c1853ca54479c5f0ac649db2ab55cf219336cd' as 'utils_v2'

This commit is contained in:
2025-11-14 16:53:30 +05:30
226 changed files with 151722 additions and 0 deletions
+135
View File
@@ -0,0 +1,135 @@
"""
AUTHOR:
Khushal P Soonderji
DATE:
Friday, 11th Oct., 2024
OBJECTIVE:
To have a structure for the logs maintained for regular function calls.
This is different from the logs maintained for API calls.
REFERENCES:
01. https://chatgpt.com/share/6708b6c9-6ba4-800f-9ea9-00ec35067512
DOWNLOADS:
N/A
"""
# *****************************************************************************************************************
# ***** ****
# *** IMPORT ***
# ***** ****
# *****************************************************************************************************************
# System-level activities:
import os
import distro
import socket
import platform
# For data-modelling:
from pydantic import BaseModel, Field
from typing import Any, Optional, List, Literal
# To work with date and time:
import datetime
# *****************************************************************************************************************
# ***** ****
# *** MACROS / ONE-TIME INIT ***
# ***** ****
# *****************************************************************************************************************
# Info for logging that will stay constant during runtime:
SERVER_HOSTNAME = str(socket.gethostname()) # ... Gives the machine's name.
SERVER_LOGIN = str(os.getlogin()) # ............. Gives the user that is logged in.
PLATFORM_INFO = platform.uname()
HOST_OS = f"{platform.system() or 'N/A'} ({distro.name(True) or 'N/A'})"
HOST_CPU = f"{PLATFORM_INFO.processor} ({PLATFORM_INFO.machine})"
# *****************************************************************************************************************
# ***** ****
# *** VARIABLES ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** CLASSES ***
# ***** ****
# *****************************************************************************************************************
class GeneralLogModel(BaseModel):
# To identify the machine the code is running on.
# DO NOT MODIFY THESE:
hostname: str = SERVER_HOSTNAME
login: str = SERVER_LOGIN
platform: str = f"{PLATFORM_INFO.system} (v{PLATFORM_INFO.version}, release {PLATFORM_INFO.release}) on {PLATFORM_INFO.machine}"
os: str = HOST_OS
cpu: str = HOST_CPU
# Can modify these:
pid: Optional[Any] = None
ppid: Optional[Any] = None
# To identify the project and actions:
project: Optional[str] = None
log: str
operation: Optional[str] = None
apiVer: Optional[str] = None
logId: Optional[str] = None
logChain: Optional[str] = None
# Timing metrics:
ts: datetime.datetime
tat: float
cpuTime: float
# To understand the inputs:
func: str
args: Optional[Any] = None
kwargs: Optional[Any] = None
# To understand the outputs:
exception: Optional[Any] = None
response: Optional[Any] = None
# *****************************************************************************************************************
# ***** ****
# *** FUNCTIONS ***
# ***** ****
# *****************************************************************************************************************
# --- Nothing Yet
# *****************************************************************************************************************
# ***** ****
# *** MAIN PROGRAM ***
# ***** ****
# *****************************************************************************************************************
if __name__ == "__main__":
pass