Skip to content

ValueError: column parameter (xxx) is not in a valid range (yyy-zzz) #35

Open
@williballenthin

Description

@williballenthin

Description

When linting a file that contains a specific statement split across multiple lines, flake8-encodings raises a ValueError.

Steps to Reproduce

linting the following file:

subprocess.run(
    "date"
).stdout.strip()

Actual result:

❯ flake8 scripts/repro.py
Traceback (most recent call last):
  File "/home/user/code-personal/capa/.direnv/python-3.11/bin/flake8", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/main/cli.py", line 23, in main
    app.run(argv)
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/main/application.py", line 198, in run
    self._run(argv)
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/main/application.py", line 187, in _run
    self.run_checks()
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/main/application.py", line 103, in run_checks
    self.file_checker_manager.run()
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/checker.py", line 236, in run
    self.run_serial()
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/checker.py", line 214, in run_serial
    self.results = [
                   ^
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/checker.py", line 219, in <listcomp>
    ).run_checks()
      ^^^^^^^^^^^^
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/checker.py", line 524, in run_checks
    self.run_ast_checks()
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8/checker.py", line 426, in run_ast_checks
    for (line_number, offset, text, _) in runner:
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8_encodings/__init__.py", line 363, in run
    class_visitor.first_visit(self._tree, self.filename)
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8_encodings/__init__.py", line 213, in first_visit
    self.visit(node)
  File "/nix/store/ss7212zavvshj2wv7s4sr8np68j3ij9d-devshell-dir/lib/python3.11/ast.py", line 410, in visit
    return visitor(node)
           ^^^^^^^^^^^^^
  File "/nix/store/ss7212zavvshj2wv7s4sr8np68j3ij9d-devshell-dir/lib/python3.11/ast.py", line 418, in generic_visit
    self.visit(item)
  File "/nix/store/ss7212zavvshj2wv7s4sr8np68j3ij9d-devshell-dir/lib/python3.11/ast.py", line 410, in visit
    return visitor(node)
           ^^^^^^^^^^^^^
  File "/nix/store/ss7212zavvshj2wv7s4sr8np68j3ij9d-devshell-dir/lib/python3.11/ast.py", line 420, in generic_visit
    self.visit(value)
  File "/nix/store/ss7212zavvshj2wv7s4sr8np68j3ij9d-devshell-dir/lib/python3.11/ast.py", line 410, in visit
    return visitor(node)
           ^^^^^^^^^^^^^
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8_encodings/__init__.py", line 319, in visit_Call
    inferred_types = get_inferred_types(self.jedi_script, node)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/flake8_encodings/__init__.py", line 433, in get_inferred_types
    for inferred_name in jedi_script.infer(node.lineno, node.func.col_offset + len('.'.join(attr_names[:-1]))):
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/code-personal/capa/.direnv/python-3.11/lib/python3.11/site-packages/jedi/api/helpers.py", line 484, in wrapper
    raise ValueError('`column` parameter (%d) is not in a valid range '
ValueError: `column` parameter (21) is not in a valid range (0-15) for line 1 ('subprocess.run(\n').

Expected result:

no stack trace.

Reproduces how often:

easily reproduced

Version

❯ python --version
Python 3.11.0

❯ pip freeze | grep flake8-encodings
flake8-encodings==0.5.0.post1

Installation source

pip

Other Additional Information:

the following script does not raise an exception, suggesting that perhaps the linter is relying on assumptions about some AST nodes being found on a single line:

subprocess.run("date").stdout.strip()

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingstale

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions