/python-language-server

Microsoft Language Server for Python

Primary LanguageC#Apache License 2.0Apache-2.0

Microsoft Python Language Server

Microsoft Python Language Server implements Language Server Protocol.

Primary clients are Python Extension to VS Code and Python Tools for Visual Studio.

Building Language Server

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

Linting options (diagnostics)

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

Code Description
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.
positional-argument-after-keyword A positional argument has been provided after a keyword argument.
unknown-parameter-name The keyword argument name provided is unknown.
parameter-already-specified A argument with this name has already been specified.
parameter-missing A required positional argument is missing.
unresolved-import An import cannot be resolved, and may be missing.
undefined-variable A variable has used that has not yet been defined.

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.info Diagnostics which should be shown as informational.
python.analysis.errors 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.info": ["unresolved-import"],
    "python.analysis.disabled": ["too-many-function-arguments", "parameter-missing"],
}