From stefan_ml at behnel.de Sun Nov 4 19:43:21 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Sun, 04 Nov 2007 19:43:21 +0100 Subject: [lxml-dev] lxml trunk now requires Cython 0.9.6.8 Message-ID: <472E12C9.5010503@behnel.de> Hi all, the current trunk now requires Cython 0.9.6.8 to build, as will 2.0alpha5. Many of the changes that lxml required in Pyrex (and that Cython provided) have now gone back into the mainstream distribution - but different. It was decided that Cython would follow these incompatible language changes, which now required some minor changes in lxml. This also means that external modules that use the C-API of lxml will need a little adaption as the name of the public import function has changed from "import_etree" to "import_lxml__etree". Everything else should work just as before. Note that lxml 1.3 will not be adapted. Future versions will continue to ship with a patched Pyrex and will not build with Cython or future Pyrex versions. Stefan From ianb at colorstudy.com Mon Nov 5 03:12:07 2007 From: ianb at colorstudy.com (Ian Bicking) Date: Sun, 04 Nov 2007 20:12:07 -0600 Subject: [lxml-dev] Failing lxml.html tests In-Reply-To: <4727A193.6000204@behnel.de> References: <4720D829.6080507@behnel.de> <47210B79.10502@colorstudy.com> <47218E76.8030506@behnel.de> <472201D4.5010409@colorstudy.com> <4722EDAC.1070807@behnel.de> <472751D4.20403@colorstudy.com> <4727A193.6000204@behnel.de> Message-ID: <472E7BF7.2000604@colorstudy.com> Stefan Behnel wrote: > Ian Bicking wrote: >> I made a new checkout, did python setup.py develop, and retested, and >> the errors seem even weirder now. Many are for method, but there's a >> bunch of others too (though still most pass). >> >> I attached the test output. > > Hmm, there really must be something wrong with your setup. You have Cython > 0.9.6.7 installed, I assume? I only get three errors, all in the HTML tests. > The first one is because one of the entries in _tag_link_attrs is a list, not > sure about the others. I only get one, the _tag_link_attrs issue, which I just fixed. It's possible one of these weird errors is preventing another error from occurring, though... I guess not, since all the errors I now get are in lxml.tests.test_elementtree. > Anyway, you can run the HTML tests by calling "test.py -vv html", that should > get you over the failing tests for now. I'll see how far I get with a clean > checkout myself. Have you tried importing etree by hand and checked if the > failing methods work there? They do work there (at least the method argument that I tested). So it's just in the test environment where it's acting weird. Which is odd. -- Ian Bicking : ianb at colorstudy.com : http://blog.ianbicking.org From stefan_ml at behnel.de Mon Nov 5 09:00:15 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Mon, 05 Nov 2007 09:00:15 +0100 Subject: [lxml-dev] Failing lxml.html tests In-Reply-To: <472E7BF7.2000604@colorstudy.com> References: <4720D829.6080507@behnel.de> <47210B79.10502@colorstudy.com> <47218E76.8030506@behnel.de> <472201D4.5010409@colorstudy.com> <4722EDAC.1070807@behnel.de> <472751D4.20403@colorstudy.com> <4727A193.6000204@behnel.de> <472E7BF7.2000604@colorstudy.com> Message-ID: <472ECD8F.3000505@behnel.de> Ian Bicking wrote: > Stefan Behnel wrote: >> I only get three errors, all in the HTML tests. >> The first one is because one of the entries in _tag_link_attrs is a >> list, not sure about the others. > > I only get one, the _tag_link_attrs issue, which I just fixed. The others only occur with libxml2 2.6.29 and later. These versions handle the "embed" tag as a special tag that does not need closing. However, a parse-serialise-parse cycle for such HTML alters the document here: it omits the closing tag and then reparses the following tags as children. So this is a bug in libxml2. I'll report it there. For the time being - maybe there's a way to work around that? Stefan From jlovell at esd189.org Thu Nov 8 01:21:28 2007 From: jlovell at esd189.org (John Lovell) Date: Wed, 7 Nov 2007 16:21:28 -0800 Subject: [lxml-dev] XSD Validation: No matching global declaration. Message-ID: <3A49C88789256B4AB33AC603DB6AF49B08E0DC@ZIRIA.esd189.org> Hi All: I don't know if my schema is invalid or if this represents a bug in lxml or libxml2. Here is the situation... I have a XML Schema that looks like this: ... ... I am trying to validate this data: &amp;1&lt;tNk44}F2 ;pl}ee&apos;- mlZm at JD l1uqg! ZE72n/l The error log shows the following error: ../1.5r1/XSD/Infrastructure/Authentication__Authentication.xml:2:ERROR:S CHEMASV:SCHEMAV_CVC_ELT_1: Element 'Authentication': No matching global declaration available for the validation root. The same code given diffrent files works fine. Does anyone have any ideas why I am getting this message? Required version information: lxml.etree: (1, 3, 4, 0) libxml used: (2, 6, 30) libxml compiled: (2, 6, 30) libxslt used: (1, 1, 21) libxslt compiled: (1, 1, 22) Thanks, John W. Lovell Web Applications Engineer Northwest Educational Service District 1601 R Avenue Anacortes, WA 98221 www.esd189.org Together We Can ... -------------- next part -------------- An HTML attachment was scrubbed... URL: http://codespeak.net/pipermail/lxml-dev/attachments/20071107/2a250fd3/attachment-0001.htm From stefan_ml at behnel.de Thu Nov 8 07:55:45 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Thu, 08 Nov 2007 07:55:45 +0100 Subject: [lxml-dev] XSD Validation: No matching global declaration. In-Reply-To: <3A49C88789256B4AB33AC603DB6AF49B08E0DC@ZIRIA.esd189.org> References: <3A49C88789256B4AB33AC603DB6AF49B08E0DC@ZIRIA.esd189.org> Message-ID: <4732B2F1.1080802@behnel.de> John Lovell wrote: > I don't know if my schema is invalid or if this represents a bug in lxml > or libxml2. > The error log shows the following error: > > ../1.5r1/XSD/Infrastructure/Authentication__Authentication.xml:2:ERROR:S > CHEMASV:SCHEMAV_CVC_ELT_1: Element 'Authentication': No matching global > declaration available for the validation root. I'm not so firm with libxml2's XML Schema implementation, not sure what that means exactly. Is it the only error you get in the log? > The same code given diffrent files works fine. Does anyone have any > ideas why I am getting this message? You can check if "xmllint" (which is the command line tool that comes with libxml2) produces the same error. It is actually unlikely that this is an lxml problem, so this would tell you if libxml2 really thinks that your file is invalid. In that case, you can ask on the libxml2 mailing list instead. Maybe you can also check with a different tool, that might give you more hints on what is wrong here. Stefan From jholg at gmx.de Thu Nov 8 09:19:39 2007 From: jholg at gmx.de (jholg at gmx.de) Date: Thu, 08 Nov 2007 09:19:39 +0100 Subject: [lxml-dev] XSD Validation: No matching global declaration. In-Reply-To: <3A49C88789256B4AB33AC603DB6AF49B08E0DC@ZIRIA.esd189.org> References: <3A49C88789256B4AB33AC603DB6AF49B08E0DC@ZIRIA.esd189.org> Message-ID: <20071108081939.44610@gmx.net> Hi, > I have a XML Schema that looks like this: > > xmlns="http://www.w3.org/2001/XMLSchema" > xmlns:sif="http://www.sifinfo.org/infrastructure/1.x" > targetNamespace="http://www.sifinfo.org/infrastructure/1.x"> > > schemaLocation="http://www.w3.org/2001/xml.xsd"/> > > ... > > > > ... > > > > I am trying to validate this data: > > > ns3:RefId="27D1CAEA85C2BAA647A01B551D21E1EB" > ns3:SifRefId="211242238C60A55E25B2B86BB337C244" > ns3:SifRefIdType="EmployeePersonal"> Shouldn't be from the namespace "http://www.sifinfo.org/infrastructure/1.x" in the instance document? How do other instance documents that validate fine differ? Holger -- GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS. Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/go/freemail From jlovell at esd189.org Thu Nov 8 18:22:35 2007 From: jlovell at esd189.org (John Lovell) Date: Thu, 8 Nov 2007 09:22:35 -0800 Subject: [lxml-dev] XSD Validation: No matching global declaration. In-Reply-To: <4732B2F1.1080802@behnel.de> References: <3A49C88789256B4AB33AC603DB6AF49B08E0DC@ZIRIA.esd189.org> <4732B2F1.1080802@behnel.de> Message-ID: <3A49C88789256B4AB33AC603DB6AF49B08E0DD@ZIRIA.esd189.org> >John Lovell wrote: >> I don't know if my schema is invalid or if this represents a bug in >> lxml or libxml2. >> The error log shows the following error: >> >> ../1.5r1/XSD/Infrastructure/Authentication__Authentication.xml:2:ERROR >> :S >> CHEMASV:SCHEMAV_CVC_ELT_1: Element 'Authentication': No matching >> global declaration available for the validation root. >I'm not so firm with libxml2's XML Schema implementation, not sure what >that means exactly. Is it the only error you get in the log? I get just one similar error in the log for every file I try to validate with this schema. Only the elements name changes. >> The same code given diffrent files works fine. Does anyone have any >> ideas why I am getting this message? >You can check if "xmllint" (which is the command line tool that comes with >libxml2) produces the same error. It is actually unlikely that this is an >lxml problem, so this would tell you if libxml2 really thinks that your >file is invalid. In that case, you can ask on the libxml2 mailing list >instead. Okay here we go... jlovell at esd189-10545:~/SIF Toolkit/Data Generator$ xmllint --schema combined.txt ../1.5r1/XSD/Infrastructure/Authentication__Authentication.xml &amp;1&lt;tNk44}F2 ;pl}ee&apos;- mlZm at JD l1uqg! ZE72n/l ../1.5r1/XSD/Infrastructure/Authentication__Authentication.xml:2: element Authentication: Schemas validity error : Element 'Authentication': No matching global declaration available for the validation root. ../1.5r1/XSD/Infrastructure/Authentication__Authentication.xml fails to validate You are right it isn't an lxml problem! Sorry, but I had to start somewhere. >Maybe you can also check with a different tool, that might give you more >hints on what is wrong here. Good idea here is the output from: http://www.xmlme.com/Validator.aspx Validation Results: Schema Error: System.Xml.Schema.XmlSchemaException: The targetNamespace parameter '' should be the same value as the targetNamespace 'http://www.sifinfo.org/infrastructure/1.x' of the schema. at System.Xml.Schema.BaseProcessor.SendValidationEvent(XmlSchemaException e, XmlSeverityType severity) at System.Xml.Schema.SchemaCollectionPreprocessor.Preprocess(XmlSchema schema, String targetNamespace, Compositor compositor) at System.Xml.Schema.SchemaCollectionPreprocessor.Execute(XmlSchema schema, String targetNamespace, Boolean loadExternals, XmlSchemaCollection xsc) at System.Xml.Schema.XmlSchema.CompileSchema(XmlSchemaCollection xsc, XmlResolver resolver, SchemaInfo schemaInfo, String ns, ValidationEventHandler validationEventHandler, XmlNameTable nameTable, Boolean CompileContentModel) at System.Xml.Schema.XmlSchemaCollection.Add(String ns, SchemaInfo schemaInfo, XmlSchema schema, Boolean compile, XmlResolver resolver) at System.Xml.Schema.XmlSchemaCollection.Add(String ns, XmlReader reader, XmlResolver resolver) at System.Xml.Schema.XmlSchemaCollection.Add(String ns, XmlReader reader) at Validator.Button1_Click(Object sender, EventArgs e) Okay, so it is me. At this point, which mailing list should I be bothering? If you know how I can set the targetNamespace of my document to match my schema, please email me but consider carefully if it is appropriate to copy this list. Thanks for all your help, John W. Lovell Web Applications Engineer Northwest Educational Service District 1601 R Avenue Anacortes, WA 98221 www.esd189.org Together We Can ... From jlovell at esd189.org Thu Nov 8 18:29:16 2007 From: jlovell at esd189.org (John Lovell) Date: Thu, 8 Nov 2007 09:29:16 -0800 Subject: [lxml-dev] XSD Validation: No matching global declaration. In-Reply-To: <20071108081939.44610@gmx.net> References: <3A49C88789256B4AB33AC603DB6AF49B08E0DC@ZIRIA.esd189.org> <20071108081939.44610@gmx.net> Message-ID: <3A49C88789256B4AB33AC603DB6AF49B08E0DE@ZIRIA.esd189.org> >Hi, >> I have a XML Schema that looks like this: >> >> > xmlns="http://www.w3.org/2001/XMLSchema" >> xmlns:sif="http://www.sifinfo.org/infrastructure/1.x" >> targetNamespace="http://www.sifinfo.org/infrastructure/1.x"> >> >> > schemaLocation="http://www.w3.org/2001/xml.xsd"/> >> >> ... >> >> >> >> ... >> >> >> >> I am trying to validate this data: >> >> >> > ns3:RefId="27D1CAEA85C2BAA647A01B551D21E1EB" >> ns3:SifRefId="211242238C60A55E25B2B86BB337C244" >> ns3:SifRefIdType="EmployeePersonal"> >Shouldn't be from the namespace "http://www.sifinfo.org/infrastructure/1.x" >in the instance document? You are probably right (see my last post). However, I have been unable to figure out how to do that. I just received the O'Reilly XML Schema book so that should change. Although, if you would like to clue me in, that would be great. >How do other instance documents that validate fine differ? Drastically, one is the very simple PO example while the schema I'm working with is about a half a megabyte. John W. Lovell Web Applications Engineer Northwest Educational Service District 1601 R Avenue Anacortes, WA 98221 www.esd189.org Together We Can ... From jlovell at esd189.org Thu Nov 8 19:23:08 2007 From: jlovell at esd189.org (John Lovell) Date: Thu, 8 Nov 2007 10:23:08 -0800 Subject: [lxml-dev] XSD Validation: No matching global declaration. In-Reply-To: <3A49C88789256B4AB33AC603DB6AF49B08E0DE@ZIRIA.esd189.org> References: <3A49C88789256B4AB33AC603DB6AF49B08E0DC@ZIRIA.esd189.org><20071108081939.44610@gmx.net> <3A49C88789256B4AB33AC603DB6AF49B08E0DE@ZIRIA.esd189.org> Message-ID: <3A49C88789256B4AB33AC603DB6AF49B08E0E0@ZIRIA.esd189.org> Thanks to Holger and Stefan: Holger was right on, my problem was with my instance document not the schema. For anyone this might help, here are my new results: jlovell at esd189-10545:~/SIF Toolkit/Data Generator$ xmllint --schema combined.txt ../1.5r1/XSD/Infrastructure/Authentication__Authentication.xml &amp;1&lt;tNk44}F2 ;pl}ee&apos;- mlZm at JD l1uqg! ZE72n/l ../1.5r1/XSD/Infrastructure/Authentication__Authentication.xml validates Thanks, John W. Lovell Web Applications Engineer Northwest Educational Service District 1601 R Avenue Anacortes, WA 98221 www.esd189.org Together We Can ... From jholg at gmx.de Tue Nov 13 14:28:57 2007 From: jholg at gmx.de (jholg at gmx.de) Date: Tue, 13 Nov 2007 14:28:57 +0100 Subject: [lxml-dev] 2.0 release plan, any news? Message-ID: <20071113132857.214520@gmx.net> Hi, any plans on releasing another 2.0 alpha-cycle, or even going into Beta phase? Just asking, as I'm about to package an lxml-based app by the end of week. I've no real issues with using an alpha-snapshot as this runs smoothly, but of course would still prefer to ship an official release. Cheers, Holger -- GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS. Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/go/freemail From alain.poirier at net-ng.com Wed Nov 14 18:15:50 2007 From: alain.poirier at net-ng.com (Alain Poirier) Date: Wed, 14 Nov 2007 18:15:50 +0100 Subject: [lxml-dev] Pb with namespaces on attributs Message-ID: <200711141815.51034.alain.poirier@net-ng.com> An attribut of a node, inserted then removed from a tree, can lose its namespace : >>> from lxml import etree as ET >>> parent = ET.Element('parent') >>> parent.set('{http://foo/bar}x', 'a') >>> child = ET.SubElement(parent, 'child') >>> child.set('{http://foo/bar}x', 'b') >>> print ET.tostring(child), child.nsmap {'ns0': 'http://foo/bar'} >>> child = parent[0] >>> parent.clear() >>> print ET.tostring(child), child.nsmap {} It happends when the tree already knows the namespace used. A bug in lxml or in libxml2 (tested with lxml-2.0alpha4 and libxml2 2.6.28 / 2.6.30) ? From stefan_ml at behnel.de Wed Nov 14 23:05:18 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Wed, 14 Nov 2007 23:05:18 +0100 Subject: [lxml-dev] 2.0 release plan, any news? In-Reply-To: <20071113132857.214520@gmx.net> References: <20071113132857.214520@gmx.net> Message-ID: <473B711E.70103@behnel.de> Hi Holger, jholg at gmx.de wrote: > any plans on releasing another 2.0 alpha-cycle, or even going into Beta > phase? there will be at least one additional alpha release, preferably soon. I'm still struggling with the iterparse() API - not sure the "pass a parser instead of kw args" bit will work out... > Just asking, as I'm about to package an lxml-based app by the end of week. > I've no real issues with using an alpha-snapshot as this runs smoothly, but > of course would still prefer to ship an official release. Not sure I can come up with something till this week-end, so I'd suggest shipping with a trunk version for now. Also, if I manage to reimplement iterparse(), it might not yet be completely stable in the next release, so you're probably better off with the current trunk anyway. Stefan From stefan_ml at behnel.de Wed Nov 14 23:32:34 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Wed, 14 Nov 2007 23:32:34 +0100 Subject: [lxml-dev] Pb with namespaces on attributs In-Reply-To: <200711141815.51034.alain.poirier@net-ng.com> References: <200711141815.51034.alain.poirier@net-ng.com> Message-ID: <473B7782.8000502@behnel.de> Alain Poirier wrote: > An attribut of a node, inserted then removed from a tree, can lose its > namespace : > >>>> from lxml import etree as ET >>>> parent = ET.Element('parent') >>>> parent.set('{http://foo/bar}x', 'a') >>>> child = ET.SubElement(parent, 'child') >>>> child.set('{http://foo/bar}x', 'b') > >>>> print ET.tostring(child), child.nsmap > {'ns0': 'http://foo/bar'} > >>>> child = parent[0] >>>> parent.clear() >>>> print ET.tostring(child), child.nsmap > {} > > It happends when the tree already knows the namespace used. Thanks for the report. This is a serialisation bug that was already fixed in lxml 1.3.5 and on the current SVN trunk. The fix will be in 2.0alpha5. Stefan From pf at pfhawkins.com Sat Nov 17 19:48:10 2007 From: pf at pfhawkins.com (P.F. Hawkins) Date: Sat, 17 Nov 2007 13:48:10 -0500 Subject: [lxml-dev] easy_install issues Message-ID: <87zlxc674l.fsf@pfhawkins.com> I'm having trouble installing any version of lxml higher than 1.3.3. The error says that easy_install can't find a proper version of dateutil, even though I have a high enough version of "python-dateutil" installed on this system. I assume that the issue has to do with "dateutil" vs. "python-dateutil", but I'm not sure. FWIW, I'm running ubuntu gutsy. Thanks in advance! P. F. Hawkins -- Figuring things out, one word at a time. From stefan_ml at behnel.de Fri Nov 23 12:31:47 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Fri, 23 Nov 2007 12:31:47 +0100 Subject: [lxml-dev] TreeBuilder implementation in lxml.etree Message-ID: <4746BA23.1080603@behnel.de> Hi all, lxml.etree now has an ET compatible TreeBuilder class that is integrated into the parser framework, i.e. you can create a parser with "target=TreeBuilder()" and have it build a tree for you just the way ET does. Or, you can create a TreeBuilder instance and call the event methods yourself to get the same effect without parsing. There is one little difference to ET: the start() method has the following signature: def start(self, tag, attrs, nsmap=None): whereas in ET it's def start(self, tag, attrs): so lxml.etree accepts an additional "nsmap" argument here. This is required as lxml's parser would otherwise loose the namespace prefix mappings, so the generated trees would declare namespaces wherever a tag uses them first in the hierarchy and not where they were originally declared in the parsed document (which usually means the root element). Also, this supports prefixed text values that refer to declared namespaces (see for example the QName class). If you want to write code that subclasses the TreeBuilder and that should still work with both ET and lxml.etree, you should use the above signature. There is a bit of code that tries to figure out if the method can be called with three arguments, but I'm not sure it works in all cases. It's essentially this: import inspect arguments = inspect.getargspec(target.start) if len(arguments[0]) > 3: # self + 3 arguments takes_nsmap = True elif arguments[1] is not None: # '*args' parameter takes_nsmap = True else: takes_nsmap = False Hope this is useful, Stefan From stefan_ml at behnel.de Sat Nov 24 12:51:34 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Sat, 24 Nov 2007 12:51:34 +0100 Subject: [lxml-dev] lxml 2.0alpha5 released Message-ID: <47481046.70907@behnel.de> Hi all, lxml 2.0alpha5 made it to PyPI. This is (hopefully) the last alpha in the pre-2.0 series, so please report any remaining API quirks, weirdnesses and bugs now to make sure they get fixed before 2.0 gets its API freeze during the beta cycle. If all works out well, there should not be more than one beta release before the final version. This release features a major overhaul of the target parser, including an internal SAX parser framework and an ET compatible TreeBuilder implementation. The complete Changelog follows below. Note that the API now enforces keyword-only arguments in a couple of places. This can require some syntactic changes in existing code. Have fun, Stefan 2.0alpha5 (2007-11-24) Features added * Rich comparison of element.attrib proxies. * ElementTree compatible TreeBuilder class. * Use default prefixes for some common XML namespaces. * lxml.html.clean.Cleaner now allows for a host_whitelist, and two overridable methods: allow_embedded_url(el, url) and the more general allow_element(el). * Extended slicing of Elements as in element[1:-1:2], both in etree and in objectify * Resolvers can now provide a base_url keyword argument when resolving a document as string data. * When using lxml.doctestcompare you can give the doctest option NOPARSE_MARKUP (like # doctest: +NOPARSE_MARKUP) to suppress the special checking for one test. Bugs fixed * Target parser failed to report comments. * In the lxml.html iter_links() method, links in tags weren't recognized. (Note: plugin-specific link parameters still aren't recognized.) Also, the tag, though not standard, is now included in lxml.html.defs.special_inline_tags. * Using custom resolvers on XSLT stylesheets parsed from a string could request ill-formed URLs. * With lxml.doctestcompare if you do in your output, it will then be namespace-neutral (before the ellipsis was treated as a real namespace). Other changes * The module source files were renamed to "lxml.*.pyx", such as "lxml.etree.pyx". This was changed for consistency with the way Pyrex commonly handles package imports. The main effect is that classes now know about their fully qualified class name, including the package name of their module. * Keyword-only arguments in some API functions, especially in the parsers and serialisers. From stefan_ml at behnel.de Sat Nov 24 12:53:05 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Sat, 24 Nov 2007 12:53:05 +0100 Subject: [lxml-dev] iterparse() reimplementation cancelled Message-ID: <474810A1.2060305@behnel.de> Hi all, just a quick note regarding the planned iterparse() reimplementation. I did not include it in 2.0 alpha5, as my attempts have shown that passing a custom parser at the API level would imply too many semantic quirks, especially since iterparse() can't support every option that the normal parsers can. Also, parsing against a TreeBuilder (as ET does) would kill a lot of features such as HTML tag soup fixing, DTD validation and default attributes. So I now think that it's better to keep the current implementation based on the normal parser, even if it is not completely safe to use with all working ET code (as mentioned in the compatibility docs). Any comments or objections to this decision? Stefan From sidnei at enfoldsystems.com Sat Nov 24 17:53:50 2007 From: sidnei at enfoldsystems.com (Sidnei da Silva) Date: Sat, 24 Nov 2007 14:53:50 -0200 Subject: [lxml-dev] lxml 2.0alpha5 released In-Reply-To: <47481046.70907@behnel.de> References: <47481046.70907@behnel.de> Message-ID: FYI, 2.0alpha5 doesn't build with Cython 0.9.6.6 which is what I had installed, I've upgraded to Cython 0.9.6.9 and now it builds. Should finish uploading in the next couple minutes. -- Sidnei da Silva Enfold Systems http://enfoldsystems.com Fax +1 832 201 8856 Office +1 713 942 2377 Ext 214 From ebgssth at gmail.com Sun Nov 25 11:38:38 2007 From: ebgssth at gmail.com (js) Date: Sun, 25 Nov 2007 19:38:38 +0900 Subject: [lxml-dev] lxml 2.0alpha5 fails to build on OS X 10.3.9 Message-ID: Hi, I was trying to install the latest lxml on my box, but it failed with these errors. (I can build lxml-2.0alpha4 on my box without any problems) $ python2.5 setup.py build Building lxml version 2.0.alpha5. NOTE: Trying to build without Cython, pre-generated 'src/lxml/etree.c' needs to be available. running build running build_py creating build creating build/lib.macosx-10.3-ppc-2.5 creating build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/__init__.py -> build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/_elementpath.py -> build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/builder.py -> build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/cssselect.py -> build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/doctestcompare.py -> build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/ElementInclude.py -> build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/htmlbuilder.py -> build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/sax.py -> build/lib.macosx-10.3-ppc-2.5/lxml copying src/lxml/usedoctest.py -> build/lib.macosx-10.3-ppc-2.5/lxml creating build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/__init__.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/_diffcommand.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/builder.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/clean.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/defs.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/diff.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/ElementSoup.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/formfill.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/setmixin.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html copying src/lxml/html/usedoctest.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html running build_ext building 'lxml.etree' extension creating build/temp.macosx-10.3-ppc-2.5 creating build/temp.macosx-10.3-ppc-2.5/src creating build/temp.macosx-10.3-ppc-2.5/src/lxml gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -O2 -g -Wall -Wstrict-prototypes -I/opt/local/include -I/opt/local/include/libxml2 -I/opt/local/include/python2.5 -c src/lxml/lxml.etree.c -o build/temp.macosx-10.3-ppc-2.5/src/lxml/lxml.etree.o -w gcc -L/opt/local/lib -lcc_dynamic -bundle -undefined dynamic_lookup build/temp.macosx-10.3-ppc-2.5/src/lxml/lxml.etree.o -L/opt/local/lib -lxslt -lexslt -lxml2 -lz -lm -o build/lib.macosx-10.3-ppc-2.5/lxml/etree.so building 'lxml.objectify' extension gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -DNDEBUG -O2 -g -Wall -Wstrict-prototypes -I/opt/local/include -I/opt/local/include/libxml2 -I/opt/local/include/python2.5 -c src/lxml/lxml.objectify.c -o build/temp.macosx-10.3-ppc-2.5/src/lxml/lxml.objectify.o -w src/lxml/lxml.objectify.c:49:28: lxml.etree_api.h: No such file or directory src/lxml/lxml.objectify.c:175: error: field `__pyx_base' has incomplete type src/lxml/lxml.objectify.c:348: error: field `__pyx_base' has incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get__': src/lxml/lxml.objectify.c:1472: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:1472: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:1487: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:1538: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_18ObjectifiedElement___setattr__': src/lxml/lxml.objectify.c:2076: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_18ObjectifiedElement___setitem__': src/lxml/lxml.objectify.c:3263: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:3264: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__findFollowingSibling': src/lxml/lxml.objectify.c:4412: error: `nextElement' undeclared (first use in this function) src/lxml/lxml.objectify.c:4412: error: (Each undeclared identifier is reported only once src/lxml/lxml.objectify.c:4412: error: for each function it appears in.) src/lxml/lxml.objectify.c:4433: error: `previousElement' undeclared (first use in this function) src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:4545: error: conflicting types for `__pyx_f_4lxml_9objectify__lookupChild' src/lxml/lxml.objectify.c:669: error: previous declaration of `__pyx_f_4lxml_9objectify__lookupChild' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__lookupChild': src/lxml/lxml.objectify.c:4556: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:4644: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:4719: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:4734: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:4751: error: conflicting types for `__pyx_f_4lxml_9objectify__lookupChildOrRaise' src/lxml/lxml.objectify.c:670: error: previous declaration of `__pyx_f_4lxml_9objectify__lookupChildOrRaise' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__lookupChildOrRaise': src/lxml/lxml.objectify.c:4757: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:4820: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:4833: error: conflicting types for `__pyx_f_4lxml_9objectify__buildChildTag' src/lxml/lxml.objectify.c:671: error: previous declaration of `__pyx_f_4lxml_9objectify__buildChildTag' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__buildChildTag': src/lxml/lxml.objectify.c:4842: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:4940: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:4940: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:4978: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:4994: error: conflicting types for `__pyx_f_4lxml_9objectify__replaceElement' src/lxml/lxml.objectify.c:672: error: previous declaration of `__pyx_f_4lxml_9objectify__replaceElement' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__replaceElement': src/lxml/lxml.objectify.c:5001: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5022: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5022: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5170: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5171: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:5184: error: conflicting types for `__pyx_f_4lxml_9objectify__appendValue' src/lxml/lxml.objectify.c:673: error: previous declaration of `__pyx_f_4lxml_9objectify__appendValue' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__appendValue': src/lxml/lxml.objectify.c:5192: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5215: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5215: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5337: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5339: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:5361: error: conflicting types for `__pyx_f_4lxml_9objectify__setElementValue' src/lxml/lxml.objectify.c:674: error: previous declaration of `__pyx_f_4lxml_9objectify__setElementValue' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__setElementValue': src/lxml/lxml.objectify.c:5371: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5426: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5567: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5580: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:5591: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__strValueOf': src/lxml/lxml.objectify.c:8883: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__': src/lxml/lxml.objectify.c:12973: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:12974: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:12991: error: conflicting types for `__pyx_f_4lxml_9objectify__add_text' src/lxml/lxml.objectify.c:682: error: previous declaration of `__pyx_f_4lxml_9objectify__add_text' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__add_text': src/lxml/lxml.objectify.c:12998: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:13009: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:13077: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:13114: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:13126: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:13238: error: conflicting types for `__pyx_f_4lxml_9objectify__dump' src/lxml/lxml.objectify.c:683: error: previous declaration of `__pyx_f_4lxml_9objectify__dump' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__dump': src/lxml/lxml.objectify.c:13253: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:13308: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:13772: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:14081: error: conflicting types for `__pyx_f_4lxml_9objectify__lookupElementClass' src/lxml/lxml.objectify.c:685: error: previous declaration of `__pyx_f_4lxml_9objectify__lookupElementClass' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__lookupElementClass': src/lxml/lxml.objectify.c:14093: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:14523: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_pyannotate': src/lxml/lxml.objectify.c:14748: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_xsiannotate': src/lxml/lxml.objectify.c:14839: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_annotate': src/lxml/lxml.objectify.c:14959: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: At top level: src/lxml/lxml.objectify.c:15002: error: conflicting types for `__pyx_f_4lxml_9objectify__annotate' src/lxml/lxml.objectify.c:687: error: previous declaration of `__pyx_f_4lxml_9objectify__annotate' src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__annotate': src/lxml/lxml.objectify.c:15023: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:15079: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:15081: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:15237: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:16441: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:16452: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_deannotate': src/lxml/lxml.objectify.c:16513: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:16695: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_10ObjectPath___call__': src/lxml/lxml.objectify.c:18931: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:19029: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_10ObjectPath_setattr': src/lxml/lxml.objectify.c:19153: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:19175: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_10ObjectPath_addattr': src/lxml/lxml.objectify.c:19198: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:19220: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__findObjectPath': src/lxml/lxml.objectify.c:20518: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:20529: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:20775: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:20842: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__createObjectPath': src/lxml/lxml.objectify.c:20877: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:20912: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:21185: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:21228: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:21260: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:21282: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:21316: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:21350: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c:21352: error: dereferencing pointer to incomplete type src/lxml/lxml.objectify.c: In function `initobjectify': src/lxml/lxml.objectify.c:24784: error: invalid application of `sizeof' to an incomplete type src/lxml/lxml.objectify.c:24853: error: invalid application of `sizeof' to an incomplete type src/lxml/lxml.objectify.c:24865: error: invalid application of `sizeof' to an incomplete type src/lxml/lxml.objectify.c:24866: error: invalid application of `sizeof' to an incomplete type src/lxml/lxml.objectify.c:24867: error: invalid application of `sizeof' to an incomplete type src/lxml/lxml.objectify.c:24868: error: invalid application of `sizeof' to an incomplete type src/lxml/lxml.objectify.c:24869: error: invalid application of `sizeof' to an incomplete type src/lxml/lxml.objectify.c:24870: error: invalid application of `sizeof' to an incomplete type error: command 'gcc' failed with exit status 1 any clues? From ebgssth at gmail.com Sun Nov 25 11:50:06 2007 From: ebgssth at gmail.com (js) Date: Sun, 25 Nov 2007 19:50:06 +0900 Subject: [lxml-dev] lxml 2.0alpha5 fails to build on OS X 10.3.9 In-Reply-To: References: Message-ID: Tried alpha5 on Tiger (Intel) but it also failed. On Nov 25, 2007 7:38 PM, js wrote: > Hi, > > I was trying to install the latest lxml on my box, > but it failed with these errors. (I can build lxml-2.0alpha4 on my box > without any problems) > > $ python2.5 setup.py build > Building lxml version 2.0.alpha5. > NOTE: Trying to build without Cython, pre-generated 'src/lxml/etree.c' > needs to be available. > running build > running build_py > creating build > creating build/lib.macosx-10.3-ppc-2.5 > creating build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/__init__.py -> build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/_elementpath.py -> build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/builder.py -> build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/cssselect.py -> build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/doctestcompare.py -> build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/ElementInclude.py -> build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/htmlbuilder.py -> build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/sax.py -> build/lib.macosx-10.3-ppc-2.5/lxml > copying src/lxml/usedoctest.py -> build/lib.macosx-10.3-ppc-2.5/lxml > creating build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/__init__.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/_diffcommand.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/builder.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/clean.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/defs.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/diff.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/ElementSoup.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/formfill.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/setmixin.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > copying src/lxml/html/usedoctest.py -> build/lib.macosx-10.3-ppc-2.5/lxml/html > running build_ext > building 'lxml.etree' extension > creating build/temp.macosx-10.3-ppc-2.5 > creating build/temp.macosx-10.3-ppc-2.5/src > creating build/temp.macosx-10.3-ppc-2.5/src/lxml > gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp > -mno-fused-madd -DNDEBUG -O2 -g -Wall -Wstrict-prototypes > -I/opt/local/include -I/opt/local/include/libxml2 > -I/opt/local/include/python2.5 -c src/lxml/lxml.etree.c -o > build/temp.macosx-10.3-ppc-2.5/src/lxml/lxml.etree.o -w > gcc -L/opt/local/lib -lcc_dynamic -bundle -undefined dynamic_lookup > build/temp.macosx-10.3-ppc-2.5/src/lxml/lxml.etree.o -L/opt/local/lib > -lxslt -lexslt -lxml2 -lz -lm -o > build/lib.macosx-10.3-ppc-2.5/lxml/etree.so > building 'lxml.objectify' extension > gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp > -mno-fused-madd -DNDEBUG -O2 -g -Wall -Wstrict-prototypes > -I/opt/local/include -I/opt/local/include/libxml2 > -I/opt/local/include/python2.5 -c src/lxml/lxml.objectify.c -o > build/temp.macosx-10.3-ppc-2.5/src/lxml/lxml.objectify.o -w > src/lxml/lxml.objectify.c:49:28: lxml.etree_api.h: No such file or directory > src/lxml/lxml.objectify.c:175: error: field `__pyx_base' has incomplete type > src/lxml/lxml.objectify.c:348: error: field `__pyx_base' has incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get__': > src/lxml/lxml.objectify.c:1472: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:1472: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:1487: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:1538: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_pf_4lxml_9objectify_18ObjectifiedElement___setattr__': > src/lxml/lxml.objectify.c:2076: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_pf_4lxml_9objectify_18ObjectifiedElement___setitem__': > src/lxml/lxml.objectify.c:3263: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:3264: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_f_4lxml_9objectify__findFollowingSibling': > src/lxml/lxml.objectify.c:4412: error: `nextElement' undeclared (first > use in this function) > src/lxml/lxml.objectify.c:4412: error: (Each undeclared identifier is > reported only once > src/lxml/lxml.objectify.c:4412: error: for each function it appears in.) > src/lxml/lxml.objectify.c:4433: error: `previousElement' undeclared > (first use in this function) > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:4545: error: conflicting types for > `__pyx_f_4lxml_9objectify__lookupChild' > src/lxml/lxml.objectify.c:669: error: previous declaration of > `__pyx_f_4lxml_9objectify__lookupChild' > src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__lookupChild': > src/lxml/lxml.objectify.c:4556: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:4644: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:4719: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:4734: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:4751: error: conflicting types for > `__pyx_f_4lxml_9objectify__lookupChildOrRaise' > src/lxml/lxml.objectify.c:670: error: previous declaration of > `__pyx_f_4lxml_9objectify__lookupChildOrRaise' > src/lxml/lxml.objectify.c: In function > `__pyx_f_4lxml_9objectify__lookupChildOrRaise': > src/lxml/lxml.objectify.c:4757: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:4820: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:4833: error: conflicting types for > `__pyx_f_4lxml_9objectify__buildChildTag' > src/lxml/lxml.objectify.c:671: error: previous declaration of > `__pyx_f_4lxml_9objectify__buildChildTag' > src/lxml/lxml.objectify.c: In function > `__pyx_f_4lxml_9objectify__buildChildTag': > src/lxml/lxml.objectify.c:4842: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:4940: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:4940: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:4978: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:4994: error: conflicting types for > `__pyx_f_4lxml_9objectify__replaceElement' > src/lxml/lxml.objectify.c:672: error: previous declaration of > `__pyx_f_4lxml_9objectify__replaceElement' > src/lxml/lxml.objectify.c: In function > `__pyx_f_4lxml_9objectify__replaceElement': > src/lxml/lxml.objectify.c:5001: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5022: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5022: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5170: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5171: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:5184: error: conflicting types for > `__pyx_f_4lxml_9objectify__appendValue' > src/lxml/lxml.objectify.c:673: error: previous declaration of > `__pyx_f_4lxml_9objectify__appendValue' > src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__appendValue': > src/lxml/lxml.objectify.c:5192: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5215: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5215: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5337: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5339: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:5361: error: conflicting types for > `__pyx_f_4lxml_9objectify__setElementValue' > src/lxml/lxml.objectify.c:674: error: previous declaration of > `__pyx_f_4lxml_9objectify__setElementValue' > src/lxml/lxml.objectify.c: In function > `__pyx_f_4lxml_9objectify__setElementValue': > src/lxml/lxml.objectify.c:5371: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5426: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5567: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5580: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:5591: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__strValueOf': > src/lxml/lxml.objectify.c:8883: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__': > src/lxml/lxml.objectify.c:12973: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:12974: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:12991: error: conflicting types for > `__pyx_f_4lxml_9objectify__add_text' > src/lxml/lxml.objectify.c:682: error: previous declaration of > `__pyx_f_4lxml_9objectify__add_text' > src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__add_text': > src/lxml/lxml.objectify.c:12998: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:13009: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:13077: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:13114: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:13126: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:13238: error: conflicting types for > `__pyx_f_4lxml_9objectify__dump' > src/lxml/lxml.objectify.c:683: error: previous declaration of > `__pyx_f_4lxml_9objectify__dump' > src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__dump': > src/lxml/lxml.objectify.c:13253: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:13308: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:13772: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:14081: error: conflicting types for > `__pyx_f_4lxml_9objectify__lookupElementClass' > src/lxml/lxml.objectify.c:685: error: previous declaration of > `__pyx_f_4lxml_9objectify__lookupElementClass' > src/lxml/lxml.objectify.c: In function > `__pyx_f_4lxml_9objectify__lookupElementClass': > src/lxml/lxml.objectify.c:14093: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:14523: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_pyannotate': > src/lxml/lxml.objectify.c:14748: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_xsiannotate': > src/lxml/lxml.objectify.c:14839: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_annotate': > src/lxml/lxml.objectify.c:14959: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: At top level: > src/lxml/lxml.objectify.c:15002: error: conflicting types for > `__pyx_f_4lxml_9objectify__annotate' > src/lxml/lxml.objectify.c:687: error: previous declaration of > `__pyx_f_4lxml_9objectify__annotate' > src/lxml/lxml.objectify.c: In function `__pyx_f_4lxml_9objectify__annotate': > src/lxml/lxml.objectify.c:15023: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:15079: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:15081: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:15237: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:16441: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:16452: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function `__pyx_pf_4lxml_9objectify_deannotate': > src/lxml/lxml.objectify.c:16513: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:16695: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_pf_4lxml_9objectify_10ObjectPath___call__': > src/lxml/lxml.objectify.c:18931: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:19029: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_pf_4lxml_9objectify_10ObjectPath_setattr': > src/lxml/lxml.objectify.c:19153: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:19175: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_pf_4lxml_9objectify_10ObjectPath_addattr': > src/lxml/lxml.objectify.c:19198: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:19220: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_f_4lxml_9objectify__findObjectPath': > src/lxml/lxml.objectify.c:20518: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:20529: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:20775: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:20842: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function > `__pyx_f_4lxml_9objectify__createObjectPath': > src/lxml/lxml.objectify.c:20877: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:20912: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:21185: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:21228: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:21260: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:21282: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:21316: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:21350: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c:21352: error: dereferencing pointer to incomplete type > src/lxml/lxml.objectify.c: In function `initobjectify': > src/lxml/lxml.objectify.c:24784: error: invalid application of > `sizeof' to an incomplete type > src/lxml/lxml.objectify.c:24853: error: invalid application of > `sizeof' to an incomplete type > src/lxml/lxml.objectify.c:24865: error: invalid application of > `sizeof' to an incomplete type > src/lxml/lxml.objectify.c:24866: error: invalid application of > `sizeof' to an incomplete type > src/lxml/lxml.objectify.c:24867: error: invalid application of > `sizeof' to an incomplete type > src/lxml/lxml.objectify.c:24868: error: invalid application of > `sizeof' to an incomplete type > src/lxml/lxml.objectify.c:24869: error: invalid application of > `sizeof' to an incomplete type > src/lxml/lxml.objectify.c:24870: error: invalid application of > `sizeof' to an incomplete type > error: command 'gcc' failed with exit status 1 > > any clues? > From stefan_ml at behnel.de Sun Nov 25 12:10:33 2007 From: stefan_ml at behnel.de (Stefan Behnel) Date: Sun, 25 Nov 2007 12:10:33 +0100 Subject: [lxml-dev] lxml 2.0alpha5 fails to build on OS X 10.3.9 In-Reply-To: References: Message-ID: <47495829.7090703@behnel.de> Hi, thanks for the report. js wrote: > I was trying to install the latest lxml on my box, > but it failed with these errors. (I can build lxml-2.0alpha4 on my box > without any problems) > > $ python2.5 setup.py build > Building lxml version 2.0.alpha5. > NOTE: Trying to build without Cython, pre-generated 'src/lxml/etree.c' > needs to be available. [...] > src/lxml/lxml.objectify.c:49:28: lxml.etree_api.h: No such file or directory There were pre-generated files missing from the tgz that are only required when you build without having Cython installed (which I didn't test...). They were renamed since alpha4 but were not adapted in the MANIFEST that defines the archive content. I just re-uploaded a fixed archive (same version number, as nothing else changed). Please retry with that. Stefan From ebgssth at gmail.com Sun Nov 25 13:01:18 2007 From: ebgssth at gmail.com (js) Date: Sun, 25 Nov 2007 21:01:18 +0900 Subject: [lxml-dev] lxml 2.0alpha5 fails to build on OS X 10.3.9 In-Reply-To: <47495829.7090703@behnel.de> References: <47495829.7090703@behnel.de> Message-ID: Hi Stefan, Thanks for quick reply. I tried new lxml-alpha5 and verified that works. BTW, I'm create lxml package for macports. That would be available soon if macports maintainer accept this. On Nov 25, 2007 8:10 PM, Stefan Behnel wrote: > Hi, thanks for the report. > > js wrote: > > I was trying to install the latest lxml on my box, > > but it failed with these errors. (I can build lxml-2.0alpha4 on my box > > without any problems) > > > > $ python2.5 setup.py build > > Building lxml version 2.0.alpha5. > > NOTE: Trying to build without Cython, pre-generated 'src/lxml/etree.c' > > needs to be available. > [...] > > src/lxml/lxml.objectify.c:49:28: lxml.etree_api.h: No such file or directory > > There were pre-generated files missing from the tgz that are only required > when you build without having Cython installed (which I didn't test...). They > were renamed since alpha4 but were not adapted in the MANIFEST that defines > the archive content. > > I just re-uploaded a fixed archive (same version number, as nothing else > changed). Please retry with that. > > Stefan > From artur.siekielski at gmail.com Thu Nov 29 00:19:59 2007 From: artur.siekielski at gmail.com (Artur Siekielski) Date: Thu, 29 Nov 2007 00:19:59 +0100 Subject: [lxml-dev] Error (?) with UTF-8 document and Python unicode repr. Message-ID: <474DF79F.80204@gmail.com> Hi. First of all, thanks for a great XML/HTML library! API is really good thought. I'm coming here with a problem with HTML doc encoded with UTF-8: $ cat test_doc.html A*???ka

GdaA*?sk

("title" and "h1" contents are utf-8 strings, decodable to latin2). From raw Python everything seems to be as expected: >>> sdata = open('test_doc.html').read() >>> sdata[219:240] '\xc5\x81\xc4\x85ka' >>> udata = unicode(sdata, 'utf-8') >>> udata[219:240] u'\u0141\u0105ka\n ' >>> print udata[219:240].encode('latin2') ??ka The last statement prints as expected on my console with latin2 charset. But when using lxml something strange happens: >>> from lxml import etree >>> t = etree.parse(open('test_doc.html'), etree.HTMLParser()) Now getting title element text: >>> t.getroot()[0][0].text u'\xc5\x81\xc4\x85ka' This is strange, because this is a unicode string (as indicated by the first "u") but it's representation printed to console is the same as raw bytes from 'sdata' var. I would expect that it should be equal to contents to 'udata' var. As a consequence converting to latin2 doesn't work: >>> t.getroot()[0][0].text.encode('latin2') Traceback (most recent call last): File "", line 1, in File "/usr/share/python2.5/encodings/iso8859_2.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_table) UnicodeEncodeError: 'charmap' codec can't encode character u'\xc5' in position 0: character maps to If it's not an error, please tell me. For now I cannot even find any reasonable workaround. I'm using the latest lxml 1.3.6. Thanks for looking at this problem, Regards, Artur From felwert at uni-bremen.de Thu Nov 29 10:42:34 2007 From: felwert at uni-bremen.de (Frederik Elwert) Date: Thu, 29 Nov 2007 10:42:34 +0100 Subject: [lxml-dev] Error (?) with UTF-8 document and Python unicode repr. In-Reply-To: <474DF79F.80204@gmail.com> References: <474DF79F.80204@gmail.com> Message-ID: <1196329354.5848.4.camel@FredAce> Hi! Am Donnerstag, den 29.11.2007, 00:19 +0100 schrieb Artur Siekielski: > But when using lxml something strange happens: > > >>> from lxml import etree > >>> t = etree.parse(open('test_doc.html'), etree.HTMLParser()) > > Now getting title element text: > > >>> t.getroot()[0][0].text > u'\xc5\x81\xc4\x85ka' Did you try it with the h1-Element? Has it the same problem? I remember some discussions on the list about a similar problem. As far as I remember, libxml might have problems decoding the title properly, because the charset hint comes after the title has already been parsed. But I don't currently know any good workarounds. Maybe somebody else does, or you have a look at the list archive. Cheers, Frederik From artur.siekielski at gmail.com Thu Nov 29 18:21:57 2007 From: artur.siekielski at gmail.com (Artur Siekielski) Date: Thu, 29 Nov 2007 18:21:57 +0100 Subject: [lxml-dev] Error (?) with UTF-8 document and Python unicode repr. In-Reply-To: <1196329354.5848.4.camel@FredAce> References: <474DF79F.80204@gmail.com> <1196329354.5848.4.camel@FredAce> Message-ID: <474EF535.3020902@gmail.com> Frederik Elwert wrote: > Hi! > > Am Donnerstag, den 29.11.2007, 00:19 +0100 schrieb Artur Siekielski: >> But when using lxml something strange happens: >> >> >>> from lxml import etree >> >>> t = etree.parse(open('test_doc.html'), etree.HTMLParser()) >> >> Now getting title element text: >> >> >>> t.getroot()[0][0].text >> u'\xc5\x81\xc4\x85ka' > Did you try it with the h1-Element? Has it the same problem? Yes, with h1 there is the same error. But I noticed that when I moved meta tag with charset declaration before , then all parsing goes OK, including h1 tag. So it's libxml2 bug/limitation (I tried latest libxml2 from trunk and it's the same)? I'm parsing 3rd party HTML, so I must find some workaround. Is this good solution: parse HTML, change elements sequence in <head>, serialiaze document and parse it again ? Regards, Artur From felwert at uni-bremen.de Thu Nov 29 19:14:26 2007 From: felwert at uni-bremen.de (Frederik Elwert) Date: Thu, 29 Nov 2007 19:14:26 +0100 Subject: [lxml-dev] Error (?) with UTF-8 document and Python unicode repr. In-Reply-To: <474EF535.3020902@gmail.com> References: <474DF79F.80204@gmail.com> <1196329354.5848.4.camel@FredAce> <474EF535.3020902@gmail.com> Message-ID: <1196360066.6593.4.camel@FredDesk> Am Donnerstag, den 29.11.2007, 18:21 +0100 schrieb Artur Siekielski: > Yes, with h1 there is the same error. But I noticed that when I moved > meta tag with charset declaration before <title>, then all parsing goes > OK, including h1 tag. So it's libxml2 bug/limitation (I tried latest > libxml2 from trunk and it's the same)? > > I'm parsing 3rd party HTML, so I must find some workaround. Is this good > solution: parse HTML, change elements sequence in <head>, serialiaze > document and parse it again ? No, I think the better way would be to parse it, look for the encoding (either by looking at <tree>.docinfo.encoding or looking for the meta-Tag with find()), and then reparse the unaltered document, now using the "encoding" keyword. This is what Stefan suggests: http://article.gmane.org/gmane.comp.python.lxml.devel/3001/ Cheers, Frederik From artur.siekielski at gmail.com Thu Nov 29 19:41:10 2007 From: artur.siekielski at gmail.com (Artur Siekielski) Date: Thu, 29 Nov 2007 19:41:10 +0100 Subject: [lxml-dev] Error (?) with UTF-8 document and Python unicode repr. In-Reply-To: <1196360066.6593.4.camel@FredDesk> References: <474DF79F.80204@gmail.com> <1196329354.5848.4.camel@FredAce> <474EF535.3020902@gmail.com> <1196360066.6593.4.camel@FredDesk> Message-ID: <474F07C6.2020705@gmail.com> Frederik Elwert napisa?: > No, I think the better way would be to parse it, look for the encoding > (either by looking at <tree>.docinfo.encoding or looking for the > meta-Tag with find()), and then reparse the unaltered document, now > using the "encoding" keyword. This is what Stefan suggests: > http://article.gmane.org/gmane.comp.python.lxml.devel/3001/ Hi, thanks for suggestion. But how can I pass the "encoding" keyword? Neither etree.parse nor etree.HTMLParser supports it. From felwert at uni-bremen.de Thu Nov 29 20:56:22 2007 From: felwert at uni-bremen.de (Frederik Elwert) Date: Thu, 29 Nov 2007 20:56:22 +0100 Subject: [lxml-dev] Error (?) with UTF-8 document and Python unicode repr. In-Reply-To: <474F07C6.2020705@gmail.com> References: <474DF79F.80204@gmail.com> <1196329354.5848.4.camel@FredAce> <474EF535.3020902@gmail.com> <1196360066.6593.4.camel@FredDesk> <474F07C6.2020705@gmail.com> Message-ID: <1196366182.6593.9.camel@FredDesk> Am Donnerstag, den 29.11.2007, 19:41 +0100 schrieb Artur Siekielski: > > No, I think the better way would be to parse it, look for the encoding > > (either by looking at <tree>.docinfo.encoding or looking for the > > meta-Tag with find()), and then reparse the unaltered document, now > > using the "encoding" keyword. This is what Stefan suggests: > > http://article.gmane.org/gmane.comp.python.lxml.devel/3001/ > > Hi, > thanks for suggestion. But how can I pass the "encoding" keyword? > Neither etree.parse nor etree.HTMLParser supports it. Oh, I'm sorry. This is only supported by the alpha of lxml 2.0. Simply overlooked that. So for the time being, serialisation and reparsing might be the best option, but I haven't tried that. Cheers, Frederik From artur.siekielski at gmail.com Thu Nov 29 21:05:21 2007 From: artur.siekielski at gmail.com (Artur Siekielski) Date: Thu, 29 Nov 2007 21:05:21 +0100 Subject: [lxml-dev] Error (?) with UTF-8 document and Python unicode repr. In-Reply-To: <1196366182.6593.9.camel@FredDesk> References: <474DF79F.80204@gmail.com> <1196329354.5848.4.camel@FredAce> <474EF535.3020902@gmail.com> <1196360066.6593.4.camel@FredDesk> <474F07C6.2020705@gmail.com> <1196366182.6593.9.camel@FredDesk> Message-ID: <474F1B81.1020608@gmail.com> Frederik Elwert napisa?: > Am Donnerstag, den 29.11.2007, 19:41 +0100 schrieb Artur Siekielski: >>> No, I think the better way would be to parse it, look for the encoding >>> (either by looking at <tree>.docinfo.encoding or looking for the >>> meta-Tag with find()), and then reparse the unaltered document, now >>> using the "encoding" keyword. This is what Stefan suggests: >>> http://article.gmane.org/gmane.comp.python.lxml.devel/3001/ >> Hi, >> thanks for suggestion. But how can I pass the "encoding" keyword? >> Neither etree.parse nor etree.HTMLParser supports it. > > Oh, I'm sorry. This is only supported by the alpha of lxml 2.0. Simply > overlooked that. So for the time being, serialisation and reparsing > might be the best option, but I haven't tried that. How stable is 2.0 alpha? I'm using lxml for parsing HTML and traversing parsed tree with etree API and XPath. From felwert at uni-bremen.de Thu Nov 29 21:22:21 2007 From: felwert at uni-bremen.de (Frederik Elwert) Date: Thu, 29 Nov 2007 21:22:21 +0100 Subject: [lxml-dev] Error (?) with UTF-8 document and Python unicode repr. In-Reply-To: <474F1B81.1020608@gmail.com> References: <474DF79F.80204@gmail.com> <1196329354.5848.4.camel@FredAce> <474EF535.3020902@gmail.com> <1196360066.6593.4.camel@FredDesk> <474F07C6.2020705@gmail.com> <1196366182.6593.9.camel@FredDesk> <474F1B81.1020608@gmail.com> Message-ID: <1196367741.6593.13.camel@FredDesk> Am Donnerstag, den 29.11.2007, 21:05 +0100 schrieb Artur Siekielski: > How stable is 2.0 alpha? I'm using lxml for parsing HTML and traversing > parsed tree with etree API and XPath. I haven't used it yet. But it is reported to be fairly stable. There's going to be a beta soon, and that should freeze the API so that you won't have to chance you code later (although I think the API is already quite stable). Cheers, Frederik