Open chthor opened 5 years ago
I'm being hit by this too, except in Emacs.
From the logs:
2019-07-26 17:44:36,577 UTC - DEBUG - pyls.plugins.pylint_lint - Calling pylint with '/Users/jml/src/myproject/somefolder/another/thingy.py -f json '
The results of this command change depending on which directory it runs in.
From /Users/jml: lots of errors, pylintrc not respected From /Users/jml/src/myproject/ (where my pylintrc lives): no errors, pylintrc respected From /Users/jml/src/myproject/somefolder/another/: lots of errors, same as /Users/jml
There's an args
setting that the pylint plugin takes (see https://github.com/palantir/python-language-server/blob/697ebb162804459587f05131fd1a42c45ebfbf05/pyls/plugins/pylint_lint.py#L144) but I haven't yet been able to figure out how to actually set it. Will update here if I do.
I guess you could make an argument that pylint (and other external processes) should be run from the project root as a matter of course, which would make this problem go away.
@jml In my case the problem was a missing __init__.py
in the subfolders in question, so they were not acting as proper Python packages. Adding __init__.py
resolved my issue. (Not sure if that's relevant to your problem?)
Ooh, that's a likely explanation. I haven't verified experimentally, but there are definitely directories missing __init__.py
files.
.pylintrc files aren't used for linting by pyls for the moment, the way you can configure pylint is by passing a list of arguments (the same arguments you would pass when using the pylint command line tool) like @jml said. In the vscode client you can update "pyls.plugins.pylint.args" to list your agruments in the vscode/package.json file.
Yeah pylintrc is not respected anywhere for me. This issue seems to me to be a feature request for that (though the title should be edited) unless there is already another open issue I missed.
@gatesn I think we should add support for pylint config files as it doesn't seem really obvious to pass config through "pyls.plugins.pylint.args".
Yep, agree. I don’t think it should be too hard either since we shell out to pylint - so we should be able to have it discover it’s own config instead of parsing it ourselves
@chthor the reason why it's not using the .pylintrc config in the subfolder is because pylint is ran under that exact subfolder which doesn't contain a .pylintrc. We should get this fixed by parsing the config file on startup and passing that config to every run of pylint as arguments.
UPDATE: pylint isn't ran under that subfolder, but the fix should still make pylint have the same behavour while linting all project files.
I have the following structure:
pylint is ok with both files:
I'm running Neovim with LanguageClient-Neovim.
The top-level
wtf.py
works as expected:But the subfolder version of
wtf.py
does not respect thepylintrc
. I get themissing-docstring
warning:Why does
pylintrc
not apply to the subfolder?