------------------
* ``ServiceBase`` is deprecated in favor of ``Service``. It's just a name change
in order to make it consistent with the rest of the package. ServiceBase will
be kept until Spyne 3.
* Introduced internal keys for services and methods. Uniqueness is enforced
during Application instantiation. If your server refuses to boot after
migrating to 2.13 raising ``MethodAlreadyExistsError``, explicitly setting a
unique ``__service_name__`` in one of the offending ``ServiceBase``
subclasses should fix the problem.
See 2fee1435c30dc50f7503f0915b5e56220dff34d0 for the change.
* EXPERIMENTAL library-wide Python 3 Support! Yay!
* MessagePack uses backwards-compatible raws with a hard-coded UTF-8 encoding
for Unicode (non-ByteArray) types. Please open an issue if not happy with
this.
* It's the transports' job to decide on a codec. Use UTF-8 when in doubt, as
that's what we're doing.
* Avoid the async keyword for Python 3.7.
* Float rounding behaviour seems to have changed in Python 3. In Python 2,
``round(2.5) = 3`` and ``round(3.5) = 4`` whereas in Python 3,
``round(2.5) = 2`` and ``round(3.5) = 4``. This is called half-to-even
rounding and while being counterintuitive, it seems to make better sense from
a statistical standpoint.
You will have to live with this or use ``decimal.Decimal``.
This changes the way datetime and time microseconds are rounded. See
``test_datetime_usec`` and ``test_time_usec`` in
``spyne.test.model.test_primitive``.
* ``spyne.model.Unicode`` used to tolerate (i.e. implicitly but not-so-silenty
casted to ``str``) int values. This is no longer the case. If you want to
set proper numbers to a Unicode-designated field, you must provide a
casting function. Generally, ``Unicode(cast=str)`` is what you want to do.
See d495aa3d56451bd02c0076a9a1f14c6450eadc8e for the change.
* ``exc_table`` is deprecated in favour of ``exc_db``\. Please do a
s/exc_table/exc_db/g in your codebase when convenient.
* Django 1.6 support dropped. Supporting 1.7-1.10.
* Bare methods with non-empty output now have
``descriptior.body_style = spyne.BODY_STYLE_EMPTY_OUT_BARE``\, which was
``spyne.BODY_STYLE_EMPTY`` before. This hould not break anything unless you
are doing some REAL fancy stuff in the method decorators or service events.
* Auxproc is DEPRECATED. Just get rid of it.
* ``spyne.protocol.dictdoc.simple``, ``spyne.server.twisted.http`` and
``spyne.server.django`` are not experimental anymore.
* No major changes otherwise but we paid a lot of technical debt. e.g. We
revamped the test infrastructure.
* ``_in_variable_names`` argument to ``rpc`` was deprecated in favour of
``_in_arg_names``
* ``_udp`` argument to ``rpc`` was deprecated in favour of ``_udd``. UDP is
too well known as user datagram protocol which could be confusing.
* ``_when`` argument to ``mrpc`` now needs to be a callable that satisfies
the ``f(self, ctx)`` signature. It was ``f(self)`` before.
* Attachment is removed. It's been deprecated since ages.
* Usual bug fixes.