add missing __class_getitem__ in several types

Signed-off-by: snowapril <sinjihng@gmail.com>
This commit is contained in:
snowapril committed 2021-10-22 18:43:15 +09:00
1 parent f491bb8fc4
commit 32ba09c407
11 files changed
+84 -13

No files matched your search

+6 -1
View File
@@ -1,4 +1,4 @@
use super::{PyCode, PyStrRef, PyTypeRef};
use super::{PyCode, PyGenericAlias, PyStrRef, PyTypeRef};
use crate::{
builtins::PyBaseExceptionRef,
coroutine::Coro,
@@ -123,6 +123,11 @@ impl PyAsyncGen {
fn ag_code(&self, _vm: &VirtualMachine) -> PyRef<PyCode> {
self.inner.frame().code.clone()
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl Unconstructible for PyAsyncGen {}
+7 -2
View File
@@ -1,6 +1,6 @@
use super::{
set::PySetInner, IterStatus, PositionIterInternal, PyBaseExceptionRef, PySet, PyStrRef,
PyTypeRef,
set::PySetInner, IterStatus, PositionIterInternal, PyBaseExceptionRef, PyGenericAlias, PySet,
PyStrRef, PyTypeRef,
};
use crate::{
builtins::PyTuple,
@@ -413,6 +413,11 @@ impl PyDict {
fn reversed(zelf: PyRef<Self>) -> PyDictReverseKeyIterator {
PyDictReverseKeyIterator::new(zelf)
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl AsMapping for PyDict {
+7 -2
View File
@@ -1,4 +1,4 @@
use super::{IterStatus, PositionIterInternal, PyIntRef, PyTupleRef, PyTypeRef};
use super::{IterStatus, PositionIterInternal, PyGenericAlias, PyIntRef, PyTupleRef, PyTypeRef};
use crate::common::lock::{PyMutex, PyRwLock};
use crate::{
function::{IntoPyObject, OptionalArg},
@@ -47,7 +47,12 @@ impl Constructor for PyEnumerate {
}
#[pyimpl(with(IterNext, Constructor), flags(BASETYPE))]
impl PyEnumerate {}
impl PyEnumerate {
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl IterNextIterable for PyEnumerate {}
impl IterNext for PyEnumerate {
+6 -1
View File
@@ -1,4 +1,4 @@
use super::{PyDict, PyList, PyStrRef, PyTuple, PyTypeRef};
use super::{PyDict, PyGenericAlias, PyList, PyStrRef, PyTuple, PyTypeRef};
use crate::{
function::{IntoPyObject, OptionalArg},
protocol::{PyMapping, PyMappingMethods},
@@ -148,6 +148,11 @@ impl PyMappingProxy {
};
Ok(format!("mappingproxy({})", vm.to_repr(&obj)?))
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl AsMapping for PyMappingProxy {
+14 -1
View File
@@ -1,7 +1,10 @@
/*
* Builtin set type with a sequence of unique items.
*/
use super::{builtins_iter, IterStatus, PositionIterInternal, PyDictRef, PyTupleRef, PyTypeRef};
use super::{
builtins_iter, IterStatus, PositionIterInternal, PyDictRef, PyGenericAlias, PyTupleRef,
PyTypeRef,
};
use crate::common::{ascii, hash::PyHash, lock::PyMutex, rc::PyRc};
use crate::{
dictdatatype::{self, DictSize},
@@ -619,6 +622,11 @@ impl PySet {
) -> PyResult<(PyTypeRef, PyTupleRef, Option<PyDictRef>)> {
reduce_set(zelf.as_ref(), vm)
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl Comparable for PySet {
@@ -810,6 +818,11 @@ impl PyFrozenSet {
) -> PyResult<(PyTypeRef, PyTupleRef, Option<PyDictRef>)> {
reduce_set(zelf.as_ref(), vm)
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl Hashable for PyFrozenSet {
+6 -1
View File
@@ -1,4 +1,4 @@
use super::{PositionIterInternal, PyTypeRef};
use super::{PositionIterInternal, PyGenericAlias, PyTypeRef};
use crate::common::hash::PyHash;
use crate::{
function::{IntoPyObject, OptionalArg},
@@ -303,6 +303,11 @@ impl PyTuple {
};
(tup_arg,)
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl AsMapping for PyTuple {
+6 -1
View File
@@ -1,4 +1,4 @@
use super::PyTypeRef;
use super::{PyGenericAlias, PyTypeRef};
use crate::common::hash::PyHash;
use crate::{
function::OptionalArg,
@@ -83,6 +83,11 @@ impl PyWeak {
format!("<weakref at {:#x}; dead>", id)
}
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl Hashable for PyWeak {
+6 -1
View File
@@ -2,7 +2,7 @@ pub(crate) use _collections::make_module;
#[pymodule]
mod _collections {
use crate::builtins::PositionIterInternal;
use crate::builtins::{PositionIterInternal, PyGenericAlias};
use crate::common::lock::{PyMutex, PyRwLock, PyRwLockReadGuard, PyRwLockWriteGuard};
use crate::{
builtins::{
@@ -529,6 +529,11 @@ mod _collections {
};
Ok(vm.new_pyobj((cls, value, vm.ctx.none(), PyDequeIterator::new(zelf))))
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl Comparable for PyDeque {
+6 -1
View File
@@ -7,7 +7,7 @@ mod decl {
rc::PyRc,
};
use crate::{
builtins::{int, PyInt, PyIntRef, PyTuple, PyTupleRef, PyTypeRef},
builtins::{int, PyGenericAlias, PyInt, PyIntRef, PyTuple, PyTupleRef, PyTypeRef},
function::{ArgCallable, FuncArgs, IntoPyObject, OptionalArg, OptionalOption, PosArgs},
protocol::{PyIter, PyIterReturn},
stdlib::sys,
@@ -54,6 +54,11 @@ mod decl {
}
.into_ref_with_type(vm, cls)
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl IterNextIterable for PyItertoolsChain {}
impl IterNext for PyItertoolsChain {
+8 -1
View File
@@ -429,7 +429,9 @@ pub(super) mod _os {
};
use crate::common::lock::{OnceCell, PyRwLock};
use crate::{
builtins::{PyBytesRef, PyIntRef, PyStrRef, PyTuple, PyTupleRef, PyTypeRef},
builtins::{
PyBytesRef, PyGenericAlias, PyIntRef, PyStrRef, PyTuple, PyTupleRef, PyTypeRef,
},
crt_fd::{Fd, Offset},
function::{ArgBytesLike, FuncArgs, IntoPyException, IntoPyObject, OptionalArg},
protocol::PyIterReturn,
@@ -890,6 +892,11 @@ pub(super) mod _os {
Ok(format!("<{}>", zelf.class()))
}
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
#[pyattr]
+12 -1
View File
@@ -4,7 +4,8 @@ pub(crate) use _sre::make_module;
mod _sre {
use crate::{
builtins::{
PyCallableIterator, PyDictRef, PyInt, PyList, PyStr, PyStrRef, PyTuple, PyTupleRef,
PyCallableIterator, PyDictRef, PyGenericAlias, PyInt, PyList, PyStr, PyStrRef, PyTuple,
PyTupleRef, PyTypeRef,
},
common::{ascii, hash::PyHash},
function::{ArgCallable, IntoPyObject, OptionalArg, PosArgs},
@@ -513,6 +514,11 @@ mod _sre {
})
})
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
impl Hashable for Pattern {
@@ -787,6 +793,11 @@ mod _sre {
}
Some(slice_drive(&str_drive, start as usize, end as usize, vm))
}
#[pyclassmethod(magic)]
fn class_getitem(cls: PyTypeRef, args: PyObjectRef, vm: &VirtualMachine) -> PyGenericAlias {
PyGenericAlias::new(cls, args, vm)
}
}
#[pyattr]