mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-09-09 22:02:27 +03:00
ImageMorph operations must have length 1 (#9102)
This commit is contained in:
parent
35f23fb78c
commit
c7a268e5a5
|
@ -7,7 +7,7 @@ import pytest
|
||||||
|
|
||||||
from PIL import Image, ImageMorph, _imagingmorph
|
from PIL import Image, ImageMorph, _imagingmorph
|
||||||
|
|
||||||
from .helper import assert_image_equal_tofile, hopper
|
from .helper import assert_image_equal_tofile, hopper, timeout_unless_slower_valgrind
|
||||||
|
|
||||||
|
|
||||||
def string_to_img(image_string: str) -> Image.Image:
|
def string_to_img(image_string: str) -> Image.Image:
|
||||||
|
@ -266,16 +266,18 @@ def test_unknown_pattern() -> None:
|
||||||
ImageMorph.LutBuilder(op_name="unknown")
|
ImageMorph.LutBuilder(op_name="unknown")
|
||||||
|
|
||||||
|
|
||||||
def test_pattern_syntax_error() -> None:
|
@pytest.mark.parametrize(
|
||||||
|
"pattern", ("a pattern with a syntax error", "4:(" + "X" * 30000)
|
||||||
|
)
|
||||||
|
@timeout_unless_slower_valgrind(1)
|
||||||
|
def test_pattern_syntax_error(pattern: str) -> None:
|
||||||
# Arrange
|
# Arrange
|
||||||
lb = ImageMorph.LutBuilder(op_name="corner")
|
lb = ImageMorph.LutBuilder(op_name="corner")
|
||||||
new_patterns = ["a pattern with a syntax error"]
|
new_patterns = [pattern]
|
||||||
lb.add_patterns(new_patterns)
|
lb.add_patterns(new_patterns)
|
||||||
|
|
||||||
# Act / Assert
|
# Act / Assert
|
||||||
with pytest.raises(
|
with pytest.raises(Exception, match='Syntax error in pattern "'):
|
||||||
Exception, match='Syntax error in pattern "a pattern with a syntax error"'
|
|
||||||
):
|
|
||||||
lb.build_lut()
|
lb.build_lut()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -150,3 +150,10 @@ others prepare for 3.14, and to ensure Pillow could be used immediately at the r
|
||||||
of 3.14.0 final (2025-10-07, :pep:`745`).
|
of 3.14.0 final (2025-10-07, :pep:`745`).
|
||||||
|
|
||||||
Pillow 12.0.0 now officially supports Python 3.14.
|
Pillow 12.0.0 now officially supports Python 3.14.
|
||||||
|
|
||||||
|
ImageMorph operations must have length 1
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Valid ImageMorph operations are 4, N, 1 and M. By limiting the length to 1 character
|
||||||
|
within Pillow, long execution times can be avoided if a user provided long pattern
|
||||||
|
strings. Reported by Jang Choi.
|
||||||
|
|
|
@ -150,7 +150,7 @@ class LutBuilder:
|
||||||
|
|
||||||
# Parse and create symmetries of the patterns strings
|
# Parse and create symmetries of the patterns strings
|
||||||
for p in self.patterns:
|
for p in self.patterns:
|
||||||
m = re.search(r"(\w*):?\s*\((.+?)\)\s*->\s*(\d)", p.replace("\n", ""))
|
m = re.search(r"(\w):?\s*\((.+?)\)\s*->\s*(\d)", p.replace("\n", ""))
|
||||||
if not m:
|
if not m:
|
||||||
msg = 'Syntax error in pattern "' + p + '"'
|
msg = 'Syntax error in pattern "' + p + '"'
|
||||||
raise Exception(msg)
|
raise Exception(msg)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user