On Wed, Jan 12, 2022 at 9:33 AM Xavier Morel via code-quality <code-quality@python.org> wrote:
Hello,

Sorry for the bother but I had a question about balancing personal and
project uses of flake8: on a project we're trying to progressively
introduce flake8 (so enabling a subset of all checks on a subset of all
files).

We tried adding a config doing via "select" and "ignore" in the existing
setup.cfg, however this turned out to break a lot of people's linting,
as their editor simply ran flake8 in the default configuration and they
used that for their contributions (even though it was not checked
project-wide).

Looking further into this, it looks like recent versions of flake8 have
"extend-ignore" and "extend-select" to avoid breaking things locally,
however there are a few issues I don't know how to fix, or whose
semantics is not clear:

- according to the documentation, CLI values have the highest priority,
   but how does that work with select versus extend-select? Is `--select`
   used as the baseline then `extend-select` from the configuration files
   gets added to that?

No this means that what you specify on the CLI will override whatever is in the configuration file. You can specify `--extend-select` on the CLI as well. Think of it like this:

There's a default list of ignores and select so you have some code that looks vaguely like:

select = ["E", "F", "W", "C"]
ignore = [...]

Then when you specify extend-select we do

select.append(extend_select)

Whereas if you use select in your config file we're doing

select = user_specified_select  # cli or config

So if you have extend-select in your config, and then specify --select on the CLI, we'll still follow that algorithm.
 
- is `--select ''` the proper way to deselect everything?

As in you only want to report the things you've selected? Yes.
 
- is there a way to make exclusions error-specific, or is an other
   workaround necessary to add large sections of the project to
   exclusions for the CI, but not prevent linting for people?

I don't know what you mean. I'm going to take a guess though,

You want to ignore errors from specific files? There's per-file-ignores you can specify in your config (or on the CLI) to do just that. That will affect everyone though if you put it in the config, so changing how you run flake8 for CI would mean needing to specify that.

Also, it's worth thinking about the fact that you can tell Flake8 which config file to read, so you _could_ tell it to read a different file for CI
 

Regards,

Xavier
_______________________________________________
code-quality mailing list -- code-quality@python.org
To unsubscribe send an email to code-quality-leave@python.org
https://mail.python.org/mailman3/lists/code-quality.python.org/
Member address: graffatcolmingov@gmail.com