<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python Developer Tooling Handbook – ty</title>
    <link>https://pydevtools.com/handbook/topics/ty/</link>
    <description>Astral&#39;s new fast type checker for Python. Try it, configure it, migrate to it.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Fri, 08 May 2026 08:45:16 -0400</lastBuildDate>
    
	  <atom:link href="https://pydevtools.com/handbook/topics/ty/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>ty: A Complete Guide to Python&#39;s Fastest Type Checker</title>
      <link>https://pydevtools.com/handbook/explanation/ty-complete-guide/</link>
      <pubDate>Fri, 15 May 2026 11:47:17 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/ty-complete-guide/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt; is a Python type checker and language server built by Astral, the team behind &lt;a href=&#34;https://pydevtools.com/handbook/reference/ruff/&#34;&gt;Ruff&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;. It checks Python code for type errors an order of magnitude faster than &lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;&gt;mypy&lt;/a&gt;. The same binary that runs &lt;code&gt;ty check&lt;/code&gt; in CI also serves as a full language server, powering editor features like completions and go-to-definition.&lt;/p&gt;
&lt;h2&gt;Why ty exists&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;why-ty-exists&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#why-ty-exists&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;ty&amp;rsquo;s &lt;strong&gt;gradual guarantee&lt;/strong&gt; makes incremental type adoption safe: adding annotations to your code will never introduce new errors. You can annotate a function&amp;rsquo;s return type and ty won&amp;rsquo;t flag callers that were already passing the wrong type just because the annotation appeared. Each annotation only narrows existing errors rather than creating new ones.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How do Python type checkers compare?</title>
      <link>https://pydevtools.com/handbook/explanation/how-do-mypy-pyright-and-ty-compare/</link>
      <pubDate>Fri, 15 May 2026 22:53:52 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/explanation/how-do-mypy-pyright-and-ty-compare/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;&gt;mypy&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyright/&#34;&gt;pyright&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyrefly/&#34;&gt;Pyrefly&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/basedpyright/&#34;&gt;Basedpyright&lt;/a&gt;, and &lt;a href=&#34;https://pydevtools.com/handbook/reference/zuban/&#34;&gt;Zuban&lt;/a&gt; all analyze type annotations to catch bugs before runtime. They read the same type-hint annotations (from &lt;a href=&#34;https://peps.python.org/pep-0484/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;PEP 484&lt;/a&gt;, the standard that introduced Python&amp;rsquo;s type system in 2014) and largely agree on the parts of the spec a working program uses. They disagree on speed, default strictness, treatment of unannotated code, editor integration, and licensing, and those disagreements are what make the choice matter.&lt;/p&gt;
&lt;p&gt;The handbook recommends &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyrefly/&#34;&gt;Pyrefly&lt;/a&gt; (Meta) as the default for new projects. See &lt;a href=&#34;#when-to-choose-each&#34;&gt;When to choose each&lt;/a&gt; for the rationale and the cases where a different checker fits better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to install the Astral plugins for Claude Code</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-install-astral-plugins-for-claude-code/</link>
      <pubDate>Sat, 16 May 2026 07:30:29 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-install-astral-plugins-for-claude-code/</guid>
      <description>&lt;p&gt;Astral publishes an &lt;a href=&#34;https://github.com/astral-sh/claude-code-plugins&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;official Claude Code plugin&lt;/a&gt; that bundles three skills (&lt;code&gt;/astral:uv&lt;/code&gt;, &lt;code&gt;/astral:ruff&lt;/code&gt;, &lt;code&gt;/astral:ty&lt;/code&gt;) and a &lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt; language server. The skills give Claude up-to-date usage guidance for each tool, and the language server feeds live type-checking diagnostics into the conversation.&lt;/p&gt;
&lt;h2&gt;Prerequisites&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;prerequisites&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#prerequisites&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://claude.com/product/claude-code&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Claude Code&lt;/a&gt; installed&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-install-uv/&#34;&gt;uv installed&lt;/a&gt; (required by the ty language server)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Install the plugin for yourself&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;install-the-plugin-for-yourself&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#install-the-plugin-for-yourself&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;hextra-steps hx:ml-4 hx:mb-12 hx:ltr:border-l hx:rtl:border-r hx:border-gray-200 hx:ltr:pl-6 hx:rtl:pr-6 hx:dark:border-neutral-800 [counter-reset:step]&#34;&gt;
&lt;h3&gt;1. Add the Astral marketplace&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;1-add-the-astral-marketplace&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#1-add-the-astral-marketplace&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Run this slash command inside Claude Code:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to migrate from mypy to ty</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-migrate-from-mypy-to-ty/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-migrate-from-mypy-to-ty/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt; is a fast Python type checker, developed by &lt;a href=&#34;https://astral.sh/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Astral&lt;/a&gt; (the creators of &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/ruff/&#34;&gt;Ruff&lt;/a&gt;). It runs faster than &lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;&gt;mypy&lt;/a&gt;, especially on large codebases.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-amber-200 hx:bg-amber-100 hx:text-amber-900 hx:dark:border-amber-200/30 hx:dark:bg-amber-900/30 hx:dark:text-amber-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;ty is currently in beta. While actively developed, it&amp;rsquo;s still missing some features and may not be ready for full production adoption. This guide helps evaluate readiness and plan for migration.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;Understanding ty&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;understanding-ty&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#understanding-ty&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;When to consider migrating&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-consider-migrating&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-consider-migrating&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Projects needing faster type checking on large codebases&lt;/li&gt;
&lt;li&gt;Teams already using other Astral tools (Ruff, uv)&lt;/li&gt;
&lt;li&gt;Projects not relying on mypy plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;When to wait&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-wait&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-wait&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Projects requiring Pydantic, Django, or SQLAlchemy mypy plugins&lt;/li&gt;
&lt;li&gt;Projects requiring mature, battle-tested tooling&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Installation and basic usage&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;installation-and-basic-usage&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#installation-and-basic-usage&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Installing ty&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;installing-ty&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#installing-ty&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;ty is distributed as a standalone binary. The easiest way to use it is via &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uvx&lt;/a&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to migrate from pyright to ty</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-migrate-from-pyright-to-ty/</link>
      <pubDate>Mon, 18 May 2026 09:56:08 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-migrate-from-pyright-to-ty/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt; is a Python type checker developed by &lt;a href=&#34;https://astral.sh/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Astral&lt;/a&gt; (the creators of &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/ruff/&#34;&gt;Ruff&lt;/a&gt;). It ships as a single binary with no runtime dependencies, which eliminates &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyright/&#34;&gt;pyright&lt;/a&gt;&amp;rsquo;s Node.js requirement.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-amber-200 hx:bg-amber-100 hx:text-amber-900 hx:dark:border-amber-200/30 hx:dark:bg-amber-900/30 hx:dark:text-amber-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;ty is currently in beta. While actively developed, it&amp;rsquo;s still missing some features and may not be ready for full production adoption. This guide helps evaluate readiness and plan for migration.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;Installation and basic usage&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;installation-and-basic-usage&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#installation-and-basic-usage&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Installing ty&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;installing-ty&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#installing-ty&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;ty is distributed as a standalone binary. The easiest way to use it is via &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uvx&lt;/a&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to try the ty type checker</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-try-the-ty-type-checker/</link>
      <pubDate>Sat, 16 May 2026 06:16:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-try-the-ty-type-checker/</guid>
      <description>&lt;p&gt;This guide shows you how to try out &lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt;, a static type checker and language server, in your project.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;Looking to migrate from &lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;mypy&lt;/a&gt; to ty? See &lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-migrate-from-mypy-to-ty/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;How to migrate from mypy to ty&lt;/a&gt; for detailed guidance.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;Prerequisites&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;prerequisites&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#prerequisites&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To proceed, you&amp;rsquo;ll need &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to use ty in CI</title>
      <link>https://pydevtools.com/handbook/how-to/how-to-use-ty-in-ci/</link>
      <pubDate>Wed, 13 May 2026 06:43:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/how-to/how-to-use-ty-in-ci/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt; can run in CI with no installation step beyond &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;. Because ty is a single binary with no runtime dependencies, it adds minimal overhead to your pipeline.&lt;/p&gt;
&lt;h2&gt;GitHub Actions&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;github-actions&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#github-actions&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The simplest approach uses &lt;code&gt;uvx&lt;/code&gt; to run ty without adding it as a project dependency:&lt;/p&gt;
&lt;div class=&#34;hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code&#34;&gt;

&lt;div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;nt&#34;&gt;uses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;actions/checkout@v4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;uses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;astral-sh/setup-uv@v7&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;run&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;uvx ty check src/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;hextra-code-copy-btn-container  hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0&#34;&gt;
  &lt;button
    class=&#34;hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50&#34;
    title=&#34;Copy code&#34;
    aria-label=&#34;Copy code&#34;
    data-copied-label=&#34;Copied!&#34;
  &gt;
    &lt;div class=&#34;hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
&lt;div class=&#34;hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To get inline annotations on pull requests, use the &lt;code&gt;github&lt;/code&gt; output format:&lt;/p&gt;</description>
    </item>
    <item>
      <title>ty: Python Type Checker by Astral</title>
      <link>https://pydevtools.com/handbook/reference/ty/</link>
      <pubDate>Sat, 16 May 2026 07:30:29 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/ty/</guid>
      <description>&lt;p&gt;ty (pronounced &lt;em&gt;tee-why&lt;/em&gt;) is a static type checker and language server for Python from Astral (creators of &lt;a href=&#34;https://pydevtools.com/handbook/reference/ruff/&#34;&gt;Ruff&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;). It performs static analysis on Python code to identify type-related issues before runtime.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;ty was initially known by the code name &amp;ldquo;Red-Knot&amp;rdquo; during its early development phase. The tool is in beta, with a stable 1.0 release targeted for 2026.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;When to use ty&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-ty&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-ty&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;ty is an alternative to the handbook&amp;rsquo;s recommended type checker, &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyrefly/&#34;&gt;Pyrefly&lt;/a&gt;. Its &amp;ldquo;gradual guarantee&amp;rdquo; ensures that adding type annotations to working code never introduces new errors, which makes incremental adoption predictable in a partially-typed codebase. ty also runs 10-100x faster than &lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;&gt;mypy&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyright/&#34;&gt;pyright&lt;/a&gt; and pairs cleanly with &lt;a href=&#34;https://pydevtools.com/handbook/reference/ruff/&#34;&gt;Ruff&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; in the Astral toolchain. Pyrefly is recommended over ty for most new projects because ty is still in beta as of 2026 and its typing-spec conformance trails Pyrefly&amp;rsquo;s; choose ty if the gradual guarantee matters more than feature completeness, or if Astral-toolchain coherence is a priority. For a full comparison across all major type checkers, see &lt;a href=&#34;https://pydevtools.com/handbook/explanation/how-do-mypy-pyright-and-ty-compare/&#34;&gt;How do Python type checkers compare?&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
