Fix hashlib to accept multiple data types (#918)

This commit is contained in:
David Euresti
2017-02-06 17:24:48 -08:00
committed by Guido van Rossum
parent 6eca1a04da
commit db84eb7844
2 changed files with 22 additions and 20 deletions

View File

@@ -1,7 +1,9 @@
# Stubs for hashlib
from abc import abstractmethod, ABCMeta
from typing import AbstractSet
from typing import AbstractSet, Union
_DataType = Union[bytes, bytearray, memoryview]
class Hash(metaclass=ABCMeta):
digest_size = ... # type: int
@@ -13,7 +15,7 @@ class Hash(metaclass=ABCMeta):
name = ... # type: str
@abstractmethod
def update(self, arg: bytes) -> None: ...
def update(self, arg: _DataType) -> None: ...
@abstractmethod
def digest(self) -> bytes: ...
@abstractmethod
@@ -21,20 +23,18 @@ class Hash(metaclass=ABCMeta):
@abstractmethod
def copy(self) -> 'Hash': ...
def md5(arg: bytes = ...) -> Hash: ...
def sha1(arg: bytes = ...) -> Hash: ...
def sha224(arg: bytes = ...) -> Hash: ...
def sha256(arg: bytes = ...) -> Hash: ...
def sha384(arg: bytes = ...) -> Hash: ...
def sha512(arg: bytes = ...) -> Hash: ...
def md5(arg: _DataType = ...) -> Hash: ...
def sha1(arg: _DataType = ...) -> Hash: ...
def sha224(arg: _DataType = ...) -> Hash: ...
def sha256(arg: _DataType = ...) -> Hash: ...
def sha384(arg: _DataType = ...) -> Hash: ...
def sha512(arg: _DataType = ...) -> Hash: ...
def new(name: str, data: bytes = ...) -> Hash: ...
def new(name: str, data: _DataType = ...) -> Hash: ...
# New in version 3.2
algorithms_guaranteed = ... # type: AbstractSet[str]
algorithms_available = ... # type: AbstractSet[str]
# New in version 3.4
# TODO The documentation says "password and salt are interpreted as buffers of
# bytes", should we declare something other than bytes here?
def pbkdf2_hmac(name: str, password: bytes, salt: bytes, rounds: int, dklen: int = ...) -> bytes: ...
def pbkdf2_hmac(name: str, password: _DataType, salt: _DataType, rounds: int, dklen: int = ...) -> bytes: ...