CINXE.COM
<!doctype html> <html lang="en" dir="ltr" class="plugin-pages plugin-id-default"> <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v2.1.0"> <title data-rh="true">Pyre | Pyre</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://pyre-check.org/img/docusaurus.png"><meta data-rh="true" name="twitter:image" content="https://pyre-check.org/img/docusaurus.png"><meta data-rh="true" property="og:url" content="https://pyre-check.org/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Pyre | Pyre"><meta data-rh="true" name="description" content="A performant type-checker for Python 3."><meta data-rh="true" property="og:description" content="A performant type-checker for Python 3."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pyre-check.org/"><link data-rh="true" rel="alternate" href="https://pyre-check.org/" hreflang="en"><link data-rh="true" rel="alternate" href="https://pyre-check.org/" hreflang="x-default"><script data-rh="true">function maybeInsertBanner(){window.__DOCUSAURUS_INSERT_BASEURL_BANNER&&insertBanner()}function insertBanner(){var n=document.getElementById("docusaurus-base-url-issue-banner-container");if(n){n.innerHTML='\n<div id="docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseurl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span> (default value)</p>\n <p>We suggest trying baseUrl = <span id="docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n';var e=document.getElementById("docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname,r="/"===s.substr(-1)?s:s+"/";e.innerHTML=r}}window.__DOCUSAURUS_INSERT_BASEURL_BANNER=!0,document.addEventListener("DOMContentLoaded",maybeInsertBanner)</script><link rel="preconnect" href="https://www.google-analytics.com"> <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-8CK1L365DB"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-8CK1L365DB",{})</script> <script src="https://buttons.github.io/buttons.js"></script><link rel="stylesheet" href="/assets/css/styles.47d7e675.css"> <link rel="preload" href="/assets/js/runtime~main.d687880c.js" as="script"> <link rel="preload" href="/assets/js/main.461255bc.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script> <div style="display: none; text-align: center; background-color: white; color: black;" id="internaldocs-banner"></div><div id="__docusaurus"> <div id="docusaurus-base-url-issue-banner-container"></div><div role="region" aria-label="theme.common.skipToMainContent"><a href="#" class="skipToContent_fXgn">Skip to main content</a></div><div class="announcementBar_mb4j" style="background-color:#20232a;color:#fff" role="banner"><div class="announcementBarPlaceholder_vyr4"></div><div class="content_knG7 announcementBarContent_xLdY">Support Ukraine 馃嚭馃嚘 <a target="_blank" rel="noopener noreferrer" href="https://opensource.fb.com/support-ukraine"> Help Provide Humanitarian Aid to Ukraine</a>.</div><button type="button" aria-label="Close" class="clean-btn close closeButton_CVFx announcementBarClose_gvF7"><svg viewBox="0 0 15 15" width="14" height="14"><g stroke="currentColor" stroke-width="3.1"><path d="M.75.75l13.5 13.5M14.25.75L.75 14.25"></path></g></svg></button></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/integrated_logo_light.png" alt="Pyre Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/integrated_logo_light.png" alt="Pyre Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Documentation</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/getting-started/">Type Checking (Pyre)</a></li><li><a class="dropdown__link" href="/docs/pysa-basics/">Static Analysis (Pysa)</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://github.com/facebook/pyre-check" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper mainWrapper_z2l0"><header class="hero hero--primary heroBanner_UJJx"><div class="container"><img src="img/pyre.svg" alt="Pyre logo." width="100"><h1 class="hero__title">Pyre</h1><p class="hero__subtitle">A performant type-checker for Python 3</p><div class="buttons_pzbO"><a class="button button--outline button--secondary button--lg getStarted_Sjon" href="/docs/getting-started/">Getting Started</a><a class="button button--outline button--secondary button--lg getStarted_Sjon" href="/play/">Playground</a></div></div></header><main><section class="features_keug"><div class="container"><div class="row"><div class="col col--3"><h3>Fast</h3><p>Built from the ground up to support gradual typing and deliver responsive incremental checks. Performant on large codebases with millions of lines of Python.</p></div><div class="col col--3"><h3>Integrated</h3><p>Designed to help improve code quality and development speed by flagging type errors interactively in your terminal or live in your favorite editor.</p></div><div class="col col--3"><h3>Fully Featured</h3><p>Follows the typing standards introduced in<!-- --> <a href="https://www.python.org/dev/peps/pep-0484/" target="_blank" rel="noopener noreferrer">PEPs 484</a>,<!-- --> <a href="https://www.python.org/dev/peps/pep-0526/" target="_blank" rel="noopener noreferrer">526</a>,<!-- --> <a href="https://www.python.org/dev/peps/pep-0612/" target="_blank" rel="noopener noreferrer">612</a>, and is being actively developed and constantly improved.</p></div><div class="col col--3"><h3>Built For Security</h3><p>Pyre ships with <a href="/docs/pysa-basics/">Pysa</a>, a security focused static analysis tool we've built to reason about data flows in Python applications at scale.</p></div></div></div></section></main></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Legal</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://opensource.facebook.com/legal/privacy/" target="_blank" rel="noreferrer noopener" class="footer__link-item">Privacy<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://opensource.facebook.com/legal/terms/" target="_blank" rel="noreferrer noopener" class="footer__link-item">Terms<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://opensource.fb.com/" rel="noopener noreferrer" class="footerLogoLink_BH7S"><img src="/img/meta_open_source_logo.svg" alt="Meta Open Source Logo" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/meta_open_source_logo.svg" alt="Meta Open Source Logo" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></a></div><div class="footer__copyright">Copyright © 2025 Meta Platforms, Inc.</div></div></div></footer></div> <script src="/assets/js/runtime~main.d687880c.js"></script> <script src="/assets/js/main.461255bc.js"></script> </body> </html>