Python Imaging Library (fork)
This report presents the forensic synthetic code analysis of python-pillow/Pillow, a Python project with 13,679 GitHub stars. SynthScan v2.0 examined 133,908 lines of code across 499 source files, recording 1143 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 10.6 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1143 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 169 | def _find_library_dirs_ldconfig() -> list[str]: | CODE |
| LOW | checks/check_large_memory.py | 51 | def test_size_greater_than_int() -> None: | CODE |
| LOW | Tests/test_imagecms.py | 239 | def test_unsupported_color_space() -> None: | CODE |
| LOW | Tests/test_imagecms.py | 249 | def test_invalid_color_temperature() -> None: | CODE |
| LOW | Tests/test_imagecms.py | 353 | def test_extended_information() -> None: | CODE |
| LOW | Tests/test_imagecms.py | 358 | def assert_truncated_tuple_equal( | CODE |
| LOW | Tests/test_imagecms.py | 540 | def test_transform_typesafety() -> None: | CODE |
| LOW | Tests/test_imagecms.py | 548 | def assert_aux_channel_preserved( | CODE |
| LOW⚡ | Tests/test_imagecms.py | 607 | def test_preserve_auxiliary_channels_rgba() -> None: | CODE |
| LOW⚡ | Tests/test_imagecms.py | 613 | def test_preserve_auxiliary_channels_rgba_in_place() -> None: | CODE |
| LOW⚡ | Tests/test_imagecms.py | 619 | def test_preserve_auxiliary_channels_rgbx() -> None: | CODE |
| LOW⚡ | Tests/test_imagecms.py | 625 | def test_preserve_auxiliary_channels_rgbx_in_place() -> None: | CODE |
| LOW⚡ | Tests/test_imagecms.py | 631 | def test_auxiliary_channels_isolated() -> None: | CODE |
| LOW | Tests/test_image_paste.py | 374 | def test_incorrect_abbreviated_form(self) -> None: | CODE |
| LOW | Tests/test_file_msp.py | 84 | def test_cannot_save_wrong_mode(tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_image_array.py | 101 | def test_fromarray_strides_without_tobytes() -> None: | CODE |
| LOW | Tests/test_file_xbm.py | 55 | def test_open_filename_with_underscore() -> None: | STRING |
| LOW | Tests/test_file_psd.py | 124 | def test_open_after_exclusive_load() -> None: | CODE |
| LOW | Tests/test_file_psd.py | 136 | def test_negative_top_left_layer() -> None: | CODE |
| LOW | Tests/test_file_psd.py | 176 | def test_combined_larger_than_size() -> None: | CODE |
| LOW | Tests/test_file_psd.py | 231 | def test_bounds_crash_overflow() -> None: | CODE |
| LOW | Tests/test_imagewin.py | 104 | def test_dib_frombytes_tobytes_roundtrip(self) -> None: | CODE |
| LOW | Tests/test_imageshow.py | 62 | def test_show_without_viewers(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | Tests/test_features.py | 54 | def test_libjpeg_turbo_version() -> None: | CODE |
| LOW | Tests/test_features.py | 61 | def test_libimagequant_version() -> None: | CODE |
| LOW | Tests/test_features.py | 77 | def test_check_warns_on_nonexistent() -> None: | CODE |
| LOW | Tests/test_file_xpm.py | 55 | def test_not_enough_image_data() -> None: | CODE |
| LOW | Tests/test_core_resources.py | 87 | def test_set_block_size_stats(self) -> None: | CODE |
| LOW | Tests/test_core_resources.py | 120 | def test_set_blocks_max_stats(self) -> None: | CODE |
| LOW | Tests/test_file_pcx.py | 137 | def test_break_in_count_overflow( | CODE |
| LOW | Tests/test_file_png.py | 245 | def test_load_transparent_rgb(self) -> None: | CODE |
| LOW | Tests/test_file_png.py | 259 | def test_save_p_transparent_palette(self, tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_file_png.py | 282 | def test_save_p_single_transparency(self, tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_file_png.py | 307 | def test_save_p_transparent_black(self, tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_file_png.py | 325 | def test_save_grayscale_transparency(self, tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_file_png.py | 359 | def test_save_rgb_single_transparency(self, tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_file_png.py | 396 | def test_verify_ignores_crc_error(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | Tests/test_file_png.py | 410 | def test_verify_not_ignores_crc_error_in_required_chunk( | CODE |
| LOW | Tests/test_file_png.py | 578 | def test_roundtrip_icc_profile(self) -> None: | CODE |
| LOW | Tests/test_file_png.py | 585 | def test_roundtrip_no_icc_profile(self) -> None: | CODE |
| LOW | Tests/test_file_png.py | 601 | def test_repr_png_error_returns_none(self) -> None: | CODE |
| LOW | Tests/test_file_png.py | 638 | def test_roundtrip_private_chunk(self) -> None: | CODE |
| LOW | Tests/test_file_png.py | 656 | def test_textual_chunks_after_idat(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | Tests/test_file_png.py | 687 | def test_unknown_compression_method(self) -> None: | CODE |
| LOW | Tests/test_imagegrab.py | 65 | def test_grab_invalid_xdisplay(self) -> None: | CODE |
| LOW | Tests/test_imagegrab.py | 170 | def test_grabclipboard_wl_clipboard(self, ext: str) -> None: | CODE |
| LOW | Tests/test_imagegrab.py | 186 | def test_grabclipboard_wl_clipboard_errors(self, arg: str) -> None: | CODE |
| LOW | Tests/test_shell_injection.py | 26 | def assert_save_filename_check( | CODE |
| LOW | Tests/test_shell_injection.py | 50 | def test_save_netpbm_filename_bmp_mode(self, tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_shell_injection.py | 58 | def test_save_netpbm_filename_l_mode(self, tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_file_bmp.py | 41 | def test_fallback_if_mmap_errors() -> None: | CODE |
| LOW | Tests/test_file_bmp.py | 266 | def test_unsupported_bmp_bitfields_layout() -> None: | CODE |
| LOW | Tests/test_file_im.py | 110 | def test_save_unsupported_mode(tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_image_rotate.py | 143 | def test_alpha_rotate_no_fill() -> None: | CODE |
| LOW | Tests/test_image_rotate.py | 151 | def test_alpha_rotate_with_fill() -> None: | CODE |
| LOW | Tests/test_pickle.py | 87 | def test_pickle_la_mode_with_palette(tmp_path: Path) -> None: | CODE |
| LOW | Tests/test_pickle.py | 116 | def helper_assert_pickled_font_images( | CODE |
| LOW | Tests/test_nanoarrow.py | 267 | def test_image_nested_metadata(mode: str, metadata: list[str]) -> None: | CODE |
| LOW⚡ | Tests/test_imagefont.py | 459 | def test_free_type_font_get_name(font: ImageFont.FreeTypeFont) -> None: | CODE |
| LOW⚡ | Tests/test_imagefont.py | 463 | def test_free_type_font_get_metrics(font: ImageFont.FreeTypeFont) -> None: | CODE |
| 335 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | setup.py | 2 | # ------------------------------ | COMMENT |
| MEDIUM⚡ | setup.py | 5 | # ------------------------------ | COMMENT |
| MEDIUM⚡ | setup.py | 8 | # ------------------------------ | COMMENT |
| MEDIUM | Tests/test_image_getcolors.py | 39 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .github/workflows/wheels.yml | 5 | # ┌───────────── minute (0 - 59) | COMMENT |
| MEDIUM⚡ | .github/workflows/wheels.yml | 6 | # │ ┌───────────── hour (0 - 23) | COMMENT |
| MEDIUM⚡ | .github/workflows/wheels.yml | 7 | # │ │ ┌───────────── day of the month (1 - 31) | COMMENT |
| MEDIUM⚡ | .github/workflows/wheels.yml | 8 | # │ │ │ ┌───────────── month (1 - 12 or JAN-DEC) | COMMENT |
| MEDIUM⚡ | .github/workflows/wheels.yml | 9 | # │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT) | COMMENT |
| MEDIUM | src/PIL/MpoImagePlugin.py | 191 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PngImagePlugin.py | 157 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PngImagePlugin.py | 374 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PngImagePlugin.py | 748 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PngImagePlugin.py | 1103 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PngImagePlugin.py | 1536 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PngImagePlugin.py | 1562 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PcxImagePlugin.py | 135 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PcxImagePlugin.py | 223 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/ImageFile.py | 82 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/ImageFile.py | 110 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/ImageFile.py | 641 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/SpiderImagePlugin.py | 213 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/SpiderImagePlugin.py | 241 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/SpiderImagePlugin.py | 299 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/MpegImagePlugin.py | 77 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/GribStubImagePlugin.py | 31 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/GribStubImagePlugin.py | 66 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PixarImagePlugin.py | 68 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/MicImagePlugin.py | 25 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/MicImagePlugin.py | 99 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/ImtImagePlugin.py | 23 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/ImtImagePlugin.py | 98 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/GifImagePlugin.py | 69 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/GifImagePlugin.py | 509 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/GifImagePlugin.py | 1139 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/GifImagePlugin.py | 1210 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PalmImagePlugin.py | 103 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PalmImagePlugin.py | 111 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PalmImagePlugin.py | 211 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/FpxImagePlugin.py | 41 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/FpxImagePlugin.py | 257 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/BufrStubImagePlugin.py | 31 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/BufrStubImagePlugin.py | 66 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/PSDraw.py | 146 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/Hdf5StubImagePlugin.py | 31 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/Hdf5StubImagePlugin.py | 66 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/IcoImagePlugin.py | 52 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/IcoImagePlugin.py | 389 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/EpsImagePlugin.py | 35 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/EpsImagePlugin.py | 423 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/EpsImagePlugin.py | 475 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/TgaImagePlugin.py | 31 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/TgaImagePlugin.py | 181 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/TgaImagePlugin.py | 275 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/Jpeg2KImagePlugin.py | 384 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | src/PIL/Jpeg2KImagePlugin.py | 455 | # ------------------------------------------------------------ | COMMENT |
| MEDIUM | src/PIL/PcfFontFile.py | 34 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/ImageTk.py | 39 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/ImageTk.py | 69 | # -------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/PIL/ImageTk.py | 191 | # -------------------------------------------------------------------- | COMMENT |
| 46 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | conftest.py | 1 | CODE | |
| LOW | selftest.py | 3 | CODE | |
| LOW | setup.py | 9 | CODE | |
| LOW | checks/check_libtiff_segfault.py | 1 | CODE | |
| LOW | checks/check_large_memory.py | 1 | CODE | |
| LOW | checks/check_j2k_overflow.py | 1 | CODE | |
| LOW | checks/check_j2k_leaks.py | 1 | CODE | |
| LOW | checks/32bit_segfault_check.py | 1 | CODE | |
| LOW | checks/check_release_notes.py | 1 | CODE | |
| LOW | checks/check_jpeg_leaks.py | 1 | CODE | |
| LOW | checks/check_large_memory_numpy.py | 1 | CODE | |
| LOW | checks/check_wheel.py | 1 | CODE | |
| LOW | checks/check_fli_oob.py | 1 | CODE | |
| LOW | checks/check_png_dos.py | 1 | CODE | |
| LOW | checks/check_j2k_dos.py | 3 | CODE | |
| LOW | checks/check_fli_overflow.py | 1 | CODE | |
| LOW | checks/check_jp2_overflow.py | 13 | CODE | |
| LOW | checks/check_imaging_leaks.py | 1 | CODE | |
| LOW | checks/check_icns_dos.py | 3 | CODE | |
| LOW | winbuild/build_prepare.py | 1 | CODE | |
| LOW | Tests/test_imagecms.py | 1 | CODE | |
| LOW | Tests/test_fontfile.py | 1 | CODE | |
| LOW | Tests/test_image_fromqimage.py | 1 | CODE | |
| LOW | Tests/test_qt_image_toqimage.py | 1 | CODE | |
| LOW | Tests/test_pyarrow.py | 1 | CODE | |
| LOW | Tests/test_tiff_ifdrational.py | 1 | CODE | |
| LOW | Tests/test_image_paste.py | 1 | CODE | |
| LOW | Tests/test_file_msp.py | 1 | CODE | |
| LOW | Tests/test_image_array.py | 1 | CODE | |
| LOW | Tests/test_file_xbm.py | 1 | CODE | |
| LOW | Tests/conftest.py | 1 | CODE | |
| LOW | Tests/test_font_pcf.py | 1 | CODE | |
| LOW | Tests/test_tiff_crashes.py | 13 | CODE | |
| LOW | Tests/test_file_psd.py | 1 | CODE | |
| LOW | Tests/test_file_dcx.py | 1 | CODE | |
| LOW | Tests/test_imagewin.py | 1 | CODE | |
| LOW | Tests/test_imageshow.py | 1 | CODE | |
| LOW | Tests/test_font_leaks.py | 1 | CODE | |
| LOW | Tests/test_qt_image_qapplication.py | 1 | CODE | |
| LOW | Tests/test_file_gimppalette.py | 1 | CODE | |
| LOW | Tests/test_features.py | 1 | CODE | |
| LOW | Tests/test_image_putalpha.py | 1 | CODE | |
| LOW | Tests/test_image_draft.py | 1 | CODE | |
| LOW | Tests/test_file_xpm.py | 1 | CODE | |
| LOW | Tests/test_webp_leaks.py | 1 | CODE | |
| LOW | Tests/test_core_resources.py | 1 | CODE | |
| LOW | Tests/test_file_pcx.py | 1 | CODE | |
| LOW | Tests/test_file_png.py | 1 | CODE | |
| LOW | Tests/test_imagegrab.py | 1 | CODE | |
| LOW | Tests/test_uploader.py | 1 | CODE | |
| LOW | Tests/test_shell_injection.py | 1 | CODE | |
| LOW | Tests/test_locale.py | 1 | CODE | |
| LOW | Tests/test_file_pcd.py | 1 | CODE | |
| LOW | Tests/test_file_bmp.py | 1 | CODE | |
| LOW | Tests/test_file_im.py | 1 | CODE | |
| LOW | Tests/test_image_rotate.py | 1 | CODE | |
| LOW | Tests/test_pickle.py | 1 | CODE | |
| LOW | Tests/test_file_cur.py | 1 | CODE | |
| LOW | Tests/test_file_blp.py | 1 | CODE | |
| LOW | Tests/test_nanoarrow.py | 1 | CODE | |
| 239 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | checks/check_jp2_overflow.py | 1 | # Reproductions/tests for OOB read errors in FliDecode.c | COMMENT |
| LOW | Tests/test_tiff_crashes.py | 1 | # Reproductions/tests for crashes/read errors in TiffDecode.c | COMMENT |
| LOW | Tests/test_image_transform.py | 221 | sz, Image.Transform.EXTENT, (0, 0, w, h), Image.Resampling.NEAREST | COMMENT |
| LOW | Tests/test_file_apng.py | 121 | with Image.open("Tests/images/apng/dispose_op_previous_region.png") as im: | COMMENT |
| LOW | Tests/oss-fuzz/fuzz_font.py | 1 | #!/usr/bin/python3 | COMMENT |
| LOW | Tests/oss-fuzz/build.sh | 1 | #!/bin/bash -eu | COMMENT |
| LOW | Tests/oss-fuzz/fuzz_pillow.py | 1 | # Copyright 2020 Google LLC | COMMENT |
| LOW | Tests/oss-fuzz/build_dictionaries.sh | 1 | #!/bin/bash -eu | COMMENT |
| LOW | docs/conf.py | 1 | # | COMMENT |
| LOW | docs/conf.py | 61 | COMMENT | |
| LOW | docs/conf.py | 81 | # Else, today_fmt is used as the format for a strftime call. | COMMENT |
| LOW | docs/conf.py | 101 | # show_authors = False | COMMENT |
| LOW | docs/conf.py | 141 | COMMENT | |
| LOW | docs/conf.py | 181 | # If true, SmartyPants will be used to convert quotes and dashes to | COMMENT |
| LOW | docs/conf.py | 201 | # If true, links to the reST sources are added to the pages. | COMMENT |
| LOW | src/_imagingft.c | 21 | #define PY_SSIZE_T_CLEAN | COMMENT |
| LOW | src/_imagingft.c | 41 | #undef __FTERRORS_H__ | COMMENT |
| LOW | src/_webp.c | 1 | #define PY_SSIZE_T_CLEAN | COMMENT |
| LOW | src/_imagingmath.c | 61 | COMMENT | |
| LOW | src/_imaging.c | 81 | #ifdef __CYGWIN__ | COMMENT |
| LOW | src/libImaging/ImPlatform.h | 21 | #if defined(PIL_NO_INLINE) | COMMENT |
| LOW | src/libImaging/ImPlatform.h | 41 | #else /* not WIN */ | COMMENT |
| LOW | src/libImaging/ImPlatform.h | 61 | #define FLOAT64 double | COMMENT |
| LOW | src/libImaging/ImagingUtils.h | 1 | #ifdef WORDS_BIGENDIAN | COMMENT |
| LOW | src/libImaging/JpegDecode.c | 21 | * See the README file for details on usage and redistribution. | COMMENT |
| LOW | src/libImaging/Pack.c | 61 | out[3] = tmp[4], \ | COMMENT |
| LOW | src/libImaging/Imaging.h | 121 | }; | COMMENT |
| LOW | src/libImaging/Imaging.h | 741 | export_imaging_array(Imaging im, struct ArrowArray *array); | COMMENT |
| LOW | src/libImaging/Imaging.h | 761 | #define MUTEX_UNLOCK(m) PyMutex_Unlock(m) | COMMENT |
| LOW | src/libImaging/JpegEncode.c | 21 | COMMENT | |
| LOW | src/libImaging/Quant.c | 21 | #include "Imaging.h" | COMMENT |
| LOW | src/libImaging/Arrow.h | 1 | #include <stdint.h> | COMMENT |
| LOW | src/libImaging/QuantOctree.c | 1 | /* Copyright (c) 2010 Oliver Tonnhofer <olt@bogosoft.com>, Omniscale | COMMENT |
| LOW | src/PIL/MpoImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/ImageMode.py | 1 | # | COMMENT |
| LOW | src/PIL/PngImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/PngImagePlugin.py | 21 | # 2004-09-20 fl Added PngInfo chunk container | COMMENT |
| LOW | src/PIL/XbmImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/PcxImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/SunImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/SunImagePlugin.py | 41 | # { | COMMENT |
| LOW | src/PIL/SunImagePlugin.py | 101 | if self.mode == "L": | COMMENT |
| LOW | src/PIL/ImageFile.py | 1 | # | COMMENT |
| LOW | src/PIL/SpiderImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/SpiderImagePlugin.py | 21 | ## | COMMENT |
| LOW | src/PIL/TarIO.py | 1 | # | COMMENT |
| LOW | src/PIL/MpegImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/BdfFontFile.py | 1 | # | COMMENT |
| LOW | src/PIL/ImageStat.py | 1 | # | COMMENT |
| LOW | src/PIL/PixarImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/GimpPaletteFile.py | 1 | # | COMMENT |
| LOW | src/PIL/ImageColor.py | 1 | # | COMMENT |
| LOW | src/PIL/ContainerIO.py | 1 | # | COMMENT |
| LOW | src/PIL/MspImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/MspImagePlugin.py | 81 | # cc-by-attribution -- That page references is taken from the | COMMENT |
| LOW | src/PIL/MspImagePlugin.py | 101 | # Write the RunValue byte RunCount times | COMMENT |
| LOW | src/PIL/MicImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/ImtImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/GifImagePlugin.py | 1 | # | COMMENT |
| LOW | src/PIL/ImageQt.py | 1 | # | COMMENT |
| 73 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 385 | CODE | |
| LOW | setup.py | 496 | CODE | |
| LOW | winbuild/build_prepare.py | 475 | CODE | |
| LOW | Tests/test_imagecms.py | 631 | CODE | |
| LOW | Tests/test_pyarrow.py | 26 | CODE | |
| LOW | Tests/test_features.py | 27 | CODE | |
| LOW | Tests/test_features.py | 31 | CODE | |
| LOW | Tests/test_file_png.py | 71 | CODE | |
| LOW | Tests/test_imagegrab.py | 109 | CODE | |
| LOW | Tests/test_nanoarrow.py | 26 | CODE | |
| LOW | Tests/test_bmp_reference.py | 19 | CODE | |
| LOW | Tests/test_bmp_reference.py | 64 | CODE | |
| LOW | Tests/test_arro3.py | 34 | CODE | |
| LOW | Tests/test_file_tiff.py | 599 | CODE | |
| LOW | Tests/test_file_jpeg2k.py | 527 | CODE | |
| LOW | Tests/test_file_libtiff.py | 160 | CODE | |
| LOW | Tests/test_file_libtiff.py | 207 | CODE | |
| LOW | Tests/test_imageops.py | 409 | CODE | |
| LOW | Tests/test_imagedraw.py | 1444 | CODE | |
| LOW | docs/example/DdsImagePlugin.py | 117 | CODE | |
| LOW | docs/example/DdsImagePlugin.py | 155 | CODE | |
| LOW | docs/example/DdsImagePlugin.py | 179 | CODE | |
| LOW | .github/compare-dist-sizes.py | 120 | CODE | |
| LOW | src/PIL/MpoImagePlugin.py | 41 | CODE | |
| LOW | src/PIL/PngImagePlugin.py | 1172 | CODE | |
| LOW | src/PIL/PngImagePlugin.py | 1323 | CODE | |
| LOW | src/PIL/PngImagePlugin.py | 500 | CODE | |
| LOW | src/PIL/PngImagePlugin.py | 630 | CODE | |
| LOW | src/PIL/PngImagePlugin.py | 879 | CODE | |
| LOW | src/PIL/PngImagePlugin.py | 1026 | CODE | |
| LOW | src/PIL/AvifImagePlugin.py | 147 | CODE | |
| LOW | src/PIL/PcxImagePlugin.py | 53 | CODE | |
| LOW | src/PIL/SunImagePlugin.py | 36 | CODE | |
| LOW | src/PIL/ImageFile.py | 672 | CODE | |
| LOW | src/PIL/ImageFile.py | 117 | CODE | |
| LOW | src/PIL/ImageFile.py | 291 | CODE | |
| LOW | src/PIL/ImageFile.py | 531 | CODE | |
| LOW | src/PIL/ImageText.py | 23 | CODE | |
| LOW | src/PIL/ImageText.py | 173 | CODE | |
| LOW | src/PIL/ImageText.py | 325 | CODE | |
| LOW | src/PIL/QoiImagePlugin.py | 54 | CODE | |
| LOW | src/PIL/QoiImagePlugin.py | 154 | CODE | |
| LOW | src/PIL/MspImagePlugin.py | 115 | CODE | |
| LOW | src/PIL/ImtImagePlugin.py | 36 | CODE | |
| LOW | src/PIL/GifImagePlugin.py | 516 | CODE | |
| LOW | src/PIL/GifImagePlugin.py | 545 | CODE | |
| LOW | src/PIL/GifImagePlugin.py | 663 | CODE | |
| LOW | src/PIL/GifImagePlugin.py | 876 | CODE | |
| LOW | src/PIL/GifImagePlugin.py | 929 | CODE | |
| LOW | src/PIL/GifImagePlugin.py | 1027 | CODE | |
| LOW | src/PIL/GifImagePlugin.py | 175 | CODE | |
| LOW | src/PIL/PalmImagePlugin.py | 117 | CODE | |
| LOW | src/PIL/ImageQt.py | 132 | CODE | |
| LOW | src/PIL/PdfParser.py | 342 | CODE | |
| LOW | src/PIL/PdfParser.py | 178 | CODE | |
| LOW | src/PIL/PdfParser.py | 990 | CODE | |
| LOW | src/PIL/PdfParser.py | 1028 | CODE | |
| LOW | src/PIL/ImageCms.py | 229 | CODE | |
| LOW | src/PIL/FpxImagePlugin.py | 124 | CODE | |
| LOW | src/PIL/ImageFilter.py | 410 | CODE | |
| 65 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 304 | except Exception: # noqa: PERF203 | CODE |
| LOW | setup.py | 469 | except Exception: | CODE |
| LOW | setup.py | 492 | except Exception: | CODE |
| LOW | setup.py | 609 | except Exception: | CODE |
| LOW | setup.py | 749 | except Exception: | CODE |
| MEDIUM | setup.py | 462 | def get_macos_sdk_path(self) -> str | None: | CODE |
| MEDIUM | setup.py | 483 | def get_ios_sdk_path(self) -> str: | CODE |
| LOW | checks/check_fli_oob.py | 67 | except Exception as msg: | CODE |
| LOW | checks/check_jp2_overflow.py | 23 | except Exception as msg: | CODE |
| LOW | Tests/conftest.py | 23 | except Exception as e: | CODE |
| LOW | Tests/conftest.py | 60 | except Exception: | CODE |
| LOW | Tests/test_bmp_reference.py | 30 | except Exception: # as msg: | CODE |
| LOW | Tests/test_bmp_reference.py | 59 | except Exception: # noqa: PERF203 | CODE |
| LOW | Tests/test_bmp_reference.py | 109 | except Exception as msg: # noqa: PERF203 | CODE |
| LOW | Tests/test_image_access.py | 277 | except Exception: | CODE |
| LOW | Tests/helper.py | 69 | except Exception: | CODE |
| LOW | Tests/helper.py | 95 | except Exception: | CODE |
| LOW⚡ | Tests/helper.py | 133 | except Exception as e: | CODE |
| LOW⚡ | Tests/helper.py | 138 | except Exception: | CODE |
| LOW | Tests/oss-fuzz/fuzz_font.py | 30 | except Exception: | CODE |
| LOW | Tests/oss-fuzz/fuzz_pillow.py | 28 | except Exception: | CODE |
| LOW | src/PIL/ImageFile.py | 208 | except Exception as msg: | CODE |
| LOW | src/PIL/SpiderImagePlugin.py | 232 | except Exception: | CODE |
| LOW | src/PIL/EpsImagePlugin.py | 247 | except Exception: | CODE |
| LOW | src/PIL/Jpeg2KImagePlugin.py | 303 | except Exception: | CODE |
| LOW | src/PIL/Jpeg2KImagePlugin.py | 310 | except Exception: | CODE |
| LOW | src/PIL/Jpeg2KImagePlugin.py | 430 | except Exception: | CODE |
| LOW | src/PIL/ImageTk.py | 142 | except Exception: | CODE |
| LOW | src/PIL/ImageTk.py | 230 | except Exception: | CODE |
| MEDIUM | src/PIL/ImageTk.py | 134 | def __del__(self) -> None: | CODE |
| MEDIUM | src/PIL/ImageTk.py | 222 | def __del__(self) -> None: | CODE |
| LOW | src/PIL/TiffImagePlugin.py | 1764 | except Exception: | CODE |
| LOW | src/PIL/Image.py | 786 | except Exception: | CODE |
| LOW | src/PIL/Image.py | 1201 | except Exception: | CODE |
| LOW | src/PIL/Image.py | 2701 | except Exception: | CODE |
| LOW | src/PIL/Image.py | 4078 | except Exception: | CODE |
| LOW | src/PIL/JpegImagePlugin.py | 91 | except Exception: | CODE |
| LOW | src/PIL/JpegImagePlugin.py | 563 | except Exception as e: | CODE |
| LOW | src/PIL/ImageFont.py | 131 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Tests/test_imagemorph.py | 165 | # Create a corner detector pattern | COMMENT |
| MEDIUM | Tests/test_000_sanity.py | 10 | # Create an image and do stuff with it. | COMMENT |
| MEDIUM | Tests/test_file_xvthumb.py | 18 | # Create a Hopper image with a similar XV palette | COMMENT |
| MEDIUM | docs/conf.py | 5 | # This file is execfile()d with the current directory set to its | COMMENT |
| MEDIUM | src/PIL/ImageOps.py | 218 | # Create the low-end values | COMMENT |
| MEDIUM | src/PIL/ImageOps.py | 224 | # Create the mapping (2-color) | COMMENT |
| MEDIUM | src/PIL/ImageOps.py | 239 | # Create the mapping (3-color) | COMMENT |
| MEDIUM | src/PIL/ImageOps.py | 261 | # Create the high-end values | COMMENT |
| MEDIUM | src/PIL/TiffTags.py | 7 | # This module provides clear-text names for various well-known | COMMENT |
| MEDIUM | src/PIL/TiffTags.py | 16 | # This module provides constants and clear-text names for various | COMMENT |
| MEDIUM | src/PIL/TiffImagePlugin.py | 521 | """This class represents a TIFF tag directory. To speed things up, we | STRING |
| MEDIUM | src/PIL/TiffImagePlugin.py | 1062 | """This class represents the **legacy** interface to a TIFF tag directory. | STRING |
| MEDIUM | src/PIL/SgiImagePlugin.py | 147 | # Define the file as SGI File Format | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Tests/helper.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/PIL/PngImagePlugin.py | 60 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/PIL/PcxImagePlugin.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/PIL/ImageFile.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/PIL/_typing.py | 45 | __all__ = ["Buffer", "IntegralLike", "StrOrBytesPath", "SupportsRead"] | CODE |
| LOW | src/PIL/ImageMorph.py | 311 | def set_lut(self, lut: bytearray | None) -> None: | CODE |
| LOW⚡ | src/PIL/TiffImagePlugin.py | 69 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/PIL/TiffImagePlugin.py | 677 | def _setitem(self, tag: int, value: Any, legacy_api: bool) -> None: | CODE |
| LOW | src/PIL/TiffImagePlugin.py | 1429 | def _setup(self) -> None: | CODE |
| LOW | src/PIL/Image.py | 72 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/PIL/ImageFont.py | 709 | def set_variation_by_name(self, name: str | bytes) -> None: | CODE |
| LOW | src/PIL/ImageFont.py | 739 | def set_variation_by_axes(self, axes: list[float]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Tests/test_file_png.py | 694 | # Set MAXBLOCK to the length of the actual data | COMMENT |
| LOW | Tests/test_decompression_bomb.py | 34 | # Set limit to trigger warning on the test file | COMMENT |
| LOW | Tests/test_decompression_bomb.py | 43 | # Set limit to trigger exception on the test file | COMMENT |
| LOW⚡ | Tests/test_decompression_bomb.py | 67 | # Set limit to trigger exception on the test file | COMMENT |
| LOW | src/PIL/WebPImagePlugin.py | 105 | # Check if an error occurred | COMMENT |
| LOW⚡ | src/PIL/TiffImagePlugin.py | 71 | # Set these to true to force use of libtiff for reading or writing. | COMMENT |
| LOW | src/PIL/Image.py | 2003 | # Return result | STRING |
| LOW | src/PIL/Image.py | 2935 | # Return result | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/PIL/PngImagePlugin.py | 1004 | self.png.push(cid, pos, length) | CODE |
| HIGH | src/PIL/PngImagePlugin.py | 1045 | self.png.push(cid, pos, length) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/PIL/PcxImagePlugin.py | 18 | # 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust | COMMENT |
| MEDIUM | src/PIL/ImageFile.py | 22 | # 2004-02-25 fl Made incremental parser more robust | COMMENT |
| MEDIUM | src/PIL/Image.py | 2258 | # We're going to leverage the convert mechanism to use the | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/PIL/ImageDraw.py | 530 | CODE | |
| LOW | src/PIL/ImageDraw.py | 649 | CODE | |
| LOW | src/PIL/ImageDraw.py | 710 | CODE | |
| LOW | src/PIL/ImageDraw.py | 738 | CODE | |
| LOW | src/PIL/ImageFont.py | 471 | CODE | |
| LOW | src/PIL/ImageFont.py | 562 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/PIL/Image.py | 3284 | Creates an image memory referencing pixel data in a byte buffer. This function is similar to :py:func:`~PIL.Im | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/PIL/TiffImagePlugin.py | 13 | # progressive decoding, make sure to use TIFF files where the tag | COMMENT |