Meta's Pyrefly sabotages competing Python extensions without telling you
https://github.com/facebook/pyrefly/issues/3292
#HackerNews #Meta #Pyrefly #Python #Extensions #Sabotage #Competing #Issues
Meta's Pyrefly sabotages competing Python extensions without telling you
https://github.com/facebook/pyrefly/issues/3292
#HackerNews #Meta #Pyrefly #Python #Extensions #Sabotage #Competing #Issues
Lessons from #Pyre that Shaped #Pyrefly
"Building a #typechecker is ultimately a deeply pragmatic exercise. It is easy to get lost in the weeds of type theory, but at the end of the day, we are building a tool that developers have to live with every single day. We chose usability over absolute soundness, and we built an architecture that embraces #Python's dynamism instead of fighting it."
Pyrefly giới thiệu 4 mẫu thu hẹp loại dữ liệu giúp kiểm tra kiểu trong Python trực quan hơn qua: 1. hasattr/getattr, 2. tagged unions, 3. kiểm tra độ dài tuple, 4. lưu điều kiện trong biến. Pyrefly hiện là trình kiểm tra kiểu duy nhất hỗ trợ đầy đủ các mẫu này. Tìm hiểu thêm tại trang chủ hoặc GitHub. #Python #TypeChecking #Pyrefly #LậpTrình #KiểmTraKiểu
https://www.reddit.com/r/programming/comments/1qolknv/4_pyrefly_type_narrowing_patterns_that_make/
Let's say you want to do good type-checking for the #Python project you're working on. You pick a tool, maybe you use it as an #LSP also (so your editor can show you errors, too). As an example, I'm using #Ty at the moment. There's three places this might be installed: globally (e.g., `brew install ty`), as a dev-only dependency inside your project (e.g., `uv add --dev ty`), or -- and this one might surprise you -- it might only be used and installed by `pre-commit`, which builds a separate environment for each needed tool (which is great for instance where I use `codespell` as a `pre-commit` check, which seems to need some higher version of Python than my actual project).
Where should you install it?
If you're the only one on your team running it, globally is fine. If more than just you, then absolutely as a dev-only dependency inside your project ... and **maybe** globally as well.
The only real problem is updates. If you use a reasonable global install scheme, updates will be easy. They're less easy inside your project or in `pre-commit`. And you might care one way or the other! I **don't** want updates! I **do** want updates!
As for Python type-checking, `ty` seems good so far, but not enough experience with it yet. `basedpyright`, `pyrefly`, and `ruff` all good. These four are my favorites.
#BasedPyright #Pyrefly #Ruff #PreCommit #CodeSpell #Homebrew
Both #ty and #pyrefly reached beta recently. Pyrefly team have announced they're targeting V1 in early 2026. Given that the Pyrefly team works closely with the Django users at Instagram, I'm expecting good things from them. Early signs are good because of their experimental Django support similar to the mypy plugin.
#ty are targetting dataclass transform similar to Pyright. I doubt that'll ever be good enough.
Exciting times in Python type checking.
Well … I get symbol renaming if I use #BasedPyright as my #LSP