]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
use 'callable' instead of typechecking to inject context 1108/head
authorAdriano Scoditti <adriano.scoditti@gmail.com>
Tue, 19 Nov 2019 14:26:39 +0000 (15:26 +0100)
committerDavid Lord <davidism@gmail.com>
Wed, 20 Nov 2019 14:16:05 +0000 (06:16 -0800)
CHANGES.rst
jinja2/nodes.py
jinja2/runtime.py

index 07528541e801910e52327ca0857ad8671590ccf0..31aa480423910c7b3bc4ee59f4c3fbd9a3e4cc0a 100644 (file)
@@ -75,6 +75,8 @@ Unreleased
     lines. :issue:`175`
 -   Add ``break_on_hyphens`` parameter to ``|wordwrap`` filter.
     :issue:`550`
+-   Use :func:`callable` to inject context at runtime for compatibility
+    with Cython compiled functions. :pr:`1108`
 
 
 Version 2.10.3
index 9a58d436d58635d595e162c8d60ae54af213ef2a..058e3e6b75df0000b581da7727f4a6c4d38e0319 100644 (file)
@@ -20,10 +20,6 @@ from jinja2.utils import Markup
 from jinja2._compat import izip, with_metaclass, text_type, PY2
 
 
-#: the types we support for context functions
-_context_function_types = (types.FunctionType, types.MethodType)
-
-
 _binop_to_func = {
     '*':        operator.mul,
     '/':        operator.truediv,
index 135ff27b1485f2bf3595f032c3ce626bf8bbdf75..e3aa1f84253faa458d6b71be50ffc74db7a0bf30 100644 (file)
@@ -13,7 +13,7 @@ import sys
 from itertools import chain
 from types import MethodType
 
-from jinja2.nodes import EvalContext, _context_function_types
+from jinja2.nodes import EvalContext
 from jinja2.utils import Markup, soft_unicode, escape, missing, concat, \
      internalcode, object_type_repr, evalcontextfunction, Namespace
 from jinja2.exceptions import UndefinedError, TemplateRuntimeError, \
@@ -251,7 +251,7 @@ class Context(with_metaclass(ContextMeta)):
                     __obj = fn
                     break
 
-        if isinstance(__obj, _context_function_types):
+        if callable(__obj):
             if getattr(__obj, 'contextfunction', 0):
                 args = (__self,) + args
             elif getattr(__obj, 'evalcontextfunction', 0):