-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Andreas Jung wrote: > Log message for revision 89809: > - integrated Hotfix-2008-08-12 > > > Changed: > A > Zope/branches/Zope-2_8-branch/lib/python/Products/PythonScripts/patches.py > > -=- > Added: > Zope/branches/Zope-2_8-branch/lib/python/Products/PythonScripts/patches.py > =================================================================== > --- > Zope/branches/Zope-2_8-branch/lib/python/Products/PythonScripts/patches.py > (rev 0) > +++ > Zope/branches/Zope-2_8-branch/lib/python/Products/PythonScripts/patches.py > 2008-08-13 18:08:21 UTC (rev 89809) > @@ -0,0 +1,99 @@ > + > + > +################################################################ > +# Monkey patch for LP #257276 (Hotfix-2008-08-12) > +# > +# This code is taken from the encodings module of Python 2.4. > +# Note that this code is originally (C) CNRI and it is possibly not > compatible > +# with the ZPL and therefore should not live within svn.zope.org. However > this > +# checkin is blessed by Jim Fulton for now. The fix is no longer required > with > +# Python 2.5 and hopefully fixed in Python 2.4.6 release. > +################################################################ > + > +# Written by Marc-Andre Lemburg ([EMAIL PROTECTED]). > +# (c) Copyright CNRI, All Rights Reserved. NO WARRANTY. > + > +def search_function(encoding): > + > + # Cache lookup > + entry = _cache.get(encoding, _unknown) > + if entry is not _unknown: > + return entry > + > + # Import the module: > + # > + # First try to find an alias for the normalized encoding > + # name and lookup the module using the aliased name, then try to > + # lookup the module using the standard import scheme, i.e. first > + # try in the encodings package, then at top-level. > + # > + norm_encoding = normalize_encoding(encoding) > + aliased_encoding = _aliases.get(norm_encoding) or \ > + _aliases.get(norm_encoding.replace('.', '_')) > + if aliased_encoding is not None: > + modnames = [aliased_encoding, > + norm_encoding] > + else: > + modnames = [norm_encoding] > + for modname in modnames: > + > + if not modname or '.' in modname: > + continue > + > + try: > + mod = __import__(modname, > + globals(), locals(), _import_tail) > + if not mod.__name__.startswith('encodings.'): > + continue > + > + except ImportError: > + pass > + else: > + break > + else: > + mod = None > + > + try: > + getregentry = mod.getregentry > + except AttributeError: > + # Not a codec module > + mod = None > + > + if mod is None: > + # Cache misses > + _cache[encoding] = None > + return None > + > + # Now ask the module for the registry entry > + entry = tuple(getregentry()) > + if len(entry) != 4: > + raise CodecRegistryError,\ > + 'module "%s" (%s) failed to register' % \ > + (mod.__name__, mod.__file__) > + for obj in entry: > + if not callable(obj): > + raise CodecRegistryError,\ > + 'incompatible codecs in module "%s" (%s)' % \ > + (mod.__name__, mod.__file__) > + > + # Cache the codec registry entry > + _cache[encoding] = entry > + > + # Register its aliases (without overwriting previously registered > + # aliases) > + try: > + codecaliases = mod.getaliases() > + except AttributeError: > + pass > + else: > + for alias in codecaliases: > + if not _aliases.has_key(alias): > + _aliases[alias] = modname > + > + # Return the registry entry > + return entry > + > + > +import encodings > +encodings.search_function.func_code = search_function.func_code > +
Andreas, did you actually test this patch on 2.8 with Python 2.3? It relies on a name ('_aliases') which is not present in lib/python2.3/encodings/__init__.py. E.g.: $ diff -ru lib/python2.{3,4}/encodings/__init__.py ... @@ -38,6 +38,7 @@ ' ' ' ' ' ') +_aliases = aliases.aliases class CodecRegistryError(exceptions.LookupError, exceptions.SystemError): ... Tres. - -- =================================================================== Tres Seaver +1 540-429-0999 [EMAIL PROTECTED] Palladion Software "Excellence by Design" http://palladion.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFIpERy+gerLs4ltQ4RArtdAKCmF+0C8Behv50Ke7uI2D1X2WKn6ACfe7/b cS2R8xHNePOsei9ElD809wA= =Ex2l -----END PGP SIGNATURE----- _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )