From 915cacc86402aeb0a59c3e031184f3b72a34699c Mon Sep 17 00:00:00 2001 From: Takuto Ikuta Date: Fri, 1 Jul 2022 01:58:29 +0000 Subject: [PATCH] mako: update version to 1.2.1 from 1.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is to import https://github.com/sqlalchemy/mako/pull/361. This update shows 14% improvement in walltime and uses only 80% of cpu time compared to current HEAD. ``` $ hyperfine --parameter-list branch origin/main,mako_optimize --setup 'git checkout {branch}' 'python3 ../../third_party/blink/renderer/bindings/scripts/generate_bindings.py --web_idl_database gen/third_party/blink/renderer/bindings/web_idl_database.pickle --root_src_dir ../../ --root_gen_dir gen --output_reldir core=third_party/blink/renderer/bindings/core/v8/ --output_reldir modules=third_party/blink/renderer/bindings/modules/v8/ enumeration callback_function callback_interface dictionary interface namespace observable_array typedef union' Benchmark 1: python3 ../../third_party/blink/renderer/bindings/scripts/generate_bindings.py --web_idl_database gen/third_party/blink/renderer/bindings/web_idl_database.pickle --root_src_dir ../../ --root_gen_dir gen --output_reldir core=third_party/blink/renderer/bindings/core/v8/ --output_reldir modules=third_party/blink/renderer/bindings/modules/v8/ enumeration callback_function callback_interface dictionary interface namespace observable_array typedef union Time (mean ± σ): 33.499 s ± 0.289 s [User: 930.572 s, System: 20.354 s] Range (min … max): 32.971 s … 33.915 s 10 runs Benchmark 2: python3 ../../third_party/blink/renderer/bindings/scripts/generate_bindings.py --web_idl_database gen/third_party/blink/renderer/bindings/web_idl_database.pickle --root_src_dir ../../ --root_gen_dir gen --output_reldir core=third_party/blink/renderer/bindings/core/v8/ --output_reldir modules=third_party/blink/renderer/bindings/modules/v8/ enumeration callback_function callback_interface dictionary interface namespace observable_array typedef union Time (mean ± σ): 29.261 s ± 0.298 s [User: 737.851 s, System: 20.448 s] Range (min … max): 28.737 s … 29.835 s 10 runs Summary 'python3 ../../third_party/blink/renderer/bindings/scripts/generate_bindings.py --web_idl_database gen/third_party/blink/renderer/bindings/web_idl_database.pickle --root_src_dir ../../ --root_gen_dir gen --output_reldir core=third_party/blink/renderer/bindings/core/v8/ --output_reldir modules=third_party/blink/renderer/bindings/modules/v8/ enumeration callback_function callback_interface dictionary interface namespace observable_array typedef union' ran 1.14 ± 0.02 times faster than 'python3 ../../third_party/blink/renderer/bindings/scripts/generate_bindings.py --web_idl_database gen/third_party/blink/renderer/bindings/web_idl_database.pickle --root_src_dir ../../ --root_gen_dir gen --output_reldir core=third_party/blink/renderer/bindings/core/v8/ --output_reldir modules=third_party/blink/renderer/bindings/modules/v8/ enumeration callback_function callback_interface dictionary interface namespace observable_array typedef union' ``` Bug: 1214033 Change-Id: I54eab0e27872d40256d3ecb04c47c876652b5596 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3685551 Reviewed-by: Kentaro Hara Commit-Queue: Takuto Ikuta Reviewed-by: Yuki Shiino Cr-Commit-Position: refs/heads/main@{#1019918} NOKEYCHECK=True GitOrigin-RevId: c4edcb406fe832cad04012fcbe000b8c09a836a2 --- mako/README.chromium | 10 ++++----- mako/mako/LICENSE | 4 ++-- mako/mako/mako/__init__.py | 4 ++-- mako/mako/mako/_ast_util.py | 2 +- mako/mako/mako/ast.py | 2 +- mako/mako/mako/cache.py | 2 +- mako/mako/mako/cmd.py | 2 +- mako/mako/mako/codegen.py | 2 +- mako/mako/mako/compat.py | 2 +- mako/mako/mako/exceptions.py | 2 +- mako/mako/mako/ext/autohandler.py | 2 +- mako/mako/mako/ext/babelplugin.py | 2 +- mako/mako/mako/ext/beaker_cache.py | 2 +- mako/mako/mako/ext/extract.py | 2 +- mako/mako/mako/ext/linguaplugin.py | 2 +- mako/mako/mako/ext/preprocessors.py | 2 +- mako/mako/mako/ext/pygmentplugin.py | 2 +- mako/mako/mako/ext/turbogears.py | 2 +- mako/mako/mako/filters.py | 2 +- mako/mako/mako/lexer.py | 9 ++++---- mako/mako/mako/lookup.py | 2 +- mako/mako/mako/parsetree.py | 2 +- mako/mako/mako/pygen.py | 28 +++++++++++++++++-------- mako/mako/mako/pyparser.py | 2 +- mako/mako/mako/template.py | 2 +- mako/mako/mako/testing/fixtures.py | 10 +++++++++ mako/mako/mako/util.py | 2 +- mako/mako/setup.cfg | 7 +++++-- mako/mako/test/ext/test_babelplugin.py | 27 ++++++++++++++++-------- mako/mako/test/ext/test_linguaplugin.py | 4 +++- mako/mako/test/test_exceptions.py | 13 ++++-------- mako/mako/test/test_template.py | 19 +++++++---------- mako/mako/tox.ini | 2 +- 33 files changed, 102 insertions(+), 77 deletions(-) diff --git a/mako/README.chromium b/mako/README.chromium index 307da9d1727..8a76367a000 100644 --- a/mako/README.chromium +++ b/mako/README.chromium @@ -1,8 +1,8 @@ Name: Mako Templates for Python Short Name: python-mako URL: https://www.makotemplates.org -Version: 1.2.0 -Date: March 11, 2022 +Version: 1.2.1 +Date: July 1, 2022 License: MIT License File: NOT_SHIPPED Security Critical: no @@ -10,11 +10,11 @@ Security Critical: no Description: Template engine in Python, used for code generation in Blink. -Source: https://files.pythonhosted.org/packages/50/ec/1d687348f0954bda388bfd1330c158ba8d7dea4044fc160e74e080babdb9/Mako-1.2.0.tar.gz -SHA-256: 9a7c7e922b87db3686210cf49d5d767033a41d4010b284e747682c92bddd8b39 +Source: https://files.pythonhosted.org/packages/ad/dd/34201dae727bb183ca14fd8417e61f936fa068d6f503991f09ee3cac6697/Mako-1.2.1.tar.gz +SHA-256: f054a5ff4743492f1aa9ecc47172cb33b42b9d993cffcc146c9de17e717b0307 Local Modifications: * add DIR_METADATA, OWNERS, README.chromium, and .gitattributes files in this directory. * run following commands to pass PRESUBMIT. - $ rm -rf mako/doc/ mako/example/ mako/Mako.egg-info mako/PKG-INFO + $ rm -rf mako/doc/ mako/examples/ mako/Mako.egg-info mako/PKG-INFO $ chmod -x mako/mako/cmd.py diff --git a/mako/mako/LICENSE b/mako/mako/LICENSE index 2342a9d3d02..be84a38ef9f 100644 --- a/mako/mako/LICENSE +++ b/mako/mako/LICENSE @@ -1,4 +1,4 @@ -Copyright 2006-2021 the Mako authors and contributors . +Copyright 2006-2022 the Mako authors and contributors . Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -16,4 +16,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/mako/mako/mako/__init__.py b/mako/mako/mako/__init__.py index 5ae5501135a..f105e78cd16 100644 --- a/mako/mako/mako/__init__.py +++ b/mako/mako/mako/__init__.py @@ -1,8 +1,8 @@ # mako/__init__.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php -__version__ = "1.2.0" +__version__ = "1.2.1" diff --git a/mako/mako/mako/_ast_util.py b/mako/mako/mako/_ast_util.py index b8615335d6b..95742835f0f 100644 --- a/mako/mako/mako/_ast_util.py +++ b/mako/mako/mako/_ast_util.py @@ -1,5 +1,5 @@ # mako/_ast_util.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ast.py b/mako/mako/mako/ast.py index f879e8b4bf6..a3f3ee3ec63 100644 --- a/mako/mako/mako/ast.py +++ b/mako/mako/mako/ast.py @@ -1,5 +1,5 @@ # mako/ast.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/cache.py b/mako/mako/mako/cache.py index d77be271159..db21bb3e9ea 100644 --- a/mako/mako/mako/cache.py +++ b/mako/mako/mako/cache.py @@ -1,5 +1,5 @@ # mako/cache.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/cmd.py b/mako/mako/mako/cmd.py index 7592fb279df..93a6733fcba 100644 --- a/mako/mako/mako/cmd.py +++ b/mako/mako/mako/cmd.py @@ -1,5 +1,5 @@ # mako/cmd.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/codegen.py b/mako/mako/mako/codegen.py index c897f0fff17..a9dbcb6799f 100644 --- a/mako/mako/mako/codegen.py +++ b/mako/mako/mako/codegen.py @@ -1,5 +1,5 @@ # mako/codegen.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/compat.py b/mako/mako/mako/compat.py index 68bc03b1dd7..48df30d6e22 100644 --- a/mako/mako/mako/compat.py +++ b/mako/mako/mako/compat.py @@ -1,5 +1,5 @@ # mako/compat.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/exceptions.py b/mako/mako/mako/exceptions.py index a0a5feca77d..31c695fd78f 100644 --- a/mako/mako/mako/exceptions.py +++ b/mako/mako/mako/exceptions.py @@ -1,5 +1,5 @@ # mako/exceptions.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ext/autohandler.py b/mako/mako/mako/ext/autohandler.py index e8fdac89f61..5bcfc28584b 100644 --- a/mako/mako/mako/ext/autohandler.py +++ b/mako/mako/mako/ext/autohandler.py @@ -1,5 +1,5 @@ # ext/autohandler.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ext/babelplugin.py b/mako/mako/mako/ext/babelplugin.py index f015ec25477..907d0b80869 100644 --- a/mako/mako/mako/ext/babelplugin.py +++ b/mako/mako/mako/ext/babelplugin.py @@ -1,5 +1,5 @@ # ext/babelplugin.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ext/beaker_cache.py b/mako/mako/mako/ext/beaker_cache.py index a40b09cf488..9aa35b06842 100644 --- a/mako/mako/mako/ext/beaker_cache.py +++ b/mako/mako/mako/ext/beaker_cache.py @@ -1,5 +1,5 @@ # ext/beaker_cache.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ext/extract.py b/mako/mako/mako/ext/extract.py index 74d067d8495..9d33ee1841a 100644 --- a/mako/mako/mako/ext/extract.py +++ b/mako/mako/mako/ext/extract.py @@ -1,5 +1,5 @@ # ext/extract.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ext/linguaplugin.py b/mako/mako/mako/ext/linguaplugin.py index 4cce6262b72..efb04c70a94 100644 --- a/mako/mako/mako/ext/linguaplugin.py +++ b/mako/mako/mako/ext/linguaplugin.py @@ -1,5 +1,5 @@ # ext/linguaplugin.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ext/preprocessors.py b/mako/mako/mako/ext/preprocessors.py index 6855eeb4378..80403ecdaeb 100644 --- a/mako/mako/mako/ext/preprocessors.py +++ b/mako/mako/mako/ext/preprocessors.py @@ -1,5 +1,5 @@ # ext/preprocessors.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ext/pygmentplugin.py b/mako/mako/mako/ext/pygmentplugin.py index 38d6a71ba04..9acbf4cd67a 100644 --- a/mako/mako/mako/ext/pygmentplugin.py +++ b/mako/mako/mako/ext/pygmentplugin.py @@ -1,5 +1,5 @@ # ext/pygmentplugin.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/ext/turbogears.py b/mako/mako/mako/ext/turbogears.py index 413d9f74021..2ebf0746867 100644 --- a/mako/mako/mako/ext/turbogears.py +++ b/mako/mako/mako/ext/turbogears.py @@ -1,5 +1,5 @@ # ext/turbogears.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/filters.py b/mako/mako/mako/filters.py index 26edd8ee887..af202f3f529 100644 --- a/mako/mako/mako/filters.py +++ b/mako/mako/mako/filters.py @@ -1,5 +1,5 @@ # mako/filters.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/lexer.py b/mako/mako/mako/lexer.py index 527c4b51820..bfcf28691a5 100644 --- a/mako/mako/mako/lexer.py +++ b/mako/mako/mako/lexer.py @@ -1,5 +1,5 @@ # mako/lexer.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php @@ -74,12 +74,11 @@ def match_reg(self, reg): (start, end) = match.span() self.match_position = end + 1 if end == start else end self.matched_lineno = self.lineno - lines = re.findall(r"\n", self.text[mp : self.match_position]) cp = mp - 1 - while cp >= 0 and cp < self.textlength and self.text[cp] != "\n": - cp -= 1 + if cp >= 0 and cp < self.textlength: + cp = self.text[: cp + 1].rfind("\n") self.matched_charpos = mp - cp - self.lineno += len(lines) + self.lineno += self.text[mp : self.match_position].count("\n") return match def parse_until_text(self, watch_nesting, *text): diff --git a/mako/mako/mako/lookup.py b/mako/mako/mako/lookup.py index 7afe242b763..f7410ce3b1f 100644 --- a/mako/mako/mako/lookup.py +++ b/mako/mako/mako/lookup.py @@ -1,5 +1,5 @@ # mako/lookup.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/parsetree.py b/mako/mako/mako/parsetree.py index 2135769f069..c5a12d1d5ef 100644 --- a/mako/mako/mako/parsetree.py +++ b/mako/mako/mako/parsetree.py @@ -1,5 +1,5 @@ # mako/parsetree.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/pygen.py b/mako/mako/mako/pygen.py index 46b0b52ffec..57c697931f5 100644 --- a/mako/mako/mako/pygen.py +++ b/mako/mako/mako/pygen.py @@ -1,5 +1,5 @@ # mako/pygen.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php @@ -43,6 +43,15 @@ def __init__(self, stream): # source lines self.source_map = {} + self._re_space_comment = re.compile(r"^\s*#") + self._re_space = re.compile(r"^\s*$") + self._re_indent = re.compile(r":[ \t]*(?:#.*)?$") + self._re_compound = re.compile(r"^\s*(if|try|elif|while|for|with)") + self._re_indent_keyword = re.compile( + r"^\s*(def|class|else|elif|except|finally)" + ) + self._re_unindentor = re.compile(r"^\s*(else|elif|except|finally).*\:") + def _update_lineno(self, num): self.lineno += num @@ -86,8 +95,8 @@ def writeline(self, line): if ( line is None - or re.match(r"^\s*#", line) - or re.match(r"^\s*$", line) + or self._re_space_comment.match(line) + or self._re_space.match(line) ): hastext = False else: @@ -121,12 +130,12 @@ def writeline(self, line): # note that a line can both decrase (before printing) and # then increase (after printing) the indentation level. - if re.search(r":[ \t]*(?:#.*)?$", line): + if self._re_indent.search(line): # increment indentation count, and also # keep track of what the keyword was that indented us, # if it is a python compound statement keyword # where we might have to look for an "unindent" keyword - match = re.match(r"^\s*(if|try|elif|while|for|with)", line) + match = self._re_compound.match(line) if match: # its a "compound" keyword, so we will check for "unindentors" indentor = match.group(1) @@ -137,9 +146,7 @@ def writeline(self, line): # its not a "compound" keyword. but lets also # test for valid Python keywords that might be indenting us, # else assume its a non-indenting line - m2 = re.match( - r"^\s*(def|class|else|elif|except|finally)", line - ) + m2 = self._re_indent_keyword.match(line) if m2: self.indent += 1 self.indent_detail.append(indentor) @@ -167,7 +174,7 @@ def _is_unindentor(self, line): # if the current line doesnt have one of the "unindentor" keywords, # return False - match = re.match(r"^\s*(else|elif|except|finally).*\:", line) + match = self._re_unindentor.match(line) # if True, whitespace matches up, we have a compound indentor, # and this line has an unindentor, this # is probably good enough @@ -193,6 +200,9 @@ def _indent_line(self, line, stripspace=""): stripspace is a string of space that will be truncated from the start of the line before indenting.""" + if stripspace == "": + # Fast path optimization. + return self.indentstring * self.indent + line return re.sub( r"^%s" % stripspace, self.indentstring * self.indent, line diff --git a/mako/mako/mako/pyparser.py b/mako/mako/mako/pyparser.py index 5c55505ba00..d9b090c6fa1 100644 --- a/mako/mako/mako/pyparser.py +++ b/mako/mako/mako/pyparser.py @@ -1,5 +1,5 @@ # mako/pyparser.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/template.py b/mako/mako/mako/template.py index bbbe73cb252..8c70731dc1c 100644 --- a/mako/mako/mako/template.py +++ b/mako/mako/mako/template.py @@ -1,5 +1,5 @@ # mako/template.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/mako/testing/fixtures.py b/mako/mako/mako/testing/fixtures.py index c9379c0c7f2..01e996171d1 100644 --- a/mako/mako/mako/testing/fixtures.py +++ b/mako/mako/mako/testing/fixtures.py @@ -80,6 +80,16 @@ def _do_test( output = filters(output) eq_(output, expected) + def indicates_unbound_local_error(self, rendered_output, unbound_var): + var = f"'{unbound_var}'" + error_msgs = ( + # < 3.11 + f"local variable {var} referenced before assignment", + # >= 3.11 + f"cannot access local variable {var} where it is not associated", + ) + return any((msg in rendered_output) for msg in error_msgs) + class PlainCacheImpl(CacheImpl): """Simple memory cache impl so that tests which diff --git a/mako/mako/mako/util.py b/mako/mako/mako/util.py index 74c8b9eb25f..5fb683b4f15 100644 --- a/mako/mako/mako/util.py +++ b/mako/mako/mako/util.py @@ -1,5 +1,5 @@ # mako/util.py -# Copyright 2006-2021 the Mako authors and contributors +# Copyright 2006-2022 the Mako authors and contributors # # This module is part of Mako and is released under # the MIT License: http://www.opensource.org/licenses/mit-license.php diff --git a/mako/mako/setup.cfg b/mako/mako/setup.cfg index b7272dbaaa4..bcfefa1b50c 100644 --- a/mako/mako/setup.cfg +++ b/mako/mako/setup.cfg @@ -8,7 +8,7 @@ url = https://www.makotemplates.org/ author = Mike Bayer author_email = mike@zzzcomputing.com license = MIT -license_file = LICENSE +license_files = LICENSE classifiers = Development Status :: 5 - Production/Stable License :: OSI Approved :: MIT License @@ -69,9 +69,12 @@ tag_build = tag_date = 0 [tool:pytest] -addopts = --tb native -v -r fxX -W error +addopts = --tb native -v -r fxX -p warnings python_files = test/*test_*.py python_classes = *Test +filterwarnings = + error::DeprecationWarning:test + error::DeprecationWarning:mako [upload] sign = 1 diff --git a/mako/mako/test/ext/test_babelplugin.py b/mako/mako/test/ext/test_babelplugin.py index de3e4610577..cfe79b62e8a 100644 --- a/mako/mako/test/ext/test_babelplugin.py +++ b/mako/mako/test/ext/test_babelplugin.py @@ -1,26 +1,35 @@ import io import os -from mako.ext.babelplugin import extract +import pytest + from mako.testing.assertions import eq_ from mako.testing.config import config from mako.testing.exclusions import requires_babel from mako.testing.fixtures import TemplateTest +class UsesExtract: + @pytest.fixture(scope="class") + def extract(self): + from mako.ext.babelplugin import extract + + return extract + + @requires_babel -class PluginExtractTest: - def test_parse_python_expression(self): +class PluginExtractTest(UsesExtract): + def test_parse_python_expression(self, extract): input_ = io.BytesIO(b'

${_("Message")}

') messages = list(extract(input_, ["_"], [], {})) eq_(messages, [(1, "_", ("Message"), [])]) - def test_python_gettext_call(self): + def test_python_gettext_call(self, extract): input_ = io.BytesIO(b'

${_("Message")}

') messages = list(extract(input_, ["_"], [], {})) eq_(messages, [(1, "_", ("Message"), [])]) - def test_translator_comment(self): + def test_translator_comment(self, extract): input_ = io.BytesIO( b"""

@@ -43,8 +52,8 @@ def test_translator_comment(self): @requires_babel -class MakoExtractTest(TemplateTest): - def test_extract(self): +class MakoExtractTest(UsesExtract, TemplateTest): + def test_extract(self, extract): with open( os.path.join(config.template_base, "gettext.mako") ) as mako_tmpl: @@ -83,7 +92,7 @@ def test_extract(self): ] eq_(expected, messages) - def test_extract_utf8(self): + def test_extract_utf8(self, extract): with open( os.path.join(config.template_base, "gettext_utf8.mako"), "rb" ) as mako_tmpl: @@ -92,7 +101,7 @@ def test_extract_utf8(self): ) assert message == (1, "_", "K\xf6ln", []) - def test_extract_cp1251(self): + def test_extract_cp1251(self, extract): with open( os.path.join(config.template_base, "gettext_cp1251.mako"), "rb" ) as mako_tmpl: diff --git a/mako/mako/test/ext/test_linguaplugin.py b/mako/mako/test/ext/test_linguaplugin.py index ae24f6755a5..5aafcff541e 100644 --- a/mako/mako/test/ext/test_linguaplugin.py +++ b/mako/mako/test/ext/test_linguaplugin.py @@ -2,7 +2,6 @@ import pytest -from mako.ext.linguaplugin import LinguaMakoExtractor from mako.testing.assertions import eq_ from mako.testing.config import config from mako.testing.exclusions import requires_lingua @@ -19,11 +18,14 @@ class MockOptions: class MakoExtractTest(TemplateTest): @pytest.fixture(autouse=True) def register_lingua_extractors(self): + from lingua.extractors import register_extractors register_extractors() def test_extract(self): + from mako.ext.linguaplugin import LinguaMakoExtractor + plugin = LinguaMakoExtractor({"comment-tags": "TRANSLATOR"}) messages = list( plugin( diff --git a/mako/mako/test/test_exceptions.py b/mako/mako/test/test_exceptions.py index b1930c563e4..be573e6391e 100644 --- a/mako/mako/test/test_exceptions.py +++ b/mako/mako/test/test_exceptions.py @@ -173,7 +173,7 @@ def test_format_exceptions_pygments(self): ) assert ( - '

' + '
' in l.get_template("foo.html").render_unicode() ) @@ -274,10 +274,8 @@ def test_tback_no_trace_from_py_file(self): html_error = exceptions.html_error_template().render_unicode( error=v, traceback=None ) - assert ( - "local variable 'y' referenced before assignment" - in html_error - ) + + assert self.indicates_unbound_local_error(html_error, "y") def test_tback_trace_from_py_file(self): t = self._file_template("runtimeerr.html") @@ -287,10 +285,7 @@ def test_tback_trace_from_py_file(self): except: html_error = exceptions.html_error_template().render_unicode() - assert ( - "local variable 'y' referenced before assignment" - in html_error - ) + assert self.indicates_unbound_local_error(html_error, "y") def test_code_block_line_number(self): l = TemplateLookup() diff --git a/mako/mako/test/test_template.py b/mako/mako/test/test_template.py index fc1aecad5bf..6e7a3098009 100644 --- a/mako/mako/test/test_template.py +++ b/mako/mako/test/test_template.py @@ -940,18 +940,15 @@ def test_control(self): %endfor """ ) - assert ( - result_lines( - t.render( - y=[ - {"test": "one"}, - {"foo": "bar"}, - {"foo": "bar", "test": "two"}, - ] - ) + assert result_lines( + t.render( + y=[ + {"test": "one"}, + {"foo": "bar"}, + {"foo": "bar", "test": "two"}, + ] ) - == ["yes x has test", "no x does not have test", "yes x has test"] - ) + ) == ["yes x has test", "no x does not have test", "yes x has test"] def test_blank_control_1(self): self._do_memory_test( diff --git a/mako/mako/tox.ini b/mako/mako/tox.ini index d8edd3cb03d..6f7cefdbc7d 100644 --- a/mako/mako/tox.ini +++ b/mako/mako/tox.ini @@ -30,7 +30,7 @@ deps= pydocstyle<4.0.0 # used by flake8-rst-docstrings pygments - black==21.9b0 + black==22.3.0 commands = flake8 ./mako/ ./test/ setup.py --exclude test/templates,test/foo {posargs} black --check .