Make ctypes.Array abstract (#6361)

Co-authored-by: Akuli <akuviljanen17@gmail.com>
This commit is contained in:
Nikita Sobolev
2021-11-28 23:42:23 +03:00
committed by GitHub
parent 77d820c76c
commit d0ce310f55
2 changed files with 13 additions and 2 deletions

View File

@@ -1,5 +1,6 @@
import sys
from _typeshed import ReadableBuffer, WriteableBuffer
from abc import abstractmethod
from typing import (
Any,
Callable,
@@ -268,8 +269,16 @@ class BigEndianStructure(Structure): ...
class LittleEndianStructure(Structure): ...
class Array(Generic[_CT], _CData):
_length_: int
_type_: Type[_CT]
@property
@abstractmethod
def _length_(self) -> int: ...
@_length_.setter
def _length_(self, value: int) -> None: ...
@property
@abstractmethod
def _type_(self) -> Type[_CT]: ...
@_type_.setter
def _type_(self, value: Type[_CT]) -> None: ...
raw: bytes # Note: only available if _CT == c_char
value: Any # Note: bytes if _CT == c_char, str if _CT == c_wchar, unavailable otherwise
# TODO These methods cannot be annotated correctly at the moment.

View File

@@ -73,6 +73,8 @@ csv.Dialect.lineterminator
csv.Dialect.quoting
csv.Dialect.skipinitialspace
ctypes.Array.__iter__ # mypy doesn't support using __getitem__ instead of __iter__ so this is here https://github.com/python/mypy/issues/2220
ctypes.Array._type_ # _type_ and _length_ are abstract, https://github.com/python/typeshed/pull/6361
ctypes.Array._length_
ctypes.CDLL._FuncPtr # None at class level but initialized in __init__ to this value
ctypes.memmove # CFunctionType
ctypes.memset # CFunctionType