A Python API wrapper for the Wisconsin environmental mesonet API: Wisconet
Project description
Wiscopy
Python wrapper for Wisconet. Currently supporting API v1.
Main Features
- Easy to use interface: simply specify the stations, datetime range, and fields you want
- Data automatically formatted into a pandas DataFrame
- Fetch large amounts of data with transparent concurrency
- Automatically respect Wisconet rate limiting (20 requests / 20 seconds)
Install
From PyPI
base install
To install wiscopy from PyPI run
python -m pip install wiscopy
install with plotting library dependencies
python -m pip install 'wiscopy[plot]'
From conda-forge
To install and add wiscopy to a project from conda-forge with Pixi, from the project directory run
pixi add wiscopy
and to install into a particular conda environment with conda, in the activated environment run
conda install --channel conda-forge wiscopy
Usage
Fetch data from multiple stations, create a Dataframe, and plot.
import hvplot.pandas # needed for df.hvplot()
import holoviews as hv
from datetime import datetime
from wiscopy.interface import Wisconet
hv.extension('bokeh')
hv.plotting.bokeh.element.ElementPlot.active_tools = ["box_zoom"]
w = Wisconet()
df = w.get_data(
station_ids=["maple", "arlington"],
start_time="2025-01-01",
end_time="2025-02-01",
fields=["60min_air_temp_f_avg"]
)
df.hvplot(
y="value",
by="station_id",
title="60min_air_temp_f_avg",
ylabel=df.final_units.iloc[0],
grid=True,
rot=90,
)
More examples
see more examples in notebooks/examples.ipynb, or run
pixi run start
Wisconet
Current stations
Wisconet's list of current stations shows all active station names. You can get also that list of strings in wiscopy with:
from wiscopy.interface import Wisconet
w = Wisconet()
station_names = w.all_station_names()
Wisconet also provides a map of those stations with a dropdown menu including some of the currently available fields/variables. You can determine the fields available per station in wiscopy with:
from wiscopy.interface import Wisconet
w = Wisconet()
station_names = w.all_station_names()
this_station = w.get_station(station_names[0])
fields = this_station.get_field_names()
dev install instructions
1. install pixi
See pixi install guide.
2. check out from repo
git clone git@github.com:UW-Madison-DSI/wiscopy.git
3. install local editable version
cd wiscopy
pixi install
4. run tests
pixi run test
5. auto fix ruff linting issues
pixi run -e dev ruff check --fix .
6. run all pre-push checks
Confirm github workflows will pass before pushing: pixi lock file sync, format, lint, tests
pixi run pre-push
7. build package
pixi run build
8. run package build, install, and test in clean environment:
pixi run -e clean-room test-wheel
Contribute
Pull requests welcome! All pull requests must be formated, linted and pass tests
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 wiscopy-0.2.0.tar.gz.
File metadata
- Download URL: wiscopy-0.2.0.tar.gz
- Upload date:
- Size: 81.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e280a5207344b39285930274b54dbe1c1e6a0d7da1a1a93722e7e011434924f
|
|
| MD5 |
d0aac03c7cca0f5f04b0ab7ed2c7fb0b
|
|
| BLAKE2b-256 |
b9846134802897cd4ea54ca849cd03cd312f5822aa89ec823e99aba01f920fc8
|
Provenance
The following attestation bundles were made for wiscopy-0.2.0.tar.gz:
Publisher:
release.yml on UW-Madison-DSI/wiscopy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wiscopy-0.2.0.tar.gz -
Subject digest:
3e280a5207344b39285930274b54dbe1c1e6a0d7da1a1a93722e7e011434924f - Sigstore transparency entry: 1309162589
- Sigstore integration time:
-
Permalink:
UW-Madison-DSI/wiscopy@7d9c50542c3c85718713fb9cc509bf5416e75d2c -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/UW-Madison-DSI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7d9c50542c3c85718713fb9cc509bf5416e75d2c -
Trigger Event:
push
-
Statement type:
File details
Details for the file wiscopy-0.2.0-py3-none-any.whl.
File metadata
- Download URL: wiscopy-0.2.0-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5df0707417512d6f8f927dac7bb626b7c01608231c8ff5821b52b3d77b496293
|
|
| MD5 |
8d4ddb19b8a3aeeaa6f7bffbd6e59c5e
|
|
| BLAKE2b-256 |
1bbe61fbc9f9cc8dfec256c3f47bd1dd784b1b23020a49380a183fe032c2d07f
|
Provenance
The following attestation bundles were made for wiscopy-0.2.0-py3-none-any.whl:
Publisher:
release.yml on UW-Madison-DSI/wiscopy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wiscopy-0.2.0-py3-none-any.whl -
Subject digest:
5df0707417512d6f8f927dac7bb626b7c01608231c8ff5821b52b3d77b496293 - Sigstore transparency entry: 1309162679
- Sigstore integration time:
-
Permalink:
UW-Madison-DSI/wiscopy@7d9c50542c3c85718713fb9cc509bf5416e75d2c -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/UW-Madison-DSI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7d9c50542c3c85718713fb9cc509bf5416e75d2c -
Trigger Event:
push
-
Statement type: