from abc import ABC, abstractmethod from typing import Dict, Any, Optional class BaseAPISource(ABC): """Classe de base abstraite pour toutes les sources d'API externes.""" def __init__(self, base_url: str, timeout: int = 30): self.base_url = base_url.rstrip('/') self.timeout = timeout @abstractmethod async def get_parcel_from_lat_lon(self, latitude: float, longitude: float) -> Dict[str, Any]: """ Récupère les informations de parcelle à partir des coordonnées GPS. Args: latitude: Latitude en degrés décimaux longitude: Longitude en degrés décimaux Returns: Dict contenant les données de la parcelle """ pass def _build_url(self, endpoint: str) -> str: """Construit l'URL complète à partir du base_url et de l'endpoint.""" return f"{self.base_url}/{endpoint.lstrip('/')}"