Leo's PR #4345 <https://github.com/leo-editor/leo-editor/pull/4345> revises 
Leo's source code to correct various flake8 and pyflakes complaints. The 
flake8 complaints are all valid. 


This post discusses *new and dubious *pyflakes complaints. Imo, these new 
pyflakes complaints are *wrong*. Imo, the pyflakes dev should take urgent 
action to correct this situation.


I plan to open a new pyflakes issue that explains why pyflakes should roll 
back the offending PR. Here is the first draft. Please review it carefully 
and suggest improvements.


QQQQQ


Urgent: please roll back pyflakes PR #825 
<https://github.com/PyCQA/pyflakes/pull/825>.


I am the author of Leo <https://leo-editor.github.io/leo-editor/>, a large 
Python app. I use tools such as mypy, flake8, and pylint routinely in my 
workflow. 


But pyflakes is my favorite. It catches 90% or more of my programming 
blunders. One of Leo's settings causes Leo to run pyflakes to check all 
newly changed files *every time they are written.* No other checking tool 
is fast enough to do such checks.


Alas, I must protest loudly against PR #825. As discussed below, this PR 
creates great problems for me.


This PR is a violation of your stated design principles 
<https://github.com/PyCQA/pyflakes?tab=readme-ov-file#design-principles>: 


"Pyflakes makes a simple promise: it will never complain about style, and it 
will try very, very hard to never emit false positives."


PR #825 does both. It complains about style and creates extremely annoying 
unwanted false positives. Please roll back this PR immediately. Let me 
explain:


PR #825* does* complain about style, namely flake8 "error" F824. This 
so-called error is (at best) a redundancy. At worst the error suggests 
eliminating a use hint for code maintainers.


Within flake8, it *doesn't matter* whether F824 is an error or a lint. Why? 
Because it's easy to suppress any flake8 check using #noqa, command-line 
arguments, or settings files such as setup.cfg.


But within pyflakes, there is (afaik) *no way* to disable any check. So 
according to your stated design principles, you *must not ever* issue a 
message unless it is (without doubt) a programming blunder. But redundant 
"global" or "nonlocal" statements are in no way blunders.


*The PR's consequences for Leo*


Leo's PR #4345 <https://github.com/leo-editor/leo-editor/pull/4345> removes 
the pyflakes messages by commenting out supposedly erroneous "global" 
statements. But this PR should not be necessary. All code changes might 
introduce errors, either immediately or (worse) at some much later date.


Furthermore, PR #4345 removes a useful code declaration. If that 
declaration goes away a later maintainer may introduce an assignment that 
will *then* make the "global" declaration necessary. Removing these 
supposedly "unnecessary" declarations is all pain and no gain.


Alas, without changing Leo's sources, it will be impossible to use pyflakes 
to perform a batch check of Leo's files without enduring unwanted pyflakes 
errors. 


*Summary*


PR #825:

- Makes it impossible to use pyflakes on Leo's code base as I would like.

- Creates extremely annoying warnings about valid Python code.

- Sets an unwise precedent of treating flake8 *warnings *as pyflakes 
*errors*.

  Please think more carefully about emulating flake8.


According to your stated design principles, pyflakes *must not ever* issue 
a message unless it is (without doubt) a programming blunder. 


With PR #825 in place, the only way to remove the warnings is to revise the 
"offending" code. This I am loath to do. Please roll back PR #825 as soon 
as possible.


Edward


QQQQQ


Yes, this first draft is strident, even after several revisions. I might 
tone it down further. All comments and suggestions are welcome.


I also plan to close Leo's PR #4345 
<https://github.com/leo-editor/leo-editor/pull/4345> in favor of a new PR 
that does not remove the *harmless* "global" statements. I refuse (or so I 
think now) to work around these new pyflakes warnings.


Edward

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/leo-editor/eb904413-c8f7-4efc-ab2f-e9fa0b665702n%40googlegroups.com.

Reply via email to