aiida.orm.nodes.process package#

Module with Node sub classes for processes.

Subpackages#

Submodules#

Module with Node sub class for processes.

class aiida.orm.nodes.process.process.ProcessNode(backend: StorageBackend | None = None, user: User | None = None, computer: Computer | None = None, **kwargs: Any)[源代码]#

基类:Sealable, 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'#
METADATA_INPUTS_KEY: str = 'metadata_inputs'#
PROCESS_LABEL_KEY = 'process_label'#
PROCESS_PAUSED_KEY = 'paused'#
PROCESS_STATE_KEY = 'process_state'#
PROCESS_STATUS_KEY = 'process_status'#
_CLS_NODE_CACHING#

ProcessNodeCaching 的别名

ProcessNodeLinks 的别名

__abstractmethods__ = frozenset({})#
__annotations__ = {'METADATA_INPUTS_KEY': <class 'str'>, '_CLS_COLLECTION': 'Type[CollectionType]', '__plugin_type_string': 'ClassVar[str]', '__qb_fields__': 'Sequence[QbField]', '__query_type_string': 'ClassVar[str]', '_hash_ignored_attributes': 'Tuple[str, ...]', '_logger': 'Optional[Logger]', '_updatable_attributes': 'Tuple[str, ...]', 'fields': 'QbFields'}#
__module__ = 'aiida.orm.nodes.process.process'#
__parameters__ = ()#
__qb_fields__: Sequence[QbField] = [QbStrField('process_type', dtype=Optional[str], is_attribute=True), QbNumericField('computer_pk', dtype=Optional[int], is_attribute=True), QbStrField('process_label', dtype=Optional[str], is_attribute=True), QbStrField('process_state', dtype=Optional[str], is_attribute=True), QbStrField('process_status', dtype=Optional[str], is_attribute=True), QbNumericField('exit_status', dtype=Optional[int], is_attribute=True), QbStrField('exit_message', dtype=Optional[str], is_attribute=True), QbStrField('exception', dtype=Optional[str], is_attribute=True), QbField('paused', dtype=bool, is_attribute=True)]#
__str__() str[源代码]#

Return str(self).

_abc_impl = <_abc._abc_data object>#
_hash_ignored_attributes: Tuple[str, ...] = ('metadata_inputs',)#
_logger: Logger | None = <Logger aiida.orm.nodes.process.process.ProcessNode (WARNING)>#
_unstorable_message = 'only Data, WorkflowNode, CalculationNode or their subclasses can be stored'#
_updatable_attributes: Tuple[str, ...] = ('sealed', 'paused', 'checkpoints', 'exception', 'exit_message', 'exit_status', 'process_label', 'process_state', 'process_status')#
property called: List[ProcessNode]#

Return a list of nodes that the process called

返回:

list of process nodes called by this process

property called_descendants: List[ProcessNode]#

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.

property caller: ProcessNode | None#

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

返回:

process node that called this process node instance or None

property checkpoint: str | None#

Return the checkpoint bundle set for the process

返回:

checkpoint bundle if it exists, None otherwise

delete_checkpoint() None[源代码]#

Delete the checkpoint bundle set for the process

property exception: str | None#

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.

返回:

the exception message or None

property exit_code: ExitCode | None#

Return the exit code of the process.

It is reconstituted from the exit_status and exit_message attributes if both of those are defined.

返回:

The exit code if defined, or None.

property exit_message: str | None#

Return the exit message of the process

返回:

the exit message

property exit_status: int | None#

Return the exit status of the process

返回:

the exit status, an integer exit code or None

fields: QbFields = {'attributes': 'QbDictField(attributes.*) -> Dict[str, Any]',  'computer_pk': 'QbNumericField(attributes.computer_pk) -> Optional[int]',  'ctime': 'QbNumericField(ctime) -> datetime',  'description': 'QbStrField(description) -> str',  'exception': 'QbStrField(attributes.exception) -> Optional[str]',  'exit_message': 'QbStrField(attributes.exit_message) -> Optional[str]',  'exit_status': 'QbNumericField(attributes.exit_status) -> Optional[int]',  'extras': 'QbDictField(extras.*) -> Dict[str, Any]',  'label': 'QbStrField(label) -> str',  'mtime': 'QbNumericField(mtime) -> datetime',  'node_type': 'QbStrField(node_type) -> str',  'paused': 'QbField(attributes.paused) -> bool',  'pk': 'QbNumericField(pk) -> int',  'process_label': 'QbStrField(attributes.process_label) -> Optional[str]',  'process_state': 'QbStrField(attributes.process_state) -> Optional[str]',  'process_status': 'QbStrField(attributes.process_status) -> Optional[str]',  'process_type': 'QbStrField(attributes.process_type) -> Optional[str]',  'repository_metadata': 'QbDictField(repository_metadata) -> Dict[str, Any]',  'sealed': 'QbField(attributes.sealed) -> bool',  'user_pk': 'QbNumericField(user_pk) -> int',  'uuid': 'QbStrField(uuid) -> str'}#
get_builder_restart() ProcessBuilder[源代码]#

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.

返回:

~aiida.engine.processes.builder.ProcessBuilder instance

get_metadata_inputs() Dict[str, Any] | None[源代码]#

Return the mapping of inputs corresponding to metadata ports that were passed to the process.

property is_excepted: bool#

Return whether the process has excepted

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

返回:

True if during execution of the process an exception occurred, False otherwise

返回类型:

bool

property is_failed: bool#

Return whether the process has failed

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

返回:

True if the process has failed, False otherwise

返回类型:

bool

property is_finished: bool#

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.

返回:

True if the process has finished, False otherwise

返回类型:

bool

property is_finished_ok: bool#

Return whether the process has finished successfully

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

返回:

True if the process has finished successfully, False otherwise

返回类型:

bool

property is_killed: bool#

Return whether the process was killed

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

返回:

True if the process was killed, False otherwise

返回类型:

bool

property is_terminated: bool#

Return whether the process has terminated

Terminated means that the process has reached any terminal state.

返回:

True if the process has terminated, False otherwise

返回类型:

bool

property logger#

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

返回:

LoggerAdapter object, that works like a logger, but also has the ‘extra’ embedded

pause() None[源代码]#

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.

property paused: bool#

Return whether the process is paused

返回:

True if the Calculation is marked as paused, False otherwise

property process_class: Type[Process]#

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

返回:

Process class

抛出:

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

property process_label: str | None#

Return the process label

返回:

the process label

property process_state: ProcessState | None#

Return the process state

返回:

the process state instance of ProcessState enum

property process_status: str | None#

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

返回:

the process status

classmethod recursive_merge(left: dict[Any, Any], right: dict[Any, Any]) None[源代码]#

Recursively merge the right dictionary into the left dictionary.

参数:
  • left – Base dictionary.

  • right – Dictionary to recurisvely merge on top of left dictionary.

set_checkpoint(checkpoint: str) None[源代码]#

Set the checkpoint bundle set for the process

参数:

state – string representation of the stepper state info

set_exception(exception: str) None[源代码]#

Set the exception of the process

参数:

exception – the exception message

set_exit_message(message: str | None) None[源代码]#

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

参数:

message – a string message

set_exit_status(status: None | Enum | int) None[源代码]#

Set the exit status of the process

参数:

state – an integer exit code or None, which will be interpreted as zero

set_metadata_inputs(value: Dict[str, Any]) None[源代码]#

Set the mapping of inputs corresponding to metadata ports that were passed to the process.

set_process_label(label: str) None[源代码]#

Set the process label

参数:

label – process label string

set_process_state(state: str | ProcessState | None)[源代码]#

Set the process state

参数:

state – value or instance of ProcessState enum

set_process_status(status: str | None) None[源代码]#

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.

参数:

status – string process status

set_process_type(process_type_string: str) None[源代码]#

Set the process type string.

参数:

process_type – the process type string identifying the class using this process node as storage.

unpause() None[源代码]#

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.

class aiida.orm.nodes.process.process.ProcessNodeCaching(node: Node)[源代码]#

基类:NodeCaching

Interface to control caching of a node instance.

__annotations__ = {}#
__module__ = 'aiida.orm.nodes.process.process'#
_get_objects_to_hash() List[Any][源代码]#

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

_hash_ignored_inputs = ['CALL_CALC', 'CALL_WORK']#
property is_valid_cache: bool#

Return whether the node is valid for caching

返回:

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

should_use_cache() bool[源代码]#

Return whether the cache should be considered when storing this node.

返回:

True if the cache should be considered, False otherwise.

基类:NodeLinks

Interface for links of a node instance.

__annotations__ = {}#
__module__ = 'aiida.orm.nodes.process.process'#
validate_incoming(source: Node, link_type: LinkType, link_label: str) None[源代码]#

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.

参数:
  • source – the node from which the link is coming

  • link_type – the link type

  • link_label – the link label

抛出:
  • TypeError – if source is not a Node instance or link_type is not a LinkType enum

  • ValueError – if the proposed link is invalid

validate_outgoing(target, link_type, link_label)[源代码]#

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

Adding an outgoing link from a sealed node is forbidden.

参数:
  • target – the node to which the link is going

  • link_type – the link type

  • link_label – the link label

抛出:

aiida.common.ModificationNotAllowed – if the source node (self) is sealed