Index: flumotion/test/test_common_bundle.py =================================================================== --- flumotion/test/test_common_bundle.py (revision 7989) +++ flumotion/test/test_common_bundle.py (working copy) @@ -23,12 +23,12 @@ from flumotion.common import testsuite -from flumotion.common import bundle +from flumotion.common import bundle, python + import tempfile import os import StringIO import zipfile -import md5 import time @@ -76,7 +76,7 @@ def testBundlerOneFile(self): data = open(self.filename, "r").read() - md5sum = md5.new(data).hexdigest() + md5sum = python.md5(data).hexdigest() name = os.path.split(self.filename)[1] b = self.bundler.bundle() sum = b.md5sum @@ -88,7 +88,7 @@ self.failIf(zip.testzip()) data = zip.read(name) self.failUnless(data) - self.assertEquals(md5sum, md5.new(data).hexdigest()) + self.assertEquals(md5sum, python.md5(data).hexdigest()) # create a bundle of two files then update one of them and check # the md5sum changes Index: flumotion/twisted/credentials.py =================================================================== --- flumotion/twisted/credentials.py (revision 7989) +++ flumotion/twisted/credentials.py (working copy) @@ -23,11 +23,9 @@ Flumotion Twisted credentials """ -import md5 - import random -from flumotion.common import log +from flumotion.common import log, python from twisted.cred import credentials from zope.interface import implements @@ -137,8 +135,7 @@ """ Respond to a given crypt challenge with our cryptPassword. """ - import md5 - md = md5.new() + md = python.md5() md.update(cryptPassword) md.update(challenge) return md.digest() @@ -163,7 +160,7 @@ crap = '' for x in range(random.randrange(15, 25)): crap = crap + chr(random.randint(65, 90) + x - x) # pychecker madness - crap = md5.new(crap).digest() + crap = python.md5(crap).digest() return crap @@ -367,7 +364,7 @@ elif self._algorithm == 'MD5-sess': HA1 = ha1.decode('hex') - m = md5.md5() + m = python.md5() m.update(HA1) m.update(':') m.update(nonce) @@ -380,7 +377,7 @@ def _calculateHA2(self, method, uri): # We don't support auth-int, otherwise we'd optionally need to do # some more work here - m = md5.md5() + m = python.md5() m.update(method) m.update(':') m.update(uri) @@ -391,7 +388,7 @@ HA1 = self._calculateHA1(ha1, nonce, cnonce) HA2 = self._calculateHA2(method, uri) - m = md5.md5() + m = python.md5() m.update(HA1) m.update(':') m.update(nonce) Index: flumotion/monitor/nagios/stream.py =================================================================== --- flumotion/monitor/nagios/stream.py (revision 7989) +++ flumotion/monitor/nagios/stream.py (working copy) @@ -29,8 +29,6 @@ import re import time import datetime -import md5 -import sha import urlparse import urllib2 @@ -40,7 +38,7 @@ from twisted.internet import reactor, defer from flumotion.admin import admin, connections -from flumotion.common import errors, keycards +from flumotion.common import errors, keycards, python from flumotion.monitor.nagios import util URLFINDER = "http://[^\s'\"]*" # to search urls in playlists @@ -65,9 +63,9 @@ stop_time = '%08x' % (time.time() + int(timeout)) hashable = secret_key + relative_path + start_time + stop_time if type == 'md5': - hashed = md5.md5(hashable).hexdigest() + hashed = python.md5(hashable).hexdigest() else: - hashed = sha.sha(hashable).hexdigest() + hashed = python.sha(hashable).hexdigest() return '%s%s%s' % (hashed, start_time, stop_time) Index: flumotion/common/bundle.py =================================================================== --- flumotion/common/bundle.py (revision 7989) +++ flumotion/common/bundle.py (working copy) @@ -25,13 +25,12 @@ import StringIO import errno -import md5 import os import sys import tempfile import zipfile -from flumotion.common import errors, dag +from flumotion.common import errors, dag, python from flumotion.common.python import makedirs __all__ = ['Bundle', 'Bundler', 'Unbundler', 'BundlerBasket'] @@ -77,7 +76,7 @@ @returns: the md5 sum a 32 character string of hex characters. """ data = open(self.source, "r").read() - return md5.new(data).hexdigest() + return python.md5(data).hexdigest() def timestamp(self): """ @@ -135,7 +134,7 @@ Set the bundle to the given data representation of the zip file. """ self.zip = zip - self.md5sum = md5.new(self.zip).hexdigest() + self.md5sum = python.md5(self.zip).hexdigest() def getZip(self): """ Index: flumotion/common/python.py =================================================================== --- flumotion/common/python.py (revision 7989) +++ flumotion/common/python.py (working copy) @@ -88,3 +88,13 @@ mkdir(name, mode) else: from os import makedirs + +# python 2.6 deprecates sha and md5 modules in favor of hashlib +try: + _hashlib = __import__("hashlib") +except ImportError: + from md5 import md5 + from sha import sha as sha1 +else: + from hashlib import md5 as md5 + from hashlib import sha1 as sha1 Index: flumotion/common/messages.py =================================================================== --- flumotion/common/messages.py (revision 7989) +++ flumotion/common/messages.py (working copy) @@ -30,6 +30,7 @@ from flumotion.common import log from flumotion.configure import configure from flumotion.common.i18n import FancyEqMixin, Translatable +from flumotion.common.i18n import * __version__ = "$Rev$" Index: flumotion/common/registry.py =================================================================== --- flumotion/common/registry.py (revision 7989) +++ flumotion/common/registry.py (working copy) @@ -23,7 +23,6 @@ """ import os -import sets import stat import errno import sys @@ -39,6 +38,13 @@ __all__ = ['ComponentRegistry', 'registry'] __version__ = "$Rev$" + +# to work with python 2.3 as well; sets was deprecated in 2.6 +try: + set +except NameError: + from sets import Set as set + # Re-enable when reading the registry cache is lighter-weight, or we # decide that it's a good idea, or something. See #799. READ_CACHE = False @@ -1695,9 +1701,9 @@ # A bit complicated because we want to allow FLU_PROJECT_PATH to # point to nonexistent directories - registryPaths = sets.Set(self._getRegistryPathsFromEnviron()) - oldRegistryPaths = sets.Set([directory.getPath() - for directory in self.getDirectories()]) + registryPaths = set(self._getRegistryPathsFromEnviron()) + oldRegistryPaths = set([directory.getPath() + for directory in self.getDirectories()]) if registryPaths != oldRegistryPaths: if oldRegistryPaths - registryPaths: return True Index: flumotion/admin/admin.py =================================================================== --- flumotion/admin/admin.py (revision 7989) +++ flumotion/admin/admin.py (working copy) @@ -421,8 +421,8 @@ '']) import os - import md5 - md5sum = md5.new(s).hexdigest() + from flumotion.common import python + md5sum = python.md5(s).hexdigest() f = os.path.join(configure.registrydir, '%s.connection' % md5sum) try: h = open(f, 'w') Index: flumotion/component/bouncers/saltsha256.py =================================================================== --- flumotion/component/bouncers/saltsha256.py (revision 7989) +++ flumotion/component/bouncers/saltsha256.py (working copy) @@ -20,10 +20,9 @@ # Headers in this file shall remain intact. """ -an bouncer with a username/salt/sha256 data backend +a bouncer with a username/salt/sha256 data backend """ -import md5 import random from twisted.python import components Index: flumotion/component/bouncers/bouncer.py =================================================================== --- flumotion/component/bouncers/bouncer.py (revision 7989) +++ flumotion/component/bouncers/bouncer.py (working copy) @@ -83,13 +83,12 @@ call removeKeycardId when the keycard is no longer used. """ -import md5 import random import time from twisted.internet import defer, reactor -from flumotion.common import interfaces, keycards, errors +from flumotion.common import interfaces, keycards, errors, python from flumotion.common.poller import Poller from flumotion.common.componentui import WorkerComponentUIState @@ -703,7 +702,7 @@ else: # random-ish salt, otherwise it's too obvious string = str(random.randint(pow(10, 10), pow(10, 11))) - md = md5.new() + md = python.md5() md.update(string) keycard.salt = md.hexdigest()[:2] self.debug("user not found, inventing bogus salt") Index: flumotion/component/bouncers/plug.py =================================================================== --- flumotion/component/bouncers/plug.py (revision 7989) +++ flumotion/component/bouncers/plug.py (working copy) @@ -83,13 +83,12 @@ call removeKeycardId when the keycard is no longer used. """ -import md5 import random import time from twisted.internet import defer, reactor -from flumotion.common import keycards, common, errors +from flumotion.common import keycards, common, errors, python from flumotion.common.poller import Poller from flumotion.component.plugs import base as pbase from flumotion.twisted import credentials @@ -331,7 +330,7 @@ else: # random-ish salt, otherwise it's too obvious string = str(random.randint(pow(10, 10), pow(10, 11))) - md = md5.new() + md = python.md5() md.update(string) keycard.salt = md.hexdigest()[:2] self.debug("user not found, inventing bogus salt") Index: flumotion/component/bouncers/htpasswdcrypt.py =================================================================== --- flumotion/component/bouncers/htpasswdcrypt.py (revision 7989) +++ flumotion/component/bouncers/htpasswdcrypt.py (working copy) @@ -23,7 +23,6 @@ an htpasswd-backed bouncer with crypt passwords """ -import md5 import random from twisted.python import components Index: flumotion/component/misc/httpserver/cachedprovider.py =================================================================== --- flumotion/component/misc/httpserver/cachedprovider.py (revision 7989) +++ flumotion/component/misc/httpserver/cachedprovider.py (working copy) @@ -21,7 +21,6 @@ import errno import os -import sha # hashlib is not available with python 2.4 import stat import tempfile import threading @@ -29,7 +28,7 @@ from twisted.internet import defer, reactor, abstract -from flumotion.common import log, format, common +from flumotion.common import log, format, common, python from flumotion.component.misc.httpserver import cachestats from flumotion.component.misc.httpserver import fileprovider from flumotion.component.misc.httpserver import localpath @@ -168,7 +167,7 @@ """ ident = self._identifiers.get(path, None) if ident is None: - hash = sha.sha() + hash = python.sha() hash.update(path) ident = hash.digest().encode("hex").strip('\n') # Prevent the cache from growing endlessly Index: common/validate-registry.py =================================================================== --- common/validate-registry.py (revision 7989) +++ common/validate-registry.py (working copy) @@ -16,10 +16,13 @@ _old_showwarning = warnings.showwarning -def showwarning(message, category, filename, lineno, file=None): - _old_showwarning(message, category, filename, lineno, file) +def showwarning(message, category, filename, lineno, file=None, line=None): + _old_showwarning(message, category, filename, lineno, file, line=line) if category is not DeprecationWarning: return + # uncomment to see better where the problem comes from when it claims + # to be in ihooks.py + # import traceback; traceback.print_stack() global exitCode exitCode += 1 warnings.showwarning = showwarning