{"id":13461715,"url":"https://github.com/facebook/pyre-check","last_synced_at":"2025-05-12T05:28:18.924Z","repository":{"id":37719967,"uuid":"110274488","full_name":"facebook/pyre-check","owner":"facebook","description":"Performant type-checking for python.","archived":false,"fork":false,"pushed_at":"2025-05-10T02:14:09.000Z","size":485085,"stargazers_count":7003,"open_issues_count":144,"forks_count":449,"subscribers_count":113,"default_branch":"main","last_synced_at":"2025-05-11T03:15:19.679Z","etag":null,"topics":["abstract-interpretation","code-quality","control-flow-analysis","ocaml","program-analysis","python","security","static-analysis","taint-analysis","type-check","typechecker"],"latest_commit_sha":null,"homepage":"https://pyre-check.org/","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.es.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-11-10T17:31:36.000Z","updated_at":"2025-05-10T02:12:04.000Z","dependencies_parsed_at":"2025-03-12T16:31:06.769Z","dependency_job_id":"cc7e24af-c0e6-4aa1-b4cc-4404ca983017","html_url":"https://github.com/facebook/pyre-check","commit_stats":{"total_commits":16786,"total_committers":299,"mean_commits":56.14046822742475,"dds":0.8867508638150841,"last_synced_commit":"58b242612f8e0e2f27c8ca40729b011d7e3edd26"},"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyre-check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyre-check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyre-check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyre-check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","download_url":"https://codeload.github.com/facebook/pyre-check/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253509788,"owners_count":21919590,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abstract-interpretation","code-quality","control-flow-analysis","ocaml","program-analysis","python","security","static-analysis","taint-analysis","type-check","typechecker"],"created_at":"2024-07-31T11:00:54.098Z","updated_at":"2025-05-11T03:15:26.626Z","avatar_url":"https://github.com/facebook.png","language":"OCaml","readme":"[![tests](https://github.com/facebook/pyre-check/workflows/tests/badge.svg)](https://github.com/facebook/pyre-check/actions/workflows/tests.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Gitter](https://badges.gitter.im/pyre-check/community.svg)](https://gitter.im/pyre-check/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/facebook/pyre-check/main/logo.png\"\u003e\n\u003c/p\u003e\n\nPyre 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. You can try it out on examples in [the Pyre Playground](https://pyre-check.org/play).\n\nPyre ships with **Pysa**, a security focused static analysis tool we've built on top of Pyre that reasons about data flows in Python applications. Please refer to our [documentation](https://pyre-check.org/docs/pysa-quickstart) to get started with our security analysis.\n\nPysa is also available on the [GitHub Marketplace as a Github Action](https://github.com/marketplace/actions/pysa-action)\n\n## Requirements\nTo get started, you need [Python 3.8 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/):\n```bash\n$ brew install python3 watchman\n```\nOn *Ubuntu*, *Mint*, or *Debian*; use `apt-get` and [homebrew](https://brew.sh/):\n```bash\n$ sudo apt-get install python3 python3-pip python3-venv\n$ brew install watchman\n```\nWe tested Pyre on *Ubuntu 18.04.5 LTS*, *CentOS 7*, as well as *OSX 10.11* and later.\n\n## Setting up a Project\nWe start by creating an empty project directory and setting up a virtual environment:\n\n```bash\n$ mkdir my_project \u0026\u0026 cd my_project\n$ python3 -m venv ~/.venvs/venv\n$ source ~/.venvs/venv/bin/activate\n(venv) $ pip install pyre-check\n```\n\nNext, we teach Pyre about our new project:\n```bash\n(venv) $ pyre init\n```\nThis 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.\n\n## Running Pyre\nWe are now ready to run Pyre:\n```bash\n(venv) $ echo \"i: int = 'string'\" \u003e test.py\n(venv) $ pyre\n ƛ Found 1 type error!\ntest.py:1:0 Incompatible variable type [9]: i is declared to have type `int` but is used as type `str`.\n```\nThis 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.\n\nFor more detailed documentation, see https://pyre-check.org.\n\n## Join the Pyre community\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for how to help out.\n\n## License\n\nPyre is licensed under the MIT license.\n","funding_links":[],"categories":["Code Analysis","Python","OCaml","资源列表","Development Environment","Containers \u0026 Language Extentions \u0026 Linting","代码分析","Python 程序","代码分析和 Lint 工具","System","Code Analysis [🔝](#readme)","Awesome Python","Type checkers","Tools","Static Application Security Testing (SAST)"],"sub_categories":["代码分析和 Lint 工具","Python","Debugging and Tracing","For Python","网络服务_其他","Code Analysis","Helper tools to add annotations to existing code","Language Specific"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fpyre-check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebook%2Fpyre-check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fpyre-check/lists"}