Changelog

v0.22.3 - 2024-02-02

Bug fixes

  • Catch ChannelInvalidStateError in process state change [fda244a]

  • Make ProcessListener instances persistable [fc66001]

Dependencies

Devops

  • Update ReadTheDocs configuration file [5ddba0f]

v0.22.2 - 2023-06-23

This release applies the fixes that were released on the support branch of v0.21.x.

Bug fixes

  • Workchains: Accept but deprecate conditional predicates returning None [#261]

  • PortNamespace: Fix bug in valid type checking of dynamic namespaces [#255]

  • PortNamespace: Make dynamic apply recursively [#263]

  • PortNamespace.get_port: Only create if create_dynamically is True [#268]

v0.22.1 - 2022-11-21

Dependencies

  • Add support for Python 3.11 [#249]

  • Update requirement pyyaml~=6.0 [#248]

v0.22.0 - 2022-10-31

Features

  • Process: Add the is_excepted property [#240]

Bug fixes

  • StateMachine: transition directly to excepted if transition failed [#240]

  • Process: Fix incorrect overriding of transition_failed [#240]

Dependencies

  • Add support for Python 3.10 [#242]

  • Update requirement kiwipy~=0.8.2 [#243]

  • Add lower limit for patch version of nest-asyncio [#241]

Devops

  • Fix auto_persist decorator typing [#239]

  • Fix remaining warnings in unit tests [#244]

  • Update the mypy pre-commit dependency [#246]

v0.21.10 - 2023-11-13

Dependencies

  • Dependencies: Add support for Python 3.12 [2af3907]

v0.21.9 - 2023-11-10

Features

  • Make ProcessListener instances persistable [98a375f]

Fixes

  • Catch ChannelInvalidStateError in process state change [db2af9a]

Devops

  • Update ReadTheDocs configuration file [31f85c7]

v0.21.8 - 2023-06-07

Devops

  • Dependencies: Update requirement mypy==1.3.0 [#270]

v0.21.7 - 2023-04-20

Bug fixes

  • PortNamespace.get_port: Only create if create_dynamically is True [#268]

v0.21.6 - 2023-04-03

Bug fixes

  • PortNamespace: Make dynamic apply recursively [#263]

  • Workchains: Turn exception into warning for incorrect return type in conditional predicates: any type that implements __bool__ will be accepted [#265]

v0.21.5 - 2023-03-14

Bug fixes

  • Workchains: Accept but deprecate conditional predicates returning None [#261]

v0.21.4 - 2023-03-09

Bug fixes

  • Workchains: Raise if if_/while_ predicate does not return boolean [#259]

Dependencies

  • Dependencies: Update pre-commit requirement isort==5.12.0 [#260]

v0.21.3 - 2022-12-07

Bug fixes

  • PortNamespace: Fix bug in valid type checking of dynamic namespaces [#255]

v0.21.2 - 2022-11-29

Bug fixes

Process: Ensure that the raw inputs are not mutated [#251]

Dependencies

  • Add support for Python 3.10 and 3.11 [#254]

  • Update requirement pytest-notebook>=0.8.1 [#254]

  • Update requirement pyyaml~=6.0 [#254]

  • Update requirement kiwipy[rmq]~=0.7.7 [#254]

  • Update the myst-nb and sphinx requirements [#253]

v0.21.1 - 2022-11-21

This is a backport of changes introduced in v0.22.0.

Features

  • Process: Add the is_excepted property [#240]

Bug fixes

  • StateMachine: transition directly to excepted if transition failed [#240]

  • Process: Fix incorrect overriding of transition_failed [#240]

v0.21.0 - 2022-04-08

Bug fixes

  • Fix UnboundLocalError in DefaultObjectLoader.load_object. [#225]

Dependencies

  • Drop support for Python 3.6. [#228]

  • Pin Jinja2 and Markupsafe packages for docs builds. [#228]

  • Update requirement nest-asyncio~=1.5 [#229]

  • Pin tests requirements to functional versions. [#228]

Devops

  • Adopt PEP 621 and move build spec to pyproject.toml [#230]

  • Move package into the src/ subdirectory [#234]

  • Merge separate license files into one [#232]

  • Add the flynt and isort pre-commit hooks [#233]

  • Remove obsolete release.sh [#231]

  • Update the continuous deployment workflow [#235]

v0.20.0 - 2021-08-10

  • 🔧 MAINTAIN: update requirement to pyyaml~=5.4 (#221) The versions of pyyaml up to v5.4 contained severe security issues where the default loaders could be abused for arbitrary code execution. The default FullLoader was patched to no longer allow this behavior, but as a result, data sets that could be successfully deserialized with it, now will fail. This required using the unsafe Loader in for the deserialization of the exception state of a process.

v0.19.0 - 2021-03-09

  • ‼️ DEPRECATE: Process.done method: This method is a duplicate of Process.has_terminated, and is not used anywhere in plumpy (or aiida-core).

  • 🐛 FIX: Task.cancel should not set state as EXCEPTED asyncio.CancelledError are generated when an async task is cancelled. In python 3.7 this exception class inherits from Exception, whereas in python 3.8+ it inherits from BaseException. This meant it python 3.7 it was being caught by except Exception, and setting the process state to EXCEPTED, whereas in python 3.8+ it was being re-raised to the caller. We now ensure in both versions it is re-raised (particularly because aiida-core currently relies on this behaviour).

  • 👌 IMPROVE: Process broadcast subscriber Filter out state_changed broadcasts, and allow these to pass-through without generating a (costly) asynchronous task. Note this also required an update in the minimal kiwipy version, to 0.7.4

v0.18.6 - 2021-02-24

👌 IMPROVE: Catch state change broadcast timeout

When using an RMQ communicator, the broadcast can timeout on heavy loads to RMQ (for example see https://github.com/aiidateam/aiida-core/issues/4745). This broadcast is not critical to the running of the process, and so a timeout should not except it.

Also ensure the process PID is included in all log messages.

v0.18.5 - 2021-02-15

Minor improvements and bug fixes:

  • 🐛 FIX: retrieve future exception on_killed The exception set on the future should be retrieved, otherwise it will be caught by the loop’s exception handler.

  • 🐛 FIX: Clean-up process event hooks: On Process close/cleanup event hooks are removed, in part to not persist cyclic dependencies of hooks <-> Process. Once a process is closed, it will also not raise an Exception if a hook tries to un-register itself (but has already been removed by the clean-up).

  • 👌 IMPROVE: Add Process.is_killing property

  • 👌 IMPROVE: remove RUNNING from allowed states of resume: Since there is no resume method implemented for the Running class.

  • 🔧 MAINTAIN: Remove frozendict dependency

v0.18.4 - 2021-01-21

Minor update, to add py.typed file to distribution, in accordance with PEP-561 [#195]

v0.18.2 - 2021-01-21

Changes

  • Allow for dereferencing of saved instance state [#191]

  • Add type checking to code base [#180]

  • Improve documentation [#190]

v0.18.1 - 2020-12-18

Bug fixes

  • Trigger application of nest patch in set_event_loop_policy to make it compatible with Jupyter notebooks [#189]

v0.18.0 - 2020-19-09

Changes

  • Drop support for Python 3.5 [#187]

Dependencies

  • Dependencies: update requirement kiwipy~=0.7.1 [#184]

v0.17.1 - 2020-11-25

Bug fixes

  • Dependencies: only require aiocontextvars for Python < 3.7 [#181]

v0.17.0 - 2020-11-13

Changes

  • Add support for Python 3.9 [#176]

  • Make application of nest_asyncio patch explicit [#179]

Bug fixes

  • Port: do not call validator if unspecified and port not required [#173]

v0.16.1 - 2020-09-04

Changes

  • Dependencies: relax the requirement on aio-pika to aio-pika~=6.6. [#171]

v0.16.0 - 2020-08-15

Changes

  • Drop tornado as a dependency and replace it fully by asyncio [#166]

v0.15.0 - 2020-06-16

Changes

  • Drop support for Python 2.7 [#151]

Bug fixes

  • LoopCommunicator: fix incorrect call through in remove_broadcast_subscriber [#156]

  • PortNamespace: do not add empty optional port namespaces to parsed inputs in the pre_process method [#143]

  • PortNamespace: do not set dynamic=False when valid_type=None [#146]

  • PortNamespace: set dynamic=True if valid_type in constructor [#145]

Developers

  • Migrate CI from Travis to Github Actions [#152]

v0.14.5 - 2020-01-22

Features

  • Port: add context argument to validator method [#141]

Changes

  • Remove unnecessary abstraction layer ValueSpec [#141]

v0.14.4 - 2019-12-12

Bug fixes

  • ProcessSpec: do not set _spec attribute if an error is raised in spec call [#136]

v0.14.3 - 2019-10-25

Features

  • Allow lambdas for InputPort default values[#133]

Bug fixes

  • PortNamespace: move namespace validator after port validation [#129]

v0.14.2 - 2019-07-16

Features

  • PortNamespace: add the concept of a “lazy” namespace [#121]

Bug fixes

  • PortNamespace: fix the implementation of include in absorb [#120]

v0.14.1 - 2019-06-17

Features

  • PortNamespace: add support for nested exclude/include rules in absorb [#116]

  • Add traceback when setting exception on an excepted Future [#113]

v0.14.0

Bug fixes

  • Fix bug in process spec validation with default and validator [#106]

  • Fix call of Portnamespace.validator [#104]