"""Utility functions for stock data MCP."""
import os
from datetime import datetime
from typing import Optional
def get_env(key: str, default: Optional[str] = None) -> Optional[str]:
"""Get environment variable."""
return os.getenv(key, default)
def get_env_int(key: str, default: int) -> int:
"""Get environment variable as integer."""
value = os.getenv(key)
if value is None:
return default
try:
return int(value)
except ValueError:
return default
def timestamp_to_date(timestamp: int) -> str:
"""Convert Unix timestamp to YYYY-MM-DD format."""
return datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d")
def date_to_timestamp(date_str: str) -> int:
"""Convert YYYY-MM-DD to Unix timestamp."""
dt = datetime.strptime(date_str, "%Y-%m-%d")
return int(dt.timestamp())
def now_iso() -> str:
"""Get current time in ISO format."""
return datetime.utcnow().isoformat() + "Z"
class ProviderError(Exception):
"""Base exception for provider errors."""
def __init__(self, code: str, message: str, details: Optional[dict] = None, provider: Optional[str] = None):
self.code = code
self.message = message
self.details = details or {}
if provider:
self.details["provider"] = provider
super().__init__(message)