Skip to main content

Pyre linting plugin for pylsp

Project description

python-lsp-pyre

This is a plugin for the Python LSP Server.

It implements support for calling Meta's Pyre type checker via a subprocess.

Pyre does offer a language server of its own, and that may be more useful to you if your editor supports multiple language servers per language.

Features

This plugin adds the following features to python-lsp-server:

  • Type linting via Meta's Pyre (pyre-check)

Installation

To use this plugin, you need to install this plugin in the same virtualenv as python-lsp-server itself.

pip install python-lsp-pyre

or to make it a development requirement in Poetry

poetry add -G dev python-lsp-pyre

Then run python-lsp-server as usual, the plugin will be auto-discovered by python-lsp-server if you've installed it to the right environment. Refer to python-lsp-server and your IDE/text editor documentation on how to setup python-lsp-server. The plugin's default enabled status is True.

Editor integration

Configuration

Meta's Pyre uses .pyre_configuration files in your project to set up lint controls. It does not read pyproject.toml.

On first run of this plugin, it will detect a missing .pyre_configuration and write out one for you if the create-pyre-config configuration option is enabled. It relies on the workspace root passed to the language server for this write. This file is not immutable, and the reference documentation may be useful.

You can also use pyre init instead to set up the configuration.

The configuration written by this plugin is:

{
    "site_package_search_strategy": "all",
    "source_directories": [
        "."
    ],
    "exclude": [
        "/setup.py",
        ".*/build/.*"
    ],
    "strict": true
}

The noteable difference from pyre init is the change to the search strategy ("pep561" to "all"), and turning on strict mode as the default. You may find strict mode a bit pedantic, but having worked with strict mode for several years, I highly recommend it.

If the .pyre_configuration file is not present (or has a syntax error), the LSP error log, LSP output, and your editor's LSP messages will display an ABEND message containing the error from Pyre as it fails to run.

Squelching Pyre lint errors

The recommended way of squelching a Pyre warning is to pick one of # pyre-ignore or # pyre-fixme. More precisely, suppose Pyre is indicating

Missing global annotation [5]: Globally accessible variable `logger` has type `logging.Logger` but no type is specified.

at you, and you do not feel like typing your logger right now. On the line before, you can put either one of

  • # pyre-ignore[5] Don't care about logger
  • # pyre-fixme[5] Resolve this when doing all logger work

to squelch the lint, and provide a hint to future you (or other readers of the code). This is a trivial example; it's easier to just type the logger.

You do not need to match the number in the brackets, other than for ease of cross-reference with the type errors documentation.

When you address the squelched error, Pyre will indicate that the comment is not suppressing a type error and can be removed.

Developing

Install development dependencies with (you might want to create a virtualenv first):

git clone https://github.com/cricalix/python-lsp-pyre python-lsp-pyre
cd python-lsp-pyre
pip install -e '.[dev]'

Alterately, if you use Poetry,

git clone https://github.com/cricalix/python-lsp-pyre python-lsp-pyre
cd python-lsp-pyre
poetry install

will set up a virtualenv if necessary, install all dependencies, and then install this project in editable/development mode.

Contributing

This plugin was written to scratch an itch. If you find it useful, great!

If something about it annoys you, or you think there's a better way to do something, you're welcome to send a PR.

Project details


Download files

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

Source Distribution

python_lsp_pyre-0.1.3.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

python_lsp_pyre-0.1.3-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file python_lsp_pyre-0.1.3.tar.gz.

File metadata

  • Download URL: python_lsp_pyre-0.1.3.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for python_lsp_pyre-0.1.3.tar.gz
Algorithm Hash digest
SHA256 16907a8ac7f161751e9cd51bdcf89c3482000fb09bf3647277076a1c84ab06c3
MD5 c5932d9c02196be628e7d66db3a01dfc
BLAKE2b-256 8f07012a4fcc1c6e28695610e13b9f058feb854f575c0cfb075255d852926446

See more details on using hashes here.

File details

Details for the file python_lsp_pyre-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for python_lsp_pyre-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d5d62be6e85a8afa30a57676375018d938662fb50ac1f99667ad29958fe1bdbf
MD5 580149c11a4b76a9cffa666bd0793287
BLAKE2b-256 ca8645be6bc9e61e54880f092ce75846634320c1cb13274ad67369ee0596169e

See more details on using hashes here.

Supported by

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