pynenc.trigger.conditions.composite

Composite condition that combines multiple trigger conditions.

This condition allows combining multiple conditions with either AND or OR logic, enabling complex triggering scenarios where tasks are triggered only when all conditions are met (AND) or when any condition is met (OR).

Module Contents

Classes

CompositeLogic

Logic operators for combining multiple conditions.

CompositeCondition

Combines multiple trigger conditions with logic operators.

API

class pynenc.trigger.conditions.composite.CompositeLogic[source]

Bases: enum.StrEnum

Logic operators for combining multiple conditions.

Initialization

Initialize self. See help(type(self)) for accurate signature.

AND

‘auto(…)’

OR

‘auto(…)’

class pynenc.trigger.conditions.composite.CompositeCondition(conditions: list[pynenc.trigger.conditions.base.TriggerCondition], logic: pynenc.trigger.conditions.composite.CompositeLogic = CompositeLogic.AND)[source]

Bases: pynenc.trigger.conditions.base.TriggerCondition[pynenc.trigger.conditions.base.ConditionContext]

Combines multiple trigger conditions with logic operators.

This condition allows for complex trigger expressions by combining multiple conditions using AND/OR logic.

Initialization

Create a composite condition that combines multiple trigger conditions.

Parameters:
  • conditions – List of trigger conditions to combine

  • logic – Logic operator to use (AND or OR)

Raises:

ValueError – If no conditions are provided

context_type: ClassVar[type[pynenc.trigger.conditions.base.ConditionContext]]

‘cast(…)’

property condition_id: str

Generate a unique ID for this composite condition.

Returns:

A string ID based on the logic type and component conditions

get_source_task_ids() set[pynenc.identifiers.task_id.TaskId][source]

Get the task IDs of all source tasks for this composite condition.

Returns:

Set of task IDs

_to_json(app: pynenc.app.Pynenc) dict[str, Any][source]

Create a serializable representation of this composite condition.

Parameters:

app – Pynenc application instance for serializing complex arguments

Returns:

Dictionary with serialized condition data

classmethod _from_json(data: dict[str, Any], app: pynenc.app.Pynenc) pynenc.trigger.conditions.composite.CompositeCondition[source]

Create a CompositeCondition from parsed JSON data.

Parameters:
  • data – Dictionary with condition data

  • app – Pynenc application instance for deserializing complex arguments

Returns:

A new CompositeCondition instance

Raises:

ValueError – If the data is invalid for this condition type

_is_satisfied_by(context: pynenc.trigger.conditions.base.ConditionContext) bool[source]

Check if this composite condition is satisfied by the context.

For AND logic, all child conditions must be satisfied. For OR logic, at least one child condition must be satisfied.

Parameters:

context – Context to evaluate conditions against

Returns:

True if the composite condition is satisfied

affects_task(task_id: pynenc.identifiers.task_id.TaskId) bool[source]

Check if this condition is affected by a specific task.

A composite condition is affected if any of its child conditions are affected.

Parameters:

task_id – ID of the task to check

Returns:

True if any child condition is affected by the task