""" Helper utility functions for the application. """ from typing import Optional from datetime import datetime def format_datetime(dt: datetime, format_str: str = "%Y-%m-%d %H:%M:%S") -> str: """ Formats a datetime object to a string. Args: dt: Datetime object format_str: Format string (default: "%Y-%m-%d %H:%M:%S") Returns: Formatted datetime string """ if dt is None: return "" return dt.strftime(format_str) def truncate_text(text: str, max_length: int = 100, suffix: str = "...") -> str: """ Truncates text to a maximum length. Args: text: Text to truncate max_length: Maximum length suffix: Suffix to add if truncated Returns: Truncated text """ if not text: return "" if len(text) <= max_length: return text return text[:max_length - len(suffix)] + suffix def safe_float(value: Optional[str], default: float = 0.0) -> float: """ Safely converts a string to float. Args: value: String value to convert default: Default value if conversion fails Returns: Float value or default """ if value is None: return default try: return float(value) except (ValueError, TypeError): return default def is_valid_coordinate(lat: float, lon: float) -> bool: """ Checks if coordinates are valid (latitude: -90 to 90, longitude: -180 to 180). Args: lat: Latitude lon: Longitude Returns: True if coordinates are valid """ return -90 <= lat <= 90 and -180 <= lon <= 180