return metaclass('temporary_class', None, {})
-try:
- from collections import Mapping as mapping_types
-except ImportError:
- import UserDict
- mapping_types = (UserDict.UserDict, UserDict.DictMixin, dict)
-
-
try:
from urllib.parse import quote_from_bytes as url_quote
except ImportError:
from urllib import quote as url_quote
-
-
-try:
- from thread import allocate_lock
-except ImportError:
- try:
- from threading import Lock as allocate_lock
- except ImportError:
- from dummy_thread import allocate_lock
:license: BSD, see LICENSE for more details.
"""
import re
+from collections import Mapping
from jinja2.runtime import Undefined
-from jinja2._compat import text_type, string_types, mapping_types
+from jinja2._compat import text_type, string_types
number_re = re.compile(r'^-?\d+(\.\d+)?$')
.. versionadded:: 2.6
"""
- return isinstance(value, mapping_types)
+ return isinstance(value, Mapping)
def test_number(value):
import re
import errno
from collections import deque
+from threading import Lock
from jinja2._compat import text_type, string_types, implements_iterator, \
- allocate_lock, url_quote
+ url_quote
_word_split_re = re.compile(r'(\s+)')
self._popleft = self._queue.popleft
self._pop = self._queue.pop
self._remove = self._queue.remove
- self._wlock = allocate_lock()
+ self._wlock = Lock()
self._append = self._queue.append
def __getstate__(self):