From: Armin Ronacher Date: Mon, 20 May 2013 01:11:16 +0000 (+0100) Subject: More cleanup in the utils module X-Git-Tag: 2.7~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ce779a585f77518a7f55c9a5a1aad1e585858865;p=thirdparty%2Fjinja.git More cleanup in the utils module --- diff --git a/jinja2/_compat.py b/jinja2/_compat.py index 2a0e6ed8..63e331de 100644 --- a/jinja2/_compat.py +++ b/jinja2/_compat.py @@ -13,9 +13,11 @@ import sys PY2 = sys.version_info[0] == 2 +_identity = lambda x: x if not PY2: + unichr = chr range_type = range text_type = str @@ -39,8 +41,9 @@ if not PY2: izip = zip intern = sys.intern - implements_iterator = lambda x: x - implements_to_string = lambda x: x + implements_iterator = _identity + implements_to_string = _identity + encode_filename = _identity get_next = lambda x: x.__next__ else: unichr = unichr @@ -73,6 +76,10 @@ else: get_next = lambda x: x.next + def encode_filename(filename): + if isinstance(filename, unicode): + return filename.encode('utf-8') + return filename try: next = next @@ -125,3 +132,18 @@ except TypeError: _tb = sys.exc_info()[2] traceback_type = type(_tb) frame_type = type(_tb.tb_frame) + + +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 diff --git a/jinja2/environment.py b/jinja2/environment.py index ad4f48ae..ca460197 100644 --- a/jinja2/environment.py +++ b/jinja2/environment.py @@ -26,10 +26,10 @@ from jinja2.runtime import Undefined, new_context from jinja2.exceptions import TemplateSyntaxError, TemplateNotFound, \ TemplatesNotFound, TemplateRuntimeError from jinja2.utils import import_string, LRUCache, Markup, missing, \ - concat, consume, internalcode, _encode_filename + concat, consume, internalcode from jinja2._compat import imap, ifilter, string_types, iteritems, \ text_type, reraise, implements_iterator, implements_to_string, \ - get_next + get_next, encode_filename from functools import reduce @@ -456,7 +456,7 @@ class Environment(object): def _parse(self, source, name, filename): """Internal parsing function used by `parse` and `compile`.""" - return Parser(self, source, name, _encode_filename(filename)).parse() + return Parser(self, source, name, encode_filename(filename)).parse() def lex(self, source, name=None, filename=None): """Lex the given sourcecode and return a generator that yields @@ -547,7 +547,7 @@ class Environment(object): if filename is None: filename = '