=============== ToDo's for lxml =============== lxml ==== In general ---------- * more testing on multi-threading * better exception messages for XPath and schemas based on error log, e.g. missing namespace mappings in XPath * when building statically, compile everything into one shared library instead of one for lxml.etree and one for lxml.objectify to prevent the redundant static linking of the library dependencies. * more testing on input/output of encoded filenames, including custom resolvers, relative XSLT imports, ... * always use '' as URL when tree was parsed from string? (can libxml2 handle this?) * follow PEP 8 in API naming (avoidCamelCase in_favour_of_underscores) * use per-call or per-thread error logs in XSLT/XPath/etc. to keep the messages separate, especially in exceptions * add 'nsmap' parameter to cleanup_namespaces() * fix tail text handling in addnext()/addprevious() * make Element nsmap editable to allow defining new namespaces (LP#555602) Entities -------- * clean support for entities (is the Entity element class enough?) Objectify --------- * emulate setting special __attributes__ on ObjectifiedElement's as Python attributes, not XML children Incremental parsing ------------------- * create all iterparse events only on start events and store the end events in the stack * rewrite SAX event creation in a more C-ish way to avoid having to acquire the GIL on each event