diff --git a/common/lib/xmodule/xmodule/modulestore/__init__.py b/common/lib/xmodule/xmodule/modulestore/__init__.py index 00a123e1d1080045dc66620524c78368cc2165eb..27aa5573eb24dcd4eea6424ccdb4b31fc6cc06f9 100644 --- a/common/lib/xmodule/xmodule/modulestore/__init__.py +++ b/common/lib/xmodule/xmodule/modulestore/__init__.py @@ -32,6 +32,12 @@ from xmodule.errortracker import make_error_tracker from .exceptions import InsufficientSpecificationError, InvalidLocationError +# The name of the type for patterns in re changed in Python 3.7. +try: + Pattern = re._pattern_type # pylint: disable=protected-access +except AttributeError: + Pattern = re.Pattern # pylint: disable=no-member + log = logging.getLogger('edx.modulestore') new_contract('CourseKey', CourseKey) @@ -899,7 +905,7 @@ class ModuleStoreRead(six.with_metaclass(ABCMeta, ModuleStoreAssetBase)): """ if isinstance(target, list): return any(self._value_matches(ele, criteria) for ele in target) - elif isinstance(criteria, re._pattern_type): # pylint: disable=protected-access + elif isinstance(criteria, Pattern): return criteria.search(target) is not None elif callable(criteria): return criteria(target)