PyCQA / pycodestyle

Simple Python style checker in one Python file

Home Page:https://pycodestyle.pycqa.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`indent-size` not considered when computing length of tab-indented lines.

Nuno-Mota opened this issue · comments

Hi.

It seems like the indent-size option is not considered for the computation of line-length (looking at the code appears to confirm my suspicion).
This means that there can be a significant number of false negatives for tab-indented lines.

This was tested for pycodestyle 2.10.0 and pycodestyle 2.11.0.

MWE:
All non-ignored test file's lines are longer than the maximum line length, when taking into account the indent-size.
However, only 2 of them are flagged as such.
Each tab counts only 1 space, instead of indent-size spaces.

tox.ini

[pycodestyle]
max-line-length = 5
indent-size = 4
show-source = true
ignore=E261, W191

Test file

if True: # noqa: E501
	# aa
	# aaa
	if True: # noqa: E501
		# a
		# aa

Pycodestyle's output

pycodestyle test.py
test.py:3:6: E501 line too long (6 > 5 characters)
	# aaa
	    ^
test.py:6:6: E501 line too long (6 > 5 characters)
		# aa
		   ^
✗ - status code 1

Looks like line length computation is still an unknown secret algorithm in 2024 because another tool doesn't get it right - especially it it claims be be a style checker ...

Any plans to get this issue triaged and worked on?

feel free to send a patch instead of snark

I believe I can provide a patch after I reading https://pycodestyle.pycqa.org/en/latest/developer.html#contribute

Let me do some tests on how to solve it efficiently, as it touches every byte.

@asottile I checked on available options to pycodestyle. It misses a tab-size parameter; only indent-size is available. Such a parameter is needed to implement the correct calculation if whitespace width.

Are you going to provide such a parameter, or is it up to me to add this with my PR?
(So solving the problem and adding new CLI options.)

--indent-size=n      set how many spaces make up an indent (default: 4)

Source: https://pycodestyle.pycqa.org/en/latest/intro.html#configuration

@Paebbels honestly you're attitude or the attitude you convey with your choice of language has biased me against any improvement here since 99% of people writing Python use spaces. If you want traction in this assume you're doing all the work and we'll do our best to review it, assuming you also improve your behavior. If you seem to think another option is necessary at it with a very detailed justification because I don't expect this should require what you are proposing (and thus neither Anthony nor I will be providing that for you)