Mercurial > public > mercurial-scm > hg
diff mercurial/mail.py @ 51284:f15cb5111a1e
pytype: move some type comment to proper annotation
We support direct type annotations now, while pytype is starting to complains
about them.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 19 Dec 2023 21:29:34 +0100 |
parents | 9d3721552b6c |
children | f4a0806081f2 |
line wrap: on
line diff
--- a/mercurial/mail.py Wed Dec 20 20:13:22 2023 +0100 +++ b/mercurial/mail.py Tue Dec 19 21:29:34 2023 +0100 @@ -21,6 +21,7 @@ from typing import ( Any, List, + Optional, Tuple, Union, ) @@ -113,8 +114,7 @@ return new_socket -def _pyhastls(): - # type: () -> bool +def _pyhastls() -> bool: """Returns true iff Python has TLS support, false otherwise.""" try: import ssl @@ -277,8 +277,7 @@ ) -def codec2iana(cs): - # type: (str) -> str +def codec2iana(cs: str) -> str: ''' ''' cs = email.charset.Charset(cs).input_charset.lower() @@ -288,8 +287,11 @@ return cs -def mimetextpatch(s, subtype='plain', display=False): - # type: (bytes, str, bool) -> email.message.Message +def mimetextpatch( + s: bytes, + subtype: str = 'plain', + display: bool = False, +) -> email.message.Message: """Return MIME message suitable for a patch. Charset will be detected by first trying to decode as us-ascii, then utf-8, and finally the global encodings. If all those fail, fall back to @@ -314,8 +316,9 @@ return mimetextqp(s, subtype, "iso-8859-1") -def mimetextqp(body, subtype, charset): - # type: (bytes, str, str) -> email.message.Message +def mimetextqp( + body: bytes, subtype: str, charset: str +) -> email.message.Message: """Return MIME message. Quoted-printable transfer encoding will be used if necessary. """ @@ -340,8 +343,7 @@ return msg -def _charsets(ui): - # type: (Any) -> List[str] +def _charsets(ui: Any) -> List[str]: '''Obtains charsets to send mail parts not containing patches.''' charsets = [ pycompat.sysstr(cs.lower()) @@ -358,8 +360,7 @@ return [cs for cs in charsets if not cs.endswith('ascii')] -def _encode(ui, s, charsets): - # type: (Any, bytes, List[str]) -> Tuple[bytes, str] +def _encode(ui: Any, s: bytes, charsets: List[str]) -> Tuple[bytes, str]: """Returns (converted) string, charset tuple. Finds out best charset by cycling through sendcharsets in descending order. Tries both encoding and fallbackencoding for input. Only as @@ -409,8 +410,12 @@ return s, 'us-ascii' -def headencode(ui, s, charsets=None, display=False): - # type: (Any, Union[bytes, str], List[str], bool) -> str +def headencode( + ui: Any, + s: Union[bytes, str], + charsets: Optional[List[str]] = None, + display: bool = False, +) -> str: '''Returns RFC-2047 compliant header from given string.''' if not display: # split into words? @@ -419,8 +424,9 @@ return encoding.strfromlocal(s) -def _addressencode(ui, name, addr, charsets=None): - # type: (Any, str, str, List[str]) -> str +def _addressencode( + ui: Any, name: str, addr: str, charsets: Optional[List[str]] = None +) -> str: addr = encoding.strtolocal(addr) name = headencode(ui, name, charsets) try: @@ -439,8 +445,12 @@ return email.utils.formataddr((name, encoding.strfromlocal(addr))) -def addressencode(ui, address, charsets=None, display=False): - # type: (Any, bytes, List[str], bool) -> str +def addressencode( + ui: Any, + address: bytes, + charsets: Optional[List[str]] = None, + display: bool = False, +) -> str: '''Turns address into RFC-2047 compliant header.''' if display or not address: return encoding.strfromlocal(address or b'') @@ -448,8 +458,12 @@ return _addressencode(ui, name, addr, charsets) -def addrlistencode(ui, addrs, charsets=None, display=False): - # type: (Any, List[bytes], List[str], bool) -> List[str] +def addrlistencode( + ui: Any, + addrs: List[bytes], + charsets: Optional[List[str]] = None, + display: bool = False, +) -> List[str]: """Turns a list of addresses into a list of RFC-2047 compliant headers. A single element of input list may contain multiple addresses, but output always has one address per item""" @@ -468,8 +482,12 @@ return result -def mimeencode(ui, s, charsets=None, display=False): - # type: (Any, bytes, List[str], bool) -> email.message.Message +def mimeencode( + ui: Any, + s: bytes, + charsets: Optional[List[str]] = None, + display: bool = False, +) -> email.message.Message: """creates mime text object, encodes it if needed, and sets charset and transfer-encoding accordingly.""" cs = 'us-ascii' @@ -481,8 +499,7 @@ Generator = email.generator.BytesGenerator -def parse(fp): - # type: (Any) -> email.message.Message +def parse(fp: Any) -> email.message.Message: ep = email.parser.Parser() # disable the "universal newlines" mode, which isn't binary safe. # I have no idea if ascii/surrogateescape is correct, but that's @@ -496,14 +513,12 @@ fp.detach() -def parsebytes(data): - # type: (bytes) -> email.message.Message +def parsebytes(data: bytes) -> email.message.Message: ep = email.parser.BytesParser() return ep.parsebytes(data) -def headdecode(s): - # type: (Union[email.header.Header, bytes]) -> bytes +def headdecode(s: Union[email.header.Header, bytes]) -> bytes: '''Decodes RFC-2047 header''' uparts = [] for part, charset in email.header.decode_header(s):