
pylyzer es un analizador de código estático / servidor de lenguaje para Python, escrito en Rust.
pip install pylyzercargo install pylyzer --lockedgit clone https://github.com/mtshiba/pylyzer.git
cargo install --path . --locked Asegúrese de que cargo / rustc esté actualizado, ya que Pylyzer puede escribirse con las últimas características del lenguaje (estable).
pylyzer file.pySi no especifica una ruta de archivo, Pylyzer buscará automáticamente el punto de entrada.
pylyzerEsta opción se usa cuando un editor de LSP tiene argumentos para iniciar Pylyzer.
pylyzer --serverPara otras opciones, consulte el manual.
En promedio, Pylyzer puede inspeccionar los guiones de Python más de 100 veces más rápido que Pytype y Pyright 1 . Esto se debe en gran medida al hecho de que Pylyzer se implementa en Rust.
Si bien los informes de error de Pytype/Pyright son ilegibles, Pylyzer muestra dónde ocurrió el error y proporciona mensajes de error claros.
Pylyzer como servidor de idiomas admite varias características, como la finalización y el cambio de nombre (el servidor de idiomas es una adaptación del ERG Language Server (ELS). Para obtener más información sobre las características implementadas, consulte aquí).
Puede instalar la extensión VScode desde el mercado o desde la línea de comandos:
code --install-extension pylyzer.pylyzerRuff, como Pylyzer, es una herramienta de análisis de código estático para Python escrita en Rust, pero Ruff es un Linter y Pylyzer es un tipo de verificación y servidor de idiomas. Pylyzer no realiza pelucas y formateo, y Ruff no realiza la verificación de tipo.
Pylyzer utiliza el tipo de verificación del lenguaje de programación ERG internamente. Este lenguaje es un lenguaje transpilado que se dirige a Python y tiene un sistema de tipo estático.
Pylyzer convierte a Python Asts en ERG ASTS y los pasa a la verificación de tipo ERG. Luego muestra los resultados con modificaciones apropiadas.
El inspector de tipo de Pylyzer solo asume (potencialmente) código escrito estáticamente, por lo que no puede verificar ningún código que use reflexiones, como exec , setattr , etc.
Pylyzer (= sistema de tipo de ERG) tiene sus propias declaraciones de tipo para las API estándar de Python. La escritura de todas las API no está completa y puede dar como resultado un error de que dicha API no existe.
Dado que la verificación de tipo de Pylyzer es conservadora, puede encontrar muchos errores (posiblemente falsos positivos). Estamos trabajando para solucionar esto, pero si le preocupa los errores del editor, desactive la función de diagnóstico.
async/awaitlistdicttuplesettypingUnionOptionalLiteralCallableAnyTypeVarTypedDictClassVarGenericProtocolFinalAnnotatedTypeAliasTypeGuardcollections.abcIterableIteratorMappingSequencetyping.cast ) is , isinstance ) pyi (Stub) # type: ... ) pippoetryuvEstamos buscando contribuyentes para ayudarnos a mejorar Pylyzer. Si está interesado en contribuir y tener alguna pregunta, no dude en contactarnos.
1 La prueba de rendimiento se realizó en MacBook (principios de 2016) con el procesador Intel Core M3 de 1.1 GHz y la memoria LPDDR3 de 8 GB 1867 MHz.