Skip to main content

A Python package for GNSS RINEX file reading and total electron content (TEC) calculation with Rust-accelerated performance.

Project description

PyGNSS-TEC

PyPI - Version Supported Python Versions Codacy Badge License Test

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 to c1_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, or None to 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 to None to 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

pygnss_tec-0.4.0.tar.gz (28.9 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pygnss_tec-0.4.0-cp314-cp314t-win_amd64.whl (543.0 kB view details)

Uploaded CPython 3.14tWindows x86-64

pygnss_tec-0.4.0-cp314-cp314t-win32.whl (557.4 kB view details)

Uploaded CPython 3.14tWindows x86

pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_x86_64.whl (655.3 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_i686.whl (730.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ i686

pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_armv7l.whl (679.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARMv7l

pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_aarch64.whl (623.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

pygnss_tec-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl (574.4 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pygnss_tec-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl (615.8 kB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

pygnss_tec-0.4.0-cp39-abi3-win_amd64.whl (547.1 kB view details)

Uploaded CPython 3.9+Windows x86-64

pygnss_tec-0.4.0-cp39-abi3-win32.whl (562.3 kB view details)

Uploaded CPython 3.9+Windows x86

pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl (660.7 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ x86-64

pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_i686.whl (736.8 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ i686

pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_armv7l.whl (685.1 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARMv7l

pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl (628.0 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

pygnss_tec-0.4.0-cp39-abi3-macosx_11_0_arm64.whl (579.1 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

pygnss_tec-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl (620.3 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

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

Hashes for pygnss_tec-0.4.0.tar.gz
Algorithm Hash digest
SHA256 38054dadd2e037c3a9ad7969fe2a99b729c50791a3b58f2e27da02d4c323d6b7
MD5 ab3c5e4013c0c3891ae2ae50542d8bd2
BLAKE2b-256 ef5f34c6f6828aa11b446128bcba6896338894b70c331a9a8614597ec1be21b2

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 9c7cd6fb9fd6e82cfc5dd7b945e2e10524726f9aae720f67b750e0356ec0f047
MD5 e51701b17acf6b7cad07366ed2226e38
BLAKE2b-256 d157762c9bde2d8ab32e9521bfcea6a39ccc642981890006770d02598747e7a7

See more details on using hashes here.

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

Hashes for pygnss_tec-0.4.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 74ca30c9696cc41c93254d139c0d158cc8a8b817294bdfda44bfa9a9680d3e9e
MD5 5db7b0941c1ab3c5b17a2e893fa56782
BLAKE2b-256 318e19d43cc1e5072fb2908b4cb3bb4fb8e582c7bd414d08887bc45fb2e3ecba

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8759d8b193db2ceb9a1c654b26594bca73d9350c7fdcc85999dd6449fc9b57f8
MD5 bb7a1c9fb016fcf701c2e2bdca2a5569
BLAKE2b-256 0b7b20da2018d13a41dff6a1720e3c809f952ba5ed7e0df4e1978995366fd517

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 41adee97d382740c68bd9082ebaa4a880ee0f7626d4fc069ec636d718f79e5c1
MD5 2fcbcc4cbfd8ec58a291be15ab31a8ef
BLAKE2b-256 524ef51dece839873c49b5b1672ee5c43aaf76317331709210d833945af80f46

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_armv7l.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 0c898e99a8ea09c60d3009f09d9110a3a741b85291c4976b31f77016c0b558a1
MD5 c604dc5088f8f617b63c5c7d27d6ee33
BLAKE2b-256 3eb95ef670f8ad65bc00828769eeae4349b15b467847ff724b2f85d8e72fe640

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8c369fd6a25f05650433ee57b826e9c0835c69d2769c58b57678bdbb0aca08e4
MD5 257de355cc2934201c975f8bec9a92c4
BLAKE2b-256 f2ca6a0c6d4c4edd27475002d4888f6e46a1fe2d0adc090110e873aaba9f2293

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf6bc430c26a44db4b2db0dc8fd60ecfea78d8c30109710eeb1234b0c49a29b8
MD5 ccad4ff53b504d920899eb47312486a9
BLAKE2b-256 c46c9b9da9e43624567dfddcef71a9d584ae1afcd45e44f17c8368b92810dcf1

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d21b68357f0c10600eddae38743bef942ffed4128a43541b06d369db0099dc0c
MD5 e181b2fb6592b72de3ad8c765da96e54
BLAKE2b-256 0daea705c69f6c18b9007e8aeae006d81437221c81360a858ce0e5a55e049123

See more details on using hashes here.

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

Hashes for pygnss_tec-0.4.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 db5bb7d7db6ea39dbcf4ba6b03fde4fc485fa0edf450494863f31404643169e6
MD5 11f9d594ed76d657acd48f14f5530544
BLAKE2b-256 a9ed15f8eff0eb2558811edd3869023b87446272c43c9e10c9d9f056307ae1aa

See more details on using hashes here.

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

Hashes for pygnss_tec-0.4.0-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 5c5d2a8731633eff1d91a3d457665ef0630843946a9be091267d7d43e183ce93
MD5 20869f8c847c6b6a60807657bd660d82
BLAKE2b-256 867785aee54271e127cc3acc68ba03a1c9d898ddf7df7037d83f5e98b81ecff9

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 18f651202aa667df0422c4893be98edbe428657ae2d8e225c4eb64bac8d8a6ca
MD5 cd712a394df7a8429d5ca2e8b4065708
BLAKE2b-256 b0a1f293ff5aaec8431f01c8a7f07f9e67987bd4f007565f7eea107324a36886

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 a7dac98bd4feb2af5bd7bc339a21533d3076fd31b936233ccd2acb35668ec42a
MD5 7d7ba0dc10e22e120187f22fd3e42b53
BLAKE2b-256 e1d385b86876b3a7871b94d831d1b0afb05dc2af5a97d22c0886ca8dbee96a64

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_armv7l.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_armv7l.whl
Algorithm Hash digest
SHA256 d3126f09ae47c66c5a6880fa360fa85b3997ee250ff05687d31bc70d9b14705f
MD5 5731827e55edb67dfdf94cf86bddb5b4
BLAKE2b-256 3e93fe1a323c87002caa44731f7bc3ed57ef6afad07bbce3e91ddd0745abfaf5

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a8e4f7dc6e86bb060f98e43f5340b195ac5551f7177cd23d2b1638a7bc24cbfc
MD5 eaa4bb7fb1dc72066cd8b6689ef4aa85
BLAKE2b-256 f26bcabdc9220466d674cc27704dceaabac50b9db823a2abbc192672908f3ff5

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b16b5d85b23bf0a1ef1f31df10670e1f773c8e6f74f41768e3c63d5497e42d82
MD5 c7eee8ecfd85d65f998d04f3ceed87bd
BLAKE2b-256 a0a6879db78ea132d4d90619256447b1d88e926d97061fe64c86cb64bcdfc6f6

See more details on using hashes here.

File details

Details for the file pygnss_tec-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pygnss_tec-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f46c959f7025c2928297f9db7c7f9fbc0104f2955a79077ecf49f6b4df8256ab
MD5 c4ace08d7a194b113751e12e8524cb80
BLAKE2b-256 1da838d65f44f3a80148e5e45a35642de4ceddebacf2a63f75b4f54145a05f06

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page