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.
Files changed (143) hide show
  1. metrust-0.1.0/.github/workflows/ci.yml +50 -0
  2. metrust-0.1.0/.github/workflows/release.yml +127 -0
  3. metrust-0.1.0/.gitignore +10 -0
  4. metrust-0.1.0/Cargo.lock +1721 -0
  5. metrust-0.1.0/Cargo.toml +23 -0
  6. metrust-0.1.0/PKG-INFO +7 -0
  7. metrust-0.1.0/README.md +191 -0
  8. metrust-0.1.0/VERIFICATION.md +198 -0
  9. metrust-0.1.0/crates/metrust/Cargo.toml +19 -0
  10. metrust-0.1.0/crates/metrust/src/calc/atmo.rs +555 -0
  11. metrust-0.1.0/crates/metrust/src/calc/kinematics.rs +1588 -0
  12. metrust-0.1.0/crates/metrust/src/calc/mod.rs +85 -0
  13. metrust-0.1.0/crates/metrust/src/calc/severe.rs +388 -0
  14. metrust-0.1.0/crates/metrust/src/calc/smooth.rs +1154 -0
  15. metrust-0.1.0/crates/metrust/src/calc/thermo.rs +2067 -0
  16. metrust-0.1.0/crates/metrust/src/calc/utils.rs +381 -0
  17. metrust-0.1.0/crates/metrust/src/calc/wind.rs +612 -0
  18. metrust-0.1.0/crates/metrust/src/constants.rs +317 -0
  19. metrust-0.1.0/crates/metrust/src/interpolate/mod.rs +1123 -0
  20. metrust-0.1.0/crates/metrust/src/io/level3.rs +590 -0
  21. metrust-0.1.0/crates/metrust/src/io/metar.rs +497 -0
  22. metrust-0.1.0/crates/metrust/src/io/mod.rs +57 -0
  23. metrust-0.1.0/crates/metrust/src/io/station.rs +260 -0
  24. metrust-0.1.0/crates/metrust/src/lib.rs +22 -0
  25. metrust-0.1.0/crates/metrust/src/plots/mod.rs +54 -0
  26. metrust-0.1.0/crates/metrust/src/projections.rs +29 -0
  27. metrust-0.1.0/crates/metrust/src/units.rs +686 -0
  28. metrust-0.1.0/crates/rustmet-core/Cargo.toml +47 -0
  29. metrust-0.1.0/crates/rustmet-core/src/composite.rs +1 -0
  30. metrust-0.1.0/crates/rustmet-core/src/download/cache.rs +265 -0
  31. metrust-0.1.0/crates/rustmet-core/src/download/catalog.rs +346 -0
  32. metrust-0.1.0/crates/rustmet-core/src/download/client.rs +360 -0
  33. metrust-0.1.0/crates/rustmet-core/src/download/fallback.rs +197 -0
  34. metrust-0.1.0/crates/rustmet-core/src/download/idx.rs +672 -0
  35. metrust-0.1.0/crates/rustmet-core/src/download/mod.rs +17 -0
  36. metrust-0.1.0/crates/rustmet-core/src/download/sources.rs +399 -0
  37. metrust-0.1.0/crates/rustmet-core/src/download/streaming.rs +160 -0
  38. metrust-0.1.0/crates/rustmet-core/src/dynamics.rs +1 -0
  39. metrust-0.1.0/crates/rustmet-core/src/error.rs +120 -0
  40. metrust-0.1.0/crates/rustmet-core/src/grib2/grid.rs +659 -0
  41. metrust-0.1.0/crates/rustmet-core/src/grib2/mod.rs +25 -0
  42. metrust-0.1.0/crates/rustmet-core/src/grib2/ops.rs +1423 -0
  43. metrust-0.1.0/crates/rustmet-core/src/grib2/parser.rs +824 -0
  44. metrust-0.1.0/crates/rustmet-core/src/grib2/search.rs +322 -0
  45. metrust-0.1.0/crates/rustmet-core/src/grib2/streaming.rs +443 -0
  46. metrust-0.1.0/crates/rustmet-core/src/grib2/tables.rs +1874 -0
  47. metrust-0.1.0/crates/rustmet-core/src/grib2/tests.rs +916 -0
  48. metrust-0.1.0/crates/rustmet-core/src/grib2/unpack.rs +1133 -0
  49. metrust-0.1.0/crates/rustmet-core/src/grib2/writer.rs +1298 -0
  50. metrust-0.1.0/crates/rustmet-core/src/gridmath.rs +1 -0
  51. metrust-0.1.0/crates/rustmet-core/src/lib.rs +48 -0
  52. metrust-0.1.0/crates/rustmet-core/src/metfuncs.rs +1 -0
  53. metrust-0.1.0/crates/rustmet-core/src/models/cfs.rs +126 -0
  54. metrust-0.1.0/crates/rustmet-core/src/models/ecmwf.rs +109 -0
  55. metrust-0.1.0/crates/rustmet-core/src/models/era5.rs +136 -0
  56. metrust-0.1.0/crates/rustmet-core/src/models/gefs.rs +229 -0
  57. metrust-0.1.0/crates/rustmet-core/src/models/gfs.rs +113 -0
  58. metrust-0.1.0/crates/rustmet-core/src/models/href.rs +119 -0
  59. metrust-0.1.0/crates/rustmet-core/src/models/hrrr.rs +156 -0
  60. metrust-0.1.0/crates/rustmet-core/src/models/hrrr_ak.rs +123 -0
  61. metrust-0.1.0/crates/rustmet-core/src/models/latest.rs +94 -0
  62. metrust-0.1.0/crates/rustmet-core/src/models/mod.rs +39 -0
  63. metrust-0.1.0/crates/rustmet-core/src/models/mrms.rs +163 -0
  64. metrust-0.1.0/crates/rustmet-core/src/models/nam.rs +99 -0
  65. metrust-0.1.0/crates/rustmet-core/src/models/nbm.rs +118 -0
  66. metrust-0.1.0/crates/rustmet-core/src/models/rap.rs +95 -0
  67. metrust-0.1.0/crates/rustmet-core/src/models/rrfs.rs +104 -0
  68. metrust-0.1.0/crates/rustmet-core/src/models/rtma.rs +106 -0
  69. metrust-0.1.0/crates/rustmet-core/src/models/sref.rs +158 -0
  70. metrust-0.1.0/crates/rustmet-core/src/models/urma.rs +107 -0
  71. metrust-0.1.0/crates/rustmet-core/src/models/wpc.rs +114 -0
  72. metrust-0.1.0/crates/rustmet-core/src/products.rs +231 -0
  73. metrust-0.1.0/crates/rustmet-core/src/projection.rs +211 -0
  74. metrust-0.1.0/crates/rustmet-core/src/regrid.rs +1 -0
  75. metrust-0.1.0/crates/rustmet-core/src/render/ansi.rs +513 -0
  76. metrust-0.1.0/crates/rustmet-core/src/render/colormap.rs +682 -0
  77. metrust-0.1.0/crates/rustmet-core/src/render/contour.rs +469 -0
  78. metrust-0.1.0/crates/rustmet-core/src/render/cross_section.rs +369 -0
  79. metrust-0.1.0/crates/rustmet-core/src/render/encode.rs +109 -0
  80. metrust-0.1.0/crates/rustmet-core/src/render/filled_contour.rs +233 -0
  81. metrust-0.1.0/crates/rustmet-core/src/render/hodograph.rs +437 -0
  82. metrust-0.1.0/crates/rustmet-core/src/render/mod.rs +67 -0
  83. metrust-0.1.0/crates/rustmet-core/src/render/overlay.rs +520 -0
  84. metrust-0.1.0/crates/rustmet-core/src/render/raster.rs +160 -0
  85. metrust-0.1.0/crates/rustmet-core/src/render/skewt.rs +821 -0
  86. metrust-0.1.0/crates/rustmet-core/src/render/station.rs +1035 -0
  87. metrust-0.1.0/crates/wx-field/Cargo.toml +10 -0
  88. metrust-0.1.0/crates/wx-field/src/error.rs +52 -0
  89. metrust-0.1.0/crates/wx-field/src/field.rs +161 -0
  90. metrust-0.1.0/crates/wx-field/src/lib.rs +27 -0
  91. metrust-0.1.0/crates/wx-field/src/meta.rs +142 -0
  92. metrust-0.1.0/crates/wx-field/src/projection.rs +736 -0
  93. metrust-0.1.0/crates/wx-field/src/radial.rs +114 -0
  94. metrust-0.1.0/crates/wx-field/src/site.rs +47 -0
  95. metrust-0.1.0/crates/wx-field/src/sounding.rs +111 -0
  96. metrust-0.1.0/crates/wx-field/src/time.rs +103 -0
  97. metrust-0.1.0/crates/wx-math/Cargo.toml +11 -0
  98. metrust-0.1.0/crates/wx-math/src/composite.rs +1476 -0
  99. metrust-0.1.0/crates/wx-math/src/dynamics.rs +1107 -0
  100. metrust-0.1.0/crates/wx-math/src/gridmath.rs +747 -0
  101. metrust-0.1.0/crates/wx-math/src/lib.rs +10 -0
  102. metrust-0.1.0/crates/wx-math/src/regrid.rs +1232 -0
  103. metrust-0.1.0/crates/wx-math/src/thermo.rs +2998 -0
  104. metrust-0.1.0/crates/wx-radar/Cargo.toml +16 -0
  105. metrust-0.1.0/crates/wx-radar/src/cells.rs +619 -0
  106. metrust-0.1.0/crates/wx-radar/src/color_table.rs +123 -0
  107. metrust-0.1.0/crates/wx-radar/src/derived.rs +100 -0
  108. metrust-0.1.0/crates/wx-radar/src/detection.rs +93 -0
  109. metrust-0.1.0/crates/wx-radar/src/level2.rs +566 -0
  110. metrust-0.1.0/crates/wx-radar/src/lib.rs +12 -0
  111. metrust-0.1.0/crates/wx-radar/src/products.rs +187 -0
  112. metrust-0.1.0/crates/wx-radar/src/render.rs +153 -0
  113. metrust-0.1.0/crates/wx-radar/src/sites.rs +229 -0
  114. metrust-0.1.0/pyproject.toml +15 -0
  115. metrust-0.1.0/python/metrust/__init__.py +8 -0
  116. metrust-0.1.0/python/metrust/calc/__init__.py +2107 -0
  117. metrust-0.1.0/python/metrust/constants/__init__.py +37 -0
  118. metrust-0.1.0/python/metrust/interpolate/__init__.py +428 -0
  119. metrust-0.1.0/python/metrust/io/__init__.py +59 -0
  120. metrust-0.1.0/python/metrust/plots/__init__.py +18 -0
  121. metrust-0.1.0/python/metrust/units.py +76 -0
  122. metrust-0.1.0/src/lib.rs +44 -0
  123. metrust-0.1.0/src/py_atmo.rs +77 -0
  124. metrust-0.1.0/src/py_constants.rs +75 -0
  125. metrust-0.1.0/src/py_interpolate.rs +751 -0
  126. metrust-0.1.0/src/py_io.rs +422 -0
  127. metrust-0.1.0/src/py_kinematics.rs +733 -0
  128. metrust-0.1.0/src/py_severe.rs +740 -0
  129. metrust-0.1.0/src/py_smooth.rs +281 -0
  130. metrust-0.1.0/src/py_thermo.rs +990 -0
  131. metrust-0.1.0/src/py_utils.rs +81 -0
  132. metrust-0.1.0/src/py_wind.rs +136 -0
  133. metrust-0.1.0/tests/api_audit_calc.md +296 -0
  134. metrust-0.1.0/tests/api_audit_other.md +227 -0
  135. metrust-0.1.0/tests/benchmark.py +346 -0
  136. metrust-0.1.0/tests/verify_constants.py +134 -0
  137. metrust-0.1.0/tests/verify_edge_cases.py +661 -0
  138. metrust-0.1.0/tests/verify_kinematics.py +295 -0
  139. metrust-0.1.0/tests/verify_severe_atmo.py +461 -0
  140. metrust-0.1.0/tests/verify_smooth_interp.py +567 -0
  141. metrust-0.1.0/tests/verify_thermo.py +421 -0
  142. metrust-0.1.0/tests/verify_units.py +188 -0
  143. 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/*
@@ -0,0 +1,10 @@
1
+ /target
2
+ __pycache__
3
+ *.pyc
4
+ *.pyo
5
+ *.egg-info
6
+ dist/
7
+ build/
8
+ *.so
9
+ *.pyd
10
+ .venv/