Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

arl-met

Tests Documentation Code Quality codecov PyPI version Python Version License: MIT DOI Ruff Pyrefly

Read, write, subset, and sample NOAA ARL meteorological files.

arl-met provides a Python-first interface to the ARL packed meteorology format used by HYSPLIT and related workflows. It supports:

  • low-level record-preserving reads and writes through File, RecordSet, and DataRecord
  • xarray Dataset reads and common-case writes through open_dataset() and write_dataset()
  • NOAA source fetching helpers for common ARL archives
  • crop-before-unpack subset extraction with extract_subset()
  • vertical helper functions such as pressure(), z_agl(), and z_msl()
  • point sampling with sample_points()
  • joining files with concat() and concat_by_time() (e.g. 6-hourly into daily)

Alpha status

This is an alpha release. The core read/write/subset APIs are usable, but the package is still tightening its high-level contracts and release surface.

Current strengths:

  • low-level ARL fidelity, including preservation of trailing DIF* records
  • xarray-native analysis workflow for common ARL files
  • direct subset extraction and point sampling
  • tested support for Python 3.10 through 3.12

Current limitations:

  • write_dataset() is intentionally conservative and targets the flat common-case Dataset contract
  • complex multi-record DIFF chains are not tested
  • WRF vertical flag 5 is not implemented

Installation

Install the core package:

pip install arlmet

Install the optional source-fetching dependencies:

pip install "arlmet[sources]"

For development:

git clone https://github.com/jmineau/arl-met.git
cd arl-met
uv sync --dev

Quick examples

Open an ARL file as a Dataset:

import arlmet

ds = arlmet.open_dataset("met.arl")
print(ds)

Modify a Dataset and write it back:

import arlmet

ds = arlmet.open_dataset("met.arl")
ds["TEMP"] = ds["TEMP"] - 273.15
ds["WWND"].attrs["diff"] = "DIFW"
arlmet.write_dataset(ds, "edited.arl")

Extract a subset without unpacking the full file first:

import arlmet

arlmet.extract_subset(
    "met.arl",
    "subset.arl",
    bbox=(-114.0, 39.0, -110.0, 42.0),
    levels=[0, 1, 2],
).close()  # returns the new file opened for reading

Join short files into longer ones (HYSPLIT accepts at most 12 met files per run):

import arlmet

# join a list of files into one (ordered by valid time)
arlmet.concat(["20240101_00_hrrr", "20240101_06_hrrr"], "20240101_hrrr").close()

# or batch a whole directory into daily files
arlmet.concat_by_time(
    "hrrr/", "daily/", freq="1D", pattern="*_hrrr", template="{time:%Y%m%d}_hrrr"
)

Use the low-level writer for irregular layouts:

import numpy as np
import pandas as pd
import arlmet

grid = arlmet.Grid(
    projection=arlmet.Projection(
        pole_lat=90.0,
        pole_lon=0.0,
        tangent_lat=1.0,
        tangent_lon=1.0,
        grid_size=0.0,
        orientation=0.0,
        cone_angle=0.0,
        sync_x=1.0,
        sync_y=1.0,
        sync_lat=-10.0,
        sync_lon=20.0,
    ),
    nx=20,
    ny=20,
)
vertical_axis = arlmet.VerticalAxis(flag=2, levels=[0.0, 1000.0])
time = pd.Timestamp("2024-07-18 00:00")

prss = np.ones((grid.ny, grid.nx), dtype=np.float32)
wwnd = np.ones((grid.ny, grid.nx), dtype=np.float32)

with arlmet.File("custom.arl", mode="w", source="TEST", grid=grid, vertical_axis=vertical_axis) as arl:
    rs = arl.create_recordset(time, forecast=0)
    rs.create_datarecord("PRSS", level=0, forecast=0, data=prss)
    rs.create_datarecord("WWND", level=1, forecast=0, data=wwnd, diff="DIFW")

Records are held in memory until the file is flushed or closed. When writing many time steps, call arl.flush() after filling each one so memory stays bounded by a single time step.

Resources

Documentation is available at https://jmineau.github.io/arl-met/

Useful ARL/HYSPLIT references:

Related project:

  • ARLreader, which focuses on GDAS1 files, while arl-met targets a broader ARL/xarray workflow.

Release notes

See CHANGELOG.md for release history.

Contributing

Contributions are welcome. See CONTRIBUTING.md for development setup and contribution guidelines.

Use of AI coding agents

This project is developed with the help of AI coding agents, directed and reviewed by the maintainer, who owns the design and the science.

License

This project is licensed under the MIT License. See LICENSE.

Metadata

Release files for arlmet 0.1.0a9

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

Source distribution (sdist)

Source distribution for arlmet 0.1.0a9
File Size Uploaded
arlmet-0.1.0a9.tar.gz 105.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for arlmet 0.1.0a9
File
arlmet-0.1.0a9-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
arlmet-0.1.0a9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
arlmet-0.1.0a9-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
arlmet-0.1.0a9-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
arlmet-0.1.0a9-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
arlmet-0.1.0a9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
arlmet-0.1.0a9-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
arlmet-0.1.0a9-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
arlmet-0.1.0a9-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
arlmet-0.1.0a9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
arlmet-0.1.0a9-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
arlmet-0.1.0a9-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details

Total release size: 1.1 MB

Release files / arlmet-0.1.0a9.tar.gz

Download URL arlmet-0.1.0a9.tar.gz
Size 105.8 kB
Tags Source
SHA-256 checksum
How to use checksums
20c35e3c4cb6776d44d4bb6d47b9f8d6d4d416d28f9be585d483a81f3781bab8
BLAKE2b-256 checksum
How to use checksums
b3853554776ab13ab4beafd2cb1b6a7793d06a41331c7a3527c0d49145cda37f
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp312-cp312-win_amd64.whl

Download URL arlmet-0.1.0a9-cp312-cp312-win_amd64.whl
Size 84.2 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
05b8f181e3f9aa2a6595ce02f1844a98831d0ad213e5aa5c209eccf164c0866e
BLAKE2b-256 checksum
How to use checksums
fc47a70144f3f3e0c9d12a04b1ff0898821fbc8b989e3015d3ae37d11f76beae
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl

Download URL arlmet-0.1.0a9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Size 91.0 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
3a9a70fadf48bb26c702c0b6a5da1b13f624e78dd9c94188c7206fab50e030d1
BLAKE2b-256 checksum
How to use checksums
a09c24756561dcaafde3d70d4e1350c54c2d58ca4fc91fcc3dc9d655de08c1b2
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp312-cp312-macosx_11_0_arm64.whl

Download URL arlmet-0.1.0a9-cp312-cp312-macosx_11_0_arm64.whl
Size 81.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5e1bd2d8c5702091127c85ad7112163a950e136f2b9e7bb7d5ed9949ff492fcf
BLAKE2b-256 checksum
How to use checksums
2f3238cb1aaa100c6e3e24cb06883e94a6a4dd4e747da34b49529a8a9b9b7e49
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp312-cp312-macosx_10_13_x86_64.whl

Download URL arlmet-0.1.0a9-cp312-cp312-macosx_10_13_x86_64.whl
Size 81.3 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
f39b2420462a342960596b8f0fcc886a8eef07ac2ec68807e2735a8ab7516265
BLAKE2b-256 checksum
How to use checksums
ac42705ce17aa1d8592f8eff9c0ce18d9b05bf149de5fafd96cb014bce1aba17
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp311-cp311-win_amd64.whl

Download URL arlmet-0.1.0a9-cp311-cp311-win_amd64.whl
Size 84.2 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
c209903549b954ddfb892cb64a284ad27b331ce664059a06746354c13d49fe30
BLAKE2b-256 checksum
How to use checksums
52d3400a5b9eef63b7a752ea2c8525aed03d067b2e98fbac37e2ba56f27e6fae
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl

Download URL arlmet-0.1.0a9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Size 90.5 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
a5f3a1a952dac392644249cf78171e332cf1c8ff885a0a9aa767f5324ee4402d
BLAKE2b-256 checksum
How to use checksums
1095ca6acd32ba8532c933021c644eece70c646710009de87196936ea4b79f86
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp311-cp311-macosx_11_0_arm64.whl

Download URL arlmet-0.1.0a9-cp311-cp311-macosx_11_0_arm64.whl
Size 81.7 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1e6d7cc5c39e340df02fe40ddffd9a909f347f36a4ffb9985cfaedd12241520a
BLAKE2b-256 checksum
How to use checksums
ea62664f86512db6b5347581662cafcee4b676cfad8e204f949e69189c7ee856
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp311-cp311-macosx_10_9_x86_64.whl

Download URL arlmet-0.1.0a9-cp311-cp311-macosx_10_9_x86_64.whl
Size 81.3 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
860f4353946933952fd60683a2a16e8ff73fb3669f5b6a055c3afecb415b44af
BLAKE2b-256 checksum
How to use checksums
39e58863ce8b1218d9bf82ecddf1f2a34a3c145a4fca8c844e163f3cef639b0b
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp310-cp310-win_amd64.whl

Download URL arlmet-0.1.0a9-cp310-cp310-win_amd64.whl
Size 84.2 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
f21877a210111faeb477d9c13cbff55c09a3bfa3f45ed51354c44a9404980012
BLAKE2b-256 checksum
How to use checksums
07e29763c48aa91d27849a59af6d2597c44f8ecce27596b5dc461ebfb0b490dc
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl

Download URL arlmet-0.1.0a9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Size 90.4 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
fd949e238688af872c31620a63a4e95660e80c45ee04704d686ec0cd288f94e6
BLAKE2b-256 checksum
How to use checksums
6f87b2aba7aa9a942c0f5b13b51bfd55a2ff024ffea87ab574ddc14cc43b2e4e
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp310-cp310-macosx_11_0_arm64.whl

Download URL arlmet-0.1.0a9-cp310-cp310-macosx_11_0_arm64.whl
Size 81.7 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dc8a3044c29eda517611f6d31aa13aa0087d7730cf3366d4d581b7e5b14cedb1
BLAKE2b-256 checksum
How to use checksums
ce92ba4697560db3f103150bcb4b34ae2c57e78ce73e1312dc634864708b952d
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 Sep 30, 2026.

Transparency log

Release files / arlmet-0.1.0a9-cp310-cp310-macosx_10_9_x86_64.whl

Download URL arlmet-0.1.0a9-cp310-cp310-macosx_10_9_x86_64.whl
Size 81.3 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
4380525bf6d2829331815b0d257e07148449c5ed390e3c3e9b995333402e9217
BLAKE2b-256 checksum
How to use checksums
9756a123cfd44feae30218f157756aaedd79f020f17ca6a95300488f7a8e71a0
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 Sep 30, 2026.

Transparency log
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