Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 2 commits into from Dec 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion Tests/test_image_quantize.py
Expand Up @@ -67,7 +67,7 @@ def test_quantize_no_dither():

def test_quantize_no_dither2():
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))
data = (0, 0, 0, 32, 32, 32)
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Expand Up @@ -81,6 +81,7 @@ version = {attr = "PIL.__version__"}
target-version = "py38"
line-length = 88
select = [
"C4", # flake8-comprehensions
"E", # pycodestyle errors
"EM", # flake8-errmsg
"F", # pyflakes errors
Expand Down
22 changes: 11 additions & 11 deletions setup.py
Expand Up @@ -440,17 +440,17 @@ def build_extensions(self):

#
# add configured kits
for root_name, lib_name in dict(
JPEG_ROOT="libjpeg",
JPEG2K_ROOT="libopenjp2",
TIFF_ROOT=("libtiff-5", "libtiff-4"),
ZLIB_ROOT="zlib",
FREETYPE_ROOT="freetype2",
HARFBUZZ_ROOT="harfbuzz",
FRIBIDI_ROOT="fribidi",
LCMS_ROOT="lcms2",
IMAGEQUANT_ROOT="libimagequant",
).items():
for root_name, lib_name in {
"JPEG_ROOT": "libjpeg",
"JPEG2K_ROOT": "libopenjp2",
"TIFF_ROOT": ("libtiff-5", "libtiff-4"),
"ZLIB_ROOT": "zlib",
"FREETYPE_ROOT": "freetype2",
"HARFBUZZ_ROOT": "harfbuzz",
"FRIBIDI_ROOT": "fribidi",
"LCMS_ROOT": "lcms2",
"IMAGEQUANT_ROOT": "libimagequant",
}.items():
root = globals()[root_name]

if root is None and root_name in os.environ:
Expand Down
2 changes: 1 addition & 1 deletion src/PIL/BmpImagePlugin.py
Expand Up @@ -396,7 +396,7 @@ def _save(im, fp, filename, bitmap_header=True):
dpi = info.get("dpi", (96, 96))

# 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)
header = 40 # or 64 for OS/2 version 2
Expand Down
2 changes: 0 additions & 2 deletions src/PIL/CurImagePlugin.py
Expand Up @@ -64,8 +64,6 @@ def _open(self):
d, e, o, a = self.tile[0]
self.tile[0] = d, (0, 0) + self.size, o, a

return


#
# --------------------------------------------------------------------
Expand Down
4 changes: 2 additions & 2 deletions src/PIL/Image.py
Expand Up @@ -40,7 +40,7 @@
from pathlib import Path

try:
import defusedxml.ElementTree as ElementTree
from defusedxml import ElementTree
except ImportError:
ElementTree = None

Expand Down Expand Up @@ -1159,7 +1159,7 @@ def quantize(
if palette.mode != "P":
msg = "bad mode for palette image"
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"
raise ValueError(msg)
im = self.im.convert("P", dither, palette.im)
Expand Down
2 changes: 1 addition & 1 deletion src/PIL/ImageDraw.py
Expand Up @@ -921,7 +921,7 @@ def floodfill(image, xy, value, border=None, thresh=0):
if border is None:
fill = _color_diff(p, background) <= thresh
else:
fill = p != value and p != border
fill = p not in (value, border)
if fill:
pixel[s, t] = value
new_edge.add((s, t))
Expand Down
5 changes: 1 addition & 4 deletions src/PIL/Jpeg2KImagePlugin.py
Expand Up @@ -334,10 +334,7 @@ def _save(im, fp, filename):
if quality_layers is not None and not (
isinstance(quality_layers, (list, tuple))
and all(
[
isinstance(quality_layer, (int, float))
for quality_layer in quality_layers
]
isinstance(quality_layer, (int, float)) for quality_layer in quality_layers
)
):
msg = "quality_layers must be a sequence of numbers"
Expand Down
2 changes: 1 addition & 1 deletion src/PIL/JpegImagePlugin.py
Expand Up @@ -397,7 +397,7 @@ def _open(self):
# self.__offset = self.fp.tell()
break
s = self.fp.read(1)
elif i == 0 or i == 0xFFFF:
elif i in {0, 0xFFFF}:
# padded marker or junk; move on
s = b"\xff"
elif i == 0xFF00: # Skip extraneous data (escaped 0xFF)
Expand Down
4 changes: 2 additions & 2 deletions src/PIL/SgiImagePlugin.py
Expand Up @@ -123,7 +123,7 @@ def _open(self):


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"
raise ValueError(msg)

Expand Down Expand Up @@ -155,7 +155,7 @@ def _save(im, fp, filename):
# Z Dimension: Number of channels
z = len(im.mode)

if dim == 1 or dim == 2:
if dim in {1, 2}:
z = 1

# assert we've got the right number of bands.
Expand Down
2 changes: 1 addition & 1 deletion src/PIL/TiffTags.py
Expand Up @@ -427,7 +427,7 @@ def _populate():

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():
tags[k] = TagInfo(k, *v)

Expand Down
2 changes: 1 addition & 1 deletion winbuild/build_prepare.py
Expand Up @@ -471,7 +471,7 @@ def extract_dep(url: str, filename: str) -> None:
msg = "Attempted Path Traversal in Zip File"
raise RuntimeError(msg)
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:
for member in tgz.getnames():
member_abspath = os.path.abspath(os.path.join(sources_dir, member))
Expand Down