TeamOverbyeWeather
Python client for the Team Overbye Weather Data API at Texas A&M University —
ERA5 reanalysis, HRRR history and forecasts, and NOAA/GFS forecasts, as
PowerWorld .pww files.
Download, crop to a region, and crop in time, in one call.
Installation
pip install TeamOverbyeWeather
Python 3.10 or newer. No credentials needed.
Quick start
from TeamOverbyeWeather import WeatherClient
client = WeatherClient()
# What is available?
client.sources() # ['era5', 'hrrr', 'noaa']
client.types("hrrr") # ['archive', 'current', 'forecast', ...]
client.list("hrrr", "hourly_current") # ['2026-07-21', '2026-07-20', ...]
# Download, cropped to Texas and to a six-hour window
client.download(
"hrrr",
type="hourly_current",
dates="2026-07-21",
region="TX",
time_start="2026-07-21T06:00",
time_end="2026-07-21T18:00",
dest="./data",
)
Cropping happens server-side, so only what you asked for crosses the network — a Texas six-hour NOAA slice is 240 KB instead of the 120 MB full file.
One file is written per date key, already cropped, ready to open in PowerWorld.
Selecting a region
Use exactly one of:
client.download(..., region="TX") # one state
client.download(..., region=["TX", "OK", "NM"]) # union bounding box
client.download(..., iso="ERCOT") # ISO zone
client.download(..., bbox=(33.0, -100.0, 30.0, -96.0)) # lat_max, lon_min, lat_min, lon_max
List valid ids with client.region_ids("states") and client.region_ids("iso").
Multiple states crop to the union rectangle, not to the state outlines.
Selecting a time window
client.download(..., time_start="2026-07-21T06:00", time_end="2026-07-21T18:00")
client.download(..., time_start="2026-07-21T06:00") # to the end of the file
client.download(..., time_end="2026-07-21T18:00") # from the start
Times are UTC and both bounds are inclusive. datetime objects work too.
Data sources
| Source | Types | Date key |
|---|---|---|
era5 |
historical, texas |
YYYY-Qn |
hrrr |
current, archive (15-min), hourly_current, hourly_archive, forecast |
YYYY-MM-DD, YYYY-MM, YYYY-MM-DDTHHZ |
noaa |
recent, archive |
YYYY-MM-DDTHHZ |
extreme |
events |
YYYY-MM-DD_Title_Zone |
Extreme temperature events
62 curated historical events (1899–2023) — the three hottest and three coldest per ISO zone, plus notable scenarios like ERCOT's 2011 rolling outages. Each comes with an animation.
client.extreme.zones() # ISO zones with events
client.extreme.events("Texas") # events in a zone, newest first
client.extreme.find("uri") # search by title
event = client.extreme.find("uri")[0]
client.extreme.download(event["key"], region_ids=["TX"], region_layer="states",
time_start="2021-02-15T00:00", dest="./data")
client.extreme.video(event["key"], dest="./data") # the .mp4 animation
client.extreme.coverage("Texas", dest="./data") # zone coverage map
Always take date keys from client.list(source, type) — formats differ per
source, and NOAA recent / archive are separate folders rather than a date
split.
Reading the data
from TeamOverbyeWeather import pww_io
header, stations, arr = pww_io.read_pww(open(path, "rb").read())
arr.shape # (time, variable, latitude, longitude)
255 marks missing data. Latitude ascends, longitude descends.
Documentation
Full guides and API reference: https://chunsikpark.github.io/TeamOverbyeWeather/
Point-and-click alternative: https://weather-data-gui.pages.dev
demo.ipynb in this repository is a runnable walkthrough of everything above.
Problems or questions
Open an issue
— bugs and data questions are both welcome. For bugs, include your version
(TeamOverbyeWeather.__version__), the code you ran, and the full traceback.
Two things worth checking first:
AttributeError: 'WeatherClient' object has no attribute ...almost always means an old version. Runpip install --upgrade TeamOverbyeWeather, then restart your kernel — Python will not replace a module that is already imported, so upgrading mid-session appears to do nothing.- A source showing no data may genuinely be empty. Check
client.list(source, type), and tryclient.catalog(refresh=True)— the catalog is cached for 30 minutes.
Development
git clone https://github.com/ChunSikPark/TeamOverbyeWeather.git
cd TeamOverbyeWeather
pip install -e .
Point the client at a local backend with
WeatherClient(base_url="http://localhost:8000").
The backend and web portal live in a separate repository; this one holds the Python package only.
License
MIT
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 teamoverbyeweather-0.4.2.tar.gz.
File metadata
- Download URL: teamoverbyeweather-0.4.2.tar.gz
- Upload date:
- Size: 10.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72b1bd174ca42331b6ad8bfab748cab1a20aaf5ce586e7760866d027feeb2b37
|
|
| MD5 |
a7b6f278ca99def96245df5e83937779
|
|
| BLAKE2b-256 |
19697ae7085a012d9a4e86eef4eaaad3cfdcf1e759aba024f24683dd4d6e023a
|
File details
Details for the file teamoverbyeweather-0.4.2-py3-none-any.whl.
File metadata
- Download URL: teamoverbyeweather-0.4.2-py3-none-any.whl
- Upload date:
- Size: 26.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf3091a2c382093d86bf0b0c652a0e983bee584550e87e7a793bb2fca0e82f40
|
|
| MD5 |
ec6d74a76d8624a34533ba8db40eaf5a
|
|
| BLAKE2b-256 |
630118a55ccfa6f975929ead59650b871acbbedca8f6fcf458acfa3f2311ee92
|