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.1b1.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.1b1-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: windy_api-0.1b1.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.1b1.tar.gz
Algorithm Hash digest
SHA256 a62232b07fe87c4f9a562317da6745e9c90d730b40a6342eb8cadea4f0ed28c7
MD5 fdccc623c9909d0684e6b7dcfe7df97c
BLAKE2b-256 c930bfcc823edd2b13405089a4e952f9d6cd073499fe93970b0812e8cb5bd794

See more details on using hashes here.

Provenance

The following attestation bundles were made for windy_api-0.1b1.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.1b1-py3-none-any.whl.

File metadata

  • Download URL: windy_api-0.1b1-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.1b1-py3-none-any.whl
Algorithm Hash digest
SHA256 a1c1966f8cb5693fffcadae35097180937cbf72ed3a1810dee3a76fa41761b2b
MD5 33e8e2a268b70346687f677de6bb759b
BLAKE2b-256 1480cbdd1556858d857859f3f6979ae5afacf13c043317da66c97c8d6e6f42ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for windy_api-0.1b1-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