flake8 config file usage

I've just started using flake8. I'm using 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3, flake8-debugger: 1.3.2) CPython 2.7.1 on Darwin Config files don't seem to be being read in. I've tried defining it (config.cfg) using --config, putting it in ., putting it in everything up from ., and putting it in ~/.config/flake8. No matter what I try flake8 doesn't seem to be picking them up. Using --ignore works fine. Here's my config file: [flake8] max-line-length = 200 # E251 unexpected spaces around keyword / parameter equals # E711 comparison to None should be if cond is not None # E501 line too long (203 > 200 characters) # E303 too many blank lines (2) # E712 comparison to True should be 'if cond is not True:' or 'if not cond:' # E302 expected 2 blank lines, found 1 # E226 missing whitespace around arithmetic operator # W291 trailing whitespace # W293 blank line contains whitespace # W391 blank line at end of file # E111 indentation is not a multiple of four # E702 multiple statements on one line (semicolon) ignore = E251,E711,E501,E303,E712,E302,E226,W291,W293,W391,E111,E702,E265 Help please? -- Jason Killen jsnklln@gmail.com Pain is inevitable, misery is optional.

On Mon, Dec 29, 2014 at 1:57 PM, Jason Killen <jsnklln@gmail.com> wrote:
I've just started using flake8. I'm using 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3, flake8-debugger: 1.3.2) CPython 2.7.1 on Darwin
Config files don't seem to be being read in. I've tried defining it (config.cfg) using --config, putting it in ., putting it in everything up from ., and putting it in ~/.config/flake8. No matter what I try flake8 doesn't seem to be picking them up. Using --ignore works fine.
Here's my config file: [flake8] max-line-length = 200 # E251 unexpected spaces around keyword / parameter equals # E711 comparison to None should be if cond is not None # E501 line too long (203 > 200 characters) # E303 too many blank lines (2) # E712 comparison to True should be 'if cond is not True:' or 'if not cond:' # E302 expected 2 blank lines, found 1 # E226 missing whitespace around arithmetic operator # W291 trailing whitespace # W293 blank line contains whitespace # W391 blank line at end of file # E111 indentation is not a multiple of four # E702 multiple statements on one line (semicolon) ignore = E251,E711,E501,E303,E712,E302,E226,W291,W293,W391,E111,E702,E265
Help please?
Hey Jason, pep8 handles discovery and parsing of config files for flake8. Looking at what pep8 tries to find, your options are ~/.config/pep8, ./tox.ini, and ./setup.cfg. As for why using --config doesn't work, I haven't tried that but that would also be a bug found in pep8. I'll see if I can reproduce that though. Cheers, Ian flake8 maintainer

On Mon, Dec 29, 2014 at 3:08 PM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 1:57 PM, Jason Killen <jsnklln@gmail.com> wrote:
I've just started using flake8. I'm using 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3, flake8-debugger: 1.3.2) CPython 2.7.1 on Darwin
Config files don't seem to be being read in. I've tried defining it (config.cfg) using --config, putting it in ., putting it in everything up from ., and putting it in ~/.config/flake8. No matter what I try flake8 doesn't seem to be picking them up. Using --ignore works fine.
Here's my config file: [flake8] max-line-length = 200 # E251 unexpected spaces around keyword / parameter equals # E711 comparison to None should be if cond is not None # E501 line too long (203 > 200 characters) # E303 too many blank lines (2) # E712 comparison to True should be 'if cond is not True:' or 'if not cond:' # E302 expected 2 blank lines, found 1 # E226 missing whitespace around arithmetic operator # W291 trailing whitespace # W293 blank line contains whitespace # W391 blank line at end of file # E111 indentation is not a multiple of four # E702 multiple statements on one line (semicolon) ignore = E251,E711,E501,E303,E712,E302,E226,W291,W293,W391,E111,E702,E265
Help please?
Hey Jason,
pep8 handles discovery and parsing of config files for flake8. Looking at what pep8 tries to find, your options are ~/.config/pep8, ./tox.ini, and ./setup.cfg. As for why using --config doesn't work, I haven't tried that but that would also be a bug found in pep8. I'll see if I can reproduce that though.
Cheers, Ian flake8 maintainer
So I just did the following: $ mktmpenv $ pip install flake8 flake8-docstrings $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, pep257: 0.2.1, mccabe: 0.3) CPython 2.7.9 on Darwin $ cd ~/sandbox/github3.py I know my project has a lot of docstring (pep257) violations and that one of the common ones is D100 so I wrote [flake8] ignore = D100 In test.cfg and did $ flake8 | wc -l 881 $ flake8 --config test.cfg | wc -l 868 So I think that --config is working just fine. If I update test.cfg to [flake8] ignore = D100,D101,D102 $ flake8 --config test.cfg | wc -l 422 My final iteration of test.cfg is [flake8] max-line-length = 100 # Comment ignore = D100,D101,D102 And that also works just fine. Can you share the exact commands you're running? Perhaps this is some weird side-effect of flake8-debugger.

Thanks for you help. Couple of things: 1) The --help for flake8 says config files should go in flake8: --config=path user config file location (default: /Users/jkillen/.config/flake8) My reading of your first reply is that they should go in ~/.config/pep8. I don't care where they go it's just confusing. Also, I find the help text a little confusing, I'm not sure if I'm defining the directory to search for setup.cfg or tox.ini or an actual file itself. It looks like you're defining the actual file so I'll go with that. That's good because that's what I wanted in the first place. 2) Here are some more details, and weirdness, for the code I'm testing with, I've removed flake8-debugger: $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3) CPython 2.7.1 on Darwin The actual code: $ cat ex.py print("hello world") #comment if x == y: print("x") if j == None: print("It's None") My config file: $ cat config.cfg [flake8] ignore = E265,E111 Running with a specified config file, doesn't seem to ignore E265,E111: $ flake8 --config config.cfg ex.py ex.py:2:1: E265 block comment should start with '# ' ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:4:3: E111 indentation is not a multiple of four ex.py:6:4: F821 undefined name 'j' Running with --ignore, ignores E111,E265 but includes errors not seen before: $ flake8 --ignore=E111,E265 ex.py ex.py:1:21: W291 trailing whitespace ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:6:4: F821 undefined name 'j' ex.py:6:6: E711 comparison to None should be 'if cond is None:' I did step through flake8 looking for where it opened the config file and got completely lost a few lines in. I'm pretty new to python. Since you mention that's handled by pep8 I'll take another stab at it concentrating on the pep8 code. Thanks for your help. On Mon, Dec 29, 2014 at 4:27 PM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 3:08 PM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 1:57 PM, Jason Killen <jsnklln@gmail.com> wrote:
I've just started using flake8. I'm using 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3, flake8-debugger: 1.3.2) CPython 2.7.1 on Darwin
Config files don't seem to be being read in. I've tried defining it (config.cfg) using --config, putting it in ., putting it in everything up from ., and putting it in ~/.config/flake8. No matter what I try flake8 doesn't seem to be picking them up. Using --ignore works fine.
Here's my config file: [flake8] max-line-length = 200 # E251 unexpected spaces around keyword / parameter equals # E711 comparison to None should be if cond is not None # E501 line too long (203 > 200 characters) # E303 too many blank lines (2) # E712 comparison to True should be 'if cond is not True:' or 'if not cond:' # E302 expected 2 blank lines, found 1 # E226 missing whitespace around arithmetic operator # W291 trailing whitespace # W293 blank line contains whitespace # W391 blank line at end of file # E111 indentation is not a multiple of four # E702 multiple statements on one line (semicolon) ignore = E251,E711,E501,E303,E712,E302,E226,W291,W293,W391,E111,E702,E265
Help please?
Hey Jason,
pep8 handles discovery and parsing of config files for flake8. Looking at what pep8 tries to find, your options are ~/.config/pep8, ./tox.ini, and ./setup.cfg. As for why using --config doesn't work, I haven't tried that but that would also be a bug found in pep8. I'll see if I can reproduce that though.
Cheers, Ian flake8 maintainer
So I just did the following:
$ mktmpenv $ pip install flake8 flake8-docstrings $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, pep257: 0.2.1, mccabe: 0.3) CPython 2.7.9 on Darwin $ cd ~/sandbox/github3.py
I know my project has a lot of docstring (pep257) violations and that one of the common ones is D100 so I wrote
[flake8] ignore = D100
In test.cfg and did
$ flake8 | wc -l 881 $ flake8 --config test.cfg | wc -l 868
So I think that --config is working just fine.
If I update test.cfg to
[flake8] ignore = D100,D101,D102
$ flake8 --config test.cfg | wc -l 422
My final iteration of test.cfg is
[flake8] max-line-length = 100 # Comment ignore = D100,D101,D102
And that also works just fine.
Can you share the exact commands you're running? Perhaps this is some weird side-effect of flake8-debugger.
-- Jason Killen jsnklln@gmail.com Pain is inevitable, misery is optional.

I'm beginning to think this is a problem with the ConfigParser module on Python 2.7.1. Can you upgrade your system installation of Python? ~ mktmpenv New python executable in tmp-e6c7d5624589670b/bin/python2.7 Also creating executable in tmp-e6c7d5624589670b/bin/python Installing setuptools, pip...done. This is a temporary environment. It will be deleted when you run 'deactivate'. (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b vl ex.py (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b pip install flake8 Collecting flake8 Using cached flake8-2.2.5.tar.gz Collecting pyflakes>=0.8.1 (from flake8) Using cached pyflakes-0.8.1-py2.py3-none-any.whl Collecting pep8>=1.5.7 (from flake8) Using cached pep8-1.5.7-py2.py3-none-any.whl Collecting mccabe>=0.2.1 (from flake8) Using cached mccabe-0.3-py2.py3-none-any.whl Installing collected packages: mccabe, pep8, pyflakes, flake8 Running setup.py install for flake8 Installing flake8 script to ~/virtualenv/tmp-e6c7d5624589670b/bin Successfully installed flake8-2.2.5 mccabe-0.3 pep8-1.5.7 pyflakes-0.8.1 (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b vl config.cfg (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b flake8 --config config.cfg ex.py ex.py:1:21: W291 trailing whitespace ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:6:4: F821 undefined name 'j' ex.py:6:6: E711 comparison to None should be 'if cond is None:' (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3) CPython 2.7.9 on Darwin (output https://gist.github.com/sigmavirus24/bb5ff3b11de0d40bc7c2 in the event it's easier to read for some people) On Fri, Jan 2, 2015 at 9:41 AM, Jason Killen <jsnklln@gmail.com> wrote:
Thanks for you help. Couple of things: 1) The --help for flake8 says config files should go in flake8: --config=path user config file location (default: /Users/jkillen/.config/flake8) My reading of your first reply is that they should go in ~/.config/pep8. I don't care where they go it's just confusing. Also, I find the help text a little confusing, I'm not sure if I'm defining the directory to search for setup.cfg or tox.ini or an actual file itself. It looks like you're defining the actual file so I'll go with that. That's good because that's what I wanted in the first place.
2) Here are some more details, and weirdness, for the code I'm testing with, I've removed flake8-debugger: $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3) CPython 2.7.1 on Darwin
The actual code: $ cat ex.py print("hello world") #comment if x == y: print("x")
if j == None: print("It's None")
My config file: $ cat config.cfg [flake8] ignore = E265,E111
Running with a specified config file, doesn't seem to ignore E265,E111: $ flake8 --config config.cfg ex.py ex.py:2:1: E265 block comment should start with '# ' ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:4:3: E111 indentation is not a multiple of four ex.py:6:4: F821 undefined name 'j'
Running with --ignore, ignores E111,E265 but includes errors not seen before: $ flake8 --ignore=E111,E265 ex.py ex.py:1:21: W291 trailing whitespace ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:6:4: F821 undefined name 'j' ex.py:6:6: E711 comparison to None should be 'if cond is None:'
I did step through flake8 looking for where it opened the config file and got completely lost a few lines in. I'm pretty new to python. Since you mention that's handled by pep8 I'll take another stab at it concentrating on the pep8 code.
Thanks for your help.
On Mon, Dec 29, 2014 at 4:27 PM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 3:08 PM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 1:57 PM, Jason Killen <jsnklln@gmail.com> wrote:
I've just started using flake8. I'm using 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3, flake8-debugger: 1.3.2) CPython 2.7.1 on Darwin
Config files don't seem to be being read in. I've tried defining it (config.cfg) using --config, putting it in ., putting it in everything up from ., and putting it in ~/.config/flake8. No matter what I try flake8 doesn't seem to be picking them up. Using --ignore works fine.
Here's my config file: [flake8] max-line-length = 200 # E251 unexpected spaces around keyword / parameter equals # E711 comparison to None should be if cond is not None # E501 line too long (203 > 200 characters) # E303 too many blank lines (2) # E712 comparison to True should be 'if cond is not True:' or 'if not cond:' # E302 expected 2 blank lines, found 1 # E226 missing whitespace around arithmetic operator # W291 trailing whitespace # W293 blank line contains whitespace # W391 blank line at end of file # E111 indentation is not a multiple of four # E702 multiple statements on one line (semicolon) ignore = E251,E711,E501,E303,E712,E302,E226,W291,W293,W391,E111,E702,E265
Help please?
Hey Jason,
pep8 handles discovery and parsing of config files for flake8. Looking at what pep8 tries to find, your options are ~/.config/pep8, ./tox.ini, and ./setup.cfg. As for why using --config doesn't work, I haven't tried that but that would also be a bug found in pep8. I'll see if I can reproduce that though.
Cheers, Ian flake8 maintainer
So I just did the following:
$ mktmpenv $ pip install flake8 flake8-docstrings $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, pep257: 0.2.1, mccabe: 0.3) CPython 2.7.9 on Darwin $ cd ~/sandbox/github3.py
I know my project has a lot of docstring (pep257) violations and that one of the common ones is D100 so I wrote
[flake8] ignore = D100
In test.cfg and did
$ flake8 | wc -l 881 $ flake8 --config test.cfg | wc -l 868
So I think that --config is working just fine.
If I update test.cfg to
[flake8] ignore = D100,D101,D102
$ flake8 --config test.cfg | wc -l 422
My final iteration of test.cfg is
[flake8] max-line-length = 100 # Comment ignore = D100,D101,D102
And that also works just fine.
Can you share the exact commands you're running? Perhaps this is some weird side-effect of flake8-debugger.
-- Jason Killen jsnklln@gmail.com Pain is inevitable, misery is optional.

Thanks again Ian. I think I've tracked down the problem in the pep8 code. I realize you're not the pep8 developer but I could use a second set of eyes. If you don't mind can you verify that what I'm seeing is the same as what you have. In pep8.py in the fuction read_config near line 1852. I've got this: user_conf = options.config if user_conf and os.path.isfile(user_conf): if options.verbose: print('user configuration: %s' % user_conf) config.read(user_conf) local_dir = os.curdir parent = tail = args and os.path.abspath(os.path.commonprefix(args)) while tail: if config.read([os.path.join(parent, fn) for fn in PROJECT_CONFIG]): local_dir = parent if options.verbose: print('local configuration: in %s' % parent) break (parent, tail) = os.path.split(parent) What's happening here is it's reading my defined config file then over-reading it with files found further up the directory tree. I started playing with flake8 on a project level then took a left turn and started wanting to define config files on the command line, so I've got a setup.cfg a few directories up. I did some tests after adding an else after the if so pep8 only looks for files in the tree if the user defined file doesn't exist. That seems to be working much better. On Fri, Jan 2, 2015 at 10:55 AM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
I'm beginning to think this is a problem with the ConfigParser module on Python 2.7.1. Can you upgrade your system installation of Python?
~ mktmpenv New python executable in tmp-e6c7d5624589670b/bin/python2.7 Also creating executable in tmp-e6c7d5624589670b/bin/python Installing setuptools, pip...done. This is a temporary environment. It will be deleted when you run 'deactivate'. (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b vl ex.py (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b pip install flake8 Collecting flake8 Using cached flake8-2.2.5.tar.gz Collecting pyflakes>=0.8.1 (from flake8) Using cached pyflakes-0.8.1-py2.py3-none-any.whl Collecting pep8>=1.5.7 (from flake8) Using cached pep8-1.5.7-py2.py3-none-any.whl Collecting mccabe>=0.2.1 (from flake8) Using cached mccabe-0.3-py2.py3-none-any.whl Installing collected packages: mccabe, pep8, pyflakes, flake8
Running setup.py install for flake8 Installing flake8 script to ~/virtualenv/tmp-e6c7d5624589670b/bin Successfully installed flake8-2.2.5 mccabe-0.3 pep8-1.5.7 pyflakes-0.8.1 (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b vl config.cfg (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b flake8 --config config.cfg ex.py ex.py:1:21: W291 trailing whitespace ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:6:4: F821 undefined name 'j' ex.py:6:6: E711 comparison to None should be 'if cond is None:' (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3) CPython 2.7.9 on Darwin
(output https://gist.github.com/sigmavirus24/bb5ff3b11de0d40bc7c2 in the event it's easier to read for some people)
On Fri, Jan 2, 2015 at 9:41 AM, Jason Killen <jsnklln@gmail.com> wrote:
Thanks for you help. Couple of things: 1) The --help for flake8 says config files should go in flake8: --config=path user config file location (default: /Users/jkillen/.config/flake8) My reading of your first reply is that they should go in ~/.config/pep8. I don't care where they go it's just confusing. Also, I find the help text a little confusing, I'm not sure if I'm defining the directory to search for setup.cfg or tox.ini or an actual file itself. It looks like you're defining the actual file so I'll go with that. That's good because that's what I wanted in the first place.
2) Here are some more details, and weirdness, for the code I'm testing with, I've removed flake8-debugger: $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3) CPython 2.7.1 on Darwin
The actual code: $ cat ex.py print("hello world") #comment if x == y: print("x")
if j == None: print("It's None")
My config file: $ cat config.cfg [flake8] ignore = E265,E111
Running with a specified config file, doesn't seem to ignore E265,E111: $ flake8 --config config.cfg ex.py ex.py:2:1: E265 block comment should start with '# ' ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:4:3: E111 indentation is not a multiple of four ex.py:6:4: F821 undefined name 'j'
Running with --ignore, ignores E111,E265 but includes errors not seen before: $ flake8 --ignore=E111,E265 ex.py ex.py:1:21: W291 trailing whitespace ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:6:4: F821 undefined name 'j' ex.py:6:6: E711 comparison to None should be 'if cond is None:'
I did step through flake8 looking for where it opened the config file and got completely lost a few lines in. I'm pretty new to python. Since you mention that's handled by pep8 I'll take another stab at it concentrating on the pep8 code.
Thanks for your help.
On Mon, Dec 29, 2014 at 4:27 PM, Ian Cordasco < graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 3:08 PM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 1:57 PM, Jason Killen <jsnklln@gmail.com>
wrote:
I've just started using flake8. I'm using 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3, flake8-debugger: 1.3.2) CPython 2.7.1 on Darwin
Config files don't seem to be being read in. I've tried defining it (config.cfg) using --config, putting it in ., putting it in everything up from ., and putting it in ~/.config/flake8. No matter what I try flake8 doesn't seem to be picking them up. Using --ignore works fine.
Here's my config file: [flake8] max-line-length = 200 # E251 unexpected spaces around keyword / parameter equals # E711 comparison to None should be if cond is not None # E501 line too long (203 > 200 characters) # E303 too many blank lines (2) # E712 comparison to True should be 'if cond is not True:' or 'if not cond:' # E302 expected 2 blank lines, found 1 # E226 missing whitespace around arithmetic operator # W291 trailing whitespace # W293 blank line contains whitespace # W391 blank line at end of file # E111 indentation is not a multiple of four # E702 multiple statements on one line (semicolon) ignore = E251,E711,E501,E303,E712,E302,E226,W291,W293,W391,E111,E702,E265
Help please?
Hey Jason,
pep8 handles discovery and parsing of config files for flake8. Looking at what pep8 tries to find, your options are ~/.config/pep8, ./tox.ini, and ./setup.cfg. As for why using --config doesn't work, I haven't tried that but that would also be a bug found in pep8. I'll see if I can reproduce that though.
Cheers, Ian flake8 maintainer
So I just did the following:
$ mktmpenv $ pip install flake8 flake8-docstrings $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, pep257: 0.2.1, mccabe: 0.3) CPython 2.7.9 on Darwin $ cd ~/sandbox/github3.py
I know my project has a lot of docstring (pep257) violations and that one of the common ones is D100 so I wrote
[flake8] ignore = D100
In test.cfg and did
$ flake8 | wc -l 881 $ flake8 --config test.cfg | wc -l 868
So I think that --config is working just fine.
If I update test.cfg to
[flake8] ignore = D100,D101,D102
$ flake8 --config test.cfg | wc -l 422
My final iteration of test.cfg is
[flake8] max-line-length = 100 # Comment ignore = D100,D101,D102
And that also works just fine.
Can you share the exact commands you're running? Perhaps this is some weird side-effect of flake8-debugger.
-- Jason Killen jsnklln@gmail.com Pain is inevitable, misery is optional.
-- Jason Killen jsnklln@gmail.com Pain is inevitable, misery is optional.

On Thu, Jan 8, 2015 at 2:55 PM, Jason Killen <jsnklln@gmail.com> wrote:
Thanks again Ian. I think I've tracked down the problem in the pep8 code. I realize you're not the pep8 developer but I could use a second set of eyes. If you don't mind can you verify that what I'm seeing is the same as what you have. In pep8.py in the fuction read_config near line 1852. I've got this: user_conf = options.config if user_conf and os.path.isfile(user_conf): if options.verbose: print('user configuration: %s' % user_conf) config.read(user_conf)
local_dir = os.curdir parent = tail = args and os.path.abspath(os.path.commonprefix(args)) while tail: if config.read([os.path.join(parent, fn) for fn in PROJECT_CONFIG]): local_dir = parent if options.verbose: print('local configuration: in %s' % parent) break (parent, tail) = os.path.split(parent)
What's happening here is it's reading my defined config file then over-reading it with files found further up the directory tree. I started playing with flake8 on a project level then took a left turn and started wanting to define config files on the command line, so I've got a setup.cfg a few directories up. I did some tests after adding an else after the if so pep8 only looks for files in the tree if the user defined file doesn't exist. That seems to be working much better.
I saw you filed an issue and pull request against pep8. I'll respond there when I have a chance to look at them.
On Fri, Jan 2, 2015 at 10:55 AM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
I'm beginning to think this is a problem with the ConfigParser module on Python 2.7.1. Can you upgrade your system installation of Python?
~ mktmpenv New python executable in tmp-e6c7d5624589670b/bin/python2.7 Also creating executable in tmp-e6c7d5624589670b/bin/python Installing setuptools, pip...done. This is a temporary environment. It will be deleted when you run 'deactivate'. (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b vl ex.py (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b pip install flake8 Collecting flake8 Using cached flake8-2.2.5.tar.gz Collecting pyflakes>=0.8.1 (from flake8) Using cached pyflakes-0.8.1-py2.py3-none-any.whl Collecting pep8>=1.5.7 (from flake8) Using cached pep8-1.5.7-py2.py3-none-any.whl Collecting mccabe>=0.2.1 (from flake8) Using cached mccabe-0.3-py2.py3-none-any.whl Installing collected packages: mccabe, pep8, pyflakes, flake8
Running setup.py install for flake8 Installing flake8 script to ~/virtualenv/tmp-e6c7d5624589670b/bin Successfully installed flake8-2.2.5 mccabe-0.3 pep8-1.5.7 pyflakes-0.8.1 (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b vl config.cfg (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b flake8 --config config.cfg ex.py ex.py:1:21: W291 trailing whitespace ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:6:4: F821 undefined name 'j' ex.py:6:6: E711 comparison to None should be 'if cond is None:' (tmp-e6c7d5624589670b)~/virtualenv/tmp-e6c7d5624589670b flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3) CPython 2.7.9 on Darwin
(output https://gist.github.com/sigmavirus24/bb5ff3b11de0d40bc7c2 in the event it's easier to read for some people)
On Fri, Jan 2, 2015 at 9:41 AM, Jason Killen <jsnklln@gmail.com> wrote:
Thanks for you help. Couple of things: 1) The --help for flake8 says config files should go in flake8: --config=path user config file location (default: /Users/jkillen/.config/flake8) My reading of your first reply is that they should go in ~/.config/pep8. I don't care where they go it's just confusing. Also, I find the help text a little confusing, I'm not sure if I'm defining the directory to search for setup.cfg or tox.ini or an actual file itself. It looks like you're defining the actual file so I'll go with that. That's good because that's what I wanted in the first place.
2) Here are some more details, and weirdness, for the code I'm testing with, I've removed flake8-debugger: $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3) CPython 2.7.1 on Darwin
The actual code: $ cat ex.py print("hello world") #comment if x == y: print("x")
if j == None: print("It's None")
My config file: $ cat config.cfg [flake8] ignore = E265,E111
Running with a specified config file, doesn't seem to ignore E265,E111: $ flake8 --config config.cfg ex.py ex.py:2:1: E265 block comment should start with '# ' ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:4:3: E111 indentation is not a multiple of four ex.py:6:4: F821 undefined name 'j'
Running with --ignore, ignores E111,E265 but includes errors not seen before: $ flake8 --ignore=E111,E265 ex.py ex.py:1:21: W291 trailing whitespace ex.py:3:4: F821 undefined name 'x' ex.py:3:9: F821 undefined name 'y' ex.py:6:4: F821 undefined name 'j' ex.py:6:6: E711 comparison to None should be 'if cond is None:'
I did step through flake8 looking for where it opened the config file and got completely lost a few lines in. I'm pretty new to python. Since you mention that's handled by pep8 I'll take another stab at it concentrating on the pep8 code.
Thanks for your help.
On Mon, Dec 29, 2014 at 4:27 PM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 3:08 PM, Ian Cordasco <graffatcolmingov@gmail.com> wrote:
On Mon, Dec 29, 2014 at 1:57 PM, Jason Killen <jsnklln@gmail.com> wrote:
I've just started using flake8. I'm using 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, mccabe: 0.3, flake8-debugger: 1.3.2) CPython 2.7.1 on Darwin
Config files don't seem to be being read in. I've tried defining it (config.cfg) using --config, putting it in ., putting it in everything up from ., and putting it in ~/.config/flake8. No matter what I try flake8 doesn't seem to be picking them up. Using --ignore works fine.
Here's my config file: [flake8] max-line-length = 200 # E251 unexpected spaces around keyword / parameter equals # E711 comparison to None should be if cond is not None # E501 line too long (203 > 200 characters) # E303 too many blank lines (2) # E712 comparison to True should be 'if cond is not True:' or 'if not cond:' # E302 expected 2 blank lines, found 1 # E226 missing whitespace around arithmetic operator # W291 trailing whitespace # W293 blank line contains whitespace # W391 blank line at end of file # E111 indentation is not a multiple of four # E702 multiple statements on one line (semicolon) ignore = E251,E711,E501,E303,E712,E302,E226,W291,W293,W391,E111,E702,E265
Help please?
Hey Jason,
pep8 handles discovery and parsing of config files for flake8. Looking at what pep8 tries to find, your options are ~/.config/pep8, ./tox.ini, and ./setup.cfg. As for why using --config doesn't work, I haven't tried that but that would also be a bug found in pep8. I'll see if I can reproduce that though.
Cheers, Ian flake8 maintainer
So I just did the following:
$ mktmpenv $ pip install flake8 flake8-docstrings $ flake8 --version 2.2.5 (pep8: 1.5.7, pyflakes: 0.8.1, pep257: 0.2.1, mccabe: 0.3) CPython 2.7.9 on Darwin $ cd ~/sandbox/github3.py
I know my project has a lot of docstring (pep257) violations and that one of the common ones is D100 so I wrote
[flake8] ignore = D100
In test.cfg and did
$ flake8 | wc -l 881 $ flake8 --config test.cfg | wc -l 868
So I think that --config is working just fine.
If I update test.cfg to
[flake8] ignore = D100,D101,D102
$ flake8 --config test.cfg | wc -l 422
My final iteration of test.cfg is
[flake8] max-line-length = 100 # Comment ignore = D100,D101,D102
And that also works just fine.
Can you share the exact commands you're running? Perhaps this is some weird side-effect of flake8-debugger.
-- Jason Killen jsnklln@gmail.com Pain is inevitable, misery is optional.
-- Jason Killen jsnklln@gmail.com Pain is inevitable, misery is optional.
participants (2)
-
Ian Cordasco
-
Jason Killen