wsme/doc/source/changes.rst
Stephen Finucane 7092903ba1 Rework documentation build
Modern docs! This fixes a couple of issues introduced in the previous
patches and generally cleans up a lot of mess.

Change-Id: Ib964c16251bce12fe498b13455ed3515ef205916
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
2019-11-18 13:58:59 -08:00

459 lines
12 KiB
ReStructuredText

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.
.. _Flask: http://flask.pocoo.org/
* 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 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 :class:`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 :class:`wsme.types.Base`. They will
have a default constructor and be registered automatically.
* Removed the wsme.wsgi.adapt function if favor of
:meth:`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
(:class:`wsmeext.extdirect.datastore.DataStoreController`).
* Add Store and Model javascript definition auto-generation
* Add Store server-side based on SQLAlchemy mapped classes
(:class:`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.
* :class:`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.
* :class:`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 :class:`UnsetType` and a :data:`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 :class:`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 (:class:`wsme.wsgi.WSRoot`) or a
TurboGears 1.x controller (:class:`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.