Change & Version Information

The following is a summary of changes and improvements to eulxml. New features in each version should be listed, with any necessary information about installation or upgrade notes.


  • Correct six dependency required version
  • Fix six dependency in eulxml.xpath so installation can complete and generate parsetab and lextab when six installation is not yet processed. [#20 <>]


  • Now Python 3 compatible, thanks to Morgan Aubert (@ellmetha).
  • bugfix: BooleanField will now return None instead of generating an error when xml is not present and False is not configured as None. Contributed by Roman Voropaev (@roman-voropaev).
  • Include xml namespace in base TEI class in eulxml.xmlmap.teimap for xml:id attributes referenced throughout.


  • bugfix: workaround for resolver error failing to load schemas in some cases


  • New method (eulxml.xmlmap.load_xslt()) to load and precompile XSLT that will be used more than once.
  • Re-worked eulxml.xmlmap.XmlObject.xsl_transform() to avoid malloc errors and segmentation faults and to allow using precompiled XSLT documents.
  • Support for float field types in eulxml.xmlmap. Contributed by jilott.




  • Add default unicode output of date value for MODS date fields (Date and all date variants)
  • Bug fix: XmlObjectForm now uses the field order as defined on the form when updating the XML instance (fix for XML where schema requires fields in a specific order)


  • Revert unused namespace cleanup change to serialization it generates less optimal output in certain cases.
  • Minor updates to eadmap:



  • Adjust eulxml.xmlmap fields for better results when inspected by sphinx autodoc or other similar tools.



  • Pinned MODS version to 3.4 to guard against new versions of the schema breaking validation


  • Corrected a minor bug where schema validation errors were not cleared between multiple validations.
  • To avoid permission denied warning for auto-generated parser files, parsetab files are now created in python tempdir if the running user doesn’t have write permission in the package installation directory. [Issue 1]
  • When an XSLT transformation results in an empty document, eulxml.xmlap.XmlObject.xsl_transform() now returns None. [Issue 6]
  • Development requirements can now be installed as an optional requirement of the eulxml package (pip install "eulxml[dev]").
  • Unit tests have been updated to use nose
  • New functionality in eulxml.xmlmap.cerp for parsing email dates and generating CERP xml from a Python email message object.

0.18.0 - Formset Ordering and DateTime

  • eulxml.forms.xmlobject.XmlObjectForm formsets now support can_order.
  • eulxml.xmlmap.fields.DateTimeField is now included in available eulxml.xmlmap fields. This replaces the previously officially-unreleased, under-documented and -tested and misnamed DateField. Date-time format handling and whitespace normalization contributed by jheath-.

0.17.1 - Bugfix Release

  • Fixed an error in eulxml.xpath parse that resulted in parse errors when other lexers are defined.

0.17.0 - Minor Enhancements

  • eulxml.xmlmap.XmlObject now supports lazy-loading for XSD Schemas. To take advantage of this feature, XmlObject subclasses should define an XSD_SCHEMA location but should not set an xmlschema.
  • When field mapped on a eulxml.xmlmap.XmlObject is deleted, any XPath predicates that could have been automatically constructed when setting the value will be deleted from the XmlObject where possible, if they are otherwise empty.

0.16.0 - MODS and PREMIS

0.15.3 - Minor Enhancement

  • Downgrade the lack of an HTTP_PROXY set in the environment from a RuntimeError to a Warning with schema validation disabled.

0.15.2 - Bugfix Release

  • Fixed an error in the dependency structure that prevented the package from being used after installation through PyPI.

0.15.1 - Bugfix Release

  • Fixed an error in the dependency structure that prevented the package from being installed through PyPI.

0.15.0 - Initial Release

  • Split out xml-related components (xpath, xmlmap, and forms) from eulcore into eulxml for easier re-use.