| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import logging |
| |
| # pylint: disable=E0611 |
| from hashlib import sha256 |
| |
| from mopy.memoize import memoize |
| |
| _logging = logging.getLogger() |
| |
| @memoize |
| def file_hash(filename): |
| """Returns a string representing the hash of the given file.""" |
| _logging.debug("Hashing %s ...", filename) |
| with open(filename, mode='rb') as f: |
| m = sha256() |
| while True: |
| block = f.read(4096) |
| if not block: |
| break |
| m.update(block) |
| _logging.debug(" => %s", m.hexdigest()) |
| return m.hexdigest() |