Skip to content

Conversation

@hugovk
Copy link
Member

@hugovk hugovk commented Mar 31, 2025

Setuptools 77 now supports PEP 639 licence metadata:

This PR adds MIT-CMU as an SPDX licence expression, adds an explicit license-files field (I think we could leave it out and a glob would match, but perhaps explicit is better) and removes the deprecated Trove licence classifier.

Also adjust the pyroma test because it does not support PEP 639 yet: regebro/pyroma#93. In fact, any objections to removing the test file and dependency altogether? I don't think it's especially helpful now.

@hugovk hugovk added the License label Mar 31, 2025
@radarhere
Copy link
Member

In fact, any objections to removing the test file and dependency altogether? I don't think it's especially helpful now.

The description of pyroma is https://pypi.org/project/pyroma/

Pyroma rhymes with aroma, and is a product aimed at giving a rating of how well a Python project complies with the best practices of the Python packaging ecosystem, primarily PyPI, pip, Distribute etc, as well as a list of issues that could be improved.

That sounds like something we would be interested in. Is your feeling just that pyroma is slipping in achieving that goal, or that we have other checks that make this redundant?

You added the test in #743 in response to @aclark4life's #740. If you both don't mind removing it, then that sounds fine - in practical terms, it's hard to remember another time when it has failed.

@hugovk
Copy link
Member Author

hugovk commented Apr 4, 2025

The #740 failure looked more an artifact of pyroma itself, rather than our packaging?

Perhaps it is still useful to prevent regressions?

I did try adding coverage to tox recently (Python only, not C) and most tests use the PIL source under .tox/py313/lib/python3.13/site-packages/PIL/, but test_pyroma uses src/PIL/ so there are lots of 0%s and only __init__.py and _version.py at 100%:

With test_pyroma
.tox/py313/lib/python3.13/site-packages/PIL/AvifImagePlugin.py         167      2    99%
.tox/py313/lib/python3.13/site-packages/PIL/BdfFontFile.py              57      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/BlpImagePlugin.py          321     13    96%
.tox/py313/lib/python3.13/site-packages/PIL/BmpImagePlugin.py          241      2    99%
.tox/py313/lib/python3.13/site-packages/PIL/BufrStubImagePlugin.py      32      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ContainerIO.py              83      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/CurImagePlugin.py           31      2    94%
.tox/py313/lib/python3.13/site-packages/PIL/DcxImagePlugin.py           41      1    98%
.tox/py313/lib/python3.13/site-packages/PIL/DdsImagePlugin.py          503      4    99%
.tox/py313/lib/python3.13/site-packages/PIL/EpsImagePlugin.py          252     27    89%
.tox/py313/lib/python3.13/site-packages/PIL/ExifTags.py                343      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/FitsImagePlugin.py          97      6    94%
.tox/py313/lib/python3.13/site-packages/PIL/FliImagePlugin.py          101      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/FontFile.py                 68      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/FpxImagePlugin.py          105     19    82%
.tox/py313/lib/python3.13/site-packages/PIL/FtexImagePlugin.py          40      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/GbrImagePlugin.py           49     10    80%
.tox/py313/lib/python3.13/site-packages/PIL/GdImageFile.py              33      1    97%
.tox/py313/lib/python3.13/site-packages/PIL/GifImagePlugin.py          661     11    98%
.tox/py313/lib/python3.13/site-packages/PIL/GimpGradientFile.py         71      3    96%
.tox/py313/lib/python3.13/site-packages/PIL/GimpPaletteFile.py          41      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/GribStubImagePlugin.py      32      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/Hdf5StubImagePlugin.py      32      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/IcnsImagePlugin.py         224     17    92%
.tox/py313/lib/python3.13/site-packages/PIL/IcoImagePlugin.py          191      4    98%
.tox/py313/lib/python3.13/site-packages/PIL/ImImagePlugin.py           187     34    82%
.tox/py313/lib/python3.13/site-packages/PIL/Image.py                  1678    181    89%
.tox/py313/lib/python3.13/site-packages/PIL/ImageChops.py               78      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageCms.py                302     47    84%
.tox/py313/lib/python3.13/site-packages/PIL/ImageColor.py               68      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageDraw2.py               82     11    87%
.tox/py313/lib/python3.13/site-packages/PIL/ImageDraw.py               499     18    96%
.tox/py313/lib/python3.13/site-packages/PIL/ImageEnhance.py             39      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageFile.py               461     25    95%
.tox/py313/lib/python3.13/site-packages/PIL/ImageFilter.py             218      8    96%
.tox/py313/lib/python3.13/site-packages/PIL/ImageFont.py               277     26    91%
.tox/py313/lib/python3.13/site-packages/PIL/ImageGrab.py               117     76    35%
.tox/py313/lib/python3.13/site-packages/PIL/ImageMath.py               172     18    90%
.tox/py313/lib/python3.13/site-packages/PIL/ImageMode.py                25      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageMorph.py              116      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageOps.py                286      8    97%
.tox/py313/lib/python3.13/site-packages/PIL/ImagePalette.py            158      3    98%
.tox/py313/lib/python3.13/site-packages/PIL/ImagePath.py                 3      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageQt.py                 113     84    26%
.tox/py313/lib/python3.13/site-packages/PIL/ImageSequence.py            36      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageShow.py               160     64    60%
.tox/py313/lib/python3.13/site-packages/PIL/ImageStat.py                74      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageTk.py                 105      5    95%
.tox/py313/lib/python3.13/site-packages/PIL/ImageTransform.py           23      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageWin.py                 94     62    34%
.tox/py313/lib/python3.13/site-packages/PIL/ImtImagePlugin.py           46      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/IptcImagePlugin.py         142     19    87%
.tox/py313/lib/python3.13/site-packages/PIL/Jpeg2KImagePlugin.py       271     24    91%
.tox/py313/lib/python3.13/site-packages/PIL/JpegImagePlugin.py         473     49    90%
.tox/py313/lib/python3.13/site-packages/PIL/JpegPresets.py               2      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/McIdasImagePlugin.py        32      6    81%
.tox/py313/lib/python3.13/site-packages/PIL/MicImagePlugin.py           43      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/MpegImagePlugin.py          45      6    87%
.tox/py313/lib/python3.13/site-packages/PIL/MpoImagePlugin.py          108      1    99%
.tox/py313/lib/python3.13/site-packages/PIL/MspImagePlugin.py           87      8    91%
.tox/py313/lib/python3.13/site-packages/PIL/PSDraw.py                   62      7    89%
.tox/py313/lib/python3.13/site-packages/PIL/PaletteFile.py              27      5    81%
.tox/py313/lib/python3.13/site-packages/PIL/PalmImagePlugin.py          78     11    86%
.tox/py313/lib/python3.13/site-packages/PIL/PcdImagePlugin.py           27      4    85%
.tox/py313/lib/python3.13/site-packages/PIL/PcfFontFile.py             130     13    90%
.tox/py313/lib/python3.13/site-packages/PIL/PcxImagePlugin.py           90      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/PdfImagePlugin.py          136      3    98%
.tox/py313/lib/python3.13/site-packages/PIL/PdfParser.py               677     38    94%
.tox/py313/lib/python3.13/site-packages/PIL/PixarImagePlugin.py         22      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/PngImagePlugin.py          928     53    94%
.tox/py313/lib/python3.13/site-packages/PIL/PpmImagePlugin.py          237      3    99%
.tox/py313/lib/python3.13/site-packages/PIL/PsdImagePlugin.py          195     12    94%
.tox/py313/lib/python3.13/site-packages/PIL/QoiImagePlugin.py           69      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/SgiImagePlugin.py          121      8    93%
.tox/py313/lib/python3.13/site-packages/PIL/SpiderImagePlugin.py       181     29    84%
.tox/py313/lib/python3.13/site-packages/PIL/SunImagePlugin.py           57      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/TarIO.py                    25      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/TgaImagePlugin.py          111      6    95%
.tox/py313/lib/python3.13/site-packages/PIL/TiffImagePlugin.py        1223     48    96%
.tox/py313/lib/python3.13/site-packages/PIL/TiffTags.py                 54      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/WalImageFile.py             28      1    96%
.tox/py313/lib/python3.13/site-packages/PIL/WebPImagePlugin.py         190     10    95%
.tox/py313/lib/python3.13/site-packages/PIL/WmfImagePlugin.py           80     18    78%
.tox/py313/lib/python3.13/site-packages/PIL/XVThumbImagePlugin.py       33      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/XbmImagePlugin.py           40      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/XpmImagePlugin.py           60     10    83%
.tox/py313/lib/python3.13/site-packages/PIL/__init__.py                  7      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/__main__.py                  4      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/_binary.py                  30      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/_debug_info.py              27     27     0%
.tox/py313/lib/python3.13/site-packages/PIL/_deprecate.py               25      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/_tkinter_finder.py          11      3    73%
.tox/py313/lib/python3.13/site-packages/PIL/_typing.py                  21      4    81%
.tox/py313/lib/python3.13/site-packages/PIL/_util.py                    14      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/_version.py                  2      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/features.py                171     12    93%
.tox/py313/lib/python3.13/site-packages/PIL/report.py                    3      0   100%
Tests/__init__.py                                                        0      0   100%
Tests/conftest.py                                                       17      4    76%
Tests/helper.py                                                        203     36    82%
Tests/oss-fuzz/fuzzers.py                                               28      0   100%
Tests/oss-fuzz/test_fuzzers.py                                          36      2    94%
Tests/test_000_sanity.py                                                12      0   100%
Tests/test_arrow.py                                                     92      0   100%
Tests/test_binary.py                                                    15      0   100%
Tests/test_bmp_reference.py                                             49      2    96%
Tests/test_box_blur.py                                                  70      1    99%
Tests/test_color_lut.py                                                264     49    81%
Tests/test_core_resources.py                                           139      2    99%
Tests/test_decompression_bomb.py                                        70      5    93%
Tests/test_deprecate.py                                                 33      0   100%
Tests/test_features.py                                                 110      5    95%
Tests/test_file_apng.py                                                478      1    99%
Tests/test_file_avif.py                                                470     16    97%
Tests/test_file_blp.py                                                  45      0   100%
Tests/test_file_bmp.py                                                 132      0   100%
Tests/test_file_bufrstub.py                                             51      0   100%
Tests/test_file_container.py                                           109      0   100%
Tests/test_file_cur.py                                                  21      0   100%
Tests/test_file_dcx.py                                                  56      0   100%
Tests/test_file_dds.py                                                 271      2    99%
Tests/test_file_eps.py                                                 240      6    98%
Tests/test_file_fits.py                                                 31      1    97%
Tests/test_file_fli.py                                                 132      0   100%
Tests/test_file_fpx.py                                                  30      1    97%
Tests/test_file_ftex.py                                                 24      1    96%
Tests/test_file_gbr.py                                                  24      0   100%
Tests/test_file_gd.py                                                   17      0   100%
Tests/test_file_gif.py                                                 866      0   100%
Tests/test_file_gimpgradient.py                                         52      0   100%
Tests/test_file_gimppalette.py                                          44      0   100%
Tests/test_file_gribstub.py                                             51      0   100%
Tests/test_file_hdf5stub.py                                             54      0   100%
Tests/test_file_icns.py                                                114      0   100%
Tests/test_file_ico.py                                                 161      0   100%
Tests/test_file_im.py                                                   79      0   100%
Tests/test_file_imt.py                                                  13      0   100%
Tests/test_file_iptc.py                                                 61      0   100%
Tests/test_file_jpeg2k.py                                              316     36    89%
Tests/test_file_jpeg.py                                                640     21    97%
Tests/test_file_libtiff.py                                             725     13    98%
Tests/test_file_libtiff_small.py                                        26      0   100%
Tests/test_file_mcidas.py                                               17      0   100%
Tests/test_file_mic.py                                                  50      0   100%
Tests/test_file_mpeg.py                                                 19      0   100%
Tests/test_file_mpo.py                                                 212      0   100%
Tests/test_file_msp.py                                                  49      0   100%
Tests/test_file_palm.py                                                 43      1    98%
Tests/test_file_pcd.py                                                   5      0   100%
Tests/test_file_pcx.py                                                 134      2    99%
Tests/test_file_pdf.py                                                 214      1    99%
Tests/test_file_pixar.py                                                18      0   100%
Tests/test_file_png.py                                                 523      4    99%
Tests/test_file_ppm.py                                                 194      6    97%
Tests/test_file_psd.py                                                 112      2    98%
Tests/test_file_qoi.py                                                  19      0   100%
Tests/test_file_sgi.py                                                  59      0   100%
Tests/test_file_spider.py                                               98      1    99%
Tests/test_file_sun.py                                                  53      4    92%
Tests/test_file_tar.py                                                  41      2    95%
Tests/test_file_tga.py                                                 172      0   100%
Tests/test_file_tiff.py                                                649     16    98%
Tests/test_file_tiff_metadata.py                                       281      0   100%
Tests/test_file_wal.py                                                  20      0   100%
Tests/test_file_webp.py                                                149      1    99%
Tests/test_file_webp_alpha.py                                           77      0   100%
Tests/test_file_webp_animated.py                                       124      8    94%
Tests/test_file_webp_lossless.py                                        18      0   100%
Tests/test_file_webp_metadata.py                                       100      4    96%
Tests/test_file_wmf.py                                                  83     21    75%
Tests/test_file_xbm.py                                                  38      0   100%
Tests/test_file_xpm.py                                                  22      0   100%
Tests/test_file_xvthumb.py                                              18      0   100%
Tests/test_font_bdf.py                                                  19      0   100%
Tests/test_font_crash.py                                                17      4    76%
Tests/test_font_leaks.py                                                25      0   100%
Tests/test_font_pcf.py                                                  72      0   100%
Tests/test_font_pcf_charsets.py                                         61      2    97%
Tests/test_fontfile.py                                                  17      0   100%
Tests/test_format_hsv.py                                                63      0   100%
Tests/test_format_lab.py                                                23      0   100%
Tests/test_image.py                                                    756     20    97%
Tests/test_image_access.py                                             196     26    87%
Tests/test_image_array.py                                               66     59    11%
Tests/test_image_convert.py                                            201      0   100%
Tests/test_image_copy.py                                                36      0   100%
Tests/test_image_crop.py                                                61      0   100%
Tests/test_image_draft.py                                               30      0   100%
Tests/test_image_entropy.py                                             14      0   100%
Tests/test_image_filter.py                                              75      0   100%
Tests/test_image_frombytes.py                                           12      0   100%
Tests/test_image_fromqimage.py                                          38     20    47%
Tests/test_image_getbands.py                                            12      0   100%
Tests/test_image_getbbox.py                                             37      0   100%
Tests/test_image_getcolors.py                                           49      0   100%
Tests/test_image_getdata.py                                             21      0   100%
Tests/test_image_getextrema.py                                          20      0   100%
Tests/test_image_getim.py                                               12      0   100%
Tests/test_image_getpalette.py                                          32      0   100%
Tests/test_image_getprojection.py                                       21      0   100%
Tests/test_image_histogram.py                                           15      0   100%
Tests/test_image_load.py                                                36      0   100%
Tests/test_image_mode.py                                                40      0   100%
Tests/test_image_paste.py                                              121      0   100%
Tests/test_image_point.py                                               46      0   100%
Tests/test_image_putalpha.py                                            34      0   100%
Tests/test_image_putdata.py                                             80      1    99%
Tests/test_image_putpalette.py                                          67      1    99%
Tests/test_image_quantize.py                                           113     12    89%
Tests/test_image_reduce.py                                             140      0   100%
Tests/test_image_resample.py                                           384     18    95%
Tests/test_image_resize.py                                             137      0   100%
Tests/test_image_rotate.py                                              87      0   100%
Tests/test_image_split.py                                               36      1    97%
Tests/test_image_thumbnail.py                                          101      0   100%
Tests/test_image_tobitmap.py                                            10      0   100%
Tests/test_image_tobytes.py                                              5      0   100%
Tests/test_image_transform.py                                          145      0   100%
Tests/test_image_transpose.py                                           98      0   100%
Tests/test_imagechops.py                                               216      0   100%
Tests/test_imagecms.py                                                 357      5    99%
Tests/test_imagecolor.py                                               144      0   100%
Tests/test_imagedraw2.py                                               144      0   100%
Tests/test_imagedraw.py                                                765      2    99%
Tests/test_imageenhance.py                                              27      0   100%
Tests/test_imagefile.py                                                271      0   100%
Tests/test_imagefont.py                                                609     26    96%
Tests/test_imagefontctl.py                                             209     18    91%
Tests/test_imagefontpil.py                                              53      3    94%
Tests/test_imagegrab.py                                                 90     43    52%
Tests/test_imagemath_lambda_eval.py                                    139      0   100%
Tests/test_imagemath_unsafe_eval.py                                    153      0   100%
Tests/test_imagemorph.py                                               145      0   100%
Tests/test_imageops.py                                                 316      0   100%
Tests/test_imageops_usm.py                                              70      0   100%
Tests/test_imagepalette.py                                             107      0   100%
Tests/test_imagepath.py                                                 78      6    92%
Tests/test_imageqt.py                                                   35     24    31%
Tests/test_imagesequence.py                                             72      0   100%
Tests/test_imageshow.py                                                 65     11    83%
Tests/test_imagestat.py                                                 40      0   100%
Tests/test_imagetk.py                                                   68      6    91%
Tests/test_imagewin.py                                                  67     42    37%
Tests/test_imagewin_pointers.py                                         69     63     9%
Tests/test_lib_image.py                                                 27      0   100%
Tests/test_lib_pack.py                                                 397     29    93%
Tests/test_locale.py                                                    16      4    75%
Tests/test_main.py                                                      28      1    96%
Tests/test_map.py                                                       19      2    89%
Tests/test_mode_i16.py                                                  65      0   100%
Tests/test_numpy.py                                                    137    130     5%
Tests/test_pdfparser.py                                                 89      0   100%
Tests/test_pickle.py                                                    79      0   100%
Tests/test_psdraw.py                                                    35      0   100%
Tests/test_pyarrow.py                                                   52     46    12%
Tests/test_pyroma.py                                                    10      1    90%
Tests/test_qt_image_qapplication.py                                     56     46    18%
Tests/test_qt_image_toqimage.py                                         23     14    39%
Tests/test_sgi_crash.py                                                  9      0   100%
Tests/test_shell_injection.py                                           41      0   100%
Tests/test_tiff_crashes.py                                              18      3    83%
Tests/test_tiff_ifdrational.py                                          44      0   100%
Tests/test_uploader.py                                                  10      6    40%
Tests/test_util.py                                                      17      0   100%
Tests/test_webp_leaks.py                                                16      0   100%
src/PIL/AvifImagePlugin.py                                             167    167     0%
src/PIL/BdfFontFile.py                                                  57     57     0%
src/PIL/BlpImagePlugin.py                                              321    321     0%
src/PIL/BmpImagePlugin.py                                              241    241     0%
src/PIL/BufrStubImagePlugin.py                                          32     32     0%
src/PIL/ContainerIO.py                                                  83     83     0%
src/PIL/CurImagePlugin.py                                               31     31     0%
src/PIL/DcxImagePlugin.py                                               41     41     0%
src/PIL/DdsImagePlugin.py                                              503    503     0%
src/PIL/EpsImagePlugin.py                                              252    252     0%
src/PIL/ExifTags.py                                                    343    343     0%
src/PIL/FitsImagePlugin.py                                              97     97     0%
src/PIL/FliImagePlugin.py                                              101    101     0%
src/PIL/FontFile.py                                                     68     68     0%
src/PIL/FpxImagePlugin.py                                              105    105     0%
src/PIL/FtexImagePlugin.py                                              40     40     0%
src/PIL/GbrImagePlugin.py                                               49     49     0%
src/PIL/GdImageFile.py                                                  33     33     0%
src/PIL/GifImagePlugin.py                                              661    661     0%
src/PIL/GimpGradientFile.py                                             71     71     0%
src/PIL/GimpPaletteFile.py                                              41     41     0%
src/PIL/GribStubImagePlugin.py                                          32     32     0%
src/PIL/Hdf5StubImagePlugin.py                                          32     32     0%
src/PIL/IcnsImagePlugin.py                                             224    224     0%
src/PIL/IcoImagePlugin.py                                              191    191     0%
src/PIL/ImImagePlugin.py                                               187    187     0%
src/PIL/Image.py                                                      1678   1678     0%
src/PIL/ImageChops.py                                                   78     78     0%
src/PIL/ImageCms.py                                                    302    302     0%
src/PIL/ImageColor.py                                                   68     68     0%
src/PIL/ImageDraw2.py                                                   82     82     0%
src/PIL/ImageDraw.py                                                   499    499     0%
src/PIL/ImageEnhance.py                                                 39     39     0%
src/PIL/ImageFile.py                                                   461    461     0%
src/PIL/ImageFilter.py                                                 218    218     0%
src/PIL/ImageFont.py                                                   277    277     0%
src/PIL/ImageGrab.py                                                   117    117     0%
src/PIL/ImageMath.py                                                   172    172     0%
src/PIL/ImageMode.py                                                    25     25     0%
src/PIL/ImageMorph.py                                                  116    116     0%
src/PIL/ImageOps.py                                                    286    286     0%
src/PIL/ImagePalette.py                                                158    158     0%
src/PIL/ImagePath.py                                                     3      3     0%
src/PIL/ImageQt.py                                                     113    113     0%
src/PIL/ImageSequence.py                                                36     36     0%
src/PIL/ImageShow.py                                                   160    160     0%
src/PIL/ImageStat.py                                                    74     74     0%
src/PIL/ImageTk.py                                                     105    105     0%
src/PIL/ImageTransform.py                                               23     23     0%
src/PIL/ImageWin.py                                                     94     94     0%
src/PIL/ImtImagePlugin.py                                               46     46     0%
src/PIL/IptcImagePlugin.py                                             142    142     0%
src/PIL/Jpeg2KImagePlugin.py                                           271    271     0%
src/PIL/JpegImagePlugin.py                                             473    473     0%
src/PIL/JpegPresets.py                                                   2      2     0%
src/PIL/McIdasImagePlugin.py                                            32     32     0%
src/PIL/MicImagePlugin.py                                               43     43     0%
src/PIL/MpegImagePlugin.py                                              45     45     0%
src/PIL/MpoImagePlugin.py                                              108    108     0%
src/PIL/MspImagePlugin.py                                               87     87     0%
src/PIL/PSDraw.py                                                       62     62     0%
src/PIL/PaletteFile.py                                                  27     27     0%
src/PIL/PalmImagePlugin.py                                              78     78     0%
src/PIL/PcdImagePlugin.py                                               27     27     0%
src/PIL/PcfFontFile.py                                                 130    130     0%
src/PIL/PcxImagePlugin.py                                               90     90     0%
src/PIL/PdfImagePlugin.py                                              136    136     0%
src/PIL/PdfParser.py                                                   677    677     0%
src/PIL/PixarImagePlugin.py                                             22     22     0%
src/PIL/PngImagePlugin.py                                              928    928     0%
src/PIL/PpmImagePlugin.py                                              237    237     0%
src/PIL/PsdImagePlugin.py                                              195    195     0%
src/PIL/QoiImagePlugin.py                                               69     69     0%
src/PIL/SgiImagePlugin.py                                              121    121     0%
src/PIL/SpiderImagePlugin.py                                           181    181     0%
src/PIL/SunImagePlugin.py                                               57     57     0%
src/PIL/TarIO.py                                                        25     25     0%
src/PIL/TgaImagePlugin.py                                              111    111     0%
src/PIL/TiffImagePlugin.py                                            1223   1223     0%
src/PIL/TiffTags.py                                                     54     54     0%
src/PIL/WalImageFile.py                                                 28     28     0%
src/PIL/WebPImagePlugin.py                                             190    190     0%
src/PIL/WmfImagePlugin.py                                               80     80     0%
src/PIL/XVThumbImagePlugin.py                                           33     33     0%
src/PIL/XbmImagePlugin.py                                               40     40     0%
src/PIL/XpmImagePlugin.py                                               60     60     0%
src/PIL/__init__.py                                                      7      0   100%
src/PIL/__main__.py                                                      4      4     0%
src/PIL/_binary.py                                                      30     30     0%
src/PIL/_debug_info.py                                                  27     27     0%
src/PIL/_deprecate.py                                                   25     25     0%
src/PIL/_tkinter_finder.py                                              11     11     0%
src/PIL/_typing.py                                                      21     21     0%
src/PIL/_util.py                                                        14     14     0%
src/PIL/_version.py                                                      2      0   100%
src/PIL/features.py                                                    171    171     0%
src/PIL/report.py                                                        3      3     0%
----------------------------------------------------------------------------------------
TOTAL                                                                50524  17825    65%

Disabling test_pyroma:

Without test_pyroma
Name                                                                 Stmts   Miss  Cover
----------------------------------------------------------------------------------------
.tox/py313/lib/python3.13/site-packages/PIL/AvifImagePlugin.py         167      2    99%
.tox/py313/lib/python3.13/site-packages/PIL/BdfFontFile.py              57      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/BlpImagePlugin.py          321     13    96%
.tox/py313/lib/python3.13/site-packages/PIL/BmpImagePlugin.py          241      2    99%
.tox/py313/lib/python3.13/site-packages/PIL/BufrStubImagePlugin.py      32      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ContainerIO.py              83      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/CurImagePlugin.py           31      2    94%
.tox/py313/lib/python3.13/site-packages/PIL/DcxImagePlugin.py           41      1    98%
.tox/py313/lib/python3.13/site-packages/PIL/DdsImagePlugin.py          503      4    99%
.tox/py313/lib/python3.13/site-packages/PIL/EpsImagePlugin.py          252     27    89%
.tox/py313/lib/python3.13/site-packages/PIL/ExifTags.py                343      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/FitsImagePlugin.py          97      6    94%
.tox/py313/lib/python3.13/site-packages/PIL/FliImagePlugin.py          101      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/FontFile.py                 68      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/FpxImagePlugin.py          105     19    82%
.tox/py313/lib/python3.13/site-packages/PIL/FtexImagePlugin.py          40      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/GbrImagePlugin.py           49     10    80%
.tox/py313/lib/python3.13/site-packages/PIL/GdImageFile.py              33      1    97%
.tox/py313/lib/python3.13/site-packages/PIL/GifImagePlugin.py          661     11    98%
.tox/py313/lib/python3.13/site-packages/PIL/GimpGradientFile.py         71      3    96%
.tox/py313/lib/python3.13/site-packages/PIL/GimpPaletteFile.py          41      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/GribStubImagePlugin.py      32      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/Hdf5StubImagePlugin.py      32      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/IcnsImagePlugin.py         224     17    92%
.tox/py313/lib/python3.13/site-packages/PIL/IcoImagePlugin.py          191      4    98%
.tox/py313/lib/python3.13/site-packages/PIL/ImImagePlugin.py           187     34    82%
.tox/py313/lib/python3.13/site-packages/PIL/Image.py                  1678    181    89%
.tox/py313/lib/python3.13/site-packages/PIL/ImageChops.py               78      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageCms.py                302     47    84%
.tox/py313/lib/python3.13/site-packages/PIL/ImageColor.py               68      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageDraw2.py               82     11    87%
.tox/py313/lib/python3.13/site-packages/PIL/ImageDraw.py               499     18    96%
.tox/py313/lib/python3.13/site-packages/PIL/ImageEnhance.py             39      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageFile.py               461     25    95%
.tox/py313/lib/python3.13/site-packages/PIL/ImageFilter.py             218      8    96%
.tox/py313/lib/python3.13/site-packages/PIL/ImageFont.py               277     26    91%
.tox/py313/lib/python3.13/site-packages/PIL/ImageGrab.py               117     76    35%
.tox/py313/lib/python3.13/site-packages/PIL/ImageMath.py               172     18    90%
.tox/py313/lib/python3.13/site-packages/PIL/ImageMode.py                25      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageMorph.py              116      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageOps.py                286      8    97%
.tox/py313/lib/python3.13/site-packages/PIL/ImagePalette.py            158      3    98%
.tox/py313/lib/python3.13/site-packages/PIL/ImagePath.py                 3      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageQt.py                 113     84    26%
.tox/py313/lib/python3.13/site-packages/PIL/ImageSequence.py            36      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageShow.py               160     64    60%
.tox/py313/lib/python3.13/site-packages/PIL/ImageStat.py                74      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageTk.py                 105      5    95%
.tox/py313/lib/python3.13/site-packages/PIL/ImageTransform.py           23      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/ImageWin.py                 94     62    34%
.tox/py313/lib/python3.13/site-packages/PIL/ImtImagePlugin.py           46      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/IptcImagePlugin.py         142     19    87%
.tox/py313/lib/python3.13/site-packages/PIL/Jpeg2KImagePlugin.py       271     24    91%
.tox/py313/lib/python3.13/site-packages/PIL/JpegImagePlugin.py         473     49    90%
.tox/py313/lib/python3.13/site-packages/PIL/JpegPresets.py               2      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/McIdasImagePlugin.py        32      6    81%
.tox/py313/lib/python3.13/site-packages/PIL/MicImagePlugin.py           43      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/MpegImagePlugin.py          45      6    87%
.tox/py313/lib/python3.13/site-packages/PIL/MpoImagePlugin.py          108      1    99%
.tox/py313/lib/python3.13/site-packages/PIL/MspImagePlugin.py           87      8    91%
.tox/py313/lib/python3.13/site-packages/PIL/PSDraw.py                   62      7    89%
.tox/py313/lib/python3.13/site-packages/PIL/PaletteFile.py              27      5    81%
.tox/py313/lib/python3.13/site-packages/PIL/PalmImagePlugin.py          78     11    86%
.tox/py313/lib/python3.13/site-packages/PIL/PcdImagePlugin.py           27      4    85%
.tox/py313/lib/python3.13/site-packages/PIL/PcfFontFile.py             130     13    90%
.tox/py313/lib/python3.13/site-packages/PIL/PcxImagePlugin.py           90      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/PdfImagePlugin.py          136      3    98%
.tox/py313/lib/python3.13/site-packages/PIL/PdfParser.py               677     38    94%
.tox/py313/lib/python3.13/site-packages/PIL/PixarImagePlugin.py         22      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/PngImagePlugin.py          928     53    94%
.tox/py313/lib/python3.13/site-packages/PIL/PpmImagePlugin.py          237      3    99%
.tox/py313/lib/python3.13/site-packages/PIL/PsdImagePlugin.py          195     12    94%
.tox/py313/lib/python3.13/site-packages/PIL/QoiImagePlugin.py           69      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/SgiImagePlugin.py          121      8    93%
.tox/py313/lib/python3.13/site-packages/PIL/SpiderImagePlugin.py       181     29    84%
.tox/py313/lib/python3.13/site-packages/PIL/SunImagePlugin.py           57      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/TarIO.py                    25      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/TgaImagePlugin.py          111      6    95%
.tox/py313/lib/python3.13/site-packages/PIL/TiffImagePlugin.py        1223     48    96%
.tox/py313/lib/python3.13/site-packages/PIL/TiffTags.py                 54      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/WalImageFile.py             28      1    96%
.tox/py313/lib/python3.13/site-packages/PIL/WebPImagePlugin.py         190     10    95%
.tox/py313/lib/python3.13/site-packages/PIL/WmfImagePlugin.py           80     18    78%
.tox/py313/lib/python3.13/site-packages/PIL/XVThumbImagePlugin.py       33      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/XbmImagePlugin.py           40      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/XpmImagePlugin.py           60     10    83%
.tox/py313/lib/python3.13/site-packages/PIL/__init__.py                  7      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/__main__.py                  4      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/_binary.py                  30      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/_debug_info.py              27     27     0%
.tox/py313/lib/python3.13/site-packages/PIL/_deprecate.py               25      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/_tkinter_finder.py          11      3    73%
.tox/py313/lib/python3.13/site-packages/PIL/_typing.py                  21      4    81%
.tox/py313/lib/python3.13/site-packages/PIL/_util.py                    14      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/_version.py                  2      0   100%
.tox/py313/lib/python3.13/site-packages/PIL/features.py                171     12    93%
.tox/py313/lib/python3.13/site-packages/PIL/report.py                    3      0   100%
Tests/__init__.py                                                        0      0   100%
Tests/conftest.py                                                       17      4    76%
Tests/helper.py                                                        203     36    82%
Tests/oss-fuzz/fuzzers.py                                               28      0   100%
Tests/oss-fuzz/test_fuzzers.py                                          36      2    94%
Tests/test_000_sanity.py                                                12      0   100%
Tests/test_arrow.py                                                     92      0   100%
Tests/test_binary.py                                                    15      0   100%
Tests/test_bmp_reference.py                                             49      2    96%
Tests/test_box_blur.py                                                  70      1    99%
Tests/test_color_lut.py                                                264     49    81%
Tests/test_core_resources.py                                           139      2    99%
Tests/test_decompression_bomb.py                                        70      5    93%
Tests/test_deprecate.py                                                 33      0   100%
Tests/test_features.py                                                 110      5    95%
Tests/test_file_apng.py                                                478      1    99%
Tests/test_file_avif.py                                                470     16    97%
Tests/test_file_blp.py                                                  45      0   100%
Tests/test_file_bmp.py                                                 132      0   100%
Tests/test_file_bufrstub.py                                             51      0   100%
Tests/test_file_container.py                                           109      0   100%
Tests/test_file_cur.py                                                  21      0   100%
Tests/test_file_dcx.py                                                  56      0   100%
Tests/test_file_dds.py                                                 271      2    99%
Tests/test_file_eps.py                                                 240      6    98%
Tests/test_file_fits.py                                                 31      1    97%
Tests/test_file_fli.py                                                 132      0   100%
Tests/test_file_fpx.py                                                  30      1    97%
Tests/test_file_ftex.py                                                 24      1    96%
Tests/test_file_gbr.py                                                  24      0   100%
Tests/test_file_gd.py                                                   17      0   100%
Tests/test_file_gif.py                                                 866      0   100%
Tests/test_file_gimpgradient.py                                         52      0   100%
Tests/test_file_gimppalette.py                                          44      0   100%
Tests/test_file_gribstub.py                                             51      0   100%
Tests/test_file_hdf5stub.py                                             54      0   100%
Tests/test_file_icns.py                                                114      0   100%
Tests/test_file_ico.py                                                 161      0   100%
Tests/test_file_im.py                                                   79      0   100%
Tests/test_file_imt.py                                                  13      0   100%
Tests/test_file_iptc.py                                                 61      0   100%
Tests/test_file_jpeg2k.py                                              316     36    89%
Tests/test_file_jpeg.py                                                640     21    97%
Tests/test_file_libtiff.py                                             725     13    98%
Tests/test_file_libtiff_small.py                                        26      0   100%
Tests/test_file_mcidas.py                                               17      0   100%
Tests/test_file_mic.py                                                  50      0   100%
Tests/test_file_mpeg.py                                                 19      0   100%
Tests/test_file_mpo.py                                                 212      0   100%
Tests/test_file_msp.py                                                  49      0   100%
Tests/test_file_palm.py                                                 43      1    98%
Tests/test_file_pcd.py                                                   5      0   100%
Tests/test_file_pcx.py                                                 134      2    99%
Tests/test_file_pdf.py                                                 214      1    99%
Tests/test_file_pixar.py                                                18      0   100%
Tests/test_file_png.py                                                 523      4    99%
Tests/test_file_ppm.py                                                 194      6    97%
Tests/test_file_psd.py                                                 112      2    98%
Tests/test_file_qoi.py                                                  19      0   100%
Tests/test_file_sgi.py                                                  59      0   100%
Tests/test_file_spider.py                                               98      1    99%
Tests/test_file_sun.py                                                  53      4    92%
Tests/test_file_tar.py                                                  41      2    95%
Tests/test_file_tga.py                                                 172      0   100%
Tests/test_file_tiff.py                                                649     16    98%
Tests/test_file_tiff_metadata.py                                       281      0   100%
Tests/test_file_wal.py                                                  20      0   100%
Tests/test_file_webp.py                                                149      1    99%
Tests/test_file_webp_alpha.py                                           77      0   100%
Tests/test_file_webp_animated.py                                       124      8    94%
Tests/test_file_webp_lossless.py                                        18      0   100%
Tests/test_file_webp_metadata.py                                       100      4    96%
Tests/test_file_wmf.py                                                  83     21    75%
Tests/test_file_xbm.py                                                  38      0   100%
Tests/test_file_xpm.py                                                  22      0   100%
Tests/test_file_xvthumb.py                                              18      0   100%
Tests/test_font_bdf.py                                                  19      0   100%
Tests/test_font_crash.py                                                17      4    76%
Tests/test_font_leaks.py                                                25      0   100%
Tests/test_font_pcf.py                                                  72      0   100%
Tests/test_font_pcf_charsets.py                                         61      2    97%
Tests/test_fontfile.py                                                  17      0   100%
Tests/test_format_hsv.py                                                63      0   100%
Tests/test_format_lab.py                                                23      0   100%
Tests/test_image.py                                                    756     20    97%
Tests/test_image_access.py                                             196     26    87%
Tests/test_image_array.py                                               66     59    11%
Tests/test_image_convert.py                                            201      0   100%
Tests/test_image_copy.py                                                36      0   100%
Tests/test_image_crop.py                                                61      0   100%
Tests/test_image_draft.py                                               30      0   100%
Tests/test_image_entropy.py                                             14      0   100%
Tests/test_image_filter.py                                              75      0   100%
Tests/test_image_frombytes.py                                           12      0   100%
Tests/test_image_fromqimage.py                                          38     20    47%
Tests/test_image_getbands.py                                            12      0   100%
Tests/test_image_getbbox.py                                             37      0   100%
Tests/test_image_getcolors.py                                           49      0   100%
Tests/test_image_getdata.py                                             21      0   100%
Tests/test_image_getextrema.py                                          20      0   100%
Tests/test_image_getim.py                                               12      0   100%
Tests/test_image_getpalette.py                                          32      0   100%
Tests/test_image_getprojection.py                                       21      0   100%
Tests/test_image_histogram.py                                           15      0   100%
Tests/test_image_load.py                                                36      0   100%
Tests/test_image_mode.py                                                40      0   100%
Tests/test_image_paste.py                                              121      0   100%
Tests/test_image_point.py                                               46      0   100%
Tests/test_image_putalpha.py                                            34      0   100%
Tests/test_image_putdata.py                                             80      1    99%
Tests/test_image_putpalette.py                                          67      1    99%
Tests/test_image_quantize.py                                           113     12    89%
Tests/test_image_reduce.py                                             140      0   100%
Tests/test_image_resample.py                                           384     18    95%
Tests/test_image_resize.py                                             137      0   100%
Tests/test_image_rotate.py                                              87      0   100%
Tests/test_image_split.py                                               36      1    97%
Tests/test_image_thumbnail.py                                          101      0   100%
Tests/test_image_tobitmap.py                                            10      0   100%
Tests/test_image_tobytes.py                                              5      0   100%
Tests/test_image_transform.py                                          145      0   100%
Tests/test_image_transpose.py                                           98      0   100%
Tests/test_imagechops.py                                               216      0   100%
Tests/test_imagecms.py                                                 357      5    99%
Tests/test_imagecolor.py                                               144      0   100%
Tests/test_imagedraw2.py                                               144      0   100%
Tests/test_imagedraw.py                                                765      2    99%
Tests/test_imageenhance.py                                              27      0   100%
Tests/test_imagefile.py                                                271      0   100%
Tests/test_imagefont.py                                                609     26    96%
Tests/test_imagefontctl.py                                             209     18    91%
Tests/test_imagefontpil.py                                              53      3    94%
Tests/test_imagegrab.py                                                 90     43    52%
Tests/test_imagemath_lambda_eval.py                                    139      0   100%
Tests/test_imagemath_unsafe_eval.py                                    153      0   100%
Tests/test_imagemorph.py                                               145      0   100%
Tests/test_imageops.py                                                 316      0   100%
Tests/test_imageops_usm.py                                              70      0   100%
Tests/test_imagepalette.py                                             107      0   100%
Tests/test_imagepath.py                                                 78      6    92%
Tests/test_imageqt.py                                                   35     24    31%
Tests/test_imagesequence.py                                             72      0   100%
Tests/test_imageshow.py                                                 65     11    83%
Tests/test_imagestat.py                                                 40      0   100%
Tests/test_imagetk.py                                                   68      6    91%
Tests/test_imagewin.py                                                  67     42    37%
Tests/test_imagewin_pointers.py                                         69     63     9%
Tests/test_lib_image.py                                                 27      0   100%
Tests/test_lib_pack.py                                                 397     29    93%
Tests/test_locale.py                                                    16      4    75%
Tests/test_main.py                                                      28      1    96%
Tests/test_map.py                                                       19      2    89%
Tests/test_mode_i16.py                                                  65      0   100%
Tests/test_numpy.py                                                    137    130     5%
Tests/test_pdfparser.py                                                 89      0   100%
Tests/test_pickle.py                                                    79      0   100%
Tests/test_psdraw.py                                                    35      0   100%
Tests/test_pyarrow.py                                                   52     46    12%
Tests/test_pyroma.py                                                    10      5    50%
Tests/test_qt_image_qapplication.py                                     56     46    18%
Tests/test_qt_image_toqimage.py                                         23     14    39%
Tests/test_sgi_crash.py                                                  9      0   100%
Tests/test_shell_injection.py                                           41      0   100%
Tests/test_tiff_crashes.py                                              18      3    83%
Tests/test_tiff_ifdrational.py                                          44      0   100%
Tests/test_uploader.py                                                  10      6    40%
Tests/test_util.py                                                      17      0   100%
Tests/test_webp_leaks.py                                                16      0   100%
----------------------------------------------------------------------------------------
TOTAL                                                                34892   2206    94%

@hugovk hugovk merged commit cda26be into python-pillow:main Apr 4, 2025
89 of 93 checks passed
@hugovk hugovk deleted the pep639 branch April 4, 2025 15:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants