1818import pytest
1919from packaging .version import parse as parse_version
2020
21- from PIL import Image , ImageMath , features
21+ from PIL import Image , ImageFile , ImageMath , features
2222
2323logger = logging .getLogger (__name__ )
2424
@@ -174,12 +174,13 @@ def skip_unless_feature(feature: str) -> pytest.MarkDecorator:
174174def skip_unless_feature_version (
175175 feature : str , required : str , reason : str | None = None
176176) -> pytest .MarkDecorator :
177- if not features .check (feature ):
177+ version = features .version (feature )
178+ if version is None :
178179 return pytest .mark .skip (f"{ feature } not available" )
179180 if reason is None :
180181 reason = f"{ feature } is older than { required } "
181182 version_required = parse_version (required )
182- version_available = parse_version (features . version ( feature ) )
183+ version_available = parse_version (version )
183184 return pytest .mark .skipif (version_available < version_required , reason = reason )
184185
185186
@@ -189,12 +190,13 @@ def mark_if_feature_version(
189190 version_blacklist : str ,
190191 reason : str | None = None ,
191192) -> pytest .MarkDecorator :
192- if not features .check (feature ):
193+ version = features .version (feature )
194+ if version is None :
193195 return pytest .mark .pil_noop_mark ()
194196 if reason is None :
195197 reason = f"{ feature } is { version_blacklist } "
196198 version_required = parse_version (version_blacklist )
197- version_available = parse_version (features . version ( feature ) )
199+ version_available = parse_version (version )
198200 if (
199201 version_available .major == version_required .major
200202 and version_available .minor == version_required .minor
@@ -220,16 +222,11 @@ def _get_mem_usage(self) -> float:
220222 from resource import RUSAGE_SELF , getrusage
221223
222224 mem = getrusage (RUSAGE_SELF ).ru_maxrss
223- if sys .platform == "darwin" :
224- # man 2 getrusage:
225- # ru_maxrss
226- # This is the maximum resident set size utilized (in bytes).
227- return mem / 1024 # Kb
228- # linux
229- # man 2 getrusage
230- # ru_maxrss (since Linux 2.6.32)
231- # This is the maximum resident set size used (in kilobytes).
232- return mem # Kb
225+ # man 2 getrusage:
226+ # ru_maxrss
227+ # This is the maximum resident set size utilized
228+ # in bytes on macOS, in kilobytes on Linux
229+ return mem / 1024 if sys .platform == "darwin" else mem
233230
234231 def _test_leak (self , core : Callable [[], None ]) -> None :
235232 start_mem = self ._get_mem_usage ()
@@ -243,7 +240,7 @@ def _test_leak(self, core: Callable[[], None]) -> None:
243240# helpers
244241
245242
246- def fromstring (data : bytes ) -> Image . Image :
243+ def fromstring (data : bytes ) -> ImageFile . ImageFile :
247244 return Image .open (BytesIO (data ))
248245
249246
0 commit comments