On Mon, Oct 20, 2008 at 06:43:53PM +0200, Matthias Klose wrote:
> Since some time a subset of python-xml is included in the standard
> python library, while the python-xml package did not see any updates
> for years.  It is time to drop it from the distribution.  Update
> scenarios:

I've investigated a bit the issue for MoinMoin, here are some info in
the hope they help.

- RSS generation is not an issue, it works properly even without
  python-xml (no need even for an alternative library)

- docbook generation on the contrary is an issue. It actually relies
  on python-4suite, but apparently it is no longer compatible with the
  4suite we currently have in unstable. Also, it mixes the 4suite need
  with some modules that use to be available in python-xml and which
  are not emulated by legacy XML support in the python standard
  library.

  I've a partial patch that fixes all module import issues and which I
  attach. However, it still does not work because it seems that the
  new 4suite requires all string data encoded as "unicode" data types
  and not "str". So there is a need to chase down all strings passed
  to the 4suite pretty printer to convert them to unicode :-/

FWIW, I've also checked 1.9~beta3 release of MoinMoin, docbook support
is still broken wrt this issue also there.

Feedback from the maintainer would be good to understand whether he is
in touch with upstream about this or not.

Cheers.

-- 
Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
z...@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
Dietro un grande uomo c'è ..|  .  |. Et ne m'en veux pas si je te tutoie
sempre uno zaino ...........| ..: |.... Je dis tu à tous ceux que j'aime
--- MoinMoin/formatter/text_docbook.py	2009-06-09 21:49:50.000000000 +0200
+++ /usr/share/pyshared/MoinMoin/formatter/text_docbook.py	2009-09-06 15:02:03.000000000 +0200
@@ -12,8 +12,11 @@
 import os
 
 from xml.dom import getDOMImplementation
-from xml.dom.ext.reader import Sax
-from xml.dom.ext import Node
+try:
+    from Ft.Xml.Domlette import NonvalidatingReader as Reader
+except ImportError:
+    raise InternalError("You need to install 4suite to use the DocBook formatter.")
+from xml.dom import Node
 
 from MoinMoin.formatter import FormatterBase
 from MoinMoin import wikiutil
@@ -28,10 +31,7 @@
 class InternalError(CompositeError):
     pass
 
-try:
-    dom = getDOMImplementation("4DOM")
-except ImportError:
-    raise InternalError("You need to install 4suite to use the DocBook formatter.")
+dom = getDOMImplementation()
 
 
 class Formatter(FormatterBase):
@@ -73,7 +73,7 @@
 
     def startDocument(self, pagename):
         self.doc = dom.createDocument(None, self.doctype, dom.createDocumentType(
-            self.doctype, "-//OASIS//DTD DocBook XML V4.4//EN",
+            unicode(self.doctype), "-//OASIS//DTD DocBook XML V4.4//EN",
             "http://www.docbook.org/xml/4.4/docbookx.dtd";))
 
         self.title = pagename
@@ -101,7 +101,7 @@
         return ""
 
     def endDocument(self):
-        from xml.dom.ext import PrettyPrint, Print
+        from Ft.Xml.Domlette import PrettyPrint, Print
         import StringIO
 
         f = StringIO.StringIO()
@@ -614,7 +614,7 @@
                 self.paragraph(0)
             text = FormatterBase.macro(self, macro_obj, name, args)
             if text.strip():
-                self._copyExternalNodes(Sax.FromXml(text).documentElement.childNodes, exclude=excludes)
+                self._copyExternalNodes(Reader.parseString(text).documentElement.childNodes, exclude=excludes)
             if was_in_para:
                 self.paragraph(1)
 
@@ -623,7 +623,7 @@
             if text:
                 from xml.parsers.expat import ExpatError
                 try:
-                    xml_dom = Sax.FromXml(text).documentElement.childNodes
+                    xml_dom = Reader.parseString(text).documentElement.childNodes
                     self._copyExternalNodes(xml_dom, exclude=excludes)
                 except ExpatError:
                     self._emitComment("The macro %s caused an error and should be blacklisted. It returned the data '%s' which caused the docbook-formatter to choke. Please file a bug." % (name, text))

Reply via email to