summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriano Scoditti <adriano.scoditti@gmail.com>2019-11-19 15:26:39 +0100
committerDavid Lord <davidism@gmail.com>2019-11-20 06:16:05 -0800
commit70ea1d3e224638aa7db10e7814105a590c09cdff (patch)
tree5187be16ef255ed0ef4bc2e259226ac91a60e622
parent540b260198285f0ed41fbe80c0b1b6f13be579c1 (diff)
downloadjinja2-70ea1d3e224638aa7db10e7814105a590c09cdff.tar.gz
use 'callable' instead of typechecking to inject context
-rw-r--r--CHANGES.rst2
-rw-r--r--jinja2/nodes.py4
-rw-r--r--jinja2/runtime.py4
3 files changed, 4 insertions, 6 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 0752854..31aa480 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -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
diff --git a/jinja2/nodes.py b/jinja2/nodes.py
index 9a58d43..058e3e6 100644
--- a/jinja2/nodes.py
+++ b/jinja2/nodes.py
@@ -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,
diff --git a/jinja2/runtime.py b/jinja2/runtime.py
index 135ff27..e3aa1f8 100644
--- a/jinja2/runtime.py
+++ b/jinja2/runtime.py
@@ -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):