From 25bac1d716af7f85f73b4cce00a72a76a55747dd Mon Sep 17 00:00:00 2001 From: hatal175 Date: Sun, 11 Apr 2021 05:18:22 +0300 Subject: [PATCH] csv, ctypes, configparser explanations (#5204) --- stdlib/configparser.pyi | 6 +++-- stdlib/ctypes/__init__.pyi | 30 ++++++++++++++++-------- tests/stubtest_whitelists/py36.txt | 1 - tests/stubtest_whitelists/py37.txt | 1 - tests/stubtest_whitelists/py3_common.txt | 20 ++++++++-------- 5 files changed, 34 insertions(+), 24 deletions(-) diff --git a/stdlib/configparser.pyi b/stdlib/configparser.pyi index d5ee8760a..f4a4e889c 100644 --- a/stdlib/configparser.pyi +++ b/stdlib/configparser.pyi @@ -45,7 +45,9 @@ class Interpolation: class BasicInterpolation(Interpolation): ... class ExtendedInterpolation(Interpolation): ... -class LegacyInterpolation(Interpolation): ... + +class LegacyInterpolation(Interpolation): + def before_get(self, parser: _parser, section: str, option: str, value: str, vars: _section) -> str: ... class RawConfigParser(_parser): _SECT_TMPL: ClassVar[str] = ... # Undocumented @@ -188,7 +190,7 @@ class SectionProxy(MutableMapping[str, str]): def getboolean( self, option: str, fallback: _T = ..., *, raw: bool = ..., vars: Optional[_section] = ... ) -> Union[bool, _T]: ... - # SectionProxy can have arbitrary attributes when custon converters are used + # SectionProxy can have arbitrary attributes when custom converters are used def __getattr__(self, key: str) -> Callable[..., Any]: ... class ConverterMapping(MutableMapping[str, Optional[_converter]]): diff --git a/stdlib/ctypes/__init__.pyi b/stdlib/ctypes/__init__.pyi index b55433109..299672ad0 100644 --- a/stdlib/ctypes/__init__.pyi +++ b/stdlib/ctypes/__init__.pyi @@ -36,15 +36,25 @@ class CDLL(object): _name: str = ... _handle: int = ... _FuncPtr: Type[_FuncPointer] = ... - def __init__( - self, - name: Optional[str], - mode: int = ..., - handle: Optional[int] = ..., - use_errno: bool = ..., - use_last_error: bool = ..., - winmode: Optional[int] = ..., - ) -> None: ... + if sys.version_info >= (3, 8): + def __init__( + self, + name: Optional[str], + mode: int = ..., + handle: Optional[int] = ..., + use_errno: bool = ..., + use_last_error: bool = ..., + winmode: Optional[int] = ..., + ) -> None: ... + else: + def __init__( + self, + name: Optional[str], + mode: int = ..., + handle: Optional[int] = ..., + use_errno: bool = ..., + use_last_error: bool = ..., + ) -> None: ... def __getattr__(self, name: str) -> _NamedFuncPointer: ... def __getitem__(self, name: str) -> _NamedFuncPointer: ... @@ -151,7 +161,7 @@ def byref(obj: _CData, offset: int = ...) -> _CArgObject: ... _CastT = TypeVar("_CastT", bound=_CanCastTo) -def cast(obj: _UnionT[_CData, _CArgObject, int], type: Type[_CastT]) -> _CastT: ... +def cast(obj: _UnionT[_CData, _CArgObject, int], typ: Type[_CastT]) -> _CastT: ... def create_string_buffer(init: _UnionT[int, bytes], size: Optional[int] = ...) -> Array[c_char]: ... c_buffer = create_string_buffer diff --git a/tests/stubtest_whitelists/py36.txt b/tests/stubtest_whitelists/py36.txt index cf51af947..d30722aef 100644 --- a/tests/stubtest_whitelists/py36.txt +++ b/tests/stubtest_whitelists/py36.txt @@ -20,7 +20,6 @@ collections.AsyncGenerator.ag_running collections.UserString.maketrans contextlib._GeneratorContextManager.__init__ copy.PyStringMap -ctypes.CDLL.__init__ email.message.MIMEPart.as_string enum.Enum._generate_next_value_ fractions.Fraction.__new__ # overload is too complicated for stubtest to resolve diff --git a/tests/stubtest_whitelists/py37.txt b/tests/stubtest_whitelists/py37.txt index 48747a556..44287e09c 100644 --- a/tests/stubtest_whitelists/py37.txt +++ b/tests/stubtest_whitelists/py37.txt @@ -29,7 +29,6 @@ contextvars.Context.get contextvars.ContextVar.get contextlib.nullcontext # not a function at runtime copy.PyStringMap -ctypes.CDLL.__init__ dataclasses.field email.message.MIMEPart.as_string enum.Enum._generate_next_value_ diff --git a/tests/stubtest_whitelists/py3_common.txt b/tests/stubtest_whitelists/py3_common.txt index e63fb667e..bdfe18946 100644 --- a/tests/stubtest_whitelists/py3_common.txt +++ b/tests/stubtest_whitelists/py3_common.txt @@ -120,24 +120,24 @@ collections.abc.Generator.gi_yieldfrom collections.abc.Mapping.get collections.abc.Sequence.index collections.deque.__hash__ -configparser.LegacyInterpolation.before_get -configparser.SectionProxy.__getattr__ +configparser.SectionProxy.__getattr__ # SectionProxy can have arbitrary attributes when custom converters are used +# SectionProxy get functions are set in __init__ configparser.SectionProxy.getboolean configparser.SectionProxy.getfloat configparser.SectionProxy.getint +# The Dialect properties are initialized as None in Dialect but their values are enforced in _Dialect csv.Dialect.delimiter csv.Dialect.doublequote csv.Dialect.lineterminator csv.Dialect.quoting csv.Dialect.skipinitialspace -ctypes.Array.__iter__ -ctypes.CDLL._FuncPtr -ctypes.cast -ctypes.memmove -ctypes.memset -ctypes.pointer -ctypes.string_at -ctypes.wstring_at +ctypes.Array.__iter__ # mypy doesn't support using __getitem__ instead of __iter__ so this is here https://github.com/python/mypy/issues/2220 +ctypes.CDLL._FuncPtr # None at class level but initialized in __init__ to this value +ctypes.memmove # CFunctionType +ctypes.memset # CFunctionType +ctypes.pointer # imported C function +ctypes.string_at # docstring argument name is wrong +ctypes.wstring_at # docstring argument name is wrong dbm.error difflib.SequenceMatcher.__init__ # mypy default value for generic parameter issues. See https://github.com/python/mypy/issues/3737 distutils.command.bdist_packager # It exists in docs as package name but not in code except as a mention in a comment.