# The obs functions the mini-holdings fixture cannot reach, one per line, as the
# coverage report's own file key and the function's qualified name joined by "::".
#
# Every other function under src/opus_import/obs/ has to show at least one executed line
# in the run's coverage report. Being imported does not count: coverage attributes a
# function's def line to the enclosing module region, so a method that was only defined
# reports 0% in its own region and only a real call registers.
#
# The file keys are relative to the repository root, because that is where the suite is
# run from. A run started somewhere else produces keys that match none of these.
#
# A function with nothing to measure is not on this list and cannot be. When every line
# of a body is one [tool.coverage.report]'s exclude_lines removes, coverage records
# nothing for it and the check has no question to ask. In this tree that is an abstract
# method whose whole body is `raise NotImplementedError`, and a stub inside an
# `if TYPE_CHECKING:` block.
#
# Entries are grouped, and each group carries the comment that justifies it. An entry
# naming a function that did execute, or one that no longer exists, fails the suite, so
# this file cannot quietly outlive what it describes.
#
# The right first response to a new unexecuted function is to look at the sampling rather
# than to add a line here: the report is also the recorder's guide to where the fixture
# is thin.

# The type OPUS registers but the holdings do not carry, which exclusions.tsv records.
# Nothing in the fixture can reach a class whose bundle does not exist; these entries go
# away on their own the day that bundle is archived.
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025._camera
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025._target_name
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_general_observation_type
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_general_planet_id
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_general_quantity
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_instrument_coiss_camera
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_instrument_coiss_combined_filter
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_mission_cassini_mission_phase_name
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_pds_note
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_pds_product_creation_time
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_ascending_longitude1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_ascending_longitude2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_emission1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_emission2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_incidence1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_incidence2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_j2000_longitude1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_j2000_longitude2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_north_based_emission1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_north_based_emission2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_north_based_incidence1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_north_based_incidence2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_observer_ring_elevation1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_observer_ring_elevation2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_phase1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_phase2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_projected_long_resolution1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_projected_long_resolution2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_projected_long_resolution_angle1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_projected_long_resolution_angle2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_projected_radial_resolution1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_projected_radial_resolution2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_ring_radius1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_ring_radius2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_solar_ring_elevation1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_ring_geometry_solar_ring_elevation2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_type_image_duration
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_type_image_greater_pixel_size
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_type_image_image_type_id
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_type_image_lesser_pixel_size
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_type_image_levels
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_wavelength_wave_no_res1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_wavelength_wave_no_res2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_wavelength_wave_res1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_wavelength_wave_res2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_wavelength_wavelength1
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.field_obs_wavelength_wavelength2
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.instrument_id
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.primary_filespec
src/opus_import/obs/obs_bundle_cassini_iss_fring_mosaics_rsfrench2025.py::ObsBundleCassiniISSFRingMosaicsRSFrench2025.primary_filespec_from_index_row

# Shared implementations every concrete class in reach overrides. The dispatch lands on
# the subclass's own definition and coverage attributes the call there, so the shared
# body is a default the fixture's volumes all happen to replace. Unlike the abstract
# methods, these do carry statements -- there really is code here that no fixture volume
# runs -- so a volume set whose class stops overriding one of them takes its entry off
# this list.
src/opus_import/obs/obs_base_pds4.py::ObsBasePDS4._time2_from_index
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_bundle_id
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_camera
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_combined_filter
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_compression_type
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_data_conversion_type
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_gain_mode_id
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_image_number
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_image_observation_type
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_instrument_mode_id
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_missing_lines
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_opus_id
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_shutter_mode_id
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_shutter_state_id
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_instrument_coiss_target_desc
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_mission_cassini_obs_name
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_mission_cassini_spacecraft_clock_count1
src/opus_import/obs/obs_cassini_common.py::ObsCassiniCommon.field_obs_mission_cassini_spacecraft_clock_count2
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_bundle_id
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_combined_filter
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_compression_type
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_data_conversion_type
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_gain_mode_id
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_image_number
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_image_observation_type
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_instrument_mode_id
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_missing_lines
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_opus_id
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_shutter_mode_id
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_shutter_state_id
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_instrument_coiss_target_desc
src/opus_import/obs/obs_cassini_common_pds4.py::ObsCassiniCommonPDS4.field_obs_mission_cassini_obs_name
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_body_occ_flag
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_host
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_occ_dir
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_occ_type
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_optical_depth1
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_optical_depth2
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_quality_score
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_source
src/opus_import/obs/obs_profile_pds4.py::ObsProfilePDS4.field_obs_profile_wl_band
src/opus_import/obs/obs_wavelength.py::ObsWavelength.field_obs_wavelength_wavelength1
src/opus_import/obs/obs_wavelength.py::ObsWavelength.field_obs_wavelength_wavelength2

# Branches the sampled rows do not reach. These are the entries worth re-reading when the
# fixture changes: the logging helpers fire only on a fault the fixture does not produce,
# and the rest are alternative accessors an instrument uses only for values its
# representative volume happens not to carry.
src/opus_import/obs/obs_base.py::ObsBase.__str__
src/opus_import/obs/obs_base.py::ObsBase._log_nonrepeating_error
src/opus_import/obs/obs_base.py::ObsBase._log_warning
