Merged revisions 78528 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78528 | gregory.p.smith | 2010-02-28 18:01:47 -0800 (Sun, 28 Feb 2010) | 2 lines

  Adds the hashlib.algorithms attribute.  See issue7418.
........
This commit is contained in:
Gregory P. Smith 2010-03-01 02:05:26 +00:00
parent a59c59f946
commit 86508cc88b
3 changed files with 17 additions and 1 deletions

View File

@ -82,6 +82,15 @@ Using :func:`new` with an algorithm provided by OpenSSL:
>>> h.hexdigest() >>> h.hexdigest()
'cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc' 'cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc'
This module provides the following constant attribute:
.. data:: hashlib.algorithms
A tuple providing the names of the hash algorithms guaranteed to be
supported by this module.
.. versionadded:: 3.2
The following values are provided as constant attributes of the hash objects The following values are provided as constant attributes of the hash objects
returned by the constructors: returned by the constructors:

View File

@ -57,7 +57,9 @@ More condensed:
# always available algorithm is added. # always available algorithm is added.
__always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512') __always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')
__all__ = __always_supported + ('new',) algorithms = __always_supported
__all__ = __always_supported + ('new', 'algorithms')
def __get_builtin_constructor(name): def __get_builtin_constructor(name):

View File

@ -102,6 +102,11 @@ class HashLibTestCase(unittest.TestCase):
c = cons(a) c = cons(a)
c.hexdigest() c.hexdigest()
def test_algorithms_attribute(self):
self.assertEqual(hashlib.algorithms,
tuple(_algo for _algo in self.supported_hash_names
if _algo.islower()))
def test_unknown_hash(self): def test_unknown_hash(self):
try: try:
hashlib.new('spam spam spam spam spam') hashlib.new('spam spam spam spam spam')