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 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


  • 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


  • Drop support for Python 3.5 [#187]


  • 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


  • 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


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

v0.16.0 - 2020-08-15


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

v0.15.0 - 2020-06-16


  • 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]


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

v0.14.5 - 2020-01-22


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


  • 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


  • Allow lambdas for InputPort default values[#133]

Bug fixes

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

v0.14.2 - 2019-07-16


  • 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


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

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


Bug fixes

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

  • Fix call of Portnamespace.validator [#104]