Skip to content

Conversation

jsenin
Copy link

@jsenin jsenin commented Dec 18, 2018

I merged the @DanAlbert branch from #385 to solve conflicts and pass the checks
https://github.com/DanAlbert/python-language-server/commits/pylint-support

DanAlbert and others added 15 commits July 10, 2018 14:21
This also adds an `is_saved` argument to the pyls_lint hookspec, since
pylint doesn't expose an API for operating on in-memory contents, only
files.
In some situations, pyls can call Document.sys_path _very_ frequently. That
method calls jedi.api.environment.get_default_environment(), which can call
jedi.api.environment.find_system_pythons(). On systems with pyenv and many
python versions installed, this can be expensive, as jedi._compatibilty.which
returns a shim path for python major version. Each found version spawns a
subprocess to check the specific version of the python found at the path (via
creation of a jedi Environment). However, if it's only found the pyenv shim,
when a subprocess is spawned, the shim fails to find the version, and pyenv
spends significant time looking for the requested command in other installed
pythons.

Calling .get_cached_default_environment insures jedi goes through the above
process no more than once per 10 minutes per instance of pyls.

Even on systems without pyenv, calling get_default_environment() directly
results in at least one subprocess invocation, and a new jedi Environment object
for each invocation. As Document.sys_path can be called as often as once per
keypress (depending on the client, though this seems to be the case for
lsp-mode) reducing work on that path provides noticeable improvement in
performance.
* Fix parent process watcher thread

* timer
Information in README is misleading listing `pydocstyle` among providers that will be enabled if found, as according to palantir#312 it is disabled by default.

The README is updated to explicitly state that pydocstyle is disabled by default and minimal configuration to enable it is provided.
@palantirtech
Copy link
Member

Thanks for your interest in palantir/python-language-server, @jsenin! Before we can accept your pull request, you need to sign our contributor license agreement - just visit https://cla.palantir.com/ and follow the instructions. Once you sign, I'll automatically update this pull request.

@gatesn
Copy link
Contributor

gatesn commented Feb 15, 2019

Closing in favour of #385

@gatesn gatesn closed this Feb 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants