Class Reference — gnss-product-management
Every class, dataclass, Protocol, NamedTuple, Enum, and Exception in the package, grouped by architectural layer.
Layer 0 — Configuration & Utilities
Layer 0 contains no standalone classes — only module-level helpers and bundled YAML data. Low-level network I/O is handled at Layer 3 by ConnectionPoolFactory (via fsspec). See Layer 6 — Utilities for the utility classes (_PassthroughDict, IGSAntexReferenceFrameType) and Layer 3 — Factories, Planners & Transport for ConnectionPool / ConnectionPoolFactory.
Layer 1 — Specifications (Data Models)
Immutable data models parsed from YAML. Everything here is a Pydantic BaseModel
unless noted otherwise.
Parameters
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
— |
|
Formats
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Products
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Remote Resources
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Local Resources
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
|
Dependencies
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Abstract Base
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
Abstract |
Relationships
Catalog (abstract BaseModel)
├── FormatCatalog
├── ProductCatalog
└── ResourceCatalog
Parameter ──used-by──► PathTemplate
Parameter ──used-by──► Product
Parameter ──used-by──► FormatSpec
Parameter ──used-by──► ResourceProductSpec
PathTemplate ──field-of──► Product
PathTemplate ──field-of──► SearchTarget (directory)
Product ──field-of──► SearchTarget
Server ──field-of──► SearchTarget
VersionCatalog[T] / VariantCatalog[T]
└── wraps FormatSpec, ProductSpec, Product
FormatSpec ──resolved-into──► Product (via FormatCatalog.build)
ProductSpec ──resolved-into──► Product (via ProductCatalog.build)
ResourceSpec ──resolved-into──► ResourceCatalog (queries: List[SearchTarget])
SearchPreference ──used-by──► DependencySpec
Dependency ──used-by──► DependencySpec
ResolvedDependency ──used-by──► DependencyResolution
Layer 2 — Environments & Registry
Load YAML specs, build catalogs, and register local storage layouts.
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
Holds raw spec models before catalog build |
|
|
— |
Central registry: loads YAML → builds |
|
|
|
|
|
|
— |
Registry of local storage directories and layout specs |
Relationships
ProductRegistry (implements SourcePlanner Protocol — remote resources)
├── owns FormatCatalog
├── owns ProductCatalog
├── owns ParameterCatalog
└── owns ResourceCatalog[] (built from ResourceSpec files)
WorkSpace (implements SourcePlanner Protocol — local resources)
└── owns RegisteredLocalResource[]
├── references LocalResourceSpec
└── references Server
Layer 3 — Factories, Planners & Transport
Query construction, remote search, download, ranking, and dependency resolution.
Protocols
Class |
File |
Base |
Description |
|---|---|---|---|
|
|
|
Common interface: |
Connection Management
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
— |
|
|
|
— |
|
Search Planners
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
— |
|
SearchPlanner delegates remote lookups to ProductRegistry and local lookups to WorkSpace — both satisfy the SourcePlanner Protocol (resource_ids, source_product(), sink_product()).
Transport
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
— |
|
Dependency Resolution
Dependency resolution is handled by ResolvePipeline (see Pipelines below). There is no separate DependencyResolver class.
Models & Exceptions
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pipelines
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
— |
|
|
|
— |
|
|
|
— |
|
Ranking (module-level functions, no classes)
Function |
File |
Signature |
|---|---|---|
|
|
|
|
|
|
Relationships
SourcePlanner (Protocol)
├── ProductRegistry implements SourcePlanner (remote resources)
└── WorkSpace implements SourcePlanner (local resources)
SearchPlanner
├── uses ProductRegistry (_product_registry) — remote resource_ids / source_product
└── uses WorkSpace (_workspace) — local resource_ids / source_product
WormHole
├── owns ConnectionPoolFactory
├── reads SearchTarget[] → search() → SearchTarget[] (expanded)
└── reads SearchTarget → download_one() → Path
DownloadPipeline
├── owns SearchPlanner
├── owns WormHole
├── reads FoundResource._query → WormHole.download_one()
└── produces Path
LockfileWriter
├── owns LockfileManager
├── reads DependencyResolution
└── produces Path (lockfile)
ResolvePipeline
├── owns ProductQuery (_query)
├── owns DownloadPipeline
├── calls ranking.sort_by_protocol / sort_by_preferences (via ProductQuery)
├── reads DependencySpec
└── produces (DependencyResolution, Path)
Layer 4 — Client API
High-level entry points consumed by application code.
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
— |
|
|
|
— |
|
Search results are returned as FoundResource objects (see Layer 3 — Models & Exceptions).
Relationships
GNSSClient
├── owns ProductRegistry
├── owns SearchPlanner
├── owns WormHole
├── creates ProductQuery (fluent builder)
├── delegates to ResolvePipeline (dependency resolution)
└── produces FoundResource[], DependencyResolution
ProductQuery (fluent builder)
├── uses WormHole
├── uses SearchPlanner
└── produces FoundResource[]
Layer 5 — Lockfile Management
Persist reproducible product manifests as JSON sidecar files.
Class |
File |
Base |
Key Fields |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
— |
|
Relationships
DependencyLockFile
└── contains LockProduct[]
└── contains LockProductAlternative[]
LockfileManager
├── reads/writes DependencyLockFile
├── uses LockProduct
└── uses HashMismatchMode (via operations)
Layer 6 — Utilities
Class |
File |
Base |
Description |
|---|---|---|---|
|
|
|
Returns |
|
|
|
IGS ANTEX reference frame identifiers ( |
Module-Level Singletons
Name |
File |
Type |
Description |
|---|---|---|---|
|
|
|
Pre-configured registry built from bundled YAML |
|
|
|
Pre-configured workspace built from bundled YAML |
Full Dependency Graph (simplified)
┌─────────────────────────────────────────────────────────────────┐
│ Client API │
│ GNSSClient ──► ProductQuery ──► FoundResource[] │
└──────┬──────────────────────────────────────────────────────────┘
│ uses
┌──────▼──────────────────────────────────────────────────────────┐
│ Pipelines │
│ ResolvePipeline ──► ProductQuery ──► DownloadPipeline │
│ └──► LockfileWriter │
└──────┬──────────────────────────────────────────────────────────┘
│ uses
┌──────▼──────────────────────────────────────────────────────────┐
│ Factories │
│ SearchPlanner ──► ProductRegistry (remote, via SourcePlanner) │
│ └──► WorkSpace (local, via SourcePlanner) │
│ WormHole ──► ConnectionPoolFactory ──► ConnectionPool │
│ ranking.sort_by_protocol / sort_by_preferences │
└──────┬──────────────────────────────────────────────────────────┘
│ uses
┌──────▼──────────────────────────────────────────────────────────┐
│ Environments │
│ ProductRegistry ──► builds catalogs from specs │
│ WorkSpace ──► RegisteredLocalResource[] │
└──────┬──────────────────────────────────────────────────────────┘
│ uses
┌──────▼──────────────────────────────────────────────────────────┐
│ Specifications (BaseModel data layer) │
│ Parameter, PathTemplate, Product, Server, SearchTarget │
│ FormatCatalog, ProductCatalog, ResourceCatalog │
│ DependencySpec, DependencyResolution, SearchPreference │
│ LocalResourceSpec, LocalCollection │
└──────┬──────────────────────────────────────────────────────────┘
│ uses
┌──────▼──────────────────────────────────────────────────────────┐
│ Utilities / Configuration (Layer 0) │
│ as_path(), hash_file(), decompress_gzip(), bundled YAMLs │
└─────────────────────────────────────────────────────────────────┘
Lockfile Management (cross-cutting)
LockfileManager ──► DependencyLockFile ──► LockProduct