MathDOM is a library for handling Content MathML terms and converting various term representations to and from this format. It is written in Python and uses PyXML or lxml.
This new release was adapted to work with the new, highly improved lxml 0.9 out-of-the-box. This simplifies both installation and usage and provides various performance improvements. I invite all previous users to switch to MathDOM 0.7 and lxml 0.9, and all new users to give it a try.
MathDOM 0.7 will be released at the end of March, together with a new official release of lxml (0.9). MathDOM will then no longer require patched versions of lxml.
If you have any requests on further enhancements or fixes in MathDOM 0.7, any bug reports or patches, please report them to the mailing list to get them integrated!
here is an update to lxml that fixes memory leaks in some attribute access methods
This update of MathDOM adds support for the '%' (modulo) operator and goes hand in hand with a new version of lxml that fixes a number of bugs.
Version 0.6.7 follows the API changes in the development version of lxml, so newer versions of lxml will not work with older mathdom versions and vice versa. Since the lxml update is recommended, please update both.
The packages mathml.mathdom and mathml.lmathdom now have more similar APIs, following a trend that should make them interchangeable in the long term. Please comment on the mailing list if you have suggestions for more functions that would make implementation independence easier.
This release also contains a number of bug fixes for the convenience functions that help in DOM building and element creation. It introduces new module functions for both implementations that directly build constants, identifiers and functions.... read more
This release splits MathDOM and lxml into separate packages again. You can now download and install lxml directly from this page.
* support for "serialize" XSLT extension function to include literal terms in XSLT output (lxml only)
* SQL term serializer
* bug fixes
Version 0.6.4 does not provide any changes compared to the previous version (0.6.3.1), so no need to update. If you install for the first time, however, you may appreciate the support for building eggs (setuptools) and the ability to build the patched version of lxml as part of the MathDOM build process.
MathDOM now includes the Pyrex generated source for the lxml C-extension that is built by default. You can switch this off by using the setup option --no-local-lxml.... read more
The new patch applies against lxml version 0.8 and adds all of my changes that are not yet in. New patches will only apply against the latest release of lxml.
THIS PATCH IS OTHERWISE IDENTICAL WITH THE PREVIOUS VERSION! NO NEED TO UPGRADE!
Fixed an import bug in lmathdom. Please update to use it.
A bug fix release that fixes a couple of bugs found by pychecker, mainly in mathml.mathdom, but also in other parts. While this is not an emergency update, please try this release first if you come across any bugs in MathDOM.
A minor update that allows registering pyparsing parser directly as term parsers. If you use custom parsers, you may consider updating.
Version 0.6.2 now features a newly arranged framework that allows parsers to simply subclass the existing term parsers. This makes it very convenient to add new input filters.
This version includes the PyMathML renderer for Presentation MathML, supporting gdk, nxplot and cairo as targets. The support has not been tested, so please report back if you find any bugs. If you manage to get a simple example running, please send it to me for inclusion.
I created a mailing list for MathDOM discussion. If you have any questions , proposals or patches, please send them there.
I decided to take the patch for lxml out of mathdom to avoid having to release mathdom when it's only about lxml. Here is a new patch that should make lxml more reliable compared to the patched version as of MathDOM 0.6.0.
If you use MathDOM 0.6.0, please use this patch instead.
New in version 0.6:
- RelaxNG validation
- Presentation MathML export (based on XSLT)
- stricter spec conformance (encloses MathML output in <math> tag
The first two require lxml, PyXML does not support them.
Version 0.5.4 provides updates and fixes for the lxml part, including a new patch for lxml itself.
Minor updates to mathml/utils/pyterm and general documentation
This release does not change much with respect to the parts that were present in 0.5.1, but it features a completely new and cleaner implementation of the XML document part that is based on lxml, an ElementTree like API on top of libxml2. It therefore provides a much more pythonesque API for DOM manipulation., which further simplifies both the usage and internal implementation of MathDOM. This API is therefore likely to take over the main stream of MathDOM's evolution.
Version 0.5.1 now takes advantage of the new API by allowing partial serialization of terms. MathDOM 'apply' elements (i.e. all sub-trees of functions and operators) now have a 'serialize' method that returns a literal term of the partial tree, as infix, postfix or any of the other supported representations.
The latest two versions restructure most of the term input/output API, i.e. parsing terms, generating the DOM and serializing to MathML and literal terms. The usage should become much simpler and much more consistent this way. However, it also means that code using the old API will break. Please look at the examples to see how the new API works. I hope you will like it.
* more tests, compare evaluation results against python interpreter results
* split up termparser into parser/builder modules
* support lists and intervals, in/notin
* loads of clean-ups
* remove old range support from parser
* new term builder for Python terms
* fix '- term' parsing, parse e-notation
* new data type classes for Complex, Rational, ENotation
* require Decimal type
bug fixes for parenthesis optimization in infix generator, uses doctest instead of startable demos in library files
better support for complex/rational numbers, type conversion, bug fixes