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-language-server

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

Alternatively, consider using pipx to keep jedi-language-server isolated from your other Python dependencies.

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:

Editor Setup

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

Neovim

Use coc.nvim with coc-jedi.

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.

Configuration

jedi-language-server supports top-level configuration items in coc-settings.json (or your editor-equivalent configuration file). The following is a snippet of coc-settings.json with defaults:

{
  "jedi.enabled": true,
  "jedi.completion.triggerCharacters": [".", "'", "\""],
  "jedi.signatureHelp.triggerCharacters": ["(", ",", ")"],
  "jedi.diagnostics.enabled": true,
  "jedi.diagnostics.didOpen": true,
  "jedi.diagnostics.didChange": true,
  "jedi.diagnostics.didSave": true
}

jedi.enabled

Enables (or disables) all jedi-language-server features (other than initialization)

  • type: boolean
  • default: true

jedi.completion.triggerCharacters

Defines characters that trigger completion automatically when typed

  • type: array<string>
  • default: [".", "'", "\""]

jedi.signatureHelp.triggerCharacters

Defines characters that trigger signature help automatically when typed

  • type: array<string>
  • default: ["(", ",", ")"]

jedi.diagnostics.enabled

Enables (or disables) diagnostics provided by Jedi

  • type: boolean
  • default: true

jedi.diagnostics.didOpen

When diagnostics are enabled, run on document open

  • type: boolean
  • default: true

jedi.diagnostics.didChange

When diagnostics are enabled, run on in-memory document change (eg, while you're editing, without needing to save to disk)

  • type: boolean
  • default: true

jedi.diagnostics.didSave

When diagnostics are enabled, run on document save (to disk)

  • type: boolean
  • default: true

Additional Diagnostics

jedi-langugage-server provides diagnostics about syntax errors, powered by Jedi. If you would like additional diagnostics, we suggest using the powerful diagnostic-language-server.

If using Neovim/coc, this can easily be done with coc-diagnostic. Configure with pylint in your coc-settings.json:

"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.11.0.tar.gz (14.5 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.11.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for jedi-language-server-0.11.0.tar.gz
Algorithm Hash digest
SHA256 7b54b839f56f2fa927abe9bf7155f8484b72d106ecd243f542327d58ec423ccc
MD5 af6e36005be336eac516bb9d7899b58d
BLAKE2b-256 b67336eb5e0eb312fba0f9cab9822460903f4b3fbd607f7e081b8df2468b99fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jedi_language_server-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a8ce393bdcae9b139a21e4f9e79a7807c175e0d11fbcf7fe1cae7c0d50044296
MD5 2ffbec7b43e500f1cab1665b18821711
BLAKE2b-256 535c9be8688051fda23419e43931a0ff3d1a97b4cf378b7ee0cc7c78e864a33e

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