diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py index 560b96f7e3b..0daaff099a8 100644 --- a/Lib/test/test_genericalias.py +++ b/Lib/test/test_genericalias.py @@ -85,8 +85,6 @@ class BaseTest(unittest.TestCase): if ctypes is not None: generic_types.extend((ctypes.Array, ctypes.LibraryLoader)) - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_subscriptable(self): for t in self.generic_types: if t is None: @@ -314,8 +312,6 @@ def test_dir(self): for generic_alias_property in ("__origin__", "__args__", "__parameters__"): self.assertIn(generic_alias_property, dir_of_gen_alias) - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_weakref(self): for t in self.generic_types: if t is None: diff --git a/stdlib/src/contextvars.rs b/stdlib/src/contextvars.rs index 4fd45842b9e..0634013325d 100644 --- a/stdlib/src/contextvars.rs +++ b/stdlib/src/contextvars.rs @@ -22,6 +22,8 @@ thread_local! { #[pymodule] mod _contextvars { + use rustpython_vm::builtins::PyGenericAlias; + use crate::vm::{ AsObject, Py, PyObjectRef, PyPayload, PyRef, PyResult, VirtualMachine, atomic_func, builtins::{PyStrRef, PyTypeRef}, @@ -471,8 +473,8 @@ mod _contextvars { } #[pyclassmethod(magic)] - fn class_getitem(_cls: PyTypeRef, _key: PyStrRef, _vm: &VirtualMachine) -> PyResult<()> { - unimplemented!("ContextVar.__class_getitem__() is currently under construction") + fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias { + PyGenericAlias::new(cls, args, vm) } } @@ -561,6 +563,11 @@ mod _contextvars { None => ContextTokenMissing::static_type().to_owned().into(), } } + + #[pyclassmethod(magic)] + fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias { + PyGenericAlias::new(cls, args, vm) + } } impl Constructor for ContextToken {