Skip to main content

A language server for Jedi!

Project description

jedi-language-server

image-version image-license image-python-versions

A Language Server for the latest version(s) of Jedi.

Note: this tool is actively used by its primary author. He's happy to review pull requests / respond to issues you may discover.

Installation

From your command line (bash / zsh), run:

pip install -U jedi jedi-language-server

-U ensures that you're pulling the latest version from pypi.

Overview

jedi-language-server aims to support all of Jedi's capabilities and expose them through the Language Server Protocol. It currently supports the following Language Server requests:

These language server requests are not currently configurable by the user, but we expect to relax this constraint in a future release.

Usage

The following instructions show how to use jedi-language-server with your development tooling. The instructions assume you have already installed jedi-language-server.

Command line (bash / zsh)

At your terminal prompt:

jedi-language-server

jedi-language-server currently works only over IO. This may change in the future.

Neovim

Configure jedi-language-server with coc.nvim. For diagnostics, we recommend installing and using the latest version of coc-diagnostic with pylint.

~/.config/nvim/coc-settings.json:

"languageserver": {
  "jls": {
    "command": "jedi-language-server",
    "args": [],
    "filetypes": ["python"]
  }
},
"diagnostic-languageserver.filetypes": {
  "python": "pylint"
},
"diagnostic-languageserver.linters": {
  "pylint": {
    "sourceName": "pylint",
    "command": "pylint",
    "args": [
      "--output-format",
      "text",
      "--score",
      "no",
      "--msg-template",
      "'{line}:{column}:{category}:{msg} ({msg_id}:{symbol})'",
      "%file"
    ],
    "formatPattern": [
      "^(\\d+?):(\\d+?):([a-z]+?):(.*)$",
      {
        "line": 1,
        "column": 2,
        "security": 3,
        "message": 4
      }
    ],
    "securities": {
      "informational": "hint",
      "refactor": "info",
      "convention": "info",
      "warning": "warning",
      "error": "error",
      "fatal": "error"
    },
    "offsetColumn": 1,
    "formatLines": 1
  }
}

Local Development

To build and run this project from source:

Dependencies

Install the following tools manually:

Recommended

Get source code

Fork this repository and clone the fork to your development machine:

git clone https://github.com/<YOUR-USERNAME>/jedi-language-server
cd jedi-language-server

Set up development environment

make setup

Run tests

make test

Inspiration

Palantir's python-language-server inspired this project. Unlike python-language-server, jedi-language-server:

  • Uses pygls instead of creating its own low-level Language Server Protocol bindings
  • Supports one powerful 3rd party library: Jedi. By only supporting Jedi, we can focus on supporting all Jedi features without exposing ourselves to too many broken 3rd party dependencies (I'm looking at you, rope).
  • Is supremely simple because of its scope constraints. Leave complexity to the Jedi master. If the force is strong with you, please submit a PR!

Written by

Samuel Roeca samuel.roeca@gmail.com

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jedi-language-server-0.5.0.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jedi_language_server-0.5.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file jedi-language-server-0.5.0.tar.gz.

File metadata

  • Download URL: jedi-language-server-0.5.0.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/4.15.0-1079-oem

File hashes

Hashes for jedi-language-server-0.5.0.tar.gz
Algorithm Hash digest
SHA256 b85a7b1f3c1af3393ff2b195bba155510eac9db75d170dfaad1e07ae7f1834e1
MD5 a3598732d3817a034251d6a70c041d17
BLAKE2b-256 1ef8285c143f509db47719d32659dee832047b9f2b9cd8c9fdc49680bb1e692f

See more details on using hashes here.

File details

Details for the file jedi_language_server-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: jedi_language_server-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/4.15.0-1079-oem

File hashes

Hashes for jedi_language_server-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b1e0e9565f8f6970b8a482b164c67600e94bb7924ccfda0ed1c7c09d75a2a4c
MD5 7dd9e84da7f09837dd343c926e36d6be
BLAKE2b-256 bd6c3f31c8a7c45559a0228b49b7c5131f1219d5837e52efb67acc5361094301

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page