README.rst

Jedi - an awesome autocompletion/static analysis library for Python

If you have specific questions, please add an issue or ask onstackoverflowwith the labelpython-jedi.

Jedi is a static analysis tool for Python that can be used in IDEs/editors. Its
historic focus is autocompletion, but does static analysis for now as well.
Jedi is fast and is very well tested. It understands Python on a deeper level
than all other static analysis frameworks for Python.

Jedi has support for two different goto functions. It's possible to search for
related names and to list all names in a Python file and infer them. Jedi
understands docstrings and you can use Jedi autocompletion in your REPL as
well.

Jedi uses a very simple API to connect with IDE's. There's a reference
implementation as a VIM-Plugin,
which uses Jedi's autocompletion. We encourage you to use Jedi in your IDEs.
It's really easy.

API

Autocompletion / Goto / Pydoc

Please check the API for a good explanation. There are the following commands:

jedi.Script.goto_assignments

jedi.Script.completions

jedi.Script.usages

The returned objects are very powerful and really all you might need.

Autocompletion in your REPL (IPython, etc.)

It's possible to have Jedi autocompletion in REPL modes - example video.
This means that IPython and others are supported.

Static Analysis / Linter

To do all forms of static analysis, please try to use jedi.names. It will
return a list of names that you can use to infer types and so on.

Linting is another thing that is going to be part of Jedi. For now you can try
an alpha version python -m jedi linter. The API might change though and
it's still buggy. It's Jedi's goal to be smarter than classic linter and
understand AttributeError and other code issues.

Refactoring

Jedi's parser would support refactoring, but there's no API to use it right
now. If you're interested in helping out here, let me know. With the latest
parser changes, it should be very easy to actually make it work.