Skip to main content

eeweather-epa is a frozen, unmodified snapshot of opendsm/eeweather master at commit 5dd1959 (2026-10-13), published so that epathermostat can depend on a released build of eeweather's redesigned API. Only packaging metadata differs (see NOTICE). It installs the same eeweather import package, so do not install it alongside eeweather. For anything else, use and report issues against upstream eeweather.

EEweather: Weather for energy-efficiency modeling

License PyPI Version


EEweather answers "what was the weather here?" — it matches locations to weather stations, fetches observed and typical-year data, and returns analysis-ready frames with warnings and provenance.

Documentation lives in docs/ (publishing to opendsm.energy).

Usage

from datetime import datetime, timezone

import eeweather

location = eeweather.WeatherLocation(34.2, -118.4)   # or .from_place("zcta", "91104")
df, warnings = location.load_data(
    datetime(2024, 1, 1, tzinfo=timezone.utc),
    datetime(2024, 12, 31, tzinfo=timezone.utc),
)
location.provenance     # which station served each variable, and how far away

saved = location.to_json()  # coordinates, sources, and the stations resolved at load
location = eeweather.WeatherLocation.from_json(saved)  # later loads (e.g. a reporting
                                                       # period) reuse the same stations

station = eeweather.WeatherStation("USW00023152")     # or by registry id
station = eeweather.WeatherStation.from_usaf("722880")  # or by historical ids
df, warnings = station.load_data(
    datetime(2024, 1, 1, tzinfo=timezone.utc),
    datetime(2024, 12, 31, tzinfo=timezone.utc),
    variables=("temperature", "relative_humidity"),
)
typical, _ = station.load_data(
    datetime(2024, 1, 1, tzinfo=timezone.utc),
    datetime(2024, 12, 31, tzinfo=timezone.utc),
    source="tmy3",                                    # typical-year data by explicit pin
)

Installation

$ pip install eeweather

Features

  • One loading verb over pluggable sources: GHCNh observations (NOAA), NASA POWER gridded meteorological and solar data, TMY3 (NREL) and CZ2010 (CEC) typical years; every load returns an aligned UTC frame plus data-quality warnings and per-source provenance
  • A packaged station registry with opaque ids and identifier translation (USAF, WBAN, ICAO), precomputed climate-zone assignments (IECC, Building America, California), ZCTA place codes, and per-source observation inventory
  • Station matching: ranked candidates for any point with zone, quality, distance, and availability filters (location.candidates()), plus data-sufficiency selection
  • Extension protocols for custom data: station-keyed feeds (e.g. a BigQuery table keyed by any translatable id system) and location-keyed gridded sources
  • A shared sqlite weather cache (eeweather.cache.set_path/clear)

Contributing

Dev installation:

$ python -m venv .venv
$ source .venv/bin/activate
$ pip install -e .[dev]

Run tests:

$ pytest

Run tests on multiple python versions:

$ tox

Or with Docker:

$ docker compose run --rm test

Registry updates

The packaged registry (GHCNh station list, observation inventory, quality ratings, identifier aliases) keeps itself current: when the live data is more than six months old, loading data starts a background update into the platform user data directory, and those copies take precedence over the wheel's in new processes. Updates download the ready-made files a scheduled workflow publishes to the repository's rolling release (CDN-served, so any number of clients costs NOAA nothing and no client rebuilds locally) and fall back to rebuilding directly from the live NOAA files when that channel is unreachable or stale, so they keep working even if the repository goes dormant. Concurrent workers on a machine coordinate through an atomic claim file (one attempt per day, however many race), and the update thread waits a minute before touching the network, so short-lived pipeline workers exit without generating traffic. Set EEWEATHER_AUTO_UPDATE=0 to suppress the traffic entirely, or manage it directly with:

$ python -m eeweather.registry.update           # refresh on demand
$ python -m eeweather.registry.update --clear   # revert to packaged data

A scheduled workflow runs the same refresh monthly and opens a pull request so the wheel's snapshot stays current; maintainers can rebuild all packaged data with python -m eeweather.build.

Notice Regarding CZ2010 Data

There may be conditions placed on their international commercial use. They can be used within the U.S. or for non-commercial international activities without restriction. The non-U.S. data cannot be redistributed for commercial purposes. Re-distribution of these data by others must provide this same notification.

See further explanation here.

Metadata

Release files for eeweather-epa 2026.10.13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eeweather-epa 2026.10.13
File Size Uploaded Provenance Actions
eeweather_epa-2026.10.13.tar.gz 7.8 MB With provenance Details for eeweather_epa-2026.10.13.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for eeweather-epa 2026.10.13
File Interpreter ABI Platform Actions
eeweather_epa-2026.10.13-py3-none-any.whl Python 3 none any Details for eeweather_epa-2026.10.13-py3-none-any.whl

Total release size: 14.5 MB

Release files / eeweather_epa-2026.10.13.tar.gz

Download URL eeweather_epa-2026.10.13.tar.gz
Size 7.8 MB
Tags Source
SHA-256 checksum
How to use checksums
202f622689cc5f467d6ca3e9ff1fd7ffcc6bf5391ab8c8c8af5fa6abbc7c2db3
BLAKE2b-256 checksum
How to use checksums
7cb8afba1e86868d70dc3f0381b81220d07dd9c19c5826d4ae9690ba243cfcd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / eeweather_epa-2026.10.13-py3-none-any.whl

Download URL eeweather_epa-2026.10.13-py3-none-any.whl
Size 6.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d51146ba7066ae0e87b51d0560db15d2d1991554756bb7764aa8dca59ebed4ac
BLAKE2b-256 checksum
How to use checksums
b9f7ea3e43819aeda486b1c06247607c08364e3849d8cf33ef34558123bec5dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Security for eeweather-epa 2026.10.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for eeweather_epa-2026.10.13.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2026.10.13 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page