Skip to main content

GNSS CN0 Analysis Library - Interference, Jamming & Spoofing Detection

Project description

geoveil-cn0

PyPI version License: MIT Python 3.8+ GitHub

High-performance GNSS CN0 (Carrier-to-Noise) Signal Quality Analysis Library

A Rust-powered Python library for analyzing GNSS signal quality from RINEX observation files. Detect interference, jamming, spoofing, and multipath effects with research-grade algorithms.

Features

  • 🛰️ Multi-GNSS Support: GPS, GLONASS, Galileo, BeiDou, QZSS, NavIC
  • 📊 CN0 Analysis: Signal strength statistics, timeseries, and quality scoring
  • 🚨 Threat Detection: Jamming, spoofing, and interference indicators
  • 📈 Anomaly Detection: Configurable sensitivity for signal anomalies
  • 🗺️ Skyplot Data: Satellite positions with azimuth/elevation (requires NAV file)
  • High Performance: Rust core with Python bindings via PyO3
  • 📁 RINEX Support: Parse RINEX 2.x, 3.x, and 4.x observation files
  • 🧭 Navigation Files: BRDC broadcast ephemeris and SP3 precise orbits

Installation

pip install geoveil-cn0

Quick Start

import geoveil_cn0 as gcn0

# Create analysis configuration
config = gcn0.AnalysisConfig(
    min_elevation=5.0,           # Elevation mask (degrees)
    time_bin_seconds=60,         # Time binning for statistics
    detect_anomalies=True,       # Enable anomaly detection
    anomaly_sensitivity=0.3,     # Sensitivity (0-1, lower = fewer false positives)
    interference_threshold_db=8.0,  # CN0 drop threshold for interference
)

# Create analyzer
analyzer = gcn0.CN0Analyzer(config)

# Analyze observation file (with optional navigation for skyplots)
result = analyzer.analyze_with_nav("observation.rnx", "navigation.rnx")

# Access results
print(f"Quality Score: {result.quality_score.overall}/100 ({result.quality_score.rating})")
print(f"Average CN0: {result.avg_cn0:.1f} dB-Hz")
print(f"Jamming Detected: {result.jamming_detected}")
print(f"Spoofing Detected: {result.spoofing_detected}")
print(f"Anomalies: {result.anomaly_count}")

# Get detailed data
for constellation in result.constellations:
    stats = result.get_constellation_summary(constellation)
    print(f"{constellation}: {stats['satellites_observed']} sats, CN0={stats['cn0_mean']:.1f} dB-Hz")

# Export to JSON
json_data = result.to_json()

Quality Score Components

The quality score (0-100) is computed from multiple factors:

Component Weight Description
CN0 Quality 35% Signal strength relative to thresholds
Availability 20% Satellite availability vs expected
Continuity 20% Data continuity (gaps, cycle slips)
Stability 15% CN0 variance over time
Diversity 10% Multi-constellation coverage

Threat Detection Thresholds

Based on research from ITU-R M.1902-1, Stanford GPS Lab, and GPS Solutions journal:

  • Jamming: Rapid CN0 drops >6 dB in <3 seconds
  • Spoofing: Abnormally uniform CN0 (std <2 dB) or elevated average
  • Interference: CN0 degradation >4 dB from baseline (ITU I/N=-6dB criterion)

API Reference

AnalysisConfig

config = gcn0.AnalysisConfig(
    min_elevation=5.0,              # Elevation cutoff in degrees
    time_bin_seconds=60,            # Time bin for statistics
    systems=['G', 'R', 'E', 'C'],   # GNSS systems to analyze
    detect_anomalies=True,          # Enable anomaly detection
    anomaly_sensitivity=0.3,        # 0-1, lower = stricter
    interference_threshold_db=8.0,  # dB drop for interference flag
    verbose=False,                  # Print debug info
)

CN0Analyzer

analyzer = gcn0.CN0Analyzer(config)

# Analyze without navigation (no skyplots)
result = analyzer.analyze_file("observation.rnx")

# Analyze with navigation (enables skyplots and elevation filtering)
result = analyzer.analyze_with_nav("observation.rnx", "navigation.rnx")

AnalysisResult

Property Type Description
quality_score QualityScore Overall quality metrics
avg_cn0 float Mean CN0 in dB-Hz
cn0_std_dev float CN0 standard deviation
min_cn0, max_cn0 float CN0 range
jamming_detected bool Jamming indicator
spoofing_detected bool Spoofing indicator
interference_detected bool Interference indicator
anomaly_count int Number of anomalies
constellations list Available constellations
duration_hours float Observation duration
epoch_count int Number of epochs

Methods

# Get constellation-specific statistics
stats = result.get_constellation_summary("GPS")  # Returns dict

# Get anomaly list
anomalies = result.get_anomalies()  # Returns list of dicts

# Get timeseries data for plotting
ts_data = result.get_timeseries_data()  # Returns dict with timestamps, cn0_mean, etc.

# Get skyplot data (requires navigation file)
skyplot = result.get_skyplot_data()  # Returns list of satellite traces

# Export to JSON
json_str = result.to_json()

Jupyter Notebook Widget

A ready-to-use interactive widget is included:

# In Jupyter notebook
exec(open("geoveil_cn0_gui.py").read())

Features:

  • File upload or path input
  • Auto-download BRDC navigation files
  • Interactive Plotly charts
  • Quality radar, skyplots, heatmaps, timeseries
  • HTML report export

Data Sources

The library supports navigation data from:

  • BRDC: IGS combined broadcast ephemeris
  • SP3: Precise orbits from ESA, GFZ, CODE, WHU
  • TLE: CelesTrak GNSS TLE (fallback)

Requirements

  • Python 3.8+
  • No runtime dependencies (Rust binary)

Optional for notebooks:

  • plotly - Interactive charts
  • pandas - Data manipulation
  • ipywidgets - Jupyter widgets

License

MIT License - see LICENSE for details.

Author

Miluta Dulea-Flueras

Contributing

Contributions welcome! Please open an issue or pull request on GitHub.

Citation

If you use this library in research, please cite:

@software{geoveil_cn0,
  author = {Dulea-Flueras, Miluta},
  title = {geoveil-cn0: GNSS CN0 Signal Quality Analysis Library},
  year = {2026},
  url = {https://github.com/miluta7/geoveil-cn0}
}

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_cn0-0.3.6.tar.gz (123.7 kB view details)

Uploaded Source

Built Distributions

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

geoveil_cn0-0.3.6-cp312-cp312-win_amd64.whl (443.4 kB view details)

Uploaded CPython 3.12Windows x86-64

geoveil_cn0-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (504.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

geoveil_cn0-0.3.6-cp312-cp312-macosx_11_0_arm64.whl (450.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

geoveil_cn0-0.3.6-cp311-cp311-win_amd64.whl (442.0 kB view details)

Uploaded CPython 3.11Windows x86-64

geoveil_cn0-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (503.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

geoveil_cn0-0.3.6-cp311-cp311-macosx_11_0_arm64.whl (450.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

geoveil_cn0-0.3.6-cp310-cp310-win_amd64.whl (442.4 kB view details)

Uploaded CPython 3.10Windows x86-64

geoveil_cn0-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (503.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

geoveil_cn0-0.3.6-cp310-cp310-macosx_11_0_arm64.whl (451.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

geoveil_cn0-0.3.6-cp39-cp39-win_amd64.whl (442.6 kB view details)

Uploaded CPython 3.9Windows x86-64

geoveil_cn0-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (504.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

geoveil_cn0-0.3.6-cp39-cp39-macosx_11_0_arm64.whl (451.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

geoveil_cn0-0.3.6-cp38-cp38-win_amd64.whl (442.8 kB view details)

Uploaded CPython 3.8Windows x86-64

geoveil_cn0-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (504.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

geoveil_cn0-0.3.6-cp38-cp38-macosx_11_0_arm64.whl (451.9 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file geoveil_cn0-0.3.6.tar.gz.

File metadata

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

File hashes

Hashes for geoveil_cn0-0.3.6.tar.gz
Algorithm Hash digest
SHA256 1fb633a0a75cc431303b29108b12bdf45d234b760d668d7532302904f09a88b8
MD5 4050ca52a1e4b320ed4626de0a2a915f
BLAKE2b-256 0d152b29902cd9a0721c551d3c4469c222e66a7ba3e32fb6bb2add625f3fd14d

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6.tar.gz:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: geoveil_cn0-0.3.6-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 443.4 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_cn0-0.3.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9e90aa3971c516a64f0a3cbf5b55f542693dc1a1767ca7b19b86aba35b6ad001
MD5 972d18f6c5069cdb1fda1ba938d8defd
BLAKE2b-256 c2453e98179e9b2495a7b6b7a3c6750333b601d2400087aca775152499440494

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp312-cp312-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11d72654c7dbc99d10647a14d0846c1e5677ee34db66ccbb59141dc0e620f9c4
MD5 43d2acec2a17ddd7aa688375978bb22d
BLAKE2b-256 213bb3114149a426f2fed04e0bc8975522f64f5097a4ad106b3f53087fe5c7d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f716ac9fe0875a7f8c02edc24bf0496e997b786d0afd132bdfbee54f017d066
MD5 897a4d364035e0dc34775098270914fb
BLAKE2b-256 c20421349de51ce987cdb6a2827d3723d161ed59ec748002d475abdd9e857183

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: geoveil_cn0-0.3.6-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 442.0 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_cn0-0.3.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 da8569b09683f9bf440031fb9ec1d9ccf8d97065818fd57e65d2cef0264edb71
MD5 d554a8c210eaab11d585f58f3c3f35c1
BLAKE2b-256 868bdaec6c31b8925b257a8200bcf0b72428209bac81fba703f1717f39a5e292

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp311-cp311-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e81fb3d6c00e6b5411ebd2826ab217e09db095931f42b27ad26a7b2ddfa818ad
MD5 03c29c6b59d82ed9f4de80d43c8267ae
BLAKE2b-256 9b40086f372ae11aa653568898bc6e2fe13c1078456f2c308659ea6847c426f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21f7671fbfb22062799f52d96b14b3bd0c31c37ddc20a8036a290c664e46e2e8
MD5 9e48ea036d8e4aa52f02ffd598b85200
BLAKE2b-256 2e1a86c77ff9206c5e0034708ea618772a21e9cb42ae2d5110df348d3fac8cf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: geoveil_cn0-0.3.6-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 442.4 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_cn0-0.3.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7582c5192f66316c97353997255e2c1ef99fb45d35502ab883abe7323d202fdc
MD5 419190ea74f22e97441b95534154bc0d
BLAKE2b-256 89f6dd47e1967b7f109e86d0cf7d6c18599ea79b7c5f03ca54d12ee72c41cba5

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp310-cp310-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd3576e3ad688e414c15e1bf806815cd5fe749a6b95d3254d316b03971ffbeb6
MD5 4b0ad46bef3909b30cc752ca07d30330
BLAKE2b-256 e35e138e05636ac37c1276b622155ca1ee311ef6c5dcf707eaedd7dd30069e2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 098d8efaf541e8e7b08964f0ad067053c159a6e63b44e2c52adf43f6d4a5b648
MD5 b9b77595fe7aa5250ecc815ea409cb6d
BLAKE2b-256 21816141b80373309c19219e2ee3ec7b9f1233edd7f5a20934da7cba2b47596e

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: geoveil_cn0-0.3.6-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 442.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_cn0-0.3.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 bd6a8a77159e575454e2ad8f5140844908d80fd01858f0ac32ee6a6191024f46
MD5 0b38b75f6974ac571eda0626e7c2e00b
BLAKE2b-256 5d42c5a1a4a118b3a36e57c94d9d954ae32ac96302a2cdbc10a4c110fd807f87

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp39-cp39-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 575c460f36b912f7a46259a4ea55e504dfbf8d50175027f60d07739e30301c8b
MD5 8715c56b02dfbce5690ba4761663bd57
BLAKE2b-256 6887957f3be37434d475a8057082ebd8ea9d785b9868be9fe94236d070092939

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4e17d0aef51a8158074d03045b5d334b41e10a85702c2c47db31e08b77d004d
MD5 a0f1a9d93e249c52adeead236674eb74
BLAKE2b-256 8e3413cf5daafa404db28dd0cdb2088c0c26f49aabd6b7d694a591ce553e3a80

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: geoveil_cn0-0.3.6-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 442.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for geoveil_cn0-0.3.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d11d8e337f641d363528b325643d49d5145772daaa0ede6c8109712bfd27b253
MD5 f89c1cf35007093b9c10ee04b2bf19e9
BLAKE2b-256 e059ebc03541f233caef58129dd1ee689b4af0350dac64f939c1f40e618ea46e

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp38-cp38-win_amd64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 815ef9f1fae06d653f264a15a33e0543a06f45a41b69e05a5f92e441d7a3f97d
MD5 9563d2232c0ff92b9ad7933d25b4ab17
BLAKE2b-256 30bfa474ece7a02975a927c2174a8b4421e75d9106dfc7a1aab1c8815577635a

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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_cn0-0.3.6-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geoveil_cn0-0.3.6-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 75ca7654a6d50813ba8da4a45d083a3d5bf0e3fe6958cca51ce591fbfcf025ff
MD5 4c8a1299ce63abfde73330f8c824cd85
BLAKE2b-256 f06daa02ec578fcaa6cd47cb6b4f04fc5cd0ea5e80722ae1d094c23cfd4fa5e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for geoveil_cn0-0.3.6-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: ci.yml on miluta7/geoveil-cn0

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