1
1
# -*- coding: utf-8 -*-
2
2
from __future__ import absolute_import , print_function , division
3
+ import binascii
3
4
import operator
4
5
import itertools
5
6
import hashlib
@@ -88,6 +89,7 @@ class Array(object):
88
89
set_mask_selection
89
90
get_coordinate_selection
90
91
set_coordinate_selection
92
+ digest
91
93
hexdigest
92
94
resize
93
95
append
@@ -1837,22 +1839,23 @@ def bytestr(n):
1837
1839
1838
1840
return items
1839
1841
1840
- def hexdigest (self , hashname = "sha1" ):
1842
+ def digest (self , hashname = "sha1" ):
1841
1843
"""
1842
1844
Compute a checksum for the data. Default uses sha1 for speed.
1843
1845
1844
1846
Examples
1845
1847
--------
1848
+ >>> import binascii
1846
1849
>>> import zarr
1847
1850
>>> z = zarr.empty(shape=(10000, 10000), chunks=(1000, 1000))
1848
- >>> z.hexdigest( )
1849
- '041f90bc7a571452af4f850a8ca2c6cddfa8a1ac'
1851
+ >>> binascii.hexlify(z.digest() )
1852
+ b '041f90bc7a571452af4f850a8ca2c6cddfa8a1ac'
1850
1853
>>> z = zarr.zeros(shape=(10000, 10000), chunks=(1000, 1000))
1851
- >>> z.hexdigest( )
1852
- '7162d416d26a68063b66ed1f30e0a866e4abed60'
1854
+ >>> binascii.hexlify(z.digest() )
1855
+ b '7162d416d26a68063b66ed1f30e0a866e4abed60'
1853
1856
>>> z = zarr.zeros(shape=(10000, 10000), dtype="u1", chunks=(1000, 1000))
1854
- >>> z.hexdigest( )
1855
- 'cb387af37410ae5a3222e893cf3373e4e4f22816'
1857
+ >>> binascii.hexlify(z.digest() )
1858
+ b 'cb387af37410ae5a3222e893cf3373e4e4f22816'
1856
1859
"""
1857
1860
1858
1861
h = hashlib .new (hashname )
@@ -1864,7 +1867,33 @@ def hexdigest(self, hashname="sha1"):
1864
1867
1865
1868
h .update (self .store .get (self .attrs .key , b"" ))
1866
1869
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' )
1868
1897
1869
1898
return checksum
1870
1899
0 commit comments