metrust 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- metrust-0.1.0/.github/workflows/ci.yml +50 -0
- metrust-0.1.0/.github/workflows/release.yml +127 -0
- metrust-0.1.0/.gitignore +10 -0
- metrust-0.1.0/Cargo.lock +1721 -0
- metrust-0.1.0/Cargo.toml +23 -0
- metrust-0.1.0/PKG-INFO +7 -0
- metrust-0.1.0/README.md +191 -0
- metrust-0.1.0/VERIFICATION.md +198 -0
- metrust-0.1.0/crates/metrust/Cargo.toml +19 -0
- metrust-0.1.0/crates/metrust/src/calc/atmo.rs +555 -0
- metrust-0.1.0/crates/metrust/src/calc/kinematics.rs +1588 -0
- metrust-0.1.0/crates/metrust/src/calc/mod.rs +85 -0
- metrust-0.1.0/crates/metrust/src/calc/severe.rs +388 -0
- metrust-0.1.0/crates/metrust/src/calc/smooth.rs +1154 -0
- metrust-0.1.0/crates/metrust/src/calc/thermo.rs +2067 -0
- metrust-0.1.0/crates/metrust/src/calc/utils.rs +381 -0
- metrust-0.1.0/crates/metrust/src/calc/wind.rs +612 -0
- metrust-0.1.0/crates/metrust/src/constants.rs +317 -0
- metrust-0.1.0/crates/metrust/src/interpolate/mod.rs +1123 -0
- metrust-0.1.0/crates/metrust/src/io/level3.rs +590 -0
- metrust-0.1.0/crates/metrust/src/io/metar.rs +497 -0
- metrust-0.1.0/crates/metrust/src/io/mod.rs +57 -0
- metrust-0.1.0/crates/metrust/src/io/station.rs +260 -0
- metrust-0.1.0/crates/metrust/src/lib.rs +22 -0
- metrust-0.1.0/crates/metrust/src/plots/mod.rs +54 -0
- metrust-0.1.0/crates/metrust/src/projections.rs +29 -0
- metrust-0.1.0/crates/metrust/src/units.rs +686 -0
- metrust-0.1.0/crates/rustmet-core/Cargo.toml +47 -0
- metrust-0.1.0/crates/rustmet-core/src/composite.rs +1 -0
- metrust-0.1.0/crates/rustmet-core/src/download/cache.rs +265 -0
- metrust-0.1.0/crates/rustmet-core/src/download/catalog.rs +346 -0
- metrust-0.1.0/crates/rustmet-core/src/download/client.rs +360 -0
- metrust-0.1.0/crates/rustmet-core/src/download/fallback.rs +197 -0
- metrust-0.1.0/crates/rustmet-core/src/download/idx.rs +672 -0
- metrust-0.1.0/crates/rustmet-core/src/download/mod.rs +17 -0
- metrust-0.1.0/crates/rustmet-core/src/download/sources.rs +399 -0
- metrust-0.1.0/crates/rustmet-core/src/download/streaming.rs +160 -0
- metrust-0.1.0/crates/rustmet-core/src/dynamics.rs +1 -0
- metrust-0.1.0/crates/rustmet-core/src/error.rs +120 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/grid.rs +659 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/mod.rs +25 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/ops.rs +1423 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/parser.rs +824 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/search.rs +322 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/streaming.rs +443 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/tables.rs +1874 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/tests.rs +916 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/unpack.rs +1133 -0
- metrust-0.1.0/crates/rustmet-core/src/grib2/writer.rs +1298 -0
- metrust-0.1.0/crates/rustmet-core/src/gridmath.rs +1 -0
- metrust-0.1.0/crates/rustmet-core/src/lib.rs +48 -0
- metrust-0.1.0/crates/rustmet-core/src/metfuncs.rs +1 -0
- metrust-0.1.0/crates/rustmet-core/src/models/cfs.rs +126 -0
- metrust-0.1.0/crates/rustmet-core/src/models/ecmwf.rs +109 -0
- metrust-0.1.0/crates/rustmet-core/src/models/era5.rs +136 -0
- metrust-0.1.0/crates/rustmet-core/src/models/gefs.rs +229 -0
- metrust-0.1.0/crates/rustmet-core/src/models/gfs.rs +113 -0
- metrust-0.1.0/crates/rustmet-core/src/models/href.rs +119 -0
- metrust-0.1.0/crates/rustmet-core/src/models/hrrr.rs +156 -0
- metrust-0.1.0/crates/rustmet-core/src/models/hrrr_ak.rs +123 -0
- metrust-0.1.0/crates/rustmet-core/src/models/latest.rs +94 -0
- metrust-0.1.0/crates/rustmet-core/src/models/mod.rs +39 -0
- metrust-0.1.0/crates/rustmet-core/src/models/mrms.rs +163 -0
- metrust-0.1.0/crates/rustmet-core/src/models/nam.rs +99 -0
- metrust-0.1.0/crates/rustmet-core/src/models/nbm.rs +118 -0
- metrust-0.1.0/crates/rustmet-core/src/models/rap.rs +95 -0
- metrust-0.1.0/crates/rustmet-core/src/models/rrfs.rs +104 -0
- metrust-0.1.0/crates/rustmet-core/src/models/rtma.rs +106 -0
- metrust-0.1.0/crates/rustmet-core/src/models/sref.rs +158 -0
- metrust-0.1.0/crates/rustmet-core/src/models/urma.rs +107 -0
- metrust-0.1.0/crates/rustmet-core/src/models/wpc.rs +114 -0
- metrust-0.1.0/crates/rustmet-core/src/products.rs +231 -0
- metrust-0.1.0/crates/rustmet-core/src/projection.rs +211 -0
- metrust-0.1.0/crates/rustmet-core/src/regrid.rs +1 -0
- metrust-0.1.0/crates/rustmet-core/src/render/ansi.rs +513 -0
- metrust-0.1.0/crates/rustmet-core/src/render/colormap.rs +682 -0
- metrust-0.1.0/crates/rustmet-core/src/render/contour.rs +469 -0
- metrust-0.1.0/crates/rustmet-core/src/render/cross_section.rs +369 -0
- metrust-0.1.0/crates/rustmet-core/src/render/encode.rs +109 -0
- metrust-0.1.0/crates/rustmet-core/src/render/filled_contour.rs +233 -0
- metrust-0.1.0/crates/rustmet-core/src/render/hodograph.rs +437 -0
- metrust-0.1.0/crates/rustmet-core/src/render/mod.rs +67 -0
- metrust-0.1.0/crates/rustmet-core/src/render/overlay.rs +520 -0
- metrust-0.1.0/crates/rustmet-core/src/render/raster.rs +160 -0
- metrust-0.1.0/crates/rustmet-core/src/render/skewt.rs +821 -0
- metrust-0.1.0/crates/rustmet-core/src/render/station.rs +1035 -0
- metrust-0.1.0/crates/wx-field/Cargo.toml +10 -0
- metrust-0.1.0/crates/wx-field/src/error.rs +52 -0
- metrust-0.1.0/crates/wx-field/src/field.rs +161 -0
- metrust-0.1.0/crates/wx-field/src/lib.rs +27 -0
- metrust-0.1.0/crates/wx-field/src/meta.rs +142 -0
- metrust-0.1.0/crates/wx-field/src/projection.rs +736 -0
- metrust-0.1.0/crates/wx-field/src/radial.rs +114 -0
- metrust-0.1.0/crates/wx-field/src/site.rs +47 -0
- metrust-0.1.0/crates/wx-field/src/sounding.rs +111 -0
- metrust-0.1.0/crates/wx-field/src/time.rs +103 -0
- metrust-0.1.0/crates/wx-math/Cargo.toml +11 -0
- metrust-0.1.0/crates/wx-math/src/composite.rs +1476 -0
- metrust-0.1.0/crates/wx-math/src/dynamics.rs +1107 -0
- metrust-0.1.0/crates/wx-math/src/gridmath.rs +747 -0
- metrust-0.1.0/crates/wx-math/src/lib.rs +10 -0
- metrust-0.1.0/crates/wx-math/src/regrid.rs +1232 -0
- metrust-0.1.0/crates/wx-math/src/thermo.rs +2998 -0
- metrust-0.1.0/crates/wx-radar/Cargo.toml +16 -0
- metrust-0.1.0/crates/wx-radar/src/cells.rs +619 -0
- metrust-0.1.0/crates/wx-radar/src/color_table.rs +123 -0
- metrust-0.1.0/crates/wx-radar/src/derived.rs +100 -0
- metrust-0.1.0/crates/wx-radar/src/detection.rs +93 -0
- metrust-0.1.0/crates/wx-radar/src/level2.rs +566 -0
- metrust-0.1.0/crates/wx-radar/src/lib.rs +12 -0
- metrust-0.1.0/crates/wx-radar/src/products.rs +187 -0
- metrust-0.1.0/crates/wx-radar/src/render.rs +153 -0
- metrust-0.1.0/crates/wx-radar/src/sites.rs +229 -0
- metrust-0.1.0/pyproject.toml +15 -0
- metrust-0.1.0/python/metrust/__init__.py +8 -0
- metrust-0.1.0/python/metrust/calc/__init__.py +2107 -0
- metrust-0.1.0/python/metrust/constants/__init__.py +37 -0
- metrust-0.1.0/python/metrust/interpolate/__init__.py +428 -0
- metrust-0.1.0/python/metrust/io/__init__.py +59 -0
- metrust-0.1.0/python/metrust/plots/__init__.py +18 -0
- metrust-0.1.0/python/metrust/units.py +76 -0
- metrust-0.1.0/src/lib.rs +44 -0
- metrust-0.1.0/src/py_atmo.rs +77 -0
- metrust-0.1.0/src/py_constants.rs +75 -0
- metrust-0.1.0/src/py_interpolate.rs +751 -0
- metrust-0.1.0/src/py_io.rs +422 -0
- metrust-0.1.0/src/py_kinematics.rs +733 -0
- metrust-0.1.0/src/py_severe.rs +740 -0
- metrust-0.1.0/src/py_smooth.rs +281 -0
- metrust-0.1.0/src/py_thermo.rs +990 -0
- metrust-0.1.0/src/py_utils.rs +81 -0
- metrust-0.1.0/src/py_wind.rs +136 -0
- metrust-0.1.0/tests/api_audit_calc.md +296 -0
- metrust-0.1.0/tests/api_audit_other.md +227 -0
- metrust-0.1.0/tests/benchmark.py +346 -0
- metrust-0.1.0/tests/verify_constants.py +134 -0
- metrust-0.1.0/tests/verify_edge_cases.py +661 -0
- metrust-0.1.0/tests/verify_kinematics.py +295 -0
- metrust-0.1.0/tests/verify_severe_atmo.py +461 -0
- metrust-0.1.0/tests/verify_smooth_interp.py +567 -0
- metrust-0.1.0/tests/verify_thermo.py +421 -0
- metrust-0.1.0/tests/verify_units.py +188 -0
- metrust-0.1.0/tests/verify_wind.py +344 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master, main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
test:
|
|
10
|
+
runs-on: ${{ matrix.os }}
|
|
11
|
+
strategy:
|
|
12
|
+
matrix:
|
|
13
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
14
|
+
python-version: ['3.10', '3.12']
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: ${{ matrix.python-version }}
|
|
20
|
+
- name: Create virtualenv
|
|
21
|
+
run: python -m venv .venv
|
|
22
|
+
- name: Activate venv and install deps (Unix)
|
|
23
|
+
if: runner.os != 'Windows'
|
|
24
|
+
run: |
|
|
25
|
+
source .venv/bin/activate
|
|
26
|
+
pip install numpy pint pytest
|
|
27
|
+
- name: Activate venv and install deps (Windows)
|
|
28
|
+
if: runner.os == 'Windows'
|
|
29
|
+
run: |
|
|
30
|
+
.venv\Scripts\activate
|
|
31
|
+
pip install numpy pint pytest
|
|
32
|
+
- name: Install Rust
|
|
33
|
+
uses: dtolnay/rust-toolchain@stable
|
|
34
|
+
- name: Build and install
|
|
35
|
+
uses: PyO3/maturin-action@v1
|
|
36
|
+
with:
|
|
37
|
+
command: develop
|
|
38
|
+
args: --release
|
|
39
|
+
- name: Run Rust tests
|
|
40
|
+
run: cargo test --workspace
|
|
41
|
+
- name: Test Python import (Unix)
|
|
42
|
+
if: runner.os != 'Windows'
|
|
43
|
+
run: |
|
|
44
|
+
source .venv/bin/activate
|
|
45
|
+
python -c "from metrust.calc import potential_temperature; from metrust.units import units; print('OK:', potential_temperature(1000 * units.hPa, 25 * units.degC))"
|
|
46
|
+
- name: Test Python import (Windows)
|
|
47
|
+
if: runner.os == 'Windows'
|
|
48
|
+
run: |
|
|
49
|
+
.venv\Scripts\activate
|
|
50
|
+
python -c "from metrust.calc import potential_temperature; from metrust.units import units; print('OK:', potential_temperature(1000 * units.hPa, 25 * units.degC))"
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
name: Build and publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
# Build wheels for Linux
|
|
14
|
+
linux:
|
|
15
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
platform:
|
|
20
|
+
- runner: ubuntu-22.04
|
|
21
|
+
target: x86_64
|
|
22
|
+
- runner: ubuntu-22.04
|
|
23
|
+
target: aarch64
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
- uses: actions/setup-python@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: '3.12'
|
|
29
|
+
- name: Build wheels
|
|
30
|
+
uses: PyO3/maturin-action@v1
|
|
31
|
+
with:
|
|
32
|
+
target: ${{ matrix.platform.target }}
|
|
33
|
+
args: --release --out dist -i python3.10 python3.11 python3.12 python3.13
|
|
34
|
+
manylinux: auto
|
|
35
|
+
- name: Upload wheels
|
|
36
|
+
uses: actions/upload-artifact@v4
|
|
37
|
+
with:
|
|
38
|
+
name: wheels-linux-${{ matrix.platform.target }}
|
|
39
|
+
path: dist
|
|
40
|
+
|
|
41
|
+
# Build wheels for macOS
|
|
42
|
+
macos:
|
|
43
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
44
|
+
strategy:
|
|
45
|
+
fail-fast: false
|
|
46
|
+
matrix:
|
|
47
|
+
platform:
|
|
48
|
+
- runner: macos-14
|
|
49
|
+
target: x86_64
|
|
50
|
+
- runner: macos-14
|
|
51
|
+
target: aarch64
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v4
|
|
54
|
+
- uses: actions/setup-python@v5
|
|
55
|
+
with:
|
|
56
|
+
python-version: '3.12'
|
|
57
|
+
- name: Build wheels
|
|
58
|
+
uses: PyO3/maturin-action@v1
|
|
59
|
+
with:
|
|
60
|
+
target: ${{ matrix.platform.target }}
|
|
61
|
+
args: --release --out dist
|
|
62
|
+
- name: Upload wheels
|
|
63
|
+
uses: actions/upload-artifact@v4
|
|
64
|
+
with:
|
|
65
|
+
name: wheels-macos-${{ matrix.platform.target }}
|
|
66
|
+
path: dist
|
|
67
|
+
|
|
68
|
+
# Build wheels for Windows
|
|
69
|
+
windows:
|
|
70
|
+
runs-on: windows-latest
|
|
71
|
+
strategy:
|
|
72
|
+
matrix:
|
|
73
|
+
target: [x64]
|
|
74
|
+
steps:
|
|
75
|
+
- uses: actions/checkout@v4
|
|
76
|
+
- uses: actions/setup-python@v5
|
|
77
|
+
with:
|
|
78
|
+
python-version: '3.12'
|
|
79
|
+
architecture: ${{ matrix.target }}
|
|
80
|
+
- name: Build wheels
|
|
81
|
+
uses: PyO3/maturin-action@v1
|
|
82
|
+
with:
|
|
83
|
+
args: --release --out dist
|
|
84
|
+
- name: Upload wheels
|
|
85
|
+
uses: actions/upload-artifact@v4
|
|
86
|
+
with:
|
|
87
|
+
name: wheels-windows-${{ matrix.target }}
|
|
88
|
+
path: dist
|
|
89
|
+
|
|
90
|
+
# Build source distribution
|
|
91
|
+
sdist:
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
steps:
|
|
94
|
+
- uses: actions/checkout@v4
|
|
95
|
+
- name: Build sdist
|
|
96
|
+
uses: PyO3/maturin-action@v1
|
|
97
|
+
with:
|
|
98
|
+
command: sdist
|
|
99
|
+
args: --out dist
|
|
100
|
+
- name: Upload sdist
|
|
101
|
+
uses: actions/upload-artifact@v4
|
|
102
|
+
with:
|
|
103
|
+
name: wheels-sdist
|
|
104
|
+
path: dist
|
|
105
|
+
|
|
106
|
+
# Publish to PyPI
|
|
107
|
+
publish:
|
|
108
|
+
name: Publish to PyPI
|
|
109
|
+
runs-on: ubuntu-latest
|
|
110
|
+
needs: [linux, macos, windows, sdist]
|
|
111
|
+
environment:
|
|
112
|
+
name: pypi
|
|
113
|
+
url: https://pypi.org/p/metrust
|
|
114
|
+
permissions:
|
|
115
|
+
id-token: write # trusted publishing
|
|
116
|
+
steps:
|
|
117
|
+
- name: Download all wheels
|
|
118
|
+
uses: actions/download-artifact@v4
|
|
119
|
+
with:
|
|
120
|
+
pattern: wheels-*
|
|
121
|
+
merge-multiple: true
|
|
122
|
+
path: dist
|
|
123
|
+
- name: Publish to PyPI
|
|
124
|
+
uses: PyO3/maturin-action@v1
|
|
125
|
+
with:
|
|
126
|
+
command: upload
|
|
127
|
+
args: --non-interactive --skip-existing dist/*
|