From 9390a49600b033360ad5c5f16a3e725bbbd43f38 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Thu, 9 Nov 2017 10:40:49 -0800 Subject: [PATCH] complete multiprocessing.connection stub (#1716) Adds additional public members based on https://github.com/python/cpython/blob/master/Lib/multiprocessing/connection.py#L10 and https://docs.python.org/3/library/multiprocessing.html#multiprocessing-listeners-clients. I found some discrepancies in the docs while adding these stubs and filed python/cpython#4304 to address them. --- stdlib/3/multiprocessing/connection.pyi | 27 ++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/stdlib/3/multiprocessing/connection.pyi b/stdlib/3/multiprocessing/connection.pyi index 0f267a630..2bad30958 100644 --- a/stdlib/3/multiprocessing/connection.pyi +++ b/stdlib/3/multiprocessing/connection.pyi @@ -1,4 +1,29 @@ -from typing import Any, Optional +from typing import Any, Iterable, List, Optional, Tuple, Type, Union +import socket +import sys +import types + +# https://docs.python.org/3/library/multiprocessing.html#address-formats +_Address = Union[str, Tuple[str, int]] + +def deliver_challenge(connection: Connection, authkey: bytes) -> None: ... +def answer_challenge(connection: Connection, authkey: bytes) -> None: ... +if sys.version_info >= (3, 3): + def wait(object_list: Iterable[Union[Connection, socket.socket, int]], timeout: Optional[float] = ...) -> List[Union[Connection, socket.socket, int]]: ... +def Client(address: _Address, family: Optional[str] = ..., authkey: Optional[bytes] = ...) -> Connection: ... +def Pipe(duplex: bool = ...) -> Tuple[Connection, Connection]: ... + +class Listener: + def __init__(self, address: Optional[_Address] = ..., family: Optional[str] = ..., backlog: int = ..., authkey: Optional[bytes] = ...) -> None: ... + def accept(self) -> Connection: ... + def close(self) -> None: ... + @property + def address(self) -> _Address: ... + @property + def last_accepted(self) -> Optional[_Address]: ... + if sys.version_info >= (3, 3): + def __enter__(self) -> Listener: ... + def __exit__(self, exc_type: Optional[Type[BaseException]], exc_value: Optional[BaseException], exc_tb: Optional[types.TracebackType]) -> None: ... class Connection: def close(self) -> None: ...