Update types.SimpleNamespace for 3.13 (#12297)

This commit is contained in:
Max Muoto
2024-07-09 14:22:57 -05:00
committed by GitHub
parent 694c982b4f
commit 23fd30f563
8 changed files with 39 additions and 2 deletions

View File

@@ -500,7 +500,6 @@ types.MethodType.__closure__ # read-only but not actually a property; stubtest
types.MethodType.__defaults__ # read-only but not actually a property; stubtest thinks it doesn't exist.
types.ModuleType.__dict__ # read-only but not actually a property; stubtest thinks it's a mutable attribute.
types.ModuleType.__getattr__ # this doesn't exist at runtime
types.SimpleNamespace.__init__ # class doesn't accept positional arguments but has default C signature
# sys attributes that are not always defined
sys.gettotalrefcount # Available on python debug builds

View File

@@ -249,6 +249,7 @@ pkgutil.ImpImporter\..*
pkgutil.ImpLoader\..*
types.CodeType.replace # stubtest thinks default values are None but None doesn't work at runtime
types.SimpleNamespace.__init__ # class doesn't accept positional arguments but has default C signature
# These enums derive from (str, Enum)
pstats.SortKey.__new__

View File

@@ -135,6 +135,7 @@ inspect._ParameterKind.description # Still exists, but stubtest can't see it
os.PathLike.__class_getitem__ # PathLike is a protocol; we don't expect all PathLike classes to implement class_getitem
poplib.POP3_SSL.stls # bad declaration of inherited function. See poplib.pyi
types.GenericAlias.__call__ # Would be complicated to fix properly, Any could silence problems. #6392
types.SimpleNamespace.__init__ # class doesn't accept positional arguments but has default C signature
types.GenericAlias.__getattr__
types.GenericAlias.__mro_entries__
weakref.ProxyType.__reversed__ # Doesn't really exist

View File

@@ -184,6 +184,9 @@ typing.ParamSpecKwargs.__mro_entries__
typing.TypeVar.__mro_entries__
typing.TypeVarTuple.__mro_entries__
# class doesn't accept positional arguments but has default C signature
types.SimpleNamespace.__init__
# TODO: mypy should infer that this attribute is inherited from builtins.type;
# why doesn't it infer this?
typing.SupportsAbs.__type_params__

View File

@@ -206,6 +206,7 @@ types.GetSetDescriptorType.__get__
types.MemberDescriptorType.__get__
types.MethodDescriptorType.__get__
types.WrapperDescriptorType.__get__
types.SimpleNamespace.__init__ # class doesn't accept positional arguments but has default C signature
multiprocessing.managers.DictProxy.clear
multiprocessing.managers.DictProxy.popitem

View File

@@ -223,6 +223,7 @@ pkgutil.ImpImporter\..*
pkgutil.ImpLoader\..*
types.CodeType.replace # stubtest thinks default values are None but None doesn't work at runtime
types.SimpleNamespace.__init__ # class doesn't accept positional arguments but has default C signature
# These enums derive from (str, Enum)
pstats.SortKey.__new__

View File

@@ -0,0 +1,27 @@
import sys
import types
from collections import UserDict
# test `types.SimpleNamespace`
# Valid:
types.SimpleNamespace()
types.SimpleNamespace(x=1, y=2)
if sys.version_info >= (3, 13):
types.SimpleNamespace(())
types.SimpleNamespace([])
types.SimpleNamespace([("x", "y"), ("z", 1)])
types.SimpleNamespace({})
types.SimpleNamespace(UserDict({"x": 1, "y": 2}))
# Invalid:
types.SimpleNamespace(1) # type: ignore
types.SimpleNamespace([1]) # type: ignore
types.SimpleNamespace([["x"]]) # type: ignore
types.SimpleNamespace(**{1: 2}) # type: ignore
types.SimpleNamespace({1: 2}) # type: ignore
types.SimpleNamespace([[1, 2]]) # type: ignore
types.SimpleNamespace(UserDict({1: 2})) # type: ignore
types.SimpleNamespace([[[], 2]]) # type: ignore