Reads NOAA Integrated Surface Database (ISD) data.
python -m pip install isdThere is a simple command line interface.
The isd record command prints a single record in JSON format:
isd record tests/data/720538-00164-2021The Python API allows reading compressed and uncompressed ISD files:
from isd import Batch
batch = Batch.from_path("isd-file")
for record in batch:
print(record)Streaming is also supported:
import isd.io
with isd.io.open("isd-file") as records_iterator:
records = list(records_iterator)There is currently no parsing of the additional_data section, but all mandatory fields are parsed out into appropriately-typed fields on a Record.
This project uses uv for development. Install uv first:
curl -LsSf https://astral.sh/uv/install.sh | shThen install the development dependencies:
uv syncTo run the unit tests:
uv run pytestTo cut a new release of pyisd (assuming you have the appropriate permissions):
- Create a new branch, e.g.
release/v0.1.4. - Update pre-commit hooks:
pre-commit autoupdate - Update the CHANGELOG and pyproject.toml.
- Open a pull request with the changes.
- Merge the pull request once all required checks pass.
- Create an annotated tag, e.g.
git tag -a v0.1.4. - Push the annotated tag to github.
- Create a Github release. This will trigger a new PyPI release.