Skip to content

Commit

Permalink
Warn on typos passed to features.check()
Browse files Browse the repository at this point in the history
If the feature isn't one of the recognized types, a UserWarning is
emitted.
  • Loading branch information
jdufresne committed Feb 19, 2020
1 parent 2d4b457 commit c057ad1
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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 c057ad1

Please sign in to comment.