From: Andy Freeland Date: Thu, 14 Mar 2019 23:42:54 +0000 (-0700) Subject: Fix print() function on Python 2 (#754) X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/d6db1c12a8e14833fe22da377cddc2bd1f43dc14?hp=026c81b83454f176a9f9253cbfb70be2c159d822 Fix print() function on Python 2 (#754) Fixes #752 --- diff --git a/black.py b/black.py index b727666..c44bc9b 100644 --- a/black.py +++ b/black.py @@ -726,13 +726,13 @@ def get_grammars(target_versions: Set[TargetVersion]) -> List[Grammar]: if not target_versions: return GRAMMARS elif all(not version.is_python2() for version in target_versions): - # Python 2-compatible code, so don't try Python 3 grammar. + # Python 3-compatible code, so don't try Python 2 grammar return [ pygram.python_grammar_no_print_statement_no_exec_statement, pygram.python_grammar_no_print_statement, ] else: - return [pygram.python_grammar] + return [pygram.python_grammar_no_print_statement, pygram.python_grammar] def lib2to3_parse(src_txt: str, target_versions: Iterable[TargetVersion] = ()) -> Node: diff --git a/tests/data/python2_print_function.py b/tests/data/python2_print_function.py new file mode 100755 index 0000000..81b8d8a --- /dev/null +++ b/tests/data/python2_print_function.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python2 +from __future__ import print_function + +print('hello') +print(u'hello') +print(a, file=sys.stderr) + +# output + + +#!/usr/bin/env python2 +from __future__ import print_function + +print("hello") +print(u"hello") +print(a, file=sys.stderr) diff --git a/tests/test_black.py b/tests/test_black.py index 7c99f00..645eec7 100644 --- a/tests/test_black.py +++ b/tests/test_black.py @@ -461,6 +461,14 @@ class BlackTestCase(unittest.TestCase): # black.assert_equivalent(source, actual) black.assert_stable(source, actual, black.FileMode()) + @patch("black.dump_to_file", dump_to_stderr) + def test_python2_print_function(self) -> None: + source, expected = read_data("python2_print_function") + mode = black.FileMode(target_versions={black.TargetVersion.PY27}) + actual = fs(source, mode=mode) + self.assertFormatEqual(expected, actual) + black.assert_stable(source, actual, mode) + @patch("black.dump_to_file", dump_to_stderr) def test_python2_unicode_literals(self) -> None: source, expected = read_data("python2_unicode_literals")