- Catch
ChannelInvalidStateError
in process state change [fda244a] - Make
ProcessListener
instances persistable [fc66001]
- Update ReadTheDocs configuration file [5ddba0f]
This release applies the fixes that were released on the support branch of v0.21.x
.
- Workchains: Accept but deprecate conditional predicates returning
None
[#261] PortNamespace
: Fix bug in valid type checking of dynamic namespaces [#255]PortNamespace
: Makedynamic
apply recursively [#263]PortNamespace.get_port
: Only create ifcreate_dynamically
isTrue
[#268]
Process
: Add theis_excepted
property [#240]
StateMachine
: transition directly to excepted if transition failed [#240]Process
: Fix incorrect overriding oftransition_failed
[#240]
- Add support for Python 3.10 [#242]
- Update requirement
kiwipy~=0.8.2
[#243] - Add lower limit for patch version of
nest-asyncio
[#241]
- Fix
auto_persist
decorator typing [#239] - Fix remaining warnings in unit tests [#244]
- Update the
mypy
pre-commit dependency [#246]
- Make
Waiting.resume()
idempotent [a79497b]
- Add requirement
nbdime<4
[94df0df]
- Dependencies: Add support for Python 3.12 [2af3907]
- Make
ProcessListener
instances persistable [98a375f]
- Catch
ChannelInvalidStateError
in process state change [db2af9a]
- Update ReadTheDocs configuration file [31f85c7]
- Dependencies: Update requirement
mypy==1.3.0
[#270]
PortNamespace.get_port
: Only create ifcreate_dynamically
isTrue
[#268]
PortNamespace
: Makedynamic
apply recursively [#263]- Workchains: Turn exception into warning for incorrect return type in conditional predicates: any type that implements
__bool__
will be accepted [#265]
- Workchains: Accept but deprecate conditional predicates returning
None
[#261]
- Workchains: Raise if
if_/while_
predicate does not return boolean [#259]
- Dependencies: Update pre-commit requirement
isort==5.12.0
[#260]
PortNamespace
: Fix bug in valid type checking of dynamic namespaces [#255]
Process
: Ensure that the raw inputs are not mutated [#251]
- 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
andsphinx
requirements [#253]
This is a backport of changes introduced in v0.22.0
.
Process
: Add theis_excepted
property [#240]
StateMachine
: transition directly to excepted if transition failed [#240]Process
: Fix incorrect overriding oftransition_failed
[#240]
- Fix
UnboundLocalError
inDefaultObjectLoader.load_object
. [#225]
- 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]
- 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
andisort
pre-commit hooks [#233] - Remove obsolete
release.sh
[#231] - Update the continuous deployment workflow [#235]
- 🔧 MAINTAIN: update requirement to
pyyaml~=5.4
(#221) The versions ofpyyaml
up to v5.4 contained severe security issues where the default loaders could be abused for arbitrary code execution. The defaultFullLoader
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 unsafeLoader
in for the deserialization of the exception state of a process.
-
‼️ DEPRECATE:Process.done
method: This method is a duplicate ofProcess.has_terminated
, and is not used anywhere in plumpy (or aiida-core). -
🐛 FIX:
Task.cancel
should not set state asEXCEPTED
asyncio.CancelledError
are generated when an async task is cancelled. In python 3.7 this exception class inherits fromException
, whereas in python 3.8+ it inherits fromBaseException
. This meant it python 3.7 it was being caught byexcept Exception
, and setting the process state toEXCEPTED
, 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, to0.7.4
👌 IMPROVE: Catch state change broadcast timeout
When using an RMQ communicator, the broadcast can timeout on heavy loads to RMQ (for example see aiidateam/aiida-core#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.
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 noresume
method implemented for theRunning
class. - 🔧 MAINTAIN: Remove frozendict dependency
Minor update, to add py.typed
file to distribution, in accordance with PEP-561 [#195]
- Allow for dereferencing of saved instance state [#191]
- Add type checking to code base [#180]
- Improve documentation [#190]
- Trigger application of nest patch in
set_event_loop_policy
to make it compatible with Jupyter notebooks [#189]
- Drop support for Python 3.5 [#187]
- Dependencies: update requirement
kiwipy~=0.7.1
[#184]
- Dependencies: only require
aiocontextvars
for Python < 3.7 [#181]
Port
: do not call validator if unspecified and port not required [#173]
- Dependencies: relax the requirement on
aio-pika
toaio-pika~=6.6
. [#171]
- Drop
tornado
as a dependency and replace it fully byasyncio
[#166]
- Drop support for Python 2.7 [#151]
LoopCommunicator
: fix incorrect call through inremove_broadcast_subscriber
[#156]PortNamespace
: do not add empty optional port namespaces to parsed inputs in thepre_process
method [#143]PortNamespace
: do not setdynamic=False
whenvalid_type=None
[#146]PortNamespace
: setdynamic=True
ifvalid_type
in constructor [#145]
- Migrate CI from Travis to Github Actions [#152]
Port
: add context argument to validator method [#141]
- Remove unnecessary abstraction layer
ValueSpec
[#141]
ProcessSpec
: do not set_spec
attribute if an error is raised inspec
call [#136]
- Allow lambdas for
InputPort
default values[#133]
PortNamespace
: move namespace validator after port validation [#129]
PortNamespace
: add the concept of a "lazy" namespace [#121]
PortNamespace
: fix the implementation ofinclude
inabsorb
[#120]