ctypes.POINTER(None) returns ctypes.c_void_p (#12754)

This commit is contained in:
Jun Komoda
2024-10-10 19:29:37 +09:00
committed by GitHub
parent 98f3e5772d
commit 1939ed1dc1
2 changed files with 12 additions and 1 deletions

View File

@@ -0,0 +1,8 @@
from __future__ import annotations
import ctypes
from typing import Type
from typing_extensions import assert_type
assert_type(ctypes.POINTER(None), Type[ctypes.c_void_p])
assert_type(ctypes.POINTER(ctypes.c_int), Type[ctypes._Pointer[ctypes.c_int]])

View File

@@ -2,7 +2,7 @@ import sys
from _typeshed import ReadableBuffer, WriteableBuffer
from abc import abstractmethod
from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence
from ctypes import CDLL, ArgumentError as ArgumentError
from ctypes import CDLL, ArgumentError as ArgumentError, c_void_p
from typing import Any, ClassVar, Generic, TypeVar, overload
from typing_extensions import Self, TypeAlias
@@ -99,6 +99,9 @@ class _Pointer(_PointerLike, _CData, Generic[_CT]):
def __getitem__(self, key: slice, /) -> list[Any]: ...
def __setitem__(self, key: int, value: Any, /) -> None: ...
@overload
def POINTER(type: None, /) -> type[c_void_p]: ...
@overload
def POINTER(type: type[_CT], /) -> type[_Pointer[_CT]]: ...
def pointer(obj: _CT, /) -> _Pointer[_CT]: ...