Trying pyrefly, Meta's type checker #
I guess I like trying type checkers.
Meta announced that they are open sourcing their type checker, pyrefly. It was easy enough to try:
uvx pyrefly check
On my tiny 640 lines of castfit (which passes pyright and mypy --strict) I got 74 errors. Going through some of these was instructive.
==is not supported betweentype[@_]andtype[MyList]
This was in response to code like:
assert castfit.get_origin_type(MyList) == MyList
Good catch. That == should is.
Can't apply arguments to non-class, got
LegacyImplicitTypeAlias[TypeForm, type[type[TypeVar(T, invariant)] | Any]][bad-specialization]
Not sure what this means or how to handle it.
Argument
Forall[T, (value: Any, kind: Unknown) -> bool]is not assignable to parameter with type(Any, Unknown) -> bool[bad-argument-type]
Imagine my confusion when I'm trying to figure out why this is not assignable. Must be that Unknown can't be assigned to Unknown. I might try this again in the future, but the error messages could definitely use some work.