Inconsistent exclude behaviour
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 3.8k
- Forks
- 356
- PR merge metrics
- No merged PRs in 30d
Description
In GitLab by @mskrajnowski on Dec 13, 2017, 05:53
Please describe how you installed Flake8
# in a virtualenv
$ pip install flake8
Please provide the exact, unmodified output of flake8 --bug-report
{
"dependencies": [
{
"dependency": "setuptools",
"version": "34.2.0"
}
],
"platform": {
"python_implementation": "CPython",
"python_version": "2.7.12",
"system": "Linux"
},
"plugins": [
{
"is_local": false,
"plugin": "mccabe",
"version": "0.6.1"
},
{
"is_local": false,
"plugin": "pycodestyle",
"version": "2.3.1"
},
{
"is_local": false,
"plugin": "pyflakes",
"version": "1.6.0"
},
{
"is_local": false,
"plugin": "unicode-string-literal",
"version": "1.1"
}
],
"version": "3.5.0"
}
Please describe the problem or feature
Explicitly specified modules are not always checked, depending on what exclude is set:
- if the module is within an excluded directory it will be checked
- if the module filename is excluded it will not be checked
I would expect flake8 to either:
- always check files that are explicitly specified
- always ignore files that are excluded and/or in an excluded directory
If this is a bug report, please explain with examples (and example code) what you expected to happen and what actually happened.
-
Prepare a simple project for testing
$ mkdir -p test-flake8-exclude/test $ cd test-flake8-exclude $ echo "import os" > test/module.py -
Try without exclude
$ flake8 . && echo OK ./test/module.py:1:1: F401 'os' imported but unused $ flake8 test/module.py && echo OK test/module.py:1:1: F401 'os' imported but unused -
Try excluding the directory
$ echo "[flake8]" > .flake8 $ echo "exclude = test" >> .flake8 $ flake8 . && echo OK OK $ flake8 test/module.py && echo OK test/module.py:1:1: F401 'os' imported but unused -
Try excluding the module
$ echo "[flake8]" > .flake8 $ echo "exclude = module.py" >> .flake8 $ flake8 . && echo OK OK $ flake8 test/module.py && echo OK OK
I'd expect results in 3. and 4. to be the same.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the three command-line cases from the issue using a virtualenv, test/module.py, and .flake8 with directory and filename exclusions. Compare explicit-file checks with recursive checks and trace the exclude handling from the flake8 command entry point. Done means the behavior is consistent for explicitly specified files and recursively discovered files, with tests covering both exclusion forms.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100