[Checkins] SVN: zope.pagetemplate/trunk/ Replaced StringIO stream class with a faster list-based implementation.

Hanno Schlichting hannosch at hannosch.eu
Sat Aug 20 11:44:05 EDT 2011


Log message for revision 122621:
  Replaced StringIO stream class with a faster list-based implementation.
  

Changed:
  U   zope.pagetemplate/trunk/CHANGES.txt
  U   zope.pagetemplate/trunk/setup.py
  U   zope.pagetemplate/trunk/src/zope/pagetemplate/pagetemplate.py

-=-
Modified: zope.pagetemplate/trunk/CHANGES.txt
===================================================================
--- zope.pagetemplate/trunk/CHANGES.txt	2011-08-20 14:34:08 UTC (rev 122620)
+++ zope.pagetemplate/trunk/CHANGES.txt	2011-08-20 15:44:04 UTC (rev 122621)
@@ -3,9 +3,12 @@
 =======
 
 3.6.0 (unreleased)
+------------------
 
+- Replaced StringIO stream class with a faster list-based implementation.
+
 - Abstract out the template engine and program interfaces and allow
-  implementation replacement via a utility component registration.
+  implementation replacement via a utility registration.
 
 3.5.3 (unreleased)
 ------------------

Modified: zope.pagetemplate/trunk/setup.py
===================================================================
--- zope.pagetemplate/trunk/setup.py	2011-08-20 14:34:08 UTC (rev 122620)
+++ zope.pagetemplate/trunk/setup.py	2011-08-20 15:44:04 UTC (rev 122621)
@@ -27,7 +27,7 @@
 
 
 setup(name='zope.pagetemplate',
-      version='3.5.3dev',
+      version='3.6.0dev',
       author='Zope Foundation and Contributors',
       author_email='zope-dev at zope.org',
       description='Zope Page Templates',

Modified: zope.pagetemplate/trunk/src/zope/pagetemplate/pagetemplate.py
===================================================================
--- zope.pagetemplate/trunk/src/zope/pagetemplate/pagetemplate.py	2011-08-20 14:34:08 UTC (rev 122620)
+++ zope.pagetemplate/trunk/src/zope/pagetemplate/pagetemplate.py	2011-08-20 15:44:04 UTC (rev 122621)
@@ -22,8 +22,6 @@
 from zope.tal.talinterpreter import TALInterpreter
 from zope.tales.engine import Engine
 from zope.component import queryUtility
-# Don't use cStringIO here!  It's not unicode aware.
-from StringIO import StringIO
 
 from zope.pagetemplate.interfaces import IPageTemplateSubclassing
 from zope.pagetemplate.interfaces import IPageTemplateEngine
@@ -35,6 +33,20 @@
 _error_start = '<!-- Page Template Diagnostics'
 
 
+class StringIO(list):
+    """Unicode aware append-only version of StringIO.
+    """
+    write = list.append
+
+    def __init__(self, value=None):
+        list.__init__(self)
+        if value is not None:
+            self.append(value)
+
+    def getvalue(self):
+        return u''.join(self)
+
+
 class PageTemplate(object):
     """Page Templates using TAL, TALES, and METAL.
 



More information about the checkins mailing list