Skip to content

Commit 28c05a9

Browse files
committed
Add type stub for PySocks
1 parent f8773eb commit 28c05a9

File tree

3 files changed

+184
-0
lines changed

3 files changed

+184
-0
lines changed

stubs/PySocks/METADATA.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
version = "1.7.1"
2+
upstream_repository = "https://github.com/Anorov/PySocks"

stubs/PySocks/socks.pyi

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
import logging
2+
import socket
3+
import types
4+
from _typeshed import ReadableBuffer
5+
from collections.abc import Callable, Mapping
6+
from enum import IntEnum
7+
from typing import Any, Final, TypeVar
8+
from typing_extensions import ParamSpec, TypeAlias
9+
10+
__version__: str
11+
12+
log: logging.Logger # undocumented
13+
14+
class _ProxyType(IntEnum):
15+
SOCKS4 = 1
16+
SOCKS5 = 2
17+
HTTP = 3
18+
19+
PROXY_TYPE_SOCKS4: Final = _ProxyType.SOCKS4
20+
SOCKS4: Final = _ProxyType.SOCKS4
21+
PROXY_TYPE_SOCKS5: Final = _ProxyType.SOCKS5
22+
SOCKS5: Final = _ProxyType.SOCKS5
23+
PROXY_TYPE_HTTP: Final = _ProxyType.HTTP
24+
HTTP: Final = _ProxyType.HTTP
25+
26+
PROXY_TYPES: Final[dict[str, _ProxyType]]
27+
PRINTABLE_PROXY_TYPES: Final[dict[_ProxyType, str]]
28+
29+
_T = TypeVar("_T")
30+
_P = ParamSpec("_P")
31+
32+
def set_self_blocking(function: Callable[_P, _T]) -> Callable[_P, _T]: ... # undocumented
33+
34+
class ProxyError(IOError):
35+
msg: str
36+
socket_err: socket.error
37+
def __init__(self, msg: str, socket_err: socket.error | None = None) -> None: ...
38+
39+
class GeneralProxyError(ProxyError): ...
40+
class ProxyConnectionError(ProxyError): ...
41+
class SOCKS5AuthError(ProxyError): ...
42+
class SOCKS5Error(ProxyError): ...
43+
class SOCKS4Error(ProxyError): ...
44+
class HTTPError(ProxyError): ...
45+
46+
SOCKS4_ERRORS: Final[Mapping[int, str]]
47+
SOCKS5_ERRORS: Final[Mapping[int, str]]
48+
DEFAULT_PORTS: Final[Mapping[_ProxyType, int]]
49+
50+
_DefaultProxy: TypeAlias = tuple[_ProxyType | None, str | None, int | None, bool, bytes | None, bytes | None]
51+
52+
def set_default_proxy(
53+
proxy_type: _ProxyType | None = None,
54+
addr: str | None = None,
55+
port: int | None = None,
56+
rdns: bool = True,
57+
username: str | None = None,
58+
password: str | None = None,
59+
) -> None: ...
60+
def setdefaultproxy(*args: Any, **kwargs: Any) -> None: ...
61+
def get_default_proxy() -> _DefaultProxy | None: ...
62+
63+
getdefaultproxy = get_default_proxy
64+
65+
def wrap_module(module: types.ModuleType) -> None: ...
66+
67+
wrapmodule = wrap_module
68+
69+
_Endpoint: TypeAlias = tuple[str, int]
70+
71+
def create_connection(
72+
dest_pair: _Endpoint,
73+
timeout: int | None = None,
74+
source_address: _Endpoint | None = None,
75+
proxy_type: _ProxyType | None = None,
76+
proxy_addr: str | None = None,
77+
proxy_port: int | None = None,
78+
proxy_rdns: bool = True,
79+
proxy_username: str | None = None,
80+
proxy_password: str | None = None,
81+
socket_options: Any | None = None,
82+
) -> socksocket: ...
83+
84+
class _BaseSocket(socket.socket): # undocumented
85+
def __init__(self, *pos: Any, **kw: Any) -> None: ...
86+
87+
method: Any # undocumented
88+
89+
class socksocket(_BaseSocket):
90+
default_proxy: _DefaultProxy | None # undocumented
91+
proxy: _DefaultProxy # undocumented
92+
proxy_sockname: _Endpoint | None # undocumented
93+
proxy_peername: _Endpoint | None # undocumented
94+
def __init__(
95+
self, family: socket.AddressFamily = ..., type: socket.SocketKind = ..., proto: int = 0, *args: Any, **kwargs: Any
96+
) -> None: ...
97+
def settimeout(self, timeout: float | None) -> None: ...
98+
def gettimeout(self) -> float | None: ...
99+
def setblocking(self, v: bool) -> None: ...
100+
def set_proxy(
101+
self,
102+
proxy_type: _ProxyType | None = None,
103+
addr: str | None = None,
104+
port: int | None = None,
105+
rdns: bool = True,
106+
username: str | None = None,
107+
password: str | None = None,
108+
) -> None: ...
109+
def setproxy(self, *args: Any, **kwargs: Any) -> None: ...
110+
def bind(self, *pos: Any, **kw: Any) -> None: ...
111+
def sendto(self, bytes: ReadableBuffer, *args: Any, **kwargs: Any) -> int: ...
112+
def send(self, bytes: ReadableBuffer, flags: int = 0, **kwargs: Any) -> int: ...
113+
def recvfrom(self, bufsize: int, flags: int = 0) -> tuple[bytes, _Endpoint]: ...
114+
def recv(self, *pos: Any, **kw: Any) -> bytes: ...
115+
def close(self) -> None: ...
116+
def get_proxy_sockname(self) -> _Endpoint | None: ...
117+
getproxysockname = get_proxy_sockname
118+
def get_proxy_peername(self) -> _Endpoint | None: ...
119+
getproxypeername = get_proxy_peername
120+
def get_peername(self) -> _Endpoint | None: ...
121+
getpeername = get_peername
122+
@set_self_blocking
123+
def connect(self, dest_pair: _Endpoint, catch_errors: bool | None = None) -> None: ... # type: ignore[override]
124+
@set_self_blocking
125+
def connect_ex(self, dest_pair: _Endpoint) -> int: ... # type: ignore[override]

stubs/PySocks/sockshandler.pyi

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import http.client
2+
import urllib.request
3+
from collections.abc import Mapping
4+
from typing import Any, TypeVar
5+
from typing_extensions import override
6+
7+
import socks
8+
9+
_T = TypeVar("_T")
10+
11+
def merge_dict(a: Mapping[_T, Any], b: Mapping[_T, Any]) -> dict[_T, Any]: ... # undocumented
12+
def is_ip(s: str) -> bool: ... # undocumented
13+
14+
socks4_no_rdns: set[str] # undocumented
15+
16+
class SocksiPyConnection(http.client.HTTPConnection): # undocumented
17+
proxyargs: tuple[int, str, int | None, bool, str | None, str | None]
18+
sock: socks.socksocket
19+
def __init__(
20+
self,
21+
proxytype: int,
22+
proxyaddr: str,
23+
proxyport: int | None = None,
24+
rdns: bool = True,
25+
username: str | None = None,
26+
password: str | None = None,
27+
*args: Any,
28+
**kwargs: Any,
29+
) -> None: ...
30+
@override
31+
def connect(self) -> None: ...
32+
33+
class SocksiPyConnectionS(http.client.HTTPSConnection): # undocumented
34+
proxyargs: tuple[int, str, int | None, bool, str | None, str | None]
35+
sock: socks.socksocket
36+
def __init__(
37+
self,
38+
proxytype: int,
39+
proxyaddr: str,
40+
proxyport: int | None = None,
41+
rdns: bool = True,
42+
username: str | None = None,
43+
password: str | None = None,
44+
*args: Any,
45+
**kwargs: Any,
46+
) -> None: ...
47+
@override
48+
def connect(self) -> None: ...
49+
50+
class SocksiPyHandler(urllib.request.HTTPHandler, urllib.request.HTTPSHandler):
51+
args: Any # undocumented
52+
kw: Any # undocumented
53+
def __init__(self, *args: Any, **kwargs: Any) -> None: ...
54+
@override
55+
def http_open(self, req: urllib.request.Request) -> http.client.HTTPResponse: ... # undocumented
56+
@override
57+
def https_open(self, req: urllib.request.Request) -> http.client.HTTPResponse: ... # undocumented

0 commit comments

Comments
 (0)