From 398a8a2b23e7ac61ffd675b27b460126019fe36b Mon Sep 17 00:00:00 2001 From: Luis Moreno Date: Wed, 17 Jun 2020 15:02:24 -0400 Subject: [PATCH] Fix python 3.8 compatibility --- common/lib/xmodule/xmodule/modulestore/__init__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/modulestore/__init__.py b/common/lib/xmodule/xmodule/modulestore/__init__.py index 00a123e1d1..27aa5573eb 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)