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

Identify binary operators used as unary operators #485

Merged
merged 1 commit into from
Feb 25, 2016

Conversation

sigmavirus24
Copy link
Member

Previously we handled the case where binary operators were being used
as unary operators except in the case where they followed another
binary operator, e.g.,

foo = (1 +
       -10 *
       2 /
       -5)

This change updates the check for W503 to track the previous
non-whitespace token type and token text to check if it is in fact also
a binary operator (because you should never have two binary operators in
a row).

This does not handle invalid syntax, e.g.,

foo = (bar /
       /baz)

But the false-positive generated for other cases was more harmful than
not catching what will instead be caught by the interpreter.

Closes gh-484

Previously we handled the case where binary operators were being used
as unary operators except in the case where they followed another
binary operator, e.g.,

    foo = (1 +
           -10 *
           2 /
           -5)

This change updates the check for W503 to track the previous
non-whitespace token type and token text to check if it is in fact also
a binary operator (because you should never have two binary operators in
a row).

This does not handle invalid syntax, e.g.,

    foo = (bar /
           /baz)

But the false-positive generated for other cases was more harmful than
not catching what will instead be caught by the interpreter.

Closes PyCQAgh-484
@rkern
Copy link

rkern commented Feb 24, 2016

Works for me! Thanks!

IanLee1521 added a commit that referenced this pull request Feb 25, 2016
Identify binary operators used as unary operators
@IanLee1521 IanLee1521 merged commit c8e0911 into PyCQA:master Feb 25, 2016
@IanLee1521
Copy link
Member

Thanks @sigmavirus24 + @rkern !

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