[Zope-Checkins] SVN: Zope/branches/2.9/ - integrated Hotfix-2008-08-12

Andreas Jung andreas at andreas-jung.com
Wed Aug 13 14:06:22 EDT 2008


Log message for revision 89807:
  - integrated Hotfix-2008-08-12
  

Changed:
  U   Zope/branches/2.9/doc/CHANGES.txt
  _U  Zope/branches/2.9/lib/python/
  U   Zope/branches/2.9/lib/python/Products/PythonScripts/__init__.py
  A   Zope/branches/2.9/lib/python/Products/PythonScripts/patches.py

-=-
Modified: Zope/branches/2.9/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.9/doc/CHANGES.txt	2008-08-13 18:01:45 UTC (rev 89806)
+++ Zope/branches/2.9/doc/CHANGES.txt	2008-08-13 18:06:20 UTC (rev 89807)
@@ -16,6 +16,8 @@
 
       - Launchpad #234209: De-tabify ZPublisher/HTTPRequest.py
 
+      - integrated Hotfix-2008-08-12
+
   Zope 2.9.9 (2008/05/10)
 
    Bugs fixed


Property changes on: Zope/branches/2.9/lib/python
___________________________________________________________________
Name: svn:externals
   - ZConfig        svn://svn.zope.org/repos/main/ZConfig/tags/ZConfig-2.3.1
BTrees         svn://svn.zope.org/repos/main/ZODB/tags/3.6.2/src/BTrees
persistent     svn://svn.zope.org/repos/main/ZODB/tags/3.6.2/src/persistent
ThreadedAsync  svn://svn.zope.org/repos/main/ZODB/tags/3.6.2/src/ThreadedAsync
transaction    svn://svn.zope.org/repos/main/ZODB/tags/3.6.2/src/transaction
ZEO            svn://svn.zope.org/repos/main/ZODB/tags/3.6.2/src/ZEO
ZODB           svn://svn.zope.org/repos/main/ZODB/tags/3.6.2/src/ZODB
ZopeUndo       svn://svn.zope.org/repos/main/ZODB/tags/3.6.2/src/ZopeUndo
# Todo: tag zdaemon
zdaemon        -r 40792 svn://svn.zope.org/repos/main/zdaemon/trunk/src/zdaemon
pytz           svn://svn.zope.org/repos/main/Zope3/tags/3.2.2/src/pytz
zodbcode       svn://svn.zope.org/repos/main/Zope3/tags/3.2.2/src/zodbcode
ClientCookie   svn://svn.zope.org/repos/main/Zope3/tags/3.2.2/src/ClientCookie
mechanize      svn://svn.zope.org/repos/main/Zope3/tags/3.2.2/src/mechanize

   + ZConfig        svn://svn.zope.org/repos/main/ZConfig/tags/ZConfig-2.3.1
BTrees         svn://svn.zope.org/repos/main/ZODB/tags/3.6.3/src/BTrees
persistent     svn://svn.zope.org/repos/main/ZODB/tags/3.6.3/src/persistent
ThreadedAsync  svn://svn.zope.org/repos/main/ZODB/tags/3.6.3/src/ThreadedAsync
transaction    svn://svn.zope.org/repos/main/ZODB/tags/3.6.3/src/transaction
ZEO            svn://svn.zope.org/repos/main/ZODB/tags/3.6.3/src/ZEO
ZODB           svn://svn.zope.org/repos/main/ZODB/tags/3.6.3/src/ZODB
ZopeUndo       svn://svn.zope.org/repos/main/ZODB/tags/3.6.3/src/ZopeUndo
# Todo: tag zdaemon
zdaemon        -r 40792 svn://svn.zope.org/repos/main/zdaemon/trunk/src/zdaemon
pytz           svn://svn.zope.org/repos/main/Zope3/tags/3.2.2/src/pytz
zodbcode       svn://svn.zope.org/repos/main/Zope3/tags/3.2.2/src/zodbcode
ClientCookie   svn://svn.zope.org/repos/main/Zope3/tags/3.2.2/src/ClientCookie
mechanize      svn://svn.zope.org/repos/main/Zope3/tags/3.2.2/src/mechanize


Modified: Zope/branches/2.9/lib/python/Products/PythonScripts/__init__.py
===================================================================
--- Zope/branches/2.9/lib/python/Products/PythonScripts/__init__.py	2008-08-13 18:01:45 UTC (rev 89806)
+++ Zope/branches/2.9/lib/python/Products/PythonScripts/__init__.py	2008-08-13 18:06:20 UTC (rev 89807)
@@ -61,3 +61,5 @@
     if names:
         return 'The following Scripts were recompiled:\n' + '\n'.join(names)
     return 'No Scripts were found that required recompilation.'
+
+import patches

Added: Zope/branches/2.9/lib/python/Products/PythonScripts/patches.py
===================================================================
--- Zope/branches/2.9/lib/python/Products/PythonScripts/patches.py	                        (rev 0)
+++ Zope/branches/2.9/lib/python/Products/PythonScripts/patches.py	2008-08-13 18:06:20 UTC (rev 89807)
@@ -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 (mal at lemburg.com).
+# (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
+



More information about the Zope-Checkins mailing list