Status : ALPHA
Release date: 27 October 2025
Pyrefly v0.39.0 bundles 195 commits from 19 contributors
✨ New & Improved
| Area | What’s new |
|---|---|
| Inheritance checks | - Added additional inheritance checks for typed dictionaries - Pyrefly no longer throws duplicate errors for overridden fields - Multiple inheritance checks are now skipped for some special fields, such as constructors |
| Language Server | - Major improvement on startup time for IDE features. This change makes most IDE features available instantly, with completions being available a few seconds later in large environments with hundreds of site-packages - Pyrefly can now update imports when files are renamed, by handling will_rename_file , a request sent by the language client when files are renamed. - Add semantic highlighting and hover docstrings in the Pyrefly website sandbox - Better IDE support for files that don’t have a marker file ( pyproject.toml / pyrefly.toml), making operations like find-references should now work in almost every case
|
| Build Systems | Improved handling of namespaced directories in build systems. Pyrefly now keeps track of namespaces (directories with a python or source file, but no __init__) in the build system, then returns them for Pyrefly to work with
|
| Docs & error messages | - Improved no-matching-overload errors. When no overload matches a function call, Pyrefly now displays the actual argument types that were provided. This eliminates the need to hover over each argument to understand why the call failed. - New error kind untyped-import added to detect missing Django stubs. This error is ignored by default; see the configuration docs for how to enable it. - Improved Pydantic documentation to explicitly list supported features. |
🐛 bug fixes
We closed 10 bug issues this release 👏
- #1364 -
__bool__check not working properly with unions - #1322 - autocomplete for
StrEnumimports not working properly - #1337 -
unbound-nameerrors erroneously thrown in try, except blocks - #1345 - IDE startup time very slow when
site-packagesdirectory contains a large number of additional packages - And more! #1374, #1359, #1320, #1302, #1257, #1217
Thank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue here
📦 Upgrade
pip install --upgrade pyrefly==0.39.0
How to safely upgrade your codebase
Upgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:
pyrefly check --suppress-errors- run your code formatter of choice
pyrefly check --remove-unused-ignores- Repeat until you achieve a clean formatting run and a clean type check.
This will add # pyrefly: ignore comments to your code, enabling you to silence errors and return to fix them later. This can make the process of upgrading a large codebase much more manageable.
Read more about error suppressions in the Pyefly documentation
🖊️ Contributors this release
@yangdanny97, @stroxler, @connernilsen, @kinto0, @migeed-z, @arthaud, @rchen152, @tianhan0, @samwgoldman, @lolpack, @Adist319, @asukaminato0721, @fangyi-zhou, @immanuel-peter, @jvansch1, @javabster, @pawelstrzmeta, @rubmary,