~~~~~~~~~~~~~~~~~~
New features
------------
+ Add support for ICAT 4.4.0: add new :class:`icat.entity.Entity` type
`InvestigationGroup`, `role` has been added to the constraint in
`InvestigationUser`.
+ Add new API method :meth:`icat.ids.IDSClient.getApiVersion` that
will be introduced with the upcoming version 1.3.0 of IDS. This
method may also be called with older IDS servers: if it is not
available because the server does not support it yet, the server
version is guessed from visible features in the API.
:class:`icat.ids.IDSClient` checks the API version on init.
+ Add new API methods :meth:`icat.ids.IDSClient.isReadOnly`,
:meth:`icat.ids.IDSClient.isTwoLevel`,
:meth:`icat.ids.IDSClient.getLink`, and
:meth:`icat.ids.IDSClient.getSize` introduced with IDS 1.2.0.
+ Add `no_proxy` support. The proxy configuration variables,
`http_proxy`, `https_proxy`, and `no_proxy` are set in the
environment. [Suggested by Alistair Mills]
+ Rework the dump file backend API for :ref:`icatdump` and
:ref:`icatrestore <icatingest>`. As a result, writing custom dump
or restore scripts is much cleaner and easier now.
This may cause compatibility issues for users who either wrote their
own dump file backend or for users who wrote custom dump or restore
scripts, using the XML or YAML backends. In the first case, compare
the old XML and YAML backends with the new versions and you'll
easily see what needs to get adapted. In the latter case, have a
look into the new versions of :ref:`icatdump` and :ref:`icatrestore
<icatingest>` to see how to use the new backend API.
+ Add method :meth:`icat.client.Client.searchChunked`.
+ Add method :meth:`icat.entity.Entity.getAttrType`.
Incompatible changes
--------------------
+ Move the `group` argument to method
:meth:`icat.client.Client.createRules` to the last position and make
it optional, having default :const:`None`.
In the client code, replace::
client.createRules(group, crudFlags, what)
by ::
client.createRules(crudFlags, what, group)
+ The :meth:`icat.client.Client.putData` method returns the new
Datafile object created by IDS rather then only its id.
If you depend on the old behavior in the client code, replace::
dfid = client.putData(file, datafile)
by ::
df = client.putData(file, datafile)
dfid = df.id
Minor changes and fixes
-----------------------
+ The :meth:`icat.client.Client.searchText` and
:meth:`icat.client.Client.luceneSearch` client method have been
deprecated. They are destined to be dropped from the ICAT server or
at least changed in version 4.5.0 and might get removed from
python-icat in a future release as well.
The methods now emit a deprecation warning when called. Note
however that Python by default ignores deprecation warnings, so you
won't see this unless you switch them on.
+ Fixed overly strict type checking in the constructor arguments of
:class:`icat.ids.DataSelection` and as a consequence also in the
arguments of the ICAT client methods
:meth:`icat.client.Client.getData`,
:meth:`icat.client.Client.getDataUrl`,
:meth:`icat.client.Client.prepareData`, and
:meth:`icat.client.Client.deleteData`: now, any
:class:`Sequence` of entity objects will be accepted, in particular
an :class:`icat.entity.EntityList`.
+ Change :meth:`icat.ids.IDSClient.archive` and
:meth:`icat.ids.IDSClient.restore` to not to return anything. While
formally, this might be considered an incompatible change, these
methods never returned anything meaningful in the past.
+ Slightly modified the `==` and `!=` operator for
:class:`icat.entity.Entity`. Add a
:meth:`icat.entity.Entity.__hash__` method. The latter means that
you will more likely get what you expect when you create a set of
:class:`icat.entity.Entity` objects or use them as keys in a dict.
+ The module :mod:`icat.eval` now only does its work (parsing command
line arguments and connecting to an ICAT server) when called from
the Python command line. When imported as a regular module, it will
essentially do nothing. This avoids errors to occur when imported.
+ `setup.py` raises an error with Python 2.6 if python2_6.patch has
not been applied.
+ Add missing `MANIFEST.in` in the source distribution.
+ Remove the work around the Suds datetime value bug (setting the
environment variable TZ to ``UTC``) from :mod:`icat`. Instead,
document it along with other known issues in the README.
+ Minor fixes in the sorting of entity objects.
+ Add an optional argument args to
:meth:`icat.config.Config.getconfig`. If set to a list of strings,
it replaces :attr:`sys.argv`. Mainly useful for testing.
+ Add comparison operators to class :class:`icat.listproxy.ListProxy`.
.. _changes-0_5_1: