41 lines
958 B
Python
41 lines
958 B
Python
"""Mock weather data tool implementation."""
|
|
|
|
import random
|
|
from .types import WeatherResult
|
|
|
|
_CONDITIONS = [
|
|
"Sunny",
|
|
"Partly Cloudy",
|
|
"Cloudy",
|
|
"Overcast",
|
|
"Light Rain",
|
|
"Heavy Rain",
|
|
"Thunderstorm",
|
|
"Snow",
|
|
"Foggy",
|
|
"Windy",
|
|
]
|
|
|
|
|
|
def get_weather_impl(city: str) -> WeatherResult:
|
|
"""Return mock weather data for the given city.
|
|
|
|
Uses a seeded random based on the city name so repeated calls
|
|
for the same city return consistent results within a session.
|
|
"""
|
|
rng = random.Random(city.lower())
|
|
temperature = rng.randint(20, 95)
|
|
humidity = rng.randint(30, 90)
|
|
wind_speed = rng.randint(2, 30)
|
|
feels_like = temperature + rng.randint(-5, 5)
|
|
conditions = rng.choice(_CONDITIONS)
|
|
|
|
return WeatherResult(
|
|
city=city,
|
|
temperature=temperature,
|
|
humidity=humidity,
|
|
wind_speed=wind_speed,
|
|
feels_like=feels_like,
|
|
conditions=conditions,
|
|
)
|