from datetime import datetime from typing import Dict, Optional import forecastio import pytz from .base_weather import BaseWeather class DarkSky(BaseWeather): # Deprecated (API will end on March 31st, 2023) def _get_data( self, latitude: float, longitude: float, time: datetime ) -> Optional[Dict]: # get point time in UTC point_time = ( pytz.utc.localize(time) if time.tzinfo is None # naive datetime else time ) forecast = forecastio.load_forecast( self.api_key, latitude, longitude, time=point_time, units='si', ) weather = forecast.currently() return { 'humidity': weather.humidity, 'icon': weather.icon, 'temperature': weather.temperature, 'wind': weather.windSpeed, 'windBearing': weather.windBearing, }