Jedi es una herramienta de análisis estático para Python que normalmente se usa en complementos de IDE/editores. Jedi se centra en la funcionalidad de autocompletado y de ir a. Otras características incluyen refactorización, búsqueda de código y búsqueda de referencias.
Jedi tiene una API sencilla con la que trabajar. Existe una implementación de referencia como VIM-Plugin. El autocompletado en su REPL también es posible, IPython lo usa de forma nativa y para CPython REPL puede instalarlo. Jedi está bien probado y los errores deberían ser raros.
Jedi actualmente se puede utilizar con los siguientes editores/proyectos:
¡y muchos más!
Hay algunos servidores de idiomas que utilizan Jedi:
Aquí hay algunas fotografías tomadas de jedi-vim:
Finalización para casi cualquier cosa:
Documentación:
Obtenga la última versión de github (la rama maestra siempre debe estar estable/funcionando).
Los documentos están disponibles en https://jedi.readthedocs.org/en/latest/. Las solicitudes de extracción con mejoras y/o correcciones son increíbles y bienvenidas. Jedi utiliza versiones semánticas.
Si desea mantenerse actualizado con los lanzamientos, suscríbase a esta lista de correo: https://groups.google.com/g/jedi-announce. Para suscribirse, simplemente puede enviar un correo electrónico vacío a [email protected]
.
Puede presentar problemas y preguntas en el rastreador de problemas <https://github.com/davidhalter/jedi/>. Alternativamente, también puedes preguntar en Stack Overflow con la etiqueta python-jedi
.
Consulte los documentos.
Las características de Jedi se enumeran aquí: Características.
Puede ejecutar Jedi en Python 3.6+, pero también debe comprender el código anterior a esas versiones. Además, deberías poder utilizar Virtualenvs muy bien.
Aquí se pueden encontrar consejos sobre cómo utilizar Jedi de manera eficiente.
Puede encontrar una documentación completa para la API aquí.
Existen los siguientes comandos:
jedi.Script.goto
jedi.Script.infer
jedi.Script.help
jedi.Script.complete
jedi.Script.get_references
jedi.Script.get_signatures
jedi.Script.get_context
Los objetos devueltos son muy poderosos y realmente son todo lo que necesitas.
Jedi es una dependencia de IPython. Por lo tanto, el autocompletado en IPython con Jedi es posible sin configuración adicional.
Aquí hay un vídeo de ejemplo de cómo puede verse la finalización de REPL. Para el shell python
, puede habilitar la finalización de tabulación en un REPL.
Para muchas formas de análisis estático, puede intentar utilizar jedi.Script(...).get_names
. Le devolverá una lista de nombres que luego podrá filtrar y trabajar con ellos. También hay una manera de enumerar los errores de sintaxis en un archivo: jedi.Script.get_syntax_errors
.
Jedi admite las siguientes refactorizaciones:
jedi.Script.inline
jedi.Script.rename
jedi.Script.extract_function
jedi.Script.extract_variable
Hay soporte para la búsqueda de módulos con jedi.Script.search
y la búsqueda de proyectos para jedi.Project.search
. La forma de buscar es proporcionando un nombre como foo
o usando una sintaxis de puntos como foo.bar
. Además, puede proporcionar el tipo de API como class foo.bar.Bar
. También existen las funciones jedi.Script.complete_search
y jedi.Project.complete_search
.
Hay una documentación de desarrollo bastante buena y extensa.
El conjunto de pruebas utiliza pytest
:
pip instalar pytest
Si desea probar sólo una versión específica de Python (por ejemplo, Python 3.8), es tan fácil como:
python3.8 -m pytest
Para obtener información más detallada, visite la documentación de prueba.
¡Muchas gracias a todos los contribuyentes!