Shared support
Overview
Several modules are used by all three stages. They provide the base table class, the global logger, label generation, the column-definition data, and a library of utilities.
common – base class, logging, and CLI
metadata_tools.common holds:
Table, the base class for every table kind (see Architecture).The global
pdslogger.PdsLogger, obtained throughget_logger()and configured per run byinit_logger(). Library code logs through this logger; it never usesloggingdirectly or bareprint.The shared argument parser
get_common_args(), which the per-stageget_argsfunctions extend. Itsvolume_arg/metadata_arg/output_argparameters select which positional path arguments a stage takes, andPathActionnormalizes path separators while preserving URI prefixes.The cloud-task plumbing (
add_task(),write_task_file(),task_source()) shared by the*_cloud.pyworkers.
label_support – PDS3 labels
create() generates a .lbl label for a
table by rendering the host’s template (or a shared template from the global
templates/ directory) with rms-pdstemplate. The inventory table uses no
table preprocessor; the other kinds use the PDS3 table preprocessor so column
definitions are validated against the data.
columns – geometry column definitions
The metadata_tools.columns package assembles and re-exports the geometry
column-definition tables for the body, ring, sky, and sun tables (see
Geometry column definitions). The per-body dictionaries are built at import time by
substituting each body name into a placeholder
(BODYX) in the generic column lists. Because this
substitution runs at import, the oops body registry must already be
populated (see bodies below).
bodies – the oops body registry
get_bodies() builds the mapping from body name to
oops Body object, including each primary’s regular children, and
BODIES is computed once on import. This requires
the host’s oops module to have been initialized first (so SPICE bodies are
registered), which is why metadata_tools.bodies is excluded from the
hermetic test coverage and stubbed in the test fixtures.
util and defs
metadata_tools.util is the utility library: path helpers built on
FCPath (select_dir(),
get_index_name(),
parse_template_name(),
get_volume_glob()), text-file read/write helpers that
work for local and remote paths, spacecraft-clock parsing/formatting, the
placeholder-substitution helpers used by the columns package
(replace(),
replacement_dict()), and the cyclic-range estimator
used by longitude columns.
metadata_tools.defs holds the constants: the planet name list
(BODY_NAMES), the ring-system radii, the global
template path, and the BODYX placeholder.
Invariants
Paths. Every file access goes through
FCPathso local and remote storage are interchangeable; do not downcast topathlib.Pathorstr. The package never creates directories throughFCPath.Logging. There is a single global logger; per-run handlers are added by
init_logger().Import order.
BODIESand themetadata_tools.columnstables are computed at import and depend on an initializedoopsregistry.