NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #276 most downloaded on PyPI
Makes working with XML feel like you are working with JSON
Last release 7 months ago
22 Feb 2026
Release timing varies
gaps range from 2 weeks to 3.2 years
Nearly every release is documented
notes for 37 of 37 stable releases
1 version withdrawn
withdrawn after publishing
14 years old
38 releases · first in 2012
unparse: add bytes_errors policy and handle bytes scalars consistently
One column per quarter.
allow DOCTYPE with disable_entities=True (default)
fail closed when entities disabled
modernize for Python 3.9+; drop legacy compat paths
_emit behavior (e43537e)force_cdata support (bool/tuple/callable) (a497fed), closes #375[@xmlns](https://github.com/xmlns) to declaring element when process_namespaces=True (f0322e5), closes #163#text with attributes; unify value conversion (927a025), closes #366Full Changelog : v0.15.0...v0.15.1
Full Changelog: v0.15.0...v0.15.1
@xmlns prefixes) that:
str; no coercion)Security: Prevent XML injection (CVE-2025-9375) by rejecting '<'/'>' in element and attribute names (including @xmlns prefixes) during unparse. This l…
@xmlns prefixes) during unparse.
This limits validation to avoiding tag-context escapes; attribute values
continue to be escaped by the SAX XMLGenerator.
Advisory: https://fluidattacks.com/advisories/monoThis changed was backwards incompatible and caused downstream issues.
Drop support for Python older than 3.6
Replace deprecated BadZipfile with BadZipFile.
python -m unittest tests/*.py.
Add install info to readme for openSUSE.
Allow force_commits=True for getting all keys as lists
Determine fileness by checking for read attr
read attr
Fixed defusedexpat expat import.
Allow non-string attributes in unparse.
Thanks, @guewen and @jonlooney!
Fix multiroot check for list values (edge case reported by @JKillian)
Only check single root when full_document=True (Thanks @JKillian!)
Avoid ternary operator in call to ParserCreate().
Merge pull request #56 from HansWeltar/master
Fixed extra newlines in pretty print mode.
Let expat figure out the doc encoding.
Moved nose and coverage to tests_require.
Use system setuptools if available.
* Switch to latest setuptools.
Include distribute_setup.py in MANIFEST.in
Merge pull request #35 from martinblech/namespace-support
Merge pull request #31 from martinblech/document-unparse
Merge pull request #29 from dusual/master
Allow using alternate versions of expat.
expat.fix try/catch block for pypi (throws AttributeError instead of TypeError)
test attribute order roundtrip only if OrderedDict is available (python >= 2.7)
fix #12: postprocess cdata items too
Merge pull request #11 from ralphbean/master
take all characters (no need to strip and filter)
* #8 preprocessing callback in unparse()
implemented postprocessor callback
more complete info in setup.py (for uploading to PyPi)
Your coding agent can read these notes before it upgrades. Set up the MCP server →