brainstate

meta/pyre-check · source

Snapshot 0 · 2026-11-04T12:47:25Z · OCaml · MIT

Content fingerprintafb70a83e2e14922385881968535fd8d1ef9bf64ff2efd62279e879e908aafae

GitHub description at capture

Performant type-checking for python.

README at capture

[![tests](https://github.com/facebook/pyre-check/workflows/tests/badge.svg)](https://github.com/facebook/pyre-check/actions/workflows/tests.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Gitter](https://badges.gitter.im/pyre-check/community.svg)](https://gitter.im/pyre-check/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

> [!WARNING]
>
> ## This Repository Is Archived
>
> This repository is no longer maintained and has been archived.
>
> - **Type checking:** Pyre has been replaced by <a href="https://github.com/facebook/pyrefly">Pyrefly</a>, our next-generation Python typechecker and language server.
> - **Security analysis (Pysa):** Pysa has moved to its own repository at <a href="https://github.com/facebook/Pysa">github.com/facebook/Pysa</a>. If you are looking for Pysa, please head there.

<p align="center">
  <img src="https://raw.githubusercontent.com/facebook/pyre-check/main/logo.png">
</p>

Pyre is a performant type checker for Python compliant with [PEP 484](https://www.python.org/dev/peps/pep-0484/). Pyre can analyze codebases with millions of lines of code incrementally – providing instantaneous feedback to developers as they write code. Refer to our [documentation](https://pyre-check.org/docs/getting-started) to get started.

Pyre ships with **Pysa**, a security focused static analysis tool we've built on top of Pyre that reasons about data flows in Python applications. **Pysa now lives in its own repository at [github.com/facebook/Pysa](https://github.com/facebook/Pysa)** — please head there for the latest version and to get started with our security analysis.

Pysa is also available on the [GitHub Marketplace as a Github Action](https://github.com/marketplace/actions/pysa-action)

## Requirements
To get started, you need [Python 3.9 or later](https://www.python.org/getit/) and [watchman](https://facebook.github.io/watchman/) working on your system. On *MacOS* you can get everything with [homebrew](https://brew.sh/):
```bash
$ brew install python3 watchman
```
On *Ubuntu*, *Mint*, or *Debian*; use `apt-get` and [homebrew](https://brew.sh/):
```bash
$ sudo apt-get install python3 python3-pip python3-venv
$ brew install watchman
```
We tested Pyre on *Ubuntu 18.04.5 LTS*, *CentOS 7*, as well as *OSX 10.11* and later.

## Setting up a Project
We start by creating an empty project directory and setting up a virtual environment:

```bash
$ mkdir my_project && cd my_project
$ python3 -m venv ~/.venvs/venv
$ source ~/.venvs/venv/bin/activate
(venv) $ pip install pyre-check
```

Next, we teach Pyre about our new project:
```bash
(venv) $ pyre init
```
This command will set up a configuration for Pyre (`.pyre_configuration`) as well as watchman (`.watchmanconfig`) in your project's directory. Accept the defaults for now – you can change them later if necessary.

## Running Pyre
We are now ready to run Pyre:
```bash
(venv) $ echo "i: int = 'string'" > test.py
(venv) $ pyre
 ƛ Found 1 type error!
test.py:1:0 Incompatible variable type [9]: i is declared to have type `int` but is used as type `str`.
```
This first invocation will start a daemon listening for filesystem changes – type checking your project incrementally as you make edits to the code. You will notice that subsequent invocations of `pyre` will be faster than the first one.

For more detailed documentation, see https://pyre-check.org.

## Join the Pyre community

See [CONTRIBUTING.md](CONTRIBUTING.md) for how to help out.

## License

Pyre is licensed under the MIT license.