Patch util.py for python2.4

Sol Jerome sol.jerome at gmail.com
Tue Aug 17 16:19:45 CDT 2010


On Tue, Aug 17, 2010 at 14:11, Matt Mackall <mpm at selenic.com> wrote:
>
> I've queued a simpler fix:
>
> # HG changeset patch
> # User Matt Mackall <mpm at selenic.com>
> # Date 1282072222 18000
> # Node ID c54c3d45ae2b35223739156c2349566db8d0653b
> # Parent  c714abf8c0733bb280c352c09215fa359bfabc9c
> util: try importing sha1 from sha first (issue2278)
>
> This will avoid things breaking if someone installs the hashlib egg with py2.4.
>
> diff -r c714abf8c073 -r c54c3d45ae2b mercurial/util.py
> --- a/mercurial/util.py Wed Aug 11 20:28:39 2010 +0800
> +++ b/mercurial/util.py Tue Aug 17 14:10:22 2010 -0500
> @@ -29,9 +29,9 @@
>     # available) and overwrite itself with it on the first call.
>     # Subsequent calls will go directly to the imported function.
>     try:
> +        from sha import sha as _sha1
> +    except ImportError:
>         from hashlib import sha1 as _sha1
> -    except ImportError:
> -        from sha import sha as _sha1
>     global _fastsha1, sha1
>     _fastsha1 = sha1 = _sha1
>     return _sha1(s)
>
> --
> Mathematics is the supreme nostalgia of our time.
>

This will also work. However, with that applied, we are no longer
defaulting to hashlib on some versions of python where it works:

$ python -c "import sys; print(sys.version_info); from sha import sha
as _sha1; import hashlib"
(2, 6, 5, 'final', 0)
-c:1: DeprecationWarning: the sha module is deprecated; use the
hashlib module instead


So, even with python 2.6.5 the sha import still works (which is fine
if you choose not to use hashlib on these python installs).

Sol


More information about the Mercurial-devel mailing list