Coverage report: 85%

Files Functions Classes

coverage.py v7.14.2, created at 2026-06-21 08:31 +0000

      Statements   Branches   Total
File class   coverage statements missing excluded   coverage branches partial   coverage
python/lsst/__init__.py (no class)   100% 2 0 0   100% 0 0   100%
python/lsst/daf/__init__.py (no class)   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/__init__.py (no class)   100% 38 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler.py ParsedButlerDatasetURI   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler.py SpecificButlerDataset   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler.py _DeprecatedDefault   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler.py Butler   90% 194 19 31   84% 98 14   88%
python/lsst/daf/butler/_butler.py (no class)   100% 131 0 15   100% 0 0   100%
python/lsst/daf/butler/_butler_collections.py CollectionInfo   67% 3 1 0   50% 2 1   60%
python/lsst/daf/butler/_butler_collections.py ButlerCollections   73% 22 6 9   71% 14 4   72%
python/lsst/daf/butler/_butler_collections.py (no class)   100% 53 0 2   100% 0 0   100%
python/lsst/daf/butler/_butler_config.py ButlerConfig   95% 61 3 0   89% 38 2   93%
python/lsst/daf/butler/_butler_config.py (no class)   100% 19 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler_instance_options.py ButlerInstanceOptions   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler_instance_options.py (no class)   100% 12 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler_metrics.py ButlerMetrics   100% 21 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler_metrics.py (no class)   100% 34 0 0   100% 0 0   100%
python/lsst/daf/butler/_butler_repo_index.py ButlerRepoIndex   100% 47 0 0   100% 14 0   100%
python/lsst/daf/butler/_butler_repo_index.py (no class)   100% 30 0 0   100% 0 0   100%
python/lsst/daf/butler/_collection_type.py CollectionType   44% 9 5 0   0% 2 0   36%
python/lsst/daf/butler/_collection_type.py (no class)   100% 19 0 0   100% 0 0   100%
python/lsst/daf/butler/_config.py Loader   90% 30 3 0   88% 16 2   89%
python/lsst/daf/butler/_config.py Config   95% 278 15 0   90% 156 16   93%
python/lsst/daf/butler/_config.py ConfigSubset   98% 62 1 0   92% 40 3   96%
python/lsst/daf/butler/_config.py (no class)   98% 116 2 2   100% 16 0   98%
python/lsst/daf/butler/_config_support.py LookupKey   71% 59 17 0   63% 38 8   68%
python/lsst/daf/butler/_config_support.py (no class)   93% 60 4 2   83% 24 4   90%
python/lsst/daf/butler/_dataset_association.py DatasetAssociation   91% 11 1 0   83% 6 1   88%
python/lsst/daf/butler/_dataset_association.py (no class)   100% 21 0 3   100% 0 0   100%
python/lsst/daf/butler/_dataset_existence.py DatasetExistence   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/_dataset_existence.py (no class)   100% 19 0 0   100% 0 0   100%
python/lsst/daf/butler/_dataset_provenance.py DatasetProvenance   99% 152 2 0   95% 110 6   97%
python/lsst/daf/butler/_dataset_provenance.py (no class)   100% 32 0 3   100% 0 0   100%
python/lsst/daf/butler/_dataset_ref.py AmbiguousDatasetError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_dataset_ref.py _DatasetRefGroupedIterable   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/_dataset_ref.py DatasetIdGenEnum   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_dataset_ref.py DatasetIdFactory   100% 12 0 0   100% 8 0   100%
python/lsst/daf/butler/_dataset_ref.py SerializedDatasetRef   82% 11 2 0   50% 4 2   73%
python/lsst/daf/butler/_dataset_ref.py DatasetRef   76% 115 28 0   67% 70 9   72%
python/lsst/daf/butler/_dataset_ref.py MinimalistSerializableDatasetRef   100% 8 0 0   100% 2 0   100%
python/lsst/daf/butler/_dataset_ref.py SerializedDatasetRefContainer   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_dataset_ref.py SerializedDatasetRefContainerV1   92% 52 4 0   89% 28 3   91%
python/lsst/daf/butler/_dataset_ref.py (no class)   100% 126 0 3   100% 0 0   100%
python/lsst/daf/butler/_dataset_type.py SerializedDatasetType   78% 9 2 0   50% 4 2   69%
python/lsst/daf/butler/_dataset_type.py DatasetType   91% 158 15 0   85% 100 15   88%
python/lsst/daf/butler/_dataset_type.py (no class)   95% 77 4 3   50% 6 1   92%
python/lsst/daf/butler/_deferredDatasetHandle.py DeferredDatasetHandle   83% 12 2 0   88% 8 1   85%
python/lsst/daf/butler/_deferredDatasetHandle.py (no class)   100% 17 0 5   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py ButlerUserError   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py CalibrationLookupError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py CollectionCycleError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py CollectionTypeError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py DataIdValueError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py DatasetNotFoundError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py DimensionNameError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py DimensionValueError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py InconsistentDataIdError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py InvalidQueryError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py MissingCollectionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py UnimplementedQueryError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py MissingDatasetTypeError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py UnknownComponentError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py DatasetTypeNotSupportedError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py ValidationError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py EmptyQueryResultError   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py UnknownButlerUserError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py InconsistentUniverseError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions.py (no class)   92% 50 4 0   0% 2 0   88%
python/lsst/daf/butler/_exceptions_legacy.py RegistryError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions_legacy.py DataIdError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions_legacy.py DatasetTypeError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions_legacy.py CollectionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_exceptions_legacy.py (no class)   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/_file_dataset.py FileDataset   95% 20 1 0   90% 10 1   93%
python/lsst/daf/butler/_file_dataset.py SerializedFileDataset   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_file_dataset.py (no class)   100% 29 0 0   100% 0 0   100%
python/lsst/daf/butler/_file_descriptor.py FileDescriptor   76% 21 5 0   50% 10 5   68%
python/lsst/daf/butler/_file_descriptor.py (no class)   100% 10 0 3   100% 0 0   100%
python/lsst/daf/butler/_formatter.py FileIntegrityError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_formatter.py FormatterNotImplementedError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_formatter.py FormatterV2   82% 200 35 0   76% 90 20   80%
python/lsst/daf/butler/_formatter.py Formatter   77% 91 21 2   67% 42 10   74%
python/lsst/daf/butler/_formatter.py FormatterFactory   88% 51 6 0   75% 24 6   84%
python/lsst/daf/butler/_formatter.py FormatterV1inV2   55% 29 13 0   50% 4 2   55%
python/lsst/daf/butler/_formatter.py (no class)   100% 160 0 7   100% 0 0   100%
python/lsst/daf/butler/_labeled_butler_factory.py LabeledButlerFactoryProtocol   100% 1 0 0   50% 2 1   67%
python/lsst/daf/butler/_labeled_butler_factory.py LabeledButlerFactory   86% 42 6 0   79% 14 1   84%
python/lsst/daf/butler/_labeled_butler_factory.py _ButlerFactory   100% 2 0 0   50% 4 2   67%
python/lsst/daf/butler/_labeled_butler_factory.py _DirectButlerFactory   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/_labeled_butler_factory.py _RemoteButlerFactory   0% 6 6 0   0% 2 0   0%
python/lsst/daf/butler/_labeled_butler_factory.py (no class)   100% 33 0 0   100% 0 0   100%
python/lsst/daf/butler/_limited_butler.py LimitedButler   69% 29 9 4   0% 2 0   65%
python/lsst/daf/butler/_limited_butler.py (no class)   100% 51 0 0   100% 0 0   100%
python/lsst/daf/butler/_location.py Location   94% 54 3 0   96% 24 1   95%
python/lsst/daf/butler/_location.py LocationFactory   75% 8 2 0   50% 2 1   70%
python/lsst/daf/butler/_location.py (no class)   100% 33 0 0   100% 0 0   100%
python/lsst/daf/butler/_named.py Named   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/_named.py NamedKeyMapping   50% 4 2 3   50% 4 2   50%
python/lsst/daf/butler/_named.py NamedKeyMutableMapping   0% 1 1 2   100% 0 0   0%
python/lsst/daf/butler/_named.py NamedKeyDict   81% 32 6 0   88% 8 1   82%
python/lsst/daf/butler/_named.py NamedValueAbstractSet   100% 7 0 3   50% 4 2   82%
python/lsst/daf/butler/_named.py NameMappingSetView   60% 20 8 0   50% 8 0   57%
python/lsst/daf/butler/_named.py NamedValueMutableSet   100% 0 0 4   100% 0 0   100%
python/lsst/daf/butler/_named.py NamedValueSet   81% 27 5 0   83% 6 1   82%
python/lsst/daf/butler/_named.py (no class)   100% 108 0 0   100% 0 0   100%
python/lsst/daf/butler/_quantum.py SerializedQuantum   100% 9 0 0   100% 0 0   100%
python/lsst/daf/butler/_quantum.py Quantum   93% 124 9 0   81% 70 13   89%
python/lsst/daf/butler/_quantum.py DimensionRecordsAccumulator   100% 9 0 0   100% 2 0   100%
python/lsst/daf/butler/_quantum.py (no class)   98% 64 1 0   67% 6 2   96%
python/lsst/daf/butler/_quantum_backed.py QuantumBackedButler   93% 100 7 0   77% 48 11   88%
python/lsst/daf/butler/_quantum_backed.py QuantumProvenanceData   100% 18 0 1   100% 10 0   100%
python/lsst/daf/butler/_quantum_backed.py (no class)   100% 70 0 2   100% 0 0   100%
python/lsst/daf/butler/_query_all_datasets.py DatasetsPage   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_query_all_datasets.py QueryAllDatasetsParameters   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_query_all_datasets.py (no class)   100% 60 0 2   100% 18 0   100%
python/lsst/daf/butler/_registry_shim.py RegistryShim   91% 76 7 0   95% 20 1   92%
python/lsst/daf/butler/_registry_shim.py (no class)   100% 66 0 4   100% 0 0   100%
python/lsst/daf/butler/_rubin/__init__.py (no class)   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/_rubin/datastore_records.py (no class)   0% 9 9 0   100% 0 0   0%
python/lsst/daf/butler/_rubin/file_datasets.py (no class)   96% 23 1 0   75% 4 1   93%
python/lsst/daf/butler/_rubin/temporary_for_ingest.py TemporaryForIngest   96% 26 1 0   67% 6 2   91%
python/lsst/daf/butler/_rubin/temporary_for_ingest.py (no class)   100% 31 0 7   100% 0 0   100%
python/lsst/daf/butler/_rubin/transfer_datasets_in_place.py (no class)   100% 21 0 1   100% 0 0   100%
python/lsst/daf/butler/_standalone_datastore.py _DatasetRecordStorageManagerDatastoreConstructionMimic   75% 4 1 0   100% 0 0   75%
python/lsst/daf/butler/_standalone_datastore.py (no class)   100% 30 0 0   50% 6 3   92%
python/lsst/daf/butler/_storage_class.py StorageClassConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_storage_class.py _StorageClassModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_storage_class.py StorageClass   95% 179 9 0   94% 96 6   95%
python/lsst/daf/butler/_storage_class.py StorageClassFactory   89% 85 9 0   89% 36 4   89%
python/lsst/daf/butler/_storage_class.py (no class)   100% 69 0 0   100% 0 0   100%
python/lsst/daf/butler/_storage_class_delegate.py DatasetComponent   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_storage_class_delegate.py StorageClassDelegate   55% 83 37 2   37% 46 13   49%
python/lsst/daf/butler/_storage_class_delegate.py (no class)   100% 30 0 3   100% 0 0   100%
python/lsst/daf/butler/_timespan.py _SpecialTimespanBound   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_timespan.py Timespan   93% 138 10 0   86% 86 12   90%
python/lsst/daf/butler/_timespan.py (no class)   97% 63 2 0   100% 0 0   97%
python/lsst/daf/butler/_topology.py TopologicalSpace   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_topology.py TopologicalFamily   88% 8 1 2   50% 2 1   80%
python/lsst/daf/butler/_topology.py TopologicalRelationshipEndpoint   100% 2 0 2   100% 0 0   100%
python/lsst/daf/butler/_topology.py (no class)   100% 40 0 3   100% 0 0   100%
python/lsst/daf/butler/_utilities/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/_utilities/locked_object.py LockedObject   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/_utilities/locked_object.py (no class)   100% 9 0 0   100% 0 0   100%
python/lsst/daf/butler/_utilities/named_locks.py NamedLocks   100% 10 0 0   100% 2 0   100%
python/lsst/daf/butler/_utilities/named_locks.py (no class)   100% 8 0 0   100% 0 0   100%
python/lsst/daf/butler/_utilities/thread_safe_cache.py ThreadSafeCache   100% 10 0 0   100% 0 0   100%
python/lsst/daf/butler/_utilities/thread_safe_cache.py (no class)   100% 9 0 0   100% 0 0   100%
python/lsst/daf/butler/_uuid.py (no class)   100% 12 0 0   100% 0 0   100%
python/lsst/daf/butler/arrow_utils.py ToArrow   71% 7 2 5   100% 0 0   71%
python/lsst/daf/butler/arrow_utils.py _ToArrowPrimitive   100% 8 0 0   100% 0 0   100%
python/lsst/daf/butler/arrow_utils.py _ToArrowDictionary   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/arrow_utils.py _ToArrowUUID   0% 8 8 0   100% 0 0   0%
python/lsst/daf/butler/arrow_utils.py _ToArrowRegion   100% 8 0 0   100% 0 0   100%
python/lsst/daf/butler/arrow_utils.py _ToArrowTimespan   100% 8 0 0   100% 0 0   100%
python/lsst/daf/butler/arrow_utils.py _ToArrowDateTime   0% 8 8 0   100% 0 0   0%
python/lsst/daf/butler/arrow_utils.py UUIDArrowType   0% 4 4 0   100% 0 0   0%
python/lsst/daf/butler/arrow_utils.py UUIDArrowScalar   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/arrow_utils.py RegionArrowType   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/arrow_utils.py RegionArrowScalar   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/arrow_utils.py TimespanArrowType   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/arrow_utils.py TimespanArrowScalar   100% 3 0 0   100% 2 0   100%
python/lsst/daf/butler/arrow_utils.py DateTimeArrowType   50% 4 2 0   100% 0 0   50%
python/lsst/daf/butler/arrow_utils.py DateTimeArrowScalar   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/arrow_utils.py ArrowTableUtils   86% 7 1 0   50% 2 1   78%
python/lsst/daf/butler/arrow_utils.py (no class)   100% 150 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/butler.py PluginCommand   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/butler.py LoaderCLI   77% 81 19 1   87% 38 5   80%
python/lsst/daf/butler/cli/butler.py ButlerCLI   33% 6 4 0   25% 4 1   30%
python/lsst/daf/butler/cli/butler.py UncachedButlerCLI   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/butler.py (no class)   99% 81 1 0   100% 0 0   99%
python/lsst/daf/butler/cli/cliLog.py PrecisionLogFormatter   0% 7 7 0   0% 4 0   0%
python/lsst/daf/butler/cli/cliLog.py CliLog   83% 96 16 0   71% 56 12   79%
python/lsst/daf/butler/cli/cliLog.py CliLog.ComponentSettings   83% 6 1 0   100% 2 0   88%
python/lsst/daf/butler/cli/cliLog.py (no class)   96% 50 2 0   100% 0 0   96%
python/lsst/daf/butler/cli/cmd/__init__.py (no class)   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/cmd/_remove_collections.py (no class)   95% 57 3 0   95% 20 1   95%
python/lsst/daf/butler/cli/cmd/_remove_runs.py (no class)   100% 63 0 0   94% 16 1   99%
python/lsst/daf/butler/cli/cmd/commands.py (no class)   93% 308 23 0   70% 60 8   89%
python/lsst/daf/butler/cli/opt/__init__.py (no class)   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/opt/arguments.py (no class)   100% 11 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/opt/optionGroups.py query_datasets_options   92% 13 1 0   90% 10 1   91%
python/lsst/daf/butler/cli/opt/optionGroups.py (no class)   100% 7 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/opt/options.py CollectionTypeCallback   100% 3 0 0   100% 2 0   100%
python/lsst/daf/butler/cli/opt/options.py (no class)   93% 45 3 0   100% 0 0   93%
python/lsst/daf/butler/cli/progress.py ClickProgressHandler   100% 6 0 0   100% 2 0   100%
python/lsst/daf/butler/cli/progress.py (no class)   100% 15 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/utils.py ClickExitFailedNicely   79% 14 3 0   50% 4 2   72%
python/lsst/daf/butler/cli/utils.py LogCliRunner   100% 6 0 0   100% 2 0   100%
python/lsst/daf/butler/cli/utils.py split_kv.RetDict   100% 5 0 0   100% 2 0   100%
python/lsst/daf/butler/cli/utils.py split_kv.RetTuple   80% 5 1 0   50% 2 1   71%
python/lsst/daf/butler/cli/utils.py option_section   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/utils.py MWPath   100% 7 0 0   100% 4 0   100%
python/lsst/daf/butler/cli/utils.py MWOption   88% 8 1 0   83% 6 1   86%
python/lsst/daf/butler/cli/utils.py MWArgument   83% 6 1 0   75% 4 1   80%
python/lsst/daf/butler/cli/utils.py OptionSection   80% 5 1 0   100% 0 0   80%
python/lsst/daf/butler/cli/utils.py MWOptionDecorator   100% 9 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/utils.py MWArgumentDecorator   100% 9 0 0   100% 4 0   100%
python/lsst/daf/butler/cli/utils.py MWCommand   85% 40 6 1   72% 18 1   81%
python/lsst/daf/butler/cli/utils.py ButlerCommand   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/cli/utils.py OptionGroup   100% 3 0 0   100% 2 0   100%
python/lsst/daf/butler/cli/utils.py MWCtxObj   100% 5 0 0   100% 2 0   100%
python/lsst/daf/butler/cli/utils.py (no class)   99% 269 4 3   94% 78 5   97%
python/lsst/daf/butler/column_spec.py ColumnValueSerializer   100% 0 0 2   100% 0 0   100%
python/lsst/daf/butler/column_spec.py _TypeAdapterColumnValueSerializer   0% 3 3 0   100% 0 0   0%
python/lsst/daf/butler/column_spec.py _BaseColumnSpec   53% 15 7 2   67% 6 0   57%
python/lsst/daf/butler/column_spec.py IntColumnSpec   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/column_spec.py StringColumnSpec   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/column_spec.py HashColumnSpec   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/column_spec.py FloatColumnSpec   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/column_spec.py BoolColumnSpec   50% 2 1 0   100% 0 0   50%
python/lsst/daf/butler/column_spec.py UUIDColumnSpec   33% 3 2 0   100% 0 0   33%
python/lsst/daf/butler/column_spec.py RegionColumnSpec   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/column_spec.py TimespanColumnSpec   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/column_spec.py DateTimeColumnSpec   33% 3 2 0   100% 0 0   33%
python/lsst/daf/butler/column_spec.py (no class)   100% 108 0 2   100% 0 0   100%
python/lsst/daf/butler/datastore/__init__.py (no class)   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/_datastore.py DatastoreConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/_datastore.py DatastoreValidationError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/_datastore.py Event   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/_datastore.py DatastoreOpaqueTable   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/_datastore.py IngestPrepData   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/_datastore.py DatastoreTransaction   91% 23 2 0   100% 4 0   93%
python/lsst/daf/butler/datastore/_datastore.py DatasetRefURIs   100% 12 0 0   100% 6 0   100%
python/lsst/daf/butler/datastore/_datastore.py Datastore   92% 59 5 30   79% 14 1   89%
python/lsst/daf/butler/datastore/_datastore.py NullDatastore   80% 15 3 15   100% 0 0   80%
python/lsst/daf/butler/datastore/_datastore.py (no class)   100% 180 0 13   100% 0 0   100%
python/lsst/daf/butler/datastore/_transfer.py FileTransferSource   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/_transfer.py FileTransferRecord   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/_transfer.py (no class)   100% 17 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/cache_manager.py CacheEntry   83% 6 1 0   50% 2 1   75%
python/lsst/daf/butler/datastore/cache_manager.py _MarkerEntry   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/cache_manager.py CacheRegistry   76% 38 9 0   67% 18 6   73%
python/lsst/daf/butler/datastore/cache_manager.py DatastoreCacheManagerConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/cache_manager.py AbstractDatastoreCacheManager   67% 6 2 6   100% 2 0   75%
python/lsst/daf/butler/datastore/cache_manager.py DatastoreCacheManager   92% 234 19 0   86% 118 15   90%
python/lsst/daf/butler/datastore/cache_manager.py DatastoreDisabledCacheManager   86% 7 1 0   100% 0 0   86%
python/lsst/daf/butler/datastore/cache_manager.py InvalidCacheFilenameError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/cache_manager.py (no class)   99% 138 2 5   100% 0 0   99%
python/lsst/daf/butler/datastore/composites.py CompositesConfig   100% 4 0 0   100% 4 0   100%
python/lsst/daf/butler/datastore/composites.py CompositesMap   77% 31 7 0   78% 18 2   78%
python/lsst/daf/butler/datastore/composites.py (no class)   100% 18 0 8   100% 0 0   100%
python/lsst/daf/butler/datastore/constraints.py ConstraintsValidationError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/constraints.py ConstraintsConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/constraints.py Constraints   84% 32 5 0   89% 18 0   86%
python/lsst/daf/butler/datastore/constraints.py (no class)   100% 19 0 5   100% 0 0   100%
python/lsst/daf/butler/datastore/file_templates.py FileTemplateValidationError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/file_templates.py FileTemplatesConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/file_templates.py FieldDict   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/file_templates.py FileTemplates   79% 58 12 0   79% 28 4   79%
python/lsst/daf/butler/datastore/file_templates.py FileTemplate   91% 207 18 0   91% 134 12   91%
python/lsst/daf/butler/datastore/file_templates.py (no class)   100% 54 0 3   100% 0 0   100%
python/lsst/daf/butler/datastore/generic_base.py GenericBaseDatastore   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/generic_base.py (no class)   100% 24 0 3   88% 8 1   97%
python/lsst/daf/butler/datastore/record_data.py SerializedDatastoreRecordData   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/record_data.py DatastoreRecordData   91% 47 4 0   94% 34 2   93%
python/lsst/daf/butler/datastore/record_data.py DatastoreRecordTable   100% 23 0 0   100% 6 0   100%
python/lsst/daf/butler/datastore/record_data.py (no class)   100% 51 0 2   100% 0 0   100%
python/lsst/daf/butler/datastore/stored_file_info.py StoredDatastoreItemInfo   57% 14 6 4   33% 6 2   50%
python/lsst/daf/butler/datastore/stored_file_info.py StoredFileInfo   98% 48 1 0   95% 22 1   97%
python/lsst/daf/butler/datastore/stored_file_info.py SerializedStoredFileInfo   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/stored_file_info.py StoredFileInfoTable   100% 15 0 0   100% 0 0   100%
python/lsst/daf/butler/datastore/stored_file_info.py (no class)   100% 97 0 2   100% 4 0   100%
python/lsst/daf/butler/datastores/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastores/chainedDatastore.py _IngestPrepData   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/datastores/chainedDatastore.py ChainedDatastore   85% 463 71 1   82% 244 22   84%
python/lsst/daf/butler/datastores/chainedDatastore.py (no class)   100% 82 0 4   100% 0 0   100%
python/lsst/daf/butler/datastores/fileDatastore.py _IngestPrepData   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/datastores/fileDatastore.py FileDatastore   85% 941 137 2   80% 494 60   83%
python/lsst/daf/butler/datastores/fileDatastore.py (no class)   100% 134 0 3   100% 0 0   100%
python/lsst/daf/butler/datastores/file_datastore/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastores/file_datastore/get.py DatastoreFileGetInformation   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastores/file_datastore/get.py (no class)   95% 117 6 0   78% 36 8   91%
python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py ArtifactIndexInfo   17% 6 5 0   0% 2 0   12%
python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py ZipIndex   93% 27 2 0   67% 6 2   88%
python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py RetrievalCallable   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastores/file_datastore/retrieve_artifacts.py (no class)   81% 103 20 0   60% 30 4   76%
python/lsst/daf/butler/datastores/file_datastore/transfer.py (no class)   100% 25 0 0   88% 8 1   97%
python/lsst/daf/butler/datastores/inMemoryDatastore.py StoredMemoryItemInfo   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/datastores/inMemoryDatastore.py InMemoryDatastore   90% 146 15 3   76% 46 9   86%
python/lsst/daf/butler/datastores/inMemoryDatastore.py (no class)   100% 66 0 5   100% 0 0   100%
python/lsst/daf/butler/ddl.py SchemaValidationError   50% 8 4 0   100% 0 0   50%
python/lsst/daf/butler/ddl.py Base64Bytes   75% 12 3 0   67% 6 2   72%
python/lsst/daf/butler/ddl.py Base64Region   88% 8 1 0   100% 4 0   92%
python/lsst/daf/butler/ddl.py AstropyTimeNsecTai   90% 10 1 0   83% 6 1   88%
python/lsst/daf/butler/ddl.py GUID   58% 19 8 0   50% 16 8   54%
python/lsst/daf/butler/ddl.py FieldSpec   42% 36 21 0   55% 20 1   46%
python/lsst/daf/butler/ddl.py ForeignKeySpec   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/ddl.py IndexSpec   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/ddl.py TableSpec   88% 8 1 0   100% 0 0   88%
python/lsst/daf/butler/ddl.py (no class)   100% 126 0 2   100% 0 0   100%
python/lsst/daf/butler/delegates/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/delegates/arrowtable.py ArrowTableDelegate   98% 90 2 1   90% 72 7   94%
python/lsst/daf/butler/delegates/arrowtable.py (no class)   96% 45 2 3   94% 18 1   95%
python/lsst/daf/butler/dimensions/__init__.py (no class)   100% 15 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_config.py DimensionConfig   84% 31 5 0   75% 16 4   81%
python/lsst/daf/butler/dimensions/_config.py _SkyPixSystemConfig   73% 15 4 0   50% 6 1   67%
python/lsst/daf/butler/dimensions/_config.py _SkyPixSectionConfig   83% 6 1 0   75% 4 1   80%
python/lsst/daf/butler/dimensions/_config.py _TopologySectionConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_config.py _LegacyGovernorDimensionStorage   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_config.py _LegacyTableDimensionStorage   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_config.py _LegacyImpliedUnionDimensionStorage   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_config.py _LegacyCachingDimensionStorage   50% 2 1 0   100% 0 0   50%
python/lsst/daf/butler/dimensions/_config.py _ElementConfig   85% 55 8 0   76% 38 9   82%
python/lsst/daf/butler/dimensions/_config.py SerializedDimensionConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_config.py (no class)   100% 118 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_coordinate.py SerializedDataCoordinate   82% 11 2 0   67% 6 2   76%
python/lsst/daf/butler/dimensions/_coordinate.py DataCoordinate   90% 120 12 11   81% 78 15   86%
python/lsst/daf/butler/dimensions/_coordinate.py _DataCoordinateRecordsView   43% 7 4 0   100% 0 0   43%
python/lsst/daf/butler/dimensions/_coordinate.py _BasicTupleDataCoordinate   100% 13 0 1   100% 2 0   100%
python/lsst/daf/butler/dimensions/_coordinate.py _DataCoordinateRequiredMappingView   86% 7 1 0   50% 2 1   78%
python/lsst/daf/butler/dimensions/_coordinate.py _DataCoordinateFullMappingView   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_coordinate.py _RequiredTupleDataCoordinate   100% 18 0 0   100% 6 0   100%
python/lsst/daf/butler/dimensions/_coordinate.py _FullTupleDataCoordinate   100% 22 0 0   100% 6 0   100%
python/lsst/daf/butler/dimensions/_coordinate.py _ExpandedTupleDataCoordinate   100% 21 0 0   100% 4 0   100%
python/lsst/daf/butler/dimensions/_coordinate.py (no class)   100% 165 0 3   100% 4 0   100%
python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py DataCoordinateIterable   75% 4 1 4   100% 0 0   75%
python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py _ScalarDataCoordinateIterable   0% 11 11 0   0% 2 0   0%
python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py _DataCoordinateCollectionBase   87% 39 5 0   88% 24 3   87%
python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py DataCoordinateSet   50% 56 28 0   38% 34 11   46%
python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py DataCoordinateSequence   53% 17 8 0   67% 6 0   57%
python/lsst/daf/butler/dimensions/_data_coordinate_iterable.py (no class)   100% 87 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_database.py DatabaseTopologicalFamily   76% 17 4 0   67% 6 2   74%
python/lsst/daf/butler/dimensions/_database.py DatabaseTopologicalFamilyConstructionVisitor   91% 11 1 0   75% 4 1   87%
python/lsst/daf/butler/dimensions/_database.py DatabaseDimensionElement   93% 14 1 0   100% 0 0   93%
python/lsst/daf/butler/dimensions/_database.py DatabaseDimension   100% 8 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_database.py DatabaseDimensionCombination   88% 8 1 0   100% 0 0   88%
python/lsst/daf/butler/dimensions/_database.py (no class)   100% 59 0 4   100% 0 0   100%
python/lsst/daf/butler/dimensions/_elements.py DimensionElement   74% 61 16 5   60% 10 4   72%
python/lsst/daf/butler/dimensions/_elements.py Dimension   93% 15 1 1   75% 4 1   89%
python/lsst/daf/butler/dimensions/_elements.py DimensionCombination   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_elements.py (no class)   100% 110 0 7   100% 0 0   100%
python/lsst/daf/butler/dimensions/_governor.py GovernorDimension   82% 17 3 0   50% 4 2   76%
python/lsst/daf/butler/dimensions/_governor.py (no class)   100% 26 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_group.py SortedSequenceSet   75% 12 3 0   100% 2 0   79%
python/lsst/daf/butler/dimensions/_group.py DimensionGroup   89% 106 12 0   89% 36 4   89%
python/lsst/daf/butler/dimensions/_group.py (no class)   100% 93 0 3   100% 0 0   100%
python/lsst/daf/butler/dimensions/_packer.py DimensionPacker   73% 11 3 3   75% 4 1   73%
python/lsst/daf/butler/dimensions/_packer.py (no class)   100% 22 0 2   100% 0 0   100%
python/lsst/daf/butler/dimensions/_record_set.py DimensionRecordFactory   100% 0 0 1   100% 0 0   100%
python/lsst/daf/butler/dimensions/_record_set.py DimensionRecordSet   92% 80 6 0   92% 48 2   92%
python/lsst/daf/butler/dimensions/_record_set.py DimensionRecordSetDeserializer   100% 7 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_record_set.py DimensionDataExtractor   100% 12 0 0   80% 10 2   91%
python/lsst/daf/butler/dimensions/_record_set.py SerializableDimensionData   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_record_set.py DimensionDataAttacher   96% 46 2 0   89% 38 4   93%
python/lsst/daf/butler/dimensions/_record_set.py _InProgressRecordDicts   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_record_set.py _DimensionRecordLookupHelper   98% 40 1 0   92% 24 2   95%
python/lsst/daf/butler/dimensions/_record_set.py _DeserializingDimensionRecordLookupHelper   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_record_set.py _SkyPixDimensionRecordLookupHelper   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_record_set.py (no class)   100% 90 0 7   100% 0 0   100%
python/lsst/daf/butler/dimensions/_record_table.py DimensionRecordTable   96% 45 2 0   83% 24 4   91%
python/lsst/daf/butler/dimensions/_record_table.py (no class)   100% 24 0 4   100% 0 0   100%
python/lsst/daf/butler/dimensions/_records.py SpecificSerializedDimensionRecord   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/dimensions/_records.py SerializedDimensionRecord   78% 9 2 0   50% 4 2   69%
python/lsst/daf/butler/dimensions/_records.py DimensionRecord   86% 94 13 0   75% 52 13   82%
python/lsst/daf/butler/dimensions/_records.py (no class)   100% 97 0 5   100% 14 0   100%
python/lsst/daf/butler/dimensions/_schema.py DimensionRecordSchema   91% 45 4 0   82% 22 2   88%
python/lsst/daf/butler/dimensions/_schema.py DimensionElementFields   87% 52 7 0   83% 24 0   86%
python/lsst/daf/butler/dimensions/_schema.py (no class)   100% 65 0 3   100% 6 0   100%
python/lsst/daf/butler/dimensions/_skypix.py SkyPixSystem   91% 22 2 0   70% 10 3   84%
python/lsst/daf/butler/dimensions/_skypix.py SkyPixDimension   83% 12 2 0   100% 0 0   83%
python/lsst/daf/butler/dimensions/_skypix.py (no class)   100% 42 0 3   100% 0 0   100%
python/lsst/daf/butler/dimensions/_universe.py DimensionUniverse   88% 94 11 0   74% 42 11   84%
python/lsst/daf/butler/dimensions/_universe.py (no class)   100% 84 0 2   50% 2 1   99%
python/lsst/daf/butler/dimensions/construction.py DimensionConstructionVisitor   100% 0 0 2   100% 0 0   100%
python/lsst/daf/butler/dimensions/construction.py DimensionConstructionBuilder   94% 16 1 0   83% 6 1   91%
python/lsst/daf/butler/dimensions/construction.py (no class)   100% 27 0 3   100% 0 0   100%
python/lsst/daf/butler/dimensions/record_cache.py DimensionRecordCache   84% 19 3 0   67% 6 2   80%
python/lsst/daf/butler/dimensions/record_cache.py (no class)   100% 15 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_butler/__init__.py (no class)   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_butler/_direct_butler.py ButlerValidationError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_butler/_direct_butler.py DirectButler   89% 825 94 1   82% 488 64   86%
python/lsst/daf/butler/direct_butler/_direct_butler.py _RefGroup   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_butler/_direct_butler.py _ImportDatasetsInfo   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_butler/_direct_butler.py _ButlerClosed   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_butler/_direct_butler.py (no class)   99% 149 2 8   100% 2 0   99%
python/lsst/daf/butler/direct_butler/_direct_butler_collections.py DirectButlerCollections   94% 54 3 0   92% 24 2   94%
python/lsst/daf/butler/direct_butler/_direct_butler_collections.py (no class)   100% 25 0 3   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/__init__.py (no class)   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_driver.py DirectQueryDriver   88% 348 43 2   81% 192 21   85%
python/lsst/daf/butler/direct_query_driver/_driver.py _MaterializationState   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_driver.py _Cursor   88% 26 3 0   100% 6 0   91%
python/lsst/daf/butler/direct_query_driver/_driver.py (no class)   100% 83 0 2   50% 10 5   95%
python/lsst/daf/butler/direct_query_driver/_postprocessing.py Postprocessing   95% 42 2 0   89% 28 3   93%
python/lsst/daf/butler/direct_query_driver/_postprocessing.py (no class)   100% 29 0 2   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_query_analysis.py ResolvedDatasetSearch   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_query_analysis.py QueryJoinsAnalysis   80% 15 3 0   79% 14 3   79%
python/lsst/daf/butler/direct_query_driver/_query_analysis.py QueryFindFirstAnalysis   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_query_analysis.py QueryCollectionAnalysis   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_query_analysis.py QueryTreeAnalysis   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_query_analysis.py (no class)   100% 63 0 3   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_query_builder.py QueryBuilder   100% 13 0 6   100% 6 0   100%
python/lsst/daf/butler/direct_query_driver/_query_builder.py SingleSelectQueryBuilder   100% 32 0 0   100% 14 0   100%
python/lsst/daf/butler/direct_query_driver/_query_builder.py UnionQueryBuilderTerm   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_query_builder.py UnionQueryBuilder   0% 71 71 1   0% 54 0   0%
python/lsst/daf/butler/direct_query_driver/_query_builder.py (no class)   100% 89 0 3   50% 8 4   96%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py ResultPageConverter   100% 0 0 1   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py ResultPageConverterContext   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py DimensionRecordResultPageConverter   100% 6 0 0   100% 2 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _DimensionRecordRowConverter   100% 0 0 1   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _NormalDimensionRecordRowConverter   100% 16 0 0   100% 8 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _SkypixDimensionRecordRowConverter   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _CachedDimensionRecordRowConverter   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py DataCoordinateResultPageConverter   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py DatasetRefResultPageConverter   100% 9 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _DataCoordinateRowConverter   100% 10 0 0   100% 4 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _DimensionGroupRecordRowConverter   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py GeneralResultPageConverter   97% 31 1 0   91% 22 2   94%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _GeneralColumnConverter   100% 0 0 1   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _DefaultGeneralColumnConverter   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _TimestampGeneralColumnConverter   80% 5 1 0   50% 2 1   71%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py _TimespanGeneralColumnConverter   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/direct_query_driver/_result_page_converter.py (no class)   100% 72 0 2   100% 4 0   100%
python/lsst/daf/butler/direct_query_driver/_sql_builders.py SqlSelectBuilder   95% 43 2 0   96% 26 1   96%
python/lsst/daf/butler/direct_query_driver/_sql_builders.py SqlColumns   100% 24 0 0   100% 20 0   100%
python/lsst/daf/butler/direct_query_driver/_sql_builders.py SqlJoinsBuilder   97% 35 1 0   85% 20 3   93%
python/lsst/daf/butler/direct_query_driver/_sql_builders.py (no class)   99% 82 1 3   93% 14 1   98%
python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py SqlColumnVisitor   94% 125 8 6   91% 64 4   93%
python/lsst/daf/butler/direct_query_driver/_sql_column_visitor.py (no class)   100% 33 0 3   100% 0 0   100%
python/lsst/daf/butler/formatters/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/formatters/astropyTable.py AstropyTableFormatter   78% 9 2 0   50% 4 2   69%
python/lsst/daf/butler/formatters/astropyTable.py (no class)   100% 12 0 0   100% 0 0   100%
python/lsst/daf/butler/formatters/file.py FileFormatter   0% 49 49 0   0% 22 0   0%
python/lsst/daf/butler/formatters/file.py (no class)   0% 18 18 2   100% 0 0   0%
python/lsst/daf/butler/formatters/json.py JsonFormatter   80% 20 4 0   100% 6 0   85%
python/lsst/daf/butler/formatters/json.py (no class)   100% 15 0 0   100% 0 0   100%
python/lsst/daf/butler/formatters/logs.py ButlerLogRecordsFormatter   83% 6 1 0   50% 2 1   75%
python/lsst/daf/butler/formatters/logs.py (no class)   100% 11 0 0   100% 0 0   100%
python/lsst/daf/butler/formatters/matplotlib.py MatplotlibFormatter   100% 4 0 0   100% 2 0   100%
python/lsst/daf/butler/formatters/matplotlib.py (no class)   100% 8 0 0   100% 0 0   100%
python/lsst/daf/butler/formatters/packages.py PackagesFormatter   91% 11 1 0   50% 2 1   85%
python/lsst/daf/butler/formatters/packages.py (no class)   100% 12 0 0   100% 0 0   100%
python/lsst/daf/butler/formatters/parquet.py ParquetFormatter   94% 66 4 0   95% 38 2   94%
python/lsst/daf/butler/formatters/parquet.py DataFrameSchema   100% 12 0 0   100% 2 0   100%
python/lsst/daf/butler/formatters/parquet.py ArrowAstropySchema   100% 25 0 0   100% 12 0   100%
python/lsst/daf/butler/formatters/parquet.py ArrowNumpySchema   100% 17 0 0   100% 4 0   100%
python/lsst/daf/butler/formatters/parquet.py (no class)   97% 433 11 10   93% 184 13   96%
python/lsst/daf/butler/formatters/pickle.py PickleFormatter   67% 6 2 0   100% 0 0   67%
python/lsst/daf/butler/formatters/pickle.py (no class)   100% 12 0 0   100% 0 0   100%
python/lsst/daf/butler/formatters/typeless.py TypelessFormatter   90% 31 3 0   94% 16 1   91%
python/lsst/daf/butler/formatters/typeless.py (no class)   100% 10 0 3   100% 0 0   100%
python/lsst/daf/butler/formatters/yaml.py YamlFormatter   70% 27 8 0   83% 12 2   74%
python/lsst/daf/butler/formatters/yaml.py (no class)   100% 15 0 0   100% 0 0   100%
python/lsst/daf/butler/json.py SupportsSimple   100% 1 0 0   50% 2 1   67%
python/lsst/daf/butler/json.py (no class)   68% 25 8 3   50% 2 1   67%
python/lsst/daf/butler/logging.py MDCDict   75% 4 1 0   100% 0 0   75%
python/lsst/daf/butler/logging.py ButlerMDC   100% 32 0 0   92% 12 1   98%
python/lsst/daf/butler/logging.py ButlerLogRecord   100% 19 0 0   100% 4 0   100%
python/lsst/daf/butler/logging.py _ButlerLogRecordsModelV1   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/logging.py _ButlerLogRecordsModel   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/logging.py ButlerLogRecords   96% 92 4 0   87% 54 7   92%
python/lsst/daf/butler/logging.py ButlerLogRecordHandler   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/logging.py JsonLogFormatter   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/logging.py (no class)   100% 116 0 0   100% 0 0   100%
python/lsst/daf/butler/mapping_factory.py MappingFactory   83% 58 10 0   77% 26 6   81%
python/lsst/daf/butler/mapping_factory.py (no class)   100% 18 0 0   100% 0 0   100%
python/lsst/daf/butler/name_shrinker.py NameShrinker   29% 21 15 0   25% 4 1   28%
python/lsst/daf/butler/name_shrinker.py (no class)   100% 11 0 0   100% 0 0   100%
python/lsst/daf/butler/nonempty_mapping.py Copyable   100% 1 0 0   50% 2 1   67%
python/lsst/daf/butler/nonempty_mapping.py NonemptyMapping   80% 20 4 0   71% 14 2   76%
python/lsst/daf/butler/nonempty_mapping.py (no class)   100% 18 0 0   100% 0 0   100%
python/lsst/daf/butler/persistence_context.py PersistenceContextVars   0% 22 22 0   0% 8 0   0%
python/lsst/daf/butler/persistence_context.py (no class)   100% 32 0 6   100% 0 0   100%
python/lsst/daf/butler/progress.py ProgressBar   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/progress.py Progress   88% 82 10 0   91% 54 5   89%
python/lsst/daf/butler/progress.py ProgressHandler   100% 0 0 1   100% 0 0   100%
python/lsst/daf/butler/progress.py _NullProgressBar   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/progress.py (no class)   100% 34 0 0   100% 0 0   100%
python/lsst/daf/butler/pydantic_utils.py DeferredValidation   88% 26 3 0   88% 8 1   88%
python/lsst/daf/butler/pydantic_utils.py (no class)   80% 66 13 2   33% 12 4   73%
python/lsst/daf/butler/queries/__init__.py (no class)   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_base.py QueryBase   100% 4 0 1   100% 0 0   100%
python/lsst/daf/butler/queries/_base.py QueryResultsBase   100% 3 0 4   100% 0 0   100%
python/lsst/daf/butler/queries/_base.py (no class)   100% 29 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_data_coordinate_query_results.py DataCoordinateQueryResults   100% 13 0 0   100% 4 0   100%
python/lsst/daf/butler/queries/_data_coordinate_query_results.py (no class)   100% 20 0 2   100% 0 0   100%
python/lsst/daf/butler/queries/_dataset_query_results.py DatasetRefQueryResults   100% 18 0 0   100% 6 0   100%
python/lsst/daf/butler/queries/_dataset_query_results.py (no class)   100% 28 0 2   100% 0 0   100%
python/lsst/daf/butler/queries/_dimension_record_query_results.py DimensionRecordQueryResults   100% 14 0 0   100% 6 0   100%
python/lsst/daf/butler/queries/_dimension_record_query_results.py (no class)   100% 22 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_expression_strings.py _ColExpr   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_expression_strings.py _Null   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_expression_strings.py _RangeLiteral   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_expression_strings.py _Sequence   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_expression_strings.py _ConversionVisitor   92% 119 10 0   76% 58 12   86%
python/lsst/daf/butler/queries/_expression_strings.py (no class)   94% 109 6 1   79% 34 5   91%
python/lsst/daf/butler/queries/_general_query_results.py GeneralResultTuple   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_general_query_results.py GeneralQueryResults   88% 72 9 0   88% 34 2   88%
python/lsst/daf/butler/queries/_general_query_results.py (no class)   100% 37 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/_identifiers.py IdentifierContext   86% 7 1 0   75% 4 1   82%
python/lsst/daf/butler/queries/_identifiers.py (no class)   100% 74 0 0   96% 46 2   98%
python/lsst/daf/butler/queries/_query.py Query   93% 163 11 0   89% 98 11   92%
python/lsst/daf/butler/queries/_query.py (no class)   100% 48 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/convert_args.py (no class)   100% 49 0 0   100% 24 0   100%
python/lsst/daf/butler/queries/driver.py DataCoordinateResultPage   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/driver.py DimensionRecordResultPage   67% 6 2 0   50% 4 2   60%
python/lsst/daf/butler/queries/driver.py DatasetRefResultPage   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/driver.py GeneralResultPage   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/driver.py QueryDriver   100% 1 0 9   50% 2 1   67%
python/lsst/daf/butler/queries/driver.py (no class)   100% 59 0 0   50% 6 3   95%
python/lsst/daf/butler/queries/expression_factory.py ExpressionProxy   83% 6 1 1   100% 2 0   88%
python/lsst/daf/butler/queries/expression_factory.py ScalarExpressionProxy   100% 24 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expression_factory.py ResolvedScalarExpressionProxy   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expression_factory.py BooleanScalarExpressionProxy   83% 6 1 0   50% 2 1   75%
python/lsst/daf/butler/queries/expression_factory.py TimespanProxy   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expression_factory.py RegionProxy   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expression_factory.py DimensionElementProxy   83% 29 5 0   88% 8 1   84%
python/lsst/daf/butler/queries/expression_factory.py DatasetTypeProxy   86% 14 2 0   100% 2 0   88%
python/lsst/daf/butler/queries/expression_factory.py ExpressionFactory   90% 20 2 1   100% 4 0   92%
python/lsst/daf/butler/queries/expression_factory.py (no class)   100% 99 0 3   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/categorize.py ExpressionConstant   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/categorize.py (no class)   100% 11 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/__init__.py (no class)   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py Node   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py LiteralNode   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py BinaryOp   100% 8 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py UnaryOp   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py StringLiteral   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py TimeLiteral   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py NumericLiteral   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py UuidLiteral   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py Identifier   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py BindName   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py RangeLiteral   100% 7 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py IsIn   94% 16 1 0   83% 6 1   91%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py Parens   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py TupleNode   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py FunctionCall   71% 7 2 0   100% 0 0   71%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py PointNode   100% 7 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py CircleNode   100% 9 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py BoxNode   100% 11 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py PolygonNode   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py RegionNode   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py GlobNode   100% 7 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/exprTree.py (no class)   97% 144 4 3   92% 52 4   96%
python/lsst/daf/butler/queries/expressions/parser/parser.py (no class)   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/parserLex.py LexToken   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/parserLex.py ParserLexError   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/parserLex.py ParserLex   100% 31 0 0   100% 4 0   100%
python/lsst/daf/butler/queries/expressions/parser/parserLex.py (no class)   100% 45 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/parserYacc.py YaccProduction   100% 5 0 0   50% 10 5   67%
python/lsst/daf/butler/queries/expressions/parser/parserYacc.py ParserYaccError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/parserYacc.py ParseError   100% 12 0 0   100% 2 0   100%
python/lsst/daf/butler/queries/expressions/parser/parserYacc.py ParserEOFError   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/queries/expressions/parser/parserYacc.py ParserYacc   98% 59 1 0   91% 22 2   96%
python/lsst/daf/butler/queries/expressions/parser/parserYacc.py (no class)   97% 122 4 0   94% 32 2   96%
python/lsst/daf/butler/queries/expressions/parser/ply/__init__.py (no class)   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/ply/lex.py LexError   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/queries/expressions/parser/ply/lex.py LexToken   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/queries/expressions/parser/ply/lex.py PlyLogger   25% 4 3 0   100% 0 0   25%
python/lsst/daf/butler/queries/expressions/parser/ply/lex.py NullLogger   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/queries/expressions/parser/ply/lex.py Lexer   38% 198 122 0   29% 70 8   36%
python/lsst/daf/butler/queries/expressions/parser/ply/lex.py LexerReflect   56% 218 96 0   58% 114 28   57%
python/lsst/daf/butler/queries/expressions/parser/ply/lex.py (no class)   62% 266 100 0   42% 118 30   56%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py PlyLogger   25% 4 3 0   100% 0 0   25%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py NullLogger   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py YaccError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py YaccSymbol   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py YaccProduction   48% 23 12 0   50% 4 2   48%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py LRParser   19% 540 435 0   16% 196 12   19%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py Production   57% 37 16 0   80% 10 0   62%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py MiniProduction   0% 11 11 0   0% 2 0   0%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py LRItem   86% 14 2 0   50% 2 1   81%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py GrammarError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py Grammar   84% 228 37 0   82% 154 22   83%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py VersionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py LRTable   21% 39 31 0   21% 14 1   21%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py LALRError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py LRGeneratedTable   72% 402 113 0   70% 236 18   71%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py ParserReflect   64% 178 64 0   63% 94 31   64%
python/lsst/daf/butler/queries/expressions/parser/ply/yacc.py (no class)   66% 449 154 0   47% 158 44   61%
python/lsst/daf/butler/queries/expressions/parser/treeVisitor.py TreeVisitor   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/queries/expressions/parser/treeVisitor.py (no class)   100% 44 0 3   100% 0 0   100%
python/lsst/daf/butler/queries/overlaps.py _NaiveDisjointSet   84% 19 3 0   70% 10 3   79%
python/lsst/daf/butler/queries/overlaps.py CalibrationTemporalEndpoint   33% 3 2 0   100% 0 0   33%
python/lsst/daf/butler/queries/overlaps.py CalibrationTemporalFamily   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/overlaps.py OverlapsVisitor   96% 76 3 3   95% 40 2   96%
python/lsst/daf/butler/queries/overlaps.py (no class)   100% 41 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/predicate_constraints_summary.py PredicateConstraintsSummary   100% 17 0 0   100% 8 0   100%
python/lsst/daf/butler/queries/predicate_constraints_summary.py _DataIdExtractionVisitor   97% 36 1 1   94% 18 1   96%
python/lsst/daf/butler/queries/predicate_constraints_summary.py (no class)   100% 28 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/result_specs.py ResultSpecBase   100% 19 0 1   100% 14 0   100%
python/lsst/daf/butler/queries/result_specs.py DataCoordinateResultSpec   100% 4 0 0   100% 2 0   100%
python/lsst/daf/butler/queries/result_specs.py DimensionRecordResultSpec   100% 6 0 0   100% 2 0   100%
python/lsst/daf/butler/queries/result_specs.py DatasetRefResultSpec   100% 6 0 0   100% 2 0   100%
python/lsst/daf/butler/queries/result_specs.py GeneralResultSpec   89% 27 3 0   88% 24 3   88%
python/lsst/daf/butler/queries/result_specs.py SerializedResultSpec   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/queries/result_specs.py (no class)   100% 78 0 0   100% 4 0   100%
python/lsst/daf/butler/queries/tree/__init__.py (no class)   100% 12 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_base.py AnyDatasetType   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/queries/tree/_base.py QueryTreeBase   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_base.py ColumnExpressionBase   100% 1 0 4   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_base.py ColumnLiteralBase   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_base.py (no class)   100% 50 0 4   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_expression.py UnaryExpression   96% 26 1 1   86% 14 2   92%
python/lsst/daf/butler/queries/tree/_column_expression.py BinaryExpression   100% 23 0 0   100% 10 0   100%
python/lsst/daf/butler/queries/tree/_column_expression.py Reversed   80% 5 1 0   100% 0 0   80%
python/lsst/daf/butler/queries/tree/_column_expression.py TimespanAndDatetime   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_expression.py (no class)   100% 82 0 2   100% 10 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py IntColumnLiteral   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py StringColumnLiteral   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py FloatColumnLiteral   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py HashColumnLiteral   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py UUIDColumnLiteral   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py DateTimeColumnLiteral   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py TimespanColumnLiteral   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py RegionColumnLiteral   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_literal.py (no class)   100% 129 0 0   100% 26 0   100%
python/lsst/daf/butler/queries/tree/_column_reference.py DimensionKeyReference   100% 6 0 0   100% 2 0   100%
python/lsst/daf/butler/queries/tree/_column_reference.py DimensionFieldReference   100% 10 0 0   100% 4 0   100%
python/lsst/daf/butler/queries/tree/_column_reference.py DatasetFieldReference   94% 17 1 1   90% 10 1   93%
python/lsst/daf/butler/queries/tree/_column_reference.py (no class)   100% 52 0 3   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_set.py ColumnSet   100% 75 0 1   100% 40 0   100%
python/lsst/daf/butler/queries/tree/_column_set.py ResultColumn   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_set.py ColumnOrder   100% 8 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_column_set.py (no class)   100% 47 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_predicate.py PredicateLeafBase   100% 1 0 3   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_predicate.py Predicate   98% 53 1 0   97% 30 1   98%
python/lsst/daf/butler/queries/tree/_predicate.py LogicalNot   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_predicate.py BooleanWrapper   75% 4 1 0   100% 0 0   75%
python/lsst/daf/butler/queries/tree/_predicate.py IsNull   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_predicate.py Comparison   100% 27 0 0   100% 16 0   100%
python/lsst/daf/butler/queries/tree/_predicate.py InContainer   100% 13 0 0   100% 8 0   100%
python/lsst/daf/butler/queries/tree/_predicate.py InRange   100% 14 0 0   88% 8 1   95%
python/lsst/daf/butler/queries/tree/_predicate.py InQuery   100% 16 0 0   100% 8 0   100%
python/lsst/daf/butler/queries/tree/_predicate.py (no class)   100% 147 0 4   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_query_tree.py DatasetSearch   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/tree/_query_tree.py QueryTree   86% 51 7 0   75% 24 4   83%
python/lsst/daf/butler/queries/tree/_query_tree.py SerializedQueryTree   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/queries/tree/_query_tree.py (no class)   100% 52 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/visitors.py PredicateVisitFlags   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/queries/visitors.py ColumnExpressionVisitor   100% 0 0 7   100% 0 0   100%
python/lsst/daf/butler/queries/visitors.py PredicateVisitor   100% 9 0 9   100% 4 0   100%
python/lsst/daf/butler/queries/visitors.py SimplePredicateVisitor   83% 18 3 0   83% 6 1   83%
python/lsst/daf/butler/queries/visitors.py (no class)   100% 64 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/__init__.py (no class)   100% 10 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_caching_context.py CachingContext   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_caching_context.py _CacheToggle   100% 11 0 0   100% 4 0   100%
python/lsst/daf/butler/registry/_caching_context.py (no class)   100% 20 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_collection_record_cache.py CollectionRecordCache   72% 25 7 0   62% 8 1   70%
python/lsst/daf/butler/registry/_collection_record_cache.py (no class)   100% 15 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/_collection_summary.py CollectionSummary   55% 40 18 0   62% 26 0   58%
python/lsst/daf/butler/registry/_collection_summary.py SerializedCollectionSummary   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_collection_summary.py (no class)   100% 32 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_collection_summary_cache.py CollectionSummaryCache   100% 9 0 0   100% 4 0   100%
python/lsst/daf/butler/registry/_collection_summary_cache.py (no class)   100% 9 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_config.py RegistryConfig   86% 21 3 0   62% 8 3   79%
python/lsst/daf/butler/registry/_config.py (no class)   100% 20 0 3   100% 0 0   100%
python/lsst/daf/butler/registry/_defaults.py RegistryDefaults   91% 54 5 0   97% 32 1   93%
python/lsst/daf/butler/registry/_defaults.py (no class)   100% 28 0 3   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py ArgumentError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py DatasetTypeExpressionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py CollectionExpressionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py NoDefaultCollectionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py UserExpressionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py UserExpressionSyntaxError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py ConflictingDefinitionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py OrphanedRecordError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py UnsupportedIdGeneratorError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py MissingSpatialOverlapError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py RegistryConsistencyError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_exceptions.py (no class)   100% 13 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_registry.py Registry   0% 2 2 43   100% 0 0   0%
python/lsst/daf/butler/registry/_registry.py (no class)   100% 116 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/_registry_base.py RegistryBase   100% 52 0 0   100% 28 0   100%
python/lsst/daf/butler/registry/_registry_base.py (no class)   100% 26 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/_registry_factory.py _RegistryFactory   82% 11 2 0   67% 6 2   76%
python/lsst/daf/butler/registry/_registry_factory.py (no class)   100% 13 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/attributes.py DefaultButlerAttributeManager   100% 32 0 0   100% 8 0   100%
python/lsst/daf/butler/registry/attributes.py (no class)   100% 22 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/bridge/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/bridge/ephemeral.py EphemeralDatastoreRegistryBridge   84% 31 5 0   57% 14 4   76%
python/lsst/daf/butler/registry/bridge/ephemeral.py (no class)   100% 18 0 3   100% 0 0   100%
python/lsst/daf/butler/registry/bridge/monolithic.py MonolithicDatastoreRegistryBridge   97% 58 2 0   83% 18 3   93%
python/lsst/daf/butler/registry/bridge/monolithic.py MonolithicDatastoreRegistryBridgeManager   50% 20 10 0   12% 8 1   39%
python/lsst/daf/butler/registry/bridge/monolithic.py (no class)   100% 44 0 4   100% 0 0   100%
python/lsst/daf/butler/registry/collections/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/collections/_base.py CollectionTablesTuple   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/collections/_base.py DefaultCollectionManager   96% 222 9 3   90% 120 10   94%
python/lsst/daf/butler/registry/collections/_base.py _CollectionChainModificationContext   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/collections/_base.py (no class)   100% 71 0 3   100% 2 0   100%
python/lsst/daf/butler/registry/collections/nameKey.py NameKeyCollectionManager   100% 81 0 0   95% 22 1   99%
python/lsst/daf/butler/registry/collections/nameKey.py (no class)   100% 39 0 3   100% 0 0   100%
python/lsst/daf/butler/registry/collections/synthIntKey.py SynthIntKeyCollectionManager   100% 88 0 0   95% 22 1   99%
python/lsst/daf/butler/registry/collections/synthIntKey.py (no class)   100% 40 0 3   100% 0 0   100%
python/lsst/daf/butler/registry/connectionString.py ConnectionStringFactory   88% 17 2 0   88% 8 1   88%
python/lsst/daf/butler/registry/connectionString.py (no class)   100% 9 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/databases/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/databases/postgresql.py PostgresqlDatabase   0% 104 104 0   0% 42 0   0%
python/lsst/daf/butler/registry/databases/postgresql.py _RangeTimespanType   0% 20 20 0   0% 10 0   0%
python/lsst/daf/butler/registry/databases/postgresql.py _RangeTimespanRepresentation   0% 44 44 0   0% 24 0   0%
python/lsst/daf/butler/registry/databases/postgresql.py (no class)   94% 84 5 0   0% 2 0   92%
python/lsst/daf/butler/registry/databases/sqlite.py SqliteDatabase   93% 128 9 3   88% 56 7   91%
python/lsst/daf/butler/registry/databases/sqlite.py (no class)   97% 64 2 0   60% 10 4   92%
python/lsst/daf/butler/registry/datasets/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/__init__.py (no class)   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py DatasetTypeCache   97% 33 1 0   75% 8 2   93%
python/lsst/daf/butler/registry/datasets/byDimensions/_dataset_type_cache.py (no class)   100% 19 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py _DatasetTypeRecord   88% 8 1 0   75% 4 1   83%
python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py _DatasetRecordStorage   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py _DatasetTypeOverride   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py ByDimensionsDatasetRecordStorageManagerUUID   94% 462 29 1   86% 200 29   91%
python/lsst/daf/butler/registry/datasets/byDimensions/_manager.py (no class)   99% 112 1 2   75% 4 1   98%
python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py CollectionSummaryTables   100% 13 0 0   100% 2 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py CollectionSummaryManager   100% 75 0 0   97% 38 1   99%
python/lsst/daf/butler/registry/datasets/byDimensions/summaries.py (no class)   100% 31 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/tables.py MissingDatabaseTableError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/tables.py StaticDatasetTableSpecTuple   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/tables.py StaticDatasetTablesTuple   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/datasets/byDimensions/tables.py DynamicTables   80% 30 6 0   67% 12 2   76%
python/lsst/daf/butler/registry/datasets/byDimensions/tables.py (no class)   95% 88 4 0   90% 20 2   94%
python/lsst/daf/butler/registry/dimensions/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/dimensions/static.py StaticDimensionRecordStorageManager   95% 192 9 0   93% 106 7   95%
python/lsst/daf/butler/registry/dimensions/static.py _DimensionRecordDatabaseRows   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/dimensions/static.py _DimensionGroupStorage   100% 41 0 0   100% 10 0   100%
python/lsst/daf/butler/registry/dimensions/static.py _CommonSkyPixMediatedOverlapsVisitor   83% 60 10 0   73% 26 7   80%
python/lsst/daf/butler/registry/dimensions/static.py (no class)   100% 68 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/expand_data_ids.py (no class)   100% 21 0 0   100% 10 0   100%
python/lsst/daf/butler/registry/interfaces/__init__.py (no class)   100% 9 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_attributes.py ButlerAttributeExistsError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_attributes.py ButlerAttributeManager   100% 1 0 7   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_attributes.py (no class)   100% 24 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_bridge.py FakeDatasetRef   10% 10 9 0   100% 0 0   10%
python/lsst/daf/butler/registry/interfaces/_bridge.py DatastoreRegistryBridge   100% 1 0 6   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_bridge.py DatastoreRegistryBridgeManager   100% 3 0 5   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_bridge.py (no class)   100% 58 0 9   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_collections.py CollectionRecord   45% 11 6 0   100% 0 0   45%
python/lsst/daf/butler/registry/interfaces/_collections.py RunRecord   100% 6 0 0   50% 2 1   88%
python/lsst/daf/butler/registry/interfaces/_collections.py ChainedCollectionRecord   67% 3 1 0   100% 0 0   67%
python/lsst/daf/butler/registry/interfaces/_collections.py CollectionManager   100% 1 0 22   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_collections.py JoinedCollectionsTable   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_collections.py (no class)   100% 94 0 3   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_database.py DatabaseInsertMode   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_database.py ReadOnlyDatabaseError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_database.py DatabaseConflictError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_database.py SchemaAlreadyDefinedError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_database.py StaticTablesContext   89% 9 1 0   100% 0 0   89%
python/lsst/daf/butler/registry/interfaces/_database.py Database   89% 302 32 13   82% 136 21   87%
python/lsst/daf/butler/registry/interfaces/_database.py DatabaseMetadata   95% 19 1 0   67% 6 2   88%
python/lsst/daf/butler/registry/interfaces/_database.py (no class)   99% 132 1 0   50% 2 1   99%
python/lsst/daf/butler/registry/interfaces/_database_explain.py _Explain   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/registry/interfaces/_database_explain.py (no class)   56% 18 8 0   0% 2 0   50%
python/lsst/daf/butler/registry/interfaces/_datasets.py DatasetRecordStorageManager   85% 13 2 23   67% 6 2   79%
python/lsst/daf/butler/registry/interfaces/_datasets.py (no class)   100% 65 0 7   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_dimensions.py DimensionRecordStorageManager   100% 2 0 10   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_dimensions.py (no class)   100% 32 0 4   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_obscore.py ObsCoreTableManager   50% 2 1 8   100% 0 0   50%
python/lsst/daf/butler/registry/interfaces/_obscore.py (no class)   100% 30 0 9   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_opaque.py OpaqueTableStorage   100% 1 0 6   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_opaque.py OpaqueTableStorageManager   80% 5 1 4   50% 2 1   71%
python/lsst/daf/butler/registry/interfaces/_opaque.py (no class)   100% 36 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_versioning.py IncompatibleVersionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/interfaces/_versioning.py VersionTuple   77% 13 3 0   83% 6 1   79%
python/lsst/daf/butler/registry/interfaces/_versioning.py VersionedExtension   100% 22 0 2   94% 18 1   98%
python/lsst/daf/butler/registry/interfaces/_versioning.py (no class)   100% 30 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/managers.py _GenericRegistryManagers   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/managers.py RegistryManagerTypes   88% 69 8 0   81% 32 4   86%
python/lsst/daf/butler/registry/managers.py RegistryManagerInstances   100% 31 0 0   83% 6 1   97%
python/lsst/daf/butler/registry/managers.py (no class)   100% 62 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/nameShrinker.py (no class)   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/registry/obscore/__init__.py (no class)   100% 5 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_config.py ExtraColumnType   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_config.py ExtraColumnConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_config.py DatasetTypeConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_config.py SpatialPluginConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_config.py ObsCoreConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_config.py ConfigCollectionType   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_config.py ObsCoreManagerConfig   100% 5 0 0   100% 4 0   100%
python/lsst/daf/butler/registry/obscore/_config.py (no class)   100% 83 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_manager.py _ExposureRegionFactory   71% 21 6 0   50% 10 3   65%
python/lsst/daf/butler/registry/obscore/_manager.py ObsCoreLiveTableManager   91% 115 10 1   82% 56 10   88%
python/lsst/daf/butler/registry/obscore/_manager.py (no class)   100% 41 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_records.py DerivedRegionFactory   100% 0 0 1   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_records.py RecordFactory   79% 87 18 2   53% 36 11   72%
python/lsst/daf/butler/registry/obscore/_records.py DafButlerRecordFactory   84% 56 9 0   50% 32 10   72%
python/lsst/daf/butler/registry/obscore/_records.py (no class)   100% 39 0 6   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_schema.py ObsCoreSchema   97% 39 1 0   92% 24 2   95%
python/lsst/daf/butler/registry/obscore/_schema.py (no class)   100% 20 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_spatial.py MissingDatabaseError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_spatial.py RegionTypeError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_spatial.py RegionTypeWarning   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/_spatial.py SpatialObsCorePlugin   47% 15 8 3   25% 8 2   39%
python/lsst/daf/butler/registry/obscore/_spatial.py (no class)   100% 20 0 5   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/default_spatial.py DefaultSpatialObsCorePlugin   100% 19 0 0   100% 6 0   100%
python/lsst/daf/butler/registry/obscore/default_spatial.py (no class)   100% 15 0 3   100% 0 0   100%
python/lsst/daf/butler/registry/obscore/pgsphere.py PgSpherePoint   0% 8 8 0   0% 2 0   0%
python/lsst/daf/butler/registry/obscore/pgsphere.py PgSpherePolygon   0% 11 11 0   0% 4 0   0%
python/lsst/daf/butler/registry/obscore/pgsphere.py PgSphereObsCorePlugin   0% 25 25 0   0% 10 0   0%
python/lsst/daf/butler/registry/obscore/pgsphere.py (no class)   0% 26 26 3   100% 0 0   0%
python/lsst/daf/butler/registry/opaque.py ByNameOpaqueTableStorage   97% 34 1 0   100% 16 0   98%
python/lsst/daf/butler/registry/opaque.py ByNameOpaqueTableStorageManager   100% 20 0 0   100% 4 0   100%
python/lsst/daf/butler/registry/opaque.py (no class)   100% 29 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/queries/__init__.py (no class)   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_query_common.py CommonQueryArguments   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_query_common.py LegacyQueryResultsMixin   100% 33 0 1   100% 10 0   100%
python/lsst/daf/butler/registry/queries/_query_common.py (no class)   100% 47 0 0   100% 6 0   100%
python/lsst/daf/butler/registry/queries/_query_data_coordinates.py QueryDriverDataCoordinateQueryResults   95% 41 2 0   75% 16 4   89%
python/lsst/daf/butler/registry/queries/_query_data_coordinates.py (no class)   100% 28 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_query_datasets.py QueryDriverDatasetRefQueryResults   100% 29 0 0   100% 8 0   100%
python/lsst/daf/butler/registry/queries/_query_datasets.py (no class)   100% 21 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_query_dimension_records.py QueryDriverDimensionRecordQueryResults   78% 9 2 0   100% 0 0   78%
python/lsst/daf/butler/registry/queries/_query_dimension_records.py (no class)   100% 14 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_results.py LimitedQueryResultsBase   100% 0 0 3   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_results.py QueryResultsBase   100% 0 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_results.py DataCoordinateQueryResults   100% 0 0 5   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_results.py DatasetQueryResults   100% 3 0 2   100% 2 0   100%
python/lsst/daf/butler/registry/queries/_results.py ParentDatasetQueryResults   100% 0 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_results.py ChainedDatasetQueryResults   75% 12 3 0   50% 2 1   71%
python/lsst/daf/butler/registry/queries/_results.py DimensionRecordQueryResults   100% 0 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/queries/_results.py (no class)   100% 62 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/sql_registry.py SqlRegistry   89% 289 32 0   80% 122 19   86%
python/lsst/daf/butler/registry/sql_registry.py (no class)   100% 119 0 5   100% 0 0   100%
python/lsst/daf/butler/registry/tests/__init__.py (no class)   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/tests/_database.py DatabaseTests   87% 462 60 4   79% 48 4   86%
python/lsst/daf/butler/registry/tests/_database.py (no class)   100% 60 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/tests/_registry.py RegistryTests   98% 1583 25 1   89% 170 12   98%
python/lsst/daf/butler/registry/tests/_registry.py RegistryTests.testCalibrationCollections.Ambiguous   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/tests/_registry.py (no class)   98% 116 2 0   100% 0 0   98%
python/lsst/daf/butler/registry/versions.py IncompatibleVersionError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/versions.py MissingManagerError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/versions.py ManagerMismatchError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/registry/versions.py ButlerVersionsManager   82% 62 11 0   76% 34 4   80%
python/lsst/daf/butler/registry/versions.py (no class)   100% 28 0 2   100% 0 0   100%
python/lsst/daf/butler/registry/wildcards.py CategorizedWildcard   48% 86 45 0   50% 50 7   49%
python/lsst/daf/butler/registry/wildcards.py CollectionWildcard   74% 23 6 0   64% 14 5   70%
python/lsst/daf/butler/registry/wildcards.py DatasetTypeWildcard   67% 24 8 0   81% 16 1   72%
python/lsst/daf/butler/registry/wildcards.py (no class)   100% 46 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/__init__.py (no class)   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_collection_args.py DatasetTypeSearch   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/_collection_args.py (no class)   0% 41 41 0   0% 20 0   0%
python/lsst/daf/butler/remote_butler/_config.py RemoteButlerConfigModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/_config.py RemoteButlerOptionsModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/_config.py (no class)   0% 9 9 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_defaults.py DefaultsHolder   0% 3 3 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_defaults.py (no class)   0% 5 5 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_errors.py (no class)   0% 7 7 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_factory.py RemoteButlerFactory   0% 26 26 0   0% 14 0   0%
python/lsst/daf/butler/remote_butler/_factory.py (no class)   0% 22 22 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_get.py (no class)   0% 29 29 0   0% 8 0   0%
python/lsst/daf/butler/remote_butler/_http_connection.py RemoteButlerHttpConnection   0% 58 58 0   0% 10 0   0%
python/lsst/daf/butler/remote_butler/_http_connection.py _Retry   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/_http_connection.py ButlerServerError   0% 3 3 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_http_connection.py _Request   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/_http_connection.py (no class)   0% 61 61 0   0% 4 0   0%
python/lsst/daf/butler/remote_butler/_query_driver.py RemoteQueryDriver   0% 50 50 0   0% 12 0   0%
python/lsst/daf/butler/remote_butler/_query_driver.py (no class)   0% 66 66 1   0% 20 0   0%
python/lsst/daf/butler/remote_butler/_query_results.py (no class)   0% 22 22 0   0% 6 0   0%
python/lsst/daf/butler/remote_butler/_ref_utils.py (no class)   0% 31 31 0   0% 12 0   0%
python/lsst/daf/butler/remote_butler/_registry.py RemoteButlerRegistry   0% 53 53 21   0% 16 0   0%
python/lsst/daf/butler/remote_butler/_registry.py (no class)   0% 72 72 0   0% 4 0   0%
python/lsst/daf/butler/remote_butler/_remote_butler.py RemoteButler   0% 173 173 14   0% 64 0   0%
python/lsst/daf/butler/remote_butler/_remote_butler.py _RemoteButlerCacheData   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_remote_butler.py RemoteButlerCache   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_remote_butler.py (no class)   0% 114 114 7   0% 2 0   0%
python/lsst/daf/butler/remote_butler/_remote_butler_collections.py RemoteButlerCollections   0% 20 20 6   0% 8 0   0%
python/lsst/daf/butler/remote_butler/_remote_butler_collections.py (no class)   0% 25 25 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py RemoteFileTransferSource   0% 14 14 0   0% 4 0   0%
python/lsst/daf/butler/remote_butler/_remote_file_transfer_source.py (no class)   0% 29 29 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/authentication/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/authentication/cadc.py CadcAuthenticationProvider   0% 7 7 0   0% 2 0   0%
python/lsst/daf/butler/remote_butler/authentication/cadc.py (no class)   0% 20 20 0   0% 2 0   0%
python/lsst/daf/butler/remote_butler/authentication/interface.py RemoteButlerAuthenticationProvider   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/authentication/interface.py (no class)   0% 4 4 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/authentication/rubin.py RubinAuthenticationProvider   0% 7 7 0   0% 2 0   0%
python/lsst/daf/butler/remote_butler/authentication/rubin.py (no class)   0% 24 24 0   0% 4 0   0%
python/lsst/daf/butler/remote_butler/registry/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server/__init__.py (no class)   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/server/_config.py RepositoryConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server/_config.py ButlerServerConfig   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/server/_config.py (no class)   0% 40 40 0   0% 4 0   0%
python/lsst/daf/butler/remote_butler/server/_dependencies.py (no class)   0% 39 39 0   0% 8 0   0%
python/lsst/daf/butler/remote_butler/server/_factory.py Factory   0% 7 7 0   0% 2 0   0%
python/lsst/daf/butler/remote_butler/server/_factory.py (no class)   0% 8 8 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py GafaelfawrClient   0% 9 9 0   0% 4 0   0%
python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py _GafaelfawrUserInfo   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py _GafaelfawrGroup   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py GafaelfawrGroupAuthorizer   0% 15 15 0   0% 8 0   0%
python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py MockGafaelfawrGroupAuthorizer   0% 3 3 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/server/_gafaelfawr.py (no class)   0% 20 20 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/server/_server.py (no class)   0% 46 46 0   0% 6 0   0%
python/lsst/daf/butler/remote_butler/server/_telemetry.py TelemetryContext   0% 1 1 0   0% 2 0   0%
python/lsst/daf/butler/remote_butler/server/_telemetry.py NullTelemetryContext   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/server/_telemetry.py SentryTelemetryContext   0% 2 2 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/server/_telemetry.py (no class)   0% 31 31 0   0% 6 0   0%
python/lsst/daf/butler/remote_butler/server_models.py FindDatasetRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py FindDatasetResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetDatasetTypeResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetUniverseResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetFileByDataIdRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetFileResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py ErrorResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetCollectionInfoResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetCollectionSummaryResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py ExpandDataIdRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py ExpandDataIdResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryCollectionsRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryCollectionsResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryCollectionInfoRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryCollectionInfoResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryDatasetTypesRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryDatasetTypesResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py MaterializedQuery   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py DataCoordinateUpload   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryInputs   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryExecuteRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py DataCoordinateResultModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py DimensionRecordsResultModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py DatasetRefResultModel   0% 1 1 0   100% 0 0   0%
python/lsst/daf/butler/remote_butler/server_models.py GeneralResultModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryErrorResultModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryKeepAliveModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryCountRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryCountResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryAnyRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryAnyResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryExplainRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryExplainResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py QueryAllDatasetsRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetFileTransferInfoRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py FileTransferRecordModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetFileTransferInfoResponseModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py FileInfoRecord   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py FileInfoPayload   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py GetManyDatasetsRequestModel   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/remote_butler/server_models.py (no class)   0% 183 183 0   100% 0 0   0%
python/lsst/daf/butler/repo_relocation.py (no class)   89% 19 2 0   83% 6 1   88%
python/lsst/daf/butler/script/__init__.py (no class)   100% 22 0 0   100% 0 0   100%
python/lsst/daf/butler/script/_associate.py (no class)   64% 11 4 0   100% 0 0   64%
python/lsst/daf/butler/script/_pruneDatasets.py PruneDatasetsResult   100% 14 0 0   100% 2 0   100%
python/lsst/daf/butler/script/_pruneDatasets.py PruneDatasetsResult.State   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/script/_pruneDatasets.py (no class)   100% 73 0 2   100% 20 0   100%
python/lsst/daf/butler/script/butlerImport.py (no class)   89% 9 1 0   50% 2 1   82%
python/lsst/daf/butler/script/certifyCalibrations.py (no class)   30% 20 14 0   0% 6 0   23%
python/lsst/daf/butler/script/collectionChain.py (no class)   92% 52 4 0   82% 28 5   89%
python/lsst/daf/butler/script/configDump.py (no class)   100% 13 0 0   100% 4 0   100%
python/lsst/daf/butler/script/configValidate.py (no class)   85% 13 2 0   100% 0 0   85%
python/lsst/daf/butler/script/createRepo.py (no class)   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/script/exportCalibs.py (no class)   23% 57 44 2   0% 14 0   18%
python/lsst/daf/butler/script/ingest_files.py (no class)   94% 54 3 3   88% 8 1   94%
python/lsst/daf/butler/script/ingest_zip.py (no class)   67% 6 2 0   100% 0 0   67%
python/lsst/daf/butler/script/queryCollections.py (no class)   83% 123 21 0   81% 68 7   82%
python/lsst/daf/butler/script/queryDataIds.py _Table   71% 17 5 0   33% 6 2   61%
python/lsst/daf/butler/script/queryDataIds.py (no class)   90% 68 7 3   85% 34 3   88%
python/lsst/daf/butler/script/queryDatasetTypes.py (no class)   84% 19 3 0   75% 4 1   83%
python/lsst/daf/butler/script/queryDatasets.py _Table   96% 23 1 0   90% 10 1   94%
python/lsst/daf/butler/script/queryDatasets.py QueryDatasets   96% 76 3 1   94% 36 2   96%
python/lsst/daf/butler/script/queryDatasets.py (no class)   100% 29 0 3   100% 0 0   100%
python/lsst/daf/butler/script/queryDimensionRecords.py (no class)   89% 54 6 1   69% 26 8   82%
python/lsst/daf/butler/script/register_dataset_type.py (no class)   100% 11 0 0   100% 2 0   100%
python/lsst/daf/butler/script/removeCollections.py RemoveCollectionResult   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/script/removeCollections.py CollectionInfo   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/script/removeCollections.py (no class)   95% 59 3 0   100% 14 0   96%
python/lsst/daf/butler/script/removeDatasetType.py (no class)   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/script/removeRuns.py RemoveRun   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/script/removeRuns.py RemoveRunsResult   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/script/removeRuns.py (no class)   100% 45 0 0   83% 6 1   98%
python/lsst/daf/butler/script/retrieveArtifacts.py (no class)   95% 22 1 2   75% 4 1   92%
python/lsst/daf/butler/script/transferDatasets.py (no class)   53% 15 7 0   100% 0 0   53%
python/lsst/daf/butler/tests/__init__.py (no class)   100% 6 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/_datasetsHelper.py DatasetTestHelper   100% 9 0 0   75% 4 1   92%
python/lsst/daf/butler/tests/_datasetsHelper.py DatastoreTestHelper   100% 12 0 0   100% 6 0   100%
python/lsst/daf/butler/tests/_datasetsHelper.py BadWriteFormatter   67% 3 1 0   100% 0 0   67%
python/lsst/daf/butler/tests/_datasetsHelper.py BadNoWriteFormatter   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/_datasetsHelper.py MultiDetectorFormatter   67% 9 3 0   50% 6 3   60%
python/lsst/daf/butler/tests/_datasetsHelper.py (no class)   100% 30 0 3   100% 0 0   100%
python/lsst/daf/butler/tests/_dummyRegistry.py DummyOpaqueTableStorage   90% 52 5 0   92% 38 3   91%
python/lsst/daf/butler/tests/_dummyRegistry.py DummyOpaqueTableStorageManager   43% 7 4 0   100% 0 0   43%
python/lsst/daf/butler/tests/_dummyRegistry.py DummyDatastoreRegistryBridgeManager   30% 10 7 0   0% 4 0   21%
python/lsst/daf/butler/tests/_dummyRegistry.py DummyRegistry   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/_dummyRegistry.py (no class)   100% 39 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/_examplePythonTypes.py MetricsExample   82% 22 4 0   100% 2 0   83%
python/lsst/daf/butler/tests/_examplePythonTypes.py MetricsExampleModel   60% 5 2 0   100% 0 0   60%
python/lsst/daf/butler/tests/_examplePythonTypes.py MetricsExampleDataclass   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/_examplePythonTypes.py ListDelegate   100% 5 0 0   50% 2 1   86%
python/lsst/daf/butler/tests/_examplePythonTypes.py MetricsDelegate   92% 13 1 0   83% 6 1   89%
python/lsst/daf/butler/tests/_examplePythonTypes.py (no class)   100% 69 0 2   100% 4 0   100%
python/lsst/daf/butler/tests/_testRepo.py DatastoreMock   100% 6 0 0   100% 2 0   100%
python/lsst/daf/butler/tests/_testRepo.py (no class)   97% 139 4 2   95% 62 3   97%
python/lsst/daf/butler/tests/butler_queries.py ButlerQueryTests   99% 758 1 1   92% 36 3   99%
python/lsst/daf/butler/tests/butler_queries.py (no class)   100% 76 0 0   100% 2 0   100%
python/lsst/daf/butler/tests/cliCmdTestBase.py CliCmdTestBase   70% 27 8 0   25% 4 1   65%
python/lsst/daf/butler/tests/cliCmdTestBase.py (no class)   100% 31 0 8   100% 0 0   100%
python/lsst/daf/butler/tests/cliLogTestBase.py CliLogTestBase   100% 74 0 0   95% 20 1   99%
python/lsst/daf/butler/tests/cliLogTestBase.py CliLogTestBase.PythonLogger   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/cliLogTestBase.py CliLogTestBase.LsstLogger   60% 5 2 0   50% 2 1   57%
python/lsst/daf/butler/tests/cliLogTestBase.py (no class)   91% 67 6 10   67% 6 2   89%
python/lsst/daf/butler/tests/deferredFormatter.py DeferredFormatter   100% 0 0 2   100% 0 0   100%
python/lsst/daf/butler/tests/deferredFormatter.py (no class)   100% 7 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/dict_convertible_model.py DictConvertibleModel   100% 2 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/dict_convertible_model.py (no class)   100% 12 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/hybrid_butler.py HybridButler   0% 52 52 0   0% 2 0   0%
python/lsst/daf/butler/tests/hybrid_butler.py (no class)   0% 78 78 0   100% 0 0   0%
python/lsst/daf/butler/tests/hybrid_butler_collections.py HybridButlerCollections   0% 10 10 0   100% 0 0   0%
python/lsst/daf/butler/tests/hybrid_butler_collections.py (no class)   0% 18 18 3   100% 0 0   0%
python/lsst/daf/butler/tests/hybrid_butler_registry.py HybridButlerRegistry   0% 50 50 2   0% 2 0   0%
python/lsst/daf/butler/tests/hybrid_butler_registry.py (no class)   0% 67 67 0   100% 0 0   0%
python/lsst/daf/butler/tests/postgresql.py TemporaryPostgresInstance   0% 13 13 0   100% 0 0   0%
python/lsst/daf/butler/tests/postgresql.py (no class)   77% 35 8 0   50% 2 1   76%
python/lsst/daf/butler/tests/registry_data/__init__.py (no class)   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/registry_data/spatial.py (no class)   0% 174 174 2   0% 48 0   0%
python/lsst/daf/butler/tests/server.py TestServerInstance   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/server.py UnhandledServerError   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/server.py (no class)   0% 87 87 0   0% 10 0   0%
python/lsst/daf/butler/tests/server_available.py (no class)   76% 17 4 0   50% 2 1   74%
python/lsst/daf/butler/tests/server_utils.py (no class)   0% 23 23 0   0% 14 0   0%
python/lsst/daf/butler/tests/testFormatters.py DoNothingFormatter   100% 0 0 2   100% 0 0   100%
python/lsst/daf/butler/tests/testFormatters.py FormatterTest   83% 6 1 2   83% 6 1   83%
python/lsst/daf/butler/tests/testFormatters.py SingleExtensionFormatter   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/testFormatters.py MultipleExtensionsFormatter   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/testFormatters.py LenientYamlFormatter   100% 1 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/testFormatters.py MetricsExampleFormatter   91% 23 2 0   88% 16 2   90%
python/lsst/daf/butler/tests/testFormatters.py MetricsExampleDataFormatter   94% 16 1 0   83% 6 1   91%
python/lsst/daf/butler/tests/testFormatters.py MetricsExampleModelProvenanceFormatter   100% 4 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/testFormatters.py (no class)   100% 41 0 3   100% 0 0   100%
python/lsst/daf/butler/tests/utils.py TestCaseMixin   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/tests/utils.py ButlerTestHelper   100% 23 0 0   100% 10 0   100%
python/lsst/daf/butler/tests/utils.py MetricTestRepo   100% 31 0 0   100% 4 0   100%
python/lsst/daf/butler/tests/utils.py (no class)   100% 67 0 7   100% 6 0   100%
python/lsst/daf/butler/time_utils.py _FastTimeUnixTai   86% 14 2 0   50% 4 2   78%
python/lsst/daf/butler/time_utils.py TimeConverter   100% 32 0 0   75% 8 2   95%
python/lsst/daf/butler/time_utils.py _AstropyTimeToYAML   100% 6 0 0   50% 4 2   80%
python/lsst/daf/butler/time_utils.py (no class)   95% 43 2 0   100% 0 0   95%
python/lsst/daf/butler/timespan_database_representation.py TimespanDatabaseRepresentation   100% 1 0 17   100% 0 0   100%
python/lsst/daf/butler/timespan_database_representation.py _CompoundTimespanDatabaseRepresentation   87% 62 8 0   74% 34 9   82%
python/lsst/daf/butler/timespan_database_representation.py (no class)   98% 91 2 2   100% 0 0   98%
python/lsst/daf/butler/transfers/__init__.py (no class)   100% 3 0 0   100% 0 0   100%
python/lsst/daf/butler/transfers/_context.py RepoExportContext   93% 91 6 0   83% 66 9   89%
python/lsst/daf/butler/transfers/_context.py (no class)   100% 21 0 4   100% 0 0   100%
python/lsst/daf/butler/transfers/_interfaces.py RepoTransferFormatConfig   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/transfers/_interfaces.py RepoExportBackend   100% 0 0 5   100% 0 0   100%
python/lsst/daf/butler/transfers/_interfaces.py RepoImportBackend   100% 0 0 1   100% 0 0   100%
python/lsst/daf/butler/transfers/_interfaces.py (no class)   100% 32 0 2   100% 0 0   100%
python/lsst/daf/butler/transfers/_yaml.py _RefMapper   0% 3 3 0   100% 0 0   0%
python/lsst/daf/butler/transfers/_yaml.py YamlRepoExportBackend   96% 26 1 0   83% 12 2   92%
python/lsst/daf/butler/transfers/_yaml.py _DayObsOffsetCalculator   53% 19 9 0   50% 4 0   52%
python/lsst/daf/butler/transfers/_yaml.py YamlRepoImportBackend   94% 191 12 0   89% 142 15   92%
python/lsst/daf/butler/transfers/_yaml.py (no class)   98% 59 1 3   50% 2 1   97%
python/lsst/daf/butler/utils.py _Marker   100% 0 0 0   100% 0 0   100%
python/lsst/daf/butler/utils.py (no class)   92% 48 4 0   81% 16 1   89%
python/lsst/daf/butler/version.py (no class)   100% 5 0 0   100% 0 0   100%
tests/test_astropyTableFormatter.py AstropyTableFormatterTestCase   100% 17 0 0   100% 0 0   100%
tests/test_astropyTableFormatter.py (no class)   100% 11 0 2   100% 0 0   100%
tests/test_authentication.py TestButlerClientAuthentication   0% 21 21 0   100% 0 0   0%
tests/test_authentication.py (no class)   86% 14 2 0   50% 2 1   81%
tests/test_butler.py TransactionTestError   100% 0 0 0   100% 0 0   100%
tests/test_butler.py ButlerConfigTests   100% 11 0 0   100% 0 0   100%
tests/test_butler.py ButlerPutGetTests   100% 204 0 0   94% 34 2   99%
tests/test_butler.py ButlerTests   100% 605 0 0   86% 84 12   98%
tests/test_butler.py FileDatastoreButlerTests   99% 248 2 0   96% 26 1   99%
tests/test_butler.py PosixDatastoreButlerTestCase   100% 149 0 0   100% 14 0   100%
tests/test_butler.py PostgresPosixDatastoreButlerTestCase   7% 14 13 0   0% 2 0   6%
tests/test_butler.py ClonedPostgresPosixDatastoreButlerTestCase   0% 2 2 0   100% 0 0   0%
tests/test_butler.py InMemoryDatastoreButlerTestCase   100% 2 0 0   100% 0 0   100%
tests/test_butler.py ClonedSqliteButlerTestCase   100% 2 0 0   100% 0 0   100%
tests/test_butler.py ChainedDatastoreButlerTestCase   100% 1 0 0   100% 0 0   100%
tests/test_butler.py ButlerExplicitRootTestCase   100% 16 0 0   100% 0 0   100%
tests/test_butler.py ButlerMakeRepoOutfileTestCase   100% 14 0 0   50% 2 1   94%
tests/test_butler.py ButlerMakeRepoOutfileDirTestCase   100% 6 0 0   100% 0 0   100%
tests/test_butler.py ButlerMakeRepoOutfileUriTestCase   100% 4 0 0   100% 0 0   100%
tests/test_butler.py S3DatastoreButlerTestCase   86% 35 5 0   38% 8 3   77%
tests/test_butler.py DatastoreTransfers   100% 132 0 0   94% 48 3   98%
tests/test_butler.py PosixDatastoreTransfers   100% 76 0 0   100% 2 0   100%
tests/test_butler.py ChainedDatastoreTransfers   100% 0 0 0   100% 0 0   100%
tests/test_butler.py ButlerServerDatastoreTransfers   0% 9 9 0   100% 0 0   0%
tests/test_butler.py TransferDatasetsInPlace   100% 35 0 0   100% 0 0   100%
tests/test_butler.py NullDatastoreTestCase   100% 29 0 0   100% 0 0   100%
tests/test_butler.py ButlerServerTests   0% 14 14 0   100% 0 0   0%
tests/test_butler.py ButlerServerSqliteTests   100% 0 0 0   100% 0 0   100%
tests/test_butler.py ButlerServerPostgresTests   0% 2 2 0   100% 0 0   0%
tests/test_butler.py (no class)   98% 290 7 6   100% 2 0   98%
tests/test_butler_factory.py ButlerFactoryTestCase   100% 23 0 0   100% 2 0   100%
tests/test_butler_factory.py (no class)   100% 12 0 2   100% 0 0   100%
tests/test_cliCmdAssociate.py AssociateTestCase   100% 7 0 0   100% 0 0   100%
tests/test_cliCmdAssociate.py (no class)   100% 10 0 2   100% 0 0   100%
tests/test_cliCmdConfigDump.py ConfigDumpTest   50% 2 1 0   100% 0 0   50%
tests/test_cliCmdConfigDump.py ConfigDumpUseTest   100% 85 0 0   100% 0 0   100%
tests/test_cliCmdConfigDump.py (no class)   100% 25 0 2   100% 0 0   100%
tests/test_cliCmdConfigValidate.py ValidateTest   50% 2 1 0   100% 0 0   50%
tests/test_cliCmdConfigValidate.py ConfigValidateUseTest   100% 13 0 0   100% 0 0   100%
tests/test_cliCmdConfigValidate.py (no class)   100% 15 0 2   100% 0 0   100%
tests/test_cliCmdCreate.py CreateTest   100% 5 0 0   100% 0 0   100%
tests/test_cliCmdCreate.py (no class)   100% 12 0 2   100% 0 0   100%
tests/test_cliCmdImport.py ImportTestCase   100% 5 0 0   100% 0 0   100%
tests/test_cliCmdImport.py (no class)   100% 13 0 2   100% 0 0   100%
tests/test_cliCmdIngestFiles.py CliIngestFilesTest   100% 40 0 0   100% 4 0   100%
tests/test_cliCmdIngestFiles.py (no class)   100% 17 0 2   100% 0 0   100%
tests/test_cliCmdPruneDatasets.py PruneDatasetsTestCase   100% 53 0 0   100% 12 0   100%
tests/test_cliCmdPruneDatasets.py QueryDatasetsCLITest   100% 15 0 0   100% 0 0   100%
tests/test_cliCmdPruneDatasets.py (no class)   100% 64 0 2   75% 4 1   99%
tests/test_cliCmdQueryCollections.py QueryCollectionsCmdTest   100% 8 0 0   100% 0 0   100%
tests/test_cliCmdQueryCollections.py QueryCollectionsScriptTest   100% 20 0 0   100% 0 0   100%
tests/test_cliCmdQueryCollections.py ChainedCollectionsTest   100% 59 0 0   100% 0 0   100%
tests/test_cliCmdQueryCollections.py (no class)   100% 27 0 2   100% 0 0   100%
tests/test_cliCmdQueryDataIds.py QueryDataIdsTest   100% 49 0 0   100% 2 0   100%
tests/test_cliCmdQueryDataIds.py (no class)   100% 21 0 2   100% 0 0   100%
tests/test_cliCmdQueryDatasetTypes.py QueryDatasetTypesCmdTest   100% 6 0 0   100% 0 0   100%
tests/test_cliCmdQueryDatasetTypes.py QueryDatasetTypesScriptTest   100% 62 0 0   100% 2 0   100%
tests/test_cliCmdQueryDatasetTypes.py (no class)   100% 21 0 2   100% 0 0   100%
tests/test_cliCmdQueryDatasets.py QueryDatasetsTest   100% 85 0 0   100% 2 0   100%
tests/test_cliCmdQueryDatasets.py QueryDatasetsCLITest   100% 9 0 0   100% 0 0   100%
tests/test_cliCmdQueryDatasets.py (no class)   100% 32 0 2   100% 0 0   100%
tests/test_cliCmdQueryDimensionRecords.py QueryDimensionRecordsTest   100% 41 0 0   100% 0 0   100%
tests/test_cliCmdQueryDimensionRecords.py (no class)   100% 20 0 2   100% 0 0   100%
tests/test_cliCmdRemoveCollections.py RemoveCollectionTest   99% 79 1 0   88% 8 1   98%
tests/test_cliCmdRemoveCollections.py (no class)   100% 21 0 2   100% 0 0   100%
tests/test_cliCmdRemoveRuns.py RemoveCollectionTest   100% 69 0 0   100% 0 0   100%
tests/test_cliCmdRemoveRuns.py (no class)   100% 11 0 2   100% 0 0   100%
tests/test_cliCmdRetrieveArtifacts.py CliRetrieveArtifactsTest   96% 50 2 0   75% 4 1   94%
tests/test_cliCmdRetrieveArtifacts.py (no class)   100% 20 0 2   100% 0 0   100%
tests/test_cliLog.py CliLogTestCase   100% 0 0 0   100% 0 0   100%
tests/test_cliLog.py ConvertPyLogLevelTestCase   100% 5 0 0   100% 0 0   100%
tests/test_cliLog.py (no class)   83% 12 2 2   100% 0 0   83%
tests/test_cliPluginLoader.py FailedLoadTest   94% 17 1 0   100% 0 0   94%
tests/test_cliPluginLoader.py FailedLoadTest.test_unimportableLocalPackage.FailCLI   100% 0 0 0   100% 0 0   100%
tests/test_cliPluginLoader.py PluginLoaderTest   100% 26 0 0   100% 0 0   100%
tests/test_cliPluginLoader.py (no class)   100% 35 0 2   100% 0 0   100%
tests/test_cliUtilSplitCommas.py SplitCommasTestCase   100% 27 0 0   100% 4 0   100%
tests/test_cliUtilSplitCommas.py (no class)   100% 18 0 2   100% 0 0   100%
tests/test_cliUtilSplitKv.py SplitKvTestCase   100% 18 0 0   100% 0 0   100%
tests/test_cliUtilSplitKv.py SplitKvCmdTestCase   98% 86 2 0   100% 2 0   98%
tests/test_cliUtilSplitKv.py (no class)   100% 35 0 2   100% 0 0   100%
tests/test_cliUtilToUpper.py ToUpperTestCase   100% 13 0 0   100% 0 0   100%
tests/test_cliUtilToUpper.py (no class)   100% 13 0 2   100% 0 0   100%
tests/test_cliUtils.py ArgumentHelpGeneratorTestCase   80% 10 2 0   100% 0 0   80%
tests/test_cliUtils.py UnwrapStringTestCase   100% 14 0 0   100% 0 0   100%
tests/test_cliUtils.py MWOptionTest   89% 18 2 0   100% 2 0   90%
tests/test_cliUtils.py MWArgumentDecoratorTest   96% 24 1 0   100% 4 0   96%
tests/test_cliUtils.py MWOptionDecoratorTest   100% 20 0 0   100% 0 0   100%
tests/test_cliUtils.py SectionOptionTest   100% 7 0 0   100% 0 0   100%
tests/test_cliUtils.py MWPathTest   100% 24 0 0   100% 0 0   100%
tests/test_cliUtils.py MWCommandTest   100% 22 0 0   100% 2 0   100%
tests/test_cliUtils.py (no class)   100% 59 0 2   100% 0 0   100%
tests/test_column_spec.py ColumnSpecTestCase   100% 8 0 0   100% 0 0   100%
tests/test_column_spec.py (no class)   100% 10 0 0   100% 0 0   100%
tests/test_composites.py TestCompositesConfig   100% 36 0 0   100% 2 0   100%
tests/test_composites.py (no class)   100% 11 0 2   100% 0 0   100%
tests/test_config.py ExampleWithConfigFileReference   100% 0 0 0   100% 0 0   100%
tests/test_config.py ExampleWithConfigFileReference2   100% 0 0 0   100% 0 0   100%
tests/test_config.py ConfigTest   100% 0 0 0   100% 0 0   100%
tests/test_config.py ConfigTestPathlib   100% 0 0 0   100% 0 0   100%
tests/test_config.py ConfigTestEmpty   100% 0 0 0   100% 0 0   100%
tests/test_config.py ConfigTestButlerDir   100% 0 0 0   100% 0 0   100%
tests/test_config.py ConfigTestNoDefaults   100% 0 0 0   100% 0 0   100%
tests/test_config.py ConfigTestAbsPath   100% 0 0 0   100% 0 0   100%
tests/test_config.py ConfigTestCls   100% 0 0 0   100% 0 0   100%
tests/test_config.py ConfigTestCase   100% 204 0 0   100% 34 0   100%
tests/test_config.py ConfigSubsetTestCase   100% 129 0 0   100% 2 0   100%
tests/test_config.py FileWriteConfigTestCase   100% 11 0 0   100% 2 0   100%
tests/test_config.py (no class)   100% 71 0 2   100% 0 0   100%
tests/test_connectionString.py ConnectionStringBuilderTestCase   100% 18 0 0   100% 2 0   100%
tests/test_connectionString.py (no class)   100% 18 0 2   100% 0 0   100%
tests/test_constraints.py ConstraintsTestCase   100% 81 0 0   100% 0 0   100%
tests/test_constraints.py (no class)   100% 12 0 2   100% 0 0   100%
tests/test_datasets.py DatasetTypeTestCase   100% 197 0 0   100% 14 0   100%
tests/test_datasets.py DatasetRefTestCase   100% 230 0 0   100% 4 0   100%
tests/test_datasets.py ZipIndexTestCase   100% 20 0 0   100% 0 0   100%
tests/test_datasets.py (no class)   100% 40 0 2   100% 0 0   100%
tests/test_datastore.py TransactionTestError   100% 0 0 0   100% 0 0   100%
tests/test_datastore.py DatastoreTestsBase   100% 9 0 0   100% 2 0   100%
tests/test_datastore.py DatastoreTests   99% 508 1 0   99% 98 1   99%
tests/test_datastore.py PosixDatastoreTestCase   100% 40 0 0   100% 4 0   100%
tests/test_datastore.py PosixDatastoreNoChecksumsTestCase   100% 25 0 0   100% 0 0   100%
tests/test_datastore.py TrashDatastoreTestCase   100% 47 0 0   100% 4 0   100%
tests/test_datastore.py CleanupPosixDatastoreTestCase   100% 24 0 0   100% 2 0   100%
tests/test_datastore.py InMemoryDatastoreTestCase   100% 0 0 0   100% 0 0   100%
tests/test_datastore.py ChainedDatastoreTestCase   100% 0 0 0   100% 0 0   100%
tests/test_datastore.py ChainedDatastoreMemoryTestCase   100% 0 0 0   100% 0 0   100%
tests/test_datastore.py DatastoreConstraintsTests   100% 27 0 0   100% 8 0   100%
tests/test_datastore.py PosixDatastoreConstraintsTestCase   100% 2 0 0   100% 0 0   100%
tests/test_datastore.py InMemoryDatastoreConstraintsTestCase   100% 0 0 0   100% 0 0   100%
tests/test_datastore.py ChainedDatastoreConstraintsNativeTestCase   100% 0 0 0   100% 0 0   100%
tests/test_datastore.py ChainedDatastoreConstraintsTestCase   100% 0 0 0   100% 0 0   100%
tests/test_datastore.py ChainedDatastoreMemoryConstraintsTestCase   100% 0 0 0   100% 0 0   100%
tests/test_datastore.py ChainedDatastorePerStoreConstraintsTests   100% 37 0 0   100% 12 0   100%
tests/test_datastore.py DatastoreCacheTestCase   100% 237 0 0   97% 30 1   99%
tests/test_datastore.py NullDatastoreTestCase   100% 44 0 0   100% 0 0   100%
tests/test_datastore.py DatasetRefURIsTestCase   100% 19 0 0   100% 0 0   100%
tests/test_datastore.py StoredFileInfoTestCase   100% 27 0 0   100% 0 0   100%
tests/test_datastore.py TestDatastoreRecordTable   100% 62 0 0   100% 0 0   100%
tests/test_datastore.py (no class)   100% 189 0 2   100% 2 0   100%
tests/test_ddl.py AstropyTimeNsecTaiTestCase   100% 21 0 0   100% 2 0   100%
tests/test_ddl.py (no class)   100% 9 0 2   100% 0 0   100%
tests/test_dimension_record_containers.py DimensionRecordContainersTestCase   100% 267 0 0   100% 22 0   100%
tests/test_dimension_record_containers.py (no class)   100% 34 0 2   100% 0 0   100%
tests/test_dimensions.py ConcreteTestDimensionPacker   100% 6 0 0   100% 0 0   100%
tests/test_dimensions.py DimensionTestCase   100% 168 0 0   100% 34 0   100%
tests/test_dimensions.py SplitByStateFlags   100% 9 0 0   62% 8 3   82%
tests/test_dimensions.py DataCoordinateTestCase   99% 237 2 0   93% 98 7   97%
tests/test_dimensions.py (no class)   100% 73 0 2   100% 0 0   100%
tests/test_dimensions_versions.py DimensionsVersionsTestCase   100% 78 0 0   100% 2 0   100%
tests/test_dimensions_versions.py (no class)   100% 62 0 2   100% 28 0   100%
tests/test_exprParserLex.py ParserLexTestCase   99% 178 2 0   80% 10 2   98%
tests/test_exprParserLex.py (no class)   100% 18 0 2   100% 0 0   100%
tests/test_exprParserYacc.py _Visitor   92% 24 2 0   100% 4 0   93%
tests/test_exprParserYacc.py ParserYaccTestCase   100% 515 0 0   100% 10 0   100%
tests/test_exprParserYacc.py (no class)   100% 51 0 2   100% 0 0   100%
tests/test_formatter.py FormatterFactoryTestCase   100% 105 0 0   100% 8 0   100%
tests/test_formatter.py ZipFormatterTestCase   100% 28 0 0   100% 0 0   100%
tests/test_formatter.py (no class)   100% 23 0 2   100% 0 0   100%
tests/test_gafaelfawr.py GafaelfawrAuthorizationTestCase   0% 32 32 0   100% 0 0   0%
tests/test_gafaelfawr.py (no class)   64% 11 4 0   50% 2 1   62%
tests/test_location.py LocationTestCase   100% 74 0 0   100% 2 0   100%
tests/test_location.py (no class)   100% 14 0 2   100% 0 0   100%
tests/test_logFormatter.py ButlerLogRecordsFormatterTestCase   100% 108 0 0   100% 0 0   100%
tests/test_logFormatter.py (no class)   100% 25 0 2   100% 0 0   100%
tests/test_logging.py LoggingTestCase   100% 163 0 0   96% 24 1   99%
tests/test_logging.py TestJsonLogging   100% 39 0 0   100% 2 0   100%
tests/test_logging.py (no class)   100% 19 0 2   100% 0 0   100%
tests/test_matplotlibFormatter.py MatplotlibFormatterTestCase   100% 24 0 0   100% 2 0   100%
tests/test_matplotlibFormatter.py (no class)   91% 22 2 2   100% 0 0   91%
tests/test_nonempty_mapping.py NonemptyMappingTestCase   100% 11 0 0   100% 0 0   100%
tests/test_nonempty_mapping.py (no class)   100% 4 0 2   100% 0 0   100%
tests/test_obscore.py ObsCoreTests   100% 193 0 1   100% 36 0   100%
tests/test_obscore.py SQLiteObsCoreTest   100% 7 0 0   100% 0 0   100%
tests/test_obscore.py ClonedSqliteObscoreTest   100% 4 0 0   100% 0 0   100%
tests/test_obscore.py PostgresObsCoreTest   12% 8 7 0   100% 0 0   12%
tests/test_obscore.py PostgresPgSphereObsCoreTest   3% 32 31 0   100% 0 0   3%
tests/test_obscore.py TestMissingObscoreConfig   100% 14 0 0   100% 0 0   100%
tests/test_obscore.py (no class)   100% 56 0 2   100% 0 0   100%
tests/test_packages.py PackagesFormatterTestCase   100% 11 0 0   100% 0 0   100%
tests/test_packages.py (no class)   100% 10 0 2   100% 0 0   100%
tests/test_parquet.py ParquetFormatterDataFrameTestCase   100% 255 0 0   100% 28 0   100%
tests/test_parquet.py InMemoryDataFrameDelegateTestCase   100% 21 0 0   100% 0 0   100%
tests/test_parquet.py ParquetFormatterArrowAstropyTestCase   100% 181 0 0   100% 12 0   100%
tests/test_parquet.py InMemoryArrowAstropyDelegateTestCase   100% 11 0 0   100% 0 0   100%
tests/test_parquet.py ParquetFormatterArrowNumpyTestCase   100% 113 0 0   100% 2 0   100%
tests/test_parquet.py InMemoryArrowNumpyDelegateTestCase   100% 18 0 0   100% 0 0   100%
tests/test_parquet.py ParquetFormatterArrowTableTestCase   100% 145 0 0   100% 12 0   100%
tests/test_parquet.py InMemoryArrowTableDelegateTestCase   100% 17 0 0   100% 0 0   100%
tests/test_parquet.py ParquetFormatterArrowNumpyDictTestCase   100% 82 0 0   100% 4 0   100%
tests/test_parquet.py InMemoryNumpyDictDelegateTestCase   100% 1 0 0   100% 0 0   100%
tests/test_parquet.py ParquetFormatterArrowSchemaTestCase   100% 37 0 0   100% 8 0   100%
tests/test_parquet.py InMemoryArrowSchemaDelegateTestCase   100% 0 0 0   100% 0 0   100%
tests/test_parquet.py ParquetFormatterArrowTableS3TestCase   94% 63 4 0   60% 10 2   89%
tests/test_parquet.py ComputeRowGroupSizeTestCase   100% 21 0 0   100% 0 0   100%
tests/test_parquet.py (no class)   94% 382 23 2   100% 36 0   94%
tests/test_postgresql.py PostgresqlDatabaseTestCase   5% 40 38 0   0% 2 0   5%
tests/test_postgresql.py PostgresqlRegistryTests   15% 13 11 0   0% 4 0   12%
tests/test_postgresql.py PostgresqlRegistryNameKeyCollMgrUUIDTestCase   100% 0 0 0   100% 0 0   100%
tests/test_postgresql.py PostgresqlRegistrySynthIntKeyCollMgrUUIDTestCase   100% 0 0 0   100% 0 0   100%
tests/test_postgresql.py (no class)   95% 43 2 2   100% 0 0   95%
tests/test_progress.py MockProgressBar   100% 11 0 0   100% 2 0   100%
tests/test_progress.py MockProgressHandler   100% 1 0 0   100% 0 0   100%
tests/test_progress.py ClickProgressHandlerTestCase   100% 25 0 0   100% 0 0   100%
tests/test_progress.py MockedProgressHandlerTestCase   100% 72 0 0   100% 18 0   100%
tests/test_progress.py (no class)   100% 37 0 2   100% 0 0   100%
tests/test_pydantic_utils.py Inner   100% 3 0 0   100% 2 0   100%
tests/test_pydantic_utils.py SerializedInner   100% 0 0 0   100% 0 0   100%
tests/test_pydantic_utils.py OuterWithWrapper   100% 0 0 0   100% 0 0   100%
tests/test_pydantic_utils.py OuterWithoutWrapper   100% 0 0 0   100% 0 0   100%
tests/test_pydantic_utils.py DeferredValidationTestCase   100% 24 0 0   100% 0 0   100%
tests/test_pydantic_utils.py SerializableExtensionsTestCase   100% 44 0 0   100% 0 0   100%
tests/test_pydantic_utils.py (no class)   100% 24 0 2   100% 0 0   100%
tests/test_quantum.py MockTask   100% 0 0 0   100% 0 0   100%
tests/test_quantum.py QuantumTestCase   100% 66 0 0   100% 2 0   100%
tests/test_quantum.py (no class)   100% 12 0 2   100% 0 0   100%
tests/test_quantumBackedButler.py QuantumBackedButlerTestCase   99% 262 1 0   96% 70 3   99%
tests/test_quantumBackedButler.py (no class)   100% 32 0 2   100% 0 0   100%
tests/test_query_direct_postgresql.py DirectButlerPostgreSQLTests   11% 9 8 0   0% 2 0   9%
tests/test_query_direct_postgresql.py (no class)   100% 15 0 2   100% 0 0   100%
tests/test_query_direct_sqlite.py DirectButlerSQLiteTests   100% 5 0 0   100% 2 0   100%
tests/test_query_direct_sqlite.py (no class)   100% 10 0 2   100% 0 0   100%
tests/test_query_interface.py _TestVisitor   98% 53 1 0   85% 34 5   93%
tests/test_query_interface.py _TestReversed   100% 0 0 0   100% 0 0   100%
tests/test_query_interface.py _TestQueryExecution   100% 3 0 0   100% 0 0   100%
tests/test_query_interface.py _TestQueryCount   100% 5 0 0   100% 0 0   100%
tests/test_query_interface.py _TestQueryAny   100% 4 0 0   100% 0 0   100%
tests/test_query_interface.py _TestQueryExplainNoResults   100% 3 0 0   100% 0 0   100%
tests/test_query_interface.py _TestQueryDriver   90% 39 4 1   83% 12 2   88%
tests/test_query_interface.py ColumnExpressionsTestCase   100% 401 0 0   100% 16 0   100%
tests/test_query_interface.py QueryTestCase   100% 335 0 0   100% 16 0   100%
tests/test_query_interface.py (no class)   100% 111 0 2   100% 0 0   100%
tests/test_query_remote.py RemoteButlerQueryTests   0% 5 5 0   0% 2 0   0%
tests/test_query_remote.py (no class)   92% 13 1 2   50% 2 1   87%
tests/test_query_utilities.py ColumnSetTestCase   100% 80 0 0   100% 0 0   100%
tests/test_query_utilities.py _RecordingOverlapsVisitor   100% 16 0 0   100% 0 0   100%
tests/test_query_utilities.py OverlapsVisitorTestCase   100% 124 0 0   100% 2 0   100%
tests/test_query_utilities.py NaiveDisjointSetTestCase   100% 8 0 0   100% 0 0   100%
tests/test_query_utilities.py (no class)   100% 34 0 2   100% 0 0   100%
tests/test_registry_dataset_type_overrides.py RegistryDatasetTypeOverridesTestCase   100% 86 0 0   100% 0 0   100%
tests/test_registry_dataset_type_overrides.py (no class)   100% 15 0 2   100% 0 0   100%
tests/test_remote_butler.py RemoteButlerConfigTests   0% 2 2 0   100% 0 0   0%
tests/test_remote_butler.py RemoteButlerErrorHandlingTests   0% 16 16 0   100% 0 0   0%
tests/test_remote_butler.py RemoteButlerMiscTests   100% 4 0 0   100% 0 0   100%
tests/test_remote_butler.py RemoteButlerRegistryTests   0% 10 10 0   100% 0 0   0%
tests/test_remote_butler.py RemoteButlerSqliteRegistryTests   100% 0 0 0   100% 0 0   100%
tests/test_remote_butler.py RemoteButlerPostgresRegistryTests   0% 5 5 0   0% 2 0   0%
tests/test_remote_butler.py (no class)   94% 51 3 2   50% 2 1   92%
tests/test_server.py ButlerClientServerTestCase   0% 235 235 0   0% 4 0   0%
tests/test_server.py ButlerClientServerAuthorizationTestCase   0% 36 36 0   100% 0 0   0%
tests/test_server.py QueryLimitsTestCase   0% 8 8 0   100% 0 0   0%
tests/test_server.py (no class)   60% 83 33 2   25% 4 1   59%
tests/test_simpleButler.py SimpleButlerTests   99% 320 3 1   96% 28 1   99%
tests/test_simpleButler.py DirectSimpleButlerTestCase   100% 51 0 0   100% 4 0   100%
tests/test_simpleButler.py NameKeyCollectionManagerDirectSimpleButlerTestCase   100% 0 0 0   100% 0 0   100%
tests/test_simpleButler.py RemoteSimpleButlerTestCase   0% 5 5 0   100% 0 0   0%
tests/test_simpleButler.py (no class)   93% 59 4 2   50% 2 1   92%
tests/test_sqlite.py SqliteFileDatabaseTestCase   100% 42 0 0   100% 0 0   100%
tests/test_sqlite.py SqliteMemoryDatabaseTestCase   100% 25 0 0   100% 0 0   100%
tests/test_sqlite.py SqliteFileRegistryTests   90% 10 1 0   100% 2 0   92%
tests/test_sqlite.py SqliteFileRegistryNameKeyCollMgrUUIDTestCase   100% 0 0 0   100% 0 0   100%
tests/test_sqlite.py ClonedSqliteFileRegistryNameKeyCollMgrUUIDTestCase   100% 2 0 0   100% 0 0   100%
tests/test_sqlite.py SqliteFileRegistrySynthIntKeyCollMgrUUIDTestCase   100% 0 0 0   100% 0 0   100%
tests/test_sqlite.py SqliteMemoryRegistryTests   90% 10 1 0   100% 2 0   92%
tests/test_sqlite.py SqliteMemoryRegistryNameKeyCollMgrUUIDTestCase   100% 0 0 0   100% 0 0   100%
tests/test_sqlite.py SqliteMemoryRegistrySynthIntKeyCollMgrUUIDTestCase   100% 0 0 0   100% 0 0   100%
tests/test_sqlite.py SqliteMemoryRegistryAstropyIngestDateTestCase   100% 0 0 0   100% 0 0   100%
tests/test_sqlite.py (no class)   100% 74 0 2   100% 0 0   100%
tests/test_storageClass.py PythonType   100% 0 0 0   100% 0 0   100%
tests/test_storageClass.py PythonType2   100% 0 0 0   100% 0 0   100%
tests/test_storageClass.py PythonType3   100% 0 0 0   100% 0 0   100%
tests/test_storageClass.py NotCopyable   100% 1 0 0   100% 0 0   100%
tests/test_storageClass.py StorageClassFactoryTestCase   100% 183 0 0   100% 4 0   100%
tests/test_storageClass.py (no class)   100% 29 0 2   100% 0 0   100%
tests/test_templates.py TestFileTemplates   100% 168 0 0   100% 6 0   100%
tests/test_templates.py (no class)   100% 21 0 2   100% 0 0   100%
tests/test_testRepo.py ButlerTestRepoTestCase   100% 7 0 0   100% 0 0   100%
tests/test_testRepo.py ButlerUtilsTestSuite   100% 85 0 0   100% 0 0   100%
tests/test_testRepo.py (no class)   100% 27 0 2   100% 0 0   100%
tests/test_thread_utils.py ThreadSafeCacheTestCase   100% 7 0 0   100% 0 0   100%
tests/test_thread_utils.py NamedLocksTestCase   100% 13 0 0   100% 0 0   100%
tests/test_thread_utils.py LockedObjectTestCase   100% 7 0 0   100% 0 0   100%
tests/test_thread_utils.py (no class)   100% 10 0 2   100% 0 0   100%
tests/test_time_utils.py TimeTestCase   100% 60 0 0   88% 8 1   99%
tests/test_time_utils.py (no class)   86% 14 2 2   100% 0 0   86%
tests/test_timespan.py TimespanTestCase   99% 141 1 0   84% 38 6   96%
tests/test_timespan.py (no class)   92% 24 2 2   100% 0 0   92%
tests/test_utils.py NamedKeyDictTest   100% 50 0 0   100% 0 0   100%
tests/test_utils.py NamedValueSetTest   100% 47 0 0   100% 4 0   100%
tests/test_utils.py GlobToRegexTestCase   100% 17 0 0   100% 8 0   100%
tests/test_utils.py (no class)   100% 31 0 2   100% 0 0   100%
tests/test_uuid.py UUIDv7TestCase   100% 11 0 0   100% 0 0   100%
tests/test_uuid.py (no class)   100% 6 0 0   100% 0 0   100%
tests/test_versioning.py Manager0   100% 1 0 0   100% 0 0   100%
tests/test_versioning.py Manager1   100% 1 0 0   100% 0 0   100%
tests/test_versioning.py Manager1_1   100% 1 0 0   100% 0 0   100%
tests/test_versioning.py Manager2   100% 2 0 0   100% 0 0   100%
tests/test_versioning.py SchemaVersioningTestCase   100% 69 0 0   100% 16 0   100%
tests/test_versioning.py (no class)   100% 36 0 2   100% 0 0   100%
Total     87% 50374 6408 1069   77% 11756 1371   85%

No items found using the specified filter.