summaryrefslogtreecommitdiff
path: root/doc/changes.rst
blob: 14927cf8d7e9086dd6856645a30b20f513edbe46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
Changes
=======

0.6.1
-----

* 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
---

* 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.