Coverage report: 89%

Files Functions Classes

coverage.py v7.15.0, created at 2026-07-09 09:08 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
python/lsst/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/__init__.py (no function)   100% 17 0 0   100% 0 0   100%
python/lsst/pipe/base/_datasetQueryConstraints.py DatasetQueryConstraintVariant.__subclasshook__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/_datasetQueryConstraints.py DatasetQueryConstraintVariant.fromExpression   55% 11 5 0   50% 8 4   53%
python/lsst/pipe/base/_datasetQueryConstraints.py _ALLMETA.__iter__   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/_datasetQueryConstraints.py _ALL.__new__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_datasetQueryConstraints.py _OFFMETA.__iter__   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/_datasetQueryConstraints.py _OFF.__new__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_datasetQueryConstraints.py _LISTMETA.__iter__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_datasetQueryConstraints.py _LISTMETA.__len__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_datasetQueryConstraints.py _LISTMETA.__eq__   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/_datasetQueryConstraints.py _LIST.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_datasetQueryConstraints.py _LIST.__len__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_datasetQueryConstraints.py _LIST.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_datasetQueryConstraints.py _LIST.__repr__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_datasetQueryConstraints.py _LIST.__str__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_datasetQueryConstraints.py _LIST.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/_datasetQueryConstraints.py suppressInit   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/_datasetQueryConstraints.py (no function)   98% 44 1 0   50% 2 1   96%
python/lsst/pipe/base/_dataset_handle.py _default_dataId   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_dataset_handle.py InMemoryDatasetHandle.__init__   100% 15 0 0   100% 8 0   100%
python/lsst/pipe/base/_dataset_handle.py InMemoryDatasetHandle.get   96% 45 2 0   100% 28 0   97%
python/lsst/pipe/base/_dataset_handle.py InMemoryDatasetHandle._getStorageClass   100% 7 0 0   100% 4 0   100%
python/lsst/pipe/base/_dataset_handle.py (no function)   100% 23 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.__init__   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/_instrument.py Instrument.getName   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.register   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.fromName   70% 10 3 0   75% 4 1   71%
python/lsst/pipe/base/_instrument.py Instrument.from_string   85% 13 2 0   100% 4 0   88%
python/lsst/pipe/base/_instrument.py Instrument.from_data_id   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument._from_cls_name   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/_instrument.py Instrument.importAll   100% 10 0 0   100% 2 0   100%
python/lsst/pipe/base/_instrument.py Instrument.getRawFormatter   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.applyConfigOverrides   20% 5 4 0   25% 4 1   22%
python/lsst/pipe/base/_instrument.py Instrument.formatCollectionTimestamp   100% 9 0 0   100% 8 0   100%
python/lsst/pipe/base/_instrument.py Instrument.makeCollectionTimestamp   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.makeDefaultRawIngestRunName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.makeUnboundedCalibrationRunName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.makeCuratedCalibrationRunName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.makeCalibrationCollectionName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.makeRefCatCollectionName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.makeUmbrellaCollectionName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.makeCollectionName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.make_dimension_packer_config_field   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument.make_default_dimension_packer   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument._make_default_dimension_packer_dispatch   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py Instrument._make_default_dimension_packer   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_instrument.py (no function)   100% 61 0 2   100% 0 0   100%
python/lsst/pipe/base/_observation_dimension_packer.py ObservationDimensionPacker.__init__   91% 23 2 0   88% 16 2   90%
python/lsst/pipe/base/_observation_dimension_packer.py ObservationDimensionPacker.maxBits   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_observation_dimension_packer.py ObservationDimensionPacker._pack   100% 7 0 0   100% 4 0   100%
python/lsst/pipe/base/_observation_dimension_packer.py ObservationDimensionPacker.unpack   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/_observation_dimension_packer.py (no function)   100% 18 0 0   100% 0 0   100%
python/lsst/pipe/base/_quantumContext.py ExecutionResources.__init__   100% 19 0 0   100% 10 0   100%
python/lsst/pipe/base/_quantumContext.py ExecutionResources.__deepcopy__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_quantumContext.py ExecutionResources._reduce_kwargs   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/_quantumContext.py ExecutionResources._unpickle_via_factory   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_quantumContext.py ExecutionResources.__reduce__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_quantumContext.py QuantumContext.__init__   100% 17 0 0   100% 12 0   100%
python/lsst/pipe/base/_quantumContext.py QuantumContext._get   67% 9 3 0   75% 4 1   69%
python/lsst/pipe/base/_quantumContext.py QuantumContext._put   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/_quantumContext.py QuantumContext.get   100% 32 0 0   100% 18 0   100%
python/lsst/pipe/base/_quantumContext.py QuantumContext.put   55% 22 10 0   54% 24 5   54%
python/lsst/pipe/base/_quantumContext.py QuantumContext._checkMembership   100% 5 0 0   83% 6 1   91%
python/lsst/pipe/base/_quantumContext.py QuantumContext.dimensions   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_quantumContext.py QuantumContext.add_additional_provenance   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_quantumContext.py (no function)   100% 38 0 0   100% 0 0   100%
python/lsst/pipe/base/_status.py QuantumSuccessCaveats.from_adjust_quantum_no_work   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_status.py QuantumSuccessCaveats.concise   100% 17 0 0   93% 14 1   97%
python/lsst/pipe/base/_status.py QuantumSuccessCaveats.legend   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo._from_metadata   88% 8 1 0   67% 6 2   79%
python/lsst/pipe/base/_status.py ExceptionInfo.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py ExceptionInfo.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_status.py QuantumAttemptStatus.has_metadata   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_status.py QuantumAttemptStatus.has_log   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_status.py QuantumAttemptStatus.title   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_status.py QuantumAttemptStatus.is_rare   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_status.py GetSetDictMetadataHolder.metadata   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/_status.py AlgorithmError.__new__   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/_status.py AlgorithmError.metadata   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/_status.py AnnotatedPartialOutputsError.annotate   89% 9 1 0   83% 6 1   87%
python/lsst/pipe/base/_status.py (no function)   100% 86 0 17   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py PropertySetLike.paramNames   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/_task_metadata.py PropertySetLike.getArray   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/_task_metadata.py _isListLike   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py SetDictMetadata.set_dict   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/_task_metadata.py GetDictMetadata.get_dict   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/_task_metadata.py _convert_null_to_nan   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.from_dict   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.from_metadata   100% 7 0 0   100% 4 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.to_dict   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.add   100% 20 0 0   100% 14 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.getScalar   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.getArray   100% 14 0 0   100% 8 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.names   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.paramNames   100% 7 0 0   100% 6 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata._getKeys   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.keys   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.items   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.__getitem__   100% 17 0 0   100% 10 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.get   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.__setitem__   100% 17 0 1   100% 6 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.__contains__   100% 7 0 0   100% 4 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.__delitem__   100% 13 0 0   100% 6 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.get_dict   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.set_dict   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata._validate_value   100% 30 0 0   100% 24 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py TaskMetadata.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/_task_metadata.py (no function)   100% 46 0 15   100% 0 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py AllDimensionsQuantumGraphBuilder.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py AllDimensionsQuantumGraphBuilder.process_subgraph   100% 13 0 0   100% 2 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py AllDimensionsQuantumGraphBuilder._query_for_data_ids   96% 46 2 0   100% 14 0   97%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py AllDimensionsQuantumGraphBuilder._make_subgraph_skeleton   100% 10 0 0   100% 4 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py AllDimensionsQuantumGraphBuilder._find_followup_datasets   62% 82 31 0   71% 52 7   66%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py AllDimensionsQuantumGraphBuilder._fetch_most_dimension_records   100% 13 0 0   100% 8 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupBranch.pprint   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupBranch.project_data_ids   100% 6 0 0   100% 6 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupBranch.update_skeleton_nodes   100% 5 0 0   100% 6 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupBranch.update_skeleton_edges   100% 15 0 0   100% 14 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree.__post_init__   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree.build   97% 29 1 0   91% 22 2   94%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._set_dataset_constraint   75% 16 4 0   70% 10 3   73%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._make_dimension_record_branches   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._make_edge_branches   100% 12 0 0   100% 8 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._make_edge_branches.update_edge_branch   100% 7 0 0   100% 2 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._make_queryable_branch_tree   100% 4 0 1   100% 4 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._maybe_insert_projection_branch   100% 11 0 0   100% 10 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._make_queryable_overlap_branch_generators   80% 10 2 1   75% 8 2   78%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._append_data_id_generator   95% 19 1 0   80% 10 2   90%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._make_general_overlap_branch_generator   100% 12 0 0   100% 10 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree._make_join_branch_generator   100% 13 0 0   100% 8 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree.project_data_ids   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree.generate_data_ids   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py _DimensionGroupTree.pprint   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py get_single_skypix   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py DataIdGenerator.pprint   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py DataIdGenerator.run   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py DatabaseSourceDataIdGenerator.run   100% 10 0 0   100% 6 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py CrossSystemDataIdGenerator.run   0% 10 10 0   0% 6 0   0%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py SkyPixScatterDataIdGenerator.run   100% 10 0 0   100% 6 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py SkyPixGatherDataIdGenerator.run   100% 7 0 0   100% 2 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py JoinDataIdGenerator.run   100% 14 0 0   100% 10 0   100%
python/lsst/pipe/base/all_dimensions_quantum_graph_builder.py (no function)   100% 129 0 2   100% 0 0   100%
python/lsst/pipe/base/automatic_connection_constants.py (no function)   100% 32 0 0   100% 0 0   100%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.close   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler._metrics   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler._metrics   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.get   100% 14 0 0   75% 4 1   94%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.getDeferred   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.stored_many   100% 15 0 0   100% 6 0   100%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.isWriteable   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.put   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.pruneDatasets   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler.dimensions   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler._datastore   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py BlockingLimitedButler._datastore   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/blocking_limited_butler.py (no function)   100% 27 0 0   100% 0 0   100%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.close   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler._metrics   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler._metrics   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.get   38% 16 10 0   30% 10 3   35%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.getDeferred   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.stored_many   0% 11 11 0   0% 6 0   0%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.isWriteable   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.put   0% 4 4 0   0% 2 0   0%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.pruneDatasets   0% 7 7 0   0% 6 0   0%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler.dimensions   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler._datastore   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/caching_limited_butler.py CachingLimitedButler._datastore   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/caching_limited_butler.py (no function)   100% 27 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/__init__.py (no function)   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/_get_cli_subcommands.py get_cli_subcommands   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/_get_cli_subcommands.py (no function)   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/cmd/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/cmd/commands.py register_instrument   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/cmd/commands.py transfer_from_graph   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/cli/cmd/commands.py zip_from_graph   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/cli/cmd/commands.py retrieve_artifacts_for_quanta   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/cli/cmd/commands.py aggregate_graph   60% 5 2 0   100% 0 0   60%
python/lsst/pipe/base/cli/cmd/commands.py ingest_graph   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/cli/cmd/commands.py provenance_report   100% 13 0 0   100% 4 0   100%
python/lsst/pipe/base/cli/cmd/commands.py (no function)   100% 83 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/opt/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/opt/arguments.py (no function)   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/cli/opt/options.py (no function)   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/config.py TemplateField._validateValue   50% 6 3 0   50% 6 3   50%
python/lsst/pipe/base/config.py TemplateField.__set__   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/config.py PipelineTaskConfigMeta.__new__   76% 25 6 0   56% 18 4   67%
python/lsst/pipe/base/config.py PipelineTaskConfigMeta.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/config.py PipelineTaskConfig.applyConfigOverrides   88% 16 2 1   75% 16 2   81%
python/lsst/pipe/base/config.py (no function)   100% 25 0 2   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py _FrozenSimpleNamespace.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py _FrozenSimpleNamespace.__setattr__   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.visit_Name   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.visit_List   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.visit_Tuple   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.visit_Constant   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.visit_Dict   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.visit_Set   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.visit_UnaryOp   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/configOverrides.py ConfigExpressionParser.generic_visit   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigOverrides.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigOverrides.addParameters   100% 4 0 0   75% 4 1   88%
python/lsst/pipe/base/configOverrides.py ConfigOverrides.addFileOverride   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigOverrides.addValueOverride   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigOverrides.addPythonOverride   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigOverrides.addInstrumentOverride   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigOverrides._parser   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/configOverrides.py ConfigOverrides.applyTo   100% 44 0 0   96% 28 1   99%
python/lsst/pipe/base/configOverrides.py (no function)   100% 34 0 2   100% 0 0   100%
python/lsst/pipe/base/connectionTypes.py BaseConnection.__post_init__   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/connectionTypes.py BaseConnection.__get__   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/connectionTypes.py DimensionedConnection.__post_init__   60% 5 2 0   50% 4 2   56%
python/lsst/pipe/base/connectionTypes.py BaseInput.__post_init__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/connectionTypes.py (no function)   100% 57 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnectionDict.__init__   100% 7 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnectionDict.__setitem__   78% 9 2 0   67% 6 2   73%
python/lsst/pipe/base/connections.py PipelineTaskConnectionsMetaclass.__prepare__   83% 6 1 0   67% 6 2   75%
python/lsst/pipe/base/connections.py PipelineTaskConnectionsMetaclass.__new__   85% 54 8 0   86% 44 6   86%
python/lsst/pipe/base/connections.py PipelineTaskConnectionsMetaclass.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnectionsMetaclass.__call__   97% 31 1 0   90% 10 1   95%
python/lsst/pipe/base/connections.py QuantizedConnection.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py QuantizedConnection.__setattr__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py QuantizedConnection.__delattr__   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/connections.py QuantizedConnection.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py QuantizedConnection.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py QuantizedConnection.keys   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/connections.py DeferredDatasetRef.__getattr__   0% 3 3 0   0% 2 0   0%
python/lsst/pipe/base/connections.py DeferredDatasetRef.__deepcopy__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py DeferredDatasetRef.__reduce__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnections.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnections.__setattr__   100% 12 0 0   100% 6 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnections.__delattr__   100% 10 0 0   100% 4 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnections.buildDatasetRefs   90% 21 2 0   86% 14 2   89%
python/lsst/pipe/base/connections.py PipelineTaskConnections.adjustQuantum   77% 13 3 0   75% 12 3   76%
python/lsst/pipe/base/connections.py PipelineTaskConnections.getSpatialBoundsConnections   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnections.getTemporalBoundsConnections   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py PipelineTaskConnections.adjust_all_quanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py iterConnections   75% 4 1 0   75% 4 1   75%
python/lsst/pipe/base/connections.py AdjustQuantumHelper.adjust_in_place   48% 31 16 0   38% 16 2   45%
python/lsst/pipe/base/connections.py QuantaAdjuster.__init__   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py QuantaAdjuster.task_label   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/connections.py QuantaAdjuster.task_node   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/connections.py QuantaAdjuster.butler   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/connections.py QuantaAdjuster.iter_data_ids   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/connections.py QuantaAdjuster.remove_quantum   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py QuantaAdjuster.get_inputs   100% 9 0 0   100% 4 0   100%
python/lsst/pipe/base/connections.py QuantaAdjuster.get_prerequisite_inputs   100% 8 0 0   100% 4 0   100%
python/lsst/pipe/base/connections.py QuantaAdjuster.get_outputs   100% 7 0 0   100% 2 0   100%
python/lsst/pipe/base/connections.py QuantaAdjuster.add_input   86% 7 1 0   50% 2 1   78%
python/lsst/pipe/base/connections.py QuantaAdjuster.add_prerequisite_input   86% 7 1 0   50% 2 1   78%
python/lsst/pipe/base/connections.py QuantaAdjuster.move_output   88% 8 1 0   50% 2 1   80%
python/lsst/pipe/base/connections.py QuantaAdjuster.expand_quantum_data_id   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py QuantaAdjuster.n_removed   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/connections.py (no function)   100% 111 0 4   100% 0 0   100%
python/lsst/pipe/base/dot_tools.py graph2dot   64% 11 4 0   50% 6 3   59%
python/lsst/pipe/base/dot_tools.py pipeline2dot   71% 14 4 0   62% 8 3   68%
python/lsst/pipe/base/dot_tools.py (no function)   100% 7 0 4   100% 0 0   100%
python/lsst/pipe/base/exec_fixup_data_id.py ExecFixupDataId.__init__   83% 6 1 0   50% 2 1   75%
python/lsst/pipe/base/exec_fixup_data_id.py ExecFixupDataId.fixupQuanta   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/exec_fixup_data_id.py ExecFixupDataId.fixup_graph   100% 7 0 0   100% 4 0   100%
python/lsst/pipe/base/exec_fixup_data_id.py (no function)   100% 13 0 0   100% 0 0   100%
python/lsst/pipe/base/execution_graph_fixup.py ExecutionGraphFixup.fixupQuanta   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/execution_graph_fixup.py ExecutionGraphFixup.fixup_graph   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/execution_graph_fixup.py (no function)   100% 10 0 0   100% 0 0   100%
python/lsst/pipe/base/execution_reports.py DatasetTypeExecutionReport.to_summary_dict   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/execution_reports.py TaskExecutionReport.inspect_quantum   85% 27 4 0   75% 16 4   81%
python/lsst/pipe/base/execution_reports.py TaskExecutionReport.to_summary_dict   68% 25 8 0   80% 10 2   71%
python/lsst/pipe/base/execution_reports.py TaskExecutionReport.__str__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/execution_reports.py QuantumGraphExecutionReport.to_summary_dict   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/execution_reports.py QuantumGraphExecutionReport.write_summary_yaml   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/execution_reports.py QuantumGraphExecutionReport.make_reports   93% 28 2 0   90% 20 2   92%
python/lsst/pipe/base/execution_reports.py QuantumGraphExecutionReport.__str__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/execution_reports.py lookup_quantum_data_id   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/execution_reports.py (no function)   100% 51 0 0   100% 0 0   100%
python/lsst/pipe/base/formatters/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
python/lsst/pipe/base/formatters/pexConfig.py PexConfigFormatter.read_from_stream   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/formatters/pexConfig.py PexConfigFormatter.write_local_file   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/formatters/pexConfig.py (no function)   100% 11 0 0   100% 0 0   100%
python/lsst/pipe/base/gc_metrics.py _gc_stats   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/gc_metrics.py GcMetrics.__enter__   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/gc_metrics.py GcMetrics.__exit__   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/gc_metrics.py GcMetrics.from_task_metadata   56% 9 4 0   100% 0 0   56%
python/lsst/pipe/base/gc_metrics.py (no function)   100% 30 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.__init__   100% 5 0 0   50% 2 1   86%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.addProducer   80% 5 1 0   50% 4 2   67%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.addConsumer   100% 3 0 0   50% 2 1   80%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.getConsumers   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.getProducer   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.getAll   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.inverse   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.makeNetworkXGraph   100% 12 0 0   100% 10 0   100%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.keys   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_implDetails.py _DatasetTracker.__contains__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_implDetails.py (no function)   100% 19 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_loadHelpers.py LoadHelper.__post_init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_loadHelpers.py LoadHelper._initialize   100% 13 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_loadHelpers.py LoadHelper._validateSave   67% 9 3 0   50% 6 3   60%
python/lsst/pipe/base/graph/_loadHelpers.py LoadHelper.load   94% 17 1 0   90% 10 1   93%
python/lsst/pipe/base/graph/_loadHelpers.py LoadHelper._readBytes   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/graph/_loadHelpers.py LoadHelper.__enter__   100% 8 0 0   100% 4 0   100%
python/lsst/pipe/base/graph/_loadHelpers.py LoadHelper.__exit__   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_loadHelpers.py LoadHelper.readHeader   0% 3 3 0   100% 0 0   0%
python/lsst/pipe/base/graph/_loadHelpers.py (no function)   100% 28 0 3   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py StructSizeDescriptor.__get__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerBase.FMT_STRING   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerBase.__init_subclass__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerBase.unpackHeader   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerBase.headerSize   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerBase.readHeaderInfo   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerBase.constructGraph   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerBase.description   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV1.FMT_STRING   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV1.__post_init__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV1.headerSize   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV1.readHeaderInfo   0% 7 7 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV1.unpackHeader   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV1.constructGraph   0% 24 24 0   0% 4 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV1.description   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV2.FMT_STRING   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV2.__post_init__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV2.headerSize   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV2.readHeaderInfo   0% 11 11 0   0% 2 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV2.unpackHeader   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV2.constructGraph   0% 24 24 0   0% 4 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV2.description   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV3.FMT_STRING   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV3.__post_init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV3.headerSize   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV3.readHeaderInfo   96% 23 1 0   75% 8 2   90%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV3.unpackHeader   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/_versionDeserializers.py DeserializerV3.constructGraph   99% 70 1 0   92% 26 2   97%
python/lsst/pipe/base/graph/_versionDeserializers.py (no function)   100% 75 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph._buildGraphs   93% 67 5 0   84% 38 6   90%
python/lsst/pipe/base/graph/graph.py QuantumGraph.pipeline_graph   100% 8 0 0   100% 4 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.get_task_quanta   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/graph/graph.py QuantumGraph.taskGraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.graph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.inputQuanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.outputQuanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.allDatasetTypes   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.isConnected   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.getQuantumNodeByNodeId   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.getQuantaForTask   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.getNumberOfQuantaForTask   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.getNodesForTask   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.findTasksWithInput   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.findTaskWithOutput   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.tasksWithDSType   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.findTaskDefByName   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.findTaskDefByLabel   75% 4 1 0   75% 4 1   75%
python/lsst/pipe/base/graph/graph.py QuantumGraph.findQuantaWithDSType   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.checkQuantumInGraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.writeDotGraph   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/graph.py QuantumGraph.subset   100% 17 0 0   100% 8 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.subsetToConnected   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.determineInputsToQuantumNode   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.determineOutputsOfQuantumNode   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.determineConnectionsOfQuantumNode   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.determineAncestorsOfQuantumNode   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.findCycle   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.saveUri   73% 11 3 0   75% 4 1   73%
python/lsst/pipe/base/graph/graph.py QuantumGraph.metadata   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.get_init_input_refs   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.get_init_output_refs   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.initInputRefs   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.initOutputRefs   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.globalInitOutputRefs   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.registryDatasetTypes   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.loadUri   81% 16 3 0   67% 6 2   77%
python/lsst/pipe/base/graph/graph.py QuantumGraph.readHeader   0% 4 4 0   0% 2 0   0%
python/lsst/pipe/base/graph/graph.py QuantumGraph.buildAndPrintHeader   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/graph/graph.py QuantumGraph.save   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph._buildSaveObject   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph._buildSaveObjectImpl   100% 66 0 0   92% 26 2   98%
python/lsst/pipe/base/graph/graph.py QuantumGraph.load   80% 5 1 0   50% 2 1   71%
python/lsst/pipe/base/graph/graph.py QuantumGraph.iterTaskGraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.updateRun   100% 21 0 0   100% 8 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.updateRun._update_output_refs   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.updateRun._update_intermediate_refs   100% 4 0 0   100% 4 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.graphID   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.universe   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/graph.py QuantumGraph.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.__contains__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.__getstate__   86% 7 1 0   75% 4 1   82%
python/lsst/pipe/base/graph/graph.py QuantumGraph.__setstate__   100% 13 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graph.py QuantumGraph.__eq__   64% 14 5 0   64% 14 5   64%
python/lsst/pipe/base/graph/graph.py QuantumGraph.getSummary   92% 12 1 0   88% 8 1   90%
python/lsst/pipe/base/graph/graph.py QuantumGraph.make_init_qbb   0% 17 17 0   0% 8 0   0%
python/lsst/pipe/base/graph/graph.py QuantumGraph.write_init_outputs   56% 16 7 0   33% 12 2   46%
python/lsst/pipe/base/graph/graph.py QuantumGraph.write_configs   75% 16 4 0   50% 10 1   65%
python/lsst/pipe/base/graph/graph.py QuantumGraph.write_packages   62% 13 5 0   17% 6 1   47%
python/lsst/pipe/base/graph/graph.py QuantumGraph.init_output_run   0% 3 3 0   100% 0 0   0%
python/lsst/pipe/base/graph/graph.py QuantumGraph.get_refs   98% 61 1 0   93% 44 3   96%
python/lsst/pipe/base/graph/graph.py QuantumGraph.get_refs._update_ref   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/graph/graph.py (no function)   100% 120 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphTaskSummary.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py QgraphSummary.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/graph/graphSummary.py (no function)   100% 30 0 30   100% 0 0   100%
python/lsst/pipe/base/graph/quantumNode.py _hashDsRef   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/quantumNode.py QuantumNode.task_node   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/quantumNode.py QuantumNode.__post_init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/quantumNode.py QuantumNode.__eq__   80% 5 1 0   75% 4 1   78%
python/lsst/pipe/base/graph/quantumNode.py QuantumNode.__hash__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/quantumNode.py QuantumNode.__repr__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/graph/quantumNode.py QuantumNode.to_simple   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/quantumNode.py QuantumNode.from_simple   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/quantumNode.py QuantumNode._replace_quantum   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/graph/quantumNode.py SerializedQuantumNode.direct   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/graph/quantumNode.py (no function)   100% 43 0 0   100% 0 0   100%
python/lsst/pipe/base/graph_walker.py GraphWalker.__init__   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/graph_walker.py GraphWalker.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/graph_walker.py GraphWalker.__next__   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/graph_walker.py GraphWalker.finish   100% 8 0 0   100% 4 0   100%
python/lsst/pipe/base/graph_walker.py GraphWalker.fail   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/graph_walker.py (no function)   100% 10 0 0   100% 0 0   100%
python/lsst/pipe/base/log_capture.py _ExecutionLogRecordsExtra.attach_previous_attempt   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/log_capture.py LogCapture.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/log_capture.py LogCapture.from_limited   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/log_capture.py LogCapture.from_full   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/log_capture.py LogCapture.capture_logging   90% 41 4 0   75% 12 3   87%
python/lsst/pipe/base/log_capture.py LogCapture._store_log_records   60% 5 2 0   100% 0 0   60%
python/lsst/pipe/base/log_capture.py (no function)   100% 46 0 0   100% 0 0   100%
python/lsst/pipe/base/log_on_close.py LogOnClose.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/log_on_close.py LogOnClose.wrap   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/log_on_close.py LogOnClose.wrap.wrapper   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/log_on_close.py (no function)   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/mermaid_tools.py graph2mermaid   64% 11 4 0   50% 6 3   59%
python/lsst/pipe/base/mermaid_tools.py pipeline2mermaid   76% 21 5 0   64% 14 5   71%
python/lsst/pipe/base/mermaid_tools.py (no function)   100% 7 0 4   100% 0 0   100%
python/lsst/pipe/base/mp_graph_executor.py _Job.__init__   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/mp_graph_executor.py _Job.state   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/mp_graph_executor.py _Job.terminated   100% 5 0 0   75% 4 1   89%
python/lsst/pipe/base/mp_graph_executor.py _Job.start   100% 11 0 0   100% 0 0   100%
python/lsst/pipe/base/mp_graph_executor.py _Job._executeJob   0% 34 34 0   0% 10 0   0%
python/lsst/pipe/base/mp_graph_executor.py _Job.stop   78% 9 2 0   50% 4 2   69%
python/lsst/pipe/base/mp_graph_executor.py _Job.cleanup   100% 4 0 0   50% 2 1   83%
python/lsst/pipe/base/mp_graph_executor.py _Job.report   100% 12 0 0   100% 2 0   100%
python/lsst/pipe/base/mp_graph_executor.py _Job.failMessage   80% 15 3 0   75% 4 1   79%
python/lsst/pipe/base/mp_graph_executor.py _Job.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/mp_graph_executor.py _JobList.__init__   100% 7 0 0   100% 0 0   100%
python/lsst/pipe/base/mp_graph_executor.py _JobList.submit   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/mp_graph_executor.py _JobList.setJobState   90% 30 3 0   75% 12 3   86%
python/lsst/pipe/base/mp_graph_executor.py _JobList.cleanup   80% 5 1 0   75% 4 1   78%
python/lsst/pipe/base/mp_graph_executor.py MPGraphExecutor.__init__   100% 10 0 0   100% 2 0   100%
python/lsst/pipe/base/mp_graph_executor.py MPGraphExecutor.execute   90% 29 3 1   100% 10 0   92%
python/lsst/pipe/base/mp_graph_executor.py MPGraphExecutor._make_xgraph   54% 13 6 0   50% 6 1   53%
python/lsst/pipe/base/mp_graph_executor.py MPGraphExecutor._execute_quanta_in_process   70% 64 19 0   67% 24 4   69%
python/lsst/pipe/base/mp_graph_executor.py MPGraphExecutor._execute_quanta_in_process.tiebreaker_sort_key   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/mp_graph_executor.py MPGraphExecutor._execute_quanta_mp   100% 69 0 0   98% 40 1   99%
python/lsst/pipe/base/mp_graph_executor.py MPGraphExecutor.getReport   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/mp_graph_executor.py (no function)   100% 73 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py LabelSpecifier.__post_init__   50% 2 1 0   50% 2 1   50%
python/lsst/pipe/base/pipeline.py TaskDef.__init__   70% 27 8 0   69% 16 3   70%
python/lsst/pipe/base/pipeline.py TaskDef.configDatasetName   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline.py TaskDef.metadataDatasetName   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline.py TaskDef.makeMetadataDatasetName   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline.py TaskDef.logOutputDatasetName   0% 3 3 0   0% 2 0   0%
python/lsst/pipe/base/pipeline.py TaskDef.__str__   0% 5 5 0   0% 2 0   0%
python/lsst/pipe/base/pipeline.py TaskDef.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/pipeline.py TaskDef.__hash__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py TaskDef._unreduce   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py TaskDef.__reduce__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.fromFile   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.from_uri   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.subsetFromLabels   100% 11 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline.py Pipeline._parse_file_specifier   83% 23 4 0   75% 16 4   79%
python/lsst/pipe/base/pipeline.py Pipeline.fromString   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.fromIR   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.fromPipeline   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline.py Pipeline.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.mergePipeline   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.addLabelToSubset   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.removeLabelFromSubset   60% 5 2 0   50% 4 2   56%
python/lsst/pipe/base/pipeline.py Pipeline.findSubsetsWithLabel   100% 7 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.task_labels   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.subsets   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.addLabeledSubset   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.removeLabeledSubset   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.addInstrument   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/pipeline.py Pipeline.getInstrument   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.get_data_id   0% 6 6 0   0% 4 0   0%
python/lsst/pipe/base/pipeline.py Pipeline.addTask   50% 10 5 0   38% 8 3   44%
python/lsst/pipe/base/pipeline.py Pipeline.removeTask   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.addConfigOverride   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.addConfigFile   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.addConfigPython   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline._addConfigImpl   90% 10 1 0   88% 8 1   89%
python/lsst/pipe/base/pipeline.py Pipeline.write_to_uri   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline.py Pipeline.to_graph   84% 25 4 0   72% 18 3   79%
python/lsst/pipe/base/pipeline.py Pipeline._add_task_to_graph   90% 10 1 0   75% 4 1   86%
python/lsst/pipe/base/pipeline.py Pipeline.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline.py Pipeline.__eq__   50% 6 3 1   50% 4 2   50%
python/lsst/pipe/base/pipeline.py (no function)   100% 84 0 2   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineYamlLoader.construct_mapping   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/pipelineIR.py MultilineStringDumper.represent_scalar   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipelineIR.py ContractIR.to_primitives   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/pipelineIR.py ContractIR.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/pipelineIR.py LabeledSubset.from_primitives   90% 10 1 0   83% 6 1   88%
python/lsst/pipe/base/pipelineIR.py LabeledSubset.to_primitives   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/pipelineIR.py ParametersIR.update   100% 2 0 0   50% 2 1   75%
python/lsst/pipe/base/pipelineIR.py ParametersIR.to_primitives   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py ParametersIR.__contains__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py ParametersIR.__getitem__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py ParametersIR.__bool__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py ConfigIR.to_primitives   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/pipelineIR.py ConfigIR.formatted   90% 10 1 0   88% 8 1   89%
python/lsst/pipe/base/pipelineIR.py ConfigIR.maybe_merge   100% 13 0 0   83% 6 1   95%
python/lsst/pipe/base/pipelineIR.py ConfigIR.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/pipelineIR.py TaskIR.to_primitives   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/pipelineIR.py TaskIR.add_or_update_config   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/pipelineIR.py TaskIR.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/pipelineIR.py ImportIR.toPipelineIR   96% 45 2 0   94% 36 2   95%
python/lsst/pipe/base/pipelineIR.py ImportIR.__eq__   0% 3 3 0   0% 2 0   0%
python/lsst/pipe/base/pipelineIR.py PipelineIR.__init__   94% 17 1 0   83% 6 1   91%
python/lsst/pipe/base/pipelineIR.py PipelineIR._read_contracts   89% 9 1 0   88% 8 1   88%
python/lsst/pipe/base/pipelineIR.py PipelineIR._read_parameters   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/pipelineIR.py PipelineIR._read_labeled_subsets   83% 6 1 0   75% 4 1   80%
python/lsst/pipe/base/pipelineIR.py PipelineIR._read_step_declaration   100% 8 0 0   100% 4 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineIR._verify_labeled_subsets   83% 6 1 0   83% 6 1   83%
python/lsst/pipe/base/pipelineIR.py PipelineIR._verify_steps   67% 3 1 0   75% 4 1   71%
python/lsst/pipe/base/pipelineIR.py PipelineIR._read_imports   85% 13 2 0   75% 8 2   81%
python/lsst/pipe/base/pipelineIR.py PipelineIR._read_imports.process_args   100% 18 0 0   94% 16 1   97%
python/lsst/pipe/base/pipelineIR.py PipelineIR.merge_pipelines   98% 45 1 0   93% 30 2   96%
python/lsst/pipe/base/pipelineIR.py PipelineIR._read_tasks   100% 23 0 0   100% 18 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineIR._remove_contracts   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineIR.subset_from_labels   94% 35 2 0   92% 26 2   93%
python/lsst/pipe/base/pipelineIR.py PipelineIR.from_string   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineIR.from_uri   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineIR.write_to_uri   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineIR.to_primitives   100% 13 0 0   100% 8 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineIR.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineIR.py PipelineIR.__repr__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipelineIR.py PipelineIR.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/pipelineIR.py (no function)   100% 128 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineTask.py PipelineTask.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineTask.py PipelineTask.run   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/pipelineTask.py PipelineTask.runQuantum   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipelineTask.py (no function)   100% 14 0 6   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/__init__.py (no function)   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/__main__.py main   0% 18 18 0   0% 8 0   0%
python/lsst/pipe/base/pipeline_graph/__main__.py read_input_pipeline   0% 9 9 0   0% 4 0   0%
python/lsst/pipe/base/pipeline_graph/__main__.py Arguments.from_parsed_args   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/__main__.py Arguments.add_args_to_parser   0% 5 5 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/__main__.py DisplayArguments.__post_init__   0% 2 2 0   0% 2 0   0%
python/lsst/pipe/base/pipeline_graph/__main__.py DisplayArguments.from_parsed_args   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/__main__.py DisplayArguments.add_args_to_parser   0% 28 28 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/__main__.py (no function)   0% 63 63 2   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode._from_edges   100% 25 0 0   100% 8 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode.name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode.key   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode.dimensions   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode.storage_class_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode.storage_class   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode.is_calibration   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode.generalize_ref   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py DatasetTypeNode._to_xgraph_state   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_dataset_types.py (no function)   100% 38 0 2   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.is_init   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.task_label   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.parent_dataset_type_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.nodes   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.key   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.dataset_type_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.diff   80% 10 2 0   75% 8 2   78%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.adapt_dataset_type   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.adapt_dataset_ref   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge._to_xgraph_state   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge._unreduce   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py Edge.__reduce__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge.__init__   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge.nodes   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge.dataset_type_name   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge.diff   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge.adapt_dataset_type   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge.adapt_dataset_ref   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge._from_connection_map   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge._resolve_dataset_type   87% 52 7 0   87% 38 5   87%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge._resolve_dataset_type.report_current_origin   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge._to_xgraph_state   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py ReadEdge.__reduce__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py WriteEdge.nodes   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py WriteEdge.adapt_dataset_type   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py WriteEdge.adapt_dataset_ref   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py WriteEdge._from_connection_map   80% 5 1 0   50% 2 1   71%
python/lsst/pipe/base/pipeline_graph/_edges.py WriteEdge._resolve_dataset_type   100% 11 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_edges.py (no function)   100% 79 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_exceptions.py (no function)   100% 14 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView.__contains__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView.__iter__   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView.__getitem__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView.__len__   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView._reorder   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView._reset   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py MappingView._make_keys   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py TaskMappingView.between   100% 11 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py DatasetTypeMappingView.__getitem__   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py DatasetTypeMappingView.is_resolved   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py DatasetTypeMappingView.get_if_resolved   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py DatasetTypeMappingView.get_if_resolved   100% 1 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py DatasetTypeMappingView.get_if_resolved   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_mapping_views.py (no function)   100% 32 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_nodes.py NodeBipartite.from_bytes   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_nodes.py NodeBipartite.to_bytes   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_nodes.py NodeType.bipartite   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_nodes.py NodeType.__lt__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_nodes.py NodeKey.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_nodes.py NodeKey.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_nodes.py NodeKey.node_id   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_nodes.py (no function)   100% 26 0 4   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.description   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.description   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.universe   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.data_id   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.tasks   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.dataset_types   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.task_subsets   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.steps   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.steps   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.get_task_step   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.is_fully_resolved   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.has_been_sorted   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.sort   100% 4 0 3   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.copy   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.__copy__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.__deepcopy__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.diff_tasks   92% 12 1 0   83% 6 1   89%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.producing_edge_of   86% 7 1 0   75% 4 1   82%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.consuming_edges_of   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.producer_of   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.consumers_of   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.inputs_of   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.outputs_of   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.resolve   100% 38 0 2   100% 22 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.add_task   100% 8 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.add_task_nodes   76% 29 7 2   93% 14 1   81%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.reconfigure_tasks   83% 6 1 0   75% 4 1   80%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.remove_tasks   100% 35 0 2   100% 14 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.add_task_subset   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.remove_task_subset   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.make_xgraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.make_bipartite_xgraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.make_task_xgraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.make_dataset_type_xgraph   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.select_tasks   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.select   83% 6 1 0   50% 2 1   75%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._read_stream   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._read_uri   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._write_stream   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._write_uri   75% 8 2 0   50% 4 2   67%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._import_and_configure   100% 11 0 0   88% 8 1   95%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.iter_edges   100% 3 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.iter_nodes   100% 5 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.iter_overall_inputs   100% 5 0 0   83% 6 1   91%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.group_by_dimensions   88% 16 2 0   86% 14 2   87%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.get_all_dimensions   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.split_independent   100% 12 0 0   83% 6 1   94%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.packages_dataset_type   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.register_dataset_types   58% 12 5 0   43% 14 2   50%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.check_dataset_type_registrations   100% 17 0 0   100% 12 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.instantiate_tasks   100% 34 0 0   95% 22 1   98%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.write_init_outputs   92% 13 1 0   90% 10 1   91%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.write_configs   100% 10 0 0   100% 8 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.write_packages   71% 7 2 0   75% 4 1   73%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph.init_output_run   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._iter_task_defs   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._init_from_args   95% 19 1 0   88% 8 1   93%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._make_bipartite_xgraph_internal   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._make_task_xgraph_internal   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._transform_xgraph_state   100% 11 0 0   100% 10 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._replace_task_nodes   100% 25 0 4   100% 18 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._append_graph_data_from_edge   100% 7 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._reorder   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._reset   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._resolve_step_flow   100% 44 0 0   100% 18 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._resolve_step_dimensions   100% 11 0 0   100% 10 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._select_expression   100% 38 0 6   100% 24 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._select_task_ancestors   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._select_task_descendants   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._select_dataset_type_ancestors   100% 8 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._select_dataset_type_descendants   100% 11 0 0   100% 8 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py PipelineGraph._select_identifier   100% 31 0 2   100% 20 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py log_config_mismatch   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py compare_packages   55% 11 5 0   50% 4 2   53%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py _dimensions_compatible   100% 10 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline_graph/_pipeline_graph.py (no function)   100% 127 0 5   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.__init__   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.label   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.description   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.description   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.is_step   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.dimensions   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.dimensions   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.__contains__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.add   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset.discard   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py TaskSubset._from_iterable   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.verified   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.__contains__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.copy   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.append   100% 7 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.remove   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.assign   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.clear   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.get_dimensions   100% 7 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions.set_dimensions   100% 9 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py StepDefinitions._unverified_on_success   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_task_subsets.py (no function)   100% 49 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py _TaskNodeImportedData.configure   69% 16 5 0   75% 4 1   70%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.__init__   100% 11 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.label   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.is_imported   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.task_class   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.task_class_name   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.config   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.__repr__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.get_config_str   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.iter_all_inputs   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.iter_all_outputs   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.get_input_edge   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.get_output_edge   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.get_edge   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.diff_edges   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode._to_xgraph_state   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode._get_imported_data   50% 4 2 0   100% 0 0   50%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode._unreduce   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskInitNode.__reduce__   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.__init__   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode._from_imported_data   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.label   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.is_imported   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.task_class   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.task_class_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.config   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.has_resolved_dimensions   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.dimensions   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.raw_dimensions   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.__repr__   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.get_config_str   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.iter_all_inputs   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.iter_all_outputs   100% 4 0 0   50% 2 1   83%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.get_input_edge   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.get_output_edge   86% 7 1 0   83% 6 1   85%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.get_edge   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.diff_edges   75% 12 3 0   33% 6 2   61%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.get_lookup_function   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.is_optional   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.get_connections   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.get_spatial_bounds_connections   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.get_temporal_bounds_connections   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode._imported_and_configured   78% 9 2 0   50% 4 2   69%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode._reconfigured   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode._resolved   100% 6 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode._to_xgraph_state   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode._get_imported_data   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode._unreduce   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py TaskNode.__reduce__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/_tasks.py _diff_edge_mapping   90% 10 1 0   83% 6 1   88%
python/lsst/pipe/base/pipeline_graph/_tasks.py (no function)   100% 127 0 3   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserLex.make_lexer   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserLex.t_IDENTIFIER   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserLex.t_error   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc._parser_factory   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.parse   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.p_expr_union   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.p_expr_intersection   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.p_expr_not   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.p_expr_parens   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.p_expr_inequality   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.p_expr_identifier   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.p_identifier_qualified   100% 5 0 2   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py _ParserYacc.p_error   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py parse   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/expressions.py (no function)   100% 74 0 3   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/io.py _expect_not_none   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/pipeline_graph/io.py SerializedEdge.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedEdge.deserialize_read_edge   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedEdge.deserialize_write_edge   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedTaskInitNode.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedTaskInitNode.deserialize   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedTaskNode.serialize   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedTaskNode.deserialize   92% 12 1 0   75% 4 1   88%
python/lsst/pipe/base/pipeline_graph/io.py SerializedDatasetTypeNode.serialize   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedDatasetTypeNode.deserialize   92% 12 1 0   83% 6 1   89%
python/lsst/pipe/base/pipeline_graph/io.py SerializedTaskSubset.serialize   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedTaskSubset.deserialize_task_subset   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/io.py SerializedPipelineGraph.serialize   100% 11 0 0   90% 10 1   95%
python/lsst/pipe/base/pipeline_graph/io.py SerializedPipelineGraph.deserialize   100% 39 0 0   100% 22 0   100%
python/lsst/pipe/base/pipeline_graph/io.py (no function)   100% 117 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/__init__.py (no function)   100% 10 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py show_dot   78% 32 7 1   68% 22 7   74%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py _render_default   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py _render_task_node   83% 6 1 0   50% 4 2   70%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py _render_dataset_type_node   52% 29 14 0   33% 18 6   45%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py _render_node   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py _render_edge   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py _format_label   82% 11 2 0   67% 6 2   76%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py _parse_label   46% 13 7 0   33% 6 2   42%
python/lsst/pipe/base/pipeline_graph/visualization/_dot.py (no function)   100% 28 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py strip_ansi   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py render_segment   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py get_node_symbol   36% 14 9 0   25% 12 1   31%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py GetNodeText.__init__   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py GetNodeText.__call__   88% 8 1 0   50% 2 1   80%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py GetNodeText._build_description   100% 9 0 0   100% 6 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py GetNodeText._stitch_node_text   33% 12 8 0   25% 4 1   31%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py GetNodeText.format_node_status   0% 3 3 0   0% 2 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py GetNodeText.format_dimensions   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py GetNodeText.format_task_class   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py GetNodeText.format_deferrals   29% 7 5 0   17% 6 1   23%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py format_dimensions   71% 14 4 0   60% 10 2   67%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py format_task_class   62% 8 3 0   50% 6 1   57%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py _build_progress_bar   0% 13 13 0   0% 6 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py format_node_status   0% 39 39 0   0% 22 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_formatting.py (no function)   100% 32 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout.__init__   90% 10 1 0   50% 2 1   83%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout._add_graph   86% 14 2 0   75% 8 2   82%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout._add_single_node   96% 28 1 0   78% 18 4   89%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout._shift   0% 6 6 0   0% 4 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout._add_connected_graph   95% 20 1 0   75% 4 1   92%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout._add_blockers_of   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout.width   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout.nodes   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout.print   0% 2 2 0   0% 2 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout._external_location   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py Layout.__iter__   92% 13 1 0   88% 8 1   90%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py ColumnSelector.__call__   91% 11 1 0   83% 6 1   88%
python/lsst/pipe/base/pipeline_graph/visualization/_layout.py (no function)   100% 43 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py MergedNodeKey.__str__   0% 3 3 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py MergedNodeKey.node_type   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py MergedNodeKey.node_id   0% 4 4 0   0% 2 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py merge_graph_input_trees   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py merge_graph_output_trees   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py merge_graph_intermediates   50% 18 9 0   50% 14 1   50%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py _MergeKey.from_node_state   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py _make_tree_merge_groups   95% 22 1 0   92% 12 1   94%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py _apply_tree_merges   50% 20 10 0   67% 12 2   56%
python/lsst/pipe/base/pipeline_graph/visualization/_merge.py (no function)   100% 39 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py show_mermaid   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py _generate_mermaid_source   96% 26 1 1   83% 12 2   92%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py _render_mermaid_image   0% 19 19 0   0% 10 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py _render_task_node   92% 12 1 0   67% 6 2   83%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py _render_dataset_type_node   44% 27 15 0   25% 12 3   38%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py _render_simple_node   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py _render_edge   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py _format_label   78% 9 2 0   50% 4 2   69%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py _parse_label   50% 14 7 0   33% 6 2   45%
python/lsst/pipe/base/pipeline_graph/visualization/_mermaid.py (no function)   94% 32 2 0   100% 0 0   94%
python/lsst/pipe/base/pipeline_graph/visualization/_options.py NodeAttributeOptions.has_details   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_options.py NodeAttributeOptions.__bool__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_options.py NodeAttributeOptions.checked   60% 5 2 0   50% 4 2   56%
python/lsst/pipe/base/pipeline_graph/visualization/_options.py (no function)   100% 19 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py PrintRow.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py PrintRow.set   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py PrintRow.vert   0% 3 3 0   0% 2 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py PrintRow.update   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py PrintRow.bend   27% 11 8 0   25% 8 2   26%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py PrintRow.finish   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py _default_get_text   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py _default_get_symbol   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py _default_get_style   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py Printer.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py Printer.print_row   88% 17 2 0   75% 8 2   84%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py Printer.print   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py TerminalPrintRow.__init__   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py TerminalPrintRow.set   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py TerminalPrintRow.finish   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py make_colorama_printer   0% 9 9 0   0% 2 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py make_simple_printer   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py make_default_printer   27% 11 8 0   20% 10 2   24%
python/lsst/pipe/base/pipeline_graph/visualization/_printer.py (no function)   100% 29 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_show.py parse_display_args   75% 32 8 0   68% 28 5   72%
python/lsst/pipe/base/pipeline_graph/visualization/_show.py show   92% 13 1 0   50% 4 2   82%
python/lsst/pipe/base/pipeline_graph/visualization/_show.py (no function)   100% 19 0 0   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py QuantumGraphExecutionStatusColors.__post_init__   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py NodeStatusOptions.__post_init__   0% 2 2 0   0% 2 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py NodeStatusAnnotator.__call__   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py NodeStatusAnnotator.__call__   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py NodeStatusAnnotator.__call__   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py QuantumGraphExecutionStatusAnnotator.__init__   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py QuantumProvenanceGraphStatusAnnotator.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py QuantumProvenanceGraphStatusAnnotator.__call__   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py QuantumProvenanceGraphStatusAnnotator.__call__   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py QuantumProvenanceGraphStatusAnnotator.__call__   0% 14 14 0   0% 6 0   0%
python/lsst/pipe/base/pipeline_graph/visualization/_status_annotator.py (no function)   100% 71 0 2   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py PrerequisiteInfo.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py PrerequisiteInfo.update_bounds   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/prerequisite_helpers.py PrerequisiteFinder.__init__   96% 24 1 0   83% 12 2   92%
python/lsst/pipe/base/prerequisite_helpers.py PrerequisiteFinder.task_node   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py PrerequisiteFinder.find   17% 29 24 3   17% 12 2   17%
python/lsst/pipe/base/prerequisite_helpers.py PrerequisiteBounds.__post_init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py PrerequisiteBounds.make_skypix_bounds_builder   29% 7 5 0   17% 6 1   23%
python/lsst/pipe/base/prerequisite_helpers.py PrerequisiteBounds.make_timespan_builder   29% 7 5 0   17% 6 1   23%
python/lsst/pipe/base/prerequisite_helpers.py SkyPixBoundsBuilder.handle_dataset   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py SkyPixBoundsBuilder.finish   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py TimespanBuilder.handle_dataset   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py TimespanBuilder.finish   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py _TrivialSkyPixBoundsBuilder.finish   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py _TrivialTimespanBuilder.finish   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/prerequisite_helpers.py _QuantumOnlySkyPixBoundsBuilder.__init__   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _QuantumOnlySkyPixBoundsBuilder.finish   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _QuantumOnlyTimespanBuilder.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _QuantumOnlyTimespanBuilder.finish   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _UnboundedSkyPixBoundsBuilder.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _UnboundedSkyPixBoundsBuilder.finish   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _UnboundedTimespanBuilder.finish   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _ConnectionSkyPixBoundsBuilder.__init__   0% 9 9 0   0% 6 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _ConnectionSkyPixBoundsBuilder.handle_dataset   0% 2 2 0   0% 2 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _ConnectionSkyPixBoundsBuilder.finish   0% 7 7 0   0% 4 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _ConnectionTimespanBuilder.__init__   0% 8 8 0   0% 4 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _ConnectionTimespanBuilder.handle_dataset   0% 4 4 0   0% 2 0   0%
python/lsst/pipe/base/prerequisite_helpers.py _ConnectionTimespanBuilder.finish   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/prerequisite_helpers.py (no function)   100% 81 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/__init__.py (no function)   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.from_old_quantum_graph   83% 6 1 0   50% 2 1   75%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.to_old_metadata   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py HeaderModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraph.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraph.quanta_by_task   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraph.datasets_by_type   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraph.quantum_only_xgraph   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraph.bipartite_xgraph   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraphWriter.open   100% 15 0 0   75% 4 1   95%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraphWriter.write_single_model   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraphWriter.write_single_block   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraphReader._open   94% 16 1 0   88% 8 1   92%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraphReader._read_single_block_static   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraphReader._read_single_block   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py BaseQuantumGraphReader._read_single_block_raw   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_common.py (no function)   100% 138 0 17   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py Compressor.compress   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/_multiblock.py Decompressor.decompress   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/_multiblock.py Address.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressRow.write   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressRow.read   100% 8 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressRow.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressWriter.write   90% 10 1 0   75% 4 1   86%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressWriter.write_to_zip   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressWriter.get_all_ids   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressPage.end   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py PageBounds.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader.from_stream   88% 25 3 0   70% 10 3   83%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader.open_in_zip   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader.compute_header_size   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader.compute_row_size   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader.row_size   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader.read_all   100% 11 0 0   83% 6 1   94%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader.find   72% 18 5 0   58% 12 3   67%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader._read_page   100% 16 0 0   83% 6 1   95%
python/lsst/pipe/base/quantum_graph/_multiblock.py AddressReader._read_row   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py MultiblockWriter.open_in_zip   100% 8 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py MultiblockWriter.write_bytes   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py MultiblockWriter.write_model   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py MultiblockReader.open_in_zip   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py MultiblockReader.read_all_bytes_in_zip   100% 7 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py MultiblockReader.read_all_models_in_zip   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_multiblock.py MultiblockReader.read_bytes   78% 9 2 0   50% 4 2   69%
python/lsst/pipe/base/quantum_graph/_multiblock.py MultiblockReader.read_model   80% 5 1 0   50% 2 1   71%
python/lsst/pipe/base/quantum_graph/_multiblock.py (no function)   100% 134 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinQuantumModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py _PredictedThinGraphModelV0._upgraded   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedThinGraphModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.from_dataset_ref   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedDatasetModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.iter_input_dataset_ids   100% 3 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.iter_output_dataset_ids   100% 3 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.iter_dataset_ids   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.deserialize_datastore_records   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.from_execution_quantum   100% 9 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.from_old_quantum_graph_init   86% 21 3 0   60% 10 2   77%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumDatasetsModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.update_from_old_quantum_graph   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedInitQuantaModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.__init__   95% 20 1 0   80% 10 2   90%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._add_init_quanta   100% 7 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._add_thin_graph   100% 4 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._add_quantum_datasets   100% 14 0 0   100% 8 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._add_quantum   100% 9 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._add_dataset   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.open   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.read_execution_quanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.make_empty   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.quanta_by_task   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.datasets_by_type   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.quantum_only_xgraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.bipartite_xgraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.dimension_data   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.__iter__   100% 3 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.get_init_inputs   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.get_init_outputs   92% 13 1 0   88% 8 1   90%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._make_init_ref   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.build_execution_quanta   87% 31 4 0   83% 12 2   86%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._expand_execution_quantum_data_ids   93% 15 1 0   92% 12 1   93%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._build_execution_quantum_refs   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._make_general_ref   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.make_init_qbb   100% 10 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.write_init_outputs   100% 18 0 0   100% 14 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.write_configs   100% 18 0 0   100% 12 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.write_packages   85% 13 2 0   83% 6 1   84%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.init_output_run   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.from_old_quantum_graph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph.to_old_quantum_graph   100% 20 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraph._make_summary   100% 13 0 0   100% 8 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.__post_init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.make_empty   0% 7 7 0   0% 2 0   0%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.make_dataset_ref   90% 10 1 0   50% 4 2   79%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.set_thin_graph   100% 12 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.set_header_counts   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.update_output_run   100% 18 0 0   100% 10 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.assemble   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.read_execution_quanta   100% 9 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.from_old_quantum_graph   100% 15 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphComponents.write   84% 38 6 0   81% 16 3   83%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.open   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.__post_init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.finish   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.read_all   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.read_thin_graph   50% 6 3 0   50% 4 2   50%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.read_init_quanta   100% 2 0 0   50% 2 1   75%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.read_dimension_data   100% 3 0 0   50% 2 1   80%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.read_quantum_datasets   93% 15 1 0   75% 12 3   85%
python/lsst/pipe/base/quantum_graph/_predicted.py PredictedQuantumGraphReader.read_execution_quanta   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_predicted.py (no function)   100% 172 0 81   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py pass_through   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.node_id   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.from_predicted   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel._add_to_graph   100% 10 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceDatasetModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumAttemptModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceLogRecordsModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceTaskMetadataModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.from_info   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumReport.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceReport.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.node_id   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.from_predicted   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel._add_to_graph   100% 31 0 0   100% 20 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.from_predicted   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel._add_to_graph   100% 14 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantumModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel._add_to_graph   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceInitQuantaModel.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.from_args   64% 25 9 0   50% 10 3   60%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.init_quanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.quanta_by_task   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.datasets_by_type   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.quantum_only_xgraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.bipartite_xgraph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.make_quantum_table   92% 25 2 0   81% 16 3   88%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.make_exception_table   100% 14 0 0   100% 10 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.make_task_resource_usage_table   100% 21 0 0   70% 10 3   90%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.make_status_report   100% 35 0 0   86% 22 3   95%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraph.make_many_reports   100% 18 0 0   50% 14 7   78%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.open   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.__post_init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.read_init_quanta   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.read_full_graph   0% 3 3 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.read_datasets   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.read_quanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader._read_nodes   60% 15 6 0   58% 12 1   59%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.fetch_logs   100% 8 0 0   75% 4 1   92%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.fetch_metadata   100% 8 0 0   75% 4 1   92%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphReader.fetch_packages   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter.__init__   100% 18 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter._init_predicted_quanta   100% 8 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter._populate_xgraph_and_inputs   100% 16 0 0   100% 14 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter.compressor   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter.write_packages   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter.write_overall_inputs   100% 4 0 0   75% 4 1   88%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter.write_init_outputs   100% 10 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter.write_quantum_provenance   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter.write_blocked_quantum_provenance   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumGraphWriter.write_scan_data   100% 33 0 0   100% 20 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanModels.from_metadata_and_logs   100% 9 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanModels._process_logs   92% 12 1 0   67% 6 2   83%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanModels._extract_from_log_extra   100% 15 0 0   100% 8 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanModels._process_metadata   89% 19 2 0   100% 4 0   91%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanModels._reconcile_attempts   58% 12 5 0   33% 6 2   50%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanModels._extract_output_existence   75% 8 2 0   100% 4 0   83%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanModels.to_scan_data   91% 11 1 0   88% 8 1   89%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanData.make_blocked   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/_provenance.py ProvenanceQuantumScanData.compress   100% 5 0 0   50% 2 1   86%
python/lsst/pipe/base/quantum_graph/_provenance.py (no function)   100% 247 0 138   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/__init__.py (no function)   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py _disable_resources_parallelism   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator.__init__   100% 13 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator._wait_for_workers_to_finish   73% 41 11 1   73% 30 8   73%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator._terminate   0% 10 10 0   0% 6 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator.__enter__   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator.__exit__   50% 16 8 0   67% 6 2   55%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator.request_scan   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator.request_write   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator.poll   89% 9 1 1   83% 6 1   87%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator._get_report   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator._get_report   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator._get_report   43% 7 4 0   17% 6 1   31%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py SupervisorCommunicator._handle_progress_reports   100% 14 0 0   100% 10 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WorkerCommunicator.__init__   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WorkerCommunicator.__enter__   60% 10 4 0   25% 4 1   50%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WorkerCommunicator.__exit__   79% 14 3 0   83% 6 1   80%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WorkerCommunicator.exit_stack   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WorkerCommunicator.log_progress   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WorkerCommunicator.check_for_cancel   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py ScannerCommunicator.__init__   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py ScannerCommunicator.get_worker_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py ScannerCommunicator.report_scan   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py ScannerCommunicator.request_ingest   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py ScannerCommunicator.request_write   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py ScannerCommunicator.get_compression_dict   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py ScannerCommunicator.poll   100% 8 0 0   75% 4 1   92%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py ScannerCommunicator.__exit__   100% 10 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py IngesterCommunicator.__init__   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py IngesterCommunicator.get_worker_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py IngesterCommunicator.__exit__   100% 8 0 0   75% 4 1   92%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py IngesterCommunicator.report_ingest   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py IngesterCommunicator.poll   90% 10 1 0   67% 6 2   81%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WriterCommunicator.__init__   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WriterCommunicator.get_worker_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WriterCommunicator.__exit__   92% 13 1 0   75% 8 2   86%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WriterCommunicator.poll   100% 10 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WriterCommunicator.send_compression_dict   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WriterCommunicator.report_write   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py WriterCommunicator.periodically_check_for_cancel   83% 6 1 0   75% 4 1   80%
python/lsst/pipe/base/quantum_graph/aggregator/_communicators.py (no function)   100% 110 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.is_writing_provenance   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py AggregatorConfig.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_config.py (no function)   100% 50 0 15   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.__post_init__   86% 7 1 0   50% 2 1   78%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.__enter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.__exit__   60% 5 2 0   100% 0 0   60%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.n_datasets_pending   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.run   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.loop   93% 27 2 0   69% 16 5   84%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.ingest   95% 20 1 0   67% 6 2   88%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.report   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.fetch_already_ingested   80% 15 3 0   80% 10 2   80%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.update_outputs_pending   100% 12 0 0   100% 8 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py Ingester.update_output_chain   88% 8 1 0   67% 6 2   79%
python/lsst/pipe/base/quantum_graph/aggregator/_ingester.py (no function)   100% 55 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressCounter.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressCounter.update   27% 11 8 0   12% 8 1   21%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressCounter.close   33% 3 2 0   50% 2 1   40%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressCounter.append_log_terms   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressManager.__init__   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressManager.__enter__   40% 5 3 0   50% 2 1   43%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressManager.__exit__   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressManager.elapsed_time   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py ProgressManager._log_status   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py make_worker_log   35% 17 11 0   17% 6 1   30%
python/lsst/pipe/base/quantum_graph/aggregator/_progress.py (no function)   100% 22 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.__post_init__   89% 9 1 0   50% 2 1   82%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.__enter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.__exit__   60% 5 2 0   100% 0 0   60%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.make_qbb   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.pipeline_graph   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.run   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.loop   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.scan_dataset   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner.scan_quantum   100% 24 0 0   100% 10 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner._make_ingest_request   100% 15 0 0   100% 10 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner._read_metadata   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py Scanner._read_log   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_scanner.py (no function)   100% 48 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_structs.py IngestRequest.__bool__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_structs.py (no function)   100% 23 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_supervisor.py Supervisor.__post_init__   100% 12 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_supervisor.py Supervisor.loop   100% 16 0 0   100% 8 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_supervisor.py Supervisor.handle_report   94% 18 1 1   80% 10 2   89%
python/lsst/pipe/base/quantum_graph/aggregator/_supervisor.py aggregate_graph   100% 17 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_supervisor.py (no function)   100% 36 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Worker.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Worker.name   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Worker.join   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Worker.is_alive   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Worker.kill   100% 0 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Queue.get   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Queue.get   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Queue.get   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Queue.put   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Queue.clear   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py Queue.kill   100% 0 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py WorkerFactory.make_queue   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py WorkerFactory.make_event   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py WorkerFactory.make_worker   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadWorker.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadWorker.name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadWorker.join   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadWorker.is_alive   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadQueue.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadQueue.get   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadQueue.get   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadQueue.get   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ThreadQueue.put   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py ThreadWorkerFactory.make_queue   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py ThreadWorkerFactory.make_event   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py ThreadWorkerFactory.make_worker   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessWorker.__init__   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessWorker.name   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessWorker.join   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessWorker.is_alive   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessWorker.kill   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessQueue.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessQueue.get   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessQueue.get   100% 1 0 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessQueue.get   0% 4 4 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessQueue.put   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py _ProcessQueue.kill   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py SpawnWorkerFactory.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py SpawnWorkerFactory.make_queue   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py SpawnWorkerFactory.make_event   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py SpawnWorkerFactory.make_worker   0% 3 3 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/aggregator/_workers.py (no function)   100% 72 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_writer.py Writer.__post_init__   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_writer.py Writer.run   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_writer.py Writer.loop   87% 15 2 0   80% 10 2   84%
python/lsst/pipe/base/quantum_graph/aggregator/_writer.py Writer.make_qg_writer   100% 17 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/aggregator/_writer.py Writer.make_compression_dictionary   58% 45 19 0   67% 12 4   60%
python/lsst/pipe/base/quantum_graph/aggregator/_writer.py (no function)   100% 26 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/formatter.py _ProvenanceFormatterParameters.quanta_to_list   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/formatter.py _ProvenanceFormatterParameters.datasets_to_list   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/formatter.py _ProvenanceFormatterParameters.nodes   43% 7 4 0   33% 6 2   38%
python/lsst/pipe/base/quantum_graph/formatter.py ProvenanceFormatter.read_from_uri   92% 26 2 1   88% 16 2   90%
python/lsst/pipe/base/quantum_graph/formatter.py ProvenanceFormatter._read_metadata   60% 10 4 0   50% 4 2   57%
python/lsst/pipe/base/quantum_graph/formatter.py ProvenanceFormatter._read_log   60% 10 4 0   50% 4 2   57%
python/lsst/pipe/base/quantum_graph/formatter.py ProvenanceFormatter._read_packages   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph/formatter.py ProvenanceFormatter._read_config   67% 6 2 0   100% 0 0   67%
python/lsst/pipe/base/quantum_graph/formatter.py (no function)   100% 36 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py ingest_graph   88% 25 3 0   69% 16 5   80%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.output_run   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.open   86% 7 1 0   50% 2 1   78%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.read_graph   73% 11 3 0   50% 2 1   69%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.fetch_already_ingested_datasets   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.iter_datasets   100% 14 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.forget_ingested_datasets   100% 13 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester._run_forget   100% 8 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.ingest_graph_dataset   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.clean_and_reingest_datasets   94% 17 1 0   88% 8 1   92%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester._run_clean_and_ingest   75% 24 6 0   56% 16 5   68%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester._make_ref_from_info   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.make_qbb   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/ingest_graph.py _GraphIngester.find_dataset_type_directory   83% 6 1 0   75% 4 1   80%
python/lsst/pipe/base/quantum_graph/ingest_graph.py (no function)   100% 44 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphVisualizer.render_header   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphVisualizer.render_footer   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphVisualizer.render_quantum   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphVisualizer.render_dataset   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphVisualizer.render_edge   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphVisualizer.write_quantum_only   0% 7 7 0   0% 4 0   0%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphVisualizer.write_bipartite   100% 11 0 0   88% 8 1   95%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphDotVisualizer.render_header   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphDotVisualizer.render_footer   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphDotVisualizer.render_quantum   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphDotVisualizer.render_dataset   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphDotVisualizer.render_edge   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphDotVisualizer._render_default   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphDotVisualizer._render_node   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphDotVisualizer._make_node_id   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphMermaidVisualizer.render_header   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphMermaidVisualizer.render_footer   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphMermaidVisualizer.render_quantum   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphMermaidVisualizer.render_dataset   100% 5 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphMermaidVisualizer.render_edge   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py QuantumGraphMermaidVisualizer._make_node_id   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph/visualization.py (no function)   100% 41 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder.__init__   90% 52 5 0   86% 22 3   89%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder.universe   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder.build   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder.finish   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._build_skeleton   100% 42 0 0   100% 28 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder.process_subgraph   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._resolve_task_quanta   100% 20 0 0   100% 10 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._adjust_task_quanta   80% 50 10 0   73% 22 2   78%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._get_task_inputs_if_overall_only   100% 6 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._compute_skip_decision   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._apply_skip_decision   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._expand_retained_patterns   100% 17 0 0   100% 12 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._unskip_ancestors   95% 21 1 0   86% 14 2   91%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._update_quantum_for_adjust   100% 25 0 0   100% 14 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._adapt_quantum_outputs   100% 11 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._adapt_quantum_inputs   92% 13 1 1   83% 6 1   89%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._resolve_task_init   85% 39 6 0   90% 20 2   86%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._find_empty_dimension_datasets   94% 32 2 0   100% 16 0   96%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._attach_datastore_records   100% 25 0 0   89% 18 2   95%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._construct_quantum_graph   100% 33 0 0   100% 8 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._construct_components   100% 25 0 0   100% 8 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._make_predicted_datasets   100% 17 0 0   100% 10 0   100%
python/lsst/pipe/base/quantum_graph_builder.py QuantumGraphBuilder._find_removed   0% 7 7 0   0% 4 0   0%
python/lsst/pipe/base/quantum_graph_builder.py _quantum_or_quanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_builder.py (no function)   100% 111 0 4   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_executor.py QuantumExecutionResult.__new__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_executor.py QuantumExecutionResult.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_executor.py QuantumExecutionResult.quantum   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph_executor.py QuantumExecutionResult.report   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_executor.py QuantumExecutionResult.task_metadata   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_executor.py QuantumExecutionResult.skipped_existing   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph_executor.py QuantumExecutionResult.adjusted_no_work   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph_executor.py QuantumExecutor.execute   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_executor.py QuantumGraphExecutor.execute   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_executor.py QuantumGraphExecutor.getReport   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph_executor.py (no function)   100% 26 0 7   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.__init__   100% 8 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.__contains__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.__getitem__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.n_nodes   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.n_edges   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.has_any_quanta   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.has_task   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.get_task_init_node   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.get_quanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.global_init_outputs   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.iter_all_quanta   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.iter_outputs_of   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.iter_inputs_of   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.get_producer_of   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.update   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.add_quantum_node   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.add_dataset_node   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.add_prerequisite_node   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.remove_quantum_node   100% 7 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.remove_dataset_nodes   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.remove_task   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.add_input_edges   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.remove_input_edges   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.add_input_edge   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.add_output_edge   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.remove_output_edge   100% 3 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.remove_orphan_datasets   100% 3 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.remove_unanchored_quanta   100% 26 0 0   100% 16 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.extract_overall_inputs   100% 9 0 1   83% 6 1   93%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.set_dataset_ref   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.set_output_for_skip   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.set_output_in_the_way   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.get_dataset_ref   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.get_output_for_skip   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.get_output_in_the_way   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.discard_output_in_the_way   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.set_data_id   88% 8 1 0   83% 6 1   86%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.get_data_id   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.attach_dimension_records   100% 19 0 0   100% 16 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py QuantumGraphSkeleton.get_dimension_data   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_graph_skeleton.py (no function)   100% 89 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumRun.find_final   100% 4 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py DatasetRun._validate   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py UnsuccessfulQuantumSummary._from_info   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py TaskSummary.n_wonky   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py TaskSummary.n_failed   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py TaskSummary._add_quantum_info   81% 43 8 1   77% 22 5   80%
python/lsst/pipe/base/quantum_provenance_graph.py TaskSummary._add_data_id_group   100% 11 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py CursedDatasetSummary._from_info   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/quantum_provenance_graph.py DatasetTypeSummary.n_cursed   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py DatasetTypeSummary.n_unsuccessful   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py DatasetTypeSummary._add_dataset_info   75% 12 3 1   70% 10 3   73%
python/lsst/pipe/base/quantum_provenance_graph.py DatasetTypeSummary._add_data_id_group   100% 12 0 0   83% 6 1   94%
python/lsst/pipe/base/quantum_provenance_graph.py Summary.aggregate   100% 9 0 0   100% 6 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py Summary.pprint   0% 22 22 0   0% 14 0   0%
python/lsst/pipe/base/quantum_provenance_graph.py Summary.make_quantum_table   90% 10 1 0   83% 6 1   88%
python/lsst/pipe/base/quantum_provenance_graph.py Summary.make_dataset_table   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py Summary.make_exception_table   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py Summary.make_bad_quantum_tables   100% 17 0 0   100% 8 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py Summary.make_bad_dataset_tables   57% 14 6 0   75% 8 2   64%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.__init__   89% 9 1 0   75% 4 1   85%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.quanta   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.datasets   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.get_quantum_info   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.get_dataset_info   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.to_summary   94% 34 2 0   88% 16 2   92%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.iter_outputs_of   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.get_producer_of   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.iter_downstream   0% 2 2 0   0% 2 0   0%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph.assemble_quantum_provenance_graph   79% 19 4 0   60% 10 4   72%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph._add_new_graph   84% 45 7 0   83% 18 3   84%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph._add_new_quantum   100% 34 0 0   100% 10 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph._update_run_status   94% 18 1 0   88% 8 1   92%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph._update_info_status   73% 26 7 0   67% 18 6   70%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph._update_caveats   83% 6 1 0   50% 2 1   75%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph._update_caveats.read_metadata   78% 9 2 0   100% 0 0   78%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph._resolve_duplicates   74% 53 14 0   77% 30 5   75%
python/lsst/pipe/base/quantum_provenance_graph.py QuantumProvenanceGraph._butler_get   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py _ThreadLocalButlerWrapper.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py _ThreadLocalButlerWrapper.wrap_qbb   82% 11 2 0   100% 4 0   87%
python/lsst/pipe/base/quantum_provenance_graph.py _ThreadLocalButlerWrapper.wrap_full   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/quantum_provenance_graph.py _ThreadLocalButlerWrapper.butler   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py _QuantumBackedButlerFactory.__call__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_provenance_graph.py _cli   0% 26 26 1   0% 4 0   0%
python/lsst/pipe/base/quantum_provenance_graph.py (no function)   100% 248 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py _serializeDataId   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.from_exception   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py ExceptionInfo.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.from_exception   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.from_exit_code   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py QuantumReport.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report._set_cmdLine   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/quantum_reports.py Report.set_exception   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py Report.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/quantum_reports.py (no function)   100% 58 0 45   100% 0 0   100%
python/lsst/pipe/base/resource_usage.py QuantumResourceUsage.total_time   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/resource_usage.py QuantumResourceUsage.end   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/resource_usage.py QuantumResourceUsage.from_task_metadata   89% 19 2 0   100% 0 0   89%
python/lsst/pipe/base/resource_usage.py QuantumResourceUsage.get_numpy_fields   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/resource_usage.py QuantumResourceUsage.get_units   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/resource_usage.py QuantumResourceUsage.get_numpy_row   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/resource_usage.py (no function)   100% 30 0 0   100% 0 0   100%
python/lsst/pipe/base/script/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/script/register_instrument.py register_instrument   0% 4 4 0   0% 2 0   0%
python/lsst/pipe/base/script/register_instrument.py (no function)   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/script/retrieve_artifacts_for_quanta.py retrieve_artifacts_for_quanta   0% 7 7 0   100% 0 0   0%
python/lsst/pipe/base/script/retrieve_artifacts_for_quanta.py (no function)   100% 7 0 0   100% 0 0   100%
python/lsst/pipe/base/script/transfer_from_graph.py transfer_from_graph   0% 24 24 0   0% 8 0   0%
python/lsst/pipe/base/script/transfer_from_graph.py _update_chain   0% 13 13 0   0% 4 0   0%
python/lsst/pipe/base/script/transfer_from_graph.py (no function)   100% 10 0 0   100% 0 0   100%
python/lsst/pipe/base/script/utils.py _matches_dataset_type   0% 7 7 0   0% 8 0   0%
python/lsst/pipe/base/script/utils.py filter_by_dataset_type_glob   0% 4 4 0   0% 2 0   0%
python/lsst/pipe/base/script/utils.py filter_by_existence   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/script/utils.py (no function)   100% 12 0 0   100% 0 0   100%
python/lsst/pipe/base/script/zip_from_graph.py zip_from_graph   0% 8 8 0   100% 0 0   0%
python/lsst/pipe/base/script/zip_from_graph.py (no function)   100% 8 0 0   100% 0 0   100%
python/lsst/pipe/base/separable_pipeline_executor.py SeparablePipelineExecutor.__init__   100% 11 0 0   100% 4 0   100%
python/lsst/pipe/base/separable_pipeline_executor.py SeparablePipelineExecutor.pre_execute_qgraph   100% 7 0 0   100% 6 0   100%
python/lsst/pipe/base/separable_pipeline_executor.py SeparablePipelineExecutor.make_pipeline   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/separable_pipeline_executor.py SeparablePipelineExecutor.make_quantum_graph_builder   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/separable_pipeline_executor.py SeparablePipelineExecutor.make_quantum_graph   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/separable_pipeline_executor.py SeparablePipelineExecutor.build_quantum_graph   100% 5 0 0   100% 0 0   100%
python/lsst/pipe/base/separable_pipeline_executor.py SeparablePipelineExecutor.run_pipeline   100% 13 0 0   75% 4 1   94%
python/lsst/pipe/base/separable_pipeline_executor.py (no function)   100% 29 0 0   100% 0 0   100%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.__init__   78% 9 2 0   50% 2 1   73%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.prep_butler   100% 10 0 0   50% 2 1   92%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.from_pipeline_filename   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.from_task_class   67% 9 3 0   50% 6 3   60%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.from_pipeline   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.from_pipeline_graph   70% 10 3 0   33% 6 2   56%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.quantum_graph   100% 3 0 0   50% 2 1   80%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.use_local_butler   97% 38 1 0   83% 24 4   92%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.run   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor.as_generator   100% 11 0 0   75% 4 1   93%
python/lsst/pipe/base/simple_pipeline_executor.py SimplePipelineExecutor._transfer_qg_dimension_records   100% 7 0 0   100% 4 0   100%
python/lsst/pipe/base/simple_pipeline_executor.py (no function)   100% 35 0 0   100% 0 0   100%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor.__init__   91% 23 2 0   70% 10 3   85%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor.execute   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor._execute   92% 12 1 0   75% 4 1   88%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor._execute_with_limited_butler   89% 66 7 0   75% 12 3   87%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor._check_existing_outputs   91% 32 3 0   77% 22 5   85%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor._updated_quantum_inputs   100% 28 0 0   100% 16 0   100%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor._run_quantum   92% 24 2 0   88% 8 1   91%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor._write_metadata   60% 5 2 0   100% 0 0   60%
python/lsst/pipe/base/single_quantum_executor.py SingleQuantumExecutor._should_assume_exists   83% 6 1 0   67% 6 2   75%
python/lsst/pipe/base/single_quantum_executor.py (no function)   100% 34 0 0   100% 0 0   100%
python/lsst/pipe/base/struct.py Struct.__init__   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/struct.py Struct.__safeAdd   100% 5 0 0   100% 4 0   100%
python/lsst/pipe/base/struct.py Struct.getDict   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/struct.py Struct.mergeItems   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/struct.py Struct.copy   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/struct.py Struct.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/struct.py Struct.__repr__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/struct.py (no function)   100% 12 0 0   100% 0 0   100%
python/lsst/pipe/base/task.py Task.__init__   89% 37 4 0   75% 20 5   84%
python/lsst/pipe/base/task.py Task._parentTask   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/task.py Task.emptyMetadata   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/task.py Task.getFullMetadata   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/task.py Task.getFullName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/task.py Task.getName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/task.py Task.getTaskDict   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/task.py Task.makeSubtask   80% 5 1 0   50% 2 1   71%
python/lsst/pipe/base/task.py Task.timer   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/task.py Task.makeField   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/task.py Task._computeFullName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/task.py Task._unpickle_via_factory   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/task.py Task._reduce_kwargs   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/task.py Task.__reduce__   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/task.py (no function)   95% 44 2 2   100% 0 0   95%
python/lsst/pipe/base/taskFactory.py TaskFactory.makeTask   100% 11 0 0   83% 6 1   94%
python/lsst/pipe/base/taskFactory.py (no function)   100% 7 0 4   100% 0 0   100%
python/lsst/pipe/base/testUtils.py makeQuantum   100% 30 0 0   100% 8 0   100%
python/lsst/pipe/base/testUtils.py _checkDimensionsMatch   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/testUtils.py _simplify   100% 9 0 0   100% 6 0   100%
python/lsst/pipe/base/testUtils.py _checkDataIdMultiplicity   100% 5 0 0   100% 6 0   100%
python/lsst/pipe/base/testUtils.py _normalizeDataIds   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/testUtils.py _refFromConnection   84% 19 3 0   75% 4 1   83%
python/lsst/pipe/base/testUtils.py runTestQuantum   100% 9 0 0   100% 2 0   100%
python/lsst/pipe/base/testUtils.py _assertAttributeMatchesConnection   100% 6 0 3   100% 2 0   100%
python/lsst/pipe/base/testUtils.py assertValidOutput   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/testUtils.py assertValidInitOutput   100% 4 0 0   100% 2 0   100%
python/lsst/pipe/base/testUtils.py getInitInputs   100% 7 0 0   100% 2 0   100%
python/lsst/pipe/base/testUtils.py lintConnections   100% 10 0 1   100% 6 0   100%
python/lsst/pipe/base/testUtils.py (no function)   100% 23 0 5   100% 0 0   100%
python/lsst/pipe/base/tests/__init__.py (no function)   100% 0 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.__getstate__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.__setstate__   0% 5 5 0   100% 0 0   0%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.get_datasets   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.isWriteable   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.put   78% 9 2 0   50% 4 2   69%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.get   89% 9 1 0   83% 6 1   87%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.stored_many   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.pruneDatasets   100% 2 0 0   100% 2 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler._datastore   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler._datastore   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.dimensions   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/in_memory_limited_butler.py InMemoryLimitedButler.factory   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/in_memory_limited_butler.py (no function)   100% 27 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitNumericLiteral   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitStringLiteral   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitTimeLiteral   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitUuidLiteral   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitRangeLiteral   67% 3 1 0   50% 2 1   60%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitIdentifier   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitBind   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitUnaryOp   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitBinaryOp   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitIsIn   100% 10 0 0   100% 8 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitParens   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitTupleNode   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitFunctionCall   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitPointNode   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitCircleNode   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitBoxNode   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitPolygonNode   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitRegionNode   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py _DataIdMatchTreeVisitor.visitGlobNode   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py DataIdMatch.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_data_id_match.py DataIdMatch.match   86% 7 1 0   75% 4 1   82%
python/lsst/pipe/base/tests/mocks/_data_id_match.py (no function)   100% 33 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py ForcedFailure.set_config   0% 4 4 0   0% 2 0   0%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py MockAlgorithmError.metadata   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py mock_pipeline_graph   0% 18 18 0   0% 10 0   0%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py BaseTestPipelineTaskConfig.data_id_match   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py BaseTestPipelineTask.__init__   87% 23 3 0   75% 12 3   83%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py BaseTestPipelineTask.runQuantum   82% 34 6 0   75% 24 4   79%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py BaseTestPipelineTask._fail   91% 11 1 0   75% 4 1   87%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py MockPipelineTaskConnections.__init__   0% 23 23 0   0% 16 0   0%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py MockPipelineTaskConnections.getSpatialBoundsConnections   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py MockPipelineTaskConnections.getTemporalBoundsConnections   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py MockPipelineTaskConnections.adjustQuantum   0% 28 28 0   0% 16 0   0%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py DynamicConnectionConfig.make_connection   100% 8 0 0   100% 6 0   100%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py DynamicTestPipelineTaskConnections.__init__   100% 11 0 0   100% 10 0   100%
python/lsst/pipe/base/tests/mocks/_pipeline_task.py (no function)   100% 92 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.__init__   100% 11 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.__enter__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.__exit__   60% 5 2 0   100% 0 0   60%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.close   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.add_task   100% 21 0 0   100% 16 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.make_quantum_graph   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.make_quantum_graph_builder   100% 10 0 0   62% 8 3   83%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.insert_datasets   100% 21 0 1   100% 14 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo._insert_datasets_impl   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py MockRepo.make_single_quantum_executor   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py InMemoryRepo.__init__   89% 9 1 0   50% 6 3   73%
python/lsst/pipe/base/tests/mocks/_repo.py InMemoryRepo._insert_datasets_impl   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py InMemoryRepo.make_limited_butler   100% 5 0 0   75% 4 1   89%
python/lsst/pipe/base/tests/mocks/_repo.py InMemoryRepo.make_single_quantum_executor   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py DirectButlerRepo.__init__   90% 10 1 0   62% 8 3   78%
python/lsst/pipe/base/tests/mocks/_repo.py DirectButlerRepo.make_temporary   100% 4 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_repo.py DirectButlerRepo._insert_datasets_impl   89% 9 1 0   75% 4 1   85%
python/lsst/pipe/base/tests/mocks/_repo.py DirectButlerRepo.make_single_quantum_executor   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/mocks/_repo.py (no function)   100% 45 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py get_mock_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py get_original_name   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py is_mock_name   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.storage_class   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.make_derived   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDataset.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py ConvertedUnmockedDataset.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.model_dump   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.model_dump_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.model_copy   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.model_construct   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.model_json_schema   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.model_validate   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.model_validate_json   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockDatasetQuantum.model_validate_strings   100% 0 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClassDelegate.assemble   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClassDelegate.getComponent   100% 2 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClassDelegate.disassemble   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClassDelegate.handleParameters   75% 4 1 0   50% 2 1   67%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.__init__   83% 6 1 0   50% 2 1   75%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass._get_converters_by_type   100% 0 0 1   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.get_or_register_mock   100% 8 0 0   100% 4 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.allComponents   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.components   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.derivedComponents   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.can_convert   100% 3 0 0   100% 2 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.coerce_type   92% 12 1 0   88% 8 1   90%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.mock_dataset_type   0% 5 5 0   0% 2 0   0%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.mock_dataset_refs   0% 5 5 0   0% 2 0   0%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.unmock_dataset_type   0% 7 7 0   0% 4 0   0%
python/lsst/pipe/base/tests/mocks/_storage_class.py MockStorageClass.unmock_dataset_refs   0% 5 5 0   0% 2 0   0%
python/lsst/pipe/base/tests/mocks/_storage_class.py _monkeypatch_daf_butler   100% 12 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py _monkeypatch_daf_butler.new_get_storage_class   100% 6 0 0   100% 2 0   100%
python/lsst/pipe/base/tests/mocks/_storage_class.py _monkeypatch_daf_butler.new_get_formatter_class_with_match   25% 8 6 0   0% 4 0   17%
python/lsst/pipe/base/tests/mocks/_storage_class.py _monkeypatch_daf_butler.new_get_formatter_with_match   88% 8 1 0   75% 4 1   83%
python/lsst/pipe/base/tests/mocks/_storage_class.py (no function)   100% 78 0 45   100% 0 0   100%
python/lsst/pipe/base/tests/no_dimensions.py NoDimensionsTestConnections.__init__   50% 2 1 0   50% 2 1   50%
python/lsst/pipe/base/tests/no_dimensions.py NoDimensionsTestTask.run   80% 10 2 0   50% 4 2   71%
python/lsst/pipe/base/tests/no_dimensions.py (no function)   100% 21 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/pipelineStepTester.py PipelineStepTester.register_dataset_types   0% 2 2 0   0% 2 0   0%
python/lsst/pipe/base/tests/pipelineStepTester.py PipelineStepTester.run   0% 22 22 2   0% 12 0   0%
python/lsst/pipe/base/tests/pipelineStepTester.py PipelineStepTester.load_pipeline_graph   0% 8 8 0   0% 2 0   0%
python/lsst/pipe/base/tests/pipelineStepTester.py (no function)   0% 18 18 0   100% 0 0   0%
python/lsst/pipe/base/tests/simpleQGraph.py SimpleInstrument.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/simpleQGraph.py SimpleInstrument.getName   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/simpleQGraph.py SimpleInstrument.getRawFormatter   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/simpleQGraph.py SimpleInstrument.register   0% 1 1 0   100% 0 0   0%
python/lsst/pipe/base/tests/simpleQGraph.py AddTask.run   0% 10 10 0   0% 4 0   0%
python/lsst/pipe/base/tests/simpleQGraph.py AddTaskFactoryMock.__init__   0% 2 2 0   100% 0 0   0%
python/lsst/pipe/base/tests/simpleQGraph.py AddTaskFactoryMock.makeTask   0% 3 3 0   100% 0 0   0%
python/lsst/pipe/base/tests/simpleQGraph.py registerDatasetTypes   69% 13 4 0   50% 6 1   63%
python/lsst/pipe/base/tests/simpleQGraph.py makeSimplePipeline   100% 8 0 0   100% 4 0   100%
python/lsst/pipe/base/tests/simpleQGraph.py makeSimpleButler   83% 12 2 0   67% 6 2   78%
python/lsst/pipe/base/tests/simpleQGraph.py populateButler   59% 39 16 0   50% 26 7   55%
python/lsst/pipe/base/tests/simpleQGraph.py makeSimpleQGraph   70% 37 11 0   59% 22 7   66%
python/lsst/pipe/base/tests/simpleQGraph.py (no function)   100% 58 0 2   100% 0 0   100%
python/lsst/pipe/base/tests/util.py check_output_run   100% 20 0 0   100% 12 0   100%
python/lsst/pipe/base/tests/util.py get_output_refs   100% 18 0 0   100% 16 0   100%
python/lsst/pipe/base/tests/util.py patch_deterministic_uuid4   100% 6 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/util.py _deterministic_uuid   100% 1 0 0   100% 0 0   100%
python/lsst/pipe/base/tests/util.py (no function)   100% 13 0 0   100% 0 0   100%
python/lsst/pipe/base/trivial_quantum_graph_builder.py TrivialQuantumGraphBuilder.__init__   100% 7 0 0   50% 2 1   89%
python/lsst/pipe/base/trivial_quantum_graph_builder.py TrivialQuantumGraphBuilder._get_data_id   40% 5 3 0   100% 0 0   40%
python/lsst/pipe/base/trivial_quantum_graph_builder.py TrivialQuantumGraphBuilder.process_subgraph   100% 38 0 0   95% 22 1   98%
python/lsst/pipe/base/trivial_quantum_graph_builder.py (no function)   100% 14 0 2   100% 0 0   100%
python/lsst/pipe/base/utils.py (no function)   100% 9 0 0   100% 0 0   100%
python/lsst/pipe/base/version.py (no function)   100% 5 0 0   100% 0 0   100%
tests/test_adjust_all_quanta.py GroupTestConnections.adjust_all_quanta   100% 15 0 0   100% 12 0   100%
tests/test_adjust_all_quanta.py AdjustAllQuantaTestCase.make_butler   100% 2 0 0   100% 0 0   100%
tests/test_adjust_all_quanta.py AdjustAllQuantaTestCase.test_adjust_all_quanta   100% 23 0 0   100% 0 0   100%
tests/test_adjust_all_quanta.py (no function)   100% 25 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.make_test_repo   100% 14 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.iter_graph_execution   100% 16 0 0   100% 4 0   100%
tests/test_aggregator.py AggregatorTestCase.check_provenance_graph   100% 77 0 0   100% 38 0   100%
tests/test_aggregator.py AggregatorTestCase._expect_all_exist   100% 1 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase._expect_none_exist   100% 1 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase._expect_one_missing   100% 1 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase._expect_successful   100% 17 0 0   100% 10 0   100%
tests/test_aggregator.py AggregatorTestCase._expect_failure   100% 6 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase._expect_blocked   100% 6 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.check_dataset   100% 10 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.check_metadata   100% 15 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.check_log   100% 15 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.check_configs   100% 3 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.check_packages   100% 3 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.check_resource_usage_table   100% 10 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.check_quantum_table   100% 32 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.check_exception_table   100% 5 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.check_report   100% 18 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_all_successful   100% 12 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.test_all_successful_two_phase   100% 16 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.test_some_failed   100% 11 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.test_some_failed_two_phase   100% 12 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.test_retry   100% 17 0 0   100% 6 0   100%
tests/test_aggregator.py AggregatorTestCase.test_promise_ingest_graph   100% 15 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.test_worker_failures   100% 3 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_aggregate_graph_cli_overrides   100% 20 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_aggregate_graph_cli_overrides.mock_run   100% 1 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_aggregate_graph_cli_overrides.check   100% 2 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.check_provenance_report   100% 10 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.check_no_original_dirs   100% 3 0 1   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.test_provenance_report_content   100% 18 0 0   100% 2 0   100%
tests/test_aggregator.py AggregatorTestCase.test_provenance_report_cli_overrides   100% 33 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_provenance_report_cli_overrides.MakeManyReportsArgs._sort_states   100% 2 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_provenance_report_cli_overrides.MockProvenanceQuantumGraph.from_args   100% 1 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_provenance_report_cli_overrides.MockProvenanceQuantumGraph.make_many_reports   100% 2 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_provenance_report_cli_overrides.check   100% 2 0 0   100% 0 0   100%
tests/test_aggregator.py AggregatorTestCase.test_bad_metadata_readable   100% 4 0 0   100% 0 0   100%
tests/test_aggregator.py (no function)   100% 74 0 3   100% 0 0   100%
tests/test_blocking_limited_butler.py BlockingLimitedButlerTestCase.test_no_block_nonexistent   100% 11 0 0   100% 0 0   100%
tests/test_blocking_limited_butler.py BlockingLimitedButlerTestCase.test_timeout_nonexistent   100% 14 0 0   100% 0 0   100%
tests/test_blocking_limited_butler.py BlockingLimitedButlerTestCase.test_no_waiting_if_exists   100% 9 0 0   100% 0 0   100%
tests/test_blocking_limited_butler.py (no function)   100% 12 0 3   100% 0 0   100%
tests/test_caching_limited_butler.py CachingLimitedButlerTestCase.test_init   100% 11 0 0   100% 0 0   100%
tests/test_caching_limited_butler.py (no function)   100% 8 0 3   100% 0 0   100%
tests/test_cliCmdRegisterInstrument.py RegisterInstrumentTest.defaultExpected   100% 1 0 0   100% 0 0   100%
tests/test_cliCmdRegisterInstrument.py RegisterInstrumentTest.command   100% 1 0 0   100% 0 0   100%
tests/test_cliCmdRegisterInstrument.py RegisterInstrumentTest.test_repoBasic   100% 1 0 0   100% 0 0   100%
tests/test_cliCmdRegisterInstrument.py RegisterInstrumentTest.test_missing   100% 2 0 0   100% 0 0   100%
tests/test_cliCmdRegisterInstrument.py (no function)   100% 11 0 2   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.checkSingleFieldOverride   100% 5 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testSimpleValueStr   100% 4 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testSimpleValueBool   100% 11 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testSimpleValueInt   100% 13 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testSimpleValueFloat   100% 10 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testListValueStr   100% 7 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testListValueBool   100% 12 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testListValueInt   100% 12 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testChoiceValueStr   100% 5 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testChoiceValueInt   100% 10 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testSettingVar   100% 9 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testDictValueInt   100% 9 0 0   100% 0 0   100%
tests/test_configOverrides.py ConfigOverridesTestCase.testConfigParameters   100% 17 0 0   100% 0 0   100%
tests/test_configOverrides.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_configOverrides.py (no function)   100% 34 0 3   100% 0 0   100%
tests/test_config_formatter.py PexConfigFormatterTestCase.setUp   100% 6 0 0   100% 0 0   100%
tests/test_config_formatter.py PexConfigFormatterTestCase.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_config_formatter.py PexConfigFormatterTestCase.testPexConfig   100% 6 0 0   100% 0 0   100%
tests/test_config_formatter.py (no function)   100% 13 0 2   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.__init__   100% 2 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.testConnectionsDeclaration   100% 10 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.testConnectionsOnConnectionsClass   100% 16 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.buildTestConnections   100% 11 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.buildTestConnections.TestConnectionsWithTemplate.adjustQuantum   100% 2 0 0   50% 2 1   75%
tests/test_connections.py TestConnectionsClass.testConnectionsInstantiation   100% 5 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.testBuildDatasetRefs   100% 5 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.testAdjustQuantum   100% 5 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.testDimensionCheck   100% 10 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.test_deprecation   100% 16 0 0   100% 0 0   100%
tests/test_connections.py TestConnectionsClass.test_deprecation.TestConnections.__init__   100% 2 0 0   100% 2 0   100%
tests/test_connections.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_connections.py (no function)   100% 18 0 3   100% 0 0   100%
tests/test_dataid_match.py DataIdMatchTestCase.test_strings   100% 4 0 0   100% 2 0   100%
tests/test_dataid_match.py DataIdMatchTestCase.test_comparisons   100% 4 0 0   100% 2 0   100%
tests/test_dataid_match.py DataIdMatchTestCase.test_arith   100% 4 0 0   100% 2 0   100%
tests/test_dataid_match.py DataIdMatchTestCase.test_logical   100% 4 0 0   100% 2 0   100%
tests/test_dataid_match.py DataIdMatchTestCase.test_parens   100% 4 0 0   100% 2 0   100%
tests/test_dataid_match.py DataIdMatchTestCase.test_in   100% 4 0 0   100% 2 0   100%
tests/test_dataid_match.py DataIdMatchTestCase.test_errors   100% 17 0 0   100% 0 0   100%
tests/test_dataid_match.py (no function)   100% 11 0 2   100% 0 0   100%
tests/test_dataset_handle.py NotCopyable.__deepcopy__   100% 1 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.setUpClass   100% 2 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.setUp   100% 2 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.test_dataset_handle_basic   100% 3 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.test_dataset_handle_copy   100% 17 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.test_dataset_handle_unknown   100% 5 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.test_dataset_handle_none   100% 4 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.test_dataset_handle_dataid   100% 14 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.test_dataset_handle_metric   100% 20 0 0   100% 0 0   100%
tests/test_dataset_handle.py TestDatasetHandle.test_handle_conversion   100% 12 0 0   100% 0 0   100%
tests/test_dataset_handle.py (no function)   100% 19 0 2   100% 0 0   100%
tests/test_deferredDatasetRef.py DeferredDatasetRefTestCase.test_checkCopy   100% 6 0 0   100% 0 0   100%
tests/test_deferredDatasetRef.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_deferredDatasetRef.py (no function)   100% 10 0 3   100% 0 0   100%
tests/test_dot_tools.py ExamplePipelineTaskConnections.__init__   100% 5 0 0   100% 4 0   100%
tests/test_dot_tools.py _makeConfig   100% 8 0 0   100% 4 0   100%
tests/test_dot_tools.py _makePipeline   100% 9 0 0   100% 2 0   100%
tests/test_dot_tools.py DotToolsTestCase.test_pipeline2dot   100% 27 0 0   100% 10 0   100%
tests/test_dot_tools.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_dot_tools.py (no function)   100% 22 0 3   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.build_dynamic_connections   100% 8 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.build_dynamic_connections.ExampleConnections.__init__   100% 2 0 0   100% 2 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_freeze_after_construction   100% 8 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_attr_after_construction   100% 3 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_delete_attr_after_construction   100% 3 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_dimensions   100% 10 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_dimensions.callback   100% 2 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_connection_type   100% 7 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_connection_type.callback   100% 1 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_connection_type_twice   100% 8 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_connection_type_twice.callback   100% 2 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_remove_from_set   100% 6 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_remove_from_set.callback   100% 1 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_delete_attr   100% 6 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_delete_attr.callback   100% 3 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_delete_attr_twice   100% 2 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_delete_attr_twice.callback   100% 3 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_connection_type_then_remove_from_set   100% 9 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_connection_type_then_remove_from_set.callback   100% 2 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_connection_type_then_delete_attr   100% 9 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_change_connection_type_then_delete_attr.callback   100% 9 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_add_new_connection   100% 7 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_add_new_connection.callback   100% 5 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_add_and_change_new_connection   100% 8 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_add_and_change_new_connection.callback   100% 10 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_add_and_remove_new_connection   100% 9 0 0   100% 0 0   100%
tests/test_dynamic_connections.py TestDynamicConnectionsClass.test_add_and_remove_new_connection.callback   100% 12 0 0   100% 0 0   100%
tests/test_dynamic_connections.py (no function)   100% 25 0 2   100% 0 0   100%
tests/test_execution_reports.py ExecutionReportsTestCase.test_make_reports   100% 18 0 0   100% 0 0   100%
tests/test_execution_reports.py (no function)   100% 6 0 2   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.setUp   100% 8 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion._make_config   100% 4 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion._make_executor   100% 7 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion._assert_datasets   100% 21 0 0   100% 8 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_no_conversions   100% 4 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_intermediate_registration_differs   100% 5 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_intermediate_producer_differs   100% 5 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_intermediate_consumer_differs   100% 4 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_output_differs   100% 5 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_input_differs   100% 4 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_input_differs_use_local_butler   100% 8 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_incompatible   100% 3 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py TestExecutionStorageClassConversion.test_registry_changed   100% 4 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_execution_storage_class_conversion.py (no function)   100% 29 0 3   100% 0 0   100%
tests/test_graphBuilder.py GraphBuilderTestCase._assertGraph   100% 6 0 0   100% 2 0   100%
tests/test_graphBuilder.py GraphBuilderTestCase.testDefault   100% 11 0 0   100% 0 0   100%
tests/test_graphBuilder.py GraphBuilderTestCase.test_empty_qg   100% 20 0 0   100% 0 0   100%
tests/test_graphBuilder.py GraphBuilderTestCase.testAddInstrumentMismatch   100% 5 0 0   100% 0 0   100%
tests/test_graphBuilder.py GraphBuilderTestCase.testUserQueryBind   100% 8 0 0   100% 0 0   100%
tests/test_graphBuilder.py GraphBuilderTestCase.test_datastore_records   100% 23 0 0   100% 6 0   100%
tests/test_graphBuilder.py SkipExistingInTestCase.setUp   100% 7 0 0   100% 0 0   100%
tests/test_graphBuilder.py SkipExistingInTestCase._insert   100% 3 0 0   100% 2 0   100%
tests/test_graphBuilder.py SkipExistingInTestCase._build   100% 1 0 0   100% 0 0   100%
tests/test_graphBuilder.py SkipExistingInTestCase.test_not_skipped_without_skip_existing_in   100% 3 0 0   100% 0 0   100%
tests/test_graphBuilder.py SkipExistingInTestCase.test_skipped_when_metadata_exists   100% 5 0 0   100% 2 0   100%
tests/test_graphBuilder.py SkipExistingInTestCase.test_not_skipped_when_metadata_absent   100% 2 0 0   100% 0 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase.setUp   100% 9 0 0   100% 0 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase._insert   100% 3 0 0   100% 2 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase._build   100% 1 0 0   100% 0 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase.test_raises_without_skip_existing_in   100% 2 0 0   100% 0 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase.test_ancestor_unskipped_when_output_not_retained   100% 3 0 0   100% 0 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase.test_ancestor_not_unskipped_when_output_retained   100% 6 0 0   100% 2 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase.test_both_skipped_when_both_have_metadata   100% 8 0 0   100% 4 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase.test_unrecognised_pattern_warns   100% 4 0 0   100% 0 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesTestCase.test_no_unskipping_when_all_retained   100% 6 0 0   100% 2 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesThreeTaskTestCase.setUp   100% 11 0 0   100% 0 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesThreeTaskTestCase._insert   100% 3 0 0   100% 2 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesThreeTaskTestCase._build   100% 1 0 0   100% 0 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesThreeTaskTestCase.test_unskipping_stops_at_retained_intermediate   100% 9 0 0   100% 4 0   100%
tests/test_graphBuilder.py RetainedDatasetTypesThreeTaskTestCase.test_full_chain_unskipped_when_none_retained   100% 4 0 0   100% 0 0   100%
tests/test_graphBuilder.py PruneUnanchoredQuantaTestCase.setUp   100% 5 0 0   100% 0 0   100%
tests/test_graphBuilder.py PruneUnanchoredQuantaTestCase._build   100% 1 0 0   100% 0 0   100%
tests/test_graphBuilder.py PruneUnanchoredQuantaTestCase.test_no_effect_without_parameter   100% 2 0 0   100% 0 0   100%
tests/test_graphBuilder.py PruneUnanchoredQuantaTestCase.test_no_pruning_when_anchor_reachable   100% 2 0 0   100% 0 0   100%
tests/test_graphBuilder.py PruneUnanchoredQuantaTestCase.test_all_pruned_when_anchor_label_absent   100% 3 0 0   100% 0 0   100%
tests/test_graphBuilder.py PruneUnanchoredQuantaTestCase.test_noop_when_source_label_absent   100% 2 0 0   100% 0 0   100%
tests/test_graphBuilder.py (no function)   100% 50 0 3   100% 0 0   100%
tests/test_graphSkeleton.py RemoveUnanchoredQuantaTestCase.setUp   100% 10 0 0   100% 4 0   100%
tests/test_graphSkeleton.py RemoveUnanchoredQuantaTestCase.test_remove_unanchored   100% 8 0 0   100% 0 0   100%
tests/test_graphSkeleton.py RemoveUnanchoredQuantaTestCase.test_task_dropped_when_all_unanchored   100% 3 0 0   100% 0 0   100%
tests/test_graphSkeleton.py (no function)   100% 7 0 2   100% 0 0   100%
tests/test_graph_walker.py GraphWalkerTestCase.test_iteration   100% 39 0 0   100% 6 0   100%
tests/test_graph_walker.py (no function)   100% 9 0 0   100% 0 0   100%
tests/test_init_output_run.py _have_example_storage_classes   100% 2 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.make_butler   100% 4 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.prep_butler   100% 10 0 0   100% 2 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.find_init_output_refs   100% 11 0 0   100% 4 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.get_quantum_graph_init_output_refs   100% 5 0 0   100% 2 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.assert_init_output_refs_equal   100% 3 0 0   100% 2 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.check_qbb_consistency   100% 3 0 0   100% 4 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.init_with_pipeline_graph_first   100% 26 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.init_with_quantum_graph_first   100% 25 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.init_with_qbb_first   100% 19 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.test_two_tasks_no_conversions   100% 23 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.test_optional_input_unregistered   100% 12 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.test_registration_changed   100% 12 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.test_init_intermediate_component   100% 21 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.test_no_get_init_input_callback   100% 10 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.test_multiple_init_input_consumers   100% 22 0 0   100% 0 0   100%
tests/test_init_output_run.py InitOutputRunTestCase.test_config_change   100% 14 0 0   100% 0 0   100%
tests/test_init_output_run.py (no function)   100% 35 0 3   100% 0 0   100%
tests/test_instrument.py BaseDummyInstrument.getName   100% 1 0 0   100% 0 0   100%
tests/test_instrument.py BaseDummyInstrument.register   100% 6 0 0   100% 0 0   100%
tests/test_instrument.py BaseDummyInstrument.getRawFormatter   100% 1 0 0   100% 0 0   100%
tests/test_instrument.py NotInstrument.__init__   100% 1 0 0   100% 0 0   100%
tests/test_instrument.py BadInstrument.getName   100% 1 0 0   100% 0 0   100%
tests/test_instrument.py BadInstrument.register   100% 2 0 0   100% 0 0   100%
tests/test_instrument.py UnimportableInstrument.getName   100% 1 0 0   100% 0 0   100%
tests/test_instrument.py UnimportableInstrument.register   100% 2 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.test_basics   100% 5 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.test_register   100% 25 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.test_from_string   100% 10 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.test_defaults   100% 10 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.test_collection_timestamps   100% 10 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.test_dimension_packer_config_defaults   100% 8 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.test_dimension_packer_config_override   100% 12 0 0   100% 0 0   100%
tests/test_instrument.py InstrumentTestCase.check_dimension_packers   100% 23 0 0   100% 4 0   100%
tests/test_instrument.py (no function)   100% 38 0 2   100% 0 0   100%
tests/test_mermaid.py _mockMermaidInit   0% 3 3 0   100% 0 0   0%
tests/test_mermaid.py ExamplePipelineTaskConnections.__init__   100% 14 0 0   83% 18 3   91%
tests/test_mermaid.py _makeConfig   100% 8 0 0   100% 2 0   100%
tests/test_mermaid.py _makePipeline   100% 16 0 0   88% 8 1   96%
tests/test_mermaid.py MermaidTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_mermaid.py MermaidTestCase.validateMermaidSource   100% 17 0 0   100% 0 0   100%
tests/test_mermaid.py MermaidTestCase.test_pipeline2mermaid   100% 4 0 0   100% 2 0   100%
tests/test_mermaid.py MermaidTestCase.test_show_mermaid_source   100% 3 0 0   100% 0 0   100%
tests/test_mermaid.py MermaidTestCase.test_show_mermaid_image   0% 6 6 0   0% 2 0   0%
tests/test_mermaid.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_mermaid.py (no function)   89% 37 4 3   50% 2 1   87%
tests/test_mp_graph_executor.py _count_status   100% 1 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_nomp   100% 18 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_mp   100% 22 0 0   75% 4 1   96%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_nompsupport   100% 8 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_fixup   100% 13 0 0   100% 4 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_fixup_old_qg   100% 13 0 0   100% 4 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_timeout   100% 31 0 0   50% 2 1   97%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_failure   100% 17 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_failure_dep   100% 19 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_failure_dep_nomp   100% 21 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_failure_failfast   100% 18 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_crash   100% 17 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_crash_failfast   100% 17 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py MPGraphExecutorTestCase.test_mpexec_num_fd   100% 12 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_mp_graph_executor.py (no function)   100% 36 0 3   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testTaskDef   100% 7 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testEmpty   100% 2 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testInitial   100% 10 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testModifySubset   100% 34 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testMergingPipelines   100% 6 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testFindingSubset   100% 9 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testParameters   100% 11 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testSerialization   100% 4 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.testStepDefinition   100% 4 0 0   100% 0 0   100%
tests/test_pipeline.py PipelineTestCase.test_excluded_steps   100% 6 0 0   100% 0 0   100%
tests/test_pipeline.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_pipeline.py (no function)   100% 22 0 3   100% 0 0   100%
tests/test_pipelineIR.py ConfigIRTestCase.testMergeConfig   100% 14 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testPipelineIRInitChecks   100% 9 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testTaskParsing   100% 4 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testImportParsing   100% 70 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testSteps   100% 6 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testReadParameters   100% 3 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testTaskParameterLabel   100% 3 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testParameterImporting   100% 3 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testImportingInstrument   100% 12 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testParameterConfigFormatting   100% 4 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testReadContracts   100% 6 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testReadNamedSubsets   100% 13 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testSubsettingPipeline   100% 7 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testInstrument   100% 3 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testReadTaskConfig   100% 14 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testSerialization   100% 6 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testPipelineYamlLoader   100% 2 0 0   100% 0 0   100%
tests/test_pipelineIR.py PipelineIRTestCase.testMultiLineStrings   100% 4 0 0   100% 0 0   100%
tests/test_pipelineIR.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_pipelineIR.py (no function)   100% 29 0 3   100% 0 0   100%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.setUp   89% 9 1 0   75% 4 1   85%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.testLoadList   100% 4 0 0   100% 0 0   100%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.testLoadSingle   100% 4 0 0   100% 0 0   100%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.testLoadBoundedRange   100% 3 0 0   100% 0 0   100%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.testLoadUpperBound   100% 3 0 0   100% 0 0   100%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.testLoadLowerBound   100% 3 0 0   100% 0 0   100%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.testLabelChecks   100% 9 0 0   100% 0 0   100%
tests/test_pipelineLoadSubset.py PipelineLoadSubsetTest.testContractRemoval   100% 6 0 0   100% 0 0   100%
tests/test_pipelineLoadSubset.py (no function)   100% 15 0 2   100% 0 0   100%
tests/test_pipelineTask.py ButlerMock.__init__   100% 2 0 0   100% 0 0   100%
tests/test_pipelineTask.py ButlerMock.get   75% 4 1 0   50% 2 1   67%
tests/test_pipelineTask.py ButlerMock.put   100% 4 0 0   100% 0 0   100%
tests/test_pipelineTask.py AddTask.run   100% 3 0 0   100% 0 0   100%
tests/test_pipelineTask.py AddTask2.runQuantum   100% 4 0 0   100% 0 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase._makeDSRefVisit   100% 4 0 0   100% 0 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase._makeQuanta   100% 5 0 0   100% 2 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase.testRunQuantumFull   100% 1 0 0   100% 0 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase.testRunQuantumLimited   100% 1 0 0   100% 0 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase._testRunQuantum   100% 43 0 0   100% 8 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase.testChain2Full   100% 1 0 0   100% 0 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase.testChain2Limited   100% 1 0 0   100% 0 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase._testChain2   100% 39 0 0   100% 10 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase.testButlerQC   100% 38 0 0   100% 0 0   100%
tests/test_pipelineTask.py PipelineTaskTestCase.test_ExecutionResources   100% 31 0 0   100% 0 0   100%
tests/test_pipelineTask.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_pipelineTask.py (no function)   100% 40 0 3   100% 0 0   100%
tests/test_pipeline_graph.py MockRegistry.__init__   100% 2 0 0   100% 0 0   100%
tests/test_pipeline_graph.py MockRegistry.getDatasetType   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.setUp   100% 18 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_unresolved_accessors   100% 6 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_sorting   100% 3 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_unresolved_xgraph_export   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_unresolved_stream_io   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_unresolved_file_io   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_unresolved_pickle   100% 1 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_unresolved_deferred_import_io   100% 10 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_resolved_accessors   100% 11 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_resolved_xgraph_export   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_resolved_stream_io   100% 10 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_resolved_file_io   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_resolved_pickle   100% 2 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_resolved_deferred_import_io   100% 9 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_unresolved_copies   100% 9 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_resolved_copies   100% 10 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_valid_steps   100% 25 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_valid_steps_resolved_graph   100% 18 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_valid_step_exposure_visit_substitution   100% 14 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_reset_steps   100% 9 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_invalid_steps_repeated_task   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_invalid_steps_missing_task   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_invalid_steps_bad_order   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_invalid_steps_not_a_subset   100% 7 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_invalid_steps_bad_task_dimensions   100% 9 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_invalid_steps_bad_dataset_type_dimensions   100% 11 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.check_base_accessors   100% 39 0 0   100% 6 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.check_sorted   100% 6 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.check_make_xgraph   100% 10 0 0   100% 2 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.check_make_bipartite_xgraph   100% 6 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.check_make_task_xgraph   100% 6 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.check_make_dataset_type_xgraph   100% 6 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.get_expected_task_node   100% 5 0 0   100% 2 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.get_expected_task_init_node   100% 5 0 0   100% 2 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.get_expected_config_node   100% 3 0 0   100% 2 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.get_expected_log_node   100% 3 0 0   100% 2 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.get_expected_metadata_node   100% 3 0 0   100% 2 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.get_expected_connection_node   100% 3 0 0   100% 2 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_construct_with_data_coordinate   100% 14 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_group_by_dimensions   100% 18 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_add_and_remove   100% 34 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_reconfigure   100% 18 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.check_visualization   100% 3 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_unresolved_visualization   100% 2 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_resolved_visualization   100% 3 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.test_select   100% 95 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphTestCase.check_expression   100% 2 0 0   100% 0 0   100%
tests/test_pipeline_graph.py _have_example_storage_classes   100% 2 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.make_graph   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_prerequisite_inconsistency   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_prerequisite_inconsistency_reversed   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_prerequisite_output   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_skypix_missing   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_skypix_inconsistent   100% 6 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_duplicate_outputs   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_component_of_unregistered_parent   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_undefined_component   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_bad_component_storage_class   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_input_storage_class_incompatible_with_registry   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_output_storage_class_incompatible_with_registry   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_input_storage_class_incompatible_with_output   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_ambiguous_storage_class   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_inputs_compatible_with_registry   100% 18 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_output_compatible_with_registry   100% 12 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_inputs_compatible_with_output   100% 17 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_component_resolved_by_input   100% 19 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_component_resolved_by_output   100% 19 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_component_storage_class_converted   100% 19 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_component_resolved_by_registry   100% 13 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_optional_input   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_invalid_dimensions   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py PipelineGraphResolveTestCase.test_invalid_dataset_type_name   100% 5 0 0   100% 0 0   100%
tests/test_pipeline_graph.py (no function)   100% 101 0 3   100% 0 0   100%
tests/test_pipeline_graph_expressions.py PipelineGraphExpressionParserTestCase.test_identifiers   100% 8 0 0   100% 0 0   100%
tests/test_pipeline_graph_expressions.py PipelineGraphExpressionParserTestCase.test_directions   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph_expressions.py PipelineGraphExpressionParserTestCase.test_binary   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph_expressions.py PipelineGraphExpressionParserTestCase.test_not   100% 2 0 0   100% 0 0   100%
tests/test_pipeline_graph_expressions.py PipelineGraphExpressionParserTestCase.test_complex   100% 1 0 0   100% 0 0   100%
tests/test_pipeline_graph_expressions.py PipelineGraphExpressionParserTestCase.test_lex_errors   100% 2 0 0   100% 0 0   100%
tests/test_pipeline_graph_expressions.py PipelineGraphExpressionParserTestCase.test_parser_errors   100% 4 0 0   100% 0 0   100%
tests/test_pipeline_graph_expressions.py (no function)   100% 13 0 3   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.setUp   100% 8 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.check_quantum_graph   100% 83 0 0   100% 32 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.define_partial_read   100% 1 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.check_partial_read   100% 8 0 0   100% 2 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_build   100% 2 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_from_old_quantum_graph   100% 3 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_read_execution_quanta_old_file   100% 9 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_roundtrip_old_quantum_graph   100% 4 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_write_new_as_old   100% 9 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_read_new_as_old   100% 7 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_io   100% 18 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_no_compression_dict   100% 9 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_dot   86% 7 1 0   50% 2 1   78%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_mermaid   100% 3 0 0   100% 0 0   100%
tests/test_predicted_qg.py PredictedQuantumGraphTestCase.test_update_output_run   100% 11 0 0   100% 10 0   100%
tests/test_predicted_qg.py (no function)   100% 34 0 3   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.make_butler   100% 2 0 0   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.tearDown   100% 2 0 0   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.test_one_to_one   100% 12 0 0   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.test_patch_to_hpx_to_global   100% 7 0 0   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.test_patch_to_hpx_to_instrument   100% 7 0 0   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.test_hpx_to_global_dataset_constraint   100% 6 0 0   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.test_hpx_to_global_where_constraint   67% 6 2 0   100% 0 0   67%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase.test_hpx_to_global_data_id_table   100% 7 0 0   100% 0 0   100%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase._make_hpx_pipeline_graph   100% 28 0 0   88% 8 1   97%
tests/test_qg_builder_dimensions.py AllDimensionsQuantumGraphBuilderTestCase._insert_overall_inputs   100% 16 0 1   100% 10 0   100%
tests/test_qg_builder_dimensions.py (no function)   100% 26 0 3   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.setUp   98% 52 1 0   92% 12 1   97%
tests/test_quantumGraph.py QuantumGraphTestCase.setUp._makeDatasetType   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testTaskGraph   100% 5 0 0   100% 2 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testGraph   100% 3 0 0   100% 2 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testGetQuantumNodeByNodeId   100% 6 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testPickle   100% 3 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testInputQuanta   100% 2 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testOutputQuanta   100% 2 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testLength   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testGetQuantaForTask   100% 2 0 0   100% 2 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testGetNumberOfQuantaForTask   100% 2 0 0   100% 2 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testGetNodesForTask   100% 6 0 0   100% 4 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testFindTasksWithInput   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testFindTasksWithOutput   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testTaskWithDSType   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testFindTaskDefByName   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testFindTaskDefByLabel   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testFindQuantaWIthDSType   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testAllDatasetTypes   100% 7 0 0   100% 6 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testSubset   100% 10 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testSubsetToConnected   100% 37 0 0   96% 24 1   98%
tests/test_quantumGraph.py QuantumGraphTestCase.testDetermineOutputsOfQuantumNode   100% 6 0 0   100% 2 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testDetermineConnectionsOfQuantum   100% 7 0 0   100% 2 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testDetermineAnsestorsOfQuantumNode   100% 7 0 0   100% 2 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testFindCycle   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testSaveLoad   100% 36 0 0   100% 6 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testSaveLoadUri   90% 30 3 0   50% 4 2   85%
tests/test_quantumGraph.py QuantumGraphTestCase.testSaveLoadNoRegistryDatasetTypes   100% 7 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testContains   100% 2 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testDimensionUniverseInSave   100% 2 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testUpdateRun   100% 19 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testMetadataPackage   100% 2 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.test_get_task_quanta   100% 3 0 0   100% 2 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.testGetSummary   100% 3 0 0   100% 0 0   100%
tests/test_quantumGraph.py QuantumGraphTestCase.test_get_refs   100% 18 0 0   100% 0 0   100%
tests/test_quantumGraph.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_quantumGraph.py (no function)   100% 89 0 3   100% 0 0   100%
tests/test_quantum_provenance_graph.py QuantumProvenanceGraphTestCase.test_qpg_reports   100% 36 0 0   93% 14 1   98%
tests/test_quantum_provenance_graph.py QuantumProvenanceGraphTestCase.test_aggregate_reports   99% 187 2 0   94% 66 4   98%
tests/test_quantum_provenance_graph.py (no function)   100% 10 0 0   100% 0 0   100%
tests/test_quantum_reports.py ReportsTestCase.test_quantumReport   100% 29 0 0   100% 0 0   100%
tests/test_quantum_reports.py ReportsTestCase.test_report   100% 16 0 0   100% 0 0   100%
tests/test_quantum_reports.py ReportsTestCase.test_json   100% 21 0 0   100% 0 0   100%
tests/test_quantum_reports.py (no function)   100% 7 0 2   100% 0 0   100%
tests/test_quantum_success_caveats.py QuantumSuccessCaveatsTestCase.test_from_adjust_quantum_no_work   100% 3 0 0   100% 0 0   100%
tests/test_quantum_success_caveats.py QuantumSuccessCaveatsTestCase.test_concise   100% 12 0 0   100% 0 0   100%
tests/test_quantum_success_caveats.py (no function)   100% 5 0 2   100% 0 0   100%
tests/test_script_utils.py FilterByExistenceTestCase.setUp   100% 5 0 0   100% 2 0   100%
tests/test_script_utils.py FilterByExistenceTestCase.test_success   100% 8 0 0   100% 0 0   100%
tests/test_script_utils.py (no function)   100% 6 0 2   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.setUp   100% 19 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.build_empty_quantum_graph   100% 4 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.check_provenance_fullgraph   100% 29 0 0   100% 4 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.check_provenance_emptygraph   100% 5 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_old   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_unconnected_old   100% 13 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_unconnected   100% 13 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_empty_old   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_empty   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_register_old   100% 9 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_register   100% 9 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_init_outputs_old   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_init_outputs   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_versions_old   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_pre_execute_qgraph_versions   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_init_badinput   100% 3 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_init_badoutput   100% 3 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_pipeline_full   100% 4 0 0   100% 2 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_pipeline_subset   100% 5 0 0   100% 2 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_nowhere_noskip_noclobber   100% 8 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_noskip_noclobber   100% 6 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_noskip_noclobber_conflict   100% 8 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_nowhere_skipnone_noclobber   100% 8 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_skipnone_noclobber   100% 6 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_nowhere_skiptotal_noclobber   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_skiptotal_noclobber   100% 11 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_skippartial_noclobber   100% 6 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_nowhere_noskip_clobber   100% 8 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_noskip_clobber   100% 6 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_nowhere_noskip_clobber_conflict   100% 11 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_noskip_clobber_conflict   100% 9 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_nowhere_skipnone_clobber   100% 8 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_skipnone_clobber   100% 6 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_skiptotal_clobber   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_nowhere_skiptotal_clobber   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_skippartial_clobber   100% 7 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_retained_forces_upstream_rerun   100% 9 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_retained_metainway   100% 6 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_nowhere_retained_both_skipped   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_noinput   100% 4 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_noinput   100% 4 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_make_quantum_graph_alloutput_skip   100% 17 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_build_quantum_graph_alloutput_skip   100% 17 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_noskip_noclobber_fullgraph   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_noskip_noclobber_fullgraph_old   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_noskip_noclobber_emptygraph_old   100% 8 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_noskip_noclobber_emptygraph   100% 8 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skipnone_noclobber_old   100% 9 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skipnone_noclobber   100% 9 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skiptotal_noclobber_old   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skiptotal_noclobber   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_noskip_clobber_connected_old   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_noskip_clobber_connected   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_noskip_clobber_unconnected_old   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_noskip_clobber_unconnected   100% 13 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skipnone_clobber_old   100% 9 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skipnone_clobber   100% 9 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skiptotal_clobber_connected_old   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skiptotal_clobber_connected   100% 12 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skippartial_clobber_unconnected_old   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorTests.test_run_pipeline_skippartial_clobber_unconnected   100% 10 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorMockTests.setUp   100% 1 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorMockTests.run_base_test   100% 20 0 0   100% 2 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorMockTests.test_no_work_chain_provenance   100% 18 0 0   100% 10 0   100%
tests/test_separable_pipeline_executor.py SeparablePipelineExecutorMockTests.test_failure_block_provenance   100% 22 0 0   100% 10 0   100%
tests/test_separable_pipeline_executor.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_separable_pipeline_executor.py (no function)   100% 90 0 3   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.setUp   100% 8 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_from_task_class   100% 6 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_metadata_input   100% 13 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_optional_intermediate   100% 18 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_optional_input   100% 11 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_from_pipeline_file   100% 3 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_use_local_butler   100% 23 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests._test_pipeline_file   100% 4 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_partial_outputs_success   100% 60 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_no_work_found   100% 50 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_partial_outputs_failure   100% 56 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py SimplePipelineExecutorTests.test_existence_check_skips   100% 15 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_simple_pipeline_executor.py (no function)   100% 28 0 3   100% 0 0   100%
tests/test_single_quantum_executor.py SingleQuantumExecutorTestCase.test_simple_execute   100% 33 0 0   100% 0 0   100%
tests/test_single_quantum_executor.py SingleQuantumExecutorTestCase.test_skip_existing_execute   100% 20 0 0   100% 0 0   100%
tests/test_single_quantum_executor.py SingleQuantumExecutorTestCase.test_clobber_outputs_execute   100% 30 0 0   100% 0 0   100%
tests/test_single_quantum_executor.py (no function)   100% 14 0 2   100% 0 0   100%
tests/test_struct.py StructTestCase.setUp   100% 1 0 0   100% 0 0   100%
tests/test_struct.py StructTestCase.tearDown   100% 1 0 0   100% 0 0   100%
tests/test_struct.py StructTestCase.testInit   100% 4 0 0   100% 2 0   100%
tests/test_struct.py StructTestCase.testInitException   100% 2 0 0   100% 0 0   100%
tests/test_struct.py StructTestCase.testSet   100% 4 0 0   100% 2 0   100%
tests/test_struct.py StructTestCase.testCopy   100% 7 0 0   100% 0 0   100%
tests/test_struct.py StructTestCase.testMergeItems   100% 14 0 0   100% 2 0   100%
tests/test_struct.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_struct.py (no function)   100% 13 0 3   100% 0 0   100%
tests/test_task.py AddTask.run   100% 2 0 0   100% 0 0   100%
tests/test_task.py MultTask.run   100% 2 0 0   100% 0 0   100%
tests/test_task.py AddMultTask.__init__   100% 3 0 0   100% 0 0   100%
tests/test_task.py AddMultTask.run   100% 5 0 0   100% 0 0   100%
tests/test_task.py AddMultTask.failDec   100% 1 0 0   100% 0 0   100%
tests/test_task.py AddMultTask.failCtx   100% 2 0 0   100% 0 0   100%
tests/test_task.py AddTwiceTask.run   100% 2 0 0   100% 0 0   100%
tests/test_task.py TaskTestCase.testBasics   100% 10 0 0   100% 6 0   100%
tests/test_task.py TaskTestCase.testNames   100% 13 0 0   100% 0 0   100%
tests/test_task.py TaskTestCase.testLog   100% 9 0 0   100% 0 0   100%
tests/test_task.py TaskTestCase.testGetFullMetadata   100% 16 0 0   100% 0 0   100%
tests/test_task.py TaskTestCase.testEmptyMetadata   100% 7 0 0   100% 0 0   100%
tests/test_task.py TaskTestCase.testReplace   100% 10 0 0   100% 6 0   100%
tests/test_task.py TaskTestCase.testFail   82% 11 2 0   100% 0 0   82%
tests/test_task.py TaskTestCase.testTimeMethod   94% 34 2 0   88% 8 1   93%
tests/test_task.py TaskTestCase.test_annotate_exception   100% 9 0 0   100% 0 0   100%
tests/test_task.py TaskTestCase.test_annotate_task_exception   100% 13 0 0   100% 0 0   100%
tests/test_task.py TaskTestCase.test_annotate_task_exception.TestError.metadata   100% 1 0 0   100% 0 0   100%
tests/test_task.py TaskTestCase.test_AlgorithmError   100% 4 0 0   100% 0 0   100%
tests/test_task.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_task.py (no function)   100% 57 0 3   100% 0 0   100%
tests/test_task_factory.py mockTaskClass   100% 2 0 0   100% 0 0   100%
tests/test_task_factory.py TaskFactoryTestCase.setUpClass   100% 8 0 0   100% 0 0   100%
tests/test_task_factory.py TaskFactoryTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_task_factory.py TaskFactoryTestCase._alteredConfig   100% 3 0 0   100% 0 0   100%
tests/test_task_factory.py TaskFactoryTestCase._dummyCatalog   100% 1 0 0   100% 0 0   100%
tests/test_task_factory.py TaskFactoryTestCase._tempButler   100% 7 0 0   100% 2 0   100%
tests/test_task_factory.py TaskFactoryTestCase.testDefaultConfigLabel   100% 5 0 0   100% 0 0   100%
tests/test_task_factory.py TaskFactoryTestCase.testAllArgs   100% 7 0 0   100% 0 0   100%
tests/test_task_factory.py (no function)   100% 28 0 4   100% 0 0   100%
tests/test_taskmetadata.py TaskMetadataTestCase.testTaskMetadata   100% 92 0 0   100% 0 0   100%
tests/test_taskmetadata.py TaskMetadataTestCase.testValidation   100% 16 0 0   100% 0 0   100%
tests/test_taskmetadata.py TaskMetadataTestCase.test_nan   100% 4 0 0   100% 0 0   100%
tests/test_taskmetadata.py TaskMetadataTestCase.testDict   100% 20 0 0   100% 0 0   100%
tests/test_taskmetadata.py TaskMetadataTestCase.testNumpy   100% 17 0 0   100% 0 0   100%
tests/test_taskmetadata.py TaskMetadataTestCase.test_get_set_dict   100% 14 0 0   100% 0 0   100%
tests/test_taskmetadata.py (no function)   87% 15 2 2   100% 0 0   87%
tests/test_testUtils.py VisitConnections.__init__   100% 3 0 0   100% 2 0   100%
tests/test_testUtils.py PatchConnections.__init__   100% 3 0 0   100% 2 0   100%
tests/test_testUtils.py VisitTask.__init__   100% 2 0 0   100% 0 0   100%
tests/test_testUtils.py VisitTask.run   100% 3 0 0   100% 0 0   100%
tests/test_testUtils.py PatchTask.__init__   100% 3 0 0   100% 0 0   100%
tests/test_testUtils.py PatchTask.run   75% 4 1 0   50% 2 1   67%
tests/test_testUtils.py SkyPixTask.run   0% 1 1 0   100% 0 0   0%
tests/test_testUtils.py PipelineTaskTestSuite.setUpClass   100% 19 0 0   100% 6 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.tearDownClass   100% 2 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.setUp   100% 2 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite._makeVisitTestData   100% 7 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite._makePatchTestData   100% 9 0 0   100% 2 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testMakeQuantumNoSuchDatatype   100% 7 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testMakeQuantumInvalidDimension   100% 19 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testMakeQuantumMissingMultiple   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testMakeQuantumExtraMultiple   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testMakeQuantumMissingDataId   100% 7 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testMakeQuantumCorruptedDataId   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testRunTestQuantumVisitWithRun   100% 9 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testRunTestQuantumPatchWithRun   100% 10 0 0   100% 2 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testRunTestQuantumVisitMockRun   100% 6 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testRunTestQuantumPatchMockRun   100% 6 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testRunTestQuantumPatchOptionalInput   100% 8 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidOutputPass   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidOutputMissing   100% 8 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidOutputMissing.run   100% 1 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidOutputSingle   100% 8 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidOutputSingle.run   100% 1 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidOutputMultiple   100% 8 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidOutputMultiple.run   100% 1 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidInitOutputPass   100% 4 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidInitOutputMissing   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidInitOutputMissing.BadVisitTask.__init__   100% 2 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidInitOutputSingle   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidInitOutputSingle.BadVisitTask.__init__   100% 2 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidInitOutputMultiple   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testAssertValidInitOutputMultiple.BadPatchTask.__init__   100% 3 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testGetInitInputs   100% 6 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testSkypixHandling   100% 7 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testLintConnectionsOk   100% 3 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testLintConnectionsMissingMultiple   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py PipelineTaskTestSuite.testLintConnectionsExtraMultiple   100% 5 0 0   100% 0 0   100%
tests/test_testUtils.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_testUtils.py (no function)   100% 80 0 3   100% 0 0   100%
tests/test_trivial_qg_builder.py TrivialQuantumGraphBuilderTestCase.test_trivial_qg_builder   100% 35 0 0   100% 0 0   100%
tests/test_trivial_qg_builder.py (no function)   100% 7 0 2   100% 0 0   100%
tests/test_utils.py RegionTimeInfoTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_utils.py RegionTimeInfoTestCase.test_init   100% 6 0 0   100% 0 0   100%
tests/test_utils.py RegionTimeInfoTestCase.test_serialization   100% 4 0 0   100% 0 0   100%
tests/test_utils.py setup_module   100% 1 0 0   100% 0 0   100%
tests/test_utils.py (no function)   100% 13 0 3   100% 0 0   100%
Total     92% 22457 1897 1186   79% 5346 645   89%

No items found using the specified filter.