Weather API Client for Python
Project description
Frequenz Weather API Client
Introduction
Weather API Client for Python providing access to historical and live weather forecast data.
Supported Platforms
The following platforms are officially supported (tested):
- Python: 3.11
- Operating System: Ubuntu Linux 20.04
- Architectures: amd64, arm64
Contributing
If you want to know how to build this project and contribute to it, please check out the Contributing Guide.
Usage
Installation
pip install frequenz-client-weather
Available Features
The available features are listed here.
Initialize the client
The Client can optionally be initialized with keep alive.
from frequenz.client.weather import Client
from frequenz.client.base.channel import ChannelOptions, KeepAliveOptions, SslOptions
from datetime import timedelta
client = Client(
service_address,
channel_defaults=ChannelOptions(
ssl=SslOptions(
enabled=False,
),
keep_alive=KeepAliveOptions(
enabled=True,
timeout=timedelta(minutes=5),
interval=timedelta(seconds=20),
),
),
)
Get historical weather forecast
from datetime import datetime
import pandas as pd
from frequenz.client.weather._types import ForecastFeature, Location
# Define a list of locations, features and a time range to request historical forecasts for
locations = [Location(latitude=46.2276, longitude=15.2137, country_code="DE")]
features = [ForecastFeature.TEMPERATURE_2_METRE, ForecastFeature.V_WIND_COMPONENT_10_METRE]
start = datetime(2024, 1, 1)
end = datetime(2024, 1, 31)
forecast_iterator = await client.stream_historical_forecast(
features=features, locations=locations, start=start, end=end
)
# Collect and flatten forecasts
flat_forecasts = [f.flatten() async for f in forecast_iterator]
forecast_records = [record for batch in flat_forecasts for record in batch]
# E.g. convert to DataFrame and sort
forecast_df = pd.DataFrame(forecast_records).sort_values(["create_time", "valid_time", "latitude", "longitude"])
print(forecast_df)
Get live weather forecast
import pandas as pd
from frequenz.client.weather._types import ForecastFeature, Location
# Define a list of locations and features to request live forecasts for
locations = [Location(latitude=46.2276, longitude=15.2137, country_code="DE")]
features = [ForecastFeature.TEMPERATURE_2_METRE, ForecastFeature.V_WIND_COMPONENT_10_METRE]
# Returns a Receiver object that can be iterated over asynchronously
stream = await client.stream_live_forecast(
locations=locations,
features=features,
)
# Process incoming forecasts as they arrive
async for forecast in stream:
# The to_ndarray_vlf method converts the forecast data to a 3D numpy array,
# where the dimensions correspond to validity_ts, location, feature
# The method can also take filters for validity_ts, locations and features
# E.g. filter the forecast for wind features
wind_forecast = forecast.to_ndarray_vlf(features=[ForecastFeature.V_WIND_COMPONENT_10_METRE])
print(wind_forecast)
Command Line Interface
The package also provides a command line interface to get weather forecast data.
Use -h to see the available options.
Get historical weather forecast
weather-cli \
--url <service-address> \
--location "40,15" \
--feature U_WIND_COMPONENT_100_METRE \
--start 2024-03-14 \
--end 2024-03-15 \
--mode historical
Get live weather forecast
weather-cli \
--url <service-address> \
--location "40, 15" \
--feature TEMPERATURE_2_METRE \
--mode live
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file frequenz_client_weather-0.3.1.tar.gz.
File metadata
- Download URL: frequenz_client_weather-0.3.1.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d81c16aebe25536cede6b85f5ddfa2bf6b40eac6226ad7866ccf99bc4ec57cf4
|
|
| MD5 |
27330d1fb2d85e9c384b3aca80a5a40e
|
|
| BLAKE2b-256 |
7d4747a3f940afb197f55e639d8171c82dc8beaeddb1a07a0b702537ce2e071e
|
Provenance
The following attestation bundles were made for frequenz_client_weather-0.3.1.tar.gz:
Publisher:
ci.yaml on frequenz-floss/frequenz-client-weather-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
frequenz_client_weather-0.3.1.tar.gz -
Subject digest:
d81c16aebe25536cede6b85f5ddfa2bf6b40eac6226ad7866ccf99bc4ec57cf4 - Sigstore transparency entry: 413135619
- Sigstore integration time:
-
Permalink:
frequenz-floss/frequenz-client-weather-python@c18a4fc4b591020511561f0107fc8b34f4f54bde -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/frequenz-floss
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@c18a4fc4b591020511561f0107fc8b34f4f54bde -
Trigger Event:
push
-
Statement type:
File details
Details for the file frequenz_client_weather-0.3.1-py3-none-any.whl.
File metadata
- Download URL: frequenz_client_weather-0.3.1-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
965db0cd6f3f03bed8f039cd62add96b494b25935c91c180ae892095a7e6404e
|
|
| MD5 |
c2beb7a466df5ae283d94b5a058bdd58
|
|
| BLAKE2b-256 |
904ab2c8812269d000210ca123ea35cb987c28863a3858934619e729905d4934
|
Provenance
The following attestation bundles were made for frequenz_client_weather-0.3.1-py3-none-any.whl:
Publisher:
ci.yaml on frequenz-floss/frequenz-client-weather-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
frequenz_client_weather-0.3.1-py3-none-any.whl -
Subject digest:
965db0cd6f3f03bed8f039cd62add96b494b25935c91c180ae892095a7e6404e - Sigstore transparency entry: 413135631
- Sigstore integration time:
-
Permalink:
frequenz-floss/frequenz-client-weather-python@c18a4fc4b591020511561f0107fc8b34f4f54bde -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/frequenz-floss
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yaml@c18a4fc4b591020511561f0107fc8b34f4f54bde -
Trigger Event:
push
-
Statement type: