11# -*- coding: utf-8 -*-
22from __future__ import absolute_import , print_function , division
3+ import binascii
34import operator
45import itertools
56import hashlib
@@ -88,6 +89,7 @@ class Array(object):
8889 set_mask_selection
8990 get_coordinate_selection
9091 set_coordinate_selection
92+ digest
9193 hexdigest
9294 resize
9395 append
@@ -1837,22 +1839,23 @@ def bytestr(n):
18371839
18381840 return items
18391841
1840- def hexdigest (self , hashname = "sha1" ):
1842+ def digest (self , hashname = "sha1" ):
18411843 """
18421844 Compute a checksum for the data. Default uses sha1 for speed.
18431845
18441846 Examples
18451847 --------
1848+ >>> import binascii
18461849 >>> import zarr
18471850 >>> z = zarr.empty(shape=(10000, 10000), chunks=(1000, 1000))
1848- >>> z.hexdigest( )
1849- '041f90bc7a571452af4f850a8ca2c6cddfa8a1ac'
1851+ >>> binascii.hexlify(z.digest() )
1852+ b '041f90bc7a571452af4f850a8ca2c6cddfa8a1ac'
18501853 >>> z = zarr.zeros(shape=(10000, 10000), chunks=(1000, 1000))
1851- >>> z.hexdigest( )
1852- '7162d416d26a68063b66ed1f30e0a866e4abed60'
1854+ >>> binascii.hexlify(z.digest() )
1855+ b '7162d416d26a68063b66ed1f30e0a866e4abed60'
18531856 >>> z = zarr.zeros(shape=(10000, 10000), dtype="u1", chunks=(1000, 1000))
1854- >>> z.hexdigest( )
1855- 'cb387af37410ae5a3222e893cf3373e4e4f22816'
1857+ >>> binascii.hexlify(z.digest() )
1858+ b 'cb387af37410ae5a3222e893cf3373e4e4f22816'
18561859 """
18571860
18581861 h = hashlib .new (hashname )
@@ -1864,7 +1867,33 @@ def hexdigest(self, hashname="sha1"):
18641867
18651868 h .update (self .store .get (self .attrs .key , b"" ))
18661869
1867- checksum = h .hexdigest ()
1870+ checksum = h .digest ()
1871+
1872+ return checksum
1873+
1874+ def hexdigest (self , hashname = "sha1" ):
1875+ """
1876+ Compute a checksum for the data. Default uses sha1 for speed.
1877+
1878+ Examples
1879+ --------
1880+ >>> import zarr
1881+ >>> z = zarr.empty(shape=(10000, 10000), chunks=(1000, 1000))
1882+ >>> z.hexdigest()
1883+ '041f90bc7a571452af4f850a8ca2c6cddfa8a1ac'
1884+ >>> z = zarr.zeros(shape=(10000, 10000), chunks=(1000, 1000))
1885+ >>> z.hexdigest()
1886+ '7162d416d26a68063b66ed1f30e0a866e4abed60'
1887+ >>> z = zarr.zeros(shape=(10000, 10000), dtype="u1", chunks=(1000, 1000))
1888+ >>> z.hexdigest()
1889+ 'cb387af37410ae5a3222e893cf3373e4e4f22816'
1890+ """
1891+
1892+ checksum = binascii .hexlify (self .digest (hashname = hashname ))
1893+
1894+ # This is a bytes object on Python 3 and we want a str.
1895+ if type (checksum ) is not str :
1896+ checksum = checksum .decode ('utf8' )
18681897
18691898 return checksum
18701899
0 commit comments