Mercurial > hg > mercurial-crew
diff mercurial/util.py @ 8297:7f27e69dd27f
util: stop overwriting sha1, overwrite _fastsha1 instead
Some modules (like revlog) would import util.sha1 as _sha1. This
defeats the purpose of having util.sha1 overwrite itself with a faster
version -- revlog would end up always calling the slow version. By
always delegating to util._fastsha1 we avoid this at the cost of an
extra (but unconditional) indirection.
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Mon, 04 May 2009 22:14:52 +0200 (2009-05-04) |
parents | 908c5906091b |
children | edd676eae7d7 |
line wrap: on
line diff
--- a/mercurial/util.py +++ b/mercurial/util.py @@ -21,13 +21,18 @@ # Python compatibility def sha1(s): + return _fastsha1(s) + +def _fastsha1(s): + # This function will import sha1 from hashlib or sha (whichever is + # available) and overwrite itself with it on the first call. + # Subsequent calls will go directly to the imported function. try: - import hashlib - _sha1 = hashlib.sha1 + from hashlib import sha1 as _sha1 except ImportError: from sha import sha as _sha1 - global sha1 - sha1 = _sha1 + global _fastsha1 + _fastsha1 = _sha1 return _sha1(s) import subprocess