Python-icat

Latest version: v1.3.0

Safety actively analyzes 630130 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 4 of 6

0.14.0

~~~~~~~~~~~~~~~~~~~

New features
------------

+ `45`_: Add support for the IDS Write API call introduced in
ids.server 1.9.0.

+ `46`_, `47`_: Add a :meth:`ìcat.client.Client.autoRefresh` method.
The scripts :ref:`icatdump` and :ref:`icatingest` call this method
periodically to prevent the session from expiring.

+ `48`_: Add support for an ordering direction qualifier in class
:class:`icat.query.Query`.

+ `44`_: Add method :meth:`icat.entity.Entity.as_dict`.

+ `40`_: Add method :meth:`icat.client.Client.clone`.

Incompatible changes and deprecations
-------------------------------------

+ Deprecate function :func:`icat.exception.stripCause`.

This was an internal helper function not really meant to be part of
the API. The functionality has been moved in a base class of the
exception hierarchy.

Bug fixes and minor changes
---------------------------

+ Add the :meth:`icat.ids.IDSClient.version` API call introduced in
ids.server 1.8.0.

+ `41`_: Incomprehensible error messages with Python 3.

+ `43`_: :meth:`icat.client.Client.logout` should silently ignore
:exc:`icat.exception.ICATSessionError`.

+ Minor changes in the error handling. Add new exception
:exc:`icat.exception.EntityTypeError`.

+ Documentation fixes.

.. _40: https://github.com/icatproject/python-icat/issues/40
.. _41: https://github.com/icatproject/python-icat/issues/41
.. _43: https://github.com/icatproject/python-icat/issues/43
.. _44: https://github.com/icatproject/python-icat/pull/44
.. _45: https://github.com/icatproject/python-icat/pull/45
.. _46: https://github.com/icatproject/python-icat/issues/46
.. _47: https://github.com/icatproject/python-icat/pull/47
.. _48: https://github.com/icatproject/python-icat/issues/48


.. _changes-0_13_1:

0.13.1

~~~~~~~~~~~~~~~~~~~

Bug fixes and minor changes
---------------------------

+ `38`_: There should be a way to access the kwargs used to create
the client in config.

.. _38: https://github.com/icatproject/python-icat/issues/38


.. _changes-0_13_0:

0.13.0

~~~~~~~~~~~~~~~~~~~

New features
------------

+ `11`_: Support discovery of info about available ICAT
authenticators.

If supported by the ICAT server (icat.server 4.9.0 and newer), the
:mod:`icat.config` module queries the server for information on
available authenticators and the credential keys they require for
login. The configuration variables for these keys are then adapted
accordingly. Note incompatible changes below.

+ Review :ref:`wipeicat`. This was an example script, but is now
promoted to be a regular utility script that gets installed.

+ `32`_: Add support for using aggregate functions in class
:class:`icat.query.Query`.

+ `30`_: Add a predefined config variable type
:func:`icat.config.cfgpath`.

+ `31`_: Add a flag to add the default variables to the
:class:`icat.config.Config` constructor (default: True).

+ :class:`icat.dumpfile_xml.XMLDumpFileReader` also accepts a XML tree
object as input.

+ Verify support for ICAT 4.9.0. Add new ICAT API method
:meth:`icat.client.Client.getVersion`.

Incompatible changes and deprecations
-------------------------------------

+ As a consequence of the discovery of available authenticators, the
workflow during configuration need to be changed. Until now, the
beginning of a typical python-icat program would look like::

config = icat.config.Config()
Optionally, add custom configuration variables:
config.add_variable(...)
conf = config.getconfig()
client = icat.Client(conf.url, **conf.client_kwargs)

E.g. first the configuration variables are set up, then the
configuration is applied and finally the :class:`icat.client.Client`
object is created using the configuration values. With the
discovery of authenticators, the :class:`icat.config.Config` object
itself needs a working :class:`icat.client.Client` object in order
to connect to the ICAT server and query the authenticator info. The
:class:`icat.client.Client` object will now be created in the
:class:`icat.config.Config` constructor and returned along with the
configuration values by :meth:`icat.config.Config.getconfig`. You
will need to replace the code from above by::

config = icat.config.Config()
Optionally, add custom configuration variables:
config.add_variable(...)
client, conf = config.getconfig()

The derived configuration variable `client_kwargs` that was used to
pass additional arguments from the configuration to the Client
constructor is no longer needed and has been removed.

The optional argument `args` has been moved from the
:meth:`icat.config.Config.getconfig` call to the
:class:`icat.config.Config` constructor, retaining the same
semantics. E.g. you must change in your code::

config = icat.config.Config()
conf = config.getconfig(args)
client = icat.Client(conf.url, **conf.client_kwargs)

to::

config = icat.config.Config(args)
client, conf = config.getconfig()

+ Deprecate support for ICAT 4.2.*.

Note that already now significant parts of python-icat require
features from ICAT 4.3 such as the JPQL like query language. The
only workaround is to upgrade your icat.server.

+ Deprecate module :mod:`icat.cgi`.

It is assumed that this has never actually been used in production.
For web applications it is recommended to use the Python Web Server
Gateway Interface (WSGI) rather then CGI.

+ Deprecate the predefined configuration variable `configDir`.

The main use case for this variable was to be substituted in the
default value for the path of an additional configuration file. The
typical usage was the definition of a configuration variable like::

config = icat.config.Config()
config.add_variable('extracfg', ("--extracfg",),
dict(help="Extra config file"),
default="%(configDir)s/extra.xml", subst=True)

This set the default path for the extra config file to the same
directory the main configuration file was found in. Using the new
config variable type :func:`icat.config.cfgpath` you can replace
this by::

config = icat.config.Config()
config.add_variable('extracfg', ("--extracfg",),
dict(help="Extra config file"),
default="extra.xml", type=icat.config.cfgpath)

This will search the extra config file in all the default config
directories, regardless where the main configuration file was found.

+ The fixes for `35`_ and `36`_ require some changes in the
semantics in the `f` and the `mode` argument to
:func:`icat.dumpfile.open_dumpfile`. Most users will probably not
notice the difference.

Bug fixes and minor changes
---------------------------

+ Changed the default for the :class:`icat.config.Config` constructor
argument `ids` from :const:`False` to ``"optional"``.

+ Improved :meth:`icat.client.Client.searchChunked`. This version is
not susceptible to `Issue icatproject/icat.server128`__ anymore.

+ Move the management of dependencies of tests into a separate package
`pytest-dependency`_ that is distributed independently.

+ `34`_: :exc:`TypeError` in the :class:`icat.client.Client`
constructor if setting the `sslContext` keyword argument.

+ `35`_: :exc:`io.UnsupportedOperation` is raised if
:func:`icat.dumpfile.open_dumpfile` is called with an in-memory
stream.

+ `36`_: :class:`icat.dumpfile.DumpFileReader` and
:class:`icat.dumpfile.DumpFileWriter` must not close file.

+ `37`_: :exc:`TypeError` is raised when writing a YAML dumpfile to
:class:`io.StringIO`.

.. __: https://github.com/icatproject/icat.server/issues/128
.. _11: https://github.com/icatproject/python-icat/issues/11
.. _30: https://github.com/icatproject/python-icat/issues/30
.. _31: https://github.com/icatproject/python-icat/issues/31
.. _32: https://github.com/icatproject/python-icat/issues/32
.. _34: https://github.com/icatproject/python-icat/issues/34
.. _35: https://github.com/icatproject/python-icat/issues/35
.. _36: https://github.com/icatproject/python-icat/issues/36
.. _37: https://github.com/icatproject/python-icat/issues/37
.. _pytest-dependency: https://pypi.python.org/pypi/pytest_dependency/


.. _changes-0_12_0:

0.12.0

~~~~~~~~~~~~~~~~~~~

New features
------------

+ Verify support for ICAT 4.8.0 and IDS 1.7.0.

+ Add methods :meth:`icat.ids.IDSClient.reset` and
:meth:`icat.ids.IDSClient.resetPrepared`.

+ `28`_: Add support for searching for attributes in class
:class:`icat.query.Query`.

Bug fixes and minor changes
---------------------------

+ Sort objects in :ref:`icatdump` before writing them to the dump file.
This keeps the order independent from the collation used in the ICAT
database backend.

+ `2`_: for Python 3.6 (expected to be released in Dec 2016) and
newer, use the support for chunked transfer encoding in the standard
lib. Keep our own implementation in module :mod:`icat.chunkedhttp`
only for compatibility with older Python versions.

+ Improved the example script :ref:`wipeicat`.

+ Add an example script `dumprules.py`.

+ Add missing schema definition for the ICAT XML data file format for
ICAT 4.7.

+ Fix an :exc:`AttributeError` during error handling.

.. _2: https://github.com/icatproject/python-icat/issues/2
.. _28: https://github.com/icatproject/python-icat/issues/28


.. _changes-0_11_0:

0.11.0

~~~~~~~~~~~~~~~~~~~

New features
------------

+ `12`_, `23`_: add support for ICAT 4.7.0 and IDS 1.6.0. ICAT
4.7.0 had some small schema changes that have been taken into
account.

Incompatible changes
--------------------

+ Remove the `autoget` argument from
:meth:`icat.entity.Entity.getUniqueKey`. Deprecated since 0.9.0.

Bug fixes and minor changes
---------------------------

+ `21`_: configuration variable `promptPass` is ignored when set in
the configuration file.

+ `18`_: Documentation: missing stuff in the module index.

+ `20`_: add test on compatibility with icat.server.

+ `24`_, `25`_: test failures caused by different timezone settings
of the test server.

+ Use a separate module `distutils_pytest`_ to run the tests from
`setup.py`.

+ :mod:`icat.icatcheck`: move checking of exceptions into a separate
method :meth:`icat.icatcheck.ICATChecker.checkExceptions`. Do not
report exceptions defined in the client, but not found in the
schema.

+ Many fixes in the example script :ref:`wipeicat`.

+ Fix a missing import in the `icatexport.py` example script.

+ Somewhat clearer error messages for some special cases of
:exc:`icat.exception.SearchAssertionError`.

Misc
----

+ Change license to Apache 2.0.

.. _12: https://github.com/icatproject/python-icat/issues/12
.. _18: https://github.com/icatproject/python-icat/issues/18
.. _20: https://github.com/icatproject/python-icat/issues/20
.. _21: https://github.com/icatproject/python-icat/issues/21
.. _23: https://github.com/icatproject/python-icat/issues/23
.. _24: https://github.com/icatproject/python-icat/issues/24
.. _25: https://github.com/icatproject/python-icat/issues/25
.. _distutils_pytest: https://github.com/RKrahl/distutils-pytest


.. _changes-0_10_0:

0.10.0

~~~~~~~~~~~~~~~~~~~

New features
------------

+ Add a method :meth:`icat.entity.Entity.copy`.

+ Implement setting an INCLUDE 1 clause equivalent in class
:class:`icat.query.Query`.

+ Add an optional argument `includes` to
:meth:`icat.client.Client.searchMatching`.

+ Add a hook for a custom method to validate entity objects before
creating them at the ICAT server.

Page 4 of 6

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.