====================
- The ``NoPickle`` decorator also works with ``Persistent``
subclasses (and may or may not work with multiple-inheritance
subclasses of ``Persistent``, depending on the MRO,
but that's always been the case for regular objects). A
``Persistent`` subclass being decorated with ``NoPickle`` doesn't
make much sense, so a ``RuntimeWarning`` is issued. A warning is
also issued if the class directly implements one of the pickle
protocol methods.
- Updating objects that use ``createFieldProperties`` or otherwise
have ``FieldProperty`` objects in their type is at least 10% faster
thanks to avoiding double-validation due to a small monkey-patch on
``FieldProperty``. See `issue 67
<https://github.com/NextThought/nti.externalization/issues/67>`_.
- Proxies around objects that implement ``toExternalObject`` are
allowed again; the proxied object's ``toExternalObject`` will be called.
- The signature for ``updateFromExternalObject()`` has been tightened.
It should be ``(self, external_object, context, **kwargs)``, where
``**kwargs`` is optional, as is context. ``**kwargs`` currently
contains nothing useful. Uses of ``dataserver=None`` in the
signature will generate a warning. This may be tightened further in
the future. See `issue 30
<https://github.com/NextThought/nti.externalization/issues/30>`_.
- ``__ext_ignore_updateFromExternalObject__`` is officially
deprecated and generates a warning.
- ``update_from_external_object`` caches certain information about the
types of the updater objects, making it 8-25% faster.
- ``update_from_external_object`` mutates sequences contained in a
dict in-place instead of overwriting with a new list.
- ``update_from_external_object`` mutates sequences at the top level
instead of returning a new list.
- Add support for finding factories for incoming data which do not
specify a MIME type or class field based on the key they are
assigned to. This aids in consuming data produced by foreign systems
or using ``Dict`` schema fields that require modelled
values. See `issue 51
<https://github.com/NextThought/nti.externalization/issues/51>`_ and
`PR 68
<https://github.com/NextThought/nti.externalization/pull/68>`_.
- Schemas that use ``InterfaceObjectIO`` (including through the ZCML
directive ``registerAutoPackageIO``) can use ``Dict`` fields more
easily on internalization (externalization has always worked): They
automatically internalize their values by treating the ``Dict`` as
anonymous external data.
- Strings can automatically be adapted into ``ITimeDelta`` objects.