Assuming you do this, it also might make more sense to call them md5_digest and sha1_digest, or something a little less ambiguous than just md5 and sha1; clashing with the stdlib module name is probably a bad idea. -- John On Fri, Jan 29, 2010 at 7:25 AM, John Admanski <jadmanski@xxxxxxxxxx> wrote: > Instead of wrapping all the calls in try-except blocks, maybe it would > make more sense to add a couple of utility functions to the common_lib > utils.py that do it for you? I'm just picturing something like: > > def md5(bytes): > try: > import hashlib > return hashlib.md5(bytes).hexdigest() > except ImportError: > import md5 > return md5.new(bytes).hexdigest() > > and then something similar for sha1. This would keep all the > complexity in one place. > > I'm just picturing a code review in the future where I have to explain > to someone that they have to wrap their import and digest in > try-excepts...it would be a lot easier to just tell them to use the > functions in utils.py instead. :) > > -- John > > On Thu, Jan 28, 2010 at 9:36 PM, Lucas Meneghel Rodrigues > <lmr@xxxxxxxxxx> wrote: >> When using python > 2.4, use the recommended hashlib. >> When using python 2.4, fall back to the md5 and sha >> modules. >> >> Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx> >> --- >> tko/models.py | 12 ++++++++++-- >> tko/parsers/version_1_unittest.py | 16 +++++++++++++--- >> utils/build_externals.py | 11 +++++++++-- >> 3 files changed, 32 insertions(+), 7 deletions(-) >> >> diff --git a/tko/models.py b/tko/models.py >> index bc70074..2dc6724 100644 >> --- a/tko/models.py >> +++ b/tko/models.py >> @@ -1,4 +1,8 @@ >> -import os, md5 >> +import os >> +try: >> + import hashlib >> +except ImportError: >> + import md5 >> >> from autotest_lib.client.common_lib import utils >> from autotest_lib.tko import utils as tko_utils >> @@ -63,7 +67,11 @@ class kernel(object): >> @staticmethod >> def compute_hash(base, hashes): >> key_string = ','.join([base] + hashes) >> - return md5.new(key_string).hexdigest() >> + try: >> + hash = hashlib.md5(key_string).hexdigest() >> + except NameError: >> + hash = md5.new(key_string).hexdigest() >> + return hash >> >> >> class test(object): >> diff --git a/tko/parsers/version_1_unittest.py b/tko/parsers/version_1_unittest.py >> index 5110fe8..a6e87e4 100755 >> --- a/tko/parsers/version_1_unittest.py >> +++ b/tko/parsers/version_1_unittest.py >> @@ -1,6 +1,10 @@ >> #!/usr/bin/python >> >> -import unittest, datetime, time, md5 >> +import unittest, datetime, time >> +try: >> + import hashlib >> +except ImportError: >> + import md5 >> >> import common >> from autotest_lib.tko.parsers import version_1 >> @@ -163,7 +167,10 @@ class test_status_line(unittest.TestCase): >> "patch0": "first_patch 0 0", >> "patch1": "another_patch 0 0"}) >> kern = line.get_kernel() >> - kernel_hash = md5.new("2.6.24-rc40,0,0").hexdigest() >> + try: >> + kernel_hash = hashlib.md5("2.6.24-rc40,0,0").hexdigest() >> + except NameError: >> + kernel_hash = md5.new("2.6.24-rc40,0,0").hexdigest() >> self.assertEquals(kern.base, "2.6.24-rc40") >> self.assertEquals(kern.patches[0].spec, "first_patch") >> self.assertEquals(kern.patches[1].spec, "another_patch") >> @@ -178,7 +185,10 @@ class test_status_line(unittest.TestCase): >> "patch0": "first_patch 0 0", >> "patch2": "another_patch 0 0"}) >> kern = line.get_kernel() >> - kernel_hash = md5.new("2.6.24-rc40,0").hexdigest() >> + try: >> + kernel_hash = hashlib.md5("2.6.24-rc40,0").hexdigest() >> + except: >> + kernel_hash = md5.new("2.6.24-rc40,0").hexdigest() >> self.assertEquals(kern.base, "2.6.24-rc40") >> self.assertEquals(kern.patches[0].spec, "first_patch") >> self.assertEquals(len(kern.patches), 1) >> diff --git a/utils/build_externals.py b/utils/build_externals.py >> index d58975e..8993249 100755 >> --- a/utils/build_externals.py >> +++ b/utils/build_externals.py >> @@ -12,7 +12,11 @@ Usage? Just run it. >> utils/build_externals.py >> """ >> >> -import compileall, logging, os, sha, shutil, sys, tempfile, time, urllib2 >> +import compileall, logging, os, shutil, sys, tempfile, time, urllib2 >> +try: >> + import hashlib >> +except ImportError: >> + import sha >> import subprocess, re >> import common >> from autotest_lib.client.common_lib import logging_config, logging_manager >> @@ -152,7 +156,10 @@ def _checksum_file(full_path): >> """@returns The hex checksum of a file given its pathname.""" >> inputfile = open(full_path, 'rb') >> try: >> - hex_sum = sha.sha(inputfile.read()).hexdigest() >> + try: >> + hex_sum = hashlib.sha1(inputfile.read()).hexdigest() >> + except NameError: >> + hex_sum = sha.sha(inputfile.read()).hexdigest() >> finally: >> inputfile.close() >> return hex_sum >> -- >> 1.6.6 >> >> _______________________________________________ >> Autotest mailing list >> Autotest@xxxxxxxxxxxxxxx >> http://test.kernel.org/cgi-bin/mailman/listinfo/autotest >> > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html