pygnssutils 1.2.7__tar.gz → 1.2.8__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.
- {pygnssutils-1.2.7/src/pygnssutils.egg-info → pygnssutils-1.2.8}/PKG-INFO +17 -11
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/README.md +5 -3
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/pyproject.toml +12 -7
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/_version.py +1 -1
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/gnssreader.py +20 -28
- {pygnssutils-1.2.7 → pygnssutils-1.2.8/src/pygnssutils.egg-info}/PKG-INFO +17 -11
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils.egg-info/requires.txt +6 -5
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/LICENSE +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/setup.cfg +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/__init__.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/exceptions.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/globals.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/gnssntripclient.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/gnssntripclient_cli.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/gnssserver.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/gnssserver_cli.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/gnssstreamer.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/gnssstreamer_cli.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/helpers.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav_reader.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav_subframes_bds.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav_subframes_gal.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav_subframes_glo.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav_subframes_gps.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav_subframes_irn.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav_subframes_qzs.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rawnav_subframes_sba.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rinex_conv.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rinex_conv_cli.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rinex_conv_met.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rinex_conv_nav.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rinex_conv_obs.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rinex_globals.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/rinex_helpers.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils/socket_server.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils.egg-info/SOURCES.txt +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils.egg-info/dependency_links.txt +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils.egg-info/entry_points.txt +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/src/pygnssutils.egg-info/top_level.txt +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_cli.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_gnssstreamer.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_rawnav.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_rinex.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_rinex_defs.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_rinex_parse.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_socketwrapper.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_sourcetable.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_static.py +0 -0
- {pygnssutils-1.2.7 → pygnssutils-1.2.8}/tests/test_stream.py +0 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pygnssutils
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.8
|
|
4
4
|
Summary: GNSS Command Line Utilities
|
|
5
|
-
Author
|
|
6
|
-
|
|
5
|
+
Author: Steve Smith
|
|
6
|
+
Author-email: semuadmin@semuconsulting.com
|
|
7
|
+
Maintainer: Steve Smith
|
|
8
|
+
Maintainer-email: semuadmin@semuconsulting.com
|
|
7
9
|
License-Expression: BSD-3-Clause
|
|
8
10
|
Project-URL: homepage, https://github.com/semuconsulting/pygnssutils
|
|
9
11
|
Project-URL: documentation, https://www.semuconsulting.com/pygnssutils/
|
|
@@ -24,20 +26,22 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
24
26
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
27
|
Classifier: Programming Language :: Python :: 3.13
|
|
26
28
|
Classifier: Programming Language :: Python :: 3.14
|
|
29
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
27
30
|
Classifier: Topic :: Utilities
|
|
28
31
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
32
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
30
33
|
Requires-Python: >=3.10
|
|
31
34
|
Description-Content-Type: text/markdown
|
|
32
35
|
License-File: LICENSE
|
|
33
|
-
Requires-Dist: certifi>=
|
|
34
|
-
Requires-Dist: pyserial>=3.5
|
|
35
|
-
Requires-Dist: pyspartn>=1.0.8
|
|
36
|
-
Requires-Dist: pyubx2>=1.3.6
|
|
36
|
+
Requires-Dist: certifi>=2026.0.0
|
|
37
37
|
Requires-Dist: pynmeagps>=1.1.7
|
|
38
|
+
Requires-Dist: pyqgc>=1.0.0
|
|
39
|
+
Requires-Dist: pyrtcm>=1.2.0
|
|
38
40
|
Requires-Dist: pysbf2>=1.0.4
|
|
41
|
+
Requires-Dist: pyserial>=3.5
|
|
42
|
+
Requires-Dist: pyspartn>=1.0.8
|
|
43
|
+
Requires-Dist: pyubx2>=1.3.7
|
|
39
44
|
Requires-Dist: pyubxutils>=1.0.6
|
|
40
|
-
Requires-Dist: pyqgc>=1.0.0
|
|
41
45
|
Requires-Dist: pyunigps>=1.0.0
|
|
42
46
|
Dynamic: license-file
|
|
43
47
|
|
|
@@ -92,18 +96,18 @@ The pygnssutils homepage is located at [https://github.com/semuconsulting/pygnss
|
|
|
92
96
|
|
|
93
97
|
Sphinx API Documentation in HTML format is available at [https://www.semuconsulting.com/pygnssutils](https://www.semuconsulting.com/pygnssutils).
|
|
94
98
|
|
|
95
|
-
Contributions **
|
|
99
|
+
Contributions _**from human beings**_ welcome - please refer to [CONTRIBUTING.MD](https://github.com/semuconsulting/pygnssutils/blob/main/CONTRIBUTING.md).
|
|
96
100
|
|
|
97
101
|
[Bug reports](https://github.com/semuconsulting/pygnssutils/blob/main/.github/ISSUE_TEMPLATE/bug_report.md) and [Feature requests](https://github.com/semuconsulting/pygnssutils/blob/main/.github/ISSUE_TEMPLATE/feature_request.md) - please use the templates provided. For general queries and advice, post a message to one of the [pygnssutils Discussions](https://github.com/semuconsulting/pygnssutils/discussions) channels.
|
|
98
102
|
|
|
99
|
-

|
|
100
104
|
|
|
101
105
|
---
|
|
102
106
|
## <a name="installation">Installation</a>
|
|
103
107
|
|
|
104
108
|

|
|
105
109
|
[](https://pypi.org/project/pygnssutils/)
|
|
106
|
-
[](https://clickpy.clickhouse.com/dashboard/pygnssutils)
|
|
107
111
|
|
|
108
112
|
`pygnssutils` is compatible with Python>=3.10.
|
|
109
113
|
|
|
@@ -630,6 +634,8 @@ semuadmin@semuconsulting.com
|
|
|
630
634
|
|
|
631
635
|

|
|
632
636
|
|
|
637
|
+
[ https://orcid.org/0009-0002-5751-8719](https://orcid.org/0009-0002-5751-8719)
|
|
638
|
+
|
|
633
639
|
`pygnssutils` is maintained entirely by unpaid volunteers. It receives no funding from advertising or corporate sponsorship. If you find the utility useful, please consider sponsoring the project with the price of a coffee...
|
|
634
640
|
|
|
635
641
|
[](https://buymeacoffee.com/semuconsulting)
|
|
@@ -49,18 +49,18 @@ The pygnssutils homepage is located at [https://github.com/semuconsulting/pygnss
|
|
|
49
49
|
|
|
50
50
|
Sphinx API Documentation in HTML format is available at [https://www.semuconsulting.com/pygnssutils](https://www.semuconsulting.com/pygnssutils).
|
|
51
51
|
|
|
52
|
-
Contributions **
|
|
52
|
+
Contributions _**from human beings**_ welcome - please refer to [CONTRIBUTING.MD](https://github.com/semuconsulting/pygnssutils/blob/main/CONTRIBUTING.md).
|
|
53
53
|
|
|
54
54
|
[Bug reports](https://github.com/semuconsulting/pygnssutils/blob/main/.github/ISSUE_TEMPLATE/bug_report.md) and [Feature requests](https://github.com/semuconsulting/pygnssutils/blob/main/.github/ISSUE_TEMPLATE/feature_request.md) - please use the templates provided. For general queries and advice, post a message to one of the [pygnssutils Discussions](https://github.com/semuconsulting/pygnssutils/discussions) channels.
|
|
55
55
|
|
|
56
|
-

|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
## <a name="installation">Installation</a>
|
|
60
60
|
|
|
61
61
|

|
|
62
62
|
[](https://pypi.org/project/pygnssutils/)
|
|
63
|
-
[](https://clickpy.clickhouse.com/dashboard/pygnssutils)
|
|
64
64
|
|
|
65
65
|
`pygnssutils` is compatible with Python>=3.10.
|
|
66
66
|
|
|
@@ -587,6 +587,8 @@ semuadmin@semuconsulting.com
|
|
|
587
587
|
|
|
588
588
|

|
|
589
589
|
|
|
590
|
+
[ https://orcid.org/0009-0002-5751-8719](https://orcid.org/0009-0002-5751-8719)
|
|
591
|
+
|
|
590
592
|
`pygnssutils` is maintained entirely by unpaid volunteers. It receives no funding from advertising or corporate sponsorship. If you find the utility useful, please consider sponsoring the project with the price of a coffee...
|
|
591
593
|
|
|
592
594
|
[](https://buymeacoffee.com/semuconsulting)
|
|
@@ -5,8 +5,11 @@ build-backend = "setuptools.build_meta:__legacy__"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pygnssutils"
|
|
7
7
|
dynamic = ["version"]
|
|
8
|
-
authors = [{ name = "Steve Smith", email = "semuadmin@semuconsulting.com" }]
|
|
9
|
-
maintainers = [
|
|
8
|
+
authors = [{ name = "Steve Smith" }, { email = "semuadmin@semuconsulting.com" }]
|
|
9
|
+
maintainers = [
|
|
10
|
+
{ name = "Steve Smith" },
|
|
11
|
+
{ email = "semuadmin@semuconsulting.com" },
|
|
12
|
+
]
|
|
10
13
|
description = "GNSS Command Line Utilities"
|
|
11
14
|
license = "BSD-3-Clause"
|
|
12
15
|
license-files = ["LICENSE"]
|
|
@@ -28,20 +31,22 @@ classifiers = [
|
|
|
28
31
|
"Programming Language :: Python :: 3.12",
|
|
29
32
|
"Programming Language :: Python :: 3.13",
|
|
30
33
|
"Programming Language :: Python :: 3.14",
|
|
34
|
+
"Programming Language :: Python :: 3.15",
|
|
31
35
|
"Topic :: Utilities",
|
|
32
36
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
33
37
|
"Topic :: Scientific/Engineering :: GIS",
|
|
34
38
|
]
|
|
35
39
|
|
|
36
40
|
dependencies = [
|
|
37
|
-
"certifi>=
|
|
38
|
-
"pyserial>=3.5",
|
|
39
|
-
"pyspartn>=1.0.8",
|
|
40
|
-
"pyubx2>=1.3.6",
|
|
41
|
+
"certifi>=2026.0.0",
|
|
41
42
|
"pynmeagps>=1.1.7",
|
|
43
|
+
"pyqgc>=1.0.0",
|
|
44
|
+
"pyrtcm>=1.2.0",
|
|
42
45
|
"pysbf2>=1.0.4",
|
|
46
|
+
"pyserial>=3.5",
|
|
47
|
+
"pyspartn>=1.0.8",
|
|
48
|
+
"pyubx2>=1.3.7",
|
|
43
49
|
"pyubxutils>=1.0.6",
|
|
44
|
-
"pyqgc>=1.0.0",
|
|
45
50
|
"pyunigps>=1.0.0",
|
|
46
51
|
]
|
|
47
52
|
|
|
@@ -13,7 +13,7 @@ Returns both the raw binary data (as bytes) and the parsed data.
|
|
|
13
13
|
|
|
14
14
|
- 'protfilter' governs which protocols (NMEA, UBX, SBF, QGC, UNI or RTCM3) are processed.
|
|
15
15
|
- 'msgfilter' governs which individual message types are processed.
|
|
16
|
-
- `parsing` governs whether payloads are
|
|
16
|
+
- `parsing` governs whether individual payloads are parsed.
|
|
17
17
|
- 'quitonerror' governs how errors are handled.
|
|
18
18
|
- 'msgmode' indicates the type of UBX datastream (output GET, input SET, query POLL).
|
|
19
19
|
If msgmode is set to SETPOLL, input/query mode will be automatically detected by parser.
|
|
@@ -318,8 +318,7 @@ class GNSSReader:
|
|
|
318
318
|
|
|
319
319
|
raw_data = None
|
|
320
320
|
parsed_data = None
|
|
321
|
-
|
|
322
|
-
while parsing: # loop until end of valid message or EOF
|
|
321
|
+
while True: # loop until end of valid message or EOF
|
|
323
322
|
try:
|
|
324
323
|
|
|
325
324
|
raw_data = None
|
|
@@ -336,38 +335,34 @@ class GNSSReader:
|
|
|
336
335
|
# if protocol filter passes UBX, return message,
|
|
337
336
|
# otherwise discard and continue
|
|
338
337
|
if self._protfilter & UBX_PROTOCOL:
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
continue
|
|
338
|
+
break
|
|
339
|
+
continue
|
|
342
340
|
# if it's an NMEA message (b'\x24\x..)
|
|
343
|
-
|
|
341
|
+
if bytehdr in NMEA_HDR:
|
|
344
342
|
raw_data, parsed_data = self._parse_nmea(bytehdr)
|
|
345
343
|
# if protocol filter passes NMEA, return message,
|
|
346
344
|
# otherwise discard and continue
|
|
347
345
|
if self._protfilter & NMEA_PROTOCOL:
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
continue
|
|
346
|
+
break
|
|
347
|
+
continue
|
|
351
348
|
# if it's an SBF message (b'\x24\x40')
|
|
352
|
-
|
|
349
|
+
if bytehdr in SBF_HDR:
|
|
353
350
|
raw_data, parsed_data = self._parse_sbf(bytehdr)
|
|
354
351
|
# if protocol filter passes SBF, return message,
|
|
355
352
|
# otherwise discard and continue
|
|
356
353
|
if self._protfilter & SBF_PROTOCOL:
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
continue
|
|
354
|
+
break
|
|
355
|
+
continue
|
|
360
356
|
# if it's an QGCmessage (b'\x51\x47')
|
|
361
|
-
|
|
357
|
+
if bytehdr in QGC_HDR:
|
|
362
358
|
raw_data, parsed_data = self._parse_qgc(bytehdr)
|
|
363
359
|
# if protocol filter passes QGC, return message,
|
|
364
360
|
# otherwise discard and continue
|
|
365
361
|
if self._protfilter & QGC_PROTOCOL:
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
continue
|
|
362
|
+
break
|
|
363
|
+
continue
|
|
369
364
|
# if it's an UNImessage (b'\xaa\x44\xb5')
|
|
370
|
-
|
|
365
|
+
if bytehdr in UNI_HDR[:2]:
|
|
371
366
|
byte3 = self._read_bytes(1)
|
|
372
367
|
bytehdr += byte3
|
|
373
368
|
if bytehdr != UNI_HDR:
|
|
@@ -376,21 +371,18 @@ class GNSSReader:
|
|
|
376
371
|
# if protocol filter passes UNI, return message,
|
|
377
372
|
# otherwise discard and continue
|
|
378
373
|
if self._protfilter & UNI_PROTOCOL:
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
continue
|
|
374
|
+
break
|
|
375
|
+
continue
|
|
382
376
|
# if it's a RTCM3 message
|
|
383
377
|
# (byte1 = 0xd3; byte2 = 0b000000**)
|
|
384
|
-
|
|
378
|
+
if byte1 == b"\xd3" and (byte2[0] & ~0x03) == 0:
|
|
385
379
|
raw_data, parsed_data = self._parse_rtcm3(bytehdr)
|
|
386
380
|
# if protocol filter passes RTCM, return message,
|
|
387
381
|
# otherwise discard and continue
|
|
388
382
|
if self._protfilter & RTCM3_PROTOCOL:
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
else:
|
|
393
|
-
raise GNSSStreamError(f"Unknown protocol header {bytehdr}.")
|
|
383
|
+
break
|
|
384
|
+
continue
|
|
385
|
+
raise GNSSStreamError(f"Unknown protocol header {bytehdr}.")
|
|
394
386
|
|
|
395
387
|
except EOFError:
|
|
396
388
|
return (None, None)
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pygnssutils
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.8
|
|
4
4
|
Summary: GNSS Command Line Utilities
|
|
5
|
-
Author
|
|
6
|
-
|
|
5
|
+
Author: Steve Smith
|
|
6
|
+
Author-email: semuadmin@semuconsulting.com
|
|
7
|
+
Maintainer: Steve Smith
|
|
8
|
+
Maintainer-email: semuadmin@semuconsulting.com
|
|
7
9
|
License-Expression: BSD-3-Clause
|
|
8
10
|
Project-URL: homepage, https://github.com/semuconsulting/pygnssutils
|
|
9
11
|
Project-URL: documentation, https://www.semuconsulting.com/pygnssutils/
|
|
@@ -24,20 +26,22 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
24
26
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
27
|
Classifier: Programming Language :: Python :: 3.13
|
|
26
28
|
Classifier: Programming Language :: Python :: 3.14
|
|
29
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
27
30
|
Classifier: Topic :: Utilities
|
|
28
31
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
32
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
30
33
|
Requires-Python: >=3.10
|
|
31
34
|
Description-Content-Type: text/markdown
|
|
32
35
|
License-File: LICENSE
|
|
33
|
-
Requires-Dist: certifi>=
|
|
34
|
-
Requires-Dist: pyserial>=3.5
|
|
35
|
-
Requires-Dist: pyspartn>=1.0.8
|
|
36
|
-
Requires-Dist: pyubx2>=1.3.6
|
|
36
|
+
Requires-Dist: certifi>=2026.0.0
|
|
37
37
|
Requires-Dist: pynmeagps>=1.1.7
|
|
38
|
+
Requires-Dist: pyqgc>=1.0.0
|
|
39
|
+
Requires-Dist: pyrtcm>=1.2.0
|
|
38
40
|
Requires-Dist: pysbf2>=1.0.4
|
|
41
|
+
Requires-Dist: pyserial>=3.5
|
|
42
|
+
Requires-Dist: pyspartn>=1.0.8
|
|
43
|
+
Requires-Dist: pyubx2>=1.3.7
|
|
39
44
|
Requires-Dist: pyubxutils>=1.0.6
|
|
40
|
-
Requires-Dist: pyqgc>=1.0.0
|
|
41
45
|
Requires-Dist: pyunigps>=1.0.0
|
|
42
46
|
Dynamic: license-file
|
|
43
47
|
|
|
@@ -92,18 +96,18 @@ The pygnssutils homepage is located at [https://github.com/semuconsulting/pygnss
|
|
|
92
96
|
|
|
93
97
|
Sphinx API Documentation in HTML format is available at [https://www.semuconsulting.com/pygnssutils](https://www.semuconsulting.com/pygnssutils).
|
|
94
98
|
|
|
95
|
-
Contributions **
|
|
99
|
+
Contributions _**from human beings**_ welcome - please refer to [CONTRIBUTING.MD](https://github.com/semuconsulting/pygnssutils/blob/main/CONTRIBUTING.md).
|
|
96
100
|
|
|
97
101
|
[Bug reports](https://github.com/semuconsulting/pygnssutils/blob/main/.github/ISSUE_TEMPLATE/bug_report.md) and [Feature requests](https://github.com/semuconsulting/pygnssutils/blob/main/.github/ISSUE_TEMPLATE/feature_request.md) - please use the templates provided. For general queries and advice, post a message to one of the [pygnssutils Discussions](https://github.com/semuconsulting/pygnssutils/discussions) channels.
|
|
98
102
|
|
|
99
|
-

|
|
100
104
|
|
|
101
105
|
---
|
|
102
106
|
## <a name="installation">Installation</a>
|
|
103
107
|
|
|
104
108
|

|
|
105
109
|
[](https://pypi.org/project/pygnssutils/)
|
|
106
|
-
[](https://clickpy.clickhouse.com/dashboard/pygnssutils)
|
|
107
111
|
|
|
108
112
|
`pygnssutils` is compatible with Python>=3.10.
|
|
109
113
|
|
|
@@ -630,6 +634,8 @@ semuadmin@semuconsulting.com
|
|
|
630
634
|
|
|
631
635
|

|
|
632
636
|
|
|
637
|
+
[ https://orcid.org/0009-0002-5751-8719](https://orcid.org/0009-0002-5751-8719)
|
|
638
|
+
|
|
633
639
|
`pygnssutils` is maintained entirely by unpaid volunteers. It receives no funding from advertising or corporate sponsorship. If you find the utility useful, please consider sponsoring the project with the price of a coffee...
|
|
634
640
|
|
|
635
641
|
[](https://buymeacoffee.com/semuconsulting)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
certifi>=
|
|
2
|
-
pyserial>=3.5
|
|
3
|
-
pyspartn>=1.0.8
|
|
4
|
-
pyubx2>=1.3.6
|
|
1
|
+
certifi>=2026.0.0
|
|
5
2
|
pynmeagps>=1.1.7
|
|
3
|
+
pyqgc>=1.0.0
|
|
4
|
+
pyrtcm>=1.2.0
|
|
6
5
|
pysbf2>=1.0.4
|
|
6
|
+
pyserial>=3.5
|
|
7
|
+
pyspartn>=1.0.8
|
|
8
|
+
pyubx2>=1.3.7
|
|
7
9
|
pyubxutils>=1.0.6
|
|
8
|
-
pyqgc>=1.0.0
|
|
9
10
|
pyunigps>=1.0.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|