commit python-flake8-quotes for openSUSE:Factory
Hello community, here is the log from the commit of package python-flake8-quotes for openSUSE:Factory checked in at 2019-05-22 11:17:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-flake8-quotes (Old) and /work/SRC/openSUSE:Factory/.python-flake8-quotes.new.5148 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-flake8-quotes" Wed May 22 11:17:38 2019 rev:3 rq:704521 version:2.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-flake8-quotes/python-flake8-quotes.changes 2018-12-13 19:44:45.816987656 +0100 +++ /work/SRC/openSUSE:Factory/.python-flake8-quotes.new.5148/python-flake8-quotes.changes 2019-05-22 11:17:43.946461882 +0200 @@ -1,0 +2,9 @@ +Tue May 21 11:52:58 UTC 2019 - Marketa Calabkova <mcalabkova@suse.com> + +- Update to version 2.0.1 + * We automatically encourage avoiding escaping quotes as per + PEP 8. To disable this, use --no-avoid-escape (can be used + in configuration file via avoid-escape). + * Add note about warning. + +------------------------------------------------------------------- Old: ---- flake8-quotes-1.0.0.tar.gz New: ---- flake8-quotes-2.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-flake8-quotes.spec ++++++ --- /var/tmp/diff_new_pack.PeZIsr/_old 2019-05-22 11:17:44.778461626 +0200 +++ /var/tmp/diff_new_pack.PeZIsr/_new 2019-05-22 11:17:44.778461626 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-flake8-quotes # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,25 +17,24 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} -# Tests require access to stdin -%bcond_with test +%bcond_without test Name: python-flake8-quotes -Version: 1.0.0 +Version: 2.0.1 Release: 0 Summary: Flake8 lint for quotes License: MIT Group: Development/Languages/Python -Url: http://github.com/zheller/flake8-quotes/ +URL: http://github.com/zheller/flake8-quotes/ Source: https://files.pythonhosted.org/packages/source/f/flake8-quotes/flake8-quotes-%{version}.tar.gz BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros +Requires: python-flake8 >= 3.3.0 +BuildArch: noarch %if %{with test} -BuildRequires: %{python_module flake8} +BuildRequires: %{python_module flake8 >= 3.3.0} +BuildRequires: %{python_module pytest} %endif -Requires: python-flake8 -BuildArch: noarch - %python_subpackages %description @@ -53,11 +52,11 @@ %if %{with test} %check -%python_exec setup.py test +# Tests require access to stdin +%pytest -s -k "not test_stdin" test %endif %files %{python_files} -%defattr(-,root,root,-) %doc README.rst %license LICENSE %{python_sitelib}/* ++++++ flake8-quotes-1.0.0.tar.gz -> flake8-quotes-2.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/PKG-INFO new/flake8-quotes-2.0.1/PKG-INFO --- old/flake8-quotes-1.0.0/PKG-INFO 2018-04-08 22:31:39.000000000 +0200 +++ new/flake8-quotes-2.0.1/PKG-INFO 2019-04-24 09:49:37.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: flake8-quotes -Version: 1.0.0 +Version: 2.0.1 Summary: Flake8 lint for quotes. Home-page: http://github.com/zheller/flake8-quotes/ Author: Zachary Wright Heller @@ -13,6 +13,10 @@ :target: https://travis-ci.org/zheller/flake8-quotes :alt: Build Status + Major update in 2.0.0 + --------------------- + We automatically encourage avoiding escaping quotes as per `PEP 8 <https://www.python.org/dev/peps/pep-0008/#string-quotes>`_. To disable this, use ``--no-avoid-escape`` (can be used in configuration file via ``avoid-escape``). + Deprecation notice in 0.3.0 --------------------------- To anticipate multiline support, we are renaming ``--quotes`` to ``--inline-quotes``. Please adjust your configurations appropriately. @@ -29,6 +33,17 @@ Now you don't need to worry about people like @sectioneight constantly complaining that you are using double-quotes and not single-quotes. + Warnings + -------- + + This package adds one flake8 warning ```Q0```. + You might want to enable this warning inside `flake8` configuration file. + Typically that will be `.flake8` inside the root folder of your project. + + .. code:: ini + + select = Q0 + Configuration ------------- @@ -49,6 +64,8 @@ # flake8 --inline-quotes '"' --docstring-quotes "'" # flake8 --inline-quotes '"' --docstring-quotes "'''" + # We also support disabling escaping quotes + # flake8 --no-avoid-escape or configuration option in `tox.ini`/`setup.cfg`. @@ -66,6 +83,9 @@ # We also support docstring quotes similarly # docstring-quotes = ' # docstring-quotes = ''' + # + # We also support disabling escaping quotes + # avoid-escape = False Caveats ------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/README.rst new/flake8-quotes-2.0.1/README.rst --- old/flake8-quotes-1.0.0/README.rst 2018-04-08 22:29:39.000000000 +0200 +++ new/flake8-quotes-2.0.1/README.rst 2019-04-17 01:48:28.000000000 +0200 @@ -5,6 +5,10 @@ :target: https://travis-ci.org/zheller/flake8-quotes :alt: Build Status +Major update in 2.0.0 +--------------------- +We automatically encourage avoiding escaping quotes as per `PEP 8 <https://www.python.org/dev/peps/pep-0008/#string-quotes>`_. To disable this, use ``--no-avoid-escape`` (can be used in configuration file via ``avoid-escape``). + Deprecation notice in 0.3.0 --------------------------- To anticipate multiline support, we are renaming ``--quotes`` to ``--inline-quotes``. Please adjust your configurations appropriately. @@ -21,6 +25,17 @@ Now you don't need to worry about people like @sectioneight constantly complaining that you are using double-quotes and not single-quotes. +Warnings +-------- + +This package adds one flake8 warning ```Q0```. +You might want to enable this warning inside `flake8` configuration file. +Typically that will be `.flake8` inside the root folder of your project. + +.. code:: ini + + select = Q0 + Configuration ------------- @@ -41,6 +56,8 @@ # flake8 --inline-quotes '"' --docstring-quotes "'" # flake8 --inline-quotes '"' --docstring-quotes "'''" + # We also support disabling escaping quotes + # flake8 --no-avoid-escape or configuration option in `tox.ini`/`setup.cfg`. @@ -58,6 +75,9 @@ # We also support docstring quotes similarly # docstring-quotes = ' # docstring-quotes = ''' + # + # We also support disabling escaping quotes + # avoid-escape = False Caveats ------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes/__about__.py new/flake8-quotes-2.0.1/flake8_quotes/__about__.py --- old/flake8-quotes-1.0.0/flake8_quotes/__about__.py 2018-04-08 22:31:22.000000000 +0200 +++ new/flake8-quotes-2.0.1/flake8_quotes/__about__.py 2019-04-24 09:49:26.000000000 +0200 @@ -1 +1 @@ -__version__ = '1.0.0' +__version__ = '2.0.1' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes/__init__.py new/flake8-quotes-2.0.1/flake8_quotes/__init__.py --- old/flake8-quotes-1.0.0/flake8_quotes/__init__.py 2018-04-08 22:30:48.000000000 +0200 +++ new/flake8-quotes-2.0.1/flake8_quotes/__init__.py 2019-04-24 09:48:43.000000000 +0200 @@ -113,6 +113,12 @@ parse_from_config=True, type='choice', choices=sorted(cls.DOCSTRING_QUOTES.keys()), help='Quote to expect in all files (default: """)') + cls._register_opt(parser, '--avoid-escape', default=None, action='store_true', + parse_from_config=True, + help='Avoiding escaping same quotes in inline strings (enabled by default)') + cls._register_opt(parser, '--no-avoid-escape', dest='avoid_escape', default=None, action='store_false', + parse_from_config=False, + help='Disable avoiding escaping same quotes in inline strings') @classmethod def parse_options(cls, options): @@ -145,6 +151,12 @@ if hasattr(options, 'docstring_quotes') and options.docstring_quotes is not None: cls.config.update(cls.DOCSTRING_QUOTES[options.docstring_quotes]) + # If avoid escaped specified, add to config + if hasattr(options, 'avoid_escape') and options.avoid_escape is not None: + cls.config.update({'avoid_escape': options.avoid_escape}) + else: + cls.config.update({'avoid_escape': True}) + def get_file_contents(self): if self.filename in ('stdin', '-', None): return stdin_get_value().splitlines(True) @@ -185,6 +197,7 @@ # `b"""foo"""` -> `"""foo"""` last_quote_char = token.string[-1] first_quote_index = token.string.index(last_quote_char) + prefix = token.string[:first_quote_index].lower() unprefixed_string = token.string[first_quote_index:] # Determine if our string is multiline-based @@ -223,19 +236,38 @@ } # Otherwise (string is inline quote) else: - # If our string is a known good string, then ignore it - # (')foo' -> good (continue) - # "it(')s" -> good (continue) - # (")foo" -> possibly bad - if self.config['good_single'] in unprefixed_string: + # 'This is a string' -> Good + # 'This is a "string"' -> Good + # 'This is a \"string\"' -> Good + # 'This is a \'string\'' -> Bad (Q003) Escaped inner quotes + # '"This" is a \'string\'' -> Good Changing outer quotes would not avoid escaping + # "This is a string" -> Bad (Q000) + # "This is a 'string'" -> Good Avoids escaped inner quotes + # "This is a \"string\"" -> Bad (Q000) + # "\"This\" is a 'string'" -> Good + + string_contents = unprefixed_string[1:-1] + + # If string preferred type, check for escapes + if last_quote_char == self.config['good_single']: + if not self.config['avoid_escape'] or 'r' in prefix: + continue + if self.config['good_single'] in string_contents and not self.config['bad_single'] in string_contents: + yield { + 'message': 'Q003 Change outer quotes to avoid escaping inner quotes', + 'line': start_row, + 'col': start_col, + } continue - - # Output our error - yield { - 'message': 'Q000 Remove bad quotes', - 'line': start_row, - 'col': start_col, - } + + # If not preferred type, only allow use to avoid escapes. + if not self.config['good_single'] in string_contents: + yield { + 'message': 'Q000 Remove bad quotes', + 'line': start_row, + 'col': start_col, + } + class Token: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes.egg-info/PKG-INFO new/flake8-quotes-2.0.1/flake8_quotes.egg-info/PKG-INFO --- old/flake8-quotes-1.0.0/flake8_quotes.egg-info/PKG-INFO 2018-04-08 22:31:39.000000000 +0200 +++ new/flake8-quotes-2.0.1/flake8_quotes.egg-info/PKG-INFO 2019-04-24 09:49:37.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: flake8-quotes -Version: 1.0.0 +Version: 2.0.1 Summary: Flake8 lint for quotes. Home-page: http://github.com/zheller/flake8-quotes/ Author: Zachary Wright Heller @@ -13,6 +13,10 @@ :target: https://travis-ci.org/zheller/flake8-quotes :alt: Build Status + Major update in 2.0.0 + --------------------- + We automatically encourage avoiding escaping quotes as per `PEP 8 <https://www.python.org/dev/peps/pep-0008/#string-quotes>`_. To disable this, use ``--no-avoid-escape`` (can be used in configuration file via ``avoid-escape``). + Deprecation notice in 0.3.0 --------------------------- To anticipate multiline support, we are renaming ``--quotes`` to ``--inline-quotes``. Please adjust your configurations appropriately. @@ -29,6 +33,17 @@ Now you don't need to worry about people like @sectioneight constantly complaining that you are using double-quotes and not single-quotes. + Warnings + -------- + + This package adds one flake8 warning ```Q0```. + You might want to enable this warning inside `flake8` configuration file. + Typically that will be `.flake8` inside the root folder of your project. + + .. code:: ini + + select = Q0 + Configuration ------------- @@ -49,6 +64,8 @@ # flake8 --inline-quotes '"' --docstring-quotes "'" # flake8 --inline-quotes '"' --docstring-quotes "'''" + # We also support disabling escaping quotes + # flake8 --no-avoid-escape or configuration option in `tox.ini`/`setup.cfg`. @@ -66,6 +83,9 @@ # We also support docstring quotes similarly # docstring-quotes = ' # docstring-quotes = ''' + # + # We also support disabling escaping quotes + # avoid-escape = False Caveats ------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes.egg-info/SOURCES.txt new/flake8-quotes-2.0.1/flake8_quotes.egg-info/SOURCES.txt --- old/flake8-quotes-1.0.0/flake8_quotes.egg-info/SOURCES.txt 2018-04-08 22:31:39.000000000 +0200 +++ new/flake8-quotes-2.0.1/flake8_quotes.egg-info/SOURCES.txt 2019-04-24 09:49:37.000000000 +0200 @@ -10,7 +10,6 @@ flake8_quotes.egg-info/SOURCES.txt flake8_quotes.egg-info/dependency_links.txt flake8_quotes.egg-info/entry_points.txt -flake8_quotes.egg-info/pbr.json flake8_quotes.egg-info/requires.txt flake8_quotes.egg-info/top_level.txt flake8_quotes.egg-info/zip-safe @@ -30,12 +29,14 @@ test/data/docstring_singles_module_multiline.py test/data/docstring_singles_module_singleline.py test/data/doubles.py +test/data/doubles_escaped.py test/data/doubles_multiline_string.py test/data/doubles_noqa.py test/data/doubles_wrapped.py test/data/multiline_string.py test/data/no_qa.py test/data/singles.py +test/data/singles_escaped.py test/data/singles_multiline_string.py test/data/singles_noqa.py test/data/singles_wrapped.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/flake8_quotes.egg-info/pbr.json new/flake8-quotes-2.0.1/flake8_quotes.egg-info/pbr.json --- old/flake8-quotes-1.0.0/flake8_quotes.egg-info/pbr.json 2018-04-08 22:31:39.000000000 +0200 +++ new/flake8-quotes-2.0.1/flake8_quotes.egg-info/pbr.json 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -{"is_release": false, "git_version": "34b98e9"} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/setup.cfg new/flake8-quotes-2.0.1/setup.cfg --- old/flake8-quotes-1.0.0/setup.cfg 2018-04-08 22:31:39.000000000 +0200 +++ new/flake8-quotes-2.0.1/setup.cfg 2019-04-24 09:49:37.000000000 +0200 @@ -5,5 +5,4 @@ [egg_info] tag_build = tag_date = 0 -tag_svn_revision = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/test/data/doubles_escaped.py new/flake8-quotes-2.0.1/test/data/doubles_escaped.py --- old/flake8-quotes-1.0.0/test/data/doubles_escaped.py 1970-01-01 01:00:00.000000000 +0100 +++ new/flake8-quotes-2.0.1/test/data/doubles_escaped.py 2019-04-24 09:48:43.000000000 +0200 @@ -0,0 +1,6 @@ +this_should_raise_Q003 = 'This is a \'string\'' +this_is_fine = '"This" is a \'string\'' +this_is_fine = "This is a 'string'" +this_is_fine = "\"This\" is a 'string'" +this_is_fine = r'This is a \'string\'' +this_is_fine = br'This is a \'string\'' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/test/data/singles_escaped.py new/flake8-quotes-2.0.1/test/data/singles_escaped.py --- old/flake8-quotes-1.0.0/test/data/singles_escaped.py 1970-01-01 01:00:00.000000000 +0100 +++ new/flake8-quotes-2.0.1/test/data/singles_escaped.py 2019-04-24 09:48:43.000000000 +0200 @@ -0,0 +1,6 @@ +this_should_raise_Q003 = "This is a \"string\"" +this_is_fine = "'This' is a \"string\"" +this_is_fine = 'This is a "string"' +this_is_fine = '\'This\' is a "string"' +this_is_fine = r"This is a \"string\"" +this_is_fine = br"This is a \"string\"" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/flake8-quotes-1.0.0/test/test_checks.py new/flake8-quotes-2.0.1/test/test_checks.py --- old/flake8-quotes-1.0.0/test/test_checks.py 2018-04-08 22:28:05.000000000 +0200 +++ new/flake8-quotes-2.0.1/test/test_checks.py 2019-04-17 01:41:34.000000000 +0200 @@ -30,8 +30,8 @@ class DoublesTestChecks(TestCase): def setUp(self): class DoublesOptions(): - inline_quotes = '\'' - multiline_quotes = '\'' + inline_quotes = "'" + multiline_quotes = "'" QuoteChecker.parse_options(DoublesOptions) def test_multiline_string(self): @@ -56,6 +56,21 @@ checker = QuoteChecker(None, get_absolute_path('data/doubles_noqa.py')) self.assertEqual(list(checker.run()), []) + def test_escapes(self): + doubles_checker = QuoteChecker(None, filename=get_absolute_path('data/doubles_escaped.py')) + self.assertEqual(list(doubles_checker.get_quotes_errors(doubles_checker.get_file_contents())), [ + {'col': 25, 'line': 1, 'message': 'Q003 Change outer quotes to avoid escaping inner quotes'}, + ]) + + def test_escapes_allowed(self): + class Options(): + inline_quotes = "'" + avoid_escape = False + QuoteChecker.parse_options(Options) + + doubles_checker = QuoteChecker(None, filename=get_absolute_path('data/doubles_escaped.py')) + self.assertEqual(list(doubles_checker.get_quotes_errors(doubles_checker.get_file_contents())), []) + class DoublesAliasTestChecks(TestCase): def setUp(self): @@ -105,6 +120,21 @@ checker = QuoteChecker(None, get_absolute_path('data/singles_noqa.py')) self.assertEqual(list(checker.run()), []) + def test_escapes(self): + singles_checker = QuoteChecker(None, filename=get_absolute_path('data/singles_escaped.py')) + self.assertEqual(list(singles_checker.get_quotes_errors(singles_checker.get_file_contents())), [ + {'col': 25, 'line': 1, 'message': 'Q003 Change outer quotes to avoid escaping inner quotes'}, + ]) + + def test_escapes_allowed(self): + class Options(): + inline_quotes = '"' + avoid_escape = False + QuoteChecker.parse_options(Options) + + singles_checker = QuoteChecker(None, filename=get_absolute_path('data/singles_escaped.py')) + self.assertEqual(list(singles_checker.get_quotes_errors(singles_checker.get_file_contents())), []) + class SinglesAliasTestChecks(TestCase): def setUp(self): @@ -128,7 +158,7 @@ class MultilineTestChecks(TestCase): def test_singles(self): class Options(): - inline_quotes = '\'' + inline_quotes = "'" multiline_quotes = '"' QuoteChecker.parse_options(Options) @@ -151,7 +181,7 @@ def test_doubles(self): class Options(): inline_quotes = '"' - multiline_quotes = '\'' + multiline_quotes = "'" QuoteChecker.parse_options(Options) multiline_checker = QuoteChecker(None, filename=get_absolute_path('data/multiline_string.py'))
participants (1)
-
root