Coverage report: 75%

Files Functions Classes

coverage.py v7.14.3, created at 2026-06-29 15:33 -0700

      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/images/__init__.py (no function)   100% 13 0 0   100% 0 0   100%
python/lsst/images/__main__.py (no function)   0% 2 2 2   100% 0 0   0%
python/lsst/images/_backgrounds.py BackgroundMap.__init__   75% 4 1 0   50% 2 1   67%
python/lsst/images/_backgrounds.py BackgroundMap.subtracted   67% 3 1 0   50% 2 1   60%
python/lsst/images/_backgrounds.py BackgroundMap.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_backgrounds.py BackgroundMap.__getitem__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_backgrounds.py BackgroundMap.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_backgrounds.py BackgroundMap.get   100% 0 0 4   100% 0 0   100%
python/lsst/images/_backgrounds.py BackgroundMap.copy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_backgrounds.py BackgroundMap.add   80% 5 1 0   50% 4 2   67%
python/lsst/images/_backgrounds.py BackgroundMap.serialize   100% 5 0 0   100% 2 0   100%
python/lsst/images/_backgrounds.py BackgroundMapSerializationModel.deserialize   67% 3 1 0   50% 2 1   60%
python/lsst/images/_backgrounds.py (no function)   100% 37 0 2   100% 0 0   100%
python/lsst/images/_cell_grid.py CellIJ.__add__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_cell_grid.py CellIJ.__sub__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_cell_grid.py CellIJ.from_legacy   0% 1 1 0   100% 0 0   0%
python/lsst/images/_cell_grid.py CellIJ.to_legacy   0% 2 2 0   100% 0 0   0%
python/lsst/images/_cell_grid.py CellIJ.as_tuple   100% 1 0 0   100% 0 0   100%
python/lsst/images/_cell_grid.py CellGrid.grid_size   0% 1 1 0   100% 0 0   0%
python/lsst/images/_cell_grid.py CellGrid.index_of   100% 1 0 0   100% 0 0   100%
python/lsst/images/_cell_grid.py CellGrid.bbox_of   100% 1 0 0   100% 0 0   100%
python/lsst/images/_cell_grid.py CellGrid.from_legacy   0% 5 5 0   0% 2 0   0%
python/lsst/images/_cell_grid.py CellGrid.to_legacy   0% 2 2 0   100% 0 0   0%
python/lsst/images/_cell_grid.py CellGridBounds.subgrid_start   100% 1 0 0   100% 0 0   100%
python/lsst/images/_cell_grid.py CellGridBounds.subgrid_stop   100% 1 0 0   100% 0 0   100%
python/lsst/images/_cell_grid.py CellGridBounds.subgrid_size   100% 1 0 0   100% 0 0   100%
python/lsst/images/_cell_grid.py CellGridBounds.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_cell_grid.py CellGridBounds.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_cell_grid.py CellGridBounds.contains   0% 12 12 0   0% 10 0   0%
python/lsst/images/_cell_grid.py CellGridBounds.intersection   0% 2 2 0   100% 0 0   0%
python/lsst/images/_cell_grid.py CellGridBounds.contains_cell   0% 1 1 0   100% 0 0   0%
python/lsst/images/_cell_grid.py CellGridBounds.missing_boxes   0% 2 2 0   0% 2 0   0%
python/lsst/images/_cell_grid.py CellGridBounds.cell_indices   100% 5 0 0   100% 6 0   100%
python/lsst/images/_cell_grid.py CellGridBounds.__getitem__   92% 12 1 0   50% 2 1   86%
python/lsst/images/_cell_grid.py CellGridBounds.serialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_cell_grid.py CellGridBounds.deserialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_cell_grid.py PatchDefinition.outer_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/_cell_grid.py (no function)   100% 59 0 7   100% 0 0   100%
python/lsst/images/_color_image.py ColorImage.__init__   89% 9 1 0   75% 4 1   85%
python/lsst/images/_color_image.py ColorImage.from_channels   67% 3 1 0   50% 2 1   60%
python/lsst/images/_color_image.py ColorImage.array   100% 1 0 0   100% 0 0   100%
python/lsst/images/_color_image.py ColorImage.red   100% 1 0 0   100% 0 0   100%
python/lsst/images/_color_image.py ColorImage.green   100% 1 0 0   100% 0 0   100%
python/lsst/images/_color_image.py ColorImage.blue   100% 1 0 0   100% 0 0   100%
python/lsst/images/_color_image.py ColorImage.bbox   100% 1 0 0   100% 0 0   100%
python/lsst/images/_color_image.py ColorImage.sky_projection   100% 1 0 0   100% 0 0   100%
python/lsst/images/_color_image.py ColorImage.__getitem__   0% 4 4 0   0% 2 0   0%
python/lsst/images/_color_image.py ColorImage.__setitem__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_color_image.py ColorImage.__str__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_color_image.py ColorImage.__repr__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_color_image.py ColorImage.copy   0% 1 1 0   100% 0 0   0%
python/lsst/images/_color_image.py ColorImage.serialize   100% 5 0 0   100% 0 0   100%
python/lsst/images/_color_image.py ColorImage._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_color_image.py ColorImageSerializationModel.bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/_color_image.py ColorImageSerializationModel.deserialize   86% 7 1 0   50% 2 1   78%
python/lsst/images/_color_image.py (no function)   100% 50 0 0   100% 0 0   100%
python/lsst/images/_concrete_bounds.py IntersectionBoundsSerializationModel.deserialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_concrete_bounds.py _intersect_box   45% 11 6 0   38% 8 1   42%
python/lsst/images/_concrete_bounds.py _intersect_region   45% 11 6 0   38% 8 1   42%
python/lsst/images/_concrete_bounds.py _intersect_cgb   0% 11 11 0   0% 8 0   0%
python/lsst/images/_concrete_bounds.py _intersect_ib   0% 4 4 0   0% 2 0   0%
python/lsst/images/_concrete_bounds.py _intersect_box_box   100% 8 0 0   100% 2 0   100%
python/lsst/images/_concrete_bounds.py _intersect_box_region   100% 1 0 0   100% 0 0   100%
python/lsst/images/_concrete_bounds.py _intersect_region_region   100% 5 0 0   100% 2 0   100%
python/lsst/images/_concrete_bounds.py _intersect_cgb_cgb   0% 7 7 0   0% 2 0   0%
python/lsst/images/_concrete_bounds.py _intersect_box_cgb   0% 9 9 0   0% 6 0   0%
python/lsst/images/_concrete_bounds.py (no function)   100% 23 0 0   100% 0 0   100%
python/lsst/images/_difference_image.py DifferenceImage.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_difference_image.py DifferenceImage._from_visit_image   100% 1 0 0   100% 0 0   100%
python/lsst/images/_difference_image.py DifferenceImage.__getitem__   0% 3 3 0   0% 2 0   0%
python/lsst/images/_difference_image.py DifferenceImage.__str__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_difference_image.py DifferenceImage.__repr__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_difference_image.py DifferenceImage.copy   0% 1 1 0   100% 0 0   0%
python/lsst/images/_difference_image.py DifferenceImage.convert_unit   0% 1 1 0   100% 0 0   0%
python/lsst/images/_difference_image.py DifferenceImage.serialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_difference_image.py DifferenceImage._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_difference_image.py DifferenceImage.from_legacy   0% 3 3 0   0% 2 0   0%
python/lsst/images/_difference_image.py DifferenceImage.to_legacy   0% 3 3 0   0% 2 0   0%
python/lsst/images/_difference_image.py DifferenceImage.read_legacy   0% 6 6 0   0% 4 0   0%
python/lsst/images/_difference_image.py DifferenceImageSerializationModel.deserialize   67% 3 1 0   50% 2 1   60%
python/lsst/images/_difference_image.py DifferenceImageSerializationModel.deserialize_component   0% 3 3 0   0% 2 0   0%
python/lsst/images/_difference_image.py (no function)   100% 46 0 5   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.bbox   100% 0 0 1   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.yx0   0% 1 1 0   100% 0 0   0%
python/lsst/images/_generalized_image.py GeneralizedImage.sky_projection   100% 0 0 1   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.astropy_wcs   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.fits_wcs   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.local   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.absolute   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.metadata   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.metadata   0% 1 1 0   100% 0 0   0%
python/lsst/images/_generalized_image.py GeneralizedImage.__getitem__   67% 3 1 0   50% 2 1   60%
python/lsst/images/_generalized_image.py GeneralizedImage.copy   100% 0 0 1   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.read   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.write   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage.butler_dataset   75% 4 1 0   50% 2 1   67%
python/lsst/images/_generalized_image.py GeneralizedImage.butler_provenance   75% 4 1 0   50% 2 1   67%
python/lsst/images/_generalized_image.py GeneralizedImage._transfer_metadata   100% 11 0 0   100% 4 0   100%
python/lsst/images/_generalized_image.py GeneralizedImage._finish_deserialize   100% 3 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py LocalSliceProxy.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py LocalSliceProxy.__getitem__   33% 6 4 0   0% 2 0   25%
python/lsst/images/_generalized_image.py AbsoluteSliceProxy.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_generalized_image.py AbsoluteSliceProxy.__getitem__   50% 6 3 0   0% 2 0   38%
python/lsst/images/_generalized_image.py (no function)   100% 55 0 2   100% 0 0   100%
python/lsst/images/_geom.py YX.xy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py YX.map   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py YX.to_legacy_extent   0% 2 2 0   100% 0 0   0%
python/lsst/images/_geom.py YX.to_legacy_point   0% 2 2 0   100% 0 0   0%
python/lsst/images/_geom.py XY.yx   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py XY.map   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py XY.to_legacy_extent   0% 2 2 0   100% 0 0   0%
python/lsst/images/_geom.py XY.to_legacy_point   0% 2 2 0   100% 0 0   0%
python/lsst/images/_geom.py Interval.__init__   100% 4 0 0   100% 2 0   100%
python/lsst/images/_geom.py Interval.hull   100% 11 0 0   100% 6 0   100%
python/lsst/images/_geom.py Interval.from_size   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.min   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.max   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.start   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.stop   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.size   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.range   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.arange   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.absolute   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.local   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.linspace   100% 7 0 0   100% 6 0   100%
python/lsst/images/_geom.py Interval.center   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.padded   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.__eq__   100% 3 0 0   100% 2 0   100%
python/lsst/images/_geom.py Interval.__add__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.__sub__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.__contains__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Interval.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Interval.contains   100% 6 0 0   100% 4 0   100%
python/lsst/images/_geom.py Interval.intersection   100% 5 0 0   100% 2 0   100%
python/lsst/images/_geom.py Interval.dilated_by   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.slice_within   100% 3 0 0   100% 2 0   100%
python/lsst/images/_geom.py Interval.from_legacy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.to_legacy   100% 2 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.__reduce__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.__get_pydantic_core_schema__   100% 2 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval.__get_pydantic_json_schema__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_geom.py Interval._validate   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Interval._serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py IntervalSliceFactory.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/images/_geom.py IntervalSliceFactory.__getitem__   96% 23 1 0   94% 18 1   95%
python/lsst/images/_geom.py Box.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.from_shape   100% 17 0 0   100% 10 0   100%
python/lsst/images/_geom.py Box.from_float_bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.min   0% 1 1 0   100% 0 0   0%
python/lsst/images/_geom.py Box.max   0% 1 1 0   100% 0 0   0%
python/lsst/images/_geom.py Box.start   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.stop   0% 1 1 0   100% 0 0   0%
python/lsst/images/_geom.py Box.shape   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.x   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.y   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.absolute   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.local   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.meshgrid   100% 18 0 0   100% 10 0   100%
python/lsst/images/_geom.py Box.padded   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.__eq__   100% 3 0 0   100% 2 0   100%
python/lsst/images/_geom.py Box.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Box.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Box.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Box.contains   100% 10 0 0   100% 8 0   100%
python/lsst/images/_geom.py Box.intersection   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Box.intersection   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Box.intersection   100% 2 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.dilated_by   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.slice_within   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.bbox   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.boundary   83% 6 1 0   50% 2 1   75%
python/lsst/images/_geom.py Box.__reduce__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.from_legacy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.to_legacy   100% 2 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.__get_pydantic_core_schema__   100% 2 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.__get_pydantic_json_schema__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box._validate   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box._serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py Box.deserialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_geom.py BoxSliceFactory.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/images/_geom.py BoxSliceFactory.__getitem__   100% 7 0 0   100% 4 0   100%
python/lsst/images/_geom.py Bounds.bbox   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Bounds.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Bounds.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_geom.py Bounds.contains   0% 1 1 0   100% 0 0   0%
python/lsst/images/_geom.py Bounds.intersection   0% 1 1 0   100% 0 0   0%
python/lsst/images/_geom.py Bounds.serialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_geom.py (no function)   100% 166 0 8   100% 0 0   100%
python/lsst/images/_image.py Image.__init__   100% 22 0 0   100% 16 0   100%
python/lsst/images/_image.py Image.array   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.array   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.quantity   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.quantity   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.bbox   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.sky_projection   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.__getitem__   100% 5 0 0   100% 2 0   100%
python/lsst/images/_image.py Image.__setitem__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.__eq__   100% 3 0 0   100% 2 0   100%
python/lsst/images/_image.py Image.copy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.view   86% 7 1 0   50% 6 3   69%
python/lsst/images/_image.py Image.serialize   100% 7 0 0   100% 2 0   100%
python/lsst/images/_image.py Image.serialize._update_header   100% 11 0 0   88% 8 1   95%
python/lsst/images/_image.py Image._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_image.py Image.from_legacy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.to_legacy   60% 10 4 0   33% 6 2   50%
python/lsst/images/_image.py Image.from_hdu_list   100% 5 0 0   100% 0 0   100%
python/lsst/images/_image.py Image.read_legacy   0% 14 14 0   0% 2 0   0%
python/lsst/images/_image.py Image._read_legacy_hdu   74% 35 9 0   50% 14 3   67%
python/lsst/images/_image.py ImageSerializationModel.bbox   100% 6 0 0   75% 4 1   90%
python/lsst/images/_image.py ImageSerializationModel.deserialize   92% 12 1 0   75% 4 1   88%
python/lsst/images/_image.py ImageSerializationModel.deserialize._strip_header   100% 4 0 0   100% 2 0   100%
python/lsst/images/_image.py ImageSerializationModel.deserialize_component   0% 3 3 0   0% 2 0   0%
python/lsst/images/_image.py (no function)   100% 71 0 5   100% 0 0   100%
python/lsst/images/_intersection_bounds.py IntersectionBounds.__init__   0% 2 2 0   100% 0 0   0%
python/lsst/images/_intersection_bounds.py IntersectionBounds.bbox   0% 2 2 0   100% 0 0   0%
python/lsst/images/_intersection_bounds.py IntersectionBounds.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_intersection_bounds.py IntersectionBounds.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_intersection_bounds.py IntersectionBounds.contains   0% 1 1 0   100% 0 0   0%
python/lsst/images/_intersection_bounds.py IntersectionBounds.intersection   0% 2 2 0   100% 0 0   0%
python/lsst/images/_intersection_bounds.py IntersectionBounds.serialize   0% 2 2 0   100% 0 0   0%
python/lsst/images/_intersection_bounds.py (no function)   100% 14 0 2   100% 0 0   100%
python/lsst/images/_mask.py MaskPlane.read_legacy   100% 7 0 0   100% 6 0   100%
python/lsst/images/_mask.py MaskPlaneBit.compute   100% 2 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.bits_per_element   100% 8 0 0   100% 4 0   100%
python/lsst/images/_mask.py MaskSchema.__iter__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.__len__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.__contains__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.__getitem__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/images/_mask.py MaskSchema.dtype   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.mask_size   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.names   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.descriptions   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.bit   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSchema.bitmask   100% 5 0 0   100% 2 0   100%
python/lsst/images/_mask.py MaskSchema.split   93% 15 1 0   80% 10 2   88%
python/lsst/images/_mask.py MaskSchema.update_header   88% 8 1 0   83% 6 1   86%
python/lsst/images/_mask.py MaskSchema.strip_header   100% 5 0 0   75% 4 1   89%
python/lsst/images/_mask.py MaskSchema.from_fits_header   100% 9 0 0   100% 6 0   100%
python/lsst/images/_mask.py Mask.__init__   100% 22 0 0   100% 16 0   100%
python/lsst/images/_mask.py Mask.array   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.array   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.schema   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.bbox   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.sky_projection   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.__getitem__   100% 4 0 0   100% 2 0   100%
python/lsst/images/_mask.py Mask.__setitem__   100% 3 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.__eq__   100% 3 0 0   100% 2 0   100%
python/lsst/images/_mask.py Mask.copy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.view   67% 9 3 0   38% 8 3   53%
python/lsst/images/_mask.py Mask.update   45% 11 6 0   75% 4 1   53%
python/lsst/images/_mask.py Mask.get   100% 2 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.set   100% 4 0 0   50% 2 1   83%
python/lsst/images/_mask.py Mask.clear   50% 6 3 0   50% 4 2   50%
python/lsst/images/_mask.py Mask.add_plane   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask.add_planes   100% 16 0 0   100% 8 0   100%
python/lsst/images/_mask.py Mask.serialize   88% 17 2 0   75% 8 2   84%
python/lsst/images/_mask.py Mask._serialize_2d   100% 3 0 0   100% 0 0   100%
python/lsst/images/_mask.py Mask._serialize_2d._update_header   100% 7 0 0   83% 6 1   92%
python/lsst/images/_mask.py Mask._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_mask.py Mask.from_legacy   0% 1 1 0   100% 0 0   0%
python/lsst/images/_mask.py Mask.to_legacy   92% 13 1 0   62% 8 3   81%
python/lsst/images/_mask.py Mask._from_legacy_array   82% 17 3 0   75% 12 3   79%
python/lsst/images/_mask.py Mask.read_legacy   0% 7 7 0   100% 0 0   0%
python/lsst/images/_mask.py Mask._read_legacy_hdu   81% 31 6 0   75% 12 3   79%
python/lsst/images/_mask.py MaskSerializationModel.bbox   100% 4 0 0   100% 2 0   100%
python/lsst/images/_mask.py MaskSerializationModel.deserialize   88% 24 3 0   75% 12 3   83%
python/lsst/images/_mask.py MaskSerializationModel.deserialize.strip_header_and_legacy_planes   100% 2 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSerializationModel._deserialize_2d   100% 3 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSerializationModel._deserialize_2d._strip_header   100% 3 0 0   100% 0 0   100%
python/lsst/images/_mask.py MaskSerializationModel.deserialize_component   0% 3 3 0   0% 2 0   0%
python/lsst/images/_mask.py _archive_prefers_native_mask_arrays   100% 6 0 0   100% 4 0   100%
python/lsst/images/_mask.py get_legacy_visit_image_mask_planes   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py get_legacy_difference_image_mask_planes   0% 6 6 0   100% 0 0   0%
python/lsst/images/_mask.py get_legacy_deep_coadd_mask_planes   100% 1 0 0   100% 0 0   100%
python/lsst/images/_mask.py get_legacy_non_cell_coadd_mask_planes   100% 9 0 0   100% 0 0   100%
python/lsst/images/_mask.py _guess_legacy_plane_map   86% 7 1 0   83% 6 1   85%
python/lsst/images/_mask.py _reindex_legacy_plane_cards   100% 7 0 0   100% 4 0   100%
python/lsst/images/_mask.py _strip_legacy_plane_cards   100% 2 0 0   100% 2 0   100%
python/lsst/images/_mask.py (no function)   100% 125 0 5   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.__init__   96% 28 1 0   95% 22 1   96%
python/lsst/images/_masked_image.py MaskedImage.image   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.mask   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.mask   80% 5 1 0   75% 4 1   78%
python/lsst/images/_masked_image.py MaskedImage.variance   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.bbox   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.sky_projection   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.__getitem__   100% 4 0 0   100% 2 0   100%
python/lsst/images/_masked_image.py MaskedImage.__setitem__   100% 3 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.copy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage._serialize_impl   100% 5 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_masked_image.py MaskedImage.from_legacy   0% 1 1 0   100% 0 0   0%
python/lsst/images/_masked_image.py MaskedImage.to_legacy   100% 2 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImage.from_hdu_list   100% 14 0 0   100% 4 0   100%
python/lsst/images/_masked_image.py MaskedImage.read_legacy   0% 3 3 0   100% 0 0   0%
python/lsst/images/_masked_image.py MaskedImage._read_legacy_hdus   0% 28 28 0   0% 18 0   0%
python/lsst/images/_masked_image.py MaskedImage._fill_legacy_metadata   0% 10 10 0   0% 6 0   0%
python/lsst/images/_masked_image.py MaskedImageSerializationModel.bbox   100% 1 0 0   100% 0 0   100%
python/lsst/images/_masked_image.py MaskedImageSerializationModel.deserialize   86% 7 1 0   50% 2 1   78%
python/lsst/images/_masked_image.py MaskedImageSerializationModel.deserialize_component   67% 3 1 0   50% 2 1   60%
python/lsst/images/_masked_image.py (no function)   100% 69 0 5   100% 0 0   100%
python/lsst/images/_observation_summary_stats.py _default_corners   100% 1 0 0   100% 0 0   100%
python/lsst/images/_observation_summary_stats.py ObservationSummaryStats.__eq__   79% 14 3 0   79% 14 3   79%
python/lsst/images/_observation_summary_stats.py ObservationSummaryStats.from_legacy   0% 2 2 0   100% 0 0   0%
python/lsst/images/_observation_summary_stats.py ObservationSummaryStats.to_legacy   0% 8 8 1   0% 4 0   0%
python/lsst/images/_observation_summary_stats.py (no function)   100% 67 0 5   100% 0 0   100%
python/lsst/images/_polygon.py Region.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.area   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.bbox   100% 2 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.wkt   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.from_wkt   75% 4 1 0   50% 2 1   67%
python/lsst/images/_polygon.py Region.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.__eq__   100% 3 0 0   100% 2 0   100%
python/lsst/images/_polygon.py Region.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_polygon.py Region.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_polygon.py Region.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_polygon.py Region.contains   100% 1 0 0   50% 2 1   67%
python/lsst/images/_polygon.py Region.contains   71% 7 2 0   67% 6 2   69%
python/lsst/images/_polygon.py Region.intersection   100% 2 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.union   100% 3 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.difference   100% 3 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Region.try_to_polygon   86% 7 1 0   75% 4 1   82%
python/lsst/images/_polygon.py Region.try_to_box   100% 3 0 0   100% 2 0   100%
python/lsst/images/_polygon.py Region.to_shapely   0% 1 1 0   100% 0 0   0%
python/lsst/images/_polygon.py Region.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Polygon.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Polygon.from_box   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Polygon.n_vertices   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Polygon.x_vertices   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Polygon.y_vertices   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Polygon.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_polygon.py Polygon.from_legacy   100% 7 0 0   100% 2 0   100%
python/lsst/images/_polygon.py Polygon.to_legacy   100% 3 0 0   100% 0 0   100%
python/lsst/images/_polygon.py RegionSerializationModel.deserialize   100% 3 0 0   100% 0 0   100%
python/lsst/images/_polygon.py (no function)   100% 52 0 5   100% 0 0   100%
python/lsst/images/_transforms/__init__.py (no function)   100% 5 0 0   100% 0 0   100%
python/lsst/images/_transforms/_ast.py StringStream.__init__   0% 5 5 0   0% 4 0   0%
python/lsst/images/_transforms/_ast.py StringStream.astsource   0% 3 3 0   0% 2 0   0%
python/lsst/images/_transforms/_ast.py StringStream.astsink   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py StringStream.to_string   0% 3 3 0   0% 2 0   0%
python/lsst/images/_transforms/_ast.py StringStream.getSinkData   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Object.__init__   0% 3 3 0   0% 2 0   0%
python/lsst/images/_transforms/_ast.py Object.show   0% 5 5 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Object.__eq__   0% 5 5 0   0% 4 0   0%
python/lsst/images/_transforms/_ast.py Object.fromString   0% 3 3 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Object._wrap   0% 4 4 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Object._most_derived_type   0% 4 4 0   0% 4 0   0%
python/lsst/images/_transforms/_ast.py Mapping.simplified   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Mapping.applyForward   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Mapping.applyInverse   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Mapping.then   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Mapping.inverted   0% 3 3 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Mapping.linearApprox   0% 6 6 0   0% 2 0   0%
python/lsst/images/_transforms/_ast.py UnitMap.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py ShiftMap.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py CmpMap.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py ZoomMap.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py PolyMap.__init__   0% 6 6 0   0% 2 0   0%
python/lsst/images/_transforms/_ast.py Frame.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Frame.ident   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Frame.domain   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Frame.domain   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Frame.setUnit   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Frame.getUnit   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Frame.setLabel   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Frame.getBottom   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Frame.getTop   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py SkyFrame.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py CmpFrame.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.nFrame   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.base   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.base   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.current   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.current   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.addFrame   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.getFrame   0% 4 4 0   0% 2 0   0%
python/lsst/images/_transforms/_ast.py FrameSet.getMapping   0% 5 5 0   0% 4 0   0%
python/lsst/images/_transforms/_ast.py FrameDict.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FitsChan.__init__   0% 3 3 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FitsChan.read   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FitsChan.write   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FitsChan.setFitsI   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py FitsChan.__iter__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Channel.__init__   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py Channel.write   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_ast.py (no function)   9% 103 94 3   50% 2 1   10%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.__init__   82% 22 4 0   75% 12 3   79%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.instrument   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.focal_plane   0% 3 3 0   0% 2 0   0%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.field_angle   0% 3 3 0   0% 2 0   0%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.detector   71% 7 2 0   100% 0 0   71%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.__contains__   0% 5 5 0   100% 0 0   0%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.__getitem__   0% 4 4 0   100% 0 0   0%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet._parse_frame_arg   0% 15 15 0   0% 6 0   0%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSet.from_legacy   0% 3 3 0   100% 0 0   0%
python/lsst/images/_transforms/_camera_frame_set.py CameraFrameSetSerializationModel.deserialize   67% 3 1 0   50% 2 1   60%
python/lsst/images/_transforms/_camera_frame_set.py (no function)   100% 36 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frame_set.py FrameSet.__contains__   100% 0 0 1   100% 0 0   100%
python/lsst/images/_transforms/_frame_set.py FrameSet.__getitem__   100% 0 0 1   100% 0 0   100%
python/lsst/images/_transforms/_frame_set.py FrameSet.get   0% 4 4 0   100% 0 0   0%
python/lsst/images/_transforms/_frame_set.py (no function)   100% 12 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py Frame.unit   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py Frame.standardize_x   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py Frame.standardize_y   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py Frame.serialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py Frame._ast_ident   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py DetectorFrame.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py DetectorFrame.standardize_x   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py DetectorFrame.standardize_y   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py DetectorFrame.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py DetectorFrame.deserialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py DetectorFrame._ast_ident   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py FocalPlaneFrame.standardize_x   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FocalPlaneFrame.standardize_y   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FocalPlaneFrame.serialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FocalPlaneFrame.deserialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FocalPlaneFrame._ast_ident   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FieldAngleFrame.unit   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FieldAngleFrame.standardize_x   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FieldAngleFrame.standardize_y   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FieldAngleFrame.serialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FieldAngleFrame.deserialize   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py FieldAngleFrame._ast_ident   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py TractFrame.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py TractFrame.standardize_x   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py TractFrame.standardize_y   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py TractFrame.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py TractFrame.deserialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py TractFrame._ast_ident   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py GeneralFrame.standardize_x   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py GeneralFrame.standardize_y   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py GeneralFrame.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py GeneralFrame.deserialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py GeneralFrame._ast_ident   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py SkyFrame.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py SkyFrame.standardize_x   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py SkyFrame.standardize_y   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py SkyFrame.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py SkyFrame.deserialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py SkyFrame._ast_ident   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_frames.py _camera_ast_ident   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py _wrap_positive   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py _wrap_symmetric   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_frames.py (no function)   100% 98 0 0   100% 0 0   100%
python/lsst/images/_transforms/_sky_projection.py _set_ast_skyframe_system   67% 3 1 0   50% 2 1   60%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.__init__   100% 6 0 0   100% 4 0   100%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.__eq__   100% 7 0 0   100% 6 0   100%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.from_fits_wcs   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.from_ast_frame_set   80% 5 1 0   50% 2 1   71%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.pixel_frame   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.sky_frame   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.pixel_bounds   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.pixel_to_sky_transform   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.sky_to_pixel_transform   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.fits_approximation   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.show   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.pixel_to_sky   0% 2 2 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.sky_to_pixel   0% 5 5 0   0% 2 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.as_astropy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.as_fits_wcs   67% 3 1 0   50% 2 1   60%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.serialize   100% 3 0 0   100% 0 0   100%
python/lsst/images/_transforms/_sky_projection.py SkyProjection._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.from_legacy   0% 4 4 0   0% 2 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjection.to_legacy   0% 10 10 0   0% 2 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.__init__   100% 4 0 0   50% 2 1   83%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.low_level_wcs   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.array_shape   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.axis_correlation_matrix   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.pixel_axis_names   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.pixel_bounds   0% 3 3 0   0% 2 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.pixel_n_dim   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.pixel_shape   0% 2 2 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.serialized_classes   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.world_axis_names   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.world_axis_object_classes   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.world_axis_object_components   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.world_axis_physical_types   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.world_axis_units   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.world_n_dim   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.pixel_to_world_values   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionAstropyView.world_to_pixel_values   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_sky_projection.py SkyProjectionSerializationModel.deserialize   80% 5 1 0   50% 2 1   71%
python/lsst/images/_transforms/_sky_projection.py (no function)   100% 90 0 5   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.__init__   100% 6 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.__eq__   100% 17 0 0   100% 16 0   100%
python/lsst/images/_transforms/_transform.py Transform.from_fits_wcs   100% 5 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.identity   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.in_frame   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.out_frame   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.in_bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.out_bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.show   0% 6 6 0   0% 4 0   0%
python/lsst/images/_transforms/_transform.py Transform.apply_forward   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.apply_inverse   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.apply_forward_q   100% 2 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.apply_inverse_q   100% 2 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.decompose   60% 5 2 0   50% 4 2   56%
python/lsst/images/_transforms/_transform.py Transform.inverted   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py Transform.then   0% 4 4 0   0% 2 0   0%
python/lsst/images/_transforms/_transform.py Transform.as_fits_wcs   100% 11 0 0   100% 2 0   100%
python/lsst/images/_transforms/_transform.py Transform.serialize   50% 16 8 0   12% 8 1   38%
python/lsst/images/_transforms/_transform.py Transform._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_transform.py Transform.from_legacy   0% 1 1 0   100% 0 0   0%
python/lsst/images/_transforms/_transform.py Transform.to_legacy   0% 2 2 0   100% 0 0   0%
python/lsst/images/_transforms/_transform.py Transform._get_ast_frame_set   100% 3 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py _ast_apply   100% 3 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py _prepend_ast_shift   100% 4 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py _make_ast_frame   100% 10 0 0   75% 4 1   93%
python/lsst/images/_transforms/_transform.py _standardize_xy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_transforms/_transform.py TransformSerializationModel.deserialize   65% 23 8 0   57% 14 6   62%
python/lsst/images/_transforms/_transform.py (no function)   100% 65 0 5   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.__init__   92% 26 2 0   88% 16 2   90%
python/lsst/images/_visit_image.py VisitImage.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.sky_projection   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.obs_info   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.physical_filter   100% 2 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.band   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.astropy_wcs   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.summary_stats   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.photometric_scaling   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.photometric_scaling   0% 3 3 0   0% 2 0   0%
python/lsst/images/_visit_image.py VisitImage.psf   67% 3 1 0   50% 2 1   60%
python/lsst/images/_visit_image.py VisitImage.detector   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.aperture_corrections   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.backgrounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.__getitem__   100% 4 0 0   100% 2 0   100%
python/lsst/images/_visit_image.py VisitImage.__str__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.copy   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage.convert_unit   0% 33 33 0   0% 22 0   0%
python/lsst/images/_visit_image.py VisitImage.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/_visit_image.py VisitImage._serialize_impl   80% 20 4 0   50% 6 3   73%
python/lsst/images/_visit_image.py VisitImage._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/_visit_image.py VisitImage.from_legacy   0% 46 46 0   0% 16 0   0%
python/lsst/images/_visit_image.py VisitImage.to_legacy   0% 27 27 0   0% 12 0   0%
python/lsst/images/_visit_image.py VisitImage.read_legacy   0% 75 75 0   0% 46 0   0%
python/lsst/images/_visit_image.py VisitImageSerializationModel.deserialize   73% 11 3 0   50% 2 1   69%
python/lsst/images/_visit_image.py VisitImageSerializationModel.deserialize_component   80% 5 1 0   75% 4 1   78%
python/lsst/images/_visit_image.py _obs_info_from_md   0% 11 11 0   0% 2 0   0%
python/lsst/images/_visit_image.py _update_obs_info_from_legacy   0% 17 17 0   0% 12 0   0%
python/lsst/images/_visit_image.py _reconcile_detector_serial   0% 3 3 0   0% 2 0   0%
python/lsst/images/_visit_image.py _extract_or_check_value   0% 11 11 0   0% 12 0   0%
python/lsst/images/_visit_image.py _extract_or_check_header   0% 4 4 0   0% 2 0   0%
python/lsst/images/_visit_image.py _get_unit_conversion_factor   0% 4 4 0   100% 0 0   0%
python/lsst/images/_visit_image.py (no function)   100% 101 0 11   100% 0 0   100%
python/lsst/images/aperture_corrections.py aperture_corrections_from_legacy   0% 1 1 0   100% 0 0   0%
python/lsst/images/aperture_corrections.py aperture_corrections_to_legacy   0% 5 5 0   0% 2 0   0%
python/lsst/images/aperture_corrections.py ApertureCorrectionMapSerializationModel.serialize   100% 4 0 0   100% 2 0   100%
python/lsst/images/aperture_corrections.py ApertureCorrectionMapSerializationModel.deserialize   67% 3 1 0   50% 2 1   60%
python/lsst/images/aperture_corrections.py (no function)   100% 19 0 5   100% 0 0   100%
python/lsst/images/cameras.py DetectorType.to_legacy   0% 2 2 0   100% 0 0   0%
python/lsst/images/cameras.py DetectorType.from_legacy   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Orientation.to_legacy   0% 3 3 0   100% 0 0   0%
python/lsst/images/cameras.py Orientation.from_legacy   0% 3 3 0   100% 0 0   0%
python/lsst/images/cameras.py ReadoutCorner.to_legacy   0% 2 2 0   100% 0 0   0%
python/lsst/images/cameras.py ReadoutCorner.from_legacy   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py ReadoutCorner.as_flips   100% 1 0 0   100% 0 0   100%
python/lsst/images/cameras.py ReadoutCorner.from_flips   90% 10 1 0   88% 8 1   89%
python/lsst/images/cameras.py ReadoutCorner.apply_flips   100% 2 0 0   100% 0 0   100%
python/lsst/images/cameras.py AmplifierRawGeometry.horizontal_overscan_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierRawGeometry.horizontal_overscan_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierRawGeometry.vertical_overscan_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierRawGeometry.vertical_overscan_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierRawGeometry.horizontal_prescan_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierRawGeometry.horizontal_prescan_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierRawGeometry.serial_prescan_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierRawGeometry.serial_prescan_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierRawGeometry.from_legacy_amplifier   0% 2 2 0   100% 0 0   0%
python/lsst/images/cameras.py AmplifierCalibrations.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/images/cameras.py AmplifierCalibrations.from_legacy_amplifier   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Amplifier.to_legacy_builder   0% 27 27 0   0% 8 0   0%
python/lsst/images/cameras.py Amplifier.from_legacy   0% 4 4 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.__init__   100% 4 0 0   100% 0 0   100%
python/lsst/images/cameras.py Detector.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/images/cameras.py Detector.instrument   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.visit   100% 1 0 0   100% 0 0   100%
python/lsst/images/cameras.py Detector.name   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.id   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.type   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.serial   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.orientation   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.pixel_size   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.physical_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.frame   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.to_focal_plane   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.to_field_angle   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.amplifiers   100% 1 0 0   100% 0 0   100%
python/lsst/images/cameras.py Detector.copy   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/cameras.py Detector._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/cameras.py Detector.to_legacy   0% 25 25 0   0% 4 0   0%
python/lsst/images/cameras.py Detector.from_legacy   0% 7 7 0   0% 2 0   0%
python/lsst/images/cameras.py DetectorSerializationModel.deserialize   71% 7 2 0   50% 6 3   62%
python/lsst/images/cameras.py (no function)   100% 157 0 13   100% 0 0   100%
python/lsst/images/cells/__init__.py (no function)   100% 5 0 0   100% 0 0   100%
python/lsst/images/cells/_aperture_corrections.py CellField.__init__   80% 5 1 0   50% 2 1   71%
python/lsst/images/cells/_aperture_corrections.py CellField.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_aperture_corrections.py CellField.unit   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_aperture_corrections.py CellField.is_constant   0% 9 9 0   0% 4 0   0%
python/lsst/images/cells/_aperture_corrections.py CellField.value_in_cell   0% 7 7 0   0% 2 0   0%
python/lsst/images/cells/_aperture_corrections.py CellField.quantity_in_cell   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_aperture_corrections.py CellField.evaluate   0% 7 7 0   0% 4 0   0%
python/lsst/images/cells/_aperture_corrections.py CellField.render   0% 9 9 0   0% 4 0   0%
python/lsst/images/cells/_aperture_corrections.py CellField.multiply_constant   0% 2 2 0   100% 0 0   0%
python/lsst/images/cells/_aperture_corrections.py CellField.from_legacy_aperture_correction   0% 5 5 0   0% 2 0   0%
python/lsst/images/cells/_aperture_corrections.py CellField.to_legacy_aperture_correction   0% 6 6 0   0% 2 0   0%
python/lsst/images/cells/_aperture_corrections.py CellApertureCorrectionMapSerializationModel.serialize   0% 15 15 0   0% 10 0   0%
python/lsst/images/cells/_aperture_corrections.py CellApertureCorrectionMapSerializationModel.deserialize   88% 17 2 0   80% 10 2   85%
python/lsst/images/cells/_aperture_corrections.py (no function)   100% 41 0 7   100% 0 0   100%
python/lsst/images/cells/_coadd.py CellCoadd.__init__   73% 22 6 0   57% 14 6   67%
python/lsst/images/cells/_coadd.py CellCoadd.skymap   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.tract   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.patch   0% 3 3 0   0% 2 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.band   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_coadd.py CellCoadd.mask_fractions   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.noise_realizations   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.unit   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.sky_projection   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_coadd.py CellCoadd.psf   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_coadd.py CellCoadd.aperture_corrections   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_coadd.py CellCoadd.grid   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_coadd.py CellCoadd.provenance   67% 3 1 0   50% 2 1   60%
python/lsst/images/cells/_coadd.py CellCoadd.backgrounds   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.__getitem__   80% 5 1 0   50% 2 1   71%
python/lsst/images/cells/_coadd.py CellCoadd.__str__   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.__repr__   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.copy   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.apply_background   0% 11 11 0   0% 6 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.serialize   0% 11 11 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.from_legacy   0% 24 24 0   0% 6 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.to_legacy   0% 25 25 0   0% 6 0   0%
python/lsst/images/cells/_coadd.py CellCoadd.to_legacy_exposure   0% 13 13 0   0% 2 0   0%
python/lsst/images/cells/_coadd.py CellCoaddSerializationModel.deserialize   87% 15 2 0   50% 6 3   76%
python/lsst/images/cells/_coadd.py CellCoaddSerializationModel.deserialize_component   0% 10 10 0   0% 8 0   0%
python/lsst/images/cells/_coadd.py (no function)   100% 83 0 9   100% 0 0   100%
python/lsst/images/cells/_provenance.py CoaddProvenance.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/images/cells/_provenance.py CoaddProvenance.make_empty_input_table   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenance.make_empty_contribution_table   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenance.inputs   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_provenance.py CoaddProvenance.contributions   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_provenance.py CoaddProvenance.__getitem__   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenance.subset   100% 6 0 0   100% 0 0   100%
python/lsst/images/cells/_provenance.py CoaddProvenance.serialize   0% 8 8 0   100% 0 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenance.from_legacy   0% 30 30 0   0% 8 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenance.to_legacy_polygon_map   0% 2 2 0   100% 0 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenance.to_legacy_cell_coadd_inputs   0% 13 13 0   0% 4 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenanceSerializationModel.deserialize   92% 13 1 0   83% 6 1   89%
python/lsst/images/cells/_provenance.py CoaddProvenanceSerializationModel._fix_str_for_serialization   0% 13 13 0   0% 8 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenanceSerializationModel._fix_str_for_deserialization   50% 8 4 0   38% 8 1   44%
python/lsst/images/cells/_provenance.py CoaddProvenanceSerializationModel._fix_polygon_for_serialization   0% 11 11 0   0% 2 0   0%
python/lsst/images/cells/_provenance.py CoaddProvenanceSerializationModel._fix_polygon_for_deserialization   100% 5 0 0   100% 0 0   100%
python/lsst/images/cells/_provenance.py (no function)   100% 48 0 13   100% 0 0   100%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.grid   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.kernel_bbox   0% 4 4 0   100% 0 0   0%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.__getitem__   100% 1 0 0   50% 2 1   67%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.__getitem__   100% 1 0 0   50% 2 1   67%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.__getitem__   36% 14 9 0   33% 6 2   35%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.compute_kernel_image   0% 6 6 0   100% 0 0   0%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.compute_stellar_image   0% 16 16 0   0% 2 0   0%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.compute_stellar_bbox   0% 1 1 0   100% 0 0   0%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.serialize   0% 2 2 0   100% 0 0   0%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.from_legacy   0% 19 19 0   0% 6 0   0%
python/lsst/images/cells/_psf.py CellPointSpreadFunction.to_legacy   0% 8 8 0   0% 2 0   0%
python/lsst/images/cells/_psf.py CellPointSpreadFunction._subset_impl   100% 4 0 0   100% 0 0   100%
python/lsst/images/cells/_psf.py CellPointSpreadFunctionSerializationModel.deserialize   62% 8 3 0   50% 4 2   58%
python/lsst/images/cells/_psf.py (no function)   100% 40 0 5   100% 0 0   100%
python/lsst/images/cli/__init__.py (no function)   100% 3 0 0   100% 0 0   100%
python/lsst/images/cli/_convert.py detect_legacy_type   94% 16 1 0   92% 12 1   93%
python/lsst/images/cli/_convert.py _load_skymap   0% 11 11 0   0% 6 0   0%
python/lsst/images/cli/_convert.py _read_legacy   60% 15 6 0   67% 6 2   62%
python/lsst/images/cli/_convert.py convert   62% 29 11 0   80% 10 2   67%
python/lsst/images/cli/_convert.py (no function)   100% 23 0 3   100% 0 0   100%
python/lsst/images/cli/_diagram.py _available_schemas   100% 2 0 0   100% 0 0   100%
python/lsst/images/cli/_diagram.py diagram   100% 20 0 0   100% 12 0   100%
python/lsst/images/cli/_diagram.py (no function)   100% 22 0 0   100% 0 0   100%
python/lsst/images/cli/_fuzz.py shuffle_blocks   100% 12 0 0   100% 6 0   100%
python/lsst/images/cli/_fuzz.py _output_path   75% 4 1 0   50% 2 1   67%
python/lsst/images/cli/_fuzz.py _block_shape   71% 7 2 0   50% 4 2   64%
python/lsst/images/cli/_fuzz.py _compression_options   100% 3 0 0   100% 0 0   100%
python/lsst/images/cli/_fuzz.py _verify   75% 12 3 0   62% 8 3   70%
python/lsst/images/cli/_fuzz.py _fuzz_file   87% 15 2 0   50% 2 1   82%
python/lsst/images/cli/_fuzz.py fuzz_masked_image   73% 15 4 0   88% 8 1   78%
python/lsst/images/cli/_fuzz.py (no function)   100% 24 0 0   100% 0 0   100%
python/lsst/images/cli/_inspect.py inspect   90% 20 2 0   100% 2 0   91%
python/lsst/images/cli/_inspect.py (no function)   100% 8 0 0   100% 0 0   100%
python/lsst/images/cli/_main.py main   100% 0 0 0   100% 0 0   100%
python/lsst/images/cli/_main.py (no function)   100% 21 0 0   100% 0 0   100%
python/lsst/images/cli/_minify.py minify   0% 5 5 0   0% 2 0   0%
python/lsst/images/cli/_minify.py (no function)   100% 9 0 0   100% 0 0   100%
python/lsst/images/cli/_reformat.py reformat   84% 19 3 0   75% 4 1   83%
python/lsst/images/cli/_reformat.py (no function)   100% 11 0 0   100% 0 0   100%
python/lsst/images/diagram.py make_policy   100% 4 0 0   100% 0 0   100%
python/lsst/images/diagram.py _key   100% 1 0 0   100% 0 0   100%
python/lsst/images/diagram.py _label   100% 1 0 0   100% 0 0   100%
python/lsst/images/diagram.py _type_name   100% 4 0 0   100% 2 0   100%
python/lsst/images/diagram.py _public_name   100% 4 0 0   100% 2 0   100%
python/lsst/images/diagram.py _node_label   100% 3 0 0   100% 2 0   100%
python/lsst/images/diagram.py _type_names   100% 4 0 0   100% 2 0   100%
python/lsst/images/diagram.py _is_hidden_type   100% 1 0 0   100% 0 0   100%
python/lsst/images/diagram.py _resolve   100% 6 0 0   100% 4 0   100%
python/lsst/images/diagram.py _strip_annotated   100% 3 0 0   100% 2 0   100%
python/lsst/images/diagram.py _is_model   100% 1 0 0   100% 0 0   100%
python/lsst/images/diagram.py _type_str   95% 21 1 0   94% 16 1   95%
python/lsst/images/diagram.py _models_in   100% 33 0 0   100% 16 0   100%
python/lsst/images/diagram.py _classify   100% 24 0 0   100% 14 0   100%
python/lsst/images/diagram.py build_graph   100% 5 0 0   100% 2 0   100%
python/lsst/images/diagram.py _walk   100% 24 0 0   100% 14 0   100%
python/lsst/images/diagram.py build_instance_graph   100% 5 0 0   100% 2 0   100%
python/lsst/images/diagram.py graph_from_file   100% 2 0 0   100% 0 0   100%
python/lsst/images/diagram.py _walk_instance   88% 17 2 0   80% 10 2   85%
python/lsst/images/diagram.py _merge_reference   100% 9 0 0   100% 8 0   100%
python/lsst/images/diagram.py _merge_attribute   75% 8 2 0   75% 8 2   75%
python/lsst/images/diagram.py _add_instance_field   96% 27 1 0   94% 18 1   96%
python/lsst/images/diagram.py render   100% 7 0 0   100% 0 0   100%
python/lsst/images/diagram.py _edge_label   100% 4 0 0   100% 2 0   100%
python/lsst/images/diagram.py _node_ids   79% 14 3 0   67% 6 2   75%
python/lsst/images/diagram.py _dot_escape   100% 1 0 0   100% 0 0   100%
python/lsst/images/diagram.py _to_dot   100% 13 0 0   100% 8 0   100%
python/lsst/images/diagram.py _mermaid_escape   100% 1 0 0   100% 0 0   100%
python/lsst/images/diagram.py _to_mermaid   100% 13 0 0   100% 10 0   100%
python/lsst/images/diagram.py _to_tree   100% 3 0 0   100% 0 0   100%
python/lsst/images/diagram.py _tree_children   100% 16 0 0   100% 6 0   100%
python/lsst/images/diagram.py _tree_single   100% 7 0 0   100% 2 0   100%
python/lsst/images/diagram.py _tree_union   100% 13 0 0   100% 6 0   100%
python/lsst/images/diagram.py (no function)   100% 75 0 0   100% 0 0   100%
python/lsst/images/fields/__init__.py (no function)   100% 6 0 0   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.bounds   100% 0 0 1   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.unit   100% 0 0 1   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.is_constant   100% 0 0 1   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.__call__   100% 1 0 0   50% 2 1   67%
python/lsst/images/fields/_base.py BaseField.__call__   100% 0 0 0   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.__call__   100% 0 0 0   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.__call__   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.render   100% 0 0 1   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.__mul__   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.__rmul__   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_base.py BaseField.__truediv__   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.evaluate   100% 0 0 1   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.multiply_constant   100% 0 0 1   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.to_legacy   100% 0 0 1   100% 0 0   100%
python/lsst/images/fields/_base.py BaseField.to_legacy_photo_calib   0% 11 11 0   0% 6 0   0%
python/lsst/images/fields/_base.py BaseField.make_legacy_photo_calib   0% 7 7 0   100% 0 0   0%
python/lsst/images/fields/_base.py BaseField._handle_factor_units   100% 13 0 0   100% 8 0   100%
python/lsst/images/fields/_base.py (no function)   100% 38 0 7   50% 4 2   95%
python/lsst/images/fields/_chebyshev.py ChebyshevField.__init__   100% 9 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/images/fields/_chebyshev.py ChebyshevField.fit   82% 45 8 0   73% 26 7   79%
python/lsst/images/fields/_chebyshev.py ChebyshevField.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.x_order   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.y_order   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.order   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.coefficients   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.is_constant   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_chebyshev.py ChebyshevField.evaluate   100% 5 0 0   100% 2 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.render   100% 5 0 0   100% 2 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.multiply_constant   100% 2 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_chebyshev.py ChebyshevField.from_legacy   67% 6 2 0   25% 4 1   50%
python/lsst/images/fields/_chebyshev.py ChebyshevField.to_legacy   100% 2 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField.from_legacy_background   0% 16 16 0   0% 8 0   0%
python/lsst/images/fields/_chebyshev.py ChebyshevField._remap   100% 5 0 0   100% 0 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField._packing_indices   100% 6 0 0   100% 6 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField._make_grid_matrix   100% 8 0 0   100% 2 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevField._make_general_matrix   100% 8 0 0   100% 2 0   100%
python/lsst/images/fields/_chebyshev.py ChebyshevFieldSerializationModel.deserialize   67% 3 1 0   50% 2 1   60%
python/lsst/images/fields/_chebyshev.py (no function)   100% 58 0 7   100% 0 0   100%
python/lsst/images/fields/_concrete.py field_from_legacy   86% 7 1 1   75% 4 1   82%
python/lsst/images/fields/_concrete.py field_from_legacy_background   71% 7 2 0   50% 4 2   64%
python/lsst/images/fields/_concrete.py field_from_legacy_photo_calib   0% 7 7 0   0% 4 0   0%
python/lsst/images/fields/_concrete.py (no function)   100% 18 0 11   100% 0 0   100%
python/lsst/images/fields/_product.py ProductField.__init__   92% 13 1 0   88% 8 1   90%
python/lsst/images/fields/_product.py ProductField.__eq__   0% 3 3 0   0% 2 0   0%
python/lsst/images/fields/_product.py ProductField.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_product.py ProductField.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_product.py ProductField.operands   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_product.py ProductField.is_constant   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_product.py ProductField.evaluate   100% 8 0 0   100% 4 0   100%
python/lsst/images/fields/_product.py ProductField.render   100% 6 0 0   100% 4 0   100%
python/lsst/images/fields/_product.py ProductField.multiply_constant   100% 3 0 0   100% 0 0   100%
python/lsst/images/fields/_product.py ProductField.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_product.py ProductField._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_product.py ProductField.from_legacy   100% 5 0 0   100% 0 0   100%
python/lsst/images/fields/_product.py ProductField.to_legacy   100% 2 0 0   100% 0 0   100%
python/lsst/images/fields/_product.py ProductFieldSerializationModel.deserialize   67% 3 1 0   50% 2 1   60%
python/lsst/images/fields/_product.py (no function)   100% 41 0 6   100% 0 0   100%
python/lsst/images/fields/_spline.py SplineField.__init__   59% 29 12 0   45% 20 9   53%
python/lsst/images/fields/_spline.py SplineField.__eq__   67% 3 1 0   50% 2 1   60%
python/lsst/images/fields/_spline.py SplineField.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_spline.py SplineField.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_spline.py SplineField.data   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_spline.py SplineField.x   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_spline.py SplineField.y   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_spline.py SplineField.is_constant   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_spline.py SplineField.evaluate   86% 21 3 0   75% 12 3   82%
python/lsst/images/fields/_spline.py SplineField.render   82% 17 3 0   70% 10 3   78%
python/lsst/images/fields/_spline.py SplineField.multiply_constant   100% 2 0 0   100% 0 0   100%
python/lsst/images/fields/_spline.py SplineField.serialize   75% 4 1 0   50% 2 1   67%
python/lsst/images/fields/_spline.py SplineField._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_spline.py SplineField.from_legacy_background   82% 11 2 0   50% 4 2   73%
python/lsst/images/fields/_spline.py SplineField._make_1d_interpolator   71% 7 2 0   50% 4 2   64%
python/lsst/images/fields/_spline.py SplineField._make_y_interpolator   100% 8 0 0   100% 2 0   100%
python/lsst/images/fields/_spline.py SplineFieldSerializationModel.deserialize   75% 4 1 0   50% 2 1   67%
python/lsst/images/fields/_spline.py (no function)   100% 51 0 5   100% 0 0   100%
python/lsst/images/fields/_sum.py SumField.__init__   93% 15 1 0   90% 10 1   92%
python/lsst/images/fields/_sum.py SumField.__eq__   0% 3 3 0   0% 2 0   0%
python/lsst/images/fields/_sum.py SumField.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_sum.py SumField.unit   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_sum.py SumField.operands   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_sum.py SumField.is_constant   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_sum.py SumField.evaluate   91% 11 1 0   83% 6 1   88%
python/lsst/images/fields/_sum.py SumField.render   100% 6 0 0   100% 4 0   100%
python/lsst/images/fields/_sum.py SumField.multiply_constant   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_sum.py SumField.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/fields/_sum.py SumField._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/fields/_sum.py SumField.from_legacy_background   0% 2 2 0   100% 0 0   0%
python/lsst/images/fields/_sum.py SumFieldSerializationModel.deserialize   67% 3 1 0   50% 2 1   60%
python/lsst/images/fields/_sum.py (no function)   100% 40 0 6   100% 0 0   100%
python/lsst/images/fits/__init__.py (no function)   100% 3 0 0   100% 0 0   100%
python/lsst/images/fits/_common.py suppress_fits_card_warnings   100% 4 0 0   100% 0 0   100%
python/lsst/images/fits/_common.py ExtensionKey.from_index_row   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_common.py ExtensionKey.from_str   83% 6 1 0   75% 4 1   80%
python/lsst/images/fits/_common.py ExtensionKey.check   50% 2 1 0   50% 2 1   50%
python/lsst/images/fits/_common.py ExtensionKey.__str__   100% 3 0 0   100% 2 0   100%
python/lsst/images/fits/_common.py FitsDitherAlgorithm.to_astropy_quantize_method   71% 7 2 1   50% 4 2   64%
python/lsst/images/fits/_common.py FitsCompressionOptions.make_hdu   100% 3 0 0   100% 2 0   100%
python/lsst/images/fits/_common.py PrecompressedImage.from_bintable   0% 4 4 0   0% 2 0   0%
python/lsst/images/fits/_common.py FitsOpaqueMetadata.add_header   100% 12 0 0   88% 8 1   95%
python/lsst/images/fits/_common.py FitsOpaqueMetadata.maybe_use_precompressed   67% 3 1 0   50% 2 1   60%
python/lsst/images/fits/_common.py FitsOpaqueMetadata.extract_legacy_primary_header   86% 14 2 0   50% 4 2   78%
python/lsst/images/fits/_common.py FitsOpaqueMetadata.add_cutdown_primary_header   100% 4 0 0   100% 2 0   100%
python/lsst/images/fits/_common.py FitsOpaqueMetadata.copy   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_common.py FitsOpaqueMetadata.subset   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_common.py FitsOpaqueMetadata.get_instrumental_unit   75% 4 1 0   50% 4 2   62%
python/lsst/images/fits/_common.py add_offset_wcs   100% 8 0 0   100% 0 0   100%
python/lsst/images/fits/_common.py read_offset_wcs   100% 5 0 0   100% 2 0   100%
python/lsst/images/fits/_common.py read_yx0   100% 5 0 0   100% 4 0   100%
python/lsst/images/fits/_common.py strip_wcs_cards   83% 23 4 0   93% 14 1   86%
python/lsst/images/fits/_common.py _strip_sip_poly   0% 4 4 0   0% 4 0   0%
python/lsst/images/fits/_common.py strip_legacy_exposure_cards   100% 4 0 0   100% 2 0   100%
python/lsst/images/fits/_common.py strip_butler_cards   100% 3 0 0   100% 4 0   100%
python/lsst/images/fits/_common.py (no function)   100% 102 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py FitsInputArchive.get_basic_info   88% 8 1 0   50% 2 1   80%
python/lsst/images/fits/_input_archive.py FitsInputArchive.open_tree   100% 7 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py FitsInputArchive.__init__   100% 17 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py FitsInputArchive.open   100% 8 0 0   100% 2 0   100%
python/lsst/images/fits/_input_archive.py FitsInputArchive.info   67% 3 1 0   50% 2 1   60%
python/lsst/images/fits/_input_archive.py FitsInputArchive.get_tree   100% 2 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py FitsInputArchive.deserialize_pointer   0% 12 12 0   0% 4 0   0%
python/lsst/images/fits/_input_archive.py FitsInputArchive.get_frame_set   0% 6 6 1   0% 2 0   0%
python/lsst/images/fits/_input_archive.py FitsInputArchive.get_array   91% 11 1 0   67% 6 2   82%
python/lsst/images/fits/_input_archive.py FitsInputArchive.get_table   0% 5 5 0   0% 2 0   0%
python/lsst/images/fits/_input_archive.py FitsInputArchive.get_structured_array   0% 8 8 0   0% 4 0   0%
python/lsst/images/fits/_input_archive.py FitsInputArchive.get_opaque_metadata   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py FitsInputArchive._get_source_reader   57% 14 6 0   50% 8 4   55%
python/lsst/images/fits/_input_archive.py _ExtensionReader.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _ExtensionReader.from_index_row   89% 9 1 1   83% 6 1   87%
python/lsst/images/fits/_input_archive.py _ExtensionReader.from_bytes   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _ExtensionReader.is_table   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _ExtensionReader.hdu   100% 5 0 0   100% 2 0   100%
python/lsst/images/fits/_input_archive.py _ExtensionReader.header   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _ExtensionReader.data   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _ExtensionReader.section   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.mode   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.__enter__   100% 0 0 1   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.__exit__   100% 0 0 1   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.__iter__   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.__next__   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.close   100% 0 0 1   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.closed   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.fileno   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.flush   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.isatty   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.read   100% 2 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.readable   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.readline   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.readlines   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.seek   75% 8 2 0   67% 6 2   71%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.seekable   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.tell   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.truncate   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.writable   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.write   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py _RangeStreamProxy.writelines   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_input_archive.py (no function)   100% 87 0 0   100% 0 0   100%
python/lsst/images/fits/_output_archive.py _set_creation_date   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_output_archive.py write   90% 10 1 0   75% 4 1   86%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.__init__   100% 18 0 0   100% 2 0   100%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.open   91% 22 2 0   50% 4 2   85%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.serialize_direct   100% 2 0 0   100% 0 0   100%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.serialize_pointer   88% 8 1 0   50% 2 1   80%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.serialize_frame_set   0% 3 3 0   100% 0 0   0%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.iter_frame_sets   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.add_array   85% 13 2 0   50% 8 4   71%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.add_table   0% 11 11 0   0% 4 0   0%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.add_structured_array   0% 17 17 0   0% 12 0   0%
python/lsst/images/fits/_output_archive.py FitsOutputArchive._add_hdu   100% 10 0 0   100% 4 0   100%
python/lsst/images/fits/_output_archive.py FitsOutputArchive.add_tree   100% 8 0 0   100% 2 0   100%
python/lsst/images/fits/_output_archive.py FitsOutputArchive._get_compression_options   67% 15 5 0   50% 12 4   59%
python/lsst/images/fits/_output_archive.py FitsOutputArchive._make_index_table   100% 11 0 0   100% 2 0   100%
python/lsst/images/fits/_output_archive.py _HDUBytes.from_write_hdu   57% 7 3 0   50% 6 3   54%
python/lsst/images/fits/_output_archive.py _HDUBytes.from_read_hdu   100% 5 0 0   100% 0 0   100%
python/lsst/images/fits/_output_archive.py _HDUBytes.from_index_row   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_output_archive.py _HDUBytes.get_index_hdu_columns   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_output_archive.py _HDUBytes.header_size   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_output_archive.py _HDUBytes.end_address   0% 1 1 0   100% 0 0   0%
python/lsst/images/fits/_output_archive.py _HDUBytes.size   100% 1 0 0   100% 0 0   100%
python/lsst/images/fits/_output_archive.py _HDUBytes.update_index_row   100% 3 0 0   100% 0 0   100%
python/lsst/images/fits/_output_archive.py (no function)   100% 58 0 0   100% 0 0   100%
python/lsst/images/formatters.py GenericFormatter.get_write_extension   83% 6 1 0   50% 2 1   75%
python/lsst/images/formatters.py GenericFormatter._validate_write_parameters   67% 3 1 0   50% 2 1   60%
python/lsst/images/formatters.py GenericFormatter.validate_write_recipes   67% 9 3 0   100% 4 0   77%
python/lsst/images/formatters.py GenericFormatter.write_local_file   100% 9 0 0   100% 2 0   100%
python/lsst/images/formatters.py GenericFormatter.add_provenance   100% 2 0 0   100% 0 0   100%
python/lsst/images/formatters.py GenericFormatter._get_compression_seed   100% 2 0 0   100% 0 0   100%
python/lsst/images/formatters.py GenericFormatter._get_compression_options   75% 8 2 0   50% 2 1   70%
python/lsst/images/formatters.py GenericFormatter._update_header   83% 6 1 0   88% 8 1   86%
python/lsst/images/formatters.py GenericFormatter._component_from_cache   100% 8 0 0   100% 2 0   100%
python/lsst/images/formatters.py GenericFormatter._cache_tree   100% 1 0 0   100% 0 0   100%
python/lsst/images/formatters.py GenericFormatter._detach_component   100% 3 0 0   100% 2 0   100%
python/lsst/images/formatters.py GenericFormatter.read_from_uri   67% 3 1 0   50% 2 1   60%
python/lsst/images/formatters.py GenericFormatter._resolve_multi_component_request   100% 9 0 0   100% 6 0   100%
python/lsst/images/formatters.py GenericFormatter._build_component_kwargs   100% 13 0 0   100% 10 0   100%
python/lsst/images/formatters.py GenericFormatter._read_components   100% 14 0 0   100% 12 0   100%
python/lsst/images/formatters.py GenericFormatter._read_from_resource_path   92% 24 2 0   83% 12 2   89%
python/lsst/images/formatters.py GenericFormatter.read_from_local_file   100% 1 0 0   100% 0 0   100%
python/lsst/images/formatters.py (no function)   100% 47 0 0   100% 0 0   100%
python/lsst/images/json/__init__.py (no function)   100% 2 0 0   100% 0 0   100%
python/lsst/images/json/_input_archive.py JsonInputArchive.get_basic_info   75% 4 1 0   50% 2 1   67%
python/lsst/images/json/_input_archive.py JsonInputArchive.open_tree   92% 12 1 0   50% 2 1   86%
python/lsst/images/json/_input_archive.py JsonInputArchive.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/images/json/_input_archive.py JsonInputArchive.deserialize_pointer   0% 7 7 0   0% 2 0   0%
python/lsst/images/json/_input_archive.py JsonInputArchive.get_frame_set   0% 7 7 1   0% 2 0   0%
python/lsst/images/json/_input_archive.py JsonInputArchive.get_array   67% 3 1 0   50% 2 1   60%
python/lsst/images/json/_input_archive.py JsonInputArchive.get_table   83% 6 1 0   75% 4 1   80%
python/lsst/images/json/_input_archive.py JsonInputArchive.get_structured_array   100% 2 0 0   100% 0 0   100%
python/lsst/images/json/_input_archive.py (no function)   100% 24 0 2   100% 0 0   100%
python/lsst/images/json/_output_archive.py write   91% 11 1 0   67% 6 2   82%
python/lsst/images/json/_output_archive.py JsonOutputArchive.__init__   100% 4 0 0   100% 0 0   100%
python/lsst/images/json/_output_archive.py JsonOutputArchive.serialize_direct   100% 2 0 0   100% 0 0   100%
python/lsst/images/json/_output_archive.py JsonOutputArchive.serialize_pointer   0% 6 6 0   0% 2 0   0%
python/lsst/images/json/_output_archive.py JsonOutputArchive.serialize_frame_set   0% 3 3 0   100% 0 0   0%
python/lsst/images/json/_output_archive.py JsonOutputArchive.iter_frame_sets   0% 1 1 0   100% 0 0   0%
python/lsst/images/json/_output_archive.py JsonOutputArchive.add_array   100% 1 0 0   100% 0 0   100%
python/lsst/images/json/_output_archive.py JsonOutputArchive.add_table   0% 2 2 0   100% 0 0   0%
python/lsst/images/json/_output_archive.py JsonOutputArchive.add_structured_array   0% 7 7 0   0% 6 0   0%
python/lsst/images/json/_output_archive.py JsonOutputArchive.finish   100% 2 0 0   100% 0 0   100%
python/lsst/images/json/_output_archive.py (no function)   100% 21 0 2   100% 0 0   100%
python/lsst/images/ndf/__init__.py (no function)   71% 7 2 0   100% 0 0   71%
python/lsst/images/ndf/_common.py HdsNameShrinker.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/images/ndf/_common.py HdsNameShrinker.shrink   100% 11 0 0   100% 4 0   100%
python/lsst/images/ndf/_common.py HdsNameShrinker.shrink_versioned   100% 2 0 0   100% 0 0   100%
python/lsst/images/ndf/_common.py archive_path_to_hdf5_path   100% 4 0 0   100% 2 0   100%
python/lsst/images/ndf/_common.py archive_path_to_hdf5_path_components   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_common.py (no function)   100% 13 0 0   100% 0 0   100%
python/lsst/images/ndf/_hds.py hds_type_for_dtype   100% 5 0 1   100% 2 0   100%
python/lsst/images/ndf/_hds.py write_array   78% 9 2 0   67% 6 2   73%
python/lsst/images/ndf/_hds.py _write_logical_array   100% 9 0 1   100% 2 0   100%
python/lsst/images/ndf/_hds.py read_array   100% 11 0 2   100% 6 0   100%
python/lsst/images/ndf/_hds.py write_char_array   100% 11 0 0   100% 4 0   100%
python/lsst/images/ndf/_hds.py encode_ndf_ast_data   83% 12 2 0   75% 8 2   80%
python/lsst/images/ndf/_hds.py decode_ndf_ast_data   81% 21 4 0   69% 16 5   76%
python/lsst/images/ndf/_hds.py read_char_array   83% 6 1 0   75% 4 1   80%
python/lsst/images/ndf/_hds.py set_ascii_attr   100% 4 0 0   100% 2 0   100%
python/lsst/images/ndf/_hds.py create_structure   100% 3 0 0   100% 0 0   100%
python/lsst/images/ndf/_hds.py set_root_name   100% 2 0 0   100% 0 0   100%
python/lsst/images/ndf/_hds.py open_structure   91% 11 1 0   88% 8 1   89%
python/lsst/images/ndf/_hds.py iter_children   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_hds.py (no function)   100% 27 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py _get_lsst_primitive   100% 4 0 0   100% 4 0   100%
python/lsst/images/ndf/_input_archive.py _read_format_version   100% 4 0 0   100% 2 0   100%
python/lsst/images/ndf/_input_archive.py _read_archive_info   86% 7 1 0   50% 4 2   73%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.__init__   100% 7 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.get_basic_info   100% 4 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.get_basic_info.get_primitive   100% 2 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.open_tree   88% 8 1 0   50% 2 1   80%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.open   100% 4 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.get_tree   100% 5 0 0   100% 2 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.deserialize_pointer   92% 12 1 0   83% 6 1   89%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.get_frame_set   100% 3 0 1   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.get_array   77% 13 3 0   75% 8 2   76%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.get_table   86% 7 1 0   75% 4 1   82%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.get_structured_array   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive._read_opaque_fits_metadata   100% 5 0 0   100% 2 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.get_opaque_metadata   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive.info   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive._get_main_json_path   100% 5 0 0   100% 4 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive._check_format_version   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive._has_model_path   100% 5 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py NdfInputArchive._get_primitive   75% 4 1 0   50% 2 1   67%
python/lsst/images/ndf/_input_archive.py NdfInputArchive._get_optional_primitive   100% 5 0 0   100% 0 0   100%
python/lsst/images/ndf/_input_archive.py read_starlink   75% 4 1 0   50% 2 1   67%
python/lsst/images/ndf/_input_archive.py _read_auto_detect   91% 53 5 0   81% 26 5   87%
python/lsst/images/ndf/_input_archive.py _read_ndf_units   58% 24 10 0   57% 14 6   58%
python/lsst/images/ndf/_input_archive.py _read_quality_badbits   71% 7 2 0   50% 4 2   64%
python/lsst/images/ndf/_input_archive.py _validate_quality_array   67% 3 1 0   50% 2 1   60%
python/lsst/images/ndf/_input_archive.py _make_quality_mask_schema   100% 8 0 0   100% 4 0   100%
python/lsst/images/ndf/_input_archive.py _locate_ndf_root   31% 16 11 0   21% 14 1   27%
python/lsst/images/ndf/_input_archive.py _read_data_array_with_bbox   70% 10 3 0   75% 4 1   71%
python/lsst/images/ndf/_input_archive.py _read_json_record   75% 4 1 0   50% 2 1   67%
python/lsst/images/ndf/_input_archive.py _make_bbox   67% 3 1 0   50% 2 1   60%
python/lsst/images/ndf/_input_archive.py (no function)   100% 69 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py _decode_ascii_attr   78% 9 2 0   75% 8 2   76%
python/lsst/images/ndf/_model.py HdsPrimitive.array   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py HdsPrimitive.char_array   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py HdsPrimitive.char_scalar   100% 2 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py HdsPrimitive.from_hdf5   100% 9 0 0   83% 6 1   93%
python/lsst/images/ndf/_model.py HdsPrimitive.read_array   80% 5 1 0   75% 4 1   78%
python/lsst/images/ndf/_model.py HdsPrimitive.read_char_array   18% 11 9 0   12% 8 1   16%
python/lsst/images/ndf/_model.py HdsPrimitive.write_to_hdf5   76% 17 4 0   67% 12 4   72%
python/lsst/images/ndf/_model.py HdsStructure.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py HdsStructure.from_hdf5   90% 10 1 0   75% 8 2   83%
python/lsst/images/ndf/_model.py HdsStructure.__contains__   0% 5 5 0   100% 0 0   0%
python/lsst/images/ndf/_model.py HdsStructure.__getitem__   0% 1 1 0   100% 0 0   0%
python/lsst/images/ndf/_model.py HdsStructure.items   0% 1 1 0   100% 0 0   0%
python/lsst/images/ndf/_model.py HdsStructure.get   88% 8 1 0   83% 6 1   86%
python/lsst/images/ndf/_model.py HdsStructure.get_structure   75% 4 1 0   50% 2 1   67%
python/lsst/images/ndf/_model.py HdsStructure.set   0% 5 5 0   0% 2 0   0%
python/lsst/images/ndf/_model.py HdsStructure.delete   0% 5 5 0   0% 2 0   0%
python/lsst/images/ndf/_model.py HdsStructure.ensure_structure   84% 19 3 0   75% 12 3   81%
python/lsst/images/ndf/_model.py HdsStructure.write_to_hdf5   92% 12 1 0   88% 8 1   90%
python/lsst/images/ndf/_model.py HdsExtension.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py NdfContainer.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py NdfContainer.ensure_ndf   75% 4 1 0   50% 2 1   67%
python/lsst/images/ndf/_model.py NdfArray.to_hds_structure   100% 7 0 0   75% 4 1   91%
python/lsst/images/ndf/_model.py NdfArray.from_hds_structure   0% 15 15 0   0% 10 0   0%
python/lsst/images/ndf/_model.py NdfQuality.to_hds_structure   100% 4 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py NdfWcs.to_hds_structure   100% 3 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py Ndf.__init__   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py Ndf.set_array_component   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py Ndf.set_quality   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py Ndf.set_wcs   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py Ndf.set_units   67% 3 1 0   50% 2 1   60%
python/lsst/images/ndf/_model.py Ndf.get_units   71% 7 2 0   50% 4 2   64%
python/lsst/images/ndf/_model.py Ndf.ensure_lsst_extension   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py NdfDocument.from_hdf5   78% 9 2 0   75% 4 1   77%
python/lsst/images/ndf/_model.py NdfDocument.write_to_hdf5   100% 3 0 0   100% 2 0   100%
python/lsst/images/ndf/_model.py NdfDocument.ensure_ndf   80% 10 2 0   75% 8 2   78%
python/lsst/images/ndf/_model.py NdfDocument.get   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py _new_structure   100% 5 0 0   100% 4 0   100%
python/lsst/images/ndf/_model.py _default_hds_type_for_name   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py _split_path   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_model.py _clear_hdf5_group   100% 5 0 0   100% 6 0   100%
python/lsst/images/ndf/_model.py (no function)   100% 90 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py write   100% 14 0 0   100% 8 0   100%
python/lsst/images/ndf/_output_archive.py _origin_from_bbox   83% 6 1 0   50% 4 2   70%
python/lsst/images/ndf/_output_archive.py _unit_to_ndf_string   50% 4 2 0   100% 0 0   50%
python/lsst/images/ndf/_output_archive.py _fits_header_records   80% 5 1 0   50% 2 1   71%
python/lsst/images/ndf/_output_archive.py _get_archive_layout   100% 3 0 0   100% 2 0   100%
python/lsst/images/ndf/_output_archive.py _show_ast_for_ndf   86% 14 2 0   50% 2 1   81%
python/lsst/images/ndf/_output_archive.py _show_mask_ast_for_ndf   100% 16 0 0   100% 2 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.__init__   100% 14 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.open   75% 8 2 0   50% 4 2   67%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.add_tree   100% 22 0 0   79% 14 3   92%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._write_wcs   100% 13 0 0   83% 6 1   95%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.serialize_direct   100% 2 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.serialize_pointer   100% 13 0 0   100% 2 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.serialize_frame_set   100% 3 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.iter_frame_sets   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.add_array   97% 39 1 0   86% 14 2   94%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._ensure_path   0% 3 3 0   100% 0 0   0%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._ensure_struct   0% 3 3 0   100% 0 0   0%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._ensure_array_structure   0% 1 1 0   100% 0 0   0%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._ensure_quality_structure   0% 8 8 0   0% 2 0   0%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._ensure_quality_array_structure   0% 14 14 0   0% 4 0   0%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._write_quality_array   0% 2 2 0   100% 0 0   0%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._set_quality_array   100% 2 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._collapse_mask_to_quality   100% 3 0 0   100% 2 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._write_origin_for_array   0% 3 3 0   0% 2 0   0%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.set_array_origin   100% 10 0 0   75% 4 1   93%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._ensure_model_structure   67% 3 1 0   50% 2 1   60%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._archive_path_to_hdf5_path   33% 6 4 0   25% 4 1   30%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._register_hdf5_path   100% 4 0 0   100% 2 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._versioned_archive_path   100% 7 0 0   100% 2 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._has_model_path   100% 5 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._model_array_ndim   80% 5 1 0   50% 2 1   71%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive._flush   100% 1 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.add_table   100% 2 0 0   100% 0 0   100%
python/lsst/images/ndf/_output_archive.py NdfOutputArchive.add_structured_array   77% 31 7 0   61% 18 1   71%
python/lsst/images/ndf/_output_archive.py (no function)   100% 65 0 0   100% 0 0   100%
python/lsst/images/psfs/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
python/lsst/images/psfs/_base.py PointSpreadFunction.bounds   100% 0 0 1   100% 0 0   100%
python/lsst/images/psfs/_base.py PointSpreadFunction.kernel_bbox   100% 0 0 1   100% 0 0   100%
python/lsst/images/psfs/_base.py PointSpreadFunction.compute_kernel_image   100% 0 0 1   100% 0 0   100%
python/lsst/images/psfs/_base.py PointSpreadFunction.compute_stellar_image   100% 0 0 1   100% 0 0   100%
python/lsst/images/psfs/_base.py PointSpreadFunction.compute_stellar_bbox   100% 0 0 1   100% 0 0   100%
python/lsst/images/psfs/_base.py PointSpreadFunction.from_legacy   0% 15 15 0   0% 6 0   0%
python/lsst/images/psfs/_base.py (no function)   100% 21 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.__init__   100% 10 0 0   100% 6 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.__eq__   56% 9 4 0   50% 8 4   53%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.__repr__   100% 1 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.bounds   100% 1 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.kernel_bbox   100% 2 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction._centered_coordinates   100% 2 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction._kernel_array   100% 4 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.compute_kernel_image   100% 1 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.compute_stellar_image   100% 6 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.compute_stellar_bbox   100% 4 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction.serialize   100% 1 0 0   100% 0 0   100%
python/lsst/images/psfs/_gaussian.py GaussianPointSpreadFunction._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_gaussian.py GaussianPSFSerializationModel.deserialize   67% 3 1 0   50% 2 1   60%
python/lsst/images/psfs/_gaussian.py (no function)   100% 39 0 0   100% 0 0   100%
python/lsst/images/psfs/_legacy.py LegacyPointSpreadFunction.__init__   0% 2 2 0   100% 0 0   0%
python/lsst/images/psfs/_legacy.py LegacyPointSpreadFunction.bounds   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_legacy.py LegacyPointSpreadFunction.kernel_bbox   0% 5 5 0   0% 2 0   0%
python/lsst/images/psfs/_legacy.py LegacyPointSpreadFunction.compute_kernel_image   0% 7 7 0   0% 2 0   0%
python/lsst/images/psfs/_legacy.py LegacyPointSpreadFunction.compute_stellar_image   0% 2 2 0   100% 0 0   0%
python/lsst/images/psfs/_legacy.py LegacyPointSpreadFunction.compute_stellar_bbox   0% 2 2 0   100% 0 0   0%
python/lsst/images/psfs/_legacy.py LegacyPointSpreadFunction.legacy_psf   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_legacy.py LegacyPointSpreadFunction.from_legacy   0% 4 4 0   0% 2 0   0%
python/lsst/images/psfs/_legacy.py PSFExWrapper.__init__   0% 4 4 0   0% 2 0   0%
python/lsst/images/psfs/_legacy.py PSFExWrapper.serialize   0% 4 4 0   100% 0 0   0%
python/lsst/images/psfs/_legacy.py PSFExWrapper._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_legacy.py PSFExSerializationModel.deserialize   0% 20 20 0   0% 2 0   0%
python/lsst/images/psfs/_legacy.py (no function)   100% 46 0 0   100% 0 0   100%
python/lsst/images/psfs/_piff.py PiffWrapper.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/images/psfs/_piff.py PiffWrapper.bounds   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper.kernel_bbox   0% 2 2 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper.compute_kernel_image   0% 6 6 1   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper.compute_stellar_image   0% 6 6 1   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper.compute_stellar_bbox   0% 4 4 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper.piff_psf   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper.from_legacy   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper.to_legacy   0% 2 2 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper.serialize   0% 6 6 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py PiffWrapper._without_stars   0% 7 7 0   0% 2 0   0%
python/lsst/images/psfs/_piff.py MinimalStar.from_star   0% 3 3 0   0% 2 0   0%
python/lsst/images/psfs/_piff.py PiffSerializationModel.deserialize   73% 11 3 0   50% 2 1   69%
python/lsst/images/psfs/_piff.py _ArchivePiffWriter.__init__   100% 5 0 0   100% 0 0   100%
python/lsst/images/psfs/_piff.py _ArchivePiffWriter.write_struct   100% 1 0 0   100% 0 0   100%
python/lsst/images/psfs/_piff.py _ArchivePiffWriter.write_table   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py _ArchivePiffWriter.write_wcs_map   0% 5 5 1   0% 2 0   0%
python/lsst/images/psfs/_piff.py _ArchivePiffWriter.nested   0% 3 3 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py _ArchivePiffWriter.get_full_name   0% 1 1 0   100% 0 0   0%
python/lsst/images/psfs/_piff.py _ArchivePiffWriter.serialize   70% 10 3 0   62% 8 3   67%
python/lsst/images/psfs/_piff.py _ArchivePiffWriter._to_builtin   92% 12 1 0   90% 10 1   91%
python/lsst/images/psfs/_piff.py _ArchivePiffReader.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/images/psfs/_piff.py _ArchivePiffReader.read_struct   100% 1 0 0   100% 0 0   100%
python/lsst/images/psfs/_piff.py _ArchivePiffReader.read_table   83% 6 1 0   75% 4 1   80%
python/lsst/images/psfs/_piff.py _ArchivePiffReader.read_wcs_map   50% 8 4 0   25% 4 1   42%
python/lsst/images/psfs/_piff.py _ArchivePiffReader.nested   100% 2 0 0   100% 0 0   100%
python/lsst/images/psfs/_piff.py _ArchivePiffReader.get_full_name   100% 1 0 0   100% 0 0   100%
python/lsst/images/psfs/_piff.py (no function)   100% 87 0 8   100% 0 0   100%
python/lsst/images/serialization/__init__.py (no function)   100% 9 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _UnitSerialization.__get_pydantic_core_schema__   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _UnitSerialization.from_str   100% 5 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _UnitSerialization.to_str   100% 5 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py ArrayReferenceModel.with_units   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py InlineArrayModel.shape   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py InlineArrayModel.with_units   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py InlineArrayModel._extract_shape   80% 5 1 0   75% 4 1   78%
python/lsst/images/serialization/_asdf_utils.py _InlineArraySerialization.__get_pydantic_core_schema__   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _InlineArraySerialization.__get_pydantic_json_schema__   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _InlineArraySerialization.from_model   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _InlineArraySerialization.to_model   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _QuantitySerialization.__get_pydantic_core_schema__   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _QuantitySerialization.__get_pydantic_json_schema__   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _QuantitySerialization.from_model   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _QuantitySerialization.to_model   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_asdf_utils.py _InlineArrayQuantitySerialization.__get_pydantic_core_schema__   0% 2 2 0   100% 0 0   0%
python/lsst/images/serialization/_asdf_utils.py _InlineArrayQuantitySerialization.__get_pydantic_json_schema__   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_asdf_utils.py _InlineArrayQuantitySerialization.from_model   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_asdf_utils.py _InlineArrayQuantitySerialization.to_model   0% 2 2 0   100% 0 0   0%
python/lsst/images/serialization/_asdf_utils.py _TimeSerialization.__get_pydantic_core_schema__   0% 2 2 0   100% 0 0   0%
python/lsst/images/serialization/_asdf_utils.py _TimeSerialization.__get_pydantic_json_schema__   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_asdf_utils.py _TimeSerialization.from_model   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_asdf_utils.py _TimeSerialization.to_model   0% 3 3 0   0% 2 0   0%
python/lsst/images/serialization/_asdf_utils.py (no function)   100% 91 0 0   100% 0 0   100%
python/lsst/images/serialization/_backends.py backend_for_path   100% 14 0 0   100% 6 0   100%
python/lsst/images/serialization/_backends.py (no function)   100% 12 0 2   100% 0 0   100%
python/lsst/images/serialization/_common.py ArchiveTree.schema_url   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_common.py ArchiveTree._check_and_normalize_schema_version   78% 9 2 0   67% 6 2   73%
python/lsst/images/serialization/_common.py ArchiveTree.__pydantic_init_subclass__   100% 13 0 0   75% 4 1   94%
python/lsst/images/serialization/_common.py ArchiveTree.deserialize   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_common.py ArchiveTree.deserialize_component   100% 9 0 0   100% 4 0   100%
python/lsst/images/serialization/_common.py OpaqueArchiveMetadata.copy   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_common.py OpaqueArchiveMetadata.subset   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_common.py no_header_updates   100% 0 0 0   100% 0 0   100%
python/lsst/images/serialization/_common.py _parse_major   57% 7 3 0   50% 2 1   56%
python/lsst/images/serialization/_common.py _check_compat   100% 3 0 0   100% 2 0   100%
python/lsst/images/serialization/_common.py _check_format_version   100% 2 0 0   100% 2 0   100%
python/lsst/images/serialization/_common.py (no function)   95% 57 3 3   100% 0 0   95%
python/lsst/images/serialization/_dtypes.py NumberType.to_numpy   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_dtypes.py NumberType.from_numpy   75% 4 1 0   50% 2 1   67%
python/lsst/images/serialization/_dtypes.py NumberType.from_numpy_with_shape   100% 6 0 0   100% 2 0   100%
python/lsst/images/serialization/_dtypes.py NumberType.require_integer   0% 3 3 0   0% 2 0   0%
python/lsst/images/serialization/_dtypes.py is_integer   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_dtypes.py (no function)   100% 29 0 0   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py ArchiveInfo.from_schema_url   100% 8 0 0   100% 4 0   100%
python/lsst/images/serialization/_input_archive.py InputArchive.get_basic_info   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py InputArchive.open_tree   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py InputArchive.deserialize_pointer   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py InputArchive.get_frame_set   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py InputArchive.get_array   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py InputArchive.get_table   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py InputArchive.get_structured_array   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py InputArchive.get_opaque_metadata   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py DetachedArchive.deserialize_pointer   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py DetachedArchive.get_frame_set   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py DetachedArchive.get_array   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py DetachedArchive.get_table   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py DetachedArchive.get_structured_array   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_input_archive.py (no function)   100% 50 0 2   100% 0 0   100%
python/lsst/images/serialization/_io.py class_for_schema   100% 7 0 0   100% 4 0   100%
python/lsst/images/serialization/_io.py register_schema_class   100% 7 0 0   100% 4 0   100%
python/lsst/images/serialization/_io.py _load_builtin_schema_provider   70% 10 3 0   75% 4 1   71%
python/lsst/images/serialization/_io.py _load_schema_entry_points   70% 10 3 0   75% 4 1   71%
python/lsst/images/serialization/_io.py _load_provider_object   100% 6 0 0   75% 4 1   90%
python/lsst/images/serialization/_io.py _register_provider_object   100% 2 0 0   50% 2 1   75%
python/lsst/images/serialization/_io.py tree_class_for_info   100% 4 0 0   100% 2 0   100%
python/lsst/images/serialization/_io.py parameterize_tree   100% 3 0 0   100% 2 0   100%
python/lsst/images/serialization/_io.py public_type_for_schema   100% 4 0 0   100% 2 0   100%
python/lsst/images/serialization/_io.py read   100% 1 0 0   100% 2 0   100%
python/lsst/images/serialization/_io.py read   100% 1 0 0   50% 2 1   67%
python/lsst/images/serialization/_io.py read   100% 4 0 0   100% 0 0   100%
python/lsst/images/serialization/_io.py write   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_io.py (no function)   100% 27 0 2   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive.__init__   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive._register_name   100% 3 0 0   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive.serialize_direct   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive.serialize_pointer   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive.serialize_frame_set   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive.iter_frame_sets   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive.add_array   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive.add_table   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py OutputArchive.add_structured_array   100% 0 0 1   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive.__init__   100% 3 0 0   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive.serialize_direct   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive.serialize_pointer   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive.serialize_frame_set   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive.iter_frame_sets   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive.add_array   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive.add_table   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive.add_structured_array   0% 1 1 0   100% 0 0   0%
python/lsst/images/serialization/_output_archive.py NestedOutputArchive._join_path   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_output_archive.py (no function)   100% 41 0 2   100% 0 0   100%
python/lsst/images/serialization/_reader.py Reader.__init__   100% 5 0 0   100% 0 0   100%
python/lsst/images/serialization/_reader.py Reader._check_open   100% 2 0 0   100% 2 0   100%
python/lsst/images/serialization/_reader.py Reader.info   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_reader.py Reader.metadata   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_reader.py Reader.butler_info   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_reader.py Reader.get_tree   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_reader.py Reader.get_component   100% 2 0 0   100% 0 0   100%
python/lsst/images/serialization/_reader.py Reader.read   86% 7 1 0   75% 4 1   82%
python/lsst/images/serialization/_reader.py open   100% 0 0 0   100% 0 0   100%
python/lsst/images/serialization/_reader.py open   100% 0 0 0   100% 0 0   100%
python/lsst/images/serialization/_reader.py open   100% 10 0 0   100% 4 0   100%
python/lsst/images/serialization/_reader.py (no function)   100% 29 0 0   75% 4 1   97%
python/lsst/images/serialization/_tables.py TableColumnModel.from_record_dtype   73% 11 3 0   75% 4 1   73%
python/lsst/images/serialization/_tables.py TableColumnModel.from_record_array   0% 12 12 0   0% 6 0   0%
python/lsst/images/serialization/_tables.py TableColumnModel.from_table   100% 1 0 0   100% 0 0   100%
python/lsst/images/serialization/_tables.py TableColumnModel.from_column   67% 6 2 0   100% 0 0   67%
python/lsst/images/serialization/_tables.py TableColumnModel.update_table   0% 7 7 0   0% 4 0   0%
python/lsst/images/serialization/_tables.py (no function)   100% 35 0 2   100% 0 0   100%
python/lsst/images/tests/__init__.py (no function)   100% 4 0 0   100% 0 0   100%
python/lsst/images/tests/_checks.py assert_close   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_checks.py assert_equal_allow_nan   0% 5 5 0   0% 2 0   0%
python/lsst/images/tests/_checks.py assert_images_equal   100% 11 0 0   100% 6 0   100%
python/lsst/images/tests/_checks.py assert_masks_equal   100% 5 0 0   100% 0 0   100%
python/lsst/images/tests/_checks.py assert_masked_images_equal   100% 5 0 0   100% 0 0   100%
python/lsst/images/tests/_checks.py assert_psfs_equal   93% 15 1 0   67% 6 2   86%
python/lsst/images/tests/_checks.py assert_visit_images_equal   100% 12 0 0   100% 0 0   100%
python/lsst/images/tests/_checks.py assert_cell_coadds_equal   0% 9 9 0   100% 0 0   0%
python/lsst/images/tests/_checks.py compare_image_to_legacy   100% 5 0 0   50% 4 2   78%
python/lsst/images/tests/_checks.py compare_mask_to_legacy   100% 5 0 0   75% 4 1   89%
python/lsst/images/tests/_checks.py compare_masked_image_to_legacy   40% 10 6 0   12% 8 1   28%
python/lsst/images/tests/_checks.py compare_visit_image_to_legacy   0% 29 29 0   0% 18 0   0%
python/lsst/images/tests/_checks.py compare_photo_calib_to_legacy   0% 11 11 0   0% 8 0   0%
python/lsst/images/tests/_checks.py compare_cell_coadd_to_legacy   0% 34 34 0   0% 14 0   0%
python/lsst/images/tests/_checks.py compare_cell_coadd_provenance_to_legacy   0% 29 29 0   0% 4 0   0%
python/lsst/images/tests/_checks.py compare_psf_to_legacy   0% 17 17 0   0% 8 0   0%
python/lsst/images/tests/_checks.py compare_field_to_legacy   62% 16 6 0   50% 4 2   60%
python/lsst/images/tests/_checks.py compare_aperture_corrections_to_legacy   0% 3 3 0   0% 2 0   0%
python/lsst/images/tests/_checks.py compare_observation_summary_stats_to_legacy   0% 7 7 0   0% 6 0   0%
python/lsst/images/tests/_checks.py compare_sky_projection_to_legacy_wcs   0% 15 15 0   0% 2 0   0%
python/lsst/images/tests/_checks.py check_transform   100% 30 0 0   100% 6 0   100%
python/lsst/images/tests/_checks.py check_projection   0% 19 19 0   0% 2 0   0%
python/lsst/images/tests/_checks.py assert_sky_projections_equal   100% 12 0 0   100% 8 0   100%
python/lsst/images/tests/_checks.py check_astropy_wcs_interface   0% 6 6 0   100% 0 0   0%
python/lsst/images/tests/_checks.py legacy_points_to_xy_array   0% 1 1 0   100% 0 0   0%
python/lsst/images/tests/_checks.py legacy_coords_to_astropy   0% 1 1 0   100% 0 0   0%
python/lsst/images/tests/_checks.py arrays_to_legacy_points   0% 2 2 0   100% 0 0   0%
python/lsst/images/tests/_checks.py compare_amplifier_to_legacy   0% 24 24 0   0% 4 0   0%
python/lsst/images/tests/_checks.py compare_detector_to_legacy   0% 25 25 0   0% 2 0   0%
python/lsst/images/tests/_checks.py iter_concrete_archive_tree_subclasses   91% 11 1 0   75% 8 2   84%
python/lsst/images/tests/_checks.py check_archive_tree_class_invariants   100% 12 0 0   100% 0 0   100%
python/lsst/images/tests/_checks.py (no function)   100% 54 0 9   100% 0 0   100%
python/lsst/images/tests/_creation.py make_random_sky_projection   100% 3 0 0   100% 0 0   100%
python/lsst/images/tests/_creation.py (no function)   100% 8 0 0   100% 0 0   100%
python/lsst/images/tests/_data_ids.py (no function)   100% 6 0 0   100% 0 0   100%
python/lsst/images/tests/_minify_for_fixtures.py minify   40% 5 3 0   100% 0 0   40%
python/lsst/images/tests/_minify_for_fixtures.py _dispatch   67% 6 2 1   50% 4 2   60%
python/lsst/images/tests/_minify_for_fixtures.py _subset_visit_image   0% 16 16 0   0% 6 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _linear_approx_projection   0% 12 12 0   100% 0 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _affine_polymap_coeffs   0% 8 8 0   0% 4 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _simplify_piff_psf   0% 13 13 0   0% 4 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _simplify_piff_psf._terms   0% 2 2 0   100% 0 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _subset_cell_coadd   0% 47 47 0   0% 10 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _subset_cell_coadd.shrink2d   0% 1 1 0   100% 0 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _subset_cell_coadd.shrink3d   0% 1 1 0   100% 0 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _trim_provenance   0% 8 8 0   0% 2 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _choose_block_bbox   0% 15 15 0   0% 2 0   0%
python/lsst/images/tests/_minify_for_fixtures.py _scale_box_to_grid   0% 7 7 0   100% 0 0   0%
python/lsst/images/tests/_minify_for_fixtures.py (no function)   100% 34 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py TemporaryButler.__init__   100% 5 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py TemporaryButler.__enter__   79% 24 5 0   80% 10 2   79%
python/lsst/images/tests/_roundtrip.py TemporaryButler.__exit__   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py TemporaryButler.__getattr__   0% 1 1 0   100% 0 0   0%
python/lsst/images/tests/_roundtrip.py RoundtripBase.__init__   100% 12 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripBase.__enter__   100% 13 0 0   100% 8 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripBase.__exit__   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripBase.filename   100% 4 0 0   100% 2 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripBase.serialized   0% 5 5 0   0% 2 0   0%
python/lsst/images/tests/_roundtrip.py RoundtripBase.get   75% 20 5 0   75% 20 1   75%
python/lsst/images/tests/_roundtrip.py RoundtripBase._run_with_butler   100% 11 0 0   50% 2 1   92%
python/lsst/images/tests/_roundtrip.py RoundtripBase._run_without_butler   100% 7 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripBase._get_extension   100% 0 0 1   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripBase._write   100% 0 0 1   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripFits.inspect   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripFits._get_extension   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripFits._write   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripJson.inspect   0% 2 2 0   100% 0 0   0%
python/lsst/images/tests/_roundtrip.py RoundtripJson._get_extension   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripJson._write   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripNdf.inspect   100% 2 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripNdf._get_extension   100% 1 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py RoundtripNdf._write   100% 2 0 0   100% 0 0   100%
python/lsst/images/tests/_roundtrip.py (no function)   96% 53 2 2   100% 0 0   96%
python/lsst/images/tests/extract_legacy_test_data.py extract_exposure   0% 14 14 0   0% 2 0   0%
python/lsst/images/tests/extract_legacy_test_data.py extract_visit_image_background   0% 2 2 0   100% 0 0   0%
python/lsst/images/tests/extract_legacy_test_data.py extract_visit_summary   0% 2 2 0   100% 0 0   0%
python/lsst/images/tests/extract_legacy_test_data.py extract_cell_coadd   0% 17 17 0   0% 8 0   0%
python/lsst/images/tests/extract_legacy_test_data.py extract_camera   0% 3 3 0   100% 0 0   0%
python/lsst/images/tests/extract_legacy_test_data.py extract_skymap   0% 4 4 0   0% 2 0   0%
python/lsst/images/tests/extract_legacy_test_data.py find_dataset_or_raise   0% 4 4 0   0% 2 0   0%
python/lsst/images/tests/extract_legacy_test_data.py extract_test_data   100% 0 0 0   100% 0 0   100%
python/lsst/images/tests/extract_legacy_test_data.py extract_dp2   0% 26 26 0   0% 14 0   0%
python/lsst/images/tests/extract_legacy_test_data.py (no function)   100% 26 0 4   100% 0 0   100%
python/lsst/images/tests/verify_rewrite.py verify_rewrite   100% 0 0 0   100% 0 0   100%
python/lsst/images/tests/verify_rewrite.py verify_stage4_rewrite   0% 18 18 0   0% 4 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.__init__   0% 6 6 0   100% 0 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.process   0% 8 8 0   100% 0 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.get_old   0% 5 5 0   0% 2 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.get_new   0% 4 4 0   0% 2 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.print   0% 3 3 0   0% 2 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.compare_images   0% 21 21 0   0% 14 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.compare_tables   0% 29 29 0   0% 18 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.require_compressed   0% 13 13 0   0% 8 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.print_log_diff   0% 8 8 0   0% 2 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.print_mask_diff   0% 13 13 0   0% 8 0   0%
python/lsst/images/tests/verify_rewrite.py RewriteVerifier.print_mask_diff.interpret_mask_value   0% 1 1 0   100% 0 0   0%
python/lsst/images/tests/verify_rewrite.py (no function)   100% 31 0 5   100% 0 0   100%
python/lsst/images/utils.py round_half_up   100% 1 0 0   100% 0 0   100%
python/lsst/images/utils.py round_half_down   100% 1 0 0   100% 0 0   100%
python/lsst/images/utils.py round_half_away_from_zero   100% 3 0 0   100% 2 0   100%
python/lsst/images/utils.py (no function)   92% 13 1 2   50% 2 1   87%
python/lsst/images/version.py (no function)   100% 5 0 0   100% 0 0   100%
tests/test_cameras.py CamerasTestCase.setUpClass   0% 2 2 0   100% 0 0   0%
tests/test_cameras.py CamerasTestCase.test_visit_image_detector_legacy_conversions   0% 6 6 0   100% 0 0   0%
tests/test_cameras.py CamerasTestCase.test_camera_detector_legacy_conversions   0% 13 13 0   0% 4 0   0%
tests/test_cameras.py CamerasTestCase.test_expanded_detector_roundtrip   0% 10 10 0   0% 2 0   0%
tests/test_cameras.py ReadoutCornerTestCase.test_as_flips   100% 4 0 0   100% 0 0   100%
tests/test_cameras.py ReadoutCornerTestCase.test_flips_roundtrip   100% 3 0 0   100% 2 0   100%
tests/test_cameras.py ReadoutCornerTestCase.test_apply_flips   100% 6 0 0   100% 2 0   100%
tests/test_cameras.py (no function)   100% 23 0 6   100% 0 0   100%
tests/test_cell_coadd.py CellCoaddTestCase.setUpClass   0% 12 12 0   100% 0 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.make_psf_points   0% 2 2 0   100% 0 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.setUp   0% 2 2 0   100% 0 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.test_from_legacy   0% 3 3 0   100% 0 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.test_roundtrip   0% 28 28 0   0% 2 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.test_fits_compression   0% 10 10 0   0% 4 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.test_fits_json_consistency   0% 4 4 0   100% 0 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.test_to_legacy   0% 2 2 0   100% 0 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.test_to_legacy_exposure   0% 6 6 0   100% 0 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.test_round_trip_ndf   0% 2 2 0   100% 0 0   0%
tests/test_cell_coadd.py CellCoaddTestCase.test_fits_ndf_consistency   0% 4 4 0   100% 0 0   0%
tests/test_cell_coadd.py (no function)   94% 32 2 2   100% 0 0   94%
tests/test_cli.py CliSkeletonTestCase.test_group_help   100% 4 0 0   100% 0 0   100%
tests/test_cli.py CliSkeletonTestCase.test_python_m_entry_point   100% 4 0 0   100% 0 0   100%
tests/test_cli.py InspectTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_cli.py InspectTestCase.test_inspect_fits   100% 6 0 0   100% 0 0   100%
tests/test_cli.py InspectTestCase.test_inspect_json   100% 6 0 0   100% 0 0   100%
tests/test_cli.py InspectTestCase.test_inspect_fits_python_class   100% 6 0 0   100% 0 0   100%
tests/test_cli.py InspectTestCase.test_inspect_json_python_class   100% 6 0 0   100% 0 0   100%
tests/test_cli.py InspectTestCase.test_inspect_unregistered_schema   100% 7 0 0   100% 0 0   100%
tests/test_cli.py InspectTestCase.test_inspect_unknown_extension   100% 6 0 0   100% 0 0   100%
tests/test_cli.py ReformatTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_cli.py ReformatTestCase.test_reformat_round_trip_json_fits_json   100% 10 0 0   100% 0 0   100%
tests/test_cli.py ReformatTestCase.test_reformat_refuses_existing_output   100% 7 0 0   100% 0 0   100%
tests/test_cli.py ReformatTestCase.test_reformat_unknown_output_extension   100% 5 0 0   100% 0 0   100%
tests/test_cli.py ConvertDetectTestCase._make   100% 8 0 0   100% 2 0   100%
tests/test_cli.py ConvertDetectTestCase.test_detect_visit_image   100% 3 0 0   100% 0 0   100%
tests/test_cli.py ConvertDetectTestCase.test_detect_cell_coadd   100% 2 0 0   100% 0 0   100%
tests/test_cli.py ConvertDetectTestCase.test_detect_indeterminate   100% 3 0 0   100% 0 0   100%
tests/test_cli.py ConvertDetectTestCase.test_detect_visit_image_fixture   0% 3 3 0   100% 0 0   0%
tests/test_cli.py ConvertVisitImageTestCase.test_convert_visit_image_to_json   0% 11 11 0   100% 0 0   0%
tests/test_cli.py ConvertVisitImageTestCase.test_convert_refuses_existing_output   0% 12 12 0   100% 0 0   0%
tests/test_cli.py ConvertCellCoaddTestCase.test_convert_cell_coadd_to_json   0% 13 13 0   100% 0 0   0%
tests/test_cli.py ConvertCellCoaddTestCase.test_convert_cell_coadd_requires_skymap   0% 10 10 0   100% 0 0   0%
tests/test_cli.py ConvertPreserveQuantizationTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_cli.py ConvertPreserveQuantizationTestCase._make_input   100% 3 0 0   100% 0 0   100%
tests/test_cli.py ConvertPreserveQuantizationTestCase.test_default_is_true   100% 3 0 0   100% 0 0   100%
tests/test_cli.py ConvertPreserveQuantizationTestCase.test_explicit_flag_rejected_for_cell_coadd   100% 5 0 0   100% 0 0   100%
tests/test_cli.py ConvertPreserveQuantizationTestCase.test_default_does_not_reject_cell_coadd   100% 4 0 0   100% 0 0   100%
tests/test_cli.py ConvertPreserveQuantizationTestCase.test_forwarded_to_read_legacy   100% 4 0 0   100% 0 0   100%
tests/test_cli.py CliRegistrationTestCase.test_subcommands_present   100% 7 0 0   100% 0 0   100%
tests/test_cli.py CliRegistrationTestCase.test_minify_help   100% 2 0 0   100% 0 0   100%
tests/test_cli.py CliRegistrationTestCase.test_extract_test_data_help   100% 2 0 0   100% 0 0   100%
tests/test_cli.py CliRegistrationTestCase.test_verify_rewrite_help   100% 5 0 0   100% 0 0   100%
tests/test_cli.py CliRegistrationTestCase.test_short_help_alias   100% 5 0 0   100% 2 0   100%
tests/test_cli.py ConvertSafetyTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_cli.py ConvertSafetyTestCase._make_input   100% 3 0 0   100% 0 0   100%
tests/test_cli.py ConvertSafetyTestCase.test_rejects_identical_paths   100% 5 0 0   100% 0 0   100%
tests/test_cli.py ConvertSafetyTestCase.test_preserves_existing_output_on_read_failure   100% 9 0 0   100% 0 0   100%
tests/test_cli.py (no function)   100% 68 0 0   100% 0 0   100%
tests/test_color_image.py ColorImageTestCase.setUp   100% 7 0 0   100% 0 0   100%
tests/test_color_image.py ColorImageTestCase.test_properties   100% 6 0 0   100% 0 0   100%
tests/test_color_image.py ColorImageTestCase.test_constructor   100% 2 0 0   100% 0 0   100%
tests/test_color_image.py ColorImageTestCase.test_fits_roundtrip   100% 3 0 0   100% 0 0   100%
tests/test_color_image.py ColorImageTestCase.test_ndf_roundtrip   100% 3 0 0   100% 0 0   100%
tests/test_color_image.py ColorImageTestCase.test_fits_json_consistency   100% 4 0 0   100% 0 0   100%
tests/test_color_image.py ColorImageTestCase.test_ndf_layout   100% 15 0 0   100% 2 0   100%
tests/test_color_image.py ColorImageTestCase.assert_color_images_equal   100% 5 0 0   75% 4 1   89%
tests/test_color_image.py _cls   75% 4 1 0   50% 2 1   67%
tests/test_color_image.py (no function)   91% 23 2 2   100% 0 0   91%
tests/test_detached_archive.py ArchiveAccessRequiredErrorTestCase.test_exception_hierarchy   100% 2 0 0   100% 0 0   100%
tests/test_detached_archive.py DetachedArchiveTestCase.setUp   100% 1 0 0   100% 0 0   100%
tests/test_detached_archive.py DetachedArchiveTestCase.test_deserialize_pointer_raises   100% 2 0 0   100% 0 0   100%
tests/test_detached_archive.py DetachedArchiveTestCase.test_get_frame_set_raises   100% 2 0 0   100% 0 0   100%
tests/test_detached_archive.py DetachedArchiveTestCase.test_get_array_raises   100% 2 0 0   100% 0 0   100%
tests/test_detached_archive.py DetachedArchiveTestCase.test_get_table_raises   100% 2 0 0   100% 0 0   100%
tests/test_detached_archive.py DetachedArchiveTestCase.test_get_structured_array_raises   100% 2 0 0   100% 0 0   100%
tests/test_detached_archive.py DetachedArchiveTestCase.test_get_opaque_metadata_is_none   100% 1 0 0   100% 0 0   100%
tests/test_detached_archive.py ComponentProbeTestCase.setUp   100% 5 0 0   100% 0 0   100%
tests/test_detached_archive.py ComponentProbeTestCase._get_tree   100% 4 0 0   100% 0 0   100%
tests/test_detached_archive.py ComponentProbeTestCase.test_free_components   100% 5 0 0   100% 2 0   100%
tests/test_detached_archive.py ComponentProbeTestCase.test_pixel_components_need_file   100% 5 0 0   100% 2 0   100%
tests/test_detached_archive.py ComponentProbeTestCase.test_json_pixel_components_need_file   100% 3 0 0   100% 0 0   100%
tests/test_detached_archive.py ComponentProbeTestCase.test_invalid_component_propagates   100% 3 0 0   100% 0 0   100%
tests/test_detached_archive.py (no function)   100% 26 0 2   100% 0 0   100%
tests/test_diagram.py BuildGraphTestCase.test_scalar_and_nested_model   100% 12 0 0   100% 0 0   100%
tests/test_diagram.py BuildGraphTestCase.test_container_and_union_cardinalities   100% 13 0 0   100% 0 0   100%
tests/test_diagram.py BuildGraphTestCase.test_optional_containers_are_model_references   100% 10 0 0   100% 0 0   100%
tests/test_diagram.py BuildGraphTestCase.test_scalar_type_strings_are_readable   100% 8 0 0   100% 0 0   100%
tests/test_diagram.py BuildGraphTestCase.test_type_alias_union_is_resolved   100% 4 0 0   100% 0 0   100%
tests/test_diagram.py BuildGraphTestCase.test_self_referential_model_does_not_loop   100% 5 0 0   100% 0 0   100%
tests/test_diagram.py RealModelTestCase.test_visit_image   100% 13 0 0   100% 2 0   100%
tests/test_diagram.py RealModelTestCase.test_cell_coadd   100% 6 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_collapsed_type_is_a_leaf   100% 7 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_make_policy_expand_and_collapse   100% 4 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_make_policy_expand_leaves_clears_defaults   100% 1 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_include_attributes_false_elides_scalars   100% 4 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_all_scalar_model_becomes_leaf_without_attributes   100% 4 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_instance_attributes_can_be_elided   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_public_names_relabel_real_model   100% 8 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_public_names_collapse_matches_either_name   100% 5 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_hide_fields_drops_named_fields   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_hide_type_removes_nodes_and_edges   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_hide_type_matches_public_name   100% 5 0 0   100% 0 0   100%
tests/test_diagram.py PolicyTestCase.test_default_collapses_asdf_helpers_in_real_model   100% 11 0 0   100% 0 0   100%
tests/test_diagram.py InstanceGraphTestCase.test_union_collapses_to_concrete_member   100% 10 0 0   100% 0 0   100%
tests/test_diagram.py InstanceGraphTestCase.test_populated_container_shows_only_present_types   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py InstanceGraphTestCase.test_repeated_instances_merge_nested_concrete_types   100% 6 0 0   100% 0 0   100%
tests/test_diagram.py InstanceGraphTestCase.test_hide_type_instance_mode   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py InstanceGraphTestCase.test_empty_container_yields_no_edge   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py InstanceGraphTestCase.test_graph_from_file_collapses_psf   100% 7 0 0   100% 0 0   100%
tests/test_diagram.py EmitterTestCase.setUp   100% 1 0 0   100% 0 0   100%
tests/test_diagram.py EmitterTestCase.test_dot   100% 7 0 0   100% 0 0   100%
tests/test_diagram.py EmitterTestCase.test_mermaid   100% 7 0 0   100% 0 0   100%
tests/test_diagram.py EmitterTestCase.test_tree   100% 6 0 0   100% 0 0   100%
tests/test_diagram.py EmitterTestCase.test_mermaid_real_model_is_bracket_safe   100% 7 0 0   100% 0 0   100%
tests/test_diagram.py EmitterTestCase.test_unknown_format_raises   100% 2 0 0   100% 0 0   100%
tests/test_diagram.py EmitterTestCase.test_deterministic   100% 2 0 0   100% 2 0   100%
tests/test_diagram.py DiagramCliTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.invoke   100% 1 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_registered_in_group   100% 2 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_list   100% 4 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_list_includes_entry_point_schemas   100% 6 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_model_default_mermaid   100% 5 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_serialization_names_flag   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_model_tree_and_dot_formats   100% 7 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_unknown_model_errors   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_model_and_file_are_mutually_exclusive   100% 2 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_from_file_collapses_psf   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_output_to_file   100% 6 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_scalars_hidden_by_default   100% 6 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_attributes_flag_shows_scalars   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_hide_field_clips_edges   100% 6 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_hide_type_removes_type   100% 4 0 0   100% 0 0   100%
tests/test_diagram.py DiagramCliTestCase.test_expand_leaves_changes_output   100% 3 0 0   100% 0 0   100%
tests/test_diagram.py (no function)   100% 116 0 2   100% 0 0   100%
tests/test_fields.py FieldTestCase.setUp   100% 6 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_chebyshev_call_limits   100% 5 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_chebyshev_attributes   100% 6 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_chebyshev_fit   100% 33 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_chebyshev_evaluation_consistency   100% 1 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_chebyshev_units   100% 1 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_spline_knot_evaluation   100% 3 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_spline_evaluation_consistency   100% 1 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_spline_units   100% 1 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_product_evaluation   100% 3 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_product_evaluation_consistency   100% 1 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_product_units   100% 4 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_sum_evaluation   100% 3 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_sum_evaluation_consistency   100% 1 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.test_sum_units   100% 14 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.check_evaluation_consistency   100% 10 0 0   100% 0 0   100%
tests/test_fields.py FieldTestCase.check_units   100% 8 0 0   100% 0 0   100%
tests/test_fields.py FieldLegacyTestCase.setUp   100% 6 0 0   100% 0 0   100%
tests/test_fields.py FieldLegacyTestCase.test_chebyshev_roundtrip   100% 7 0 0   100% 0 0   100%
tests/test_fields.py FieldLegacyTestCase.test_product_roundtrip   100% 7 0 0   100% 0 0   100%
tests/test_fields.py FieldLegacyTestCase.test_spline_simple   100% 9 0 0   100% 0 0   100%
tests/test_fields.py FieldLegacyTestCase.test_spline_one_nan   100% 10 0 0   100% 0 0   100%
tests/test_fields.py FieldLegacyDataTestCase.test_visit_background   0% 5 5 0   100% 0 0   0%
tests/test_fields.py (no function)   96% 45 2 2   100% 0 0   96%
tests/test_fits_date_header.py FitsDateHeaderTestCase.setUp   100% 1 0 0   100% 0 0   100%
tests/test_fits_date_header.py FitsDateHeaderTestCase.test_every_hdu_has_a_fits_compliant_date   100% 14 0 0   100% 2 0   100%
tests/test_fits_date_header.py FitsDateHeaderTestCase.test_update_header_cannot_set_a_stale_primary_date   100% 9 0 0   100% 0 0   100%
tests/test_fits_date_header.py FitsDateHeaderTestCase.test_date_is_not_captured_as_opaque_metadata   100% 7 0 0   100% 0 0   100%
tests/test_fits_date_header.py (no function)   100% 13 0 2   100% 0 0   100%
tests/test_fits_format_version.py _write_simple_image_fits   100% 2 0 0   100% 0 0   100%
tests/test_fits_format_version.py FitsFormatVersionTestCase.test_write_emits_fmtver_and_datamodl   100% 6 0 0   100% 0 0   100%
tests/test_fits_format_version.py FitsFormatVersionTestCase.test_read_succeeds_when_fmtver_matches   100% 5 0 0   100% 0 0   100%
tests/test_fits_format_version.py FitsFormatVersionTestCase.test_read_fails_when_fmtver_too_high   89% 9 1 0   50% 2 1   82%
tests/test_fits_format_version.py FitsFormatVersionTestCase.test_read_succeeds_when_fmtver_absent   100% 11 0 0   50% 4 2   87%
tests/test_fits_format_version.py (no function)   100% 14 0 2   100% 0 0   100%
tests/test_fits_output_archive.py _TinyTree.deserialize   100% 0 0 1   100% 0 0   100%
tests/test_fits_output_archive.py FitsOutputArchiveNameRegistryTestCase._write_archive   100% 7 0 0   100% 0 0   100%
tests/test_fits_output_archive.py FitsOutputArchiveNameRegistryTestCase.test_repeated_direct_names_get_increasing_extver   100% 6 0 0   100% 0 0   100%
tests/test_fits_output_archive.py FitsOutputArchiveNameRegistryTestCase.test_repeated_direct_names_get_increasing_extver.body   100% 2 0 0   100% 0 0   100%
tests/test_fits_output_archive.py FitsOutputArchiveNameRegistryTestCase.test_direct_and_pointer_target_names_do_not_collide   100% 7 0 0   100% 0 0   100%
tests/test_fits_output_archive.py FitsOutputArchiveNameRegistryTestCase.test_direct_and_pointer_target_names_do_not_collide.serializer   100% 3 0 0   100% 0 0   100%
tests/test_fits_output_archive.py FitsOutputArchiveNameRegistryTestCase.test_direct_and_pointer_target_names_do_not_collide.body   100% 2 0 0   100% 0 0   100%
tests/test_fits_output_archive.py (no function)   100% 21 0 1   100% 0 0   100%
tests/test_formatter_cache.py _count_ser_opens   100% 1 0 0   100% 0 0   100%
tests/test_formatter_cache.py FormatterComponentCacheTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_formatter_cache.py FormatterComponentCacheTestCase._reset_cache   100% 1 0 0   100% 0 0   100%
tests/test_formatter_cache.py FormatterComponentCacheTestCase.test_free_component_reads_share_one_open   100% 12 0 0   100% 0 0   100%
tests/test_formatter_cache.py FormatterComponentCacheTestCase.test_cached_components_are_independent   100% 12 0 0   100% 0 0   100%
tests/test_formatter_cache.py FormatterComponentCacheTestCase.test_pixel_component_falls_back_to_file   100% 9 0 0   100% 0 0   100%
tests/test_formatter_cache.py FormatterComponentCacheTestCase.test_parameterized_read_bypasses_cache   100% 11 0 0   100% 0 0   100%
tests/test_formatter_cache.py FormatterComponentCacheTestCase.test_full_read_populates_cache   100% 7 0 0   100% 0 0   100%
tests/test_formatter_cache.py FormatterComponentCacheTestCase.test_cache_invalidated_across_datasets   100% 11 0 0   100% 0 0   100%
tests/test_formatter_cache.py (no function)   93% 27 2 2   100% 0 0   93%
tests/test_from_hdu_list.py ReadOffsetWcsTestCase.test_round_trip   100% 3 0 0   100% 0 0   100%
tests/test_from_hdu_list.py ReadOffsetWcsTestCase.test_absent_returns_none   100% 1 0 0   100% 0 0   100%
tests/test_from_hdu_list.py ReadOffsetWcsTestCase.test_other_key_ignored   100% 3 0 0   100% 0 0   100%
tests/test_from_hdu_list.py ReadYx0TestCase.test_from_offset_wcs   100% 4 0 0   100% 0 0   100%
tests/test_from_hdu_list.py ReadYx0TestCase.test_from_ltv   100% 5 0 0   100% 0 0   100%
tests/test_from_hdu_list.py ReadYx0TestCase.test_missing_raises   100% 2 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase._build_masked_image   100% 11 0 0   100% 2 0   100%
tests/test_from_hdu_list.py FromHduListTestCase._cutdown   100% 9 0 0   100% 2 0   100%
tests/test_from_hdu_list.py FromHduListTestCase._legacy_masked_image_hdu_list   100% 13 0 0   100% 6 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_masked_image_round_trip   100% 4 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_legacy_non_cell_coadd_from_hdu_list   100% 9 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_masked_image_round_trip_with_projection   100% 11 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_mask_planes_repacked_across_byte_boundary   100% 7 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_image_from_hdu_list_reads_first_two_hdus   100% 5 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_missing_mask_schema_raises   100% 6 0 0   100% 2 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_multiple_mask_hdus_raises   100% 7 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_primary_header_preserved   100% 10 0 0   100% 0 0   100%
tests/test_from_hdu_list.py FromHduListTestCase.test_primary_header_preserved.add_card   100% 1 0 0   100% 0 0   100%
tests/test_from_hdu_list.py LegacyMaskBranchTestCase.test_legacy_mp_ltv_path   100% 16 0 0   100% 0 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase.test_read_legacy_strip_false_keeps_cards   100% 7 0 0   100% 0 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase.test_read_legacy_default_strips_cards   100% 7 0 0   100% 0 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase._legacy_mask_hdu   100% 10 0 0   100% 4 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase._schema_index   100% 1 0 0   100% 0 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase.test_read_legacy_hdu_reindexes_retained_cards   100% 11 0 0   100% 0 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase.test_read_legacy_hdu_default_strips   100% 3 0 0   100% 0 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase._legacy_full_hdu_list   100% 9 0 0   100% 4 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase.test_from_hdu_list_round_trips_reindexed_mp_cards   100% 16 0 0   100% 0 0   100%
tests/test_from_hdu_list.py LegacyPlaneRetentionTestCase.test_normal_read_strips_mp_cards   100% 11 0 0   100% 0 0   100%
tests/test_from_hdu_list.py (no function)   100% 45 0 2   100% 0 0   100%
tests/test_fuzz.py ShuffleBlocksTestCase.test_consistency_even_blocks   100% 11 0 0   100% 4 0   100%
tests/test_fuzz.py ShuffleBlocksTestCase.test_partial_edge_blocks   100% 9 0 0   100% 0 0   100%
tests/test_fuzz.py _make_masked_image   100% 5 0 0   100% 0 0   100%
tests/test_fuzz.py FuzzMaskedImageCommandTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_fuzz.py FuzzMaskedImageCommandTestCase.test_help   100% 2 0 0   100% 0 0   100%
tests/test_fuzz.py FuzzMaskedImageCommandTestCase.test_no_files_errors   100% 2 0 0   100% 0 0   100%
tests/test_fuzz.py FuzzMaskedImageCommandTestCase.test_round_trip_fits   100% 15 0 0   100% 0 0   100%
tests/test_fuzz.py FuzzMaskedImageCommandTestCase.test_skips_existing_without_overwrite   100% 9 0 0   100% 0 0   100%
tests/test_fuzz.py (no function)   100% 21 0 2   100% 0 0   100%
tests/test_geom.py XYYXTestCase.test_yx   100% 9 0 0   100% 0 0   100%
tests/test_geom.py XYYXTestCase.test_yx._plus_one   100% 1 0 0   100% 0 0   100%
tests/test_geom.py XYYXTestCase.test_xy   100% 9 0 0   100% 0 0   100%
tests/test_geom.py XYYXTestCase.test_xy._plus_one   100% 1 0 0   100% 0 0   100%
tests/test_geom.py IntervalTestCase.test_constructor   100% 25 0 0   100% 0 0   100%
tests/test_geom.py IntervalTestCase.test_contains   100% 15 0 0   100% 0 0   100%
tests/test_geom.py IntervalTestCase.test_slice   100% 48 0 0   100% 0 0   100%
tests/test_geom.py IntervalTestCase.test_usage   100% 19 0 0   100% 0 0   100%
tests/test_geom.py IntervalTestCase.test_pydantic   100% 7 0 0   100% 0 0   100%
tests/test_geom.py IntervalTestCase.test_pickle   100% 4 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_constructor   100% 31 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_contains   100% 11 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_intersection   100% 5 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_slicing   100% 34 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_mesh   100% 23 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_boundary   100% 6 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_pydantic   100% 6 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_pickle   100% 4 0 0   100% 0 0   100%
tests/test_geom.py BoxTestCase.test_bix_from_float_bounds   100% 2 0 0   100% 0 0   100%
tests/test_geom.py (no function)   100% 32 0 2   100% 0 0   100%
tests/test_image.py ImageTestCase.test_basics   100% 25 0 0   100% 0 0   100%
tests/test_image.py ImageTestCase.test_json_roundtrip   100% 4 0 0   100% 0 0   100%
tests/test_image.py ImageTestCase.test_fits_roundtrip   100% 5 0 0   100% 0 0   100%
tests/test_image.py ImageTestCase.test_ndf_roundtrip   100% 4 0 0   100% 0 0   100%
tests/test_image.py ImageTestCase.test_fits_ndf_consistency   100% 6 0 0   100% 0 0   100%
tests/test_image.py ImageTestCase.test_fits_json_consistency   100% 6 0 0   100% 0 0   100%
tests/test_image.py ImageTestCase.test_quantity   100% 11 0 0   100% 0 0   100%
tests/test_image.py ImageTestCase.test_read_write   100% 22 0 0   100% 0 0   100%
tests/test_image.py ImageTestCase.test_legacy   0% 25 25 0   100% 0 0   0%
tests/test_image.py (no function)   93% 28 2 2   100% 0 0   93%
tests/test_json_schema.py JsonSchemaTestCase._check   100% 6 0 0   100% 0 0   100%
tests/test_json_schema.py JsonSchemaTestCase.test_visit_image   100% 3 0 0   100% 2 0   100%
tests/test_json_schema.py JsonSchemaTestCase.test_cell_coadd   100% 3 0 0   100% 2 0   100%
tests/test_json_schema.py (no function)   100% 9 0 2   100% 0 0   100%
tests/test_legacy.py LegacyConversionTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_legacy.py LegacyConversionTestCase.test_interval   100% 7 0 0   100% 0 0   100%
tests/test_legacy.py LegacyConversionTestCase.test_box   100% 9 0 0   100% 0 0   100%
tests/test_legacy.py LegacyConversionTestCase.test_image   100% 7 0 0   100% 0 0   100%
tests/test_legacy.py LegacyConversionTestCase.test_fits_compression_from_recipe   100% 3 0 0   100% 0 0   100%
tests/test_legacy.py (no function)   89% 18 2 2   100% 0 0   89%
tests/test_mask.py MaskTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.make_mask_planes   100% 6 0 0   100% 2 0   100%
tests/test_mask.py MaskTestCase.test_schema   100% 34 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_schema_from_fits_header   100% 8 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_schema_from_fits_header_preserves_gaps   100% 4 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_schema_from_fits_header_requires_cards   100% 2 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_basics   100% 18 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_read_write   100% 10 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_serialize_multi   100% 25 0 0   100% 8 0   100%
tests/test_mask.py MaskTestCase.test_add_plane_returns_new_mask   100% 21 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_add_plane_grows_byte   100% 20 0 0   100% 4 0   100%
tests/test_mask.py MaskTestCase.test_add_planes_multiple   100% 11 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_add_planes_drop_reassigns_bits   100% 17 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_add_planes_with_placeholder   100% 19 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_add_planes_drop_unknown_raises   100% 3 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_add_plane_duplicate_raises   100% 5 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_add_plane_roundtrip   100% 12 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_legacy_non_cell_coadd_plane_map   100% 3 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_guess_legacy_plane_map_coadd_discriminator   100% 4 0 0   100% 0 0   100%
tests/test_mask.py MaskTestCase.test_legacy   0% 25 25 0   100% 0 0   0%
tests/test_mask.py (no function)   100% 32 0 2   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.setUp   100% 6 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_construction   100% 32 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_subset   100% 6 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_mask_setter   100% 9 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_fits_roundtrip   89% 19 2 0   100% 0 0   89%
tests/test_masked_image.py MaskedImageTestCase.test_fits_roundtrip_lossy   100% 14 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_round_trip_ndf_compatible_mask   100% 2 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_round_trip_ndf_incompatible_mask   100% 6 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_round_trip_ndf_many_plane_mask   100% 9 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_fits_ndf_consistency   100% 4 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_fits_json_consistency   100% 4 0 0   100% 0 0   100%
tests/test_masked_image.py MaskedImageTestCase.test_legacy   0% 13 13 0   100% 0 0   0%
tests/test_masked_image.py (no function)   94% 34 2 2   100% 0 0   94%
tests/test_ndf_common.py NdfPointerModelTestCase.setUp   100% 1 0 0   100% 0 0   100%
tests/test_ndf_common.py NdfPointerModelTestCase.test_round_trips_through_json   100% 4 0 0   100% 0 0   100%
tests/test_ndf_common.py NdfPointerModelTestCase.test_archive_path_to_hdf5_path   100% 3 0 0   100% 0 0   100%
tests/test_ndf_common.py NdfPointerModelTestCase.test_archive_path_shrinks_long_components   100% 5 0 0   100% 0 0   100%
tests/test_ndf_common.py NdfPointerModelTestCase.test_archive_path_shrink_round_trips_to_same_value   100% 1 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.setUp   100% 1 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_short_names_pass_through_uppercased   100% 3 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_long_names_keep_prefix_and_get_counter_token   100% 3 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_shrink_is_deterministic_per_instance   100% 1 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_distinct_long_names_get_distinct_tokens   100% 2 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_reserve_shortens_the_budget   100% 2 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_version_one_matches_plain_shrink   100% 1 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_short_versioned_name_keeps_visible_suffix   100% 1 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_long_versioned_name_preserves_suffix_within_limit   100% 3 0 0   100% 0 0   100%
tests/test_ndf_common.py HdsNameShrinkerTestCase.test_same_base_different_versions_are_distinct   100% 1 0 0   100% 0 0   100%
tests/test_ndf_common.py (no function)   93% 27 2 0   100% 0 0   93%
tests/test_ndf_format_version.py _write_simple_image_ndf   100% 3 0 0   100% 0 0   100%
tests/test_ndf_format_version.py NdfFormatVersionTestCase.test_write_emits_data_model_and_format_version   100% 6 0 0   100% 0 0   100%
tests/test_ndf_format_version.py NdfFormatVersionTestCase.test_read_succeeds_when_format_version_matches   100% 6 0 0   100% 0 0   100%
tests/test_ndf_format_version.py NdfFormatVersionTestCase.test_read_fails_when_format_version_too_high   91% 11 1 0   50% 4 2   80%
tests/test_ndf_format_version.py NdfFormatVersionTestCase.test_read_succeeds_when_format_version_absent   100% 11 0 0   50% 4 2   87%
tests/test_ndf_format_version.py (no function)   89% 19 2 2   100% 0 0   89%
tests/test_ndf_hds.py _attr_str   40% 5 3 0   25% 4 1   33%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_real_array_round_trip   100% 10 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_double_array_round_trip   100% 7 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_ubyte_and_integer   100% 11 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_logical_uses_hdf5_bitfield   100% 11 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_unsupported_dtype_raises_on_write   100% 4 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_unsupported_dtype_raises_on_read   100% 6 0 0   100% 2 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_read_array_rejects_char_dataset   100% 6 0 0   100% 2 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_char_array_round_trip   100% 10 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_char_array_pads_and_strips   100% 6 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_char_array_rejects_long_lines   100% 3 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_char_array_rejects_non_ascii   100% 3 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_ndf_ast_data_encoding_uses_flagged_fixed_width_records   100% 8 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_read_char_array_rejects_numeric_dataset   100% 6 0 0   100% 2 0   100%
tests/test_ndf_hds.py HdsPrimitiveTestCase.test_hds_type_for_dtype   100% 8 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsStructureTestCase.test_create_open_structure   100% 13 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsStructureTestCase.test_open_structure_missing_class_raises   100% 6 0 0   100% 2 0   100%
tests/test_ndf_hds.py HdsStructureTestCase.test_open_structure_accepts_legacy_hdstype   100% 7 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsStructureTestCase.test_set_root_name   100% 6 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsCanonicalExampleTestCase.test_root_is_ndf_with_root_name   100% 3 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsCanonicalExampleTestCase.test_data_array_is_array_structure   100% 12 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsCanonicalExampleTestCase.test_wcs_is_structure_with_ast_text   100% 8 0 0   100% 0 0   100%
tests/test_ndf_hds.py HdsCanonicalExampleTestCase.test_more_fits_present   100% 6 0 0   100% 0 0   100%
tests/test_ndf_hds.py (no function)   95% 41 2 0   100% 0 0   95%
tests/test_ndf_input_archive.py NdfInputArchiveOpenTestCase.test_open_round_trips_image_tree   100% 7 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveOpenTestCase.test_get_tree_raises_when_main_json_missing   100% 8 0 0   100% 2 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_get_array_reads_image_array   100% 7 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_get_array_supports_slicing   100% 7 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_get_array_handles_inline_array   100% 8 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_get_array_unrecognised_source_raises   100% 8 0 0   100% 2 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_deserialize_pointer_round_trips_subtree   100% 10 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_deserialize_pointer_caches_by_ref   100% 14 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_deserialize_pointer_caches_by_ref.deserializer   100% 2 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_deserialize_pointer_caches_frame_set_for_get_frame_set   100% 15 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_deserialize_pointer_caches_frame_set_for_get_frame_set.DummyFrameSet.__contains__   0% 1 1 0   100% 0 0   0%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_deserialize_pointer_caches_frame_set_for_get_frame_set.DummyFrameSet.__getitem__   100% 0 0 1   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_get_frame_set_returns_cached_value   100% 8 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveDataTestCase.test_get_frame_set_raises_if_not_cached   100% 7 0 0   100% 2 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveOpaqueMetadataTestCase.test_more_fits_round_trips_via_opaque_metadata   100% 13 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfInputArchiveOpaqueMetadataTestCase.test_get_opaque_metadata_empty_when_no_more_fits   100% 8 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_round_trips_image   100% 8 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_starlink_file_auto_detects_image   100% 6 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_starlink_file_recovers_opaque_fits_metadata   100% 6 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_auto_detects_nested_quality_array   100% 21 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_auto_detect_preserves_quality_bits   100% 24 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_auto_detected_data_only_as_masked_image_uses_defaults   100% 14 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_auto_detected_variance_as_masked_image_keeps_variance   100% 16 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_auto_detected_units_component   100% 10 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_missing_data_array_raises   100% 6 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py NdfReadFunctionTestCase.test_read_auto_detect_wrong_target_type_raises   100% 3 0 0   100% 0 0   100%
tests/test_ndf_input_archive.py (no function)   96% 49 2 0   100% 0 0   96%
tests/test_ndf_layout.py _cls   67% 6 2 0   50% 4 2   60%
tests/test_ndf_layout.py _hds_type   100% 4 0 0   100% 2 0   100%
tests/test_ndf_layout.py _hds_shape   100% 1 0 0   100% 0 0   100%
tests/test_ndf_layout.py NdfImageLayoutTestCase.test_image_layout   100% 21 0 0   100% 0 0   100%
tests/test_ndf_layout.py NdfCompatibleMaskLayoutTestCase.test_masked_image_compatible_mask_layout   100% 44 0 0   100% 0 0   100%
tests/test_ndf_layout.py NdfIncompatibleMaskLayoutTestCase.test_masked_image_incompatible_mask_layout   100% 30 0 0   100% 0 0   100%
tests/test_ndf_layout.py NdfIncompatibleMaskLayoutTestCase.test_masked_image_many_plane_mask_layout   100% 23 0 0   100% 0 0   100%
tests/test_ndf_layout.py (no function)   92% 24 2 2   100% 0 0   92%
tests/test_ndf_model.py _attr_str   67% 3 1 0   50% 2 1   60%
tests/test_ndf_model.py NdfModelTestCase.test_ndf_document_writes_standard_components   100% 28 0 0   100% 0 0   100%
tests/test_ndf_model.py NdfModelTestCase.test_document_read_preserves_typed_ndf_components   100% 15 0 0   100% 0 0   100%
tests/test_ndf_model.py (no function)   88% 16 2 2   100% 0 0   88%
tests/test_ndf_output_archive.py TinyFrameSet.__contains__   0% 1 1 0   100% 0 0   0%
tests/test_ndf_output_archive.py TinyFrameSet.__getitem__   0% 1 1 0   100% 0 0   0%
tests/test_ndf_output_archive.py NdfOutputArchiveBasicsTestCase.test_serialize_direct_calls_serializer_with_nested_archive   100% 5 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveBasicsTestCase.test_constructor_marks_root_as_ndf   100% 5 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_top_level_image_routes_to_data_array   100% 14 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_top_level_variance_routes_to_variance   100% 9 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_top_level_compatible_mask_routes_to_quality   100% 16 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_top_level_incompatible_mask_routes_to_more_lsst   100% 19 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_long_hoisted_component_is_shrunk   100% 12 0 0   100% 2 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_long_name_round_trips_through_input_archive   100% 9 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_repeated_long_name_gets_distinct_versioned_paths   100% 12 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_nested_array_hoists_as_sub_ndf   100% 18 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddArrayTestCase.test_colliding_shrunk_names_raise   100% 8 0 0   100% 4 0   100%
tests/test_ndf_output_archive.py NdfOutputArchivePointerTestCase.test_serialize_pointer_writes_subtree_and_returns_pointer   100% 9 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchivePointerTestCase.test_serialize_pointer_caches_by_key   100% 11 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchivePointerTestCase.test_serialize_pointer_preserves_nested_arrays   100% 15 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchivePointerTestCase.test_serialize_frame_set_records_for_iter   100% 10 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddTableTestCase.test_add_table_returns_inline_table_model   100% 7 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddTableTestCase.test_add_structured_array_writes_column_ndfs_with_units   100% 23 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddTableTestCase.test_add_single_column_structured_array_uses_table_name   100% 17 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfOutputArchiveAddTableTestCase.test_structured_array_long_name_is_shrunk_and_versioned   100% 19 0 0   100% 10 0   100%
tests/test_ndf_output_archive.py NdfWriteWcsTestCase.test_write_with_projection_creates_wcs_component   100% 24 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfWriteWcsTestCase.test_write_without_projection_omits_wcs_component   100% 6 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfWriteWcsTestCase.test_mask_sub_ndf_gets_3d_wcs   100% 31 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfWriteWcsTestCase.test_mask_sub_ndf_no_wcs_when_image_has_no_projection   100% 9 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfWriteFunctionTestCase.test_write_image_produces_valid_layout   100% 17 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfWriteFunctionTestCase.test_write_image_preserves_opaque_fits_metadata   100% 20 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfWriteFunctionTestCase.test_write_image_main_json_round_trips_back   100% 9 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfWriteFunctionTestCase.test_write_image_with_unit_creates_units_component   100% 10 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py NdfWriteFunctionTestCase.test_write_propagates_metadata   100% 10 0 0   100% 0 0   100%
tests/test_ndf_output_archive.py (no function)   97% 69 2 0   100% 0 0   97%
tests/test_ndf_starlink_ingest.py StarlinkIngestTestCase.test_round_trips_to_image   100% 3 0 0   100% 0 0   100%
tests/test_ndf_starlink_ingest.py StarlinkIngestTestCase.test_wcs_produces_projection   100% 7 0 0   100% 0 0   100%
tests/test_ndf_starlink_ingest.py StarlinkIngestTestCase.test_opaque_fits_metadata_recovered   100% 7 0 0   100% 0 0   100%
tests/test_ndf_starlink_ingest.py (no function)   88% 17 2 2   100% 0 0   88%
tests/test_polygon.py SimplePolygonTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_polygon.py SimplePolygonTestCase.test_vertices   100% 7 0 0   100% 0 0   100%
tests/test_polygon.py SimplePolygonTestCase.test_boxes   100% 14 0 0   100% 0 0   100%
tests/test_polygon.py SimplePolygonTestCase.test_contains_points   100% 4 0 0   100% 0 0   100%
tests/test_polygon.py SimplePolygonTestCase.test_io   100% 4 0 0   100% 0 0   100%
tests/test_polygon.py SimplePolygonTestCase.test_legacy   100% 3 0 0   100% 0 0   100%
tests/test_polygon.py RegionTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_polygon.py RegionTestCase.test_intersection   100% 7 0 0   100% 0 0   100%
tests/test_polygon.py RegionTestCase.test_union   100% 5 0 0   100% 0 0   100%
tests/test_polygon.py RegionTestCase.test_difference   100% 7 0 0   100% 0 0   100%
tests/test_polygon.py RegionTestCase.test_io   100% 5 0 0   100% 0 0   100%
tests/test_polygon.py (no function)   91% 23 2 2   100% 0 0   91%
tests/test_psfs.py PointSpreadFunctionTestCase.test_gaussian   100% 22 0 0   100% 0 0   100%
tests/test_psfs.py PointSpreadFunctionTestCase.test_piff_writer_normalizes_tuple_metadata   100% 9 0 0   100% 0 0   100%
tests/test_psfs.py PointSpreadFunctionTestCase.test_piff   0% 30 30 0   0% 2 0   0%
tests/test_psfs.py PointSpreadFunctionTestCase.test_psfex   0% 22 22 0   100% 0 0   0%
tests/test_psfs.py (no function)   91% 22 2 2   100% 0 0   91%
tests/test_schema_v1_fixtures.py SchemaV1FixturesTestCase.test_fixtures_present   100% 1 0 0   100% 0 0   100%
tests/test_schema_v1_fixtures.py SchemaV1FixturesTestCase.test_fixture_has_top_level_stamps   100% 6 0 0   100% 2 0   100%
tests/test_schema_v1_fixtures.py SchemaV1FixturesTestCase.test_fixture_url_matches_name_and_version   100% 5 0 0   100% 2 0   100%
tests/test_schema_v1_fixtures.py (no function)   100% 10 0 2   100% 0 0   100%
tests/test_schema_v1_legacy_fixtures.py LegacyFixtureReadBackTestCase.test_cell_coadd   93% 15 1 0   50% 2 1   88%
tests/test_schema_v1_legacy_fixtures.py LegacyFixtureReadBackTestCase.test_visit_images   81% 16 3 0   67% 6 2   77%
tests/test_schema_v1_legacy_fixtures.py (no function)   88% 16 2 2   100% 0 0   88%
tests/test_schema_versioning.py _DummyArchiveTree.deserialize   100% 0 0 1   100% 0 0   100%
tests/test_schema_versioning.py CheckCompatTestCase.test_silent_when_min_read_satisfied   100% 1 0 0   100% 0 0   100%
tests/test_schema_versioning.py CheckCompatTestCase.test_silent_when_on_disk_major_is_lower   100% 1 0 0   100% 0 0   100%
tests/test_schema_versioning.py CheckCompatTestCase.test_silent_when_on_disk_major_is_higher_but_min_read_low   100% 1 0 0   100% 0 0   100%
tests/test_schema_versioning.py CheckCompatTestCase.test_raises_when_min_read_exceeds_reader_major   100% 4 0 0   100% 0 0   100%
tests/test_schema_versioning.py CheckCompatTestCase.test_format_version_silent_when_equal   100% 1 0 0   100% 0 0   100%
tests/test_schema_versioning.py CheckCompatTestCase.test_format_version_silent_when_on_disk_lower   100% 1 0 0   100% 0 0   100%
tests/test_schema_versioning.py CheckCompatTestCase.test_format_version_raises_when_on_disk_higher   100% 2 0 0   100% 0 0   100%
tests/test_schema_versioning.py ArchiveTreeVersionFieldsTestCase.test_default_values_filled_from_classvars   100% 3 0 0   100% 0 0   100%
tests/test_schema_versioning.py ArchiveTreeVersionFieldsTestCase.test_schema_url_is_computed   100% 2 0 0   100% 0 0   100%
tests/test_schema_versioning.py ArchiveTreeVersionFieldsTestCase.test_schema_url_appears_in_dump   100% 5 0 0   100% 0 0   100%
tests/test_schema_versioning.py ArchiveTreeVersionFieldsTestCase.test_schema_url_ignored_in_input   100% 2 0 0   100% 0 0   100%
tests/test_schema_versioning.py ArchiveTreeVersionFieldsTestCase.test_normalises_to_in_code_values   100% 3 0 0   100% 0 0   100%
tests/test_schema_versioning.py ArchiveTreeVersionFieldsTestCase.test_absent_fields_default_to_legacy   100% 3 0 0   100% 0 0   100%
tests/test_schema_versioning.py ArchiveTreeVersionFieldsTestCase.test_min_read_version_too_high_rejected   100% 2 0 0   100% 0 0   100%
tests/test_schema_versioning.py JsonSchemaInjectionTestCase.test_image_schema_has_id_and_title   100% 4 0 0   100% 0 0   100%
tests/test_schema_versioning.py ArchiveTreeClassInvariantsTestCase.test_constants_are_declared   100% 5 0 0   100% 2 0   100%
tests/test_schema_versioning.py ArchiveTreeClassInvariantsTestCase.test_schema_names_unique   82% 11 2 0   75% 8 2   79%
tests/test_schema_versioning.py FixtureMutationTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_schema_versioning.py FixtureMutationTestCase.test_min_read_too_high_raises   100% 6 0 0   100% 0 0   100%
tests/test_schema_versioning.py FixtureMutationTestCase.test_higher_major_with_low_min_read_succeeds   100% 8 0 0   100% 0 0   100%
tests/test_schema_versioning.py FixtureMutationTestCase.test_absent_fields_default_to_legacy   100% 9 0 0   100% 0 0   100%
tests/test_schema_versioning.py (no function)   100% 40 0 3   100% 0 0   100%
tests/test_serialization_backends.py BackendForPathTestCase.test_fits   100% 6 0 0   100% 0 0   100%
tests/test_serialization_backends.py BackendForPathTestCase.test_fits_gz   100% 1 0 0   100% 0 0   100%
tests/test_serialization_backends.py BackendForPathTestCase.test_json   100% 4 0 0   100% 0 0   100%
tests/test_serialization_backends.py BackendForPathTestCase.test_ndf   100% 2 0 0   100% 0 0   100%
tests/test_serialization_backends.py BackendForPathTestCase.test_unknown   100% 3 0 0   100% 0 0   100%
tests/test_serialization_backends.py MinifyDispatchTestCase.test_minify_unsupported_schema_uses_shared_dispatch   100% 8 0 0   100% 0 0   100%
tests/test_serialization_backends.py (no function)   100% 16 0 2   100% 0 0   100%
tests/test_serialization_basic_info.py ArchiveInfoTestCase.test_from_schema_url   100% 5 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py ArchiveInfoTestCase.test_from_schema_url_none_format   100% 3 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py ArchiveInfoTestCase.test_frozen   100% 3 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py ArchiveInfoTestCase.test_from_schema_url_invalid   100% 2 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py ArchiveInfoTestCase.test_from_schema_url_foreign_host   100% 2 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py ArchiveInfoTestCase.test_get_basic_info_base_raises   100% 2 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py JsonBasicInfoTestCase.setUp   100% 2 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py JsonBasicInfoTestCase.test_json_basic_info   100% 7 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py FitsBasicInfoTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py FitsBasicInfoTestCase.test_fits_basic_info   100% 7 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py NdfBasicInfoTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py NdfBasicInfoTestCase.test_ndf_basic_info   100% 7 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py NdfBasicInfoTestCase.test_ndf_basic_info_ignores_nested_json   100% 9 0 0   100% 0 0   100%
tests/test_serialization_basic_info.py (no function)   95% 38 2 0   100% 0 0   95%
tests/test_serialization_io.py GenericReadTestCase.test_visit_image_json   100% 3 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericReadTestCase.test_image_json   100% 3 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericReadErrorsTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericReadErrorsTestCase.test_unsupported_extension   100% 5 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericReadErrorsTestCase.test_unregistered_schema   100% 6 0 0   100% 0 0   100%
tests/test_serialization_io.py FixtureSweepTestCase.test_sweep   93% 15 1 0   88% 8 1   91%
tests/test_serialization_io.py GenericWriteRoundTripTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericWriteRoundTripTestCase.test_round_trip_fits   100% 5 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericWriteRoundTripTestCase.test_round_trip_json   100% 5 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericWriteRoundTripTestCase.test_round_trip_ndf   100% 5 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericReadKwargsTestCase.setUp   100% 3 0 0   100% 0 0   100%
tests/test_serialization_io.py GenericReadKwargsTestCase.test_bbox_subset_fits   100% 6 0 0   100% 0 0   100%
tests/test_serialization_io.py ReadClsTestCase.test_read_cls_match   100% 3 0 0   100% 0 0   100%
tests/test_serialization_io.py ReadClsTestCase.test_read_cls_mismatch_raises   100% 8 0 0   100% 0 0   100%
tests/test_serialization_io.py (no function)   90% 41 4 2   100% 0 0   90%
tests/test_serialization_reader.py count_opens   100% 7 0 0   100% 0 0   100%
tests/test_serialization_reader.py count_opens.counting_open   100% 3 0 0   50% 2 1   80%
tests/test_serialization_reader.py _visit_image   100% 1 0 0   100% 0 0   100%
tests/test_serialization_reader.py FitsOpenTreeTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_serialization_reader.py FitsOpenTreeTestCase.test_open_tree_yields_archive_tree_and_info   100% 5 0 0   100% 0 0   100%
tests/test_serialization_reader.py FitsOpenTreeTestCase.test_read_still_works   100% 2 0 0   100% 0 0   100%
tests/test_serialization_reader.py NdfOpenTreeTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_serialization_reader.py NdfOpenTreeTestCase.test_open_tree_yields_archive_tree_and_info   100% 4 0 0   100% 0 0   100%
tests/test_serialization_reader.py NdfOpenTreeTestCase.test_read_still_works   100% 1 0 0   100% 0 0   100%
tests/test_serialization_reader.py JsonOpenTreeTestCase.setUp   100% 4 0 0   100% 0 0   100%
tests/test_serialization_reader.py JsonOpenTreeTestCase.test_open_tree_yields_archive_tree_and_info   100% 4 0 0   100% 0 0   100%
tests/test_serialization_reader.py JsonOpenTreeTestCase.test_read_still_works   100% 1 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.setUp   100% 6 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase._check_components_and_read   100% 6 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.test_components_and_read_fits   100% 1 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.test_components_and_read_json   100% 3 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.test_components_and_read_ndf   100% 3 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.test_info   100% 5 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.test_cls_match   100% 4 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.test_cls_mismatch_raises   80% 5 1 0   100% 0 0   80%
tests/test_serialization_reader.py ReaderApiTestCase.test_unknown_component   100% 5 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.test_use_after_close_raises   100% 5 0 0   100% 0 0   100%
tests/test_serialization_reader.py ReaderApiTestCase.test_fits_open_reads_file_once   100% 6 0 0   100% 0 0   100%
tests/test_serialization_reader.py (no function)   96% 48 2 2   100% 0 0   96%
tests/test_serialization_registry.py ClassForSchemaTestCase.test_unknown_returns_none   100% 1 0 0   100% 0 0   100%
tests/test_serialization_registry.py RegistrationTestCase.test_visit_image_registered   100% 2 0 0   100% 0 0   100%
tests/test_serialization_registry.py RegistrationTestCase.test_nested_image_registered   100% 2 0 0   100% 0 0   100%
tests/test_serialization_registry.py RegistrationTestCase.test_duplicate_registration_raises   100% 5 0 0   100% 0 0   100%
tests/test_serialization_registry.py RegistrationTestCase.test_builtin_provider_loaded_on_miss   100% 9 0 0   100% 2 0   100%
tests/test_serialization_registry.py RegistrationTestCase.test_entry_point_provider_loaded_on_miss   100% 15 0 0   100% 0 0   100%
tests/test_serialization_registry.py RegistrationTestCase.test_entry_point_provider_loaded_on_miss._EntryPointTree.deserialize   100% 0 0 1   100% 0 0   100%
tests/test_serialization_registry.py RegistrationTestCase.test_entry_point_provider_loaded_on_miss._FakeEntryPoint.load   100% 1 0 0   100% 0 0   100%
tests/test_serialization_registry.py PublicTypeTestCase.test_concrete_type   100% 1 0 0   100% 0 0   100%
tests/test_serialization_registry.py PublicTypeTestCase.test_generic_in_memory_type   100% 1 0 0   100% 0 0   100%
tests/test_serialization_registry.py PublicTypeTestCase.test_unregistered_schema_returns_none   100% 1 0 0   100% 0 0   100%
tests/test_serialization_registry.py _all_concrete_archive_tree_subclasses   100% 8 0 0   100% 4 0   100%
tests/test_serialization_registry.py ClassInvariantsTestCase.test_every_subclass_registered   88% 8 1 0   83% 6 1   86%
tests/test_serialization_registry.py ClassInvariantsTestCase.test_every_registered_class_declares_public_type   86% 7 1 0   83% 6 1   85%
tests/test_serialization_registry.py (no function)   100% 25 0 2   100% 0 0   100%
tests/test_transforms.py TransformTestCase.test_identity   100% 8 0 0   100% 0 0   100%
tests/test_transforms.py TransformTestCase.test_transform_equality   100% 20 0 0   100% 0 0   100%
tests/test_transforms.py TransformTestCase.test_transform_equality.make   100% 1 0 0   100% 0 0   100%
tests/test_transforms.py TransformTestCase.test_sky_projection_equality   100% 19 0 0   100% 0 0   100%
tests/test_transforms.py TransformTestCase.test_sky_projection_equality.make_pixel_to_sky   100% 2 0 0   100% 0 0   100%
tests/test_transforms.py TransformTestCase.test_camera   0% 32 32 0   100% 0 0   0%
tests/test_transforms.py TransformTestCase.compare_to_legacy_camera   0% 23 23 0   100% 0 0   0%
tests/test_transforms.py TransformTestCase.test_detector_wcs   0% 28 28 0   100% 0 0   0%
tests/test_transforms.py FrameSetTestHolder.serialize   0% 3 3 0   100% 0 0   0%
tests/test_transforms.py FrameSetTestHolder._get_archive_tree_type   0% 1 1 0   100% 0 0   0%
tests/test_transforms.py FrameSetTestHolderModel.deserialize   0% 4 4 0   100% 0 0   0%
tests/test_transforms.py (no function)   100% 39 0 2   100% 0 0   100%
tests/test_utils.py UtilsTestCase.test_round_half_away_from_zero   100% 17 0 0   100% 0 0   100%
tests/test_utils.py UtilsTestCase.test_round_up   100% 17 0 0   100% 0 0   100%
tests/test_utils.py (no function)   100% 6 0 2   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.setUpClass   100% 22 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_basics   100% 27 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_copy_and_slice   100% 20 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_obs_info   100% 5 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_summary_stats   100% 3 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_round_trip_ndf   100% 2 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_fits_ndf_consistency   100% 4 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_fits_json_consistency   100% 4 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_read_write   100% 62 0 0   100% 2 0   100%
tests/test_visit_image.py VisitImageTestCase._make_sum_background_visit_image   100% 10 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_sum_background_round_trip_fits   100% 3 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase.test_sum_background_round_trip_ndf   100% 3 0 0   100% 0 0   100%
tests/test_visit_image.py VisitImageTestCase._check_sum_background_round_trip   100% 12 0 0   100% 2 0   100%
tests/test_visit_image.py VisitImageLegacyTestMixin.test_legacy_errors   0% 12 12 0   100% 0 0   0%
tests/test_visit_image.py VisitImageLegacyTestMixin.test_component_reads   0% 24 24 0   100% 0 0   0%
tests/test_visit_image.py VisitImageLegacyTestMixin.check_legacy_obs_info   0% 5 5 0   100% 0 0   0%
tests/test_visit_image.py VisitImageLegacyTestMixin.test_obs_info   0% 9 9 0   100% 0 0   0%
tests/test_visit_image.py VisitImageLegacyTestMixin.test_aperture_corrections_to_legacy   0% 2 2 0   100% 0 0   0%
tests/test_visit_image.py VisitImageLegacyTestMixin.test_read_legacy_headers   0% 10 10 0   100% 0 0   0%
tests/test_visit_image.py VisitImageLegacyTestMixin.test_from_legacy_headers   0% 10 10 0   100% 0 0   0%
tests/test_visit_image.py VisitImageLegacyTestMixin.test_rewrite   0% 37 37 0   0% 2 0   0%
tests/test_visit_image.py VisitImageLegacyTestMixin.test_butler_converters   0% 24 24 0   0% 2 0   0%
tests/test_visit_image.py VisitImageLegacyTestCase.setUpClass   0% 10 10 0   100% 0 0   0%
tests/test_visit_image.py VisitImageLegacyTestCase.test_convert_unit   0% 58 58 0   100% 0 0   0%
tests/test_visit_image.py PreliminaryVisitImageLegacyTestCase.setUpClass   0% 10 10 0   100% 0 0   0%
tests/test_visit_image.py DifferenceImageLegacyTestCase.setUpClass   0% 10 10 0   100% 0 0   0%
tests/test_visit_image.py (no function)   97% 73 2 2   100% 0 0   97%
Total     79% 15433 3315 353   58% 2812 403   75%

No items found using the specified filter.