From: Armin Ronacher Date: Tue, 27 Dec 2016 18:52:43 +0000 (+0100) Subject: Added support for generator_stop X-Git-Tag: 2.9~88 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7e14cf349b2da754a111ec0046984f01e6ed466;p=thirdparty%2Fjinja.git Added support for generator_stop --- diff --git a/CHANGES b/CHANGES index 4e5df26c..69ed4508 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,12 @@ Jinja2 Changelog ================ +Version 2.9 +----------- + +- Added support for `generator_stop` on supported Python versions + (Python 3.5 and later) + Version 2.8.1 ------------- diff --git a/jinja2/compiler.py b/jinja2/compiler.py index fad007b5..dee97b9b 100644 --- a/jinja2/compiler.py +++ b/jinja2/compiler.py @@ -38,6 +38,15 @@ if hasattr(dict, 'iteritems'): else: dict_item_iter = 'items' +code_features = ['division'] + +# does this python version support generator stops? (PEP 0479) +try: + exec('from __future__ import generator_stop') + code_features.append('generator_stop') +except SyntaxError: + pass + # does if 0: dummy(x) get us x into the scope? def unoptimize_before_dead_code(): @@ -763,7 +772,7 @@ class CodeGenerator(NodeVisitor): eval_ctx = EvalContext(self.environment, self.name) from jinja2.runtime import __all__ as exported - self.writeline('from __future__ import division') + self.writeline('from __future__ import %s' % ', '.join(code_features)) self.writeline('from jinja2.runtime import ' + ', '.join(exported)) if not unoptimize_before_dead_code: self.writeline('dummy = lambda *x: None')