release_notes/release-notes-v1.1.0-dev.1.md
Release date: May 27, 2026
About dev releases Dev releases (versions like
X.Y.Z-dev.N) are non-stable snapshots cut periodically from trunk. They give early adopters a chance to try in-progress features and surface issues before the next stable release, but they don't carry the same stability or compatibility guarantees as a stable release — don't pin production projects to a dev version.
Pyrefly v1.1.0-dev.1 bundles 250 commits from 40 contributors.
incompatible-comparison diagnostic catches comparisons like int == str where operand types can't overlap.ABCMeta are now correctly treated as abstract.__setattr__/__delattr__ overrides.Mapped and similar asymmetric descriptor types.:meth:, :class:, :func:) in docstrings now render as clickable links in hover tooltips.__init__ without explicit annotations.python.analysis.diagnosticMode, python.analysis.importFormat, and python.analysis.inlayHints settings — full interop with the Python VS Code ecosystem.explicit-any error kind (ignored by default) warns when Any appears in annotations or type alias bodies; includes migration support for mypy/pyright codebases.baseline.json are now relative and always use forward slashes — fixes baseline matching when CI checkout paths differ from local dev environments and across OSes.annotation-mismatch error kind has been removed (it was never emitted).all preset enables every error kind at error severity — for codebases that want comprehensive checking. Available in both the CLI and the VS Code python.pyrefly.typeCheckingMode setting.pytorch-efficiency-lints flag turns on PyTorch efficiency checks at warn severity: catches .item() GPU sync, redundant .to(device), deprecated .cuda(), and print(tensor).torch/_shapes.pyi) via the new @uses_shape_dsl decorator.@shape_dsl_function definitions and invalid call signatures are caught at compile time.__init__ for dataclasses, preserving constructor signatures in generated stubs.python/typing.We closed 34 bug issues this release 👏
not-iterable error when iterating over a list stored in a dict that also contains non-iterable values. When a dict was built inside a loop with heterogeneous inner dicts (e.g., {"start": date, "tasks": []}), Pyrefly incorrectly inferred the inner dict's value type as date instead of date | list[...], causing spurious errors when accessing val["tasks"].# pyrefly: ignore comment appeared above a multi-line implicit string concatenation, only the first error was covered. Pyrefly now reparses the AST to respect ignore comments for the entirety of the construct.missing-override-decorator when assigning to inherited properties. If a child class assigned to a property (with a setter) defined in a base class, Pyrefly incorrectly flagged it as an implicit override.__init__. Classes in generated stubs were missing attributes if those attributes were not explicitly annotated at the class level. Stubgen now emits synthesized __init__ for dataclasses, preserving constructor signatures.textDocument/didOpen, byte offsets diverged, causing exact byte-range comparisons to fail. Pyrefly now uses a line-number fallback to match definitions correctly.Final Enum variant was checked with is not, the type was not narrowed out of the union, causing false positives in exhaustiveness checks.@override for standard dunders. Pyrefly now skips missing-override-decorator for dunders inherited from object, as adding @override to __repr__, __eq__, etc., is pure noise.PartialQuantified vars. The solver now correctly handles partial vars in overload residuals, preventing panics.Self@[Enum] not being properly narrowed. For an exhaustive match on an enum type within an instance method, the self argument wasn't being narrowed as expected. Enum member subtraction now preserves and handles SelfType, allowing exhaustive enum match self fallbacks to narrow to Never.__setitem__ / __getitem__. When a class's __setitem__ and __getitem__ signatures were asymmetric, Pyrefly incorrectly narrowed the assigned value. Subscript-assignment narrowing is now gated by symmetry checks, preventing false positives with custom container types.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.
pip install --upgrade pyrefly==1.1.0-dev.1
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-errorspyrefly check --remove-unused-ignoresThis 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 Pyrefly documentation.
@stroxler, @rchen152, @ndmitchell, generatedunixname2066905484085733, @yangdanny97, @kinto0, @jorenham, @asukaminato0721, @migeed-z, @samwgoldman, @lolpack, @grievejia, David Tolnay, @connernilsen, @arthaud, @maggiemoss, @NathanTempest, @f1sherFM, @mfish33, @lordhaa123, Anqi Wu, @javabster, @rexledesma, @MackDing, Brian Rosenfeld, @fylux, @YBJ0000, @arpitjain099, @EpicEric, @NarxPal, Philippe Bidinger, @knQzx, @yeetypete, @GHX5T-SOL, Tejesh Mehta, @fangyi-zhou, @LeSingh1, @P-r-e-m-i-u-m, @Arths17, @sjh9714
Please note: These release notes summarize major updates and features. For brevity, not all individual commits are listed.