12 KiB


1.0.0 (future)

  • Remove support for turbogears
  • Remove support for cornice
  • Remove support for ExtDirect
  • Remove support for SOAP
  • Remove support for the SPORE protocol
  • Remove SQLAlchemy support. It has never actually worked to begin with.

0.9.2 (2017-02-14)


0.9.1 (2017-01-04)

Fix packaging issues.

0.9.0 (2017-01-04)


0.8.0 (2015-08-25)

Changes that may break your app:

  • Returns 400 if unexpected attributes are added to complex types (#1277571).

Other changes:

  • Returns 415 when Content-Type is invalid (#1419110)
  • Returns 400 if a complex input type is not a json object (#1423634)
  • Fix error reports with ArrayType and DictType invalid inputs (#1428185, #1428628)
  • Update README

0.7.0 (2015-05-13)

  • Ensure UserType objects are converted to basetype
  • Convert built-in types when passed as strings
  • Multiple protocol accept or content-type matching
  • Raise an InvalidInput if you get a ValueError from JSON data
  • Remove unsupported python versions from setup.cfg
  • Clean up and add requirements.txt
  • Add full MIT license
  • Fix i18n when formatting exception
  • Cleanup up logging
  • Make it possible to use the Response to return a non-default return type
  • several fixes for SOAP protocol

0.6.4 (2014-11-20)

  • Include tests in the source distribution

0.6.3 (2014-11-19)

  • Disable universal wheels

0.6.2 (2014-11-18)

  • Flask adapter complex types now supports flask.ext.restful
  • Allow disabling complex types auto-register
  • Documentation edits
  • Various documentation build fixes
  • Fix passing Dict and Array based UserType as params

0.6.1 (2014-05-02)

  • Fix error: variable 'kw' referenced before assignment
  • Fix default handling for zero values
  • Fixing spelling mistakes
  • A proper check of UuidType
  • pecan: cleanup, use global vars and staticmethod
  • args_from_args() to work with an instance of UserType

0.6 (2014-02-06)

  • Add 'readonly' parameter to wsattr
  • Fix typos in documents and comments
  • Support dynamic types
  • Support building wheels (PEP-427)
  • Fix a typo in the types documentation
  • Add IntegerType and some classes for validation
  • Use assertRaises() for negative tests
  • Remove the duplicated error message from Enum
  • Drop description from 403 flask test case
  • Fix SyntaxWarning under Python 3

0.5b6 (2013-10-16)

  • Add improved support for HTTP response codes in cornice apps.
  • Handle mandatory attributes
  • Fix error code returned when None is used in an Enum
  • Handle list and dict for body type in REST protocol
  • Fix Sphinx for Python 3
  • Add custom error code to ClientSideError
  • Return a ClientSideError if unable to convert data
  • Validate body when using Pecan

0.5b5 (2013-09-16)

More packaging fixes.

0.5b4 (2013-09-11)

Fixes some release-related files for the stackforge release process. No user-facing bug fixes or features over what 0.5b3 provides.

0.5b3 (2013-09-04)

The project moved to stackforge. Mind the new URLs for the repository, bug report etc (see the documentation).

  • Allow non-default status code return with the pecan adapter (Angus Salked).
  • Fix returning objects with object attributes set to None on rest-json & ExtDirect.
  • Allow error details to be set on the Response object (experimental !).
  • Fix: Content-Type header is not set anymore when the return type is None on the pecan adapter.
  • Support unicode message in ClientSideError (Mehdi Abaakouk).
  • Use pbr instead of d2to1 (Julien Danjou).
  • Python 3.3 support (Julien Danjou).
  • Pecan adapter: returned status can now be set on exceptions (Vitaly Kostenko).
  • TG adapters: returned status can be set on exceptions (Ryan Petrello).
  • six >= 1.4.0 support (Julien Danjou).
  • Require ordereddict from pypi for python < 2.6 (Ryan Petrello).
  • Make the code PEP8 compliant (Ryan Petrello).

0.5b2 (2013-04-18)

  • Changed the way datas of complex types are stored. In previous versions, an attribute was added to the type for each attribute, its name being the attribute name prefixed with '_'.

    Starting with this version, a single attribute _wsme_dataholder is added to the instance.

    The motivation behind this change is to avoid adding too many attributes to the object.

  • Add a special type 'HostRequest' that allow a function to ask for the host framework request object in its arguments.

  • Pecan adapter: Debug mode (which returns the exception tracebacks to the client) can be enabled by the pecan application configuration.

  • New adapter: wsmeext.flask, for the Flask framework.

  • Fix: the cornice adapter was not usable.

  • Fix: Submodules of wsmeext were missing in the packages.

  • Fix: The demo app was still depending on the WSME-Soap package (which has been merged into WSME in 0.5b1).

  • Fix: A function with only on 'body' parameter would fail when being called.

  • Fix: Missing arguments were poorly reported by the frameworks adapters.

0.5b1 (2013-01-30)

  • Introduce a new kind of adapters that rely on the framework routing. Adapters are provided for Pecan, TurboGears and cornice.
  • Reorganised the rest protocol implementation to ease the implementation of adapters that rely only on the host framework routing system.
  • The default rest @expose decorator does not wrap the decorated function anymore. If needed to expose a same function several times, a parameter multiple_expose=True has been introduced.
  • Remove the wsme.release module
  • Fix == operator on ArrayType
  • Adapted the wsme.sphinxext module to work with the function exposed by the wsme.pecan adapter.
  • Allow promotion of int to float on float attributes (Doug Hellman)
  • Add a samples_slot option to the .. autotype directive to choose where the data samples whould be inserted (Doug Hellman).
  • Add sample() to ArrayType and DictType (Doug Hellman).
  • New syntax for object arrays as GET parameters, without brackets. Ex: ?o.f1=a&o.f1=b&o.f2=c&o.f2=d is an array of two objects: [{'f1': 'a', 'f2': 'c']}, {'f1': 'b', 'f2': 'd']}.
  • @signature (and its @wsexpose frontends) has a new parameter: ignore_extra_args.
  • Fix boolean as input type support in the soap implementation (Craig McDaniel).
  • Fix empty/nil strings distinction in soap (Craig McDaniel).
  • Improved unittests code coverage.
  • Ported the soap implementation to python 3.
  • Moved non-core features (adapters, sphinx extension) to the wsmeext module.
  • Change the GET parameter name for passing the request body as a parameter is now from 'body' to '__body__'
  • The soap, extdirect and sqlalchemy packages have been merged into the main package.
  • Changed the documentation theme to "Cloud".

0.4 (2012-10-15)

  • Automatically converts unicode strings to/from ascii bytes.
  • Use d2to1 to simplify
  • Implements the SPORE specification.
  • Fixed a few things in the documentation

0.4b1 (2012-09-14)

  • Now supports Python 3.2
  • String types handling is clearer.
  • New wsme.types.File type.
  • Supports cross-referenced types.
  • Various bugfixes.
  • Tests code coverage is now over 95%.
  • RESTful protocol can now use the http method.
  • UserTypes can now be given a name that will be used in the documentation.
  • Complex types can inherit wsme.types.Base. They will have a default constructor and be registered automatically.
  • Removed the wsme.wsgi.adapt function if favor of wsme.WSRoot.wsgiapp


  • Function names now starts with a lowercase letter.
  • Fixed issues with arrays (issue #3).
  • Fixed empty array handling.

This new extension makes it easy to create webservices on top of a SQLAlchemy set of mapped classes.

  • Implements server-side DataStore (wsmeext.extdirect.datastore.DataStoreController).
  • Add Store and Model javascript definition auto-generation
  • Add Store server-side based on SQLAlchemy mapped classes (wsmeext.extdirect.sadatastore.SADataStoreController).

0.3 (2012-04-20)

  • Initial Sphinx integration.

0.3b2 (2012-03-29)

  • Fixed issues with the TG1 adapter.
  • Now handle dict and UserType types as GET/POST params.
  • Better handling of application/x-www-form-urlencoded encoded POSTs in rest protocols.
  • wsattr now takes a 'default' parameter that will be returned instead of 'Unset' if no value has been set.

0.3b1 (2012-01-19)

  • Per-call database transaction handling.
  • Unset is now imported in the wsme module
  • Attributes of complex types can now have a different name in the public api and in the implementation.
  • Complex arguments can now be sent as GET/POST params in the rest protocols.
  • The restjson protocol do not nest the results in an object anymore.
  • Improved the documentation
  • Fix array attributes validation.
  • Fix date|time parsing errors.
  • Fix Unset values validation.
  • Fix registering of complex types inheriting form already registered complex types.
  • Fix user types, str and None values encoding/decoding.

0.2.0 (2011-10-29)

  • Added batch-calls abilities.
  • Introduce a UnsetType and a Unset constant so that non-mandatory attributes can remain unset (which is different from null).
  • Fix: If a complex type was only used as an input type, it was not registered.
  • Add support for user types.
  • Add an Enum type (which is a user type).
  • The 'binary' type is now a user type.
  • Complex types:
    • Fix inspection of complex types with inheritance.
    • Fix inspection of self-referencing complex types.
    • wsattr is now a python Descriptor, which makes it possible to retrieve the attribute definition on a class while manipulating values on the instance.
    • Add strong type validation on assignment (made possible by the use of Descriptors).
  • ExtDirect:
    • Implements batch calls
    • Fix None values conversion
    • Fix transaction result : 'action' and 'method' were missing.

0.1.1 (2011-10-20)

  • Changed the internal API by introducing a CallContext object. It makes it easier to implement some protocols that have a transaction or call id that has to be returned. It will also make it possible to implement batch-calls in a later version.
  • More test coverage.
  • Fix a problem with array attribute types not being registered.
  • Fix the mandatory / default detection on function arguments.
  • Fix issues with the SOAP protocol implementation which should now work properly with a suds client.
  • Fix issues with the ExtDirect protocol implementation.

0.1.0 (2011-10-14)

  • Protocol insertion order now influence the protocol selection
  • Move the soap protocol implementation in a separate lib, WSME-Soap
  • Introduce a new protocol ExtDirect in the WSME-ExtDirect lib.

0.1.0a4 (2011-10-12)

  • Change the way framework adapters works. Now the adapter modules have a simple adapt function that adapt a wsme.WSRoot instance. This way a same root can be integrated in several framework.
  • Protocol lookup now use entry points in the group [wsme.protocols].

0.1.0a3 (2011-10-11)

  • Add specialised WSRoot classes for easy integration as a WSGI Application (wsme.wsgi.WSRoot) or a TurboGears 1.x controller (wsme.tg1.WSRoot).
  • Improve the documentation.
  • More unit tests and code-coverage.

0.1.0a2 (2011-10-07)

  • Added support for arrays in all the protocols

0.1.0a1 (2011-10-04)

Initial public release.