Skip to main content

High-performance GNSS multipath analysis library with Python bindings

Project description

GeoVeil-MP: GNSS Multipath Analysis Library

Crates.io PyPI Rust Python License: MIT CI/CD

A high-performance Rust library for GNSS multipath analysis with Python bindings. Part of the GeoVeil suite for GNSS signal quality analysis.

Features

  • ๐Ÿ›ฐ๏ธ RINEX Support: Full support for RINEX v2.xx, v3.xx, and v4.xx observation files
  • ๐ŸŒ Multi-GNSS: GPS, GLONASS, Galileo, BeiDou, QZSS, NavIC/IRNSS, SBAS
  • ๐Ÿ“ก Navigation Data:
    • Broadcast ephemerides (Keplerian elements)
    • GLONASS state vector propagation (4th-order Runge-Kutta)
    • SP3 precise orbit interpolation (Neville's algorithm)
  • ๐Ÿ“Š Multipath Analysis: Code multipath estimation using linear combinations
  • โšก Cycle Slip Detection: Ionospheric residuals and code-phase combinations
  • ๐Ÿ“ Position Estimation: Least squares SPP with DOP calculation
  • ๐ŸŽจ Visualization: R plotting integration for publication-quality figures
  • ๐Ÿš€ High Performance: Parallel processing with Rayon, memory-mapped I/O
  • ๐Ÿ Python Bindings: Full Python API via PyO3

Installation

Python (PyPI)

pip install geoveil-mp

Rust (Cargo)

[dependencies]
geoveil_mp = "0.1"

Or with all features:

[dependencies]
geoveil_mp = { version = "0.1", features = ["full"] }

From Source

# Clone the repository
git clone https://github.com/miluta7/geoveil-mp.git
cd geoveil-mp

# Build Rust library
cargo build --release

# Build Python wheel
pip install maturin
maturin develop --release --features python

Quick Start

Python Usage

import geoveil_mp as gm

# Read RINEX observation file
obs = gm.read_rinex_obs("observation.24o")
print(f"Loaded {obs.num_epochs} epochs, {obs.num_satellites} satellites")

# Read SP3 precise ephemeris (optional, for accurate elevations)
sp3 = gm.read_sp3("ephemeris.sp3")

# Create analyzer with elevation cutoff
analyzer = gm.MultipathAnalyzer(
    obs,
    elevation_cutoff=10.0,
    systems=["G", "E", "R", "C"]  # GPS, Galileo, GLONASS, BeiDou
)

# Run multipath analysis
results = analyzer.analyze()

# Compute satellite elevations from SP3
if sp3 and obs.approx_position:
    computed, failed = results.compute_elevations(sp3, obs.approx_position)
    print(f"Elevations: {computed} computed, {failed} failed")

# Access results
print(f"Total estimates: {results.total_estimates()}")
print(f"Cycle slips detected: {results.total_cycle_slips()}")

# Print statistics by signal
for stat in results.statistics:
    print(f"{stat.signal}: RMS={stat.rms:.4f}m, Count={stat.count}")

# Export to CSV
import pandas as pd
data = [{
    'satellite': e.satellite,
    'epoch': e.epoch,
    'mp_value': e.mp_value,
    'elevation': e.elevation,
    'signal': e.signal
} for e in results.estimates]
df = pd.DataFrame(data)
df.to_csv("multipath_results.csv", index=False)

Rust Usage

use geoveil_mp::{
    prelude::*,
    RinexObsReader, Sp3Reader,
    navigation::SatellitePositionProvider,
};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Read RINEX observation file
    let obs_data = RinexObsReader::new().read("observation.24o")?;
    
    // Read SP3 precise ephemeris
    let sp3_data = Sp3Reader::read("ephemeris.sp3")?;
    
    // Configure analysis
    let config = AnalysisConfig::default()
        .with_elevation_cutoff(10.0)
        .with_systems(&["G", "E", "R", "C"]);
    
    // Run multipath analysis
    let analyzer = MultipathAnalyzer::new(obs_data, config);
    let results = analyzer.analyze()?;
    
    // Export results
    results.to_csv("results.csv")?;
    
    // Print statistics
    for (signal, stats) in &results.statistics {
        println!("{}: RMS={:.4}m, Count={}", signal, stats.rms, stats.count);
    }
    
    Ok(())
}

CLI Usage

# Analyze RINEX file with SP3 orbits
geoveil-mp analyze --obs observation.24o --sp3 ephemeris.sp3 --csv results.csv

# Get file information
geoveil-mp info observation.24o

# Estimate position from pseudoranges
geoveil-mp position --obs observation.24o --nav navigation.24n

Multipath Estimation

The code multipath is estimated using the linear combination:

$$MP_1 = R_1 - \left(1+\frac{2}{\alpha - 1}\right)\Phi_1 + \left(\frac{2}{\alpha - 1}\right)\Phi_2$$

where:

  • $R_1$ is the code observation on frequency 1
  • $\Phi_1, \Phi_2$ are phase observations on frequencies 1 and 2
  • $\alpha = f_1^2/f_2^2$ is the frequency ratio squared

This combination eliminates ionospheric delay and geometry, leaving only code multipath, code noise, and ambiguity-related biases.

Supported GNSS Systems

System Code Frequencies Navigation
GPS G L1, L2, L5 Keplerian
GLONASS R G1, G2, G3 State Vector (RK4)
Galileo E E1, E5a, E5b, E6 Keplerian
BeiDou C B1I, B1C, B2a, B2b, B3I Keplerian
QZSS J L1, L2, L5, L6 Keplerian
NavIC I L5, S, L1 Keplerian
SBAS S L1, L5 -

Data Sources

SP3 Precise Orbits (No Authentication Required)

ESA:  http://navigation-office.esa.int/products/gnss-products/{week}/
GFZ:  https://igs.bkg.bund.de/root_ftp/IGS/products/mgex/{week}/
CODE: https://igs.bkg.bund.de/root_ftp/IGS/products/mgex/{week}/

Broadcast Navigation

BKG:  https://igs.bkg.bund.de/root_ftp/IGS/BRDC/{year}/{doy}/
IGN:  https://igs.ign.fr/pub/igs/data/{year}/{doy}/

Python API Reference

Classes

Class Description
GnssSystem GNSS constellation identifier (G, R, E, C, J, I, S)
Satellite Satellite PRN identifier (e.g., "G01", "E11")
Epoch Time representation with GPS/Julian conversions
Ecef Earth-Centered Earth-Fixed coordinates
Geodetic Latitude/Longitude/Height coordinates
RinexObsData RINEX observation data container
Sp3Data SP3 precise orbit data container
MultipathAnalyzer Main multipath analysis engine
AnalysisResults Analysis results container

Functions

Function Description
read_rinex_obs(path) Read RINEX observation file
read_rinex_obs_bytes(data, filename) Read RINEX from bytes
read_sp3(path) Read SP3 precise orbit file
get_frequency(system, band, fcn) Get signal frequency (Hz)
get_wavelength(system, band, fcn) Get signal wavelength (m)
calculate_azel(receiver, satellite) Compute azimuth/elevation
compute_elevation(sp3, receiver, sat, epoch) Compute elevation from SP3
version() Get library version

Constants

Constant Value Description
SPEED_OF_LIGHT 299792458.0 Speed of light (m/s)
GM_WGS84 3.986005e14 Earth gravitational parameter (mยณ/sยฒ)
EARTH_RADIUS 6378137.0 WGS84 Earth radius (m)

Architecture

geoveil_mp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ lib.rs              # Library entry point
โ”‚   โ”œโ”€โ”€ python.rs           # Python bindings (PyO3)
โ”‚   โ”œโ”€โ”€ rinex/              # RINEX parsing
โ”‚   โ”‚   โ”œโ”€โ”€ types.rs        # Data structures
โ”‚   โ”‚   โ””โ”€โ”€ obs_reader.rs   # Observation file reader
โ”‚   โ”œโ”€โ”€ navigation/         # Ephemeris handling
โ”‚   โ”‚   โ”œโ”€โ”€ types.rs        # Ephemeris types
โ”‚   โ”‚   โ”œโ”€โ”€ kepler2ecef.rs  # Keplerian to ECEF
โ”‚   โ”‚   โ”œโ”€โ”€ glonass.rs      # GLONASS Runge-Kutta
โ”‚   โ”‚   โ””โ”€โ”€ sp3.rs          # SP3 Neville interpolation
โ”‚   โ”œโ”€โ”€ analysis/           # Analysis algorithms
โ”‚   โ”‚   โ”œโ”€โ”€ multipath.rs    # Multipath estimation
โ”‚   โ”‚   โ”œโ”€โ”€ cycle_slip.rs   # Cycle slip detection
โ”‚   โ”‚   โ””โ”€โ”€ position.rs     # Position estimation
โ”‚   โ”œโ”€โ”€ plotting/           # R integration
โ”‚   โ””โ”€โ”€ utils/              # Utilities
โ”‚       โ”œโ”€โ”€ constants.rs    # Physical constants
โ”‚       โ”œโ”€โ”€ coordinates.rs  # Coordinate transforms
โ”‚       โ”œโ”€โ”€ time.rs         # Time handling
โ”‚       โ””โ”€โ”€ error.rs        # Error types
โ”œโ”€โ”€ examples/
โ”œโ”€โ”€ tests/
โ””โ”€โ”€ r_scripts/              # R plotting scripts

Performance

Benchmarks on a typical 24-hour multi-GNSS RINEX file (~100MB):

Operation Time Notes
Read RINEX 3.05 ~500ms Memory-mapped I/O
Read SP3 ~50ms Neville interpolation ready
Multipath analysis ~200ms Parallel processing
Position estimation ~2s All epochs

Related Projects

References

  • RINEX 4.02 Specification (IGS/RTCM)
  • GPS Interface Control Document (IS-GPS-200)
  • GLONASS Interface Control Document (ICD-GLONASS)
  • Galileo OS-SDD (Open Service Signal-in-Space ICD)
  • IGS Multi-GNSS Experiment (MGEX)

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Changelog

See CHANGELOG.md for version history.

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

geoveil_mp-0.1.1.tar.gz (99.1 kB view details)

Uploaded Source

Built Distributions

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

geoveil_mp-0.1.1-cp312-cp312-win_amd64.whl (384.1 kB view details)

Uploaded CPython 3.12Windows x86-64

geoveil_mp-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (450.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

geoveil_mp-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (430.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

geoveil_mp-0.1.1-cp311-cp311-win_amd64.whl (383.6 kB view details)

Uploaded CPython 3.11Windows x86-64

geoveil_mp-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (448.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

geoveil_mp-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (430.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

geoveil_mp-0.1.1-cp310-cp310-win_amd64.whl (383.6 kB view details)

Uploaded CPython 3.10Windows x86-64

geoveil_mp-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (448.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

geoveil_mp-0.1.1-cp310-cp310-macosx_11_0_arm64.whl (430.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

geoveil_mp-0.1.1-cp39-cp39-win_amd64.whl (384.6 kB view details)

Uploaded CPython 3.9Windows x86-64

geoveil_mp-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (449.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

geoveil_mp-0.1.1-cp39-cp39-macosx_11_0_arm64.whl (430.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file geoveil_mp-0.1.1.tar.gz.

File metadata

  • Download URL: geoveil_mp-0.1.1.tar.gz
  • Upload date:
  • Size: 99.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for geoveil_mp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 884c64f163720e9928a076996d436a3f67c02223fad69dac293bff21c0a24bac
MD5 d455a131599620dad47841e27fe312cd
BLAKE2b-256 111a5540b2019f356dfa258131631eaec239be7258b3460ec3f297d8de35c25b

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1.tar.gz:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: geoveil_mp-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 384.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for geoveil_mp-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d508569dd280c696dc580efe9fce9d7a955d3acb33d91792f1a34c3334bd672d
MD5 ae8c1bab6e8c5a0279fd4e9f7cfff422
BLAKE2b-256 e874e09dcbc7bf420bcd04ef63fd78835090ee7b89e2f445d6518f1bef47377a

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp312-cp312-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_mp-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11da1a18684c0adc0501a50c20008daf7aa7a4e440f40f8c3f2f8a2a71b6e602
MD5 dbeef7c22b7c40ddea90942a6329a752
BLAKE2b-256 b3efa7a477ad5929e50647187364e455bff045bc4c1b3455a060fd0254dc8d8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_mp-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a98aeabf7e164f733a59b7dc46da4f1b7a23e0c2f6d28e44d8fbb05c0e7a2ffe
MD5 0d72569e8fa0243c99990ed07dc9ad68
BLAKE2b-256 5d74f6989fa3ea431cf51ce4109f4334a851c2fe3b28789b694f3742f432d476

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: geoveil_mp-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 383.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for geoveil_mp-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a1787f057fb04d11d729bdf9692b2fb0e96e8daadc124da494203b2dc974e00b
MD5 d43ac1d88857fb0f613e224ce843ebaa
BLAKE2b-256 1a04f87ee265d0b1c56cbb2b7976973a01c9154db4fb487a0f1a6e8f7b5f4aaf

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp311-cp311-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_mp-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11e9e3141e6f136bdea16645836a0325f5c29eb4cb969fb946fabb6260ed143e
MD5 3739188971c7b6e7603381e69354537c
BLAKE2b-256 3d782d3a062cc33fe8916ec0e1f40cb69e30cb5e3d4760eb0189fd59a61859ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_mp-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2db0da1e48984d463d12f06e290df6eb75ed500a85de03805209ef9ac474d17b
MD5 7ec4d43222ca014ad8b595ee8f3c4815
BLAKE2b-256 53ecb325f4e8c72edf50736446a7af7b0a718dd6fd5966ab30b4150a4a822a88

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: geoveil_mp-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 383.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for geoveil_mp-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3c3a208b4f90dfcce4a0974b46f11c5914f96c2a52fbb8af6099abc40955f7d4
MD5 7b166cbca4ceafec42ab32cd42d6e6f8
BLAKE2b-256 db93c65358af4bfdb28d5969c37b702c8457100245e25809adaebfdc02c0d4f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp310-cp310-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_mp-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 49978599298a06faec39f33884eaeef258b20066c7eec17f3a48533ade8a14f3
MD5 ab1b7e16b9fd193bcbd2e78582a1a557
BLAKE2b-256 c1fb0eeca35e543ccc8fef643f1386f9cecde1df55810794cb09c30b5fe631ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_mp-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b3b15e85e11599bb6f49a920bad108a2100b8dc7e9a57e5f2d7cc55f9a5df56f
MD5 1badb2f536875aae6590f9f84cdbd377
BLAKE2b-256 1f475b3ea8e7c1ceebdf6e2a3e958b2ea1cb7aeee027d04ef2abc04b212fcdd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: geoveil_mp-0.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 384.6 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for geoveil_mp-0.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a5e167dae7e84e3e48c9ddd5c8638ac934561ef972b927d4afcb3af61597e1ff
MD5 40d7f1aa235ed667ec1996c88c9699e6
BLAKE2b-256 b341b70404497558f52cc727fe8f2852f8661bebc98a9defe79d42cd37b07f19

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp39-cp39-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_mp-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fe31290c03a906f311f63c032e41b41054a38fc8b3775af3aa54de63566b61f1
MD5 4451a909acca6fa2fe598f80c68ef268
BLAKE2b-256 106cde11b412cb355ffb522cc060dc7ba4dbe3f6e382011a22ad0ad2a10815d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geoveil_mp-0.1.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_mp-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58844225ce3f925dbb4441d16dd252e7dff184c6c244f13581587853a63a6585
MD5 50d7dc6332439b526cb03a390192f8af
BLAKE2b-256 bbd791df5f9fa81286401e764c4c509a1b9f6c25fc35969ce3e613d4e9491e42

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_mp-0.1.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-mp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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