Skip to content

Commit 6b51464

Browse files
committed
pre-commit
1 parent 80b6059 commit 6b51464

File tree

3 files changed

+71
-59
lines changed

3 files changed

+71
-59
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ ignore = [
5858
fixable = ["ALL"]
5959

6060
[tool.ruff.lint.per-file-ignores]
61-
"**/{tests,docs,tools}/*" = ["D", "S101", "E402", "S311"]
61+
"**/{tests,docs,tools}/*" = ["D", "S101", "E402", "S311", "ERA001"]
6262

6363
[tool.ruff.lint.flake8-tidy-imports]
6464
ban-relative-imports = "all" # Disallow all relative imports.

tests/data/src/genimgs.py

Lines changed: 64 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,83 @@
1-
from PIL import Image, ImageDraw, ImageFilter
1+
from __future__ import annotations
2+
23
import numpy as np
4+
from PIL import Image, ImageDraw, ImageFilter
5+
36

47
# Create a solid color image
5-
def create_solid_color_image(size=(400, 400), color=(255, 0, 0, 255)):
6-
img = Image.new("RGBA", size, color)
7-
img.save("solid_color.png")
8-
return img
8+
def create_solid_color_image(
9+
size: tuple[int, int] = (400, 400), color: tuple[int, ...] = (255, 0, 0, 255)
10+
) -> Image.Image:
11+
img = Image.new("RGBA", size, color)
12+
img.save("solid_color.png")
13+
return img
14+
915

1016
# Create a gradient image
11-
def create_gradient_image(size=(400, 400), start_color=(0, 0, 255), end_color=(255, 0, 0)):
12-
img = Image.new("RGB", size)
13-
for x in range(size[0]):
14-
blend_factor = x / size[0]
15-
color = (
16-
int(start_color[0] * (1 - blend_factor) + end_color[0] * blend_factor),
17-
int(start_color[1] * (1 - blend_factor) + end_color[1] * blend_factor),
18-
int(start_color[2] * (1 - blend_factor) + end_color[2] * blend_factor),
19-
)
20-
ImageDraw.Draw(img).line([(x, 0), (x, size[1])], fill=color)
21-
img.save("gradient.png")
22-
return img
17+
def create_gradient_image(
18+
size: tuple[int, int] = (400, 400),
19+
start_color: tuple[int, ...] = (0, 0, 255),
20+
end_color: tuple[int, ...] = (255, 0, 0),
21+
) -> Image.Image:
22+
img = Image.new("RGB", size)
23+
for x in range(size[0]):
24+
blend_factor = x / size[0]
25+
color = (
26+
int(start_color[0] * (1 - blend_factor) + end_color[0] * blend_factor),
27+
int(start_color[1] * (1 - blend_factor) + end_color[1] * blend_factor),
28+
int(start_color[2] * (1 - blend_factor) + end_color[2] * blend_factor),
29+
)
30+
ImageDraw.Draw(img).line([(x, 0), (x, size[1])], fill=color)
31+
img.save("gradient.png")
32+
return img
33+
2334

2435
# Create a soft-edged circular mask
25-
def create_soft_mask(size=(400, 400)):
26-
img = Image.new("L", size, 0)
27-
draw = ImageDraw.Draw(img)
28-
draw.ellipse((50, 50, size[0] - 50, size[1] - 50), fill=255)
29-
img = img.filter(ImageFilter.GaussianBlur(20))
30-
img.save("soft_mask.png")
31-
return img
36+
def create_soft_mask(size: tuple[int, int] = (400, 400)) -> Image.Image:
37+
img = Image.new("L", size, 0)
38+
draw = ImageDraw.Draw(img)
39+
draw.ellipse((50, 50, size[0] - 50, size[1] - 50), fill=255)
40+
img = img.filter(ImageFilter.GaussianBlur(20))
41+
img.save("soft_mask.png")
42+
return img
43+
3244

3345
# Create a noisy texture
34-
def create_noise_texture(size=(400, 400)):
35-
noise_array = np.random.randint(0, 255, (size[1], size[0]), dtype=np.uint8)
36-
img = Image.fromarray(noise_array, mode="L")
37-
img.save("noise_texture.png")
38-
return img
46+
def create_noise_texture(size: tuple[int, int] = (400, 400)) -> Image.Image:
47+
noise_array = np.random.randint(0, 255, (size[1], size[0]), dtype=np.uint8)
48+
img = Image.fromarray(noise_array, mode="L")
49+
img.save("noise_texture.png")
50+
return img
51+
3952

4053
# Create a silhouette image (e.g., black cat)
41-
def create_silhouette(shape="circle"):
42-
img = Image.new("RGBA", size=(400, 400), color=(255, 255, 255, 0))
43-
draw = ImageDraw.Draw(img)
44-
if shape == "circle":
45-
draw.ellipse((100, 100, 300, 300), fill=(0, 0, 0, 255))
46-
elif shape == "rectangle":
47-
draw.rectangle((100, 150, 300, 350), fill=(0, 0, 0, 255))
48-
img.save(f"{shape}_silhouette.png")
49-
return img
54+
def create_silhouette(shape:str="circle") -> Image.Image:
55+
img = Image.new("RGBA", size=(400, 400), color=(255, 255, 255, 0))
56+
draw = ImageDraw.Draw(img)
57+
if shape == "circle":
58+
draw.ellipse((100, 100, 300, 300), fill=(0, 0, 0, 255))
59+
elif shape == "rectangle":
60+
draw.rectangle((100, 150, 300, 350), fill=(0, 0, 0, 255))
61+
img.save(f"{shape}_silhouette.png")
62+
return img
5063

5164

52-
def create_red_soft_mask(size=(400, 400)):
53-
# Create an RGBA image with transparency
54-
img = Image.new("RGBA", size, (255, 255, 255, 0))
55-
mask = Image.new("L", size, 0) # Grayscale mask for blurring
65+
def create_red_soft_mask(size: tuple[int, int] = (400, 400)) -> Image.Image:
66+
# Create an RGBA image with transparency
67+
img = Image.new("RGBA", size, (255, 255, 255, 0))
68+
mask = Image.new("L", size, 0) # Grayscale mask for blurring
5669

57-
draw = ImageDraw.Draw(mask)
58-
draw.ellipse((50, 50, size[0] - 50, size[1] - 50), fill=255)
59-
mask = mask.filter(ImageFilter.GaussianBlur(30)) # Feather effect
70+
draw = ImageDraw.Draw(mask)
71+
draw.ellipse((50, 50, size[0] - 50, size[1] - 50), fill=255)
72+
mask = mask.filter(ImageFilter.GaussianBlur(30)) # Feather effect
6073

61-
# Apply the mask as alpha channel to a red image
62-
red_layer = Image.new("RGBA", size, (255, 0, 0, 255)) # Solid red
63-
img = Image.composite(red_layer, img, mask) # Blend using mask
74+
# Apply the mask as alpha channel to a red image
75+
red_layer = Image.new("RGBA", size, (255, 0, 0, 255)) # Solid red
76+
img = Image.composite(red_layer, img, mask) # Blend using mask
77+
78+
img.save("red_soft_mask.png")
79+
return img
6480

65-
img.save("red_soft_mask.png")
66-
return img
6781

6882
# Generate all images
6983
create_solid_color_image()
@@ -73,5 +87,3 @@ def create_red_soft_mask(size=(400, 400)):
7387
create_silhouette("circle")
7488
create_silhouette("rectangle")
7589
create_red_soft_mask()
76-
77-
print("Done!")

tests/test_imgdiff.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from blendmodes.imgdiff import image_diff, is_equal, is_x_diff
1515

1616

17-
def test_identical_images():
17+
def test_identical_images() -> None:
1818
img = Image.new("RGB", (100, 100), "red")
1919
assert image_diff(img, img) == 0.0
2020
assert is_equal(img, img)
@@ -24,7 +24,7 @@ def test_identical_images():
2424
assert imgcompare.image_diff_percent(img, img) == image_diff(img, img)
2525

2626

27-
def test_completely_different_images():
27+
def test_completely_different_images() -> None:
2828
img1 = Image.new("RGB", (100, 100), "white")
2929
img2 = Image.new("RGB", (100, 100), "black")
3030
assert image_diff(img1, img2, compare_mode="RGB") == 100
@@ -35,7 +35,7 @@ def test_completely_different_images():
3535
assert imgcompare.image_diff_percent(img1, img2) == image_diff(img1, img2, "RGB")
3636

3737

38-
def test_red_blue_rgb():
38+
def test_red_blue_rgb() -> None:
3939
img1 = Image.new("RGB", (100, 100), "red")
4040
img2 = Image.new("RGB", (100, 100), "blue")
4141
assert is_x_diff(img1, img2, compare_mode="RGB", cmp_diff=33, tolerance=1)
@@ -44,7 +44,7 @@ def test_red_blue_rgb():
4444
# assert imgcompare.image_diff_percent(img1, img2) == image_diff(img1, img2, compare_mode="RGB")
4545

4646

47-
def test_red_blue_l():
47+
def test_red_blue_l() -> None:
4848
img1 = Image.new("RGB", (100, 100), "red")
4949
img2 = Image.new("RGB", (100, 100), "blue")
5050
assert is_x_diff(img1, img2, compare_mode="L", cmp_diff=18, tolerance=1)
@@ -53,14 +53,14 @@ def test_red_blue_l():
5353
# assert imgcompare.image_diff_percent(img1, img2) == image_diff(img1, img2, compare_mode="L")
5454

5555

56-
def test_different_size_images():
56+
def test_different_size_images() -> None:
5757
img1 = Image.new("RGB", (100, 100), "red")
5858
img2 = Image.new("RGB", (50, 50), "blue")
5959
with pytest.raises(ValueError):
6060
image_diff(img1, img2)
6161

6262

63-
def test_identical_rgba_vs_rgb():
63+
def test_identical_rgba_vs_rgb() -> None:
6464
img1 = Image.new("RGBA", (100, 100), (255, 0, 0, 255))
6565
img2 = Image.new("RGB", (100, 100), "red")
6666
assert image_diff(img1, img2) == 0

0 commit comments

Comments
 (0)