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.

License

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

Metadata

Release files for arlmet 0.1.0a8

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.0a8
File Size Uploaded
arlmet-0.1.0a8.tar.gz 104.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for arlmet 0.1.0a8
File
arlmet-0.1.0a8-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
arlmet-0.1.0a8-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.28+ x86-64, Linux glibc 2.5+ x86-64 Details
arlmet-0.1.0a8-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
arlmet-0.1.0a8-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
arlmet-0.1.0a8-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
arlmet-0.1.0a8-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.28+ x86-64, Linux glibc 2.5+ x86-64 Details
arlmet-0.1.0a8-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
arlmet-0.1.0a8-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
arlmet-0.1.0a8-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
arlmet-0.1.0a8-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.0a8-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
arlmet-0.1.0a8-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.0a8.tar.gz

Download URL arlmet-0.1.0a8.tar.gz
Size 104.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e916c47289def7e09b6bc27ab47b21970da88840a99a5d656eb9ce1ad00eed4c
BLAKE2b-256 checksum
How to use checksums
45034eb186ecf494ee203b21abfa3802f6f86e38c509f6c98c4be306e62ce2b0
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp312-cp312-win_amd64.whl
Size 83.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
d9e7649442c9c169c390998ad25017e4d5a46c6e3c24a2a71c3b519b73c34f4d
BLAKE2b-256 checksum
How to use checksums
4ca46e89749b6785c254fab1cb169277dc447efc2dae656b1908ef02a0c016f7
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Size 90.4 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
91e68c5a71c01ce3b3aba3529637a57599dcc132703e3390dd14a8ca5bc5c073
BLAKE2b-256 checksum
How to use checksums
68568c0b97250a7966c94fe993d26752a5fa2a5475bfa40fdc38cde9a24fb065
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp312-cp312-macosx_11_0_arm64.whl
Size 81.2 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c36100a4af50458d4d8344fe8b0885597504e5f0eae7116466b477d16b25e8fc
BLAKE2b-256 checksum
How to use checksums
56256b61f1cec728fdc5a031f168adb40100799f89ae96fda32729dd613b58a4
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp312-cp312-macosx_10_13_x86_64.whl
Size 80.8 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
1724e15f327b646fa0522e11b98b033754e29d4a3715b9bdb8608d782a9ac922
BLAKE2b-256 checksum
How to use checksums
475a677e2b918ada43d5c486066a3aa50537d1a55778a12d88a264cf0e62d6f7
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp311-cp311-win_amd64.whl
Size 83.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
1e57c31521780b9f61609dad6bc89f8f4c49295c158ac4a36e1d15c52d4f4469
BLAKE2b-256 checksum
How to use checksums
11a48af5e34ffa5936f436f215e2f60081beec205432e2593f6f005fe5604987
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Size 90.0 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
f23f360f177cd55a16320df19e4ff36d62d54736c494535534a1a0525d6478b5
BLAKE2b-256 checksum
How to use checksums
cdf28d06d096addaec34a18687a9b08cd6d266169397213768356d417a28ea3e
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp311-cp311-macosx_11_0_arm64.whl
Size 81.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c544272f6e49b507e122c5473fc8d52d8f99904573601dd5fa3336be6dbf1269
BLAKE2b-256 checksum
How to use checksums
87e6d8ce947ad77903fd379b29c01af95a5255dd208ee0d32c4e9644a97c7443
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp311-cp311-macosx_10_9_x86_64.whl
Size 80.7 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
974237bdb544c28e22a34a48ce31a9ee7874d89fc1230b73ca7a5b0c0e321b40
BLAKE2b-256 checksum
How to use checksums
d30caf1575e56e5e3451e957ab24b9ceb2df53bd769e64caea37be312c9574ba
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp310-cp310-win_amd64.whl
Size 83.6 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
c5f67e54dcf6bfa498c0377aadc18fbc8f6195762b559dc68cde3b3c10927fcd
BLAKE2b-256 checksum
How to use checksums
ef7efcc9596f91b1e5a8c87adf59228d4abb7a00c128fecd8a3ea754ce0fb38a
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Size 89.9 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
2defbf63771c26c4791cc12debe090ebcdc342ed16269d5fb2a5ea699f95e8d0
BLAKE2b-256 checksum
How to use checksums
f650baff1e6afe4ef8754890e45e2a9cb79f51df844c62e2c2f5bbc57381cec5
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp310-cp310-macosx_11_0_arm64.whl
Size 81.2 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d2f90eb29093c62be3f58e82be3668bf2504f3b7e56198364f356160bb937155
BLAKE2b-256 checksum
How to use checksums
b40c7195119006e87bc137e32190b766f1fcec16dad5625133b075654999bb63
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 22, 2026.

Transparency log

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

Download URL arlmet-0.1.0a8-cp310-cp310-macosx_10_9_x86_64.whl
Size 80.7 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
a0f495c46c2c96e75564119143545da2ed3faea934727cb30b5decff6ba77776
BLAKE2b-256 checksum
How to use checksums
babe263a7a155483171a2e059336d705d4506d9fcf82adda91e6e08f9b5f2552
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 22, 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