pygnss 2.1.2__cp314-cp314t-macosx_11_0_arm64.whl

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.
@@ -0,0 +1,129 @@
1
+ Metadata-Version: 2.4
2
+ Name: pygnss
3
+ Version: 2.1.2
4
+ Summary: Package with utilities and tools for GNSS data processing
5
+ Author-email: Miquel Garcia-Fernandez <miquel@mgfernan.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/mgfernan/pygnss
8
+ Requires-Python: >=3.10
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Requires-Dist: nequick>=0.2.0
12
+ Requires-Dist: numpy
13
+ Requires-Dist: pandas>=2.2
14
+ Requires-Dist: pyarrow>=18.0.0
15
+ Provides-Extra: test
16
+ Requires-Dist: pytest>=8.3.4; extra == "test"
17
+ Requires-Dist: pytest-env>=1.1.5; extra == "test"
18
+ Requires-Dist: pytest-mocha>=0.4.0; extra == "test"
19
+ Requires-Dist: flake8>=7.0.0; extra == "test"
20
+ Requires-Dist: pnt-datasets>=0.2.2; extra == "test"
21
+ Requires-Dist: package-name>=0.1; extra == "test"
22
+ Provides-Extra: release
23
+ Requires-Dist: python-semantic-release>=9.4.0; extra == "release"
24
+ Dynamic: license-file
25
+
26
+ # pygnss — GNSS utilities and tools
27
+
28
+ pygnss is a lightweight collection of utilities for GNSS data processing:
29
+
30
+ - parsers for Hatanaka (CRX) and RINEX formats,
31
+ - IONEX (GIM) utilities and exporters,
32
+ - small geodetic and ionospheric helpers, and
33
+ - a few filtering tools (particle filter, EKF/UKF helpers) used in demos and tests.
34
+
35
+ This README gives a short overview for users and contributors: installation,
36
+ development (building the compiled extension), available CLI scripts and
37
+ examples of the most used APIs.
38
+
39
+ ## Installation
40
+
41
+ Stable release from PyPI (no compiled extension required for pure-Python
42
+ features):
43
+
44
+ ```bash
45
+ pip install pygnss
46
+ ```
47
+
48
+ Developer / editable install (builds the C extension declared in
49
+ `pyproject.toml`). This is the recommended setup when working on the
50
+ repository locally because some features (Hatanaka/CRX parsing) rely on a
51
+ compiled extension for speed.
52
+
53
+ ```bash
54
+ # create and activate a venv
55
+ python -m venv .venv
56
+ source .venv/bin/activate
57
+ # install the package and test/dev extras
58
+ python -m pip install --upgrade pip
59
+ python -m pip install -e '.[test]'
60
+ ```
61
+
62
+ Notes on the compiled extension
63
+
64
+ - The extension module `pygnss._c_ext` is built from the sources listed in
65
+ `pyproject.toml` (under [[tool.setuptools.ext-modules]]). Building the
66
+ package with `pip install .` or `python -m build` will compile it. On CI
67
+ the workflow provided in `.github/workflows/python-package.yml` creates a
68
+ virtualenv and runs `pip install -e '.[test]'` to ensure the entry points
69
+ and compiled modules are available for tests.
70
+
71
+ ## CLI entry points (installed as console scripts)
72
+
73
+ The package declares several console scripts (see `pyproject.toml`):
74
+
75
+ - `ionex_diff` — compare IONEX files or compare an IONEX to NeQuick output
76
+ - `compute_cdf` — utility to compute CDF from data (used by examples)
77
+ - `rinex_from_file`, `rinex_to_parquet`, `merge_rinex_nav` — helpers for
78
+ RINEX conversions
79
+
80
+ After installing the package into a venv these commands are available on
81
+ `$PATH` (from `.venv/bin`). Tests rely on the entry points being discoverable
82
+ via PATH in CI, so the workflow prepends `.venv/bin` to PATH before running
83
+ tests.
84
+
85
+ ## Quick usage examples
86
+
87
+ 1. Hatanaka (CRX) -> pandas DataFrame
88
+
89
+ ```python
90
+ from pygnss import hatanaka
91
+
92
+ df = hatanaka.to_dataframe('station.crx.gz', station='MYST')
93
+ print(df.head())
94
+ ```
95
+
96
+ If the compiled extension is not available the function raises an ImportError
97
+ with instructions to build/install the package (see "Developer" section).
98
+
99
+ 1. Read and diff IONEX maps (programmatic)
100
+
101
+ ```python
102
+ from pygnss import ionex
103
+ from pygnss.iono import gim
104
+
105
+ # load an ionex and collect VTEC maps
106
+ handler = gim.GimHandlerArray()
107
+ ionex.load('sample.ionex', gim_handler=handler)
108
+ print(len(handler.vtec_gims))
109
+ ```
110
+
111
+ ## Running tests locally
112
+
113
+ With the venv active and the test extras installed the canonical way to run
114
+ the test-suite is:
115
+
116
+ ```bash
117
+ # inside the project root with .venv activated
118
+ python -m pytest -v
119
+ ```
120
+
121
+ If tests call console scripts (such as `ionex_diff`) the venv `bin` directory
122
+ must be on `PATH` so subprocesses can find the entry points. The CI workflow
123
+ prepares the environment accordingly.
124
+
125
+ ## Where to look next
126
+
127
+ - `pygnss/hatanaka.py` — Hatanaka/CRX parsing wrapper (uses compiled helper)
128
+ - `pygnss/ionex.py` — IONEX loader/writer and CLI glue
129
+ - `pygnss/filter/` — particle filter, EKF/UKF helpers and demos
@@ -0,0 +1,44 @@
1
+ pygnss/hatanaka.py,sha256=JHRYWanz0ZtJ14WzNUq88tbhG8ksSRTXzzoIstm78Pw,2928
2
+ pygnss/time.py,sha256=YdMNs2xA43LrSgEOgB7jpEq0dCWv89fUBF5syDLjbu0,11178
3
+ pygnss/ionex.py,sha256=WcY6PVwjzATjqyC0Htc5Jh_cv2a7yz4TZIcD723TpsY,14325
4
+ pygnss/nequick.py,sha256=tSsUw3FoRWS-TBKKVb0_c90DFz_2jUTkUvNPsGQOLA8,1722
5
+ pygnss/sinex.py,sha256=nErOmGCFFmGSnmWGNTJhaj3yZ6IIB8GgtW5WPypJc6U,3057
6
+ pygnss/tensorial.py,sha256=aA0-0WK2MXhDUg0_8HMbECOt9cXmp3EnKFQXjdYMBXA,1598
7
+ pygnss/decorator.py,sha256=qB-0jl2GTEHJdvmDruNll5X3RrdySssv94u9Hok5-lA,1438
8
+ pygnss/constants.py,sha256=1hF6K92X6E6Ofo0rAuCBCgrwln9jxio26RV2a6vyURk,133
9
+ pygnss/__init__.py,sha256=UiuBcRXPtXxPUBDdp0ZDvWl0U9Db1kMNfT3oAfhxqLg,22
10
+ pygnss/cl.py,sha256=ISmd2RjikUMmj3nLPN0VSjvQLG5rLizp2X2ajeBkoDE,4509
11
+ pygnss/logger.py,sha256=4kvcTWXPoiG-MlyP6B330l4Fu7MfCuDjuIlIiLA8f1Y,1479
12
+ pygnss/geodetic.py,sha256=RCXD4_RlzQR2DxNIFGS4iODwZZcnxklMsCw9mohYcBg,33948
13
+ pygnss/_c_ext.cpython-314t-darwin.so,sha256=RqydGDiLmoan0EgC9asFaShTDiG7Avi7DEYAbCffLT8,73920
14
+ pygnss/file.py,sha256=kkMBWjoTPkxJD1UgH0mXJT2fxnhU8u7_l2Ph5Xz2-hY,933
15
+ pygnss/rinex.py,sha256=7pUmnMe8KYMxGEeqYvQI1m8kvoTvLPbKXfxhcwxYfH8,68792
16
+ pygnss/stats.py,sha256=GYZfcyDvbM9xamWIyVlqyN5-DPJzTLJrybRrcNV6Z6o,1912
17
+ pygnss/orbit/kepler.py,sha256=QORTgg5yBtsQXxLWSzoZ1pmh-CwPiZlFdIYqhQhv1a0,1745
18
+ pygnss/orbit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ pygnss/orbit/tle.py,sha256=6CIEielPgui3DXNv46XxOGlig31ROIwjH42xLGaeE5M,5905
20
+ pygnss/parsers/rtklib/stats.py,sha256=YV6yadxMeQMQYZvsUCaSf4ZTpK8Bbv3f2xgu0l4PekA,5449
21
+ pygnss/_c_ext/src/constants.c,sha256=-DCFy5gQR_UHmsW94f0f5yu6aVen4OUb5FdYBrlOoss,1809
22
+ pygnss/_c_ext/src/mtable_init.c,sha256=n8jU39bA6sjVHG7U0OUIDTGMpddMytJf7TIjdQHjMA4,1315
23
+ pygnss/_c_ext/src/hatanaka.c,sha256=zqqH4JrC09qbFzLUiHunNGA-ut9HxEQ8Fmy5QR5XeGs,2511
24
+ pygnss/_c_ext/src/klobuchar.c,sha256=YqH1i8SbIR424nAiCHozV4fsSf22365EA5gav3v982o,9956
25
+ pygnss/_c_ext/src/helpers.c,sha256=gINr73ktRgox_S7fYdFR58lLqAUACRpJfog4M5BW1-Q,364
26
+ pygnss/gnss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ pygnss/gnss/edit.py,sha256=T1r0WbJmt8tLJpG_IIsy4Atej6cy0IStBaSGxw0S5ho,1884
28
+ pygnss/gnss/types.py,sha256=lmL15KRckRiTwVkYvGzF4c1BrojnQlegrYCXSz1hGaI,10377
29
+ pygnss/gnss/residuals.py,sha256=8qKGNOYkrqxHGOSjIfH21K82PAqEh2068kf78j5usL8,1244
30
+ pygnss/gnss/observables.py,sha256=0x0NLkTjxf8cO9F_f_Q1b-1hEeoNjWB2x-53ecUEv0M,1656
31
+ pygnss/iono/gim.py,sha256=khKzClxLf46mVO6BCDk9u9DgS_50d-sbWEyoUQu7Jng,3543
32
+ pygnss/iono/chapman.py,sha256=eyq2RaCkLpQJRzuHt_DSNaLjto1w_W1PdT_ys8A3Bjc,1388
33
+ pygnss/iono/__init__.py,sha256=xuewp1KSVsRQhyXyCCZxIrhNiIc3DluW-YqUZqXhhFs,1538
34
+ pygnss/filter/ukf.py,sha256=ps2itLh8QqNpZ7Y_JeKRs2AqU7zEUvJq4IrfV5bVPEI,10672
35
+ pygnss/filter/models.py,sha256=Cy9rE1JwNJDB5VhZzFhMHuuwSOIO-PR4JKDgQF9CVOw,2339
36
+ pygnss/filter/__init__.py,sha256=vEF_51C-aROGDNpDVGGu9BUPWxCo-P6H9QpFSjqf4c0,2249
37
+ pygnss/filter/ekf.py,sha256=FnI5I98dmmR0ZmSVxXEHuWAMG-dIVzN1j-1sOHYbnJE,2043
38
+ pygnss/filter/particle.py,sha256=HZr_FD9zA0cpX0Gk5bM3icWBW91vOl8vXeKfhTxrMbA,18075
39
+ pygnss-2.1.2.dist-info/RECORD,,
40
+ pygnss-2.1.2.dist-info/WHEEL,sha256=26nyvDx4qlf6NyRSh1NSNrXJDCQeX0hnJ7EH1bB1egM,137
41
+ pygnss-2.1.2.dist-info/entry_points.txt,sha256=awWUCMfX3uMIAPPZqZfSUuw7Kd7defip8L7GtthKqgg,292
42
+ pygnss-2.1.2.dist-info/top_level.txt,sha256=oZRSR-qOv98VW2PRRMGCVNCJmewcJjyJYmxzxfeimtg,7
43
+ pygnss-2.1.2.dist-info/METADATA,sha256=F6V_LtnUEWP2iSR8XVznXpg3Ip0T0y3Usp8DNTAjPzo,4262
44
+ pygnss-2.1.2.dist-info/licenses/LICENSE,sha256=Wwany6RAAZ9vVHjFLA9KBJ0HE77d52s2NOUA1CPAEug,1067
@@ -0,0 +1,6 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp314-cp314t-macosx_11_0_arm64
5
+ Generator: delocate 0.13.0
6
+
@@ -0,0 +1,8 @@
1
+ [console_scripts]
2
+ cl = pygnss.cl:entry_point
3
+ compute_cdf = pygnss.stats:cdf_cli
4
+ ionex_diff = pygnss.ionex:cli
5
+ merge_rinex_nav = pygnss.rinex:merge_nav_cli
6
+ rinex_from_file = pygnss.rinex:rinex_from_file
7
+ rinex_to_parquet = pygnss.rinex:rinex_to_parquet
8
+ tensorial = pygnss.tensorial:entry_point
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) [2022] [Rokubun]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ pygnss