Spaces:
Running
Running
File size: 2,167 Bytes
123bf24 c1fb6b5 123bf24 c1fb6b5 123bf24 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
"""
Data loading utilities for CSV and Google Sheets
"""
import pandas as pd
from functools import lru_cache
from backend.config import SHEET_CSV_URL
@lru_cache(maxsize=2)
def load_script_data(path: str) -> pd.DataFrame:
"""
Load script master data from CSV file with caching
Args:
path: Path to CSV file
Returns:
DataFrame with script data
"""
df = pd.read_csv(path)
df.dropna(how='all', axis=1, inplace=True)
return df
@lru_cache(maxsize=2)
def load_detailed_script_data(path: str) -> pd.DataFrame:
"""
Load detailed script master data from CSV file with caching
Args:
path: Path to CSV file
Returns:
DataFrame with detailed script data
"""
try:
df = pd.read_csv(path)
# Ensure required columns exist or clean up validation if needed
return df
except Exception as e:
print(f"Error loading detailed script data: {e}")
return pd.DataFrame()
def load_clients_from_sheet(url: str = SHEET_CSV_URL) -> pd.DataFrame:
"""
Load client details from Google Sheets
Args:
url: Google Sheets CSV export URL
Returns:
DataFrame with client details
"""
try:
df = pd.read_csv(url)
return df
except Exception as e:
print(f"Error loading clients from sheet: {e}")
return pd.DataFrame()
def safe_json_to_df(response, columns: list) -> pd.DataFrame:
"""
Convert requests.Response json to DataFrame with fallback to empty frame
Args:
response: requests.Response object
columns: List of column names for fallback empty DataFrame
Returns:
DataFrame with response data or empty DataFrame
"""
if response is None:
return pd.DataFrame(columns=columns)
if response.status_code != 200:
return pd.DataFrame(columns=columns)
text = response.text.strip()
if not text or text == "[]":
return pd.DataFrame(columns=columns)
try:
return pd.DataFrame(response.json())
except Exception:
return pd.DataFrame(columns=columns)
|