Library for fetching weather information from Finnish Meteorological Institute (FMI).
Working example can be found in example.py.
$ pip install fmi-weather-client
You can get the weather using the following functions:
weather_by_place_name(place_name)
weather_by_coordinates(latitude, longitude)
Example:
import fmi_weather_client as fmi
from fmi_weather_client.errors import ClientError, ServerError
try:
weather = fmi.weather_by_place_name("Jäppilä, Pieksämäki")
if weather is not None:
print(f"Temperature in {weather.place} is {weather.data.temperature}")
except ClientError as err:
print(f"Client error with status {err.status_code}: {err.message}")
except ServerError as err:
print(f"Server error with status {err.status_code}: {err.body}")
You can get the forecasts using the following functions:
forecast_by_place_name(place_name, [timestep_hours=24])
forecast_by_coordinates(latitude, longitude, [timestep_hours=24])
Example:
import fmi_weather_client as fmi
from fmi_weather_client.errors import ClientError, ServerError
try:
forecast = fmi.forecast_by_coordinates(60.170998, 24.941325)
for weather_data in forecast.forecasts:
print(f"Temperature at {weather_data.time}: {weather_data.temperature}")
except ClientError as err:
print(f"Client error with status {err.status_code}: {err.message}")
except ServerError as err:
print(f"Server error with status {err.status_code}: {err.body}")
All functions have asynchronous versions available with async_
prefix.
Happens if FMI service returns 400-499
. This can happens for example if:
- Provided coordinates are invalid
- Provided place is not recognized
- Weather data is not available
Error object contains status code and human-readable error message from FMI service.
Happens if FMI service returns any other error.
Error object contains status code and raw response body from FMI service
FMI provides the following commonly used information:
- Temperature (°C)
- Pressure (hPa)
- Humidity (%)
- Wind direction (°)
- Wind speed (m/s)
- Wind gust (m/s)
- Dew point (°)
- Cloud coverage (%)
- Precipitation intensity (mm/h)
- Symbol Documentation in Finnish
There are also other information available. Check models.py and FMI documentation for more info.
Create and activate a virtual environment
$ python -m venv venv
$ source venv/bin/activate
Install required packages
$ make setup
Deactivate virtual environment when you are done
$ deactivate
This will run unit tests and code quality checks
$ make test