diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a6b1c630041..63967f254f9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,12 +4,7 @@ repos: hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] - - - repo: https://github.com/psf/black-pre-commit-mirror - rev: 23.10.1 - hooks: - - id: black - args: [--target-version=py38] + - id: ruff-format - repo: https://github.com/PyCQA/bandit rev: 1.7.5 diff --git a/Makefile b/Makefile index b7f07e24d07..7e0419f206c 100644 --- a/Makefile +++ b/Makefile @@ -117,7 +117,6 @@ lint: .PHONY: lint-fix lint-fix: - python3 -c "import black" > /dev/null 2>&1 || python3 -m pip install black - python3 -m black --target-version py38 . python3 -c "import ruff" > /dev/null 2>&1 || python3 -m pip install ruff python3 -m ruff --fix . + python3 -m ruff format . diff --git a/Tests/check_jpeg_leaks.py b/Tests/check_jpeg_leaks.py index 940c0b00d5b..da8e67a75eb 100644 --- a/Tests/check_jpeg_leaks.py +++ b/Tests/check_jpeg_leaks.py @@ -74,9 +74,8 @@ """ - +# fmt: off standard_l_qtable = ( - # fmt: off 16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, @@ -85,11 +84,9 @@ 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99, - # fmt: on ) standard_chrominance_qtable = ( - # fmt: off 17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, @@ -98,8 +95,8 @@ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - # fmt: on ) +# fmt: on @pytest.mark.parametrize( diff --git a/Tests/helper.py b/Tests/helper.py index de5468d8463..6b2d1ab06a3 100644 --- a/Tests/helper.py +++ b/Tests/helper.py @@ -119,8 +119,8 @@ def assert_image_similar(a, b, epsilon, msg=None): ave_diff = diff / (a.size[0] * a.size[1]) try: assert epsilon >= ave_diff, ( - (msg or "") - + f" average pixel value difference {ave_diff:.4f} > epsilon {epsilon:.4f}" + f"{msg or ""} average pixel value difference " + f"{ave_diff:.4f} > epsilon {epsilon:.4f}" ) except Exception as e: if HAS_UPLOADER: diff --git a/Tests/test_box_blur.py b/Tests/test_box_blur.py index 745364ddc0f..5a0c56fdf2f 100644 --- a/Tests/test_box_blur.py +++ b/Tests/test_box_blur.py @@ -64,138 +64,138 @@ def test_color_modes(): def test_radius_0(): + # fmt: off assert_blur( sample, 0, [ - # fmt: off [210, 50, 20, 10, 220, 230, 80], [190, 210, 20, 180, 170, 40, 110], [120, 210, 250, 60, 220, 0, 220], [220, 40, 230, 80, 130, 250, 40], [250, 0, 80, 30, 60, 20, 110], - # fmt: on ], ) + # fmt: on def test_radius_0_02(): + # fmt: off assert_blur( sample, 0.02, [ - # fmt: off [206, 55, 20, 17, 215, 223, 83], [189, 203, 31, 171, 169, 46, 110], [125, 206, 241, 69, 210, 13, 210], [215, 49, 221, 82, 131, 235, 48], [244, 7, 80, 32, 60, 27, 107], - # fmt: on ], delta=2, ) + # fmt: on def test_radius_0_05(): + # fmt: off assert_blur( sample, 0.05, [ - # fmt: off [202, 62, 22, 27, 209, 215, 88], [188, 194, 44, 161, 168, 56, 111], [131, 201, 229, 81, 198, 31, 198], [209, 62, 209, 86, 133, 216, 59], [237, 17, 80, 36, 60, 35, 103], - # fmt: on ], delta=2, ) + # fmt: on def test_radius_0_1(): + # fmt: off assert_blur( sample, 0.1, [ - # fmt: off [196, 72, 24, 40, 200, 203, 93], [187, 183, 62, 148, 166, 68, 111], [139, 193, 213, 96, 182, 54, 182], [201, 78, 193, 91, 133, 191, 73], [227, 31, 80, 42, 61, 47, 99], - # fmt: on ], delta=1, ) + # fmt: on def test_radius_0_5(): + # fmt: off assert_blur( sample, 0.5, [ - # fmt: off [176, 101, 46, 83, 163, 165, 111], [176, 149, 108, 122, 144, 120, 117], [164, 171, 159, 141, 134, 119, 129], [170, 136, 133, 114, 116, 124, 109], [184, 95, 72, 70, 69, 81, 89], - # fmt: on ], delta=1, ) + # fmt: on def test_radius_1(): + # fmt: off assert_blur( sample, 1, [ - # fmt: off [170, 109, 63, 97, 146, 153, 116], [168, 142, 112, 128, 126, 143, 121], [169, 166, 142, 149, 126, 131, 114], [159, 156, 109, 127, 94, 117, 112], [164, 128, 63, 87, 76, 89, 90], - # fmt: on ], delta=1, ) + # fmt: on def test_radius_1_5(): + # fmt: off assert_blur( sample, 1.5, [ - # fmt: off [155, 120, 105, 112, 124, 137, 130], [160, 136, 124, 125, 127, 134, 130], [166, 147, 130, 125, 120, 121, 119], [168, 145, 119, 109, 103, 105, 110], [168, 134, 96, 85, 85, 89, 97], - # fmt: on ], delta=1, ) + # fmt: on def test_radius_bigger_then_half(): + # fmt: off assert_blur( sample, 3, [ - # fmt: off [144, 145, 142, 128, 114, 115, 117], [148, 145, 137, 122, 109, 111, 112], [152, 145, 131, 117, 103, 107, 108], [156, 144, 126, 111, 97, 102, 103], [160, 144, 121, 106, 92, 98, 99], - # fmt: on ], delta=1, ) + # fmt: on def test_radius_bigger_then_width(): @@ -229,36 +229,36 @@ def test_extreme_large_radius(): def test_two_passes(): + # fmt: off assert_blur( sample, 1, [ - # fmt: off [153, 123, 102, 109, 132, 135, 129], [159, 138, 123, 121, 133, 131, 126], [162, 147, 136, 124, 127, 121, 121], [159, 140, 125, 108, 111, 106, 108], [154, 126, 105, 87, 94, 93, 97], - # fmt: on ], passes=2, delta=1, ) + # fmt: on def test_three_passes(): + # fmt: off assert_blur( sample, 1, [ - # fmt: off [146, 131, 116, 118, 126, 131, 130], [151, 138, 125, 123, 126, 128, 127], [154, 143, 129, 123, 120, 120, 119], [152, 139, 122, 113, 108, 108, 108], [148, 132, 112, 102, 97, 99, 100], - # fmt: on ], passes=3, delta=1, ) + # fmt: on diff --git a/Tests/test_file_jpeg.py b/Tests/test_file_jpeg.py index a0822d0002c..64c55c24085 100644 --- a/Tests/test_file_jpeg.py +++ b/Tests/test_file_jpeg.py @@ -546,9 +546,7 @@ def _n_qtables_helper(n, test_file): 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99 - """.split( - None - ) + """.split(None) ] standard_chrominance_qtable = [ @@ -562,9 +560,7 @@ def _n_qtables_helper(n, test_file): 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 - """.split( - None - ) + """.split(None) ] # list of qtable lists assert_image_similar( diff --git a/Tests/test_font_leaks.py b/Tests/test_font_leaks.py index 38f7ddac5de..a305b61857a 100644 --- a/Tests/test_font_leaks.py +++ b/Tests/test_font_leaks.py @@ -13,7 +13,10 @@ def _test_font(self, font): draw = ImageDraw.ImageDraw(im) self._test_leak( lambda: draw.text( - (0, 0), "some text " * 1024, font=font, fill="black" # ~10k + (0, 0), + "some text " * 1024, # ~10k + font=font, + fill="black", ) ) diff --git a/Tests/test_image_access.py b/Tests/test_image_access.py index 2b4fb773395..5b0a303304c 100644 --- a/Tests/test_image_access.py +++ b/Tests/test_image_access.py @@ -228,9 +228,7 @@ def test_list(self): assert im.getpixel([0, 0]) == (20, 20, 70) @pytest.mark.parametrize("mode", ("I;16", "I;16B")) - @pytest.mark.parametrize( - "expected_color", (2**15 - 1, 2**15, 2**15 + 1, 2**16 - 1) - ) + @pytest.mark.parametrize("expected_color", (2**15 - 1, 2**15, 2**15 + 1, 2**16 - 1)) def test_signedness(self, mode, expected_color): # see https://github.com/python-pillow/Pillow/issues/452 # pixelaccess is using signed int* instead of uint* diff --git a/Tests/test_image_filter.py b/Tests/test_image_filter.py index a7932a351b5..2f390e600fc 100644 --- a/Tests/test_image_filter.py +++ b/Tests/test_image_filter.py @@ -140,15 +140,14 @@ def test_consistency_3x3(mode): reference_name = "hopper_emboss" reference_name += "_I.png" if mode == "I" else ".bmp" with Image.open("Tests/images/" + reference_name) as reference: - kernel = ImageFilter.Kernel( - (3, 3), - # fmt: off - (-1, -1, 0, - -1, 0, 1, - 0, 1, 1), - # fmt: on - 0.3, + # fmt: off + kern = ( + -1, -1, 0, + -1, 0, 1, + 0, 1, 1, ) + # fmt: on + kernel = ImageFilter.Kernel((3, 3), kern, 0.3) source = source.split() * 2 reference = reference.split() * 2 @@ -166,17 +165,16 @@ def test_consistency_5x5(mode): reference_name = "hopper_emboss_more" reference_name += "_I.png" if mode == "I" else ".bmp" with Image.open("Tests/images/" + reference_name) as reference: - kernel = ImageFilter.Kernel( - (5, 5), - # fmt: off - (-1, -1, -1, -1, 0, + # fmt: off + kern = ( + -1, -1, -1, -1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, -1, 0, 1, 1, 1, - 0, 1, 1, 1, 1), - # fmt: on - 0.3, + 0, 1, 1, 1, 1, ) + # fmt: on + kernel = ImageFilter.Kernel((5, 5), kern, 0.3) source = source.split() * 2 reference = reference.split() * 2 diff --git a/setup.py b/setup.py index f13f03713a3..b1742f22995 100755 --- a/setup.py +++ b/setup.py @@ -52,7 +52,6 @@ def get_version(): ) ) - _IMAGING = ("decode", "encode", "map", "display", "outline", "path") _LIB_IMAGING = ( @@ -418,11 +417,11 @@ def get_macos_sdk_path(self): ) except Exception: sdk_path = None - if ( - not sdk_path - or sdk_path == "/Applications/Xcode.app/Contents/Developer" + xcode_sdk_path = ( + "/Applications/Xcode.app/Contents/Developer" "/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk" - ): + ) + if not sdk_path or sdk_path == xcode_sdk_path: commandlinetools_sdk_path = ( "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk" )