""" Base adapter interface for flight price sources. """ from abc import ABC, abstractmethod from datetime import date from typing import List, Dict, Any class FlightAdapter(ABC): """ Abstract base class for flight price adapters. Each adapter implements a specific price source (Kiwi, Google Flights, etc.) and returns results in a normalized format. """ @abstractmethod def search_round_trip( self, origin: str, destination: str, departure_date: date, return_date: date, **kwargs ) -> List[Dict[str, Any]]: """ Search for round-trip flights. Args: origin: IATA code of origin airport (e.g., "BER") destination: IATA code of destination airport (e.g., "EZE") departure_date: Departure date return_date: Return date **kwargs: Adapter-specific parameters Returns: List of results, each with: { "price_eur": float, "airline": str, "departure": datetime, "return": datetime, "link": str (booking URL), "source": str (adapter name) } Returns empty list if no results found. """ pass @abstractmethod def get_name(self) -> str: """Return the name of this adapter.""" pass