Skip to content

Commit

Permalink
Merge pull request #4438 from jdufresne/warning
Browse files Browse the repository at this point in the history
Warn on typos passed to features.check()
  • Loading branch information
hugovk committed Mar 2, 2020
2 parents cd00430 + c057ad1 commit 974233b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
7 changes: 7 additions & 0 deletions Tests/test_features.py
Expand Up @@ -44,6 +44,13 @@ def test_check_modules():
assert features.check_codec(feature) in [True, False]


def test_check_warns_on_nonexistent():
with pytest.warns(UserWarning) as cm:
has_feature = features.check("typo")
assert has_feature is False
assert str(cm[-1].message) == "Unknown feature 'typo'."


def test_supported_modules():
assert isinstance(features.get_supported_modules(), list)
assert isinstance(features.get_supported_codecs(), list)
Expand Down
17 changes: 9 additions & 8 deletions src/PIL/features.py
@@ -1,6 +1,7 @@
import collections
import os
import sys
import warnings

import PIL

Expand Down Expand Up @@ -76,14 +77,14 @@ def get_supported_features():


def check(feature):
return (
feature in modules
and check_module(feature)
or feature in codecs
and check_codec(feature)
or feature in features
and check_feature(feature)
)
if feature in modules:
return check_module(feature)
if feature in codecs:
return check_codec(feature)
if feature in features:
return check_feature(feature)
warnings.warn("Unknown feature '%s'." % feature, stacklevel=2)
return False


def get_supported():
Expand Down

0 comments on commit 974233b

Please sign in to comment.