You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The typing module needs to be updated to 3.12. It seems that it was last updated to 3.9, so it's missing several major versions worth of features, like Unpack, generics, and type aliases using the type keyword.
Not having these typing features impedes the process of updating modules that use, which presumably will be most new stuff going forward.
I estimate that updating will require:
Moving some abstract base classes from typing.py into a new native module typing.rs, specifically TypeVar, ParamSpec, TypeVarTuple, ParamSpecArgs, ParamSpecKwards, TypeAliasType, and Generic.
Adding new instructions which generate/consume type information to compiler.rs and frame.rs. For example, def foo[T](x: T): ... must create a new TypeVar(T) and inject it into the correct scope so that it is available as an argument annotation. This requires a new instruction defined in bytecode.rs which is emitted by compiler.rs and consumed by frame.rs.
Copying typing.py and test_typing.py from the CPython code base.
Python Documentation or reference to CPython source code
I've been chewing on this for a bit, but it's pretty slow going since I'm also learning about a lot of compilation internals. As soon as I have something that is mostly compatible with the 3.12 typing.py I will submit a partial PR to get some incremental feedback.
I don't know if this is already known, but I just wanted to add to the 3.12 typing discussion that if not running in release mode, syntax like def foo[T](): pass causes a panic in the parser at core/src/source_code.rs:139:9
Feature
The
typing
module needs to be updated to 3.12. It seems that it was last updated to 3.9, so it's missing several major versions worth of features, like Unpack, generics, and type aliases using thetype
keyword.Not having these typing features impedes the process of updating modules that use, which presumably will be most new stuff going forward.
I estimate that updating will require:
typing.py
into a new native moduletyping.rs
, specificallyTypeVar
,ParamSpec
,TypeVarTuple
,ParamSpecArgs
,ParamSpecKwards
,TypeAliasType
, andGeneric
.Adding new syntax likeIt seems like this is already included in https://github.com/RustPython/Parser/blob/main/parser/src/python.lalrpoptype
type aliases and generics to the parser.compiler.rs
andframe.rs
. For example,def foo[T](x: T): ...
must create a newTypeVar(T)
and inject it into the correct scope so that it is available as an argument annotation. This requires a new instruction defined inbytecode.rs
which is emitted bycompiler.rs
and consumed byframe.rs
.typing.py
andtest_typing.py
from the CPython code base.Python Documentation or reference to CPython source code
https://docs.python.org/3/library/typing.html
The text was updated successfully, but these errors were encountered: