aiida.orm.nodes.process package

Module with Node sub classes for processes.

class aiida.orm.nodes.process.CalculationNode(backend=None, user=None, computer=None, **kwargs)[source]

Bases: aiida.orm.nodes.process.process.ProcessNode

Base class for all nodes representing the execution of a calculation process.

__abstractmethods__ = frozenset()
__module__ = 'aiida.orm.nodes.process.calculation.calculation'
_abc_impl = <_abc_data object>
_cachable = True
_logger = <Logger aiida.orm.nodes.process.calculation.calculation.CalculationNode (REPORT)>
_plugin_type_string = 'process.calculation.calculation.CalculationNode.'
_query_type_string = 'process.calculation.calculation.'
_storable = True
_unstorable_message = 'storing for this node has been disabled'
inputs

Return an instance of NodeLinksManager to manage incoming INPUT_CALC links

The returned Manager allows you to easily explore the nodes connected to this node via an incoming INPUT_CALC link. The incoming nodes are reachable by their link labels which are attributes of the manager.

Returns:NodeLinksManager
outputs

Return an instance of NodeLinksManager to manage outgoing CREATE links

The returned Manager allows you to easily explore the nodes connected to this node via an outgoing CREATE link. The outgoing nodes are reachable by their link labels which are attributes of the manager.

Returns:NodeLinksManager
class aiida.orm.nodes.process.CalcFunctionNode(backend=None, user=None, computer=None, **kwargs)[source]

Bases: aiida.orm.utils.mixins.FunctionCalculationMixin, aiida.orm.nodes.process.calculation.calculation.CalculationNode

ORM class for all nodes representing the execution of a calcfunction.

__abstractmethods__ = frozenset()
__module__ = 'aiida.orm.nodes.process.calculation.calcfunction'
_abc_impl = <_abc_data object>
_logger = <Logger aiida.orm.nodes.process.calculation.calcfunction.CalcFunctionNode (REPORT)>
_plugin_type_string = 'process.calculation.calcfunction.CalcFunctionNode.'
_query_type_string = 'process.calculation.calcfunction.'
validate_outgoing(target, link_type, link_label)[source]

Validate adding a link of the given type from ourself to a given node.

A calcfunction cannot return Data, so if we receive an outgoing link to a stored Data node, that means the user created a Data node within our function body and stored it themselves or they are returning an input node. The latter use case is reserved for @workfunctions, as they can have RETURN links.

Parameters:
  • target – the node to which the link is going
  • link_type – the link type
  • link_label – the link label
Raises:
  • TypeError – if target is not a Node instance or link_type is not a LinkType enum
  • ValueError – if the proposed link is invalid
class aiida.orm.nodes.process.CalcJobNode(backend=None, user=None, computer=None, **kwargs)[source]

Bases: aiida.orm.nodes.process.calculation.calculation.CalculationNode

ORM class for all nodes representing the execution of a CalcJob.

CALC_JOB_STATE_KEY = 'state'
REMOTE_WORKDIR_KEY = 'remote_workdir'
RETRIEVE_LIST_KEY = 'retrieve_list'
RETRIEVE_SINGLE_FILE_LIST_KEY = 'retrieve_singlefile_list'
RETRIEVE_TEMPORARY_LIST_KEY = 'retrieve_temporary_list'
SCHEDULER_JOB_ID_KEY = 'job_id'
SCHEDULER_LAST_CHECK_TIME_KEY = 'scheduler_lastchecktime'
SCHEDULER_STATE_KEY = 'scheduler_state'
SCHEUDLER_LAST_JOB_INFO_KEY = 'last_jobinfo'
__abstractmethods__ = frozenset()
__module__ = 'aiida.orm.nodes.process.calculation.calcjob'
_abc_impl = <_abc_data object>
_get_objects_to_hash()[source]

Return a list of objects which should be included in the hash.

This method is purposefully overridden from the base Node class, because we do not want to include the repository folder in the hash. The reason is that the hash of this node is computed in the store method, at which point the input files that will be stored in the repository have not yet been generated. Including these anyway in the computation of the hash would mean that the hash of the node would change as soon as the process has started and the input files have been written to the repository.

_hash_ignored_attributes = ('queue_name', 'account', 'qos', 'priority', 'max_wallclock_seconds', 'max_memory_kb')
_logger = <Logger aiida.orm.nodes.process.calculation.calcjob.CalcJobNode (REPORT)>
_plugin_type_string = 'process.calculation.calcjob.CalcJobNode.'
_query_type_string = 'process.calculation.calcjob.'
_raw_input_folder

Get the input folder object.

Returns:the input folder object.
Raise:NotExistent: if the raw folder hasn’t been created yet
_repository_base_path = 'raw_input'
_tools = None
_updatable_attributes = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status', 'state', 'remote_workdir', 'retrieve_list', 'retrieve_temporary_list', 'retrieve_singlefile_list', 'job_id', 'scheduler_state', 'scheduler_lastchecktime', 'last_jobinfo')
_validate()[source]

Verify if all the input nodes are present and valid.

Raise:ValidationError: if invalid parameters are found.
static _validate_retrieval_directive(directives)[source]

Validate a list or tuple of file retrieval directives.

Parameters:directives – a list or tuple of file retrieveal directives
Raises:ValueError – if the format of the directives is invalid
delete_state()[source]

Delete the calculation job state attribute if it exists.

get_authinfo()[source]

Return the AuthInfo that is configured for the Computer set for this node.

Returns:AuthInfo
get_builder_restart()[source]

Return a ProcessBuilder that is ready to relaunch the same CalcJob that created this node.

The process class will be set based on the process_type of this node and the inputs of the builder will be prepopulated with the inputs registered for this node. This functionality is very useful if a process has completed and you want to relaunch it with slightly different inputs.

In addition to prepopulating the input nodes, which is implemented by the base ProcessNode class, here we also add the options that were passed in the metadata input of the CalcJob process.

Returns:~aiida.engine.processes.builder.ProcessBuilder instance
get_description()[source]

Return a string with a description of the node based on its properties.

get_job_id()[source]

Return job id that was assigned to the calculation by the scheduler.

Returns:the string representation of the scheduler job id
get_last_job_info()[source]

Return the last information asked to the scheduler about the status of the job.

Returns:a JobInfo object (that closely resembles a dictionary) or None.
get_option(name)[source]

Retun the value of an option that was set for this CalcJobNode

Parameters:name – the option name
Returns:the option value or None
Raises:ValueError for unknown option
get_options()[source]

Return the dictionary of options set for this CalcJobNode

Returns:dictionary of the options and their values
get_parser_class()[source]

Return the output parser object for this calculation or None if no parser is set.

Returns:a Parser class.
Raises:aiida.common.exceptions.EntryPointError – if the parser entry point can not be resolved.
get_remote_workdir()[source]

Return the path to the remote (on cluster) scratch folder of the calculation.

Returns:a string with the remote path
get_retrieve_list()[source]

Return the list of files/directories to be retrieved on the cluster after the calculation has completed.

Returns:a list of file directives
get_retrieve_singlefile_list()[source]

Return the list of files to be retrieved on the cluster after the calculation has completed.

Returns:list of single file retrieval directives

Deprecated since version 1.0.0: Will be removed in v2.0.0, use aiida.orm.nodes.process.calculation.calcjob.CalcJobNode.get_retrieve_temporary_list() instead.

get_retrieve_temporary_list()[source]

Return list of files to be retrieved from the cluster which will be available during parsing.

Returns:a list of file directives
get_retrieved_node()[source]

Return the retrieved data folder.

Returns:the retrieved FolderData node or None if not found
get_scheduler_lastchecktime()[source]

Return the time of the last update of the scheduler state by the daemon or None if it was never set.

Returns:a datetime object or None
get_scheduler_state()[source]

Return the status of the calculation according to the cluster scheduler.

Returns:a JobState enum instance.
get_scheduler_stderr()[source]

Return the scheduler stdout output if the calculation has finished and been retrieved, None otherwise.

Returns:scheduler stdout output or None
get_scheduler_stdout()[source]

Return the scheduler stderr output if the calculation has finished and been retrieved, None otherwise.

Returns:scheduler stderr output or None
get_state()[source]

Return the calculation job active sub state.

The calculation job state serves to give more granular state information to CalcJobs, in addition to the generic process state, while the calculation job is active. The state can take values from the enumeration defined in aiida.common.datastructures.CalcJobState and can be used to query for calculation jobs in specific active states.

Returns:instance of aiida.common.datastructures.CalcJobState or None if invalid value, or not set
get_transport()[source]

Return the transport for this calculation.

Returns:Transport configured with the AuthInfo associated to the computer of this node

Return the link label used for the retrieved FolderData node.

res

To be used to get direct access to the parsed parameters.

Returns:an instance of the CalcJobResultManager.
Note:a practical example on how it is meant to be used: let’s say that there is a key ‘energy’ in the dictionary of the parsed results which contains a list of floats. The command calc.res.energy will return such a list.
set_job_id(job_id)[source]

Set the job id that was assigned to the calculation by the scheduler.

Note

the id will always be stored as a string

Parameters:job_id – the id assigned by the scheduler after submission
set_last_job_info(last_job_info)[source]

Set the last job info.

Parameters:last_job_info – a JobInfo object
set_option(name, value)[source]

Set an option to the given value

Parameters:
  • name – the option name
  • value – the value to set
Raises:

ValueError for unknown option

Raises:

TypeError for values with invalid type

set_options(options)[source]

Set the options for this CalcJobNode

Parameters:options – dictionary of option and their values to set
set_remote_workdir(remote_workdir)[source]

Set the absolute path to the working directory on the remote computer where the calculation is run.

Parameters:remote_workdir – absolute filepath to the remote working directory
set_retrieve_list(retrieve_list)[source]

Set the retrieve list.

This list of directives will instruct the daemon what files to retrieve after the calculation has completed. list or tuple of files or paths that should be retrieved by the daemon.

Parameters:retrieve_list – list or tuple of with filepath directives
set_retrieve_singlefile_list(retrieve_singlefile_list)[source]

Set the retrieve singlefile list.

The files will be stored as SinglefileData instances and added as output nodes to this calculation node. The format of a single file directive is a tuple or list of length 3 with the following entries:

  1. the link label under which the file should be added
  2. the SinglefileData class or sub class to use to store
  3. the filepath relative to the remote working directory of the calculation
Parameters:retrieve_singlefile_list – list or tuple of single file directives

Deprecated since version 1.0.0: Will be removed in v2.0.0. Use set_retrieve_temporary_list() instead.

set_retrieve_temporary_list(retrieve_temporary_list)[source]

Set the retrieve temporary list.

The retrieve temporary list stores files that are retrieved after completion and made available during parsing and are deleted as soon as the parsing has been completed.

Parameters:retrieve_temporary_list – list or tuple of with filepath directives
set_scheduler_state(state)[source]

Set the scheduler state.

Parameters:state – an instance of JobState
set_state(state)[source]

Set the calculation active job state.

Parameters:state – a string with the state from aiida.common.datastructures.CalcJobState.
Raise:ValueError if state is invalid
tools

Return the calculation tools that are registered for the process type associated with this calculation.

If the entry point name stored in the process_type of the CalcJobNode has an accompanying entry point in the aiida.tools.calculations entry point category, it will attempt to load the entry point and instantiate it passing the node to the constructor. If the entry point does not exist, cannot be resolved or loaded, a warning will be logged and the base CalculationTools class will be instantiated and returned.

Returns:CalculationTools instance
class aiida.orm.nodes.process.ProcessNode(backend=None, user=None, computer=None, **kwargs)[source]

Bases: aiida.orm.utils.mixins.Sealable, aiida.orm.nodes.node.Node

Base class for all nodes representing the execution of a process

This class and its subclasses serve as proxies in the database, for actual Process instances being run. The Process instance in memory will leverage an instance of this class (the exact sub class depends on the sub class of Process) to persist important information of its state to the database. This serves as a way for the user to inspect the state of the Process during its execution as well as a permanent record of its execution in the provenance graph, after the execution has terminated.

CHECKPOINT_KEY = 'checkpoints'
EXCEPTION_KEY = 'exception'
EXIT_MESSAGE_KEY = 'exit_message'
EXIT_STATUS_KEY = 'exit_status'
PROCESS_LABEL_KEY = 'process_label'
PROCESS_PAUSED_KEY = 'paused'
PROCESS_STATE_KEY = 'process_state'
PROCESS_STATUS_KEY = 'process_status'
__abstractmethods__ = frozenset()
__module__ = 'aiida.orm.nodes.process.process'
__str__()[source]

Return str(self).

_abc_impl = <_abc_data object>
_cachable = False
_get_objects_to_hash()[source]

Return a list of objects which should be included in the hash.

_hash_ignored_inputs = ['CALL_CALC', 'CALL_WORK']
_logger = <Logger aiida.orm.nodes.process.process.ProcessNode (REPORT)>
_plugin_type_string = 'process.process.ProcessNode.'
_query_type_string = 'process.process.'
_unstorable_message = 'only Data, WorkflowNode, CalculationNode or their subclasses can be stored'
_updatable_attributes = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status')
called

Return a list of nodes that the process called

Returns:list of process nodes called by this process
called_descendants

Return a list of all nodes that have been called downstream of this process

This will recursively find all the called processes for this process and its children.

caller

Return the process node that called this process node, or None if it does not have a caller

Returns:process node that called this process node instance or None
checkpoint

Return the checkpoint bundle set for the process

Returns:checkpoint bundle if it exists, None otherwise
delete_checkpoint()[source]

Delete the checkpoint bundle set for the process

exception

Return the exception of the process or None if the process is not excepted.

If the process is marked as excepted yet there is no exception attribute, an empty string will be returned.

Returns:the exception message or None
exit_message

Return the exit message of the process

Returns:the exit message
exit_status

Return the exit status of the process

Returns:the exit status, an integer exit code or None
get_builder_restart()[source]

Return a ProcessBuilder that is ready to relaunch the process that created this node.

The process class will be set based on the process_type of this node and the inputs of the builder will be prepopulated with the inputs registered for this node. This functionality is very useful if a process has completed and you want to relaunch it with slightly different inputs.

Returns:~aiida.engine.processes.builder.ProcessBuilder instance
is_excepted

Return whether the process has excepted

Excepted means that during execution of the process, an exception was raised that was not caught.

Returns:True if during execution of the process an exception occurred, False otherwise
Return type:bool
is_failed

Return whether the process has failed

Failed means that the process terminated nominally but it had a non-zero exit status.

Returns:True if the process has failed, False otherwise
Return type:bool
is_finished

Return whether the process has finished

Finished means that the process reached a terminal state nominally. Note that this does not necessarily mean successfully, but there were no exceptions and it was not killed.

Returns:True if the process has finished, False otherwise
Return type:bool
is_finished_ok

Return whether the process has finished successfully

Finished successfully means that it terminated nominally and had a zero exit status.

Returns:True if the process has finished successfully, False otherwise
Return type:bool
is_killed

Return whether the process was killed

Killed means the process was killed directly by the user or by the calling process being killed.

Returns:True if the process was killed, False otherwise
Return type:bool
is_terminated

Return whether the process has terminated

Terminated means that the process has reached any terminal state.

Returns:True if the process has terminated, False otherwise
Return type:bool
is_valid_cache

Return whether the node is valid for caching

Returns:True if this process node is valid to be used for caching, False otherwise
logger

Get the logger of the Calculation object, so that it also logs to the DB.

Returns:LoggerAdapter object, that works like a logger, but also has the ‘extra’ embedded
pause()[source]

Mark the process as paused by setting the corresponding attribute.

This serves only to reflect that the corresponding Process is paused and so this method should not be called by anyone but the Process instance itself.

paused

Return whether the process is paused

Returns:True if the Calculation is marked as paused, False otherwise
process_class

Return the process class that was used to create this node.

Returns:Process class
Raises:ValueError – if no process type is defined, it is an invalid process type string or cannot be resolved to load the corresponding class
process_label

Return the process label

Returns:the process label
process_state

Return the process state

Returns:the process state instance of ProcessState enum
process_status

Return the process status

The process status is a generic status message e.g. the reason it might be paused or when it is being killed

Returns:the process status
set_checkpoint(checkpoint)[source]

Set the checkpoint bundle set for the process

Parameters:state – string representation of the stepper state info
set_exception(exception)[source]

Set the exception of the process

Parameters:exception – the exception message
set_exit_message(message)[source]

Set the exit message of the process, if None nothing will be done

Parameters:message – a string message
set_exit_status(status)[source]

Set the exit status of the process

Parameters:state – an integer exit code or None, which will be interpreted as zero
set_process_label(label)[source]

Set the process label

Parameters:label – process label string
set_process_state(state)[source]

Set the process state

Parameters:state – value or instance of ProcessState enum
set_process_status(status)[source]

Set the process status

The process status is a generic status message e.g. the reason it might be paused or when it is being killed. If status is None, the corresponding attribute will be deleted.

Parameters:status – string process status
set_process_type(process_type_string)[source]

Set the process type string.

Parameters:process_type – the process type string identifying the class using this process node as storage.
unpause()[source]

Mark the process as unpaused by removing the corresponding attribute.

This serves only to reflect that the corresponding Process is unpaused and so this method should not be called by anyone but the Process instance itself.

validate_incoming(source, link_type, link_label)[source]

Validate adding a link of the given type from a given node to ourself.

Adding an input link to a ProcessNode once it is stored is illegal because this should be taken care of by the engine in one go. If a link is being added after the node is stored, it is most likely not by the engine and it should not be allowed.

Parameters:
  • source – the node from which the link is coming
  • link_type – the link type
  • link_label – the link label
Raises:
  • TypeError – if source is not a Node instance or link_type is not a LinkType enum
  • ValueError – if the proposed link is invalid
class aiida.orm.nodes.process.WorkflowNode(backend=None, user=None, computer=None, **kwargs)[source]

Bases: aiida.orm.nodes.process.process.ProcessNode

Base class for all nodes representing the execution of a workflow process.

__abstractmethods__ = frozenset()
__module__ = 'aiida.orm.nodes.process.workflow.workflow'
_abc_impl = <_abc_data object>
_logger = <Logger aiida.orm.nodes.process.workflow.workflow.WorkflowNode (REPORT)>
_plugin_type_string = 'process.workflow.workflow.WorkflowNode.'
_query_type_string = 'process.workflow.workflow.'
_storable = True
_unstorable_message = 'storing for this node has been disabled'
inputs

Return an instance of NodeLinksManager to manage incoming INPUT_WORK links

The returned Manager allows you to easily explore the nodes connected to this node via an incoming INPUT_WORK link. The incoming nodes are reachable by their link labels which are attributes of the manager.

Returns:NodeLinksManager
outputs

Return an instance of NodeLinksManager to manage outgoing RETURN links

The returned Manager allows you to easily explore the nodes connected to this node via an outgoing RETURN link. The outgoing nodes are reachable by their link labels which are attributes of the manager.

Returns:NodeLinksManager
validate_outgoing(target, link_type, link_label)[source]

Validate adding a link of the given type from ourself to a given node.

A workflow cannot ‘create’ Data, so if we receive an outgoing link to an unstored Data node, that means the user created a Data node within our function body and tries to attach it as an output. This is strictly forbidden and can cause provenance to be lost.

Parameters:
  • target – the node to which the link is going
  • link_type – the link type
  • link_label – the link label
Raises:
  • TypeError – if target is not a Node instance or link_type is not a LinkType enum
  • ValueError – if the proposed link is invalid
class aiida.orm.nodes.process.WorkChainNode(backend=None, user=None, computer=None, **kwargs)[source]

Bases: aiida.orm.nodes.process.workflow.workflow.WorkflowNode

ORM class for all nodes representing the execution of a WorkChain.

STEPPER_STATE_INFO_KEY = 'stepper_state_info'
__abstractmethods__ = frozenset()
__module__ = 'aiida.orm.nodes.process.workflow.workchain'
_abc_impl = <_abc_data object>
_cachable = False
_logger = <Logger aiida.orm.nodes.process.workflow.workchain.WorkChainNode (REPORT)>
_plugin_type_string = 'process.workflow.workchain.WorkChainNode.'
_query_type_string = 'process.workflow.workchain.'
_updatable_attributes = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status', 'stepper_state_info')
set_stepper_state_info(stepper_state_info)[source]

Set the stepper state info

Parameters:state – string representation of the stepper state info
stepper_state_info

Return the stepper state info

Returns:string representation of the stepper state info
class aiida.orm.nodes.process.WorkFunctionNode(backend=None, user=None, computer=None, **kwargs)[source]

Bases: aiida.orm.utils.mixins.FunctionCalculationMixin, aiida.orm.nodes.process.workflow.workflow.WorkflowNode

ORM class for all nodes representing the execution of a workfunction.

__abstractmethods__ = frozenset()
__module__ = 'aiida.orm.nodes.process.workflow.workfunction'
_abc_impl = <_abc_data object>
_logger = <Logger aiida.orm.nodes.process.workflow.workfunction.WorkFunctionNode (REPORT)>
_plugin_type_string = 'process.workflow.workfunction.WorkFunctionNode.'
_query_type_string = 'process.workflow.workfunction.'
validate_outgoing(target, link_type, link_label)[source]

Validate adding a link of the given type from ourself to a given node.

A workfunction cannot create Data, so if we receive an outgoing RETURN link to an unstored Data node, that means the user created a Data node within our function body and is trying to return it. This use case should be reserved for @calcfunctions, as they can have CREATE links.

Parameters:
  • target – the node to which the link is going
  • link_type – the link type
  • link_label – the link label
Raises:
  • TypeError – if target is not a Node instance or link_type is not a LinkType enum
  • ValueError – if the proposed link is invalid

Submodules

Module with Node sub class for processes.

class aiida.orm.nodes.process.process.ProcessNode(backend=None, user=None, computer=None, **kwargs)[source]

Bases: aiida.orm.utils.mixins.Sealable, aiida.orm.nodes.node.Node

Base class for all nodes representing the execution of a process

This class and its subclasses serve as proxies in the database, for actual Process instances being run. The Process instance in memory will leverage an instance of this class (the exact sub class depends on the sub class of Process) to persist important information of its state to the database. This serves as a way for the user to inspect the state of the Process during its execution as well as a permanent record of its execution in the provenance graph, after the execution has terminated.

CHECKPOINT_KEY = 'checkpoints'
EXCEPTION_KEY = 'exception'
EXIT_MESSAGE_KEY = 'exit_message'
EXIT_STATUS_KEY = 'exit_status'
PROCESS_LABEL_KEY = 'process_label'
PROCESS_PAUSED_KEY = 'paused'
PROCESS_STATE_KEY = 'process_state'
PROCESS_STATUS_KEY = 'process_status'
__abstractmethods__ = frozenset()
__module__ = 'aiida.orm.nodes.process.process'
__str__()[source]

Return str(self).

_abc_impl = <_abc_data object>
_cachable = False
_get_objects_to_hash()[source]

Return a list of objects which should be included in the hash.

_hash_ignored_inputs = ['CALL_CALC', 'CALL_WORK']
_logger = <Logger aiida.orm.nodes.process.process.ProcessNode (REPORT)>
_plugin_type_string = 'process.process.ProcessNode.'
_query_type_string = 'process.process.'
_unstorable_message = 'only Data, WorkflowNode, CalculationNode or their subclasses can be stored'
_updatable_attributes = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status')
called

Return a list of nodes that the process called

Returns:list of process nodes called by this process
called_descendants

Return a list of all nodes that have been called downstream of this process

This will recursively find all the called processes for this process and its children.

caller

Return the process node that called this process node, or None if it does not have a caller

Returns:process node that called this process node instance or None
checkpoint

Return the checkpoint bundle set for the process

Returns:checkpoint bundle if it exists, None otherwise
delete_checkpoint()[source]

Delete the checkpoint bundle set for the process

exception

Return the exception of the process or None if the process is not excepted.

If the process is marked as excepted yet there is no exception attribute, an empty string will be returned.

Returns:the exception message or None
exit_message

Return the exit message of the process

Returns:the exit message
exit_status

Return the exit status of the process

Returns:the exit status, an integer exit code or None
get_builder_restart()[source]

Return a ProcessBuilder that is ready to relaunch the process that created this node.

The process class will be set based on the process_type of this node and the inputs of the builder will be prepopulated with the inputs registered for this node. This functionality is very useful if a process has completed and you want to relaunch it with slightly different inputs.

Returns:~aiida.engine.processes.builder.ProcessBuilder instance
is_excepted

Return whether the process has excepted

Excepted means that during execution of the process, an exception was raised that was not caught.

Returns:True if during execution of the process an exception occurred, False otherwise
Return type:bool
is_failed

Return whether the process has failed

Failed means that the process terminated nominally but it had a non-zero exit status.

Returns:True if the process has failed, False otherwise
Return type:bool
is_finished

Return whether the process has finished

Finished means that the process reached a terminal state nominally. Note that this does not necessarily mean successfully, but there were no exceptions and it was not killed.

Returns:True if the process has finished, False otherwise
Return type:bool
is_finished_ok

Return whether the process has finished successfully

Finished successfully means that it terminated nominally and had a zero exit status.

Returns:True if the process has finished successfully, False otherwise
Return type:bool
is_killed

Return whether the process was killed

Killed means the process was killed directly by the user or by the calling process being killed.

Returns:True if the process was killed, False otherwise
Return type:bool
is_terminated

Return whether the process has terminated

Terminated means that the process has reached any terminal state.

Returns:True if the process has terminated, False otherwise
Return type:bool
is_valid_cache

Return whether the node is valid for caching

Returns:True if this process node is valid to be used for caching, False otherwise
logger

Get the logger of the Calculation object, so that it also logs to the DB.

Returns:LoggerAdapter object, that works like a logger, but also has the ‘extra’ embedded
pause()[source]

Mark the process as paused by setting the corresponding attribute.

This serves only to reflect that the corresponding Process is paused and so this method should not be called by anyone but the Process instance itself.

paused

Return whether the process is paused

Returns:True if the Calculation is marked as paused, False otherwise
process_class

Return the process class that was used to create this node.

Returns:Process class
Raises:ValueError – if no process type is defined, it is an invalid process type string or cannot be resolved to load the corresponding class
process_label

Return the process label

Returns:the process label
process_state

Return the process state

Returns:the process state instance of ProcessState enum
process_status

Return the process status

The process status is a generic status message e.g. the reason it might be paused or when it is being killed

Returns:the process status
set_checkpoint(checkpoint)[source]

Set the checkpoint bundle set for the process

Parameters:state – string representation of the stepper state info
set_exception(exception)[source]

Set the exception of the process

Parameters:exception – the exception message
set_exit_message(message)[source]

Set the exit message of the process, if None nothing will be done

Parameters:message – a string message
set_exit_status(status)[source]

Set the exit status of the process

Parameters:state – an integer exit code or None, which will be interpreted as zero
set_process_label(label)[source]

Set the process label

Parameters:label – process label string
set_process_state(state)[source]

Set the process state

Parameters:state – value or instance of ProcessState enum
set_process_status(status)[source]

Set the process status

The process status is a generic status message e.g. the reason it might be paused or when it is being killed. If status is None, the corresponding attribute will be deleted.

Parameters:status – string process status
set_process_type(process_type_string)[source]

Set the process type string.

Parameters:process_type – the process type string identifying the class using this process node as storage.
unpause()[source]

Mark the process as unpaused by removing the corresponding attribute.

This serves only to reflect that the corresponding Process is unpaused and so this method should not be called by anyone but the Process instance itself.

validate_incoming(source, link_type, link_label)[source]

Validate adding a link of the given type from a given node to ourself.

Adding an input link to a ProcessNode once it is stored is illegal because this should be taken care of by the engine in one go. If a link is being added after the node is stored, it is most likely not by the engine and it should not be allowed.

Parameters:
  • source – the node from which the link is coming
  • link_type – the link type
  • link_label – the link label
Raises:
  • TypeError – if source is not a Node instance or link_type is not a LinkType enum
  • ValueError – if the proposed link is invalid