mercurial/util.py
changeset 27357 7f5a0bd4c9aa
parent 27112 39c14e89b881
child 27358 ac839ee45b6a
equal deleted inserted replaced
27356:c2effd1ecebf 27357:7f5a0bd4c9aa
    21 import os, time, datetime, calendar, textwrap, signal, collections
    21 import os, time, datetime, calendar, textwrap, signal, collections
    22 import imp, socket, urllib
    22 import imp, socket, urllib
    23 import gc
    23 import gc
    24 import bz2
    24 import bz2
    25 import zlib
    25 import zlib
       
    26 import hashlib
    26 
    27 
    27 if os.name == 'nt':
    28 if os.name == 'nt':
    28     import windows as platform
    29     import windows as platform
    29 else:
    30 else:
    30     import posix as platform
    31     import posix as platform
       
    32 
       
    33 md5 = hashlib.md5
       
    34 sha1 = hashlib.sha1
       
    35 sha512 = hashlib.sha512
    31 
    36 
    32 cachestat = platform.cachestat
    37 cachestat = platform.cachestat
    33 checkexec = platform.checkexec
    38 checkexec = platform.checkexec
    34 checklink = platform.checklink
    39 checklink = platform.checklink
    35 copymode = platform.copymode
    40 copymode = platform.copymode
    93 os.stat_float_times(False)
    98 os.stat_float_times(False)
    94 
    99 
    95 def safehasattr(thing, attr):
   100 def safehasattr(thing, attr):
    96     return getattr(thing, attr, _notset) is not _notset
   101     return getattr(thing, attr, _notset) is not _notset
    97 
   102 
    98 from hashlib import md5, sha1
       
    99 
       
   100 DIGESTS = {
   103 DIGESTS = {
   101     'md5': md5,
   104     'md5': md5,
   102     'sha1': sha1,
   105     'sha1': sha1,
       
   106     'sha512': sha512,
   103 }
   107 }
   104 # List of digest types from strongest to weakest
   108 # List of digest types from strongest to weakest
   105 DIGESTS_BY_STRENGTH = ['sha1', 'md5']
   109 DIGESTS_BY_STRENGTH = ['sha512', 'sha1', 'md5']
   106 
       
   107 try:
       
   108     import hashlib
       
   109     DIGESTS.update({
       
   110         'sha512': hashlib.sha512,
       
   111     })
       
   112     DIGESTS_BY_STRENGTH.insert(0, 'sha512')
       
   113 except ImportError:
       
   114     pass
       
   115 
   110 
   116 for k in DIGESTS_BY_STRENGTH:
   111 for k in DIGESTS_BY_STRENGTH:
   117     assert k in DIGESTS
   112     assert k in DIGESTS
   118 
   113 
   119 class digester(object):
   114 class digester(object):