From 600ea28722f798ce769be5b8e3e0abb51ee8d41e Mon Sep 17 00:00:00 2001 From: David Euresti Date: Thu, 6 Apr 2017 07:50:26 -0400 Subject: [PATCH 1/5] Unify binascii module --- stdlib/2/binascii.pyi | 47 +++++++++++++++++++++++++++---------------- stdlib/3/binascii.pyi | 42 ++++++++++++++++++++++---------------- 2 files changed, 55 insertions(+), 34 deletions(-) diff --git a/stdlib/2/binascii.pyi b/stdlib/2/binascii.pyi index f8b85b6da478..df068e701d07 100644 --- a/stdlib/2/binascii.pyi +++ b/stdlib/2/binascii.pyi @@ -1,21 +1,34 @@ -"""Stubs for the binascii module.""" +# Stubs for binascii -def a2b_base64(string: str) -> str: ... -def a2b_hex(hexstr: str) -> str: ... -def a2b_hqx(string: str) -> str: ... -def a2b_qp(string: str, header: bool = ...) -> str: ... -def a2b_uu(string: str) -> str: ... -def b2a_base64(data: str) -> str: ... -def b2a_hex(data: str) -> str: ... -def b2a_hqx(data: str) -> str: ... -def b2a_qp(data: str, quotetabs: bool = ..., istext: bool = ..., header: bool = ...) -> str: ... -def b2a_uu(data: str) -> str: ... -def crc32(data: str, crc: int = None) -> int: ... -def crc_hqx(data: str, oldcrc: int) -> int: ... -def hexlify(data: str) -> str: ... -def rlecode_hqx(data: str) -> str: ... -def rledecode_hqx(data: str) -> str: ... -def unhexlify(hexstr: str) -> str: ... +# Based on http://docs.python.org/3.2/library/binascii.html + +import sys +from typing import Union, Text + +if sys.version_info < (3,): + # Python 2 accepts unicode ascii pretty much everywhere. + _Bytes = Union[bytes, Text] +else: + # Python 3 only accepts bytes on the b2a methods. + _Bytes = bytes + +def a2b_uu(string: Union[Text, bytes]) -> bytes: ... +def b2a_uu(data: _Bytes) -> bytes: ... +def a2b_base64(string: Union[Text, bytes]) -> bytes: ... +def b2a_base64(data: _Bytes) -> bytes: ... +def a2b_qp(string: Union[Text, bytes], header: bool = ...) -> bytes: ... +def b2a_qp(data: _Bytes, quotetabs: bool = ..., istext: bool = ..., + header: bool = ...) -> bytes: ... +def a2b_hqx(string: Union[Text, bytes]) -> bytes: ... +def rledecode_hqx(data: _Bytes) -> bytes: ... +def rlecode_hqx(data: _Bytes) -> bytes: ... +def b2a_hqx(data: _Bytes) -> bytes: ... +def crc_hqx(data: _Bytes, crc: int) -> int: ... +def crc32(data: _Bytes, crc: int = ...) -> int: ... +def b2a_hex(data: _Bytes) -> bytes: ... +def hexlify(data: _Bytes) -> bytes: ... +def a2b_hex(hexstr: Union[Text, bytes]) -> bytes: ... +def unhexlify(hexlify: Union[Text, bytes]) -> bytes: ... class Error(Exception): ... class Incomplete(Exception): ... diff --git a/stdlib/3/binascii.pyi b/stdlib/3/binascii.pyi index edbd97012b18..df068e701d07 100644 --- a/stdlib/3/binascii.pyi +++ b/stdlib/3/binascii.pyi @@ -2,25 +2,33 @@ # Based on http://docs.python.org/3.2/library/binascii.html -from typing import Union +import sys +from typing import Union, Text -def a2b_uu(string: Union[str, bytes]) -> bytes: ... -def b2a_uu(data: bytes) -> bytes: ... -def a2b_base64(string: Union[str, bytes]) -> bytes: ... -def b2a_base64(data: bytes) -> bytes: ... -def a2b_qp(string: Union[str, bytes], header: bool = ...) -> bytes: ... -def b2a_qp(data: bytes, quotetabs: bool = ..., istext: bool = ..., +if sys.version_info < (3,): + # Python 2 accepts unicode ascii pretty much everywhere. + _Bytes = Union[bytes, Text] +else: + # Python 3 only accepts bytes on the b2a methods. + _Bytes = bytes + +def a2b_uu(string: Union[Text, bytes]) -> bytes: ... +def b2a_uu(data: _Bytes) -> bytes: ... +def a2b_base64(string: Union[Text, bytes]) -> bytes: ... +def b2a_base64(data: _Bytes) -> bytes: ... +def a2b_qp(string: Union[Text, bytes], header: bool = ...) -> bytes: ... +def b2a_qp(data: _Bytes, quotetabs: bool = ..., istext: bool = ..., header: bool = ...) -> bytes: ... -def a2b_hqx(string: Union[str, bytes]) -> bytes: ... -def rledecode_hqx(data: bytes) -> bytes: ... -def rlecode_hqx(data: bytes) -> bytes: ... -def b2a_hqx(data: bytes) -> bytes: ... -def crc_hqx(data: bytes, crc: int) -> int: ... -def crc32(data: bytes, crc: int = ...) -> int: ... -def b2a_hex(data: bytes) -> bytes: ... -def hexlify(data: bytes) -> bytes: ... -def a2b_hex(hexstr: Union[str, bytes]) -> bytes: ... -def unhexlify(hexlify: Union[str, bytes]) -> bytes: ... +def a2b_hqx(string: Union[Text, bytes]) -> bytes: ... +def rledecode_hqx(data: _Bytes) -> bytes: ... +def rlecode_hqx(data: _Bytes) -> bytes: ... +def b2a_hqx(data: _Bytes) -> bytes: ... +def crc_hqx(data: _Bytes, crc: int) -> int: ... +def crc32(data: _Bytes, crc: int = ...) -> int: ... +def b2a_hex(data: _Bytes) -> bytes: ... +def hexlify(data: _Bytes) -> bytes: ... +def a2b_hex(hexstr: Union[Text, bytes]) -> bytes: ... +def unhexlify(hexlify: Union[Text, bytes]) -> bytes: ... class Error(Exception): ... class Incomplete(Exception): ... From 18d5088ae663d528f8590a73ed35df2c642f0449 Mon Sep 17 00:00:00 2001 From: David Euresti Date: Thu, 6 Apr 2017 07:57:43 -0400 Subject: [PATCH 2/5] Move binascii to 2and3 --- stdlib/{2 => 2and3}/binascii.pyi | 0 stdlib/3/binascii.pyi | 34 -------------------------------- 2 files changed, 34 deletions(-) rename stdlib/{2 => 2and3}/binascii.pyi (100%) delete mode 100644 stdlib/3/binascii.pyi diff --git a/stdlib/2/binascii.pyi b/stdlib/2and3/binascii.pyi similarity index 100% rename from stdlib/2/binascii.pyi rename to stdlib/2and3/binascii.pyi diff --git a/stdlib/3/binascii.pyi b/stdlib/3/binascii.pyi deleted file mode 100644 index df068e701d07..000000000000 --- a/stdlib/3/binascii.pyi +++ /dev/null @@ -1,34 +0,0 @@ -# Stubs for binascii - -# Based on http://docs.python.org/3.2/library/binascii.html - -import sys -from typing import Union, Text - -if sys.version_info < (3,): - # Python 2 accepts unicode ascii pretty much everywhere. - _Bytes = Union[bytes, Text] -else: - # Python 3 only accepts bytes on the b2a methods. - _Bytes = bytes - -def a2b_uu(string: Union[Text, bytes]) -> bytes: ... -def b2a_uu(data: _Bytes) -> bytes: ... -def a2b_base64(string: Union[Text, bytes]) -> bytes: ... -def b2a_base64(data: _Bytes) -> bytes: ... -def a2b_qp(string: Union[Text, bytes], header: bool = ...) -> bytes: ... -def b2a_qp(data: _Bytes, quotetabs: bool = ..., istext: bool = ..., - header: bool = ...) -> bytes: ... -def a2b_hqx(string: Union[Text, bytes]) -> bytes: ... -def rledecode_hqx(data: _Bytes) -> bytes: ... -def rlecode_hqx(data: _Bytes) -> bytes: ... -def b2a_hqx(data: _Bytes) -> bytes: ... -def crc_hqx(data: _Bytes, crc: int) -> int: ... -def crc32(data: _Bytes, crc: int = ...) -> int: ... -def b2a_hex(data: _Bytes) -> bytes: ... -def hexlify(data: _Bytes) -> bytes: ... -def a2b_hex(hexstr: Union[Text, bytes]) -> bytes: ... -def unhexlify(hexlify: Union[Text, bytes]) -> bytes: ... - -class Error(Exception): ... -class Incomplete(Exception): ... From 9c222e510f126c4613f3261e0165054d41c69a1c Mon Sep 17 00:00:00 2001 From: David Euresti Date: Thu, 6 Apr 2017 14:31:57 -0400 Subject: [PATCH 3/5] CR fixes --- stdlib/2and3/binascii.pyi | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/stdlib/2and3/binascii.pyi b/stdlib/2and3/binascii.pyi index df068e701d07..baf67c8d64a0 100644 --- a/stdlib/2and3/binascii.pyi +++ b/stdlib/2and3/binascii.pyi @@ -5,21 +5,32 @@ import sys from typing import Union, Text + if sys.version_info < (3,): - # Python 2 accepts unicode ascii pretty much everywhere. + # Python 2 accepts unicode ascii pretty much everywhere. _Bytes = Union[bytes, Text] + _Ascii = Union[bytes, Text] +elif sys.version_info <= (3, 2): + # Python 3 only accepts bytes + _Bytes = bytes + _Ascii = bytes else: - # Python 3 only accepts bytes on the b2a methods. + # But since Python 3.3 ASCII-only unicode strings are accepted by the + # a2b_* functions. _Bytes = bytes + _Ascii = Union[bytes, Text] -def a2b_uu(string: Union[Text, bytes]) -> bytes: ... +def a2b_uu(string: _Ascii) -> bytes: ... def b2a_uu(data: _Bytes) -> bytes: ... -def a2b_base64(string: Union[Text, bytes]) -> bytes: ... -def b2a_base64(data: _Bytes) -> bytes: ... -def a2b_qp(string: Union[Text, bytes], header: bool = ...) -> bytes: ... +def a2b_base64(string: _Ascii) -> bytes: ... +if sys.version_info >= (3, 6): + def b2a_base64(data: _Bytes, *, newline: bool = ...) -> bytes: ... +else: + def b2a_base64(data: _Bytes) -> bytes: ... +def a2b_qp(string: _Ascii, header: bool = ...) -> bytes: ... def b2a_qp(data: _Bytes, quotetabs: bool = ..., istext: bool = ..., header: bool = ...) -> bytes: ... -def a2b_hqx(string: Union[Text, bytes]) -> bytes: ... +def a2b_hqx(string: _Ascii) -> bytes: ... def rledecode_hqx(data: _Bytes) -> bytes: ... def rlecode_hqx(data: _Bytes) -> bytes: ... def b2a_hqx(data: _Bytes) -> bytes: ... @@ -27,8 +38,8 @@ def crc_hqx(data: _Bytes, crc: int) -> int: ... def crc32(data: _Bytes, crc: int = ...) -> int: ... def b2a_hex(data: _Bytes) -> bytes: ... def hexlify(data: _Bytes) -> bytes: ... -def a2b_hex(hexstr: Union[Text, bytes]) -> bytes: ... -def unhexlify(hexlify: Union[Text, bytes]) -> bytes: ... +def a2b_hex(hexstr: _Ascii) -> bytes: ... +def unhexlify(hexlify: _Ascii) -> bytes: ... class Error(Exception): ... class Incomplete(Exception): ... From 78c4953f3d85dd09a5472174b8f5eab1ecb40840 Mon Sep 17 00:00:00 2001 From: David Euresti Date: Thu, 6 Apr 2017 15:10:22 -0400 Subject: [PATCH 4/5] Fix flakes --- stdlib/2and3/binascii.pyi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/2and3/binascii.pyi b/stdlib/2and3/binascii.pyi index baf67c8d64a0..1fe674426f15 100644 --- a/stdlib/2and3/binascii.pyi +++ b/stdlib/2and3/binascii.pyi @@ -10,15 +10,15 @@ if sys.version_info < (3,): # Python 2 accepts unicode ascii pretty much everywhere. _Bytes = Union[bytes, Text] _Ascii = Union[bytes, Text] -elif sys.version_info <= (3, 2): - # Python 3 only accepts bytes - _Bytes = bytes - _Ascii = bytes -else: +elif sys.version_info >= (3, 3): # But since Python 3.3 ASCII-only unicode strings are accepted by the # a2b_* functions. _Bytes = bytes _Ascii = Union[bytes, Text] +else: + # Python 3.2 and below only accepts bytes. + _Bytes = bytes + _Ascii = bytes def a2b_uu(string: _Ascii) -> bytes: ... def b2a_uu(data: _Bytes) -> bytes: ... From 9215933f21fd80f02f13ce823d1455d7cbdda4e4 Mon Sep 17 00:00:00 2001 From: David Euresti Date: Thu, 6 Apr 2017 15:11:36 -0400 Subject: [PATCH 5/5] Fix flakes better --- stdlib/2and3/binascii.pyi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/2and3/binascii.pyi b/stdlib/2and3/binascii.pyi index 1fe674426f15..393c4afcb8ce 100644 --- a/stdlib/2and3/binascii.pyi +++ b/stdlib/2and3/binascii.pyi @@ -10,15 +10,15 @@ if sys.version_info < (3,): # Python 2 accepts unicode ascii pretty much everywhere. _Bytes = Union[bytes, Text] _Ascii = Union[bytes, Text] -elif sys.version_info >= (3, 3): +elif sys.version_info < (3, 3): + # Python 3.2 and below only accepts bytes. + _Bytes = bytes + _Ascii = bytes +else: # But since Python 3.3 ASCII-only unicode strings are accepted by the # a2b_* functions. _Bytes = bytes _Ascii = Union[bytes, Text] -else: - # Python 3.2 and below only accepts bytes. - _Bytes = bytes - _Ascii = bytes def a2b_uu(string: _Ascii) -> bytes: ... def b2a_uu(data: _Bytes) -> bytes: ...