anakin-language-server
Yet another Jedi Python language server
Requirements
- Python >= 3.6
- pygls >= 1.3, <1.4
- Jedi >= 0.19
- pyflakes ~= 2.2
- pycodestyle ~= 2.5
- yapf ~=0.30
Optional requirements
- mypy
Implemented features
textDocument/completiontextDocument/hovertextDocument/signatureHelptextDocument/definitiontextDocument/referencestextDocument/publishDiagnosticstextDocument/documentSymboltextDocument/codeAction(Inline variable)textDocument/formattingtextDocument/rangeFormattingtextDocument/renametextDocument/documentHighlight
Initialization option
venv- path to virtualenv. This option will be passed to Jedi's create_environment.
Also one can set VIRTUAL_ENV or CONDA_PREFIX before running anakinls so Jedi will find proper environment. See get_default_environment.
Diagnostics
Diagnostics are published on document open and save.
Diagnostics providers:
-
Jedi
See get_syntax_errors.
-
pyflakes
-
pycodestyle
Server restart is needed after changing one of the configuration files.
-
mypy
Install
mypyin the same environment asanakinlsand setmypy_enabledconfiguration option.
Configuration options
Configuration options must be passed under anakinls key in workspace/didChangeConfiguration notification.
Available options:
| Option | Description | Default |
|---|---|---|
help_on_hover |
Use help instead of infer for textDocument/hover. |
True |
completion_snippet_first |
Tweak sortText property so snippet completion appear before plain completion. |
False |
completion_fuzzy |
Value of the fuzzy parameter for complete. |
False |
diagnostic_on_open |
Publish diagnostics on textDocument/didOpen |
True |
diagnostic_on_change |
Publish diagnostics on textDocument/didChange |
False |
diagnostic_on_save |
Publish diagnostics on textDocument/didSave |
True |
pyflakes_errors |
Diagnostic severity will be set to Error if Pyflakes message class name is in this list. See Pyflakes messages. |
['UndefinedName'] |
pycodestyle_config |
In addition to project and user level config, specify pycodestyle config file. Same as --config option for pycodestyle. |
None |
mypy_enabled |
Use mypy to provide diagnostics. |
False |
yapf_style_config |
Either a style name or a path to a file that contains formatting style settings. | 'pep8' |
jedi_settings |
Global Jedi settings. E.g. set it to {"case_insensitive_completion": False} to turn off case insensitive completion |
{} |
Configuration example
Here is eglot configuration:
(defvar my/lsp-venv nil
"Name of virtualenv.
Set it in project's dir-locals file.")
(defclass my/eglot-anakinls (eglot-lsp-server) ()
:documentation
"Own eglot server class.")
(cl-defmethod eglot-initialization-options ((_server my/eglot-anakinls))
"Pass initialization param to anakinls."
`(:venv ,(when my/lsp-venv
(expand-file-name
(concat "~/.virtualenvs/" my/lsp-venv)))))
;; Add this server to eglot programs to handle python-mode and run `anakinls'
(add-to-list 'eglot-server-programs
'(python-mode my/eglot-anakinls "anakinls"))
;; Also treat UnusedVariable as error
(setq-default eglot-workspace-configuration
'((:anakinls :pyflakes_errors ["UndefinedName" "UnusedVariable"])))
Installation
pip install anakin-language-server
Development
pip install pre-commit
pre-commit install
Metadata
Release files for anakin-language-server 1.23
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| anakin_language_server-1.23.tar.gz | 51.4 kB | Without provenance | Details for anakin_language_server-1.23.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| anakin_language_server-1.23-py3-none-any.whl | Python 3 | none | any | Details for anakin_language_server-1.23-py3-none-any.whl |
Total release size: 88.9 kB
Release files / anakin_language_server-1.23.tar.gz
| Download URL | anakin_language_server-1.23.tar.gz |
|---|---|
| Size | 51.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0b7058dc7c237861f79a4e9a273a3a4f27f3fa2e1bfbb95f95dcb1c4dc5e79c2
|
|
BLAKE2b-256 checksum How to use checksums |
1bb0e0d1b302f19bd2acf178df3c0582f3bdbc27837e7ca8aa7b83a9723edbcb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / anakin_language_server-1.23-py3-none-any.whl
| Download URL | anakin_language_server-1.23-py3-none-any.whl |
|---|---|
| Size | 37.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
86b9d0f62f34295371dd0c8c2f416611fdb3a9f14adbbc623dab28f6570a5675
|
|
BLAKE2b-256 checksum How to use checksums |
ae4d97d5f1e2f5976ef2e1b8c156d717ac97fd1415d9df54d618c88730014a5c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for anakin-language-server 1.23
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.