.gitattributes
.gitignore
.readthedocs.yaml
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
README.md
codecov.yml
pyproject.toml
requirements.txt
run_tests_coverage.sh
.cursor/settings.json
.cursor/rules/bug_report.mdc
.cursor/rules/dependency_management.mdc
.cursor/rules/doc_dev_guide.mdc
.cursor/rules/doc_how_to.mdc
.cursor/rules/doc_python.mdc
.cursor/rules/doc_readme.mdc
.cursor/rules/doc_user_guide.mdc
.cursor/rules/environment.mdc
.cursor/rules/git_workflow.mdc
.cursor/rules/logging.mdc
.cursor/rules/pdsfile_overrides.mdc
.cursor/rules/pull_request.mdc
.cursor/rules/python.mdc
.cursor/rules/python_testing.mdc
.cursor/rules/security.mdc
.cursor/skills/critique-documentation/SKILL.md
.cursor/skills/critique-test-suite/SKILL.md
.cursor/skills/python-codebase-analysis/SKILL.md
.cursor/skills/python-codebase-analysis/reference.md
.cursor/skills/run-all-checks/SKILL.md
.github/pull_request_template.md
.github/ISSUE_TEMPLATE/bug_report.md
.github/ISSUE_TEMPLATE/config.yml
.github/ISSUE_TEMPLATE/feature_request.md
.github/ISSUE_TEMPLATE/other.md
.github/workflows/publish_to_pypi.yml
.github/workflows/publish_to_test_pypi.yml
.github/workflows/run-tests-and-opus.yml
.github/workflows/run-tests.yml
.vscode/settings.json
critiques/2025-08-15-code-quality-analysis.md
critiques/2026-07-19-plan-vs-code-quality-analysis.md
critiques/2026-07-21-unified-mini-holdings-analysis.md
critiques/2026-08-16-codebase-analysis.md
critiques/2026-08-16-critique-triage.md
critiques/2026-08-16-documentation-critique.md
critiques/2026-08-16-test-suite-critique.md
critiques/README.md
critiques/coderabbit-findings.md
critiques/deferred-observations.md
critiques/observations-p1.md
critiques/observations-p2.md
critiques/observations-p3.md
critiques/observations-p4.md
critiques/observations-scheduled.md
critiques/observations.md
critiques/owner-four-items-validation.md
critiques/phase5-validation.md
critiques/phase6-validation.md
critiques/pr-25a-validation.md
critiques/pr-26-validation.md
critiques/pr-27-validation.md
critiques/pr-28-validation.md
critiques/pr-28a-validation.md
critiques/pr-29-validation.md
critiques/pr-29a-validation.md
critiques/pr-29b-validation.md
critiques/pr-30-validation.md
critiques/pr-30a-validation.md
critiques/pr-30b-validation.md
critiques/pr-30c-validation.md
critiques/pr-31-validation.md
critiques/pr-32-validation.md
critiques/pr-33-validation.md
critiques/pr-33a-validation.md
critiques/pr-34-validation.md
critiques/pr-35-validation.md
critiques/shelf-consistency-check-removal-validation.md
critiques/baselines/consumer-smoke-baseline.md
critiques/owner-four-items/round-1.md
critiques/owner-four-items/round-2.md
critiques/owner-four-items/round-3.md
critiques/owner-four-items/round-4.md
critiques/pr-02/round-1.md
critiques/pr-02/round-2.md
critiques/pr-02/validation.md
critiques/pr-03-04/fulldata_ns.md
critiques/pr-03-04/round-1.md
critiques/pr-03-04/validation.md
critiques/pr-05/round-1.md
critiques/pr-05/validation.md
critiques/pr-06/round-1.md
critiques/pr-06/validation.md
critiques/pr-07/round-1.md
critiques/pr-07/validation.md
critiques/pr-08/round-1.md
critiques/pr-08/round-2.md
critiques/pr-08/round-3.md
critiques/pr-09/round-1.md
critiques/pr-09/round-2.md
critiques/pr-13/ci-and-coderabbit.md
critiques/pr-13/round-1.md
critiques/pr-13/round-2.md
critiques/pr-13/round-3.md
critiques/pr-13/round-4.md
critiques/pr-13/round-5.md
critiques/pr-13/round-6.md
critiques/pr-13/round-7.md
critiques/pr-13/topology.md
critiques/pr-13/validation.md
critiques/pr-14/round-1.md
critiques/pr-14/round-2.md
critiques/pr-14/round-3.md
critiques/pr-14/round-4.md
critiques/pr-14/topology.md
critiques/pr-14/validation.md
critiques/pr-15/prediction.md
critiques/pr-15/round-1.md
critiques/pr-15/round-2.md
critiques/pr-15/round-3.md
critiques/pr-15/round-4.md
critiques/pr-15/topology.md
critiques/pr-16/round-1.md
critiques/pr-16/round-2.md
critiques/pr-16/round-3.md
critiques/pr-16/round-4.md
critiques/pr-16/topology.md
critiques/pr-17/round-1.md
critiques/pr-17/round-2.md
critiques/pr-17/round-3.md
critiques/pr-17/round-4.md
critiques/pr-17/round-5.md
critiques/pr-17/topology.md
critiques/pr-18/round-1.md
critiques/pr-18/round-2.md
critiques/pr-18/round-3.md
critiques/pr-18/round-4.md
critiques/pr-18/topology.md
critiques/pr-19/round-1.md
critiques/pr-19/round-2.md
critiques/pr-19/round-3.md
critiques/pr-19/round-4.md
critiques/pr-19/topology.md
critiques/pr-20/round-1.md
critiques/pr-20/round-2.md
critiques/pr-20/round-3.md
critiques/pr-20/round-4.md
critiques/pr-20/topology.md
critiques/pr-21/round-1.md
critiques/pr-21/round-2.md
critiques/pr-21/round-3.md
critiques/pr-21/round-4.md
critiques/pr-21/topology.md
critiques/pr-22/round-1.md
critiques/pr-22/round-2.md
critiques/pr-22/round-3.md
critiques/pr-22/round-4.md
critiques/pr-22/topology.md
critiques/pr-23/round-1.md
critiques/pr-23/round-2.md
critiques/pr-23/round-3.md
critiques/pr-23/round-4.md
critiques/pr-23/round-5.md
critiques/pr-23/topology.md
critiques/pr-24/round-1.md
critiques/pr-24/round-2.md
critiques/pr-24/round-3.md
critiques/pr-24/round-4.md
critiques/pr-24/topology.md
critiques/pr-25/round-1.md
critiques/pr-25/round-2.md
critiques/pr-25/round-3.md
critiques/pr-25/round-4.md
critiques/pr-25/round-5.md
critiques/pr-25/round-6.md
critiques/pr-25a/round-1.md
critiques/pr-25a/round-2.md
critiques/pr-25a/round-3.md
critiques/pr-25a/round-4.md
critiques/pr-26/round-1.md
critiques/pr-26/round-2.md
critiques/pr-26/round-3.md
critiques/pr-27/check_record_numbers.py
critiques/pr-27/round-1.md
critiques/pr-27/round-2.md
critiques/pr-27/round-3.md
critiques/pr-27/round-4.md
critiques/pr-28/check_record_numbers.py
critiques/pr-28/round-1.md
critiques/pr-28/round-2.md
critiques/pr-28/round-3.md
critiques/pr-28/round-4.md
critiques/pr-28a/check_record_numbers.py
critiques/pr-28a/round-1.md
critiques/pr-28a/round-2.md
critiques/pr-29/check_citations.py
critiques/pr-29/check_comments.py
critiques/pr-29/measure.py
critiques/pr-29/review-round-1.md
critiques/pr-29/review-round-2.md
critiques/pr-29/review-round-3.md
critiques/pr-29/review-round-4.md
critiques/pr-29/sphinx-conf.py
critiques/pr-29/strip_docstrings.py
critiques/pr-29a/build_docs_probe.py
critiques/pr-29a/derive_state_contract.py
critiques/pr-29a/measure_module_lines.py
critiques/pr-29a/round-1.md
critiques/pr-29a/round-2.md
critiques/pr-29a/round-3.md
critiques/pr-29a/round-4.md
critiques/pr-29b/README.md
critiques/pr-29b/remap_citations.py
critiques/pr-29b/round-1.md
critiques/pr-29b/round-2.md
critiques/pr-29b/round-3.md
critiques/pr-29b/round-4.md
critiques/pr-29b/round-5.md
critiques/pr-30/check_rule_tables.py
critiques/pr-30/round-1.md
critiques/pr-30/round-2.md
critiques/pr-30/round-3.md
critiques/pr-30/round-4.md
critiques/pr-30a/check_spec_readers.py
critiques/pr-30a/round-1.md
critiques/pr-30a/round-2.md
critiques/pr-30a/round-3.md
critiques/pr-30a/round-4.md
critiques/pr-30b/check_flavor_vocabulary.py
critiques/pr-30b/round-1.md
critiques/pr-30b/round-2.md
critiques/pr-30b/round-3.md
critiques/pr-30b/round-4.md
critiques/pr-30c/round-1.md
critiques/pr-30c/round-2.md
critiques/pr-30c/round-3.md
critiques/pr-30c/round-4.md
critiques/pr-31/round-1.md
critiques/pr-31/round-2.md
critiques/pr-31/round-3.md
critiques/pr-31/round-4.md
critiques/pr-32/check_cli_coverage.py
critiques/pr-32/round-1.md
critiques/pr-32/round-2.md
critiques/pr-32/round-3.md
critiques/pr-32/round-4.md
critiques/pr-32/round-5.md
critiques/pr-33/round-1.md
critiques/pr-33/round-2.md
critiques/pr-33/round-3.md
critiques/pr-33/round-4.md
critiques/pr-33/round-5.md
critiques/pr-33a/round-1.md
critiques/pr-33a/round-2.md
critiques/pr-33a/round-3.md
critiques/pr-33a/round-4.md
critiques/pr-34/round-1.md
critiques/pr-34/round-2.md
critiques/pr-34/round-3.md
critiques/pr-35/derivation-core.md
critiques/pr-35/derivation-derivedpaths-localfs-preload-assoc-opus.md
critiques/pr-35/derivation-pds3file-pds4file.md
critiques/pr-35/derivation-properties.md
critiques/pr-35/derivation-rule-classes.md
critiques/pr-35/derivation-sorting-shelves-index.md
critiques/pr-35/round-1.md
critiques/pr-35/round-2.md
critiques/pr-35/round-3.md
critiques/pr-35/round-4.md
critiques/pr-36/round-1.md
critiques/pr-36/round-2.md
critiques/pr-36/round-3.md
critiques/pr-36/round-4.md
critiques/register-reconciliation/round-1.md
critiques/register-reconciliation/round-2.md
critiques/shelf-consistency-check-removal/round-1.md
critiques/shelf-consistency-check-removal/round-2.md
critiques/shelf-consistency-check-removal/round-3.md
critiques/shelf-consistency-check-removal/round-4.md
docs/Makefile
docs/conf.py
docs/index.rst
docs/api/core.rst
docs/api/holdings_maintenance.rst
docs/api/index.rst
docs/api/pds3file.rst
docs/api/pds4file.rst
docs/api/tools.rst
docs/dev_guide/dev_guide.rst
docs/dev_guide/dev_guide_architecture.rst
docs/dev_guide/dev_guide_ci.rst
docs/dev_guide/dev_guide_extending_rules.rst
docs/dev_guide/dev_guide_extending_tools.rst
docs/dev_guide/dev_guide_goldens.rst
docs/dev_guide/dev_guide_repository_layout.rst
docs/dev_guide/dev_guide_subsystems.rst
docs/dev_guide/dev_guide_testing.rst
docs/user_guide/user_guide.rst
docs/user_guide/user_guide_appendix_file_formats.rst
docs/user_guide/user_guide_concepts.rst
docs/user_guide/user_guide_crlf.rst
docs/user_guide/user_guide_installation.rst
docs/user_guide/user_guide_maintenance_tools.rst
docs/user_guide/user_guide_pds4archives.rst
docs/user_guide/user_guide_pds4checksums.rst
docs/user_guide/user_guide_pds4indexshelf.rst
docs/user_guide/user_guide_pds4infoshelf.rst
docs/user_guide/user_guide_pds4linkshelf.rst
docs/user_guide/user_guide_pdsarchives.rst
docs/user_guide/user_guide_pdschecksums.rst
docs/user_guide/user_guide_pdsdependency.rst
docs/user_guide/user_guide_pdsindexshelf.rst
docs/user_guide/user_guide_pdsinfoshelf.rst
docs/user_guide/user_guide_pdslinkshelf.rst
docs/user_guide/user_guide_re_validate.rst
docs/user_guide/user_guide_shell_scripts.rst
docs/user_guide/user_guide_show_opus_products.rst
plans/2026-07-25-addendum-holdings-free-marker.md
plans/2026-07-25-mini-holdings-plan.md
plans/2026-07-25-modernization-plan.md
plans/2026-07-25-pr-13-subplan.md
plans/2026-07-26-addendum-phase5-stacked-prs.md
plans/2026-07-27-addendum-phase5-mixin-base-order.md
plans/2026-07-27-addendum-phase5-stack-extension.md
plans/2026-07-27-pr-16-subplan.md
plans/2026-07-27-pr-17-subplan.md
plans/2026-07-27-pr-18-subplan.md
plans/2026-07-27-pr-19-subplan.md
plans/2026-07-27-pr-20-subplan.md
plans/2026-07-27-pr-21-subplan.md
plans/2026-07-27-pr-22-subplan.md
plans/2026-08-03-addendum-pr23-24-owner-decisions.md
plans/2026-08-03-pr-23-subplan.md
plans/2026-08-04-pr-24-subplan.md
plans/2026-08-04-pr-25-deviations-addendum.md
plans/2026-08-04-pr-25-subplan.md
plans/2026-08-07-pr-28-deviation-addendum.md
plans/2026-08-16-addendum-owner-four-items.md
plans/2026-08-16-addendum-update-holdings-script-fix.md
plans/2026-08-16-pr-33-subplan.md
plans/2026-08-16-shelf-consistency-check-removal-addendum.md
plans/README.md
plans/archive/2026-07-17-modernization-plan.md
plans/archive/2026-07-23-pr-03-04-subplan.md
plans/archive/2026-07-24-pr-08-subplan.md
scripts/check_runtime_imports.py
scripts/clean_install_check.sh
scripts/dump_public_api.py
scripts/gen_ruff_ratchet.py
scripts/read-docs.sh
scripts/run-all-checks.sh
scripts/stubtest_allowlist.txt
scripts/automated_tests/pdsfile_main_test.sh
src/pdsfile/__init__.py
src/pdsfile/__init__.pyi
src/pdsfile/_associations.py
src/pdsfile/_derived_paths.py
src/pdsfile/_index_rows.py
src/pdsfile/_local_fs.py
src/pdsfile/_opus.py
src/pdsfile/_path_utils.py
src/pdsfile/_preload.py
src/pdsfile/_properties.py
src/pdsfile/_shelves.py
src/pdsfile/_sorting.py
src/pdsfile/_version.py
src/pdsfile/pdscache.py
src/pdsfile/pdscache.pyi
src/pdsfile/pdsfile.py
src/pdsfile/pdsfile.pyi
src/pdsfile/pdsviewable.py
src/pdsfile/pdsviewable.pyi
src/pdsfile/preload_and_cache.py
src/pdsfile/preload_and_cache.pyi
src/pdsfile/py.typed
src/pdsfile/holdings_maintenance/__init__.py
src/pdsfile/holdings_maintenance/_archives_common.py
src/pdsfile/holdings_maintenance/_common.py
src/pdsfile/holdings_maintenance/_indexshelf_common.py
src/pdsfile/holdings_maintenance/_linkshelf_common.py
src/pdsfile/holdings_maintenance/_shelf_common.py
src/pdsfile/holdings_maintenance/pds3/__init__.py
src/pdsfile/holdings_maintenance/pds3/copy_all_except_metadata.sh
src/pdsfile/holdings_maintenance/pds3/copy_documents.sh
src/pdsfile/holdings_maintenance/pds3/copy_shelves.sh
src/pdsfile/holdings_maintenance/pds3/create_fake_volumes_for_metadata.sh
src/pdsfile/holdings_maintenance/pds3/crlf.py
src/pdsfile/holdings_maintenance/pds3/linkshelf_repairs.py
src/pdsfile/holdings_maintenance/pds3/pdsarchives.py
src/pdsfile/holdings_maintenance/pds3/pdschecksums.py
src/pdsfile/holdings_maintenance/pds3/pdsdata-sync-volset-metadata-versions.sh
src/pdsfile/holdings_maintenance/pds3/pdsdata-sync-volset-metadata.sh
src/pdsfile/holdings_maintenance/pds3/pdsdata-sync-volset-previews.sh
src/pdsfile/holdings_maintenance/pds3/pdsdata-sync-volset.sh
src/pdsfile/holdings_maintenance/pds3/pdsdata-sync-volume-metadata.sh
src/pdsfile/holdings_maintenance/pds3/pdsdata-sync-volume.sh
src/pdsfile/holdings_maintenance/pds3/pdsdependency.py
src/pdsfile/holdings_maintenance/pds3/pdsindexshelf.py
src/pdsfile/holdings_maintenance/pds3/pdsinfoshelf.py
src/pdsfile/holdings_maintenance/pds3/pdslinkshelf.py
src/pdsfile/holdings_maintenance/pds3/re_validate.py
src/pdsfile/holdings_maintenance/pds3/setup_new_holdings.sh
src/pdsfile/holdings_maintenance/pds3/update_holdings_for_new_metadata.sh
src/pdsfile/holdings_maintenance/pds4/__init__.py
src/pdsfile/holdings_maintenance/pds4/pds4archives.py
src/pdsfile/holdings_maintenance/pds4/pds4checksums.py
src/pdsfile/holdings_maintenance/pds4/pds4indexshelf.py
src/pdsfile/holdings_maintenance/pds4/pds4infoshelf.py
src/pdsfile/holdings_maintenance/pds4/pds4linkshelf.py
src/pdsfile/pds3file/__init__.py
src/pdsfile/pds3file/__init__.pyi
src/pdsfile/pds3file/rules/ASTROM_xxxx.py
src/pdsfile/pds3file/rules/ASTROM_xxxx.pyi
src/pdsfile/pds3file/rules/COCIRS_xxxx.py
src/pdsfile/pds3file/rules/COCIRS_xxxx.pyi
src/pdsfile/pds3file/rules/COISS_xxxx.py
src/pdsfile/pds3file/rules/COISS_xxxx.pyi
src/pdsfile/pds3file/rules/CORSS_8xxx.py
src/pdsfile/pds3file/rules/CORSS_8xxx.pyi
src/pdsfile/pds3file/rules/COSP_xxxx.py
src/pdsfile/pds3file/rules/COSP_xxxx.pyi
src/pdsfile/pds3file/rules/COUVIS_0xxx.py
src/pdsfile/pds3file/rules/COUVIS_0xxx.pyi
src/pdsfile/pds3file/rules/COUVIS_8xxx.py
src/pdsfile/pds3file/rules/COUVIS_8xxx.pyi
src/pdsfile/pds3file/rules/COVIMS_0xxx.py
src/pdsfile/pds3file/rules/COVIMS_0xxx.pyi
src/pdsfile/pds3file/rules/COVIMS_8xxx.py
src/pdsfile/pds3file/rules/COVIMS_8xxx.pyi
src/pdsfile/pds3file/rules/EBROCC_xxxx.py
src/pdsfile/pds3file/rules/EBROCC_xxxx.pyi
src/pdsfile/pds3file/rules/GO_0xxx.py
src/pdsfile/pds3file/rules/GO_0xxx.pyi
src/pdsfile/pds3file/rules/HSTxx_xxxx.py
src/pdsfile/pds3file/rules/HSTxx_xxxx.pyi
src/pdsfile/pds3file/rules/JNOJIR_xxxx.py
src/pdsfile/pds3file/rules/JNOJIR_xxxx.pyi
src/pdsfile/pds3file/rules/JNOJNC_xxxx.py
src/pdsfile/pds3file/rules/JNOJNC_xxxx.pyi
src/pdsfile/pds3file/rules/JNOSP_xxxx.py
src/pdsfile/pds3file/rules/JNOSP_xxxx.pyi
src/pdsfile/pds3file/rules/JNOSRU_xxxx.py
src/pdsfile/pds3file/rules/JNOSRU_xxxx.pyi
src/pdsfile/pds3file/rules/NHSP_xxxx.py
src/pdsfile/pds3file/rules/NHSP_xxxx.pyi
src/pdsfile/pds3file/rules/NHxxxx_xxxx.py
src/pdsfile/pds3file/rules/NHxxxx_xxxx.pyi
src/pdsfile/pds3file/rules/RES_xxxx.py
src/pdsfile/pds3file/rules/RES_xxxx.pyi
src/pdsfile/pds3file/rules/RPX_xxxx.py
src/pdsfile/pds3file/rules/RPX_xxxx.pyi
src/pdsfile/pds3file/rules/VGIRIS_xxxx.py
src/pdsfile/pds3file/rules/VGIRIS_xxxx.pyi
src/pdsfile/pds3file/rules/VGISS_xxxx.py
src/pdsfile/pds3file/rules/VGISS_xxxx.pyi
src/pdsfile/pds3file/rules/VG_0xxx.py
src/pdsfile/pds3file/rules/VG_0xxx.pyi
src/pdsfile/pds3file/rules/VG_20xx.py
src/pdsfile/pds3file/rules/VG_20xx.pyi
src/pdsfile/pds3file/rules/VG_28xx.py
src/pdsfile/pds3file/rules/VG_28xx.pyi
src/pdsfile/pds3file/rules/__init__.py
src/pdsfile/pds3file/rules/__init__.pyi
src/pdsfile/pds4file/__init__.py
src/pdsfile/pds4file/__init__.pyi
src/pdsfile/pds4file/rules/__init__.py
src/pdsfile/pds4file/rules/__init__.pyi
src/pdsfile/pds4file/rules/cassini_iss.py
src/pdsfile/pds4file/rules/cassini_iss.pyi
src/pdsfile/pds4file/rules/cassini_iss_fring_mosaics_rsfrench2025.py
src/pdsfile/pds4file/rules/cassini_iss_fring_mosaics_rsfrench2025.pyi
src/pdsfile/pds4file/rules/cassini_iss_fring_mosaics_rsfrench2025_primary_filespec.py
src/pdsfile/pds4file/rules/cassini_iss_fring_mosaics_rsfrench2025_primary_filespec.pyi
src/pdsfile/pds4file/rules/cassini_iss_spokes_hedman_hamilton_2024.py
src/pdsfile/pds4file/rules/cassini_iss_spokes_hedman_hamilton_2024.pyi
src/pdsfile/pds4file/rules/cassini_uvis_solarocc_beckerjarmak2023.py
src/pdsfile/pds4file/rules/cassini_uvis_solarocc_beckerjarmak2023.pyi
src/pdsfile/pds4file/rules/cassini_uvis_solarocc_beckerjarmak2023_primary_filespec.py
src/pdsfile/pds4file/rules/cassini_uvis_solarocc_beckerjarmak2023_primary_filespec.pyi
src/pdsfile/pds4file/rules/cassini_vims.py
src/pdsfile/pds4file/rules/cassini_vims.pyi
src/pdsfile/pds4file/rules/uranus_occs_earthbased.py
src/pdsfile/pds4file/rules/uranus_occs_earthbased.pyi
src/pdsfile/pds4file/rules/uranus_occs_earthbased_primary_filespec.py
src/pdsfile/pds4file/rules/uranus_occs_earthbased_primary_filespec.pyi
src/pdsfile/tools/__init__.py
src/pdsfile/tools/show_opus_products.py
src/rms_pdsfile.egg-info/PKG-INFO
src/rms_pdsfile.egg-info/SOURCES.txt
src/rms_pdsfile.egg-info/dependency_links.txt
src/rms_pdsfile.egg-info/entry_points.txt
src/rms_pdsfile.egg-info/requires.txt
src/rms_pdsfile.egg-info/scm_file_list.json
src/rms_pdsfile.egg-info/scm_version.json
src/rms_pdsfile.egg-info/top_level.txt
tests/conftest.py
tests/api/api_manifest.json
tests/api/conftest.py
tests/api/consumer_used_private_names.json
tests/api/manifest_allowlist.json
tests/api/test_api_freeze.py
tests/api/test_mixin_collisions.py
tests/api/test_mixin_import_isolation.py
tests/core/__init__.py
tests/core/conftest.py
tests/core/support.py
tests/core/test_log_path_timetag.py
tests/core/test_pdscache_set_multi.py
tests/core/test_pdsfile_caching.py
tests/core/test_pdsfile_path_resolution.py
tests/core/test_pdsviewable_iconset_for.py
tests/core/test_preload_bundleset_boundary.py
tests/core/test_shelf_sidecar_record.py
tests/core/test_shelves_only_fallbacks.py
tests/core/test_stubbed_surfaces.py
tests/docs/check_docstrings.py
tests/docs/conftest.py
tests/docs/test_docstrings.py
tests/docs/test_markup.py
tests/golden/full/holdings_maintenance/pds3_archives_members.txt
tests/golden/full/holdings_maintenance/pds3_checksums_md5.txt
tests/golden/full/holdings_maintenance/pds3_dependency_steps.txt
tests/golden/full/holdings_maintenance/pds3_indexshelf_sidecar.txt
tests/golden/full/holdings_maintenance/pds3_infoshelf_sidecar.txt
tests/golden/full/holdings_maintenance/pds3_linkshelf_sidecar.txt
tests/golden/full/holdings_maintenance/pds4_archives_members.txt
tests/golden/full/holdings_maintenance/pds4_checksums_md5.txt
tests/golden/full/holdings_maintenance/pds4_infoshelf_sidecar.txt
tests/golden/full/holdings_maintenance/pds4_linkshelf_sidecar.txt
tests/golden/full/holdings_maintenance/show_opus_products_pprint.txt
tests/golden/full/pds3/COCIRS_xxxx/associated_abspaths/volumes_POI0408010000_FP1.txt
tests/golden/full/pds3/COCIRS_xxxx/opus_products/000IA_PRESOI001____RI____699_F4_038P.txt
tests/golden/full/pds3/COCIRS_xxxx/opus_products/POI0408010000_FP1.txt
tests/golden/full/pds3/COISS_xxxx/associated_abspaths/volumes_W1294561202_1.txt
tests/golden/full/pds3/COISS_xxxx/opus_products/N1479210132_1.txt
tests/golden/full/pds3/COISS_xxxx/opus_products/N1481265970_1.txt
tests/golden/full/pds3/COISS_xxxx/opus_products/N1873427694_1.txt
tests/golden/full/pds3/COISS_xxxx/opus_products/W1294561202_1.txt
tests/golden/full/pds3/CORSS_8xxx/associated_abspaths/volumes_RSS_2005_159_K55_E_TAU_01KM.txt
tests/golden/full/pds3/CORSS_8xxx/opus_products/RSS_2005_159_K55_E_TAU_01KM.txt
tests/golden/full/pds3/COUVIS_0xxx/associated_abspaths/archives_volumes_FUV1999_007_16_57.txt
tests/golden/full/pds3/COUVIS_0xxx/associated_abspaths/checksums_volumes_FUV1999_007_16_57.txt
tests/golden/full/pds3/COUVIS_0xxx/associated_abspaths/volumes_DATA.txt
tests/golden/full/pds3/COUVIS_0xxx/associated_abspaths/volumes_EUV2017_001_03_49.txt
tests/golden/full/pds3/COUVIS_0xxx/opus_products/FUV1999_007_16_57.txt
tests/golden/full/pds3/COUVIS_8xxx/associated_abspaths/volumes_UVIS_HSP_2005_139_126TAU_E_TAU01KM.txt
tests/golden/full/pds3/COUVIS_8xxx/opus_products/UVIS_HSP_2005_139_126TAU_E_TAU01KM.txt
tests/golden/full/pds3/COVIMS_0xxx/associated_abspaths/volumes_v1490784910_3_001.txt
tests/golden/full/pds3/COVIMS_0xxx/opus_products/v1490784910_3_001.txt
tests/golden/full/pds3/COVIMS_8xxx/associated_abspaths/VIMS_2005_144_OMICET_E_TAU_01KM.txt
tests/golden/full/pds3/COVIMS_8xxx/opus_products/VIMS_2005_144_OMICET_E_TAU_01KM.txt
tests/golden/full/pds3/EBROCC_xxxx/associated_abspaths/ES1_EPD.txt
tests/golden/full/pds3/EBROCC_xxxx/opus_products/ES1_EPD.txt
tests/golden/full/pds3/GO_0xxx/associated_abspaths/C0346405900R.txt
tests/golden/full/pds3/GO_0xxx/opus_products/C0346405900R.txt
tests/golden/full/pds3/HSTIx_xxxx/associated_abspaths/volumes_U2NO0404T.txt
tests/golden/full/pds3/HSTIx_xxxx/opus_products/IB4V11MNQ.txt
tests/golden/full/pds3/NHxxLO_xxxx/associated_abspaths/volumes_lor_0003103486_0x630_eng.txt
tests/golden/full/pds3/NHxxLO_xxxx/opus_products/lor_0003103486_0x630_eng.txt
tests/golden/full/pds3/VGISS_5xxx/associated_abspaths/volumes_C1385455_RAW.txt
tests/golden/full/pds3/VGISS_5xxx/opus_products/C1385455_RAW.txt
tests/golden/full/pds3/VG_28xx/associated_abspaths/volumes_IS2_P0001_V01_KM002.txt
tests/golden/full/pds3/VG_28xx/associated_abspaths/volumes_PS1P0107.txt
tests/golden/full/pds3/VG_28xx/associated_abspaths/volumes_PU1P01DE.txt
tests/golden/full/pds3/VG_28xx/associated_abspaths/volumes_RS1P2X07.txt
tests/golden/full/pds3/VG_28xx/associated_abspaths/volumes_RU1P2X4I.txt
tests/golden/full/pds3/VG_28xx/associated_abspaths/volumes_UN1F01.txt
tests/golden/full/pds3/VG_28xx/associated_abspaths/volumes_US1F01.txt
tests/golden/full/pds3/VG_28xx/associated_abspaths/volumes_UU1F01EE.txt
tests/golden/full/pds3/VG_28xx/opus_products/IS2_P0001_V01_KM002.txt
tests/golden/full/pds3/VG_28xx/opus_products/PS1P0107.txt
tests/golden/full/pds3/VG_28xx/opus_products/PU1P01DE.txt
tests/golden/full/pds3/VG_28xx/opus_products/RS1P2X07.txt
tests/golden/full/pds3/VG_28xx/opus_products/RU1P2X4I.txt
tests/golden/full/pds3/VG_28xx/opus_products/UN1F01.txt
tests/golden/full/pds3/VG_28xx/opus_products/US1F01.txt
tests/golden/full/pds3/VG_28xx/opus_products/UU1F01EE.txt
tests/golden/full/pds4/cassini_iss_fring_mosaics_rsfrench2025/associated_abspaths/bundles_iosic_276rb_complitb4001_si_mosaic.txt
tests/golden/full/pds4/cassini_iss_fring_mosaics_rsfrench2025/associated_abspaths/bundles_iss_006ri_lphrlfmov001_prime_mosaic.txt
tests/golden/full/pds4/cassini_iss_fring_mosaics_rsfrench2025/associated_abspaths/previews_iosic_276rb_complitb4001_si_mosaic.txt
tests/golden/full/pds4/cassini_iss_fring_mosaics_rsfrench2025/associated_abspaths/previews_iss_006ri_lphrlfmov001_prime_mosaic.txt
tests/golden/full/pds4/cassini_iss_fring_mosaics_rsfrench2025/opus_products/iosic_276rb_complitb4001_si_mosaic.txt
tests/golden/full/pds4/cassini_iss_fring_mosaics_rsfrench2025/opus_products/iss_006ri_lphrlfmov001_prime_mosaic.txt
tests/golden/full/pds4/cassini_uvis_solarocc_beckerjarmak2023/associated_abspaths/bundles_uvis_euv_2006_257_solar_time_series_ingress.txt
tests/golden/full/pds4/cassini_uvis_solarocc_beckerjarmak2023/associated_abspaths/bundles_uvis_euv_2008_083_solar_time_series_egress.txt
tests/golden/full/pds4/cassini_uvis_solarocc_beckerjarmak2023/associated_abspaths/previews_uvis_euv_2006_257_solar_time_series_ingress.txt
tests/golden/full/pds4/cassini_uvis_solarocc_beckerjarmak2023/associated_abspaths/previews_uvis_euv_2008_083_solar_time_series_egress.txt
tests/golden/full/pds4/cassini_uvis_solarocc_beckerjarmak2023/opus_products/uvis_euv_2005_159_solar_time_series_ingress.txt
tests/golden/full/pds4/cassini_uvis_solarocc_beckerjarmak2023/opus_products/uvis_euv_2008_083_solar_time_series_egress.txt
tests/golden/full/pds4/uranus_occs_earthbased/associated_abspaths/bundles_u0_kao_91cm_734nm_counts-v-time_atmos_egress.txt
tests/golden/full/pds4/uranus_occs_earthbased/associated_abspaths/diagrams_u0_kao_91cm_734nm_counts-v-time_atmos_egress.txt
tests/golden/full/pds4/uranus_occs_earthbased/opus_products/u0_kao_91cm_734nm_counts-v-time_atmos_ingress.txt
tests/golden/full/pds4/uranus_occs_earthbased/opus_products/u0_kao_91cm_734nm_radius_delta_egress_100m.txt
tests/golden/full/pds4/uranus_occs_earthbased/opus_products/u0_kao_91cm_734nm_radius_equator_ingress_100m.txt
tests/holdings_maintenance/__init__.py
tests/holdings_maintenance/conftest.py
tests/holdings_maintenance/readonly_roots.py
tests/holdings_maintenance/subsets.py
tests/holdings_maintenance/support.py
tests/holdings_maintenance/test_common_versioning.py
tests/holdings_maintenance/test_copy_setup_scripts.py
tests/holdings_maintenance/test_crlf.py
tests/holdings_maintenance/test_driver_setup.py
tests/holdings_maintenance/test_pds3_archives.py
tests/holdings_maintenance/test_pds3_checksums.py
tests/holdings_maintenance/test_pds3_dependency.py
tests/holdings_maintenance/test_pds3_indexshelf.py
tests/holdings_maintenance/test_pds3_infoshelf.py
tests/holdings_maintenance/test_pds3_linkshelf.py
tests/holdings_maintenance/test_pds4_archive_products.py
tests/holdings_maintenance/test_pds4_archive_round_trip.py
tests/holdings_maintenance/test_pds4_archives.py
tests/holdings_maintenance/test_pds4_checksums.py
tests/holdings_maintenance/test_pds4_indexshelf.py
tests/holdings_maintenance/test_pds4_infoshelf.py
tests/holdings_maintenance/test_pds4_linkshelf.py
tests/holdings_maintenance/test_re_validate.py
tests/holdings_maintenance/test_readonly_roots.py
tests/holdings_maintenance/test_shelf_common.py
tests/holdings_maintenance/test_show_opus_products.py
tests/holdings_maintenance/test_task_flags.py
tests/holdings_maintenance/test_tool_naming.py
tests/holdings_maintenance/test_update_holdings_script.py
tests/holdings_maintenance/test_validate_exceptions.py
tests/holdings_maintenance/_subprocess_guard/sitecustomize.py
tests/pds3file/__init__.py
tests/pds3file/helper.py
tests/pds3file/test_pds3file_blackbox.py
tests/pds3file/test_pds3file_blackbox_cached.py
tests/pds3file/test_pds3file_whitebox.py
tests/pds3file/test_pdsviewable_blackbox.py
tests/pds4file/__init__.py
tests/pds4file/helper.py
tests/pds4file/test_pds4file_blackbox.py
tests/pds4file/test_pds4file_bundleset_plus.py
tests/rules/README.md
tests/rules/__init__.py
tests/rules/support.py
tests/rules/pds3/__init__.py
tests/rules/pds3/test_cocirs_xxxx.py
tests/rules/pds3/test_coiss_xxxx.py
tests/rules/pds3/test_corss_8xxx.py
tests/rules/pds3/test_couvis_0xxx.py
tests/rules/pds3/test_couvis_8xxx.py
tests/rules/pds3/test_covims_0xxx.py
tests/rules/pds3/test_covims_8xxx.py
tests/rules/pds3/test_ebrocc_xxxx.py
tests/rules/pds3/test_go_0xxx.py
tests/rules/pds3/test_hstxx_xxxx.py
tests/rules/pds3/test_nhxxxx_xxxx.py
tests/rules/pds3/test_vg_28xx.py
tests/rules/pds3/test_vgiss_xxxx.py
tests/rules/pds4/__init__.py
tests/rules/pds4/test_cassini_iss_fring_mosaics_rsfrench2025.py
tests/rules/pds4/test_cassini_uvis_solarocc_beckerjarmak2023.py
tests/rules/pds4/test_uranus_occs_earthbased.py
tests/support/__init__.py
tests/support/holdings.py
tests/support/pdsfile_test_helper.py