facebook

pyre-check: Check Python Types and Find Data Flows

Pyre is an incremental, performant type checker for Python, with Pysa for security-focused data-flow analysis. The repository is archived: type checking has moved to Pyrefly, and Pysa is maintained in a separate repository.

Stars
7.2k
Forks
450
Stars, last 8 days
+3

Our take

Health score

39/100

How it is scored
Activity
20
Community
93
Issues
21
Pull requests
21

+3 stars in the last 8 days

  • More contributors than 77% of the projects we track

Overview

Pyre checks Python code against type annotations and reports mismatches, helping developers catch errors during development. Its incremental analysis and daemon are intended to provide quick feedback on large codebases as files change.

The repository also documents Pysa, a security-focused static analysis tool for tracking data flows. This repository is archived, so it is best treated as a reference for existing Pyre setups rather than the starting point for a new deployment. Type checking has been replaced by Pyrefly, and Pysa has moved to its own repository.

Key Features

  • Checks Python type annotations in line with PEP 484.
  • Analyzes code incrementally and can monitor filesystem changes through a daemon.
  • Reports type errors with locations and descriptions.
  • Supports large codebases, according to the project documentation.
  • Includes Pysa, a security-oriented static analysis tool for reasoning about Python data flows, now maintained separately.

Use Cases

  • Python developers maintaining an existing Pyre configuration can use it to understand or continue a legacy setup.
  • Teams working in typed Python can use type checking to catch incompatible assignments during development.
  • Developers of large codebases may find incremental checking useful for faster feedback while editing.
  • Security engineers looking for Python data-flow analysis should use the current Pysa repository, not this archived repository.
  • Teams choosing a type checker for a new project should evaluate Pyrefly, the stated successor.

Getting Started

For an existing setup, install the package with pip install pyre-check. The repository is archived, so consult the Pyre README for setup details and consider the successor projects for current use.

Alternatives

  • Mypy: Mypy is another Python static type checker, while Pyre emphasizes incremental performance and paired with Pysa for security-focused data-flow analysis.
  • Pytype: Pytype is another Python static analyzer, using bytecode-based inference rather than Pyre's incremental type-checking approach.
ProjectLanguageLicenseStarsStatus
pyre-checkOCamlMIT7.2kNot checked yet
mypyPythonOther20.7kActive
pytypePythonOther5kArchived

Considerations

  • The repository is archived and is no longer maintained.
  • Pyre type checking has been replaced by Pyrefly; Pysa has moved to a separate repository.
  • The documented setup requires Python 3.9 or later and Watchman.
  • The project is implemented in OCaml, while its analysis targets Python code.

Found this useful?

Share it with someone who would like pyre-check.

Comparisons