A Python package for GNSS RINEX file reading and total electron content (TEC) calculation with Rust-accelerated performance.
Project description
PyGNSS-TEC
PyGNSS-TEC is a high-performance Python package leveraging Rust acceleration, designed for processing and analyzing Total Electron Content (TEC) data derived from Global Navigation Satellite System (GNSS) observations. The package provides tools for RINEX file reading, TEC calculation, and DCB correction to support ionospheric studies.
Warning: This package is under active development and may undergo significant changes. It is not recommended for production use until it reaches a stable release (v1.0.0).
Features
-
RINEX File Reading: Efficient reading and parsing of RINEX GNSS observation files using rinex crate (see benchmarks for details).
-
Multiple File Formats: Support for RINEX versions 2.x and 3.x., as well as Hatanaka compressed files (e.g., .Z, .crx, .crx.gz).
-
TEC Calculation: Efficiently compute TEC from dual-frequency GNSS observations using polars DataFrames and lazy evaluation (see benchmarks for details).
-
Multi-GNSS Support: Process observations from multiple GNSS constellations (see Overview for constellation support).
-
Open-Source: Fully open-source under the MIT License, encouraging community contributions and collaboration.
Installation
Via pip
You can install PyGNSS-TEC via pip:
pip install pygnss-tec
Via uv (recommended)
uv is a modern Python package and project manager written in Rust. You can add PyGNSS-TEC to your uv project with:
uv add pygnss-tec
From Source
Building from source requires Rust and Cargo to be installed. Once you have both, run:
git clone https://github.com/Eureka-0/pygnss-tec.git
cd pygnss-tec
uv run maturin build --release
# Or enable custom memory allocator feature, which can improve performance in some scenarios (~10%) but may increase memory usage
uv run maturin build --release --features custom-alloc
The built package will be available in the target/wheels directory. You can then install it to your Python environment or uv project with:
# Using pip
pip install target/wheels/pygnss_tec-*.whl
# Or using uv
uv pip install target/wheels/pygnss_tec-*.whl
Usage
Overview
The following table summarizes the support for different GNSS constellations in PyGNSS-TEC:
| Constellation | RINEX Reading | TEC Calculation |
|---|---|---|
| GPS (G) | Yes | Yes |
| Beidou (C) | Yes | Yes |
| Galileo (E) | Yes | No |
| GLONASS (R) | Yes | No |
| QZSS (J) | Yes | No |
| IRNSS (I) | Yes | No |
| SBAS (S) | Yes | No |
RINEX file reading
Read a RINEX observation file (supports RINEX v2.x, v3.x, and Hatanaka compressed files):
import gnss_tec as gt
header, lf = gt.read_rinex_obs("./data/rinex_obs_v3/CIBG00IDN_R_20240100000_01D_30S_MO.crx.gz")
# You can read multiple files from the same station by passing a list of file paths
# header, lf = gt.read_rinex_obs(["./data/file1.crx.gz", "./data/file2.crx.gz"])
# header is a dataclass containing RINEX file header information
print(header)
# RinexObsHeader(
# version='3.04',
# constellation='MIXED',
# marker_name='CIBG',
# marker_type='GEODETIC',
# rx_ecef=(-1837003.1909, 6065631.1631, -716184.055),
# rx_geodetic=(-6.490367937958374, 106.84916836419953, 173.0000212144293),
# sampling_interval=30,
# leap_seconds=18,
# )
# lf is a polars LazyFrame, you can collect it to get a DataFrame.
# By default, time is in UTC timezone. You can keep it in GPS time by passing `utc=False` to `read_rinex_obs`.
print(lf.collect())
# shape: (180_027, 71)
# ┌─────────────────────────┬─────────┬─────┬──────────┬──────────┬──────┬──────┬──────────┬───┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
# │ time ┆ station ┆ prn ┆ C1C ┆ C1P ┆ C1X ┆ C1Z ┆ C2C ┆ … ┆ S5X ┆ S6I ┆ S6X ┆ S7D ┆ S7I ┆ S7X ┆ S8X │
# │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
# │ datetime[ms, UTC] ┆ cat ┆ cat ┆ f64 ┆ f64 ┆ f64 ┆ f64 ┆ f64 ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 ┆ f64 ┆ f64 ┆ f64 │
# ╞═════════════════════════╪═════════╪═════╪══════════╪══════════╪══════╪══════╪══════════╪═══╪══════╪══════╪══════╪══════╪══════╪══════╪══════╡
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C01 ┆ null ┆ null ┆ null ┆ null ┆ null ┆ … ┆ null ┆ 42.9 ┆ null ┆ null ┆ 44.1 ┆ null ┆ null │
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C02 ┆ null ┆ null ┆ null ┆ null ┆ null ┆ … ┆ null ┆ 43.0 ┆ null ┆ null ┆ 46.2 ┆ null ┆ null │
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C03 ┆ null ┆ null ┆ null ┆ null ┆ null ┆ … ┆ null ┆ 44.5 ┆ null ┆ null ┆ 46.3 ┆ null ┆ null │
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C04 ┆ null ┆ null ┆ null ┆ null ┆ null ┆ … ┆ null ┆ 39.9 ┆ null ┆ null ┆ 42.1 ┆ null ┆ null │
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C05 ┆ null ┆ null ┆ null ┆ null ┆ null ┆ … ┆ null ┆ 41.1 ┆ null ┆ null ┆ 41.3 ┆ null ┆ null │
# │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ R16 ┆ 2.2936e7 ┆ 2.2936e7 ┆ null ┆ null ┆ 2.2936e7 ┆ … ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ R21 ┆ 2.1521e7 ┆ 2.1521e7 ┆ null ┆ null ┆ 2.1521e7 ┆ … ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ R22 ┆ 2.3833e7 ┆ 2.3833e7 ┆ null ┆ null ┆ 2.3833e7 ┆ … ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ S32 ┆ 3.6030e7 ┆ null ┆ null ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ S37 ┆ 3.6282e7 ┆ null ┆ null ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null ┆ null │
# └─────────────────────────┴─────────┴─────┴──────────┴──────────┴──────┴──────┴──────────┴───┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
If both observation and navigation files are provided, satellite azimuth and elevation angles will be calculated and included in the returned LazyFrame:
header, lf = gt.read_rinex_obs(
"./data/rinex_obs_v3/CIBG00IDN_R_20240100000_01D_30S_MO.crx.gz",
"./data/rinex_nav_v3/BRDC00IGS_R_20240100000_01D_MN.rnx.gz"
)
TEC calculation
From RINEX files
Directly calculate from RINEX files using calc_tec_from_rinex function:
tec_lf = gt.calc_tec_from_rinex(
"./data/rinex_obs_v3/CIBG00IDN_R_20240100000_01D_30S_MO.crx.gz",
"./data/rinex_nav_v3/BRDC00IGS_R_20240100000_01D_MN.rnx.gz",
"./data/bias/CAS0OPSRAP_20240100000_01D_01D_DCB.BIA.gz", # Optional DCB file, can be omitted if DCB correction is not needed
)
print(tec_lf.collect())
# shape: (50_147, 12)
# ┌─────────────────────────┬─────────┬─────┬───────────┬────────────┬─────────┬─────────┬───────────┬────────────┬─────────────┬────────────────────┬───────────┐
# │ time ┆ station ┆ prn ┆ rx_lat ┆ rx_lon ┆ C1_code ┆ C2_code ┆ ipp_lat ┆ ipp_lon ┆ stec ┆ stec_dcb_corrected ┆ vtec │
# │ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
# │ datetime[ms, UTC] ┆ cat ┆ cat ┆ f32 ┆ f32 ┆ cat ┆ cat ┆ f32 ┆ f32 ┆ f64 ┆ f64 ┆ f64 │
# ╞═════════════════════════╪═════════╪═════╪═══════════╪════════════╪═════════╪═════════╪═══════════╪════════════╪═════════════╪════════════════════╪═══════════╡
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C01 ┆ -6.490368 ┆ 106.849167 ┆ C2I ┆ C6I ┆ -6.021448 ┆ 110.041397 ┆ -65.178132 ┆ 37.369112 ┆ 28.186231 │
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C02 ┆ -6.490368 ┆ 106.849167 ┆ C2I ┆ C6I ┆ -5.874807 ┆ 105.12574 ┆ -92.766855 ┆ 30.478708 ┆ 27.233229 │
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C03 ┆ -6.490368 ┆ 106.849167 ┆ C2I ┆ C6I ┆ -5.987422 ┆ 107.10218 ┆ -99.906077 ┆ 27.888606 ┆ 27.553764 │
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C05 ┆ -6.490368 ┆ 106.849167 ┆ C2I ┆ C6I ┆ -5.77573 ┆ 102.127449 ┆ -80.838063 ┆ 37.301633 ┆ 23.284567 │
# │ 2024-01-09 23:59:42 UTC ┆ CIBG ┆ C06 ┆ -6.490368 ┆ 106.849167 ┆ C2I ┆ C6I ┆ -2.625823 ┆ 105.790565 ┆ -117.679878 ┆ 30.499514 ┆ 20.802594 │
# │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ G18 ┆ -6.490368 ┆ 106.849167 ┆ C1C ┆ C2W ┆ -9.357401 ┆ 107.007019 ┆ 74.830984 ┆ 23.49472 ┆ 18.498105 │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ G23 ┆ -6.490368 ┆ 106.849167 ┆ C1C ┆ C2W ┆ -5.178424 ┆ 108.647789 ┆ 76.563659 ┆ 25.358676 ┆ 21.648637 │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ G25 ┆ -6.490368 ┆ 106.849167 ┆ C1C ┆ C2W ┆ -5.254835 ┆ 109.935173 ┆ 110.055906 ┆ 37.104073 ┆ 27.626465 │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ G28 ┆ -6.490368 ┆ 106.849167 ┆ C1C ┆ C2W ┆ -5.297853 ┆ 104.2929 ┆ 72.823386 ┆ 23.382123 ┆ 18.556846 │
# │ 2024-01-10 23:59:12 UTC ┆ CIBG ┆ G31 ┆ -6.490368 ┆ 106.849167 ┆ C1C ┆ C2W ┆ -7.392913 ┆ 102.960022 ┆ 73.01637 ┆ 30.59289 ┆ 20.97296 │
# └─────────────────────────┴─────────┴─────┴───────────┴────────────┴─────────┴─────────┴───────────┴────────────┴─────────────┴────────────────────┴───────────┘
From DataFrame or LazyFrame
If you wish to calculate TEC from an existing polars DataFrame or LazyFrame (e.g., after some custom preprocessing), you can use the calc_tec_from_df function:
header, lf = gt.read_rinex_obs(
"./data/rinex_obs_v3/CIBG00IDN_R_20240100000_01D_30S_MO.crx.gz",
"./data/rinex_nav_v3/BRDC00IGS_R_20240100000_01D_MN.rnx.gz"
)
# ...
# Perform any custom preprocessing on lf if needed
# ...
tec_lf = gt.calc_tec_from_df(lf, header, "./data/bias/CAS0OPSRAP_20240100000_01D_01D_DCB.BIA.gz")
From parquet file
Reading RINEX files is time-consuming, accounting for at least 90% of the total calculation time. Thus, if you need to perform TEC calculation multiple times on the same RINEX files (e.g., when tuning configuration), it is recommended to save the parsed LazyFrame to a parquet file after the first read, and then use calc_tec_from_parquet for subsequent TEC calculations:
header, lf = gt.read_rinex_obs(
"./data/rinex_obs_v3/CIBG00IDN_R_20240100000_01D_30S_MO.crx.gz",
"./data/rinex_nav_v3/BRDC00IGS_R_20240100000_01D_MN.rnx.gz"
)
# ...
# Perform any custom preprocessing on lf if needed
# ...
# Note: Make sure to include header information when saving to parquet
lf.sink_parquet("./data/cibg_obs_2024010.parquet", metadata=header.to_metadata())
tec_lf = gt.calc_tec_from_parquet(
"./data/cibg_obs_2024010.parquet",
"./data/bias/CAS0OPSRAP_20240100000_01D_01D_DCB.BIA.gz"
)
Configuration
You can customize the TEC calculation process using the TECConfig dataclass:
# To see the default configuration
print(gt.TECConfig())
# TECConfig(
# constellations='CG',
# ipp_height=400,
# min_elevation=30.0,
# min_snr=30.0,
# c1_codes={
# '2': {
# 'G': ['C1']
# },
# '3': {
# 'C': ['C2I', 'C2D', 'C2X', 'C1I', 'C1D', 'C1X', 'C2W', 'C1C'],
# 'G': ['C1W', 'C1C', 'C1X']
# },
# },
# c2_codes={
# '2': {
# 'G': ['C2', 'C5']
# },
# '3': {
# 'C': ['C6I', 'C6D', 'C6X', 'C7I', 'C7D', 'C7X', 'C5I', 'C5D', 'C5X'],
# 'G': ['C2W', 'C2C', 'C2X', 'C5W', 'C5C', 'C5X']
# },
# },
# rx_bias='external',
# mapping_function='slm',
# retain_intermediate=None
# )
The meaning of each parameter is as follows:
constellations: A string specifying which GNSS constellations to consider for TEC calculation. 'C' for Beidou, 'G' for GPS.ipp_height: The assumed height of the ionospheric pierce point (IPP) in kilometers.min_elevation: The minimum satellite elevation angle (in degrees) for observations to be considered in the TEC calculation.min_snr: The minimum signal-to-noise ratio (in dB-Hz) for observations to be considered in the TEC calculation.c1_codes: A dictionary specifying the preferred observation codes for the first frequency (C1) for each RINEX version and constellation. The codes are prioritized in the order they are listed, with the first available code being used. This parameter supports partial setting (e.g.,c1_codes={'3': {'C': [...]} }to only set for Beidou in RINEX version 3, and use default for others).c2_codes: A dictionary specifying the preferred observation codes for the second frequency (C2) for each RINEX version and constellation, similar toc1_codes.rx_bias: Specifies how to handle receiver bias. It can be set to 'external' to use an external DCB file for correction, 'mstd' to use the minimum standard deviation method for estimation, 'lsq' to use least squares estimation, orNoneto skip receiver bias correction. Note that the receiver bias estimation is only applicable after the satellite bias has been corrected using an external DCB file (e.g., from IGS). If no external DCB file is provided, this parameter will be ignored. The 'mstd' and 'lsq' methods are for stations that are not included in the external DCB file.mapping_function: The mapping function to use for converting slant TEC to vertical TEC. It can be set to 'slm' for the Single Layer Model or 'mslm' for the Modified Single Layer Model.retain_intermediate: Names of intermediate columns to retain in the output DataFrame. It can be set toNoneto discard all intermediate columns, 'all' to retain all intermediate columns, or a list of column names to keep specific ones.
Benchmarks (on M2 Pro 12-Core CPU)
| Task | Time (s) |
|---|---|
| Read RINEX v2 (3.65 MB) | 0.1362 |
| Read RINEX v3 (14.02 MB) | 0.7397 |
| Read RINEX v3 (6.05 MB Hatanaka-compressed) | 1.2468 |
| Read RINEX v3 (2.34 MB Hatanaka-compressed) | 0.5653 |
| Calculate TEC from RINEX v2 (3.65 MB) | 0.1457 |
| Calculate TEC from RINEX v3 (14.02 MB) | 0.7532 |
| Calculate TEC from RINEX v3 (6.05 MB Hatanaka-compressed) | 1.3067 |
| Calculate TEC from RINEX v3 (2.34 MB Hatanaka-compressed) | 0.5908 |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pygnss_tec-0.4.0.tar.gz.
File metadata
- Download URL: pygnss_tec-0.4.0.tar.gz
- Upload date:
- Size: 28.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38054dadd2e037c3a9ad7969fe2a99b729c50791a3b58f2e27da02d4c323d6b7
|
|
| MD5 |
ab3c5e4013c0c3891ae2ae50542d8bd2
|
|
| BLAKE2b-256 |
ef5f34c6f6828aa11b446128bcba6896338894b70c331a9a8614597ec1be21b2
|
File details
Details for the file pygnss_tec-0.4.0-cp314-cp314t-win_amd64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp314-cp314t-win_amd64.whl
- Upload date:
- Size: 543.0 kB
- Tags: CPython 3.14t, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c7cd6fb9fd6e82cfc5dd7b945e2e10524726f9aae720f67b750e0356ec0f047
|
|
| MD5 |
e51701b17acf6b7cad07366ed2226e38
|
|
| BLAKE2b-256 |
d157762c9bde2d8ab32e9521bfcea6a39ccc642981890006770d02598747e7a7
|
File details
Details for the file pygnss_tec-0.4.0-cp314-cp314t-win32.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp314-cp314t-win32.whl
- Upload date:
- Size: 557.4 kB
- Tags: CPython 3.14t, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74ca30c9696cc41c93254d139c0d158cc8a8b817294bdfda44bfa9a9680d3e9e
|
|
| MD5 |
5db7b0941c1ab3c5b17a2e893fa56782
|
|
| BLAKE2b-256 |
318e19d43cc1e5072fb2908b4cb3bb4fb8e582c7bd414d08887bc45fb2e3ecba
|
File details
Details for the file pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 655.3 kB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8759d8b193db2ceb9a1c654b26594bca73d9350c7fdcc85999dd6449fc9b57f8
|
|
| MD5 |
bb7a1c9fb016fcf701c2e2bdca2a5569
|
|
| BLAKE2b-256 |
0b7b20da2018d13a41dff6a1720e3c809f952ba5ed7e0df4e1978995366fd517
|
File details
Details for the file pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_i686.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_i686.whl
- Upload date:
- Size: 730.8 kB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41adee97d382740c68bd9082ebaa4a880ee0f7626d4fc069ec636d718f79e5c1
|
|
| MD5 |
2fcbcc4cbfd8ec58a291be15ab31a8ef
|
|
| BLAKE2b-256 |
524ef51dece839873c49b5b1672ee5c43aaf76317331709210d833945af80f46
|
File details
Details for the file pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_armv7l.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_armv7l.whl
- Upload date:
- Size: 679.8 kB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c898e99a8ea09c60d3009f09d9110a3a741b85291c4976b31f77016c0b558a1
|
|
| MD5 |
c604dc5088f8f617b63c5c7d27d6ee33
|
|
| BLAKE2b-256 |
3eb95ef670f8ad65bc00828769eeae4349b15b467847ff724b2f85d8e72fe640
|
File details
Details for the file pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 623.0 kB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c369fd6a25f05650433ee57b826e9c0835c69d2769c58b57678bdbb0aca08e4
|
|
| MD5 |
257de355cc2934201c975f8bec9a92c4
|
|
| BLAKE2b-256 |
f2ca6a0c6d4c4edd27475002d4888f6e46a1fe2d0adc090110e873aaba9f2293
|
File details
Details for the file pygnss_tec-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl
- Upload date:
- Size: 574.4 kB
- Tags: CPython 3.14t, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf6bc430c26a44db4b2db0dc8fd60ecfea78d8c30109710eeb1234b0c49a29b8
|
|
| MD5 |
ccad4ff53b504d920899eb47312486a9
|
|
| BLAKE2b-256 |
c46c9b9da9e43624567dfddcef71a9d584ae1afcd45e44f17c8368b92810dcf1
|
File details
Details for the file pygnss_tec-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl
- Upload date:
- Size: 615.8 kB
- Tags: CPython 3.14t, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d21b68357f0c10600eddae38743bef942ffed4128a43541b06d369db0099dc0c
|
|
| MD5 |
e181b2fb6592b72de3ad8c765da96e54
|
|
| BLAKE2b-256 |
0daea705c69f6c18b9007e8aeae006d81437221c81360a858ce0e5a55e049123
|
File details
Details for the file pygnss_tec-0.4.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 547.1 kB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
db5bb7d7db6ea39dbcf4ba6b03fde4fc485fa0edf450494863f31404643169e6
|
|
| MD5 |
11f9d594ed76d657acd48f14f5530544
|
|
| BLAKE2b-256 |
a9ed15f8eff0eb2558811edd3869023b87446272c43c9e10c9d9f056307ae1aa
|
File details
Details for the file pygnss_tec-0.4.0-cp39-abi3-win32.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp39-abi3-win32.whl
- Upload date:
- Size: 562.3 kB
- Tags: CPython 3.9+, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c5d2a8731633eff1d91a3d457665ef0630843946a9be091267d7d43e183ce93
|
|
| MD5 |
20869f8c847c6b6a60807657bd660d82
|
|
| BLAKE2b-256 |
867785aee54271e127cc3acc68ba03a1c9d898ddf7df7037d83f5e98b81ecff9
|
File details
Details for the file pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 660.7 kB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18f651202aa667df0422c4893be98edbe428657ae2d8e225c4eb64bac8d8a6ca
|
|
| MD5 |
cd712a394df7a8429d5ca2e8b4065708
|
|
| BLAKE2b-256 |
b0a1f293ff5aaec8431f01c8a7f07f9e67987bd4f007565f7eea107324a36886
|
File details
Details for the file pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_i686.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_i686.whl
- Upload date:
- Size: 736.8 kB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7dac98bd4feb2af5bd7bc339a21533d3076fd31b936233ccd2acb35668ec42a
|
|
| MD5 |
7d7ba0dc10e22e120187f22fd3e42b53
|
|
| BLAKE2b-256 |
e1d385b86876b3a7871b94d831d1b0afb05dc2af5a97d22c0886ca8dbee96a64
|
File details
Details for the file pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_armv7l.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_armv7l.whl
- Upload date:
- Size: 685.1 kB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3126f09ae47c66c5a6880fa360fa85b3997ee250ff05687d31bc70d9b14705f
|
|
| MD5 |
5731827e55edb67dfdf94cf86bddb5b4
|
|
| BLAKE2b-256 |
3e93fe1a323c87002caa44731f7bc3ed57ef6afad07bbce3e91ddd0745abfaf5
|
File details
Details for the file pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 628.0 kB
- Tags: CPython 3.9+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8e4f7dc6e86bb060f98e43f5340b195ac5551f7177cd23d2b1638a7bc24cbfc
|
|
| MD5 |
eaa4bb7fb1dc72066cd8b6689ef4aa85
|
|
| BLAKE2b-256 |
f26bcabdc9220466d674cc27704dceaabac50b9db823a2abbc192672908f3ff5
|
File details
Details for the file pygnss_tec-0.4.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 579.1 kB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b16b5d85b23bf0a1ef1f31df10670e1f773c8e6f74f41768e3c63d5497e42d82
|
|
| MD5 |
c7eee8ecfd85d65f998d04f3ceed87bd
|
|
| BLAKE2b-256 |
a0a6879db78ea132d4d90619256447b1d88e926d97061fe64c86cb64bcdfc6f6
|
File details
Details for the file pygnss_tec-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: pygnss_tec-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 620.3 kB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f46c959f7025c2928297f9db7c7f9fbc0104f2955a79077ecf49f6b4df8256ab
|
|
| MD5 |
c4ace08d7a194b113751e12e8524cb80
|
|
| BLAKE2b-256 |
1da838d65f44f3a80148e5e45a35642de4ceddebacf2a63f75b4f54145a05f06
|