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
@@ -1855,22 +1857,23 @@ def bytestr(n):
1855
1857
1856
1858
return items
1857
1859
1858
- def hexdigest (self , hashname = "sha1" ):
1860
+ def digest (self , hashname = "sha1" ):
1859
1861
"""
1860
1862
Compute a checksum for the data. Default uses sha1 for speed.
1861
1863
1862
1864
Examples
1863
1865
--------
1866
+ >>> import binascii
1864
1867
>>> import zarr
1865
1868
>>> z = zarr.empty(shape=(10000, 10000), chunks=(1000, 1000))
1866
- >>> z.hexdigest( )
1867
- '041f90bc7a571452af4f850a8ca2c6cddfa8a1ac'
1869
+ >>> binascii.hexlify(z.digest() )
1870
+ b '041f90bc7a571452af4f850a8ca2c6cddfa8a1ac'
1868
1871
>>> z = zarr.zeros(shape=(10000, 10000), chunks=(1000, 1000))
1869
- >>> z.hexdigest( )
1870
- '7162d416d26a68063b66ed1f30e0a866e4abed60'
1872
+ >>> binascii.hexlify(z.digest() )
1873
+ b '7162d416d26a68063b66ed1f30e0a866e4abed60'
1871
1874
>>> z = zarr.zeros(shape=(10000, 10000), dtype="u1", chunks=(1000, 1000))
1872
- >>> z.hexdigest( )
1873
- 'cb387af37410ae5a3222e893cf3373e4e4f22816'
1875
+ >>> binascii.hexlify(z.digest() )
1876
+ b 'cb387af37410ae5a3222e893cf3373e4e4f22816'
1874
1877
"""
1875
1878
1876
1879
h = hashlib .new (hashname )
@@ -1882,7 +1885,33 @@ def hexdigest(self, hashname="sha1"):
1882
1885
1883
1886
h .update (self .store .get (self .attrs .key , b"" ))
1884
1887
1885
- checksum = h .hexdigest ()
1888
+ checksum = h .digest ()
1889
+
1890
+ return checksum
1891
+
1892
+ def hexdigest (self , hashname = "sha1" ):
1893
+ """
1894
+ Compute a checksum for the data. Default uses sha1 for speed.
1895
+
1896
+ Examples
1897
+ --------
1898
+ >>> import zarr
1899
+ >>> z = zarr.empty(shape=(10000, 10000), chunks=(1000, 1000))
1900
+ >>> z.hexdigest()
1901
+ '041f90bc7a571452af4f850a8ca2c6cddfa8a1ac'
1902
+ >>> z = zarr.zeros(shape=(10000, 10000), chunks=(1000, 1000))
1903
+ >>> z.hexdigest()
1904
+ '7162d416d26a68063b66ed1f30e0a866e4abed60'
1905
+ >>> z = zarr.zeros(shape=(10000, 10000), dtype="u1", chunks=(1000, 1000))
1906
+ >>> z.hexdigest()
1907
+ 'cb387af37410ae5a3222e893cf3373e4e4f22816'
1908
+ """
1909
+
1910
+ checksum = binascii .hexlify (self .digest (hashname = hashname ))
1911
+
1912
+ # This is a bytes object on Python 3 and we want a str.
1913
+ if type (checksum ) is not str :
1914
+ checksum = checksum .decode ('utf8' )
1886
1915
1887
1916
return checksum
1888
1917
0 commit comments