docs: def md5(filename):
      ''' Return MD5 hex digest of local file, or None if file is not present. '''
  
      if not os.path.exists(filename):
          return None
      digest = _md5()
      blocksize = 64 * 1024
      infile = open(filename, 'rb')
      block = infile.read(blocksize)
      while block:
          digest.update(block)
          block = infile.read(blocksize)
      infile.close()
      return digest.hexdigest()