0.17.0 (2016-09-12)
-------------------
 - Add support for xsd:notation (#183)
 - Add improvements to resolving phase so that all objects are resolved.
 - Improve implementation of xsd.attributeGroup and xsd.UniqueType
 - Create a deepcopy of the args and kwargs passed to objects so that the 
   original are unmodified.
 - Improve handling of wsdl:arrayType


0.16.0 (2016-09-06)
-------------------
 - Fix error when rendering choice elements with have sequences as children, 
   see #150
 - Re-use credentials passed to python -mzeep <wsdl> (#130)
 - Workaround invalid usage of qualified vs non-qualified element tags in the
   response handling (#176)
 - Fix regression when importing xsd:schema's via wsdl:import statements (#179)


0.15.0 (2016-09-04)
-------------------
 - All wsdl documents and xsd schemas are now globally available for eachother.
   While this is not correct according to the (messy) soap specifications, it
   does make zeep more compatible with all the invalid wsdl documents out
   there. (#159)
 - Implement support for attributeGroup (#160)
 - Add experimental support for ws-addressing (#92)
 - Fix handling of Mime messages with no parts (#168)
 - Workaround an issue where soap servers don't qualify references (#170)
 - Correctly process attributes which are passed as a dictionary. (#125)
 - Add support for plugins, see documentation for examples.
 - Fix helpers.serialize_object for lists of objects (#123).
 - Add HistoryPlugin which ofers last_sent and last_received properties (#93).


0.14.0 (2016-08-03)
-------------------
 - Global attributes are now always correctly handled as qualified. (#129)
 - Fix parsing xml data containing simpleContent types (#136). 
 - Set xsi:nil attribute when serializing objects to xml (#141)
 - Fix rendering choice elements when the element is mixed with other elements
   in a sequence (#150)
 - Fix maximum recursion error for recursive xsd:include elements
 - Make wsdl:import statements transitive. (#149)
 - Merge xsd:schema's which are spread around imported wsdl objects. (#146)
 - Don't raise exception when no value is given for AnyAttribute (#152)


0.13.0 (2016-07-17)
-------------------
 - Use warnings.warn() for duplicate target namespaces instead of raising an
   exception. This better matches with what lxml does.
 - **backwards-incompatible**: The ``persistent`` kwarg is removed from the
   SqliteCache.__init__() call. Use the new InMemoryCache() instead when you
   don't want to persist data. This was required to make the SqliteCache 
   backend thread-safe since we now open/close the db when writing/reading 
   from it (with an additional lock).
 - Fix zeep.helpers.serialize_object() for nested objects (#123)
 - Remove fallback between soap 1.1 and soap 1.2 namespaces during the parsing
   of the wsdl. This should not be required.


0.12.0 (2016-07-09)
-------------------
 - **backwards-incompatible**: Choice elements are now unwrapped if 
   maxOccurs=1. This results in easier operation definitions when choices are
   used. 
 - **backwards-incompatible**: The _soapheader kwarg is renamed to _soapheaders
   and now requires a nested dictionary with the header name as key or a list
   of values (value object or lxml.etree.Element object). Please see the 
   call signature of the function using ``python -mzeep <wsdl>``.
 - Support the element ref's to xsd:schema elements.
 - Improve the signature() output of element and type definitions
 - Accept lxml.etree.Element objects as value for Any elements.
 - And various other fixes
 

0.11.0 (2016-07-03)
-------------------
 - **backwards-incompatible**: The kwarg name for Any and Choice elements are
   renamed to generic ``_value_N`` names.
 - **backwards-incompatible**: Client.set_address() is replaced with the 
   Client.create_service() call
 - Auto-load the http://schemas.xmlsoap.org/soap/encoding/ schema if it is
   referenced but not imported. Too many XSD's assume that the schema is always
   available.
 - Major refactoring of the XSD handling to correctly support nested 
   xsd:sequence elements. 
 - Add ``logger.debug()`` calls around Transport.post() to allow capturing the
   content send/received from the server
 - Add proper support for default values on attributes and elements.


0.10.0 (2016-06-22)
-------------------
 - Make global elements / types truly global by refactoring the Schema 
   parsing. Previously the lookups where non-transitive, but this should only
   be the case during parsing of the xml schema.
 - Properly unwrap XML responses in soap.DocumentMessage when a choice is the
   root element. (#80)
 - Update exceptions structure, all zeep exceptions are now using 
   zeep.exceptions.Error() as base class.


0.9.1 (2016-06-17)
------------------
 - Quote the SOAPAction header value (Derek Harland)
 - Undo fallback for SOAPAction if it is empty (#83)
 

0.9.0 (2016-06-14)
------------------
 - Use the appdirs module to retrieve the OS cache path. Note that this results
   in an other default cache path then previous releases! See 
   https://github.com/ActiveState/appdirs for more information.
 - Fix regression when initializing soap objects with invalid kwargs.
 - Update wsse.UsernameToken to set encoding type on nonce (Antonio Cuni)
 - Remove assert statement in soap error handling (Eric Waller)
 - Add '--no-verify' to the command line interface. (#63)
 - Correctly xsi:type attributes on unbounded elements. (nicholjy) (#68)
 - Re-implement xsd:list handling
 - Refactor logic to open files from filesystem.
 - Refactor the xsd:choice implementation (serializing/deserializing)
 - Implement parsing of xsd:any elements.


0.8.1 (2016-06-08)
------------------
 - Use the operation name for the xml element which wraps the parameters in 
   for soap RPC messages (#60)


0.8.0 (2016-06-07)
------------------
 - Add ability to override the soap endpoint via `Client.set_address()`
 - Fix parsing ComplexTypes which have no child elements (#50)
 - Handle xsi:type attributes on anyType's correctly when deserializing 
   responses (#17)
 - Fix xsd:restriction on xsd:simpleType's when the base type wasn't defined
   yet. (#59)
 - Add xml declaration to the generate xml strings (#60)
 - Fix xsd:import statements without schemaLocation (#58)


0.7.1 (2016-06-01)
------------------
 - Fix regression with handling wsdl:import statements for messages (#47)


0.7.0 (2016-05-31)
------------------
 - Add support HTTP authentication (mcordes). This adds a new attribute to the
   Transport client() which passes the http_auth value to requests. (#31)
 - Fix issue where setting cache=None to Transport class didn't disable 
   caching.
 - Refactor handling of wsdl:imports, don't merge definitions but instead 
   lookup values in child definitions. (#40)
 - Remove unused namespace declarations from the generated SOAP messages.
 - Update requirement of six>=1.0.0 to six>=1.9.0 (#39)
 - Fix handling of xsd:choice, xsd:group and xsd:attribute (#30)
 - Improve error messages
 - Fix generating soap messages when sub types are used via xsd extensions (#36)
 - Improve handling of custom soap headers (#33)


0.6.0 (2016-05-21)
------------------
 - Add missing `name` attributes to xsd.QName and xsd.NOTATION (#15)
 - Various fixes related to the Choice element
 - Support xsd:include
 - Experimental support for HTTP bindings
 - Removed `Client.get_port()`, use `Client.bind()`.


0.5.0 (2015-05-08)
------------------
 - Handle attributes during parsing of the response values>
 - Don't create empty soap objects when the root element is empty.
 - Implement support for WSSE usernameToken profile including 
   passwordText/passwordDigest.
 - Improve XSD date/time related builtins.
 - Various minor XSD handling fixes 
 - Use the correct soap-envelope XML namespace for the Soap 1.2 binding
 - Use `application/soap+xml` as content-type in the Soap 1.2 binding
 - **backwards incompatible**: Make cache part of the transport object 
   instead of the client.  This changes the call signature of the Client() 
   class.  (Marek Wywiał)
 - Add the `verify` kwarg to the Transport object to disable ssl certificate
   verification. (Marek Wywiał)


0.4.0 (2016-04-17)
------------------
 - Add defusedxml module for XML security issues
 - Add support for choice elements
 - Fix documentation example for complex types (Falk Schuetzenmeister)


0.3.0 (2016-04-10)
------------------
 - Correctly handle recursion in WSDL and XSD files
 - Add support for the XSD Any element
 - Allow usage of shorthand prefixes when creating elements and types
 - And more various improvements


0.2.5 (2016-04-05)
------------------
 - Temporarily disable the HTTP binding support until it works properly
 - Fix an issue with parsing SOAP responses with optional elements


0.2.4 (2016-04-03)
------------------
 - Improve xsd.DateTime, xsd.Date and xsd.Time implementations by using the
   isodate module.
 - Implement xsd.Duration 


0.2.3 (2016-04-03)
------------------
 - Fix xsd.DateTime, xsd.Date and xsd.Time implementations
 - Handle NIL values correctly for simpletypes


0.2.2 (2016-04-03)
------------------
 - Fix issue with initializing value objects (ListElements)
 - Add new `zeep.helpers.serialize_object()` method
 - Rename type attribute on value objects to `_xsd_type` to remove potential
   attribute conflicts


0.2.1 (2016-04-03)
------------------
 - Support minOccurs 0 (optional elements)
 - Automatically convert python datastructures to zeep objects for requests.
 - Set default values for new zeep objects to None / [] (Element, ListElement)
 - Add `Client.get_element()` to create custom objects


0.2.0 (2016-04-03)
------------------
 - Proper support for XSD element and attribute forms (qualified/unqualified)
 - Improved XSD handling
 - Separate bindings for Soap 1.1 and Soap 1.2
 - And again various other fixes


0.1.1 (2016-03-20)
------------------
 - Various fixes to make the HttpBinding not throw errors during parsing
 - More built-in xsd types
 - Add support for `python -mzeep <wsdl>`
 - Various other fixes


0.1.0 (2016-03-20)
------------------

Preview / Proof-of-concept release. Probably not suitable for production use :)
