Repository layout
The importable public package is everything under src/metadata_tools/
except the hosts/ subpackage. The hosts/ subpackage and everything
outside src/ is supporting code: per-collection configuration, templates,
tests, docs, and tooling.
rms-metadata-tools/
pyproject.toml # packaging, dependencies, and tool configuration
requirements.txt # runtime requirements (mirrors pyproject)
README.md # project front page (included into these docs)
CONTRIBUTING.md # contribution workflow
codecov.yml # coverage service configuration
scripts/
run-all-checks.sh # single source of truth for the quality gates
read-docs.sh # build the docs (-W) and open them in a browser
docs/ # Sphinx documentation source (this site)
conf.py # single Sphinx configuration
index.rst # documentation root
user_guide/ # the end-user manual
dev_guide/ # this developer manual, including api/
tests/ # pytest suite (see Environment setup)
hosts/<HOST>/ # host-specific tests (requires_archive)
src/
metadata_tools/ # the importable engine (public package)
__init__.py # package docstring and version
common.py # Table base class, global logger, and CLI argument helpers
config.py # host config registry (set_host / get_*_config)
task_list_support.py # task file generation for cloud workers
index_support/ # IndexTable and process_index() (package)
__init__.py
table.py
process.py
key_fns.py
geometry_support/ # geometry engine (package)
cumulative_support.py # cumulative table concatenation
label_support.py # PDS3 label generation from templates
cli/ # installed console-script entry points
index.py # metadata-index
geometry.py # metadata-geometry
cumulative.py # metadata-cumulative
index_worker.py # metadata-index-worker (local parallel)
geometry_worker.py # metadata-geometry-worker (local parallel)
cumulative_worker.py # metadata-cumulative-worker (local parallel)
index_cloud.py # metadata-index-cloud (GCP dispatch)
geometry_cloud.py # metadata-geometry-cloud (GCP dispatch)
cumulative_cloud.py # metadata-cumulative-cloud (GCP dispatch)
task_list.py # metadata-task-list
_host.py # shared host-directory injection helpers
columns/ # geometry column definitions (body/ring/sky/sun)
bodies.py # builds the oops Body registry
util.py # path, text, time, and math utilities
defs.py # constants (body names, ring radii, paths)
templates/ # shared PDS3 label-template fragments
_version.py # version string, auto-generated by setuptools-scm
hosts/ # per-collection configuration + scripts
GO_0xxx/ # Galileo SSI host (the reference example)
The geometry engine is a package:
src/metadata_tools/geometry_support/
__init__.py # re-exports the public surface (entry points + classes)
process.py # get_args() and process_tables() (the stage entry point)
suite.py # Suite: the set of geometry tables for one volume
record.py # Record: one observation's row across all tables
tables.py # InventoryTable, SkyTable, SunTable, RingTable, BodyTable
prep.py # prep_row(): builds the formatted columns for a row
masks.py # construct_excluded_mask(): excluded-pixel masks
formatting.py # numeric/ISO column formatting
formats.py # FORMAT_DICT: per-column format/units/null/range metadata
bodies_select.py # primary/body selection and field-of-view inventory
A host directory contains configuration and templates only — there are no per-host runnable scripts; every host is driven through the shared console-script entry points (see Environment setup):
src/metadata_tools/hosts/GO_0xxx/
host_config.py # shared host settings + get_volume_id()
index_config.py # index glob + key__<NAME> column functions
geometry_config.py # SPICE id, mission table, meshgrids, hooks
host_init.py # initializes the oops host module (side effects)
templates/ # host PDS3 label templates
GCP deployment files live outside the package and are not installed with the wheel:
cloud/
gcp_common_startup.sh # shared VM bootstrap template
GO_0xxx/
gcp_index_config.yml # GCP machine/queue config for the index stage
gcp_geometry_config.yml # GCP machine/queue config for the geometry stage
gcp_cumulative_config.yml # GCP machine/queue config for the cumulative stage
tasks.json # example/output task file
GCP instance startup scripts are generated at runtime by
metadata_tools.cli._host.build_startup_script (invoked by the *-cloud
entry points, or previewed directly with --create-startup-file); they are never
stored in the repository. The cli package is console-script entry-point code,
not a stable import surface, so it is not part of the API Reference.