Skip to main content

Configuration models and shared utilities for canVODpy

Project description

canvod-utils

Utility functions and configuration management for canvodpy.

Features

  • Type-safe configuration: Pydantic models with validation
  • YAML-based config: Human-readable configuration files
  • CLI tools: Easy configuration management
  • API-ready: Same models work for files and APIs

Installation

uv pip install -e packages/canvod-utils

Quick Start

1. Initialize Configuration

just config-init

This creates:

  • config/processing.yaml - Processing parameters and credentials
  • config/sites.yaml - Research site definitions
  • config/sids.yaml - Signal ID selection

2. Edit Configuration

# Edit in your preferred editor
just config-edit processing
just config-edit sites
just config-edit sids

Or edit files directly:

  • Set nasa_earthdata_acc_mail (optional) in config/processing.yaml for NASA CDDIS access
  • Set gnss_site_data_root per site in config/sites.yaml
  • Define your research sites in config/sites.yaml

3. Validate Configuration

just config-validate

4. Use in Code

from canvod.utils.config import load_config

# Load configuration
config = load_config()

# Access values
print(config.nasa_earthdata_acc_mail)
print(config.processing.aux_data.agency)

# FTP server selection (auto-detect based on nasa_earthdata_acc_mail)
servers = config.processing.aux_data.get_ftp_servers(config.nasa_earthdata_acc_mail)
for server_url, auth_email in servers:
    print(f"Server: {server_url}, Auth: {auth_email}")

Configuration Structure

processing.yaml

credentials:
  nasa_earthdata_acc_mail: your.email@example.com  # Optional

aux_data:
  agency: COD
  product_type: final

processing:
  resource_mode: auto
  keep_rnx_vars: [SNR]
  aggregate_glonass_fdma: true

sites.yaml

sites:
  rosalia:
    gnss_site_data_root: /path/to/rosalia
    receivers:
      reference_01:
        type: reference
        directory: 01_reference/01_GNSS/01_raw
      canopy_01:
        type: canopy
        directory: 02_canopy/01_GNSS/01_raw
    vod_analyses:
      canopy_01_vs_reference_01:
        canopy_receiver: canopy_01
        reference_receiver: reference_01

sids.yaml

mode: all  # all, preset, custom
# preset: gps_galileo
# custom_sids: [G01|L1|C, G01|L2|W, ...]

CLI Commands

# Initialize configuration
just config-init

# Validate configuration
just config-validate

# Show current configuration
just config-show
uv run canvodpy config show --section processing  # filtered view

# Edit configuration
just config-edit processing
just config-edit sites
just config-edit sids

FTP Server Selection

  • If nasa_earthdata_acc_mail is set: NASA CDDIS (primary) → ESA (fallback)
  • If nasa_earthdata_acc_mail is null: ESA only (no authentication)
  • ESA server is always available as fallback

Configuration Priority

  1. Package defaults (lowest priority)
  2. User configuration files (highest priority)

API-Ready Design

Same Pydantic models work for both local files and future API:

# Local development (YAML files)
config = load_config()

# Future API usage (same models!)
@app.post("/process")
def process(config: CanvodConfig):
    return processor.run(config)

Documentation

Centralized documentation

Development

# Install dev dependencies
uv pip install -e "packages/canvod-utils[dev]"

# Run tests
pytest packages/canvod-utils/tests

# Lint and format
ruff check packages/canvod-utils
ruff format packages/canvod-utils

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

canvod_utils-0.2.1.tar.gz (33.3 kB view details)

Uploaded Source

Built Distribution

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

canvod_utils-0.2.1-py3-none-any.whl (43.0 kB view details)

Uploaded Python 3

File details

Details for the file canvod_utils-0.2.1.tar.gz.

File metadata

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

File hashes

Hashes for canvod_utils-0.2.1.tar.gz
Algorithm Hash digest
SHA256 74f17574f59216a94d4cad5b319d0c7bb326a0e946ab0ac371e30eabb3457a58
MD5 946e02677b997b404721359a91d2e475
BLAKE2b-256 a8320d2dea290678910786d57ffc5b157bc2d25677ee631bf4178838a009bd91

See more details on using hashes here.

Provenance

The following attestation bundles were made for canvod_utils-0.2.1.tar.gz:

Publisher: publish_pypi.yml on nfb2021/canvodpy

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

File details

Details for the file canvod_utils-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: canvod_utils-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 43.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for canvod_utils-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 050512bb2e3af1625a665e2626ccc9a583c14d3983a796ebc68b1cc110a5c5ba
MD5 e7bbafbf7f2663db6e57a0cce38eda38
BLAKE2b-256 1d8250a6775ae4e1941d153788dcedafe3083698055cfa52ee8d6962fc301a8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for canvod_utils-0.2.1-py3-none-any.whl:

Publisher: publish_pypi.yml on nfb2021/canvodpy

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