Amara 1.2 Branch
================

Version 1.2a2 (2006-10-29)
--------------------------

* 4Suite 1.0 compatability
* Add support for attribute patterns to pushdom/pushbind
* Add .xml_xslt() method to bindery object to apply transforms
* Improvements to trimxml command line
* Turn off DTD validation by default
* Add support for DTD validation and custom binding classes to convenience APIs
* Add custom binding demo
* Bug fixes

Version 1.1.9 (2006-09-15)
--------------------------

* Add support for EasyInstall; other packaging & installer improvements
  - Note: allinone package eliminated
* Add trimxml command line utility (for running reports on XML files)
* Switch to Docbook for documentation source
* Bindery: Add support for dict-like accessors
* Tenorsax: Restore support for PySax
* Scimitar: Implement abstract rules
* Scimitar: Update Schematron namespace to ISO
* Scimitar: Implement phases
* Scimitar: Support Schematron queryBinding attribute: XPath, XSLT, EXSLT
* Add binderytools.fixup_namespaces function
* Add binderytools.quick_xml_scan function
* Fix APIs for adding comments and PIs
* Fix domtools.abs_path to be more namespace aware
* Bug fixes

Version 1.1.7 (2005-12-14)
--------------------------

* Deprecate xml_text_content property
* Add xml_child_text property that concatenates all immediate child
  text nodes (no recursive descent)
* Change unicode coercion for documents and elements to recurse through
  all descendant text (now analogous to XPath's string() coercion)
* Return added or removed node in
  - xml_append
  - xml_insert_after
  - xml_insert_before
  - xml_remove_child
  - xml_remove_child_at
* Update allinone bundle to 4Suite 1.0b3
* Packaging fixes

Version 1.1.6 (2005-10-28)
--------------------------

* Minor packaging fixes from 1.1.5

Version 1.1.5 (2005-10-27)
--------------------------

Changes from version 1.0

* Use Saxlette over Python stdlib SAX
* Move from threads to generators for pushdom/pushbind
* Simplify API.  Make most key functions available from the amara module
    import amara
    amara.parse
    amara.pushbind
    amara.pushdom
    amara.create_document
* Change node.xml_remove_child to take the child object to be removed
* Add node.xml_remove_child_at which takes the index
  (as node.xml_remove_child used to)
* Big performance improvements
* Add xml_parse_fragment
* Add quick reference
* Add support for PIs and comments in XPath
* Allow custom bindings for processing instructions
  (binder.set_pi_binding_class)
* Upate date/time handling in type inferencer to use Gustavo Niemeyer's
  dateutil, if available ( http://labix.org/python-dateutil )
* Bug fixes and documentation improvements


Amara 1.0.x Branch
==================

Version 1.0 (2005-08-09)
------------------------

* Bug fixes and documentation improvements
* Incorporation of prerequisites (from 4Suite) into compact allinone package

Version 1.0b3 (2005-06-14)
--------------------------

* Add xml_set_attribute method to elements, in order to allow adding
  attributes with namespaces or with illegal Python names
* Update manual source for markdown, and extensive improvements to the
  manual (with much help from Jamie Norrish)
* Add xml_doc facility for nodes
* Fix support for output parameters in xml()
* Add support for rules to pushbind
* Improve XSLT support for bindery objects (see demo/bindery/xslt.py)
* Bug fixes

Version 1.0b2 (2005-04-20)
--------------------------

* More mutation API improvements (del and assignment can now be used
  with elements as well as attributes)
* Slight improvements in 4Suite XSLT compatability (still some
  remaining issues)
* Bug fixes

Version 1.0b1 (2005-03-26)
--------------------------

* Improve mutation API. Results in at least one backwards compat break:
  node.xml_element(qname [, namespace])
  rather than
  node.xml_element(namespace, qname)
* Add binderytools.create_document
* Fix support for doctype declarations, PIs and comments
* Improve re-serialization API, including better support for 4Suite
  writers (and some reduction of the direct need for those)
* Fix processing instructions, comments and doctype declaration bugs
* Numerous bug fixes, demo and test updates

Version 0.9.4 (2005-02-01)
--------------------------

* Add binderytools.type_inference rule which automatically converts XML
  nodes to native Python objects such as int, float and datetime
* Improve threading and signal behavior of pushdom and pushbind
* Add support for attributes() method on nodes.
  Can now call Ft.Xml.Domlette.PrettyPrint on bindery nodes
* Add lazy attributes support by default.  
  amara.binderytools.preserve_attribute_details rule now obsolete
  XPath always supports attribute access, now
* rename prefixes node property to xmlns_prefixes 
* Update demos and tests
* Add CherryPy demo (CherryPy rocks: http://www.cherrypy.org/)
* Bug fixes

Version 0.9.3 (2005-01-22)
--------------------------

* Removed some cruft code, apparently leading to a huge speedup in bindery and pushbind
* binderytools.pushdom now returns elements rather than subtree root nodes
* Added ns:* form of match to patterns support
* Added many docstrings
* More demos and tests
* Bug fixes

Version 0.9.2 (2005-01-12)
--------------------------

* Use local names rather than QNames for default bindings
* Add attribute support to XPath
* Add amara.binderytools.preserve_attribute_details rule
* Reorg and fix demos and tests
* Add Flextyper DTLL implementation
* Add binderytools.pushbind
* Add parsing functions binderytools.bind_string, binderytools.bind_stream

Version 0.9.1 (2004-12-30)
--------------------------

* Fixed embarrassing misinterpretation of
  sax.handler.feature_namespace_prefixes
  Now Namespace prefixes work fine with or without PyXML installed
* Add saxtools.namespace_mixin utility class
* Clean up bindery.document_base name attributes
* Add bindery.element_base.xml_remove_child and .xml_index_on_parent--methods for easier removal of children
* tenorsax was useless due to accidental late mangling before 0.9.0 release.  Fixed.
* Use tenorsax fully in Scimitar.
  Scimitar is now a complete ISO schematron implementation in about 500 lines
  of Python code (including the skeletons for code generation)

Version 0.9.0 (2004-12-19)
--------------------------

Initial release, merging in Anobind, Scimitar and domtools.py


