Skip to content

WPS000 on several code fragments #2127

@GirZ0n

Description

@GirZ0n

What's wrong

If I run WPS on such code fragments, then the error WPS000 appears, although the code is correct.

Fragment №1:

number = int(input())
if number == 1:
    print("1")
else:
    if number == 2: print("2")

Output №1:

Traceback (most recent call last):
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/checker.py", line 154, in run
    visitor.run()
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/base.py", line 285, in run
    self.visit(token)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/base.py", line 279, in visit
    method(token)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/tokenize/conditions.py", line 56, in visit_name
    self._check_implicit_elif(token)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/tokenize/conditions.py", line 135, in _check_implicit_elif
    self._check_complex_else(next_tokens, next_token, index)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/tokenize/conditions.py", line 110, in _check_complex_else
    complex_else = self._if_has_code_below(tokens[index + 1:])
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/tokenize/conditions.py", line 89, in _if_has_code_below
    while remaining_tokens[index - 1].exact_type != tokenize.INDENT:
IndexError: list index out of range

../df_test.py:0:1: WPS000 Internal error happened, see log. Please, take some time to report it
../df_test.py:1:1: D100 Missing docstring in public module
../df_test.py:1:14: WPS421 Found wrong function call: input
../df_test.py:3:5: WPS421 Found wrong function call: print
../df_test.py:3:11: Q000 Remove bad quotes
../df_test.py:5:19: E701 multiple statements on one line (colon)
../df_test.py:5:21: WPS421 Found wrong function call: print
../df_test.py:5:27: Q000 Remove bad quotes

Fragment №2:

def is_prime(number: int):
    for i in range(2, number):
        if number % i == 0:
            return False
    else:
        if number != 1:
            return True
    return False

Output №2:

Traceback (most recent call last):
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/checker.py", line 154, in run
    visitor.run()
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/base.py", line 191, in run
    self.visit(self.tree)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/base.py", line 186, in visit
    return route_visit(self, tree)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/compat/routing.py", line 36, in route_visit
    return getattr(
  File "/usr/lib/python3.8/ast.py", line 379, in generic_visit
    self.visit(item)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/base.py", line 186, in visit
    return route_visit(self, tree)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/compat/routing.py", line 36, in route_visit
    return getattr(
  File "/usr/lib/python3.8/ast.py", line 379, in generic_visit
    self.visit(item)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/base.py", line 186, in visit
    return route_visit(self, tree)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/compat/routing.py", line 36, in route_visit
    return getattr(
  File "/usr/lib/python3.8/ast.py", line 379, in generic_visit
    self.visit(item)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/base.py", line 186, in visit
    return route_visit(self, tree)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/compat/routing.py", line 36, in route_visit
    return getattr(
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/ast/conditions.py", line 77, in visit_any_if
    self._check_simplifiable_returning_if(node)
  File "/home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/wemake_python_styleguide/visitors/ast/conditions.py", line 115, in _check_simplifiable_returning_if
    next_index_in_parent = body.index(node) + 1
ValueError: <_ast.If object at 0x7fa0e1305f40> is not in list

../df_test.py:0:1: WPS000 Internal error happened, see log. Please, take some time to report it
../df_test.py:1:1: D100 Missing docstring in public module
../df_test.py:1:1: D103 Missing docstring in public function
../df_test.py:2:5: WPS500 Found `else` in a loop without `break`
../df_test.py:2:5: WPS503 Found useless returning `else` statement
../df_test.py:2:9: WPS111 Found too short name: i < 2

I also checked this problem occurs on version 0.15.3 and in wps-light-0.15.2.

How it should be

I expect there should be no WPS000 error on these fragments. 🙂

Flake8 version and plugins

{
  "dependencies": [],
  "platform": {
    "python_implementation": "CPython",
    "python_version": "3.8.10",
    "system": "Linux"
  },
  "plugins": [
    {
      "is_local": false,
      "plugin": "flake8-bandit",
      "version": "2.1.2"
    },
    {
      "is_local": false,
      "plugin": "flake8-broken-line",
      "version": "0.3.0"
    },
    {
      "is_local": false,
      "plugin": "flake8-bugbear",
      "version": "20.11.1"
    },
    {
      "is_local": false,
      "plugin": "flake8-comprehensions",
      "version": "3.5.0"
    },
    {
      "is_local": false,
      "plugin": "flake8-darglint",
      "version": "1.8.0"
    },
    {
      "is_local": false,
      "plugin": "flake8-debugger",
      "version": "4.0.0"
    },
    {
      "is_local": false,
      "plugin": "flake8-docstrings",
      "version": "1.6.0, pydocstyle: 6.1.1"
    },
    {
      "is_local": false,
      "plugin": "flake8-eradicate",
      "version": "1.1.0"
    },
    {
      "is_local": false,
      "plugin": "flake8-string-format",
      "version": "0.3.0"
    },
    {
      "is_local": false,
      "plugin": "flake8_commas",
      "version": "2.0.0"
    },
    {
      "is_local": false,
      "plugin": "flake8_isort",
      "version": "4.0.0"
    },
    {
      "is_local": false,
      "plugin": "flake8_quotes",
      "version": "3.2.0"
    },
    {
      "is_local": false,
      "plugin": "mccabe",
      "version": "0.6.1"
    },
    {
      "is_local": false,
      "plugin": "naming",
      "version": "0.11.1"
    },
    {
      "is_local": false,
      "plugin": "pycodestyle",
      "version": "2.7.0"
    },
    {
      "is_local": false,
      "plugin": "pyflakes",
      "version": "2.3.1"
    },
    {
      "is_local": false,
      "plugin": "rst-docstrings",
      "version": "0.0.14"
    },
    {
      "is_local": false,
      "plugin": "wemake_python_styleguide",
      "version": "0.15.2"
    }
  ],
  "version": "3.9.2"
}

pip information

pip 20.0.2 from /home/ilya/Desktop/venv-wps-15.2/lib/python3.8/site-packages/pip (python 3.8)
astor==0.8.1
attrs==21.2.0
bandit==1.7.0
darglint==1.8.0
docutils==0.17.1
eradicate==2.0.0
flake8==3.9.2
flake8-bandit==2.1.2
flake8-broken-line==0.3.0
flake8-bugbear==20.11.1
flake8-commas==2.0.0
flake8-comprehensions==3.5.0
flake8-debugger==4.0.0
flake8-docstrings==1.6.0
flake8-eradicate==1.1.0
flake8-isort==4.0.0
flake8-polyfill==1.0.2
flake8-quotes==3.2.0
flake8-rst-docstrings==0.0.14
flake8-string-format==0.3.0
gitdb==4.0.7
GitPython==3.1.18
isort==5.9.3
mccabe==0.6.1
pbr==5.6.0
pep8-naming==0.11.1
pycodestyle==2.7.0
pydocstyle==6.1.1
pyflakes==2.3.1
Pygments==2.9.0
PyYAML==5.4.1
restructuredtext-lint==1.3.2
six==1.16.0
smmap==4.0.0
snowballstemmer==2.1.0
stevedore==3.3.0
testfixtures==6.18.0
typing-extensions==3.10.0.0
wemake-python-styleguide==0.15.2

OS information

NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggood first issueEntrypoint to the projecthelp wantedExtra attention is neededlevel:starterGood for newcomers

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions