Changes¶
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)¶
TODO.
0.9.1 (2017-01-04)¶
Fix packaging issues.
0.9.0 (2017-01-04)¶
TODO.
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 setup.py 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 parametermultiple_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
tofloat
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 setup.py.
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()
Extensions¶
- wsme-soap
Function names now starts with a lowercase letter.
Fixed issues with arrays (issue #3).
Fixed empty array handling.
- wsme-sqlalchemy
This new extension makes it easy to create webservices on top of a SQLAlchemy set of mapped classes.
- wsme-extdirect
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 moduleAttributes 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 aUnset
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.