""" External API clients for Library Desk. This package contains clients for external web APIs, named by source. Each provider implements a common interface for interoperability. Weather providers (implement WeatherProvider): - openmeteo: Open-Meteo (free, no key) News providers (implement NewsProvider): - nos: NOS.nl Dutch RSS (free, no key) - bbc: BBC English RSS (free, no key) Financial providers (implement FinancialProvider): - alphavantage: Alpha Vantage (free tier with key) Users can swap providers by configuring which implementation to use. All providers return standardized response models from base.py. """ # Base classes and models from .base import ( # Enums WeatherCondition, # Weather models CurrentWeather, DayForecast, WeatherForecast, GeoLocation, SunTimes, # Air quality models AirQuality, # News models NewsItem, NewsFeed, # Financial models StockQuote, # Abstract providers WeatherProvider, AirQualityProvider, NewsProvider, FinancialProvider, ) # Concrete implementations from .openmeteo import OpenMeteoProvider from .nos import NOSProvider from .bbc import BBCProvider from .news import AggregatedNewsProvider from .alphavantage import AlphaVantageProvider __all__ = [ # Enums "WeatherCondition", # Weather "CurrentWeather", "DayForecast", "WeatherForecast", "GeoLocation", "SunTimes", "WeatherProvider", "OpenMeteoProvider", # Air quality "AirQuality", "AirQualityProvider", # News "NewsItem", "NewsFeed", "NewsProvider", "NOSProvider", "BBCProvider", "AggregatedNewsProvider", # Financial "StockQuote", "FinancialProvider", "AlphaVantageProvider", ]