Programming

common_functions

import oracledb
import environ
env = environ.Env()
environ.Env.read_env() 
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

portfel_svod_folder = BASE_DIR / "datasets" / "portfel" / "svod"
def find_recent_date(max_days_back=366):
    today = datetime.date.today()
    for i in range(max_days_back):
        active_date = str(today - datetime.timedelta(days=i))
        filepath = f"{portfel_svod_folder}/svod_{active_date}.parquet"        
        if os.path.isfile(filepath):
            return active_date
    raise FileNotFoundError(f"No processed file found in the last {max_days_back} days.")



def get_oracle_connection():
    """Centralized connection manager pulling from your environment configurations."""
    return oracledb.connect(
        user = env("ORACLE_USER"),
        password = env("ORACLE_PASSWORD"),
        dsn = env("ORACLE_DSN"))

def format_number(value):
    try:
        value = float(value)
        """Format large numbers to B (billions) or T (trillions)."""
        if abs(value) >= 1_000_000_000_000:
            return f"{value / 1_000_000_000_000:.1f} Трлн."
        elif abs(value) >= 1_000_000_000:
            return f"{value / 1_000_000_000:.1f} Млрд."
        elif abs(value) >= 1_000_000:
            return f"{value / 1_000_000:.1f} Млн."
        return f"{value:,.0f} Сум"
    except (ValueError, TypeError):
        return value
        
Helpful? Dislike 0 Log in to react