5 from _typeshed import Self
6 from typing import IO, Any, Iterable, NamedTuple, Tuple, Union
8 _File = Union[IO[bytes], bytes, str, None]
10 class NNTPError(Exception):
13 class NNTPReplyError(NNTPError): ...
14 class NNTPTemporaryError(NNTPError): ...
15 class NNTPPermanentError(NNTPError): ...
16 class NNTPProtocolError(NNTPError): ...
17 class NNTPDataError(NNTPError): ...
22 class GroupInfo(NamedTuple):
28 class ArticleInfo(NamedTuple):
33 def decode_header(header_str: str) -> str: ...
35 _list = list # conflicts with a method named "list"
45 readermode_afterauth: bool
48 nntp_implementation: str
50 def __init__(self, file: IO[bytes], host: str, readermode: bool | None = ..., timeout: float = ...) -> None: ...
51 def __enter__(self: Self) -> Self: ...
52 def __exit__(self, *args: Any) -> None: ...
53 def getwelcome(self) -> str: ...
54 def getcapabilities(self) -> dict[str, _list[str]]: ...
55 def set_debuglevel(self, level: int) -> None: ...
56 def debug(self, level: int) -> None: ...
57 def capabilities(self) -> tuple[str, dict[str, _list[str]]]: ...
58 def newgroups(self, date: datetime.date | datetime.datetime, *, file: _File = ...) -> tuple[str, _list[str]]: ...
59 def newnews(self, group: str, date: datetime.date | datetime.datetime, *, file: _File = ...) -> tuple[str, _list[str]]: ...
60 def list(self, group_pattern: str | None = ..., *, file: _File = ...) -> tuple[str, _list[str]]: ...
61 def description(self, group: str) -> str: ...
62 def descriptions(self, group_pattern: str) -> tuple[str, dict[str, str]]: ...
63 def group(self, name: str) -> tuple[str, int, int, int, str]: ...
64 def help(self, *, file: _File = ...) -> tuple[str, _list[str]]: ...
65 def stat(self, message_spec: Any = ...) -> tuple[str, int, str]: ...
66 def next(self) -> tuple[str, int, str]: ...
67 def last(self) -> tuple[str, int, str]: ...
68 def head(self, message_spec: Any = ..., *, file: _File = ...) -> tuple[str, ArticleInfo]: ...
69 def body(self, message_spec: Any = ..., *, file: _File = ...) -> tuple[str, ArticleInfo]: ...
70 def article(self, message_spec: Any = ..., *, file: _File = ...) -> tuple[str, ArticleInfo]: ...
71 def slave(self) -> str: ...
72 def xhdr(self, hdr: str, str: Any, *, file: _File = ...) -> tuple[str, _list[str]]: ...
73 def xover(self, start: int, end: int, *, file: _File = ...) -> tuple[str, _list[tuple[int, dict[str, str]]]]: ...
75 self, message_spec: None | str | _list[Any] | Tuple[Any, ...], *, file: _File = ...
76 ) -> tuple[str, _list[tuple[int, dict[str, str]]]]: ...
77 if sys.version_info < (3, 9):
78 def xgtitle(self, group: str, *, file: _File = ...) -> tuple[str, _list[tuple[str, str]]]: ...
79 def xpath(self, id: Any) -> tuple[str, str]: ...
80 def date(self) -> tuple[str, datetime.datetime]: ...
81 def post(self, data: bytes | Iterable[bytes]) -> str: ...
82 def ihave(self, message_id: Any, data: bytes | Iterable[bytes]) -> str: ...
83 def quit(self) -> str: ...
84 def login(self, user: str | None = ..., password: str | None = ..., usenetrc: bool = ...) -> None: ...
85 def starttls(self, context: ssl.SSLContext | None = ...) -> None: ...
87 class NNTP(_NNTPBase):
94 user: str | None = ...,
95 password: str | None = ...,
96 readermode: bool | None = ...,
101 class NNTP_SSL(_NNTPBase):
107 user: str | None = ...,
108 password: str | None = ...,
109 ssl_context: ssl.SSLContext | None = ...,
110 readermode: bool | None = ...,
111 usenetrc: bool = ...,
112 timeout: float = ...,