Utility functions and configuration management 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 credentialsconfig/sites.yaml- Research site definitionsconfig/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) inconfig/processing.yamlfor NASA CDDIS access - Set
gnss_site_data_rootper site inconfig/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_mailis set: NASA CDDIS (primary) → ESA (fallback) - If
nasa_earthdata_acc_mailis null: ESA only (no authentication) - ESA server is always available as fallback
Configuration Priority
- Package defaults (lowest priority)
- 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
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.0.tar.gz
(33.1 kB
view details)
Built Distribution
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 canvod_utils-0.2.0.tar.gz.
File metadata
- Download URL: canvod_utils-0.2.0.tar.gz
- Upload date:
- Size: 33.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70f5ba7944c8ca1658f49d191831585c58345cf7f4ac2bc515d72ae9674dcd37
|
|
| MD5 |
8d302419adb42d054a60311e3ec11912
|
|
| BLAKE2b-256 |
f9ee343d62fff5c596ac47106776a87c017c9dcb650e498ee9adaaa57fc6e494
|
File details
Details for the file canvod_utils-0.2.0-py3-none-any.whl.
File metadata
- Download URL: canvod_utils-0.2.0-py3-none-any.whl
- Upload date:
- Size: 42.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a0a954c47ac9dbefe7fea2dd94c85b91d4d1124e2379482d40063e9d6614bdd
|
|
| MD5 |
02bcf95701ab08349863756727820211
|
|
| BLAKE2b-256 |
7cf1a8ed9886625ef29b784d08b8aac760dda09966d91b124ff173038ebc835b
|