ruff: Minor optimizations of list comprehensions, x in set, etc.

This commit is contained in:
Christian Clauss 2023-11-06 19:13:47 +06:00
parent 0660886c9a
commit fd59f91d17
12 changed files with 23 additions and 25 deletions

View File

@ -67,7 +67,7 @@ def test_quantize_no_dither():
def test_quantize_no_dither2(): def test_quantize_no_dither2():
im = Image.new("RGB", (9, 1)) im = Image.new("RGB", (9, 1))
im.putdata(list((p,) * 3 for p in range(0, 36, 4))) im.putdata([(p,) * 3 for p in range(0, 36, 4)])
palette = Image.new("P", (1, 1)) palette = Image.new("P", (1, 1))
data = (0, 0, 0, 32, 32, 32) data = (0, 0, 0, 32, 32, 32)

View File

@ -81,6 +81,7 @@ version = {attr = "PIL.__version__"}
target-version = "py38" target-version = "py38"
line-length = 88 line-length = 88
select = [ select = [
"C4", # flake8-comprehensions
"E", # pycodestyle errors "E", # pycodestyle errors
"EM", # flake8-errmsg "EM", # flake8-errmsg
"F", # pyflakes errors "F", # pyflakes errors

View File

@ -440,17 +440,17 @@ class pil_build_ext(build_ext):
# #
# add configured kits # add configured kits
for root_name, lib_name in dict( for root_name, lib_name in {
JPEG_ROOT="libjpeg", "JPEG_ROOT": "libjpeg",
JPEG2K_ROOT="libopenjp2", "JPEG2K_ROOT": "libopenjp2",
TIFF_ROOT=("libtiff-5", "libtiff-4"), "TIFF_ROOT": ("libtiff-5", "libtiff-4"),
ZLIB_ROOT="zlib", "ZLIB_ROOT": "zlib",
FREETYPE_ROOT="freetype2", "FREETYPE_ROOT": "freetype2",
HARFBUZZ_ROOT="harfbuzz", "HARFBUZZ_ROOT": "harfbuzz",
FRIBIDI_ROOT="fribidi", "FRIBIDI_ROOT": "fribidi",
LCMS_ROOT="lcms2", "LCMS_ROOT": "lcms2",
IMAGEQUANT_ROOT="libimagequant", "IMAGEQUANT_ROOT": "libimagequant",
).items(): }.items():
root = globals()[root_name] root = globals()[root_name]
if root is None and root_name in os.environ: if root is None and root_name in os.environ:

View File

@ -396,7 +396,7 @@ def _save(im, fp, filename, bitmap_header=True):
dpi = info.get("dpi", (96, 96)) dpi = info.get("dpi", (96, 96))
# 1 meter == 39.3701 inches # 1 meter == 39.3701 inches
ppm = tuple(map(lambda x: int(x * 39.3701 + 0.5), dpi)) ppm = tuple((int(x * 39.3701 + 0.5) for x in dpi))
stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3) stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3)
header = 40 # or 64 for OS/2 version 2 header = 40 # or 64 for OS/2 version 2

View File

@ -64,7 +64,6 @@ class CurImageFile(BmpImagePlugin.BmpImageFile):
d, e, o, a = self.tile[0] d, e, o, a = self.tile[0]
self.tile[0] = d, (0, 0) + self.size, o, a self.tile[0] = d, (0, 0) + self.size, o, a
return
# #

View File

@ -40,7 +40,7 @@ from enum import IntEnum
from pathlib import Path from pathlib import Path
try: try:
import defusedxml.ElementTree as ElementTree from defusedxml import ElementTree
except ImportError: except ImportError:
ElementTree = None ElementTree = None
@ -1159,7 +1159,7 @@ class Image:
if palette.mode != "P": if palette.mode != "P":
msg = "bad mode for palette image" msg = "bad mode for palette image"
raise ValueError(msg) raise ValueError(msg)
if self.mode != "RGB" and self.mode != "L": if self.mode not in {"RGB", "L"}:
msg = "only RGB or L mode images can be quantized to a palette" msg = "only RGB or L mode images can be quantized to a palette"
raise ValueError(msg) raise ValueError(msg)
im = self.im.convert("P", dither, palette.im) im = self.im.convert("P", dither, palette.im)

View File

@ -921,7 +921,7 @@ def floodfill(image, xy, value, border=None, thresh=0):
if border is None: if border is None:
fill = _color_diff(p, background) <= thresh fill = _color_diff(p, background) <= thresh
else: else:
fill = p != value and p != border fill = p not in (value, border)
if fill: if fill:
pixel[s, t] = value pixel[s, t] = value
new_edge.add((s, t)) new_edge.add((s, t))

View File

@ -334,10 +334,8 @@ def _save(im, fp, filename):
if quality_layers is not None and not ( if quality_layers is not None and not (
isinstance(quality_layers, (list, tuple)) isinstance(quality_layers, (list, tuple))
and all( and all(
[
isinstance(quality_layer, (int, float)) isinstance(quality_layer, (int, float))
for quality_layer in quality_layers for quality_layer in quality_layers
]
) )
): ):
msg = "quality_layers must be a sequence of numbers" msg = "quality_layers must be a sequence of numbers"

View File

@ -397,7 +397,7 @@ class JpegImageFile(ImageFile.ImageFile):
# self.__offset = self.fp.tell() # self.__offset = self.fp.tell()
break break
s = self.fp.read(1) s = self.fp.read(1)
elif i == 0 or i == 0xFFFF: elif i in {0, 0xFFFF}:
# padded marker or junk; move on # padded marker or junk; move on
s = b"\xff" s = b"\xff"
elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) elif i == 0xFF00: # Skip extraneous data (escaped 0xFF)

View File

@ -123,7 +123,7 @@ class SgiImageFile(ImageFile.ImageFile):
def _save(im, fp, filename): def _save(im, fp, filename):
if im.mode != "RGB" and im.mode != "RGBA" and im.mode != "L": if im.mode not in {"RGB", "RGBA", "L"}:
msg = "Unsupported SGI image mode" msg = "Unsupported SGI image mode"
raise ValueError(msg) raise ValueError(msg)
@ -155,7 +155,7 @@ def _save(im, fp, filename):
# Z Dimension: Number of channels # Z Dimension: Number of channels
z = len(im.mode) z = len(im.mode)
if dim == 1 or dim == 2: if dim in {1, 2}:
z = 1 z = 1
# assert we've got the right number of bands. # assert we've got the right number of bands.

View File

@ -427,7 +427,7 @@ def _populate():
TAGS_V2[k] = TagInfo(k, *v) TAGS_V2[k] = TagInfo(k, *v)
for group, tags in TAGS_V2_GROUPS.items(): for tags in TAGS_V2_GROUPS.values():
for k, v in tags.items(): for k, v in tags.items():
tags[k] = TagInfo(k, *v) tags[k] = TagInfo(k, *v)

View File

@ -471,7 +471,7 @@ def extract_dep(url: str, filename: str) -> None:
msg = "Attempted Path Traversal in Zip File" msg = "Attempted Path Traversal in Zip File"
raise RuntimeError(msg) raise RuntimeError(msg)
zf.extractall(sources_dir) zf.extractall(sources_dir)
elif filename.endswith(".tar.gz") or filename.endswith(".tgz"): elif filename.endswith((".tar.gz", ".tgz")):
with tarfile.open(file, "r:gz") as tgz: with tarfile.open(file, "r:gz") as tgz:
for member in tgz.getnames(): for member in tgz.getnames():
member_abspath = os.path.abspath(os.path.join(sources_dir, member)) member_abspath = os.path.abspath(os.path.join(sources_dir, member))