"""
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