Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi-line ignore parsing in config_file #429

Merged

Conversation

doismellburning
Copy link
Member

In tox.ini it is entirely possible to have multi-line lists with trailing commas, e.g.

envlist =
    py27,
    py34,

If however you do

[pep8]
ignore =
    E1,
    E2,

then options.ignore ends up as ('\nE1', \nE2', '')

The first two items of that tuple are "mildly inconvenient"; the preceding \n just means the ignore is...ignored - a consequence of the multiline

The empty string as the last item, a consequence of the trailing comma, is much more insidious, as it causes all checks to be silently ignored thanks to https://github.com/PyCQA/pep8/blob/master/pep8.py#L1890-L1901, specifically

return (code.startswith(self.options.ignore) and
                not code.startswith(self.options.select))

Currently, this PR includes some py27 tests to demonstrate this behaviour (I haven't tested my tests in other environments yet; am letting Travis do that for me) - I'll try to follow up with an actual fix.

Ultimately, the "real problem" here is probably "parsing another tool's config file"; there'll always be fun quirks etc., but that's much harder to do anything about!

@doismellburning
Copy link
Member Author

(See doismellburning/cookiecutter-django#7 for more context - many thanks to @rfleschenberg for his debugging assistance)

@doismellburning doismellburning force-pushed the feature/file-parsing-flexibility branch from 60bb755 to 71198d3 Compare August 22, 2015 10:46
At time of writing, these tests fail. If this is later fixed, someone
may wish to remove this warning!
@doismellburning doismellburning force-pushed the feature/file-parsing-flexibility branch from 71198d3 to 8aac6b5 Compare August 22, 2015 10:54
@sigmavirus24
Copy link
Member

I think there was already a bug for this, but it wasn't on the top of anyone's todo list. With tests already written, this should be a simple one for people to fix (I would hope).

@doismellburning
Copy link
Member Author

Welp, think I fixed it...

@sigmavirus24
Copy link
Member

👍 Looks good to me.

sigmavirus24 added a commit that referenced this pull request Sep 7, 2015
…xibility

Multi-line ignore parsing in config_file
@sigmavirus24 sigmavirus24 merged commit 5feba52 into PyCQA:master Sep 7, 2015
@sigmavirus24
Copy link
Member

✨ 🍰 ✨ Thanks @doismellburning

@doismellburning doismellburning deleted the feature/file-parsing-flexibility branch September 7, 2015 22:20
@doismellburning
Copy link
Member Author

Cheers!

@IanLee1521
Copy link
Member

Thanks @doismellburning !

pointlessone added a commit to pointlessone/pep8 that referenced this pull request Dec 29, 2016
2.2.0 (2016-11-14)
------------------

Bugs:

* Fixed E305 regression caused by PyCQA#400;
  PyCQA#593

2.1.0 (2016-11-04)
------------------

Changes:

* Report E302 for blank lines before an "async def";
  PyCQA#556
* Update our list of tested and supported Python versions which are 2.6,
  2.7, 3.2, 3.3, 3.4 and 3.5 as well as the nightly Python build and
  PyPy.
* Report E742 and E743 for functions and classes badly named 'l', 'O',
  or 'I'.
* Report E741 on 'global' and 'nonlocal' statements, as well as
  prohibited single-letter variables.
* Deprecated use of `[pep8]` section name in favor of `[pycodestyle]`;
  PyCQA#591

Bugs:

* Fix opt_type AssertionError when using Flake8 2.6.2 and pycodestyle;
  PyCQA#561
* Require two blank lines after toplevel def, class;
  PyCQA#536
* Remove accidentally quadratic computation based on the number of
  colons. This will make pycodestyle faster in some cases;
  PyCQA#314

2.0.0 (2016-05-31)
------------------

Changes:

* Added tox test support for Python 3.5 and pypy3
* Added check E275 for whitespace on `from ... import ...` lines;
  PyCQA#489 / PyCQA#491
* Added W503 to the list of codes ignored by default ignore list;
  PyCQA#498
* Removed use of project level `.pep8` configuration file;
  PyCQA#364

Bugs:

* Fixed bug with treating `~` operator as binary; PyCQA#383
  / PyCQA#384
* Identify binary operators as unary; PyCQA#484 /
  PyCQA#485

1.7.0 (2016-01-12)
------------------

Changes:

* Reverted the fix in PyCQA#368, "options passed on command
  line are only ones accepted" feature. This has many unintended
  consequences in pep8 and flake8 and needs to be reworked when I have
  more time.
* Added support for Python 3.5. (Issue PyCQA#420 &
  PyCQA#459)
* Added support for multi-line config_file option parsing. (Issue
  PyCQA#429)
* Improved parameter parsing. (Issues PyCQA#420 &
  PyCQA#456)

Bugs:

* Fixed BytesWarning on Python 3. (Issue PyCQA#459)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants