1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257
|
Test coverage report for pyFAI
==============================
Measured on *pyFAI* version 2026.2.0, 26/02/2026
.. csv-table:: Test suite coverage
:header: "Name", "Stmts", "Exec", "Cover"
:widths: 35, 8, 8, 8
"__init__.py", "40", "29", "72.5 %"
"average.py", "515", "360", "69.9 %"
"azimuthalIntegrator.py", "10", "10", "100.0 %"
"blob_detection.py", "502", "191", "38.0 %"
"calibrant.py", "21", "21", "100.0 %"
"containers.py", "867", "770", "88.8 %"
"control_points.py", "372", "145", "39.0 %"
"diffmap.py", "584", "284", "48.6 %"
"directories.py", "20", "15", "75.0 %"
"distortion.py", "608", "386", "63.5 %"
"geometryRefinement.py", "593", "336", "56.7 %"
"goniometer.py", "587", "361", "61.5 %"
"grid.py", "38", "15", "39.5 %"
"load_integrators.py", "10", "10", "100.0 %"
"massif.py", "240", "198", "82.5 %"
"method_registry.py", "355", "298", "83.9 %"
"multi_geometry.py", "387", "165", "42.6 %"
"parallax.py", "284", "226", "79.6 %"
"ring_extraction.py", "119", "111", "93.3 %"
"spline.py", "426", "251", "58.9 %"
"units.py", "464", "421", "90.7 %"
"version.py", "62", "45", "72.6 %"
"worker.py", "737", "373", "50.6 %"
"app/__init__.py", "6", "6", "100.0 %"
"app/average.py", "177", "34", "19.2 %"
"app/benchmark.py", "62", "17", "27.4 %"
"app/calib2.py", "376", "34", "9.0 %"
"app/calib.py", "24", "15", "62.5 %"
"app/check_calib.py", "31", "20", "64.5 %"
"app/detector2nexus.py", "94", "20", "21.3 %"
"app/diff_map.py", "38", "16", "42.1 %"
"app/diff_tomo.py", "107", "23", "21.5 %"
"app/drawmask.py", "107", "33", "30.8 %"
"app/eiger_mask.py", "57", "22", "38.6 %"
"app/integrate.py", "551", "399", "72.4 %"
"app/mx_calibrate.py", "25", "15", "60.0 %"
"app/peakfinder.py", "289", "54", "18.7 %"
"app/pilx.py", "69", "16", "23.2 %"
"app/recalib.py", "26", "15", "57.7 %"
"app/saxs.py", "86", "24", "27.9 %"
"app/sparsify.py", "284", "55", "19.4 %"
"app/waxs.py", "98", "25", "25.5 %"
"benchmark/__init__.py", "635", "87", "13.7 %"
"crystallography/__init__.py", "11", "11", "100.0 %"
"crystallography/calibrant.py", "365", "280", "76.7 %"
"crystallography/calibrant_factory.py", "48", "39", "81.2 %"
"crystallography/cell.py", "167", "160", "95.8 %"
"crystallography/resolution.py", "63", "62", "98.4 %"
"crystallography/space_groups.py", "2360", "2243", "95.0 %"
"detectors/__init__.py", "23", "23", "100.0 %"
"detectors/_adsc.py", "64", "64", "100.0 %"
"detectors/_common.py", "994", "751", "75.6 %"
"detectors/_dectris.py", "388", "297", "76.5 %"
"detectors/_esrf.py", "71", "67", "94.4 %"
"detectors/_hexagonal.py", "73", "69", "94.5 %"
"detectors/_imxpad.py", "355", "232", "65.4 %"
"detectors/_non_flat.py", "144", "122", "84.7 %"
"detectors/_others.py", "86", "82", "95.3 %"
"detectors/_psi.py", "192", "109", "56.8 %"
"detectors/_rayonix.py", "240", "216", "90.0 %"
"detectors/_xspectrum.py", "60", "54", "90.0 %"
"detectors/orientation.py", "35", "35", "100.0 %"
"detectors/sensors.py", "127", "120", "94.5 %"
"engines/CSC_engine.py", "214", "139", "65.0 %"
"engines/CSR_engine.py", "251", "242", "96.4 %"
"engines/__init__.py", "18", "18", "100.0 %"
"engines/histogram_engine.py", "92", "84", "91.3 %"
"engines/preproc.py", "121", "92", "76.0 %"
"ext/__init__.py", "2", "2", "100.0 %"
"geometry/__init__.py", "8", "8", "100.0 %"
"geometry/core.py", "1409", "1132", "80.3 %"
"geometry/crystfel.py", "161", "147", "91.3 %"
"geometry/cxi.py", "0", "0", "0.0 %"
"geometry/fit2d.py", "136", "121", "89.0 %"
"geometry/imaged11.py", "115", "100", "87.0 %"
"gui/ApplicationContext.py", "108", "51", "47.2 %"
"gui/CalibrationContext.py", "227", "128", "56.4 %"
"gui/CalibrationWindow.py", "192", "169", "88.0 %"
"gui/IntegrationDialog.py", "222", "53", "23.9 %"
"gui/__init__.py", "3", "3", "100.0 %"
"gui/cli_calibration.py", "1565", "108", "6.9 %"
"gui/diffmap_widget.py", "484", "80", "16.5 %"
"gui/matplotlib.py", "32", "26", "81.2 %"
"gui/mpl_calib.py", "241", "40", "16.6 %"
"gui/mpl_calib_qt.py", "47", "19", "40.4 %"
"gui/peak_picker.py", "300", "108", "36.0 %"
"gui/dialog/Detector3dDialog.py", "173", "36", "20.8 %"
"gui/dialog/DetectorSelectorDialog.py", "532", "400", "75.2 %"
"gui/dialog/GeometryDialog.py", "57", "16", "28.1 %"
"gui/dialog/IntegrationMethodDialog.py", "216", "36", "16.7 %"
"gui/dialog/MessageBox.py", "27", "8", "29.6 %"
"gui/dialog/OpenClDeviceDialog.py", "116", "14", "12.1 %"
"gui/dialog/__init__.py", "3", "3", "100.0 %"
"gui/helper/MarkerManager.py", "209", "65", "31.1 %"
"gui/helper/ProcessingWidget.py", "19", "6", "31.6 %"
"gui/helper/RingCalibration.py", "320", "53", "16.6 %"
"gui/helper/RingExtractor.py", "249", "36", "14.5 %"
"gui/helper/SynchronizeMaskToolColor.py", "26", "26", "100.0 %"
"gui/helper/SynchronizePlotBackground.py", "26", "25", "96.2 %"
"gui/helper/SynchronizeRawView.py", "60", "47", "78.3 %"
"gui/helper/__init__.py", "3", "3", "100.0 %"
"gui/helper/model_transform.py", "112", "15", "13.4 %"
"gui/jupyter/__init__.py", "2", "2", "100.0 %"
"gui/jupyter/_plot.py", "102", "16", "15.7 %"
"gui/jupyter/calib.py", "93", "21", "22.6 %"
"gui/model/AbstractModel.py", "36", "30", "83.3 %"
"gui/model/CalibrantModel.py", "19", "17", "89.5 %"
"gui/model/CalibrationModel.py", "44", "42", "95.5 %"
"gui/model/ConstraintModel.py", "60", "21", "35.0 %"
"gui/model/DataModel.py", "15", "14", "93.3 %"
"gui/model/DataModelAdaptor.py", "27", "12", "44.4 %"
"gui/model/DetectorModel.py", "15", "14", "93.3 %"
"gui/model/ExperimentSettingsModel.py", "113", "101", "89.4 %"
"gui/model/FilenameModel.py", "21", "14", "66.7 %"
"gui/model/Fit2dGeometryModel.py", "64", "32", "50.0 %"
"gui/model/GeometryConstraintsModel.py", "86", "41", "47.7 %"
"gui/model/GeometryHistoryModel.py", "40", "14", "35.0 %"
"gui/model/GeometryModel.py", "89", "41", "46.1 %"
"gui/model/ImageModel.py", "80", "43", "53.8 %"
"gui/model/IntegrationSettingsModel.py", "26", "23", "88.5 %"
"gui/model/ListModel.py", "130", "92", "70.8 %"
"gui/model/MarkerModel.py", "48", "34", "70.8 %"
"gui/model/MaskedImageModel.py", "31", "17", "54.8 %"
"gui/model/PeakModel.py", "87", "54", "62.1 %"
"gui/model/PeakSelectionModel.py", "85", "34", "40.0 %"
"gui/model/PlotViewModel.py", "64", "62", "96.9 %"
"gui/model/PreProcessedImageModel.py", "55", "46", "83.6 %"
"gui/model/__init__.py", "3", "3", "100.0 %"
"gui/pilx/HorizontalRangeROI.py", "14", "10", "71.4 %"
"gui/pilx/MainWindow.py", "308", "50", "16.2 %"
"gui/pilx/__init__.py", "0", "0", "0.0 %"
"gui/pilx/models.py", "9", "9", "100.0 %"
"gui/pilx/point.py", "23", "7", "30.4 %"
"gui/pilx/utils.py", "119", "31", "26.1 %"
"gui/pilx/widgets/ClearPointsAction.py", "16", "12", "75.0 %"
"gui/pilx/widgets/DiffractionImagePlotWidget.py", "45", "19", "42.2 %"
"gui/pilx/widgets/ImagePlotWidget.py", "68", "28", "41.2 %"
"gui/pilx/widgets/IntegratedPatternPlotWidget.py", "97", "29", "29.9 %"
"gui/pilx/widgets/MapPlotContextMenu.py", "49", "21", "42.9 %"
"gui/pilx/widgets/MapPlotWidget.py", "152", "38", "25.0 %"
"gui/pilx/widgets/OpenAxisDatasetAction.py", "29", "15", "51.7 %"
"gui/pilx/widgets/RoiModeAction.py", "24", "14", "58.3 %"
"gui/pilx/widgets/RoiRangeWidget.py", "50", "18", "36.0 %"
"gui/pilx/widgets/TitleWidget.py", "12", "9", "75.0 %"
"gui/pilx/widgets/__init__.py", "0", "0", "0.0 %"
"gui/tasks/AbstractCalibrationTask.py", "79", "72", "91.1 %"
"gui/tasks/ExperimentTask.py", "365", "267", "73.2 %"
"gui/tasks/GeometryTask.py", "817", "376", "46.0 %"
"gui/tasks/IntegrationTask.py", "836", "304", "36.4 %"
"gui/tasks/MaskTask.py", "221", "148", "67.0 %"
"gui/tasks/PeakPickingTask.py", "1364", "588", "43.1 %"
"gui/tasks/__init__.py", "3", "3", "100.0 %"
"gui/test/__init__.py", "48", "33", "68.8 %"
"gui/utils/FilterBuilder.py", "43", "13", "30.2 %"
"gui/utils/ProxyAction.py", "67", "21", "31.3 %"
"gui/utils/__init__.py", "34", "14", "41.2 %"
"gui/utils/colorutils.py", "48", "43", "89.6 %"
"gui/utils/eventutils.py", "70", "38", "54.3 %"
"gui/utils/imageutils.py", "25", "13", "52.0 %"
"gui/utils/projecturl.py", "20", "19", "95.0 %"
"gui/utils/timeutils.py", "11", "9", "81.8 %"
"gui/utils/tree.py", "11", "11", "100.0 %"
"gui/utils/units.py", "76", "66", "86.8 %"
"gui/utils/unitutils.py", "54", "8", "14.8 %"
"gui/utils/validators.py", "89", "83", "93.3 %"
"gui/utils/test/__init__.py", "9", "9", "100.0 %"
"gui/widgets/AdvancedComboBox.py", "66", "56", "84.8 %"
"gui/widgets/AdvancedSpinBox.py", "20", "11", "55.0 %"
"gui/widgets/CalibrantPreview.py", "110", "100", "90.9 %"
"gui/widgets/CalibrantSelector2.py", "211", "112", "53.1 %"
"gui/widgets/CalibrantSelector.py", "100", "25", "25.0 %"
"gui/widgets/ChoiceToolButton.py", "71", "43", "60.6 %"
"gui/widgets/ColoredCheckBox.py", "28", "11", "39.3 %"
"gui/widgets/DetectorLabel.py", "122", "74", "60.7 %"
"gui/widgets/DetectorModel.py", "14", "12", "85.7 %"
"gui/widgets/DetectorSelector.py", "55", "15", "27.3 %"
"gui/widgets/FileEdit.py", "157", "60", "38.2 %"
"gui/widgets/FitParamView.py", "340", "142", "41.8 %"
"gui/widgets/GeometryHistoryComboBox.py", "113", "60", "53.1 %"
"gui/widgets/GeometryLabel.py", "39", "31", "79.5 %"
"gui/widgets/GeometryTabs.py", "205", "89", "43.4 %"
"gui/widgets/LoadImageToolButton.py", "119", "50", "42.0 %"
"gui/widgets/MethodLabel.py", "93", "49", "52.7 %"
"gui/widgets/MonitorNameEdit.py", "20", "10", "50.0 %"
"gui/widgets/OpenClDeviceLabel.py", "52", "22", "42.3 %"
"gui/widgets/QuantityEdit.py", "151", "98", "64.9 %"
"gui/widgets/QuantityLabel.py", "132", "80", "60.6 %"
"gui/widgets/UnitLabel.py", "69", "37", "53.6 %"
"gui/widgets/UnitSelector.py", "84", "81", "96.4 %"
"gui/widgets/WorkerConfigurator.py", "626", "353", "56.4 %"
"gui/widgets/__init__.py", "3", "3", "100.0 %"
"gui/widgets/model/AllDetectorItemModel.py", "65", "62", "95.4 %"
"gui/widgets/model/CalibrantFilterProxyModel.py", "32", "21", "65.6 %"
"gui/widgets/model/CalibrantItemModel.py", "41", "35", "85.4 %"
"gui/widgets/model/DetectorFilterProxyModel.py", "26", "25", "96.2 %"
"gui/widgets/model/__init__.py", "3", "3", "100.0 %"
"gui/widgets/test/TestQuantityEdit.py", "69", "67", "97.1 %"
"gui/widgets/test/__init__.py", "12", "10", "83.3 %"
"integrator/__init__.py", "9", "9", "100.0 %"
"integrator/azimuthal.py", "1266", "980", "77.4 %"
"integrator/common.py", "775", "369", "47.6 %"
"integrator/fiber.py", "311", "242", "77.8 %"
"integrator/load_engines.py", "165", "120", "72.7 %"
"io/__init__.py", "690", "396", "57.4 %"
"io/_json.py", "22", "16", "72.7 %"
"io/calibrant_config.py", "169", "124", "73.4 %"
"io/diffmap_config.py", "334", "274", "82.0 %"
"io/image.py", "31", "26", "83.9 %"
"io/integration_config.py", "557", "440", "79.0 %"
"io/nexus.py", "558", "447", "80.1 %"
"io/ponifile.py", "253", "207", "81.8 %"
"io/sparse_frame.py", "153", "23", "15.0 %"
"io/spots.py", "213", "138", "64.8 %"
"io/tree.py", "76", "12", "15.8 %"
"io/xrdml.py", "76", "75", "98.7 %"
"opencl/OCLFullSplit.py", "193", "22", "11.4 %"
"opencl/__init__.py", "48", "32", "66.7 %"
"opencl/azim_csr.py", "707", "495", "70.0 %"
"opencl/azim_hist.py", "475", "342", "72.0 %"
"opencl/azim_lut.py", "333", "247", "74.2 %"
"opencl/ocl_hist_pixelsplit.py", "222", "26", "11.7 %"
"opencl/peak_finder.py", "478", "366", "76.6 %"
"opencl/preproc.py", "234", "176", "75.2 %"
"opencl/sort.py", "281", "216", "76.9 %"
"opencl/test/__init__.py", "27", "27", "100.0 %"
"resources/__init__.py", "40", "29", "72.5 %"
"test/__init__.py", "32", "4", "12.5 %"
"third_party/__init__.py", "0", "0", "0.0 %"
"third_party/transformations.py", "7", "7", "100.0 %"
"third_party/_local/__init__.py", "3", "3", "100.0 %"
"third_party/_local/transformations.py", "712", "125", "17.6 %"
"utils/__init__.py", "117", "65", "55.6 %"
"utils/bayes.py", "101", "66", "65.3 %"
"utils/callback.py", "13", "10", "76.9 %"
"utils/dataclasses.py", "68", "57", "83.8 %"
"utils/decorators.py", "106", "88", "83.0 %"
"utils/ellipse.py", "81", "78", "96.3 %"
"utils/grid.py", "92", "63", "68.5 %"
"utils/header_utils.py", "73", "58", "79.5 %"
"utils/logging_utils.py", "50", "47", "94.0 %"
"utils/mask_utils.py", "74", "40", "54.1 %"
"utils/mathutil.py", "501", "351", "70.1 %"
"utils/multiprocessing.py", "17", "12", "70.6 %"
"utils/orderedset.py", "54", "13", "24.1 %"
"utils/shell.py", "54", "45", "83.3 %"
"utils/stringutil.py", "100", "89", "89.0 %"
"pyFAI total", "45884", "26878", "58.6 %"
|