X Tutup
The Wayback Machine - https://web.archive.org/web/20200615041209/https://github.com/microsoft/python-language-server
Skip to content
Microsoft Language Server for Python
C# Python
Branch: master
Clone or download

Latest commit

MikhailArkhipov Allow navigation to stubs (#1960)
* Remove stale reference

* Don't suppress LHS diagnostics on augmented assign

* Revert "Don't suppress LHS diagnostics on augmented assign"

This reverts commit 6109ac7.

* Escape [ and ]

* PR feedback

* Allow navigation to stubs

* Better handle stubs for compiled modules

* Fix typeshed path

* Partial undo

* Partial undo

* Undo accidental change
Latest commit 2aef1f8 May 1, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Add issue templates (#1524) Sep 6, 2019
build Try update signing Nov 19, 2019
src Allow navigation to stubs (#1960) May 1, 2020
.gitattributes Merge persistence work into master (#1482) Sep 16, 2019
.gitignore Build fix (#630) Feb 19, 2019
.sonarcloud.properties Added Sonar properties file to perform automated Sonar scans (#1613) Oct 1, 2019
CONTRIBUTING.md Update SDK version in contribution instructions Apr 24, 2020
Formatting.vssettings Contributing, license, etc Sep 5, 2018
LICENSE update year and corp name in license Oct 3, 2018
README.md Add positional-only parameters to parser, analysis, LS, etc (#1614) Oct 3, 2019
SECURITY.md Add SECURITY.md (#1864) Jan 8, 2020
TROUBLESHOOTING.md Turn off path watcher by default (#1841) Dec 16, 2019
Using_in_sublime_text.md Added instructions for using in SublimeText with the LSP plugin Oct 9, 2018
build.root Product source code Aug 30, 2018

README.md

Microsoft Python Language Server

Microsoft Python Language Server implements the Language Server Protocol.

Its primary clients are the Python extension for VS Code and Python Tools for Visual Studio.

Feel free to file issues or ask questions on our issue tracker, and we welcome code contributions.

Build/contributing instructions

See CONTRIBUTING.md

Troubleshooting and known issues

See TROUBLESHOOTING.md.

Linting options (diagnostics)

The language server implements diagnostics (or linting), which runs on user code. The following diagnostics are supported:

Code Description
inherit-non-class Attempted to inherit something that is not a class.
too-many-function-arguments Too many arguments have been provided to a function call.
too-many-positional-arguments-before-star Too many arguments have been provided before a starred argument.
no-cls-argument First parameter in a class method must be cls
no-method-argument Method has no arguments
no-self-argument First parameter in a method must be self
parameter-already-specified A argument with this name has already been specified.
parameter-missing A required positional argument is missing.
positional-argument-after-keyword A positional argument has been provided after a keyword argument.
positional-only-named A positional-only argument (3.8+) has been named in a function call.
return-in-init Encountered an explicit return in __init__ function.
typing-generic-arguments An error occurred while constructing Generic.
typing-newtype-arguments An error occurred while constructing NewType.
typing-typevar-arguments An error occurred while constructing TypeVar.
unknown-parameter-name The keyword argument name provided is unknown.
unresolved-import An import cannot be resolved, and may be missing.
undefined-variable A variable has been used that has not yet been defined.
variable-not-defined-globally A variable is not defined in the global scope.
variable-not-defined-nonlocal A variable is not defined in non-local scopes.

A full list can be seen in the source code.

Linting can be controlled via the user configuration. In VS Code, this is settings.json, but other clients would send this via workspace/didChangeConfiguration.

If python.linting.enabled is set to false in the user configuration, then no diagnostics will be collected other than syntax errors and unresolved imports.

To control the visibility and severity of the diagnotics, there are a number of lists that can be set in the user configuration which make use of each diagnostic's error code.

Setting Description
python.analysis.errors Diagnostics which should be shown as errors.
python.analysis.warnings Diagnostics which should be shown as warnings.
python.analysis.information Diagnostics which should be shown as informational.
python.analysis.disabled Diagnotics which should not be shown at all.

An example of a user configuration which sets these options:

{
    "python.analysis.errors": ["undefined-variable"],
    "python.analysis.warnings": ["unknown-parameter-name"],
    "python.analysis.information": ["unresolved-import"],
    "python.analysis.disabled": ["too-many-function-arguments", "parameter-missing"],
}

Linting can also be controlled on an invidual line basis with a generalized #noqa. Lines with #noqa will have their diagnostic output suppressed.

An example usage:

from python import language_server  # noqa will suppress the linting message for this line

Cache location

During analysis language server produces Python code from compiled modules and builtins which is similar to Python module stubs. It may also produce database files holding module analysis for faster retrieval later. Cache location is at

Windows

"%LOCALAPPDATA%\Microsoft\Python Language Server" (which is Environment.SpecialFolder.LocalApplicationData). Typically "C:\Users\\%USER_NAME%\AppData\Local\Microsoft\Python Language Server"

Linux

"$XDG_CACHE_HOME/Microsoft/Python Language Server", or if XDG_CACHE_HOME is not set, "$HOME/.cache/Microsoft/Python Language Server"

macOS

"$HOME/Library/Caches/Microsoft/Python Language Server"

You can’t perform that action at this time.
X Tutup