Martin Aspeli wrote: > At this point, something is printed to the console. collective.wtf is a > dependency of lw.portal, and its ZCML is being included from lw.portal. > > /home/osc/osc/eggs/collective.wtf-1.0b9-py2.6.egg/collective/wtf/exportimport.py:8: > DeprecationWarning: InitializeClass is deprecated. import from > App.class_init instead > from Globals import InitializeClass
Okay, I found out what it does next: It now processes z3c.autoinclude's <includeDependencies />, which basically just goes through the dependencies in setup.py's install_requires and tries to load a configure.zcml for each. It successfully does that for a number of dependencies, up until it hits "collective.xdv" (same package I saw the problem with when I set up a minimal buildout that just had Plone and collective.xdv in it). The pdb log is: (Pdb) l 43 44 def includeDependenciesDirective(_context, package): 45 46 import pdb; pdb.set_trace() 47 48 -> if api.dependencies_disabled(): 49 log.warn('z3c.autoinclude.dependency is disabled but is being invoked by %s' % _context.info) 50 return 51 52 dist = distributionForPackage(package) 53 info = DependencyFinder(dist).includableInfo(['configure.zcml', 'meta.zcml']) (Pdb) n > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(52)includeDependenciesDirective() -> dist = distributionForPackage(package) (Pdb) n > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(53)includeDependenciesDirective() -> info = DependencyFinder(dist).includableInfo(['configure.zcml', 'meta.zcml']) (Pdb) n > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(55)includeDependenciesDirective() -> includeZCMLGroup(_context, info, 'meta.zcml') (Pdb) pp info {'configure.zcml': ['collective.xdv', 'five.grok', 'z3c.jbot'], 'meta.zcml': ['five.grok', 'z3c.jbot']} (Pdb) l 50 return 51 52 dist = distributionForPackage(package) 53 info = DependencyFinder(dist).includableInfo(['configure.zcml', 'meta.zcml']) 54 55 -> includeZCMLGroup(_context, info, 'meta.zcml') 56 includeZCMLGroup(_context, info, 'configure.zcml') 57 58 def includeDependenciesOverridesDirective(_context, package): 59 60 if api.dependencies_disabled(): (Pdb) n > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(56)includeDependenciesDirective() -> includeZCMLGroup(_context, info, 'configure.zcml') (Pdb) s --Call-- > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(15)includeZCMLGroup() -> def includeZCMLGroup(_context, info, filename, override=False): (Pdb) n > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(16)includeZCMLGroup() -> includable_zcml = info[filename] (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(20)includeZCMLGroup() -> zcml_context = repr(_context.info) (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(22)includeZCMLGroup() -> for dotted_name in includable_zcml: (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(23)includeZCMLGroup() -> log.debug('including file %s from package %s at %s', filename, dotted_name, zcml_context) (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(22)includeZCMLGroup() -> for dotted_name in includable_zcml: (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(23)includeZCMLGroup() -> log.debug('including file %s from package %s at %s', filename, dotted_name, zcml_context) (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(22)includeZCMLGroup() -> for dotted_name in includable_zcml: (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(23)includeZCMLGroup() -> log.debug('including file %s from package %s at %s', filename, dotted_name, zcml_context) (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(22)includeZCMLGroup() -> for dotted_name in includable_zcml: (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(25)includeZCMLGroup() -> for dotted_name in includable_zcml: (Pdb) > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(26)includeZCMLGroup() -> includable_package = resolve(dotted_name) (Pdb) l 21 22 for dotted_name in includable_zcml: 23 log.debug('including file %s from package %s at %s', filename, dotted_name, zcml_context) 24 25 for dotted_name in includable_zcml: 26 -> includable_package = resolve(dotted_name) 27 if override: 28 includeOverrides(_context, filename, includable_package) 29 else: 30 include(_context, filename, includable_package) 31 (Pdb) n > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(27)includeZCMLGroup() -> if override: (Pdb) pp includable_package <module 'collective.xdv' from '/home/osc/osc/src/collective.xdv/collective/xdv/__init__.pyc'> (Pdb) n > /home/osc/osc/eggs/z3c.autoinclude-0.3.2-py2.6.egg/z3c/autoinclude/zcml.py(30)includeZCMLGroup() -> include(_context, filename, includable_package) (Pdb) s --Call-- Now we're back into zope.configuration: > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(487)include() -> def include(_context, file=None, package=None, files=None): (Pdb) n > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(493)include() -> if files: (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(496)include() -> elif not file: (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(502)include() -> if package and (package.__name__ == 'zope.app'): (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(524)include() -> context = config.GroupingContextDecorator(_context) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(525)include() -> if package is not None: (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(526)include() -> context.package = package (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(527)include() -> context.basepath = None (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(529)include() -> if files: (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(535)include() -> paths = [context.path(file)] (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(537)include() -> for path in paths: (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(538)include() -> if context.processFile(path): (Pdb) l 533 paths = [path for (l, path) in paths] 534 else: 535 paths = [context.path(file)] 536 537 for path in paths: 538 -> if context.processFile(path): 539 f = openInOrPlain(path) 540 logger.debug("include %s" % f.name) 541 542 context.basepath = os.path.dirname(path) 543 context.includepath = _context.includepath + (f.name, ) (Pdb) n > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(539)include() -> f = openInOrPlain(path) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(540)include() -> logger.debug("include %s" % f.name) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(542)include() -> context.basepath = os.path.dirname(path) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(543)include() -> context.includepath = _context.includepath + (f.name, ) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(544)include() -> _context.stack.append(config.GroupingStackItem(context)) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(546)include() -> processxmlfile(f, context) (Pdb) s --Call-- > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(367)processxmlfile() -> def processxmlfile(file, context, testing=False): (Pdb) n > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(372)processxmlfile() -> src = InputSource(getattr(file, 'name', '<string>')) (Pdb) l 367 def processxmlfile(file, context, testing=False): 368 """Process a configuration file 369 370 See examples in tests/text_xmlconfig.py 371 """ 372 -> src = InputSource(getattr(file, 'name', '<string>')) 373 src.setByteStream(file) 374 parser = make_parser() 375 parser.setContentHandler(ConfigurationHandler(context, testing=testing)) 376 parser.setFeature(feature_namespaces, True) 377 try: (Pdb) n > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(373)processxmlfile() -> src.setByteStream(file) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(374)processxmlfile() -> parser = make_parser() (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(375)processxmlfile() -> parser.setContentHandler(ConfigurationHandler(context, testing=testing)) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(376)processxmlfile() -> parser.setFeature(feature_namespaces, True) (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(377)processxmlfile() -> try: (Pdb) > /home/osc/osc/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py(378)processxmlfile() -> parser.parse(src) (Pdb) l 373 src.setByteStream(file) 374 parser = make_parser() 375 parser.setContentHandler(ConfigurationHandler(context, testing=testing)) 376 parser.setFeature(feature_namespaces, True) 377 try: 378 -> parser.parse(src) 379 except SAXParseException: 380 raise ZopeSAXParseException(sys.exc_info()[1]), None, sys.exc_info()[2] 381 382 383 def openInOrPlain(filename): (Pdb) s --Call-- > /usr/lib64/python2.6/xml/sax/expatreader.py(100)parse() -> def parse(self, source): (Pdb) n > /usr/lib64/python2.6/xml/sax/expatreader.py(102)parse() -> source = saxutils.prepare_input_source(source) (Pdb) > /usr/lib64/python2.6/xml/sax/expatreader.py(104)parse() -> self._source = source (Pdb) > /usr/lib64/python2.6/xml/sax/expatreader.py(105)parse() -> self.reset() (Pdb) l 100 def parse(self, source): 101 "Parse an XML document from a URL or an InputSource." 102 source = saxutils.prepare_input_source(source) 103 104 self._source = source 105 -> self.reset() 106 self._cont_handler.setDocumentLocator(ExpatLocator(self)) 107 xmlreader.IncrementalParser.parse(self, source) 108 109 def prepareParser(self, source): 110 if source.getSystemId() is not None: (Pdb) n > /usr/lib64/python2.6/xml/sax/expatreader.py(106)parse() -> self._cont_handler.setDocumentLocator(ExpatLocator(self)) (Pdb) > /usr/lib64/python2.6/xml/sax/expatreader.py(107)parse() -> xmlreader.IncrementalParser.parse(self, source) (Pdb) s --Call-- > /usr/lib64/python2.6/xml/sax/xmlreader.py(115)parse() -> def parse(self, source): (Pdb) n > /usr/lib64/python2.6/xml/sax/xmlreader.py(116)parse() -> import saxutils (Pdb) n > /usr/lib64/python2.6/xml/sax/xmlreader.py(117)parse() -> source = saxutils.prepare_input_source(source) (Pdb) n > /usr/lib64/python2.6/xml/sax/xmlreader.py(119)parse() -> self.prepareParser(source) (Pdb) > /usr/lib64/python2.6/xml/sax/xmlreader.py(120)parse() -> file = source.getByteStream() (Pdb) l 115 def parse(self, source): 116 import saxutils 117 source = saxutils.prepare_input_source(source) 118 119 self.prepareParser(source) 120 -> file = source.getByteStream() 121 buffer = file.read(self._bufsize) 122 while buffer != "": 123 self.feed(buffer) 124 buffer = file.read(self._bufsize) 125 self.close() (Pdb) n > /usr/lib64/python2.6/xml/sax/xmlreader.py(121)parse() -> buffer = file.read(self._bufsize) (Pdb) > /usr/lib64/python2.6/xml/sax/xmlreader.py(122)parse() -> while buffer != "": This is the full ZCML that it's loading: (Pdb) print buffer <configure xmlns="http://namespaces.zope.org/zope" xmlns:gs="http://namespaces.zope.org/genericsetup" xmlns:browser="http://namespaces.zope.org/browser" xmlns:zcml="http://namespaces.zope.org/zcml" xmlns:i18n="http://namespaces.zope.org/i18n" i18n_domain="collective.xdv"> <i18n:registerTranslations directory="locales"/> <include package="plone.app.registry" /> <include package="plone.transformchain" /> <gs:registerProfile name="default" title="XDV theme support" description="Installs a control panel to allow on-the-fly theming with xdv" directory="profiles/default" for="Products.CMFPlone.interfaces.IPloneSiteRoot" provides="Products.GenericSetup.interfaces.EXTENSION" /> <!-- Transform order 8850 - apply XDV transform --> <adapter name="collective.xdv.transform" factory=".transform.XDVTransform" /> <subscriber for=".interfaces.ITransformSettings plone.registry.interfaces.IRecordModifiedEvent" handler=".transform.invalidateCache" /> <browser:page name="xdv-settings" for="Products.CMFPlone.interfaces.IPloneSiteRoot" class=".browser.TransformSettingsControlPanel" permission="cmf.ManagePortal" /> <!-- Set X-XDV header in the request if XDV is enabled --> <subscriber for="ZPublisher.interfaces.IPubAfterTraversal" handler=".header.setHeader" /> <!-- Utility view - use in portal_css or similar as portal/@@xdv-check/enabled" --> <browser:page name="xdv-check" for="Products.CMFPlone.interfaces.IPloneSiteRoot" class=".browser.Utility" permission="zope.Public" allowed_attributes="enabled domain_enabled" /> <browser:resource name="collective.xdv.gif" image="icon.gif" /> </configure> (Pdb) n > /usr/lib64/python2.6/xml/sax/xmlreader.py(123)parse() -> self.feed(buffer) (Pdb) l 118 119 self.prepareParser(source) 120 file = source.getByteStream() 121 buffer = file.read(self._bufsize) 122 while buffer != "": 123 -> self.feed(buffer) 124 buffer = file.read(self._bufsize) 125 self.close() 126 127 def feed(self, data): 128 """This method gives the raw XML data in the data parameter to (Pdb) s --Call-- > /usr/lib64/python2.6/xml/sax/expatreader.py(196)feed() -> def feed(self, data, isFinal = 0): (Pdb) n > /usr/lib64/python2.6/xml/sax/expatreader.py(197)feed() -> if not self._parsing: (Pdb) l 192 name) 193 194 # IncrementalParser methods 195 196 def feed(self, data, isFinal = 0): 197 -> if not self._parsing: 198 self.reset() 199 self._parsing = 1 200 self._cont_handler.startDocument() 201 202 try: (Pdb) n > /usr/lib64/python2.6/xml/sax/expatreader.py(198)feed() -> self.reset() (Pdb) > /usr/lib64/python2.6/xml/sax/expatreader.py(199)feed() -> self._parsing = 1 (Pdb) > /usr/lib64/python2.6/xml/sax/expatreader.py(200)feed() -> self._cont_handler.startDocument() (Pdb) > /usr/lib64/python2.6/xml/sax/expatreader.py(202)feed() -> try: (Pdb) l 197 if not self._parsing: 198 self.reset() 199 self._parsing = 1 200 self._cont_handler.startDocument() 201 202 -> try: 203 # The isFinal parameter is internal to the expat reader. 204 # If it is set to true, expat will check validity of the entire 205 # document. When feeding chunks, they are not normally final - 206 # except when invoked from close. 207 self._parser.Parse(data, isFinal) (Pdb) n > /usr/lib64/python2.6/xml/sax/expatreader.py(207)feed() -> self._parser.Parse(data, isFinal) (Pdb) l 202 try: 203 # The isFinal parameter is internal to the expat reader. 204 # If it is set to true, expat will check validity of the entire 205 # document. When feeding chunks, they are not normally final - 206 # except when invoked from close. 207 -> self._parser.Parse(data, isFinal) 208 except expat.error, e: 209 exc = SAXParseException(expat.ErrorString(e.code), e, self) 210 # FIXME: when to invoke error()? 211 self._err_handler.fatalError(exc) 212 (Pdb) n Boom! (python-env)o...@lwpn-osb-webback-2:~/osc> echo $? 0 I stepped into the self.parser.Parse() line to get some more context (this is C code): > /usr/lib64/python2.6/xml/sax/expatreader.py(207)feed() -> self._parser.Parse(data, isFinal) (Pdb) s --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl() (Pdb) n --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) n --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) n --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) n --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) n --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) n --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) n --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) n --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(839)StartNamespaceDecl()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) n --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(479)CharacterData()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Return-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(604)StartElement()->None (Pdb) --Call-- > /usr/src/packages/BUILD/Python-2.6/Modules/pyexpat.c(656)EndElement()->None (Pdb) BOOM. So this is still in pyexpat C code as far as I can tell. :-( Martin _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org https://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - https://mail.zope.org/mailman/listinfo/zope-announce https://mail.zope.org/mailman/listinfo/zope )