Skip to main content

Python Windy API package for interacting with the Windy API.

Project description

Windy API

Actions Status PyPI version PyPI platforms

Python Windy API package for interacting with the Windy API. Currently only supports access to the point forecast API.

Installation

python -m pip install windy_api

From source:

git clone https://github.com/stedonnelly/windy-api
cd windy-api
python -m pip install .

Usage

Quick Start

from windy_api import WindyAPI

# Initialize the client with your API key
api = WindyAPI(api_key="your_api_key_here")

# Get point forecast for San Francisco
response = api.get_point_forecast(
    latitude=37.7749,
    longitude=-122.4194,
    model="gfs",
    parameters=["temp", "wind"]
)

# Access forecast data
print(f"Timestamps: {response.ts}")
print(f"Temperature data: {response.get_data('temp-surface')}")
print(f"Temperature unit: {response.get_unit('temp-surface')}")

Available Weather Models

The following weather forecast models are supported:

  • gfs - Global Forecast System (default)
  • iconeu - ICON EU regional model
  • gfs_wave - GFS Wave model
  • namconus - NAM CONUS regional model
  • namhawaii - NAM Hawaii regional model
  • namalaska - NAM Alaska regional model
  • cams - CAMS air quality model

Available Parameters

Common weather parameters you can request:

  • temp - Temperature
  • wind - Wind speed and direction (returns wind_u and wind_v components)
  • windGust - Wind gusts
  • dewpoint - Dew point temperature
  • precip - Precipitation
  • convPrecip - Convective precipitation
  • snowPrecip - Snow precipitation
  • cape - Convective Available Potential Energy
  • pressure - Atmospheric pressure
  • rh - Relative humidity
  • lclouds, mclouds, hclouds - Low/medium/high clouds
  • gh - Geopotential height
  • ptype - Precipitation type

Detailed Examples

Multiple Parameters

# Request multiple weather parameters
response = api.get_point_forecast(
    latitude=40.7128,
    longitude=-74.0060,
    model="gfs",
    parameters=["temp", "dewpoint", "pressure", "rh", "precip"]
)

# Access each parameter
for timestamp in response.ts:
    print(f"Time: {timestamp}")

temp_data = response.get_data("temp-surface")
dewpoint_data = response.get_data("dewpoint-surface")
pressure_data = response.get_data("pressure-surface")

Working with Wind Data

# Wind returns u and v components
response = api.get_point_forecast(
    latitude=51.5074,
    longitude=-0.1278,
    model="gfs",
    parameters=["wind", "windGust"]
)

# Get wind components
wind_u = response.get_data("wind_u-surface")  # East-west component
wind_v = response.get_data("wind_v-surface")  # North-south component
wind_gust = response.get_data("windGust-surface")

Async Usage

import asyncio
from windy_api import WindyAPI

async def get_forecasts():
    api = WindyAPI(api_key="your_api_key_here")

    # Fetch multiple locations concurrently
    responses = await asyncio.gather(
        api.get_point_forecast_async(37.7749, -122.4194, "gfs", ["temp"]),
        api.get_point_forecast_async(40.7128, -74.0060, "gfs", ["temp"]),
        api.get_point_forecast_async(51.5074, -0.1278, "gfs", ["temp"])
    )

    return responses

# Run the async function
responses = asyncio.run(get_forecasts())

Using Environment Variables for API Key

import os
from dotenv import load_dotenv
from windy_api import WindyAPI

# Load API key from .env file
load_dotenv()
api = WindyAPI(api_key=os.getenv("WINDY_API_KEY"))

response = api.get_point_forecast(
    latitude=48.8566,
    longitude=2.3522,
    model="iconeu",  # Use ICON EU model for Europe
    parameters=["temp", "precip", "wind"]
)

Error Handling

from httpx import HTTPStatusError

try:
    response = api.get_point_forecast(
        latitude=37.7749,
        longitude=-122.4194,
        model="gfs",
        parameters=["temp"]
    )
except HTTPStatusError as e:
    print(f"API request failed: {e.response.status_code}")
    print(f"Response: {e.response.text}")
except ValueError as e:
    print(f"Invalid parameters: {e}")

Getting Your API Key

To use this library, you need a Windy API key. Visit Windy API to register and obtain your API key.

Contributing

See CONTRIBUTING.md for instructions on how to contribute.

License

Distributed under the terms of the MIT license.

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

windy_api-0.1b3.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

windy_api-0.1b3-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file windy_api-0.1b3.tar.gz.

File metadata

  • Download URL: windy_api-0.1b3.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for windy_api-0.1b3.tar.gz
Algorithm Hash digest
SHA256 ee41a5e244f71abb80a1a6e5b1fee71275fd0e335c87dadcf26c4da20271e1c7
MD5 1a2fa2471a55a640f5b2da766b6e0551
BLAKE2b-256 f71fac84e48cba945917671dc6e8794890b78fb68b4932aae7c6b44a3052a406

See more details on using hashes here.

Provenance

The following attestation bundles were made for windy_api-0.1b3.tar.gz:

Publisher: cd.yml on stedonnelly/windy-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file windy_api-0.1b3-py3-none-any.whl.

File metadata

  • Download URL: windy_api-0.1b3-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for windy_api-0.1b3-py3-none-any.whl
Algorithm Hash digest
SHA256 ccc3e1c7886f201e5111bc7d51ed8ff18a28816dd497e5489882f0306f3c7cb6
MD5 bcf37cf8ab0735e68c9744ac2c90a51a
BLAKE2b-256 c65857d3aa1c90a007b8e3ba4794f8751684904c6a565dab0463eabb65064454

See more details on using hashes here.

Provenance

The following attestation bundles were made for windy_api-0.1b3-py3-none-any.whl:

Publisher: cd.yml on stedonnelly/windy-api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page