Module pypowerautomate.triggers.trigger

Expand source code
from typing import List, Dict
import uuid


class BaseTrigger:
    """
    A base class for defining triggers. Triggers are building blocks in automation workflows,
    designed to initiate actions based on specific conditions.

    Attributes:
        trigger_name (str): The name of the trigger.
        metadata (Dict): A dictionary storing metadata related to the trigger, including a unique operation metadata ID.
        type (str): The type of the trigger, to be defined in derived classes.
    """

    def __init__(self, name: str):
        """
        Initializes a new instance of the BaseTrigger class.

        Args:
            name (str): The name of the trigger.
        """
        self.trigger_name: str = name
        self.metadata: Dict = {}
        self.metadata["operationMetadataId"] = uuid.uuid4().__str__()
        self.type: str = None

    def export(self) -> Dict:
        """
        Exports the trigger's data in a dictionary format. This method should be implemented by derived classes.

        Raises:
            NotImplementedError: If the method is not overridden in a derived class.
        """
        raise NotImplementedError()

    def __repr__(self):
        return f"TriggerNode:{self.trigger_name}({self.type})"


class Triggers:
    """
    A class to aggregate multiple trigger nodes into a list structure, corresponding to the 'Triggers' field
    in a JSON schema.

    Attributes:
        nodes (List[BaseTrigger]): A list of trigger nodes.
    """

    def __init__(self, is_root: bool = False) -> None:
        """
        Initializes a new instance of the Triggers class.

        Args:
            is_root (bool): Indicates if this instance is at the root of trigger hierarchy. Defaults to False.
        """
        self.nodes: List[BaseTrigger] = []

    def append(self, new_trigger: BaseTrigger):
        """
        Appends a new trigger to the list of trigger nodes.

        Args:
            new_trigger (BaseTrigger): The trigger to be added to the nodes list.

        Raises:
            ValueError: If the trigger already exists in the nodes list.
        """
        if new_trigger in self.nodes:
            raise ValueError(f"{new_trigger} already exists in Triggers")
        self.nodes.append(new_trigger)

    def export(self) -> Dict:
        """
        Exports all trigger nodes into a dictionary format.

        Returns:
            Dict: A dictionary representation of all trigger nodes.
        """
        d = {}
        for node in self.nodes:
            d[node.trigger_name] = node.export()
        return d


class RecurrenceTrigger(BaseTrigger):
    """
    A class defining a recurrence trigger that schedules actions to occur repeatedly.

    Attributes:
        recurrence (Dict): Dictionary holding recurrence schedule details.
    """

    def __init__(self, name: str):
        """
        Initializes a new instance of the RecurrenceTrigger class.

        Args:
            name (str): The name of the trigger.
        """
        super().__init__(name)
        self.type = "Recurrence"
        self.recurrence = {}

    def set_schedule(self, frequency: str, interval: int):
        """
        Sets the recurrence schedule for the trigger.

        Args:
            frequency (str): The frequency of recurrence (e.g., 'Daily', 'Weekly').
            interval (int): The interval number between each recurrence.
        """
        self.recurrence["frequency"] = frequency
        self.recurrence["interval"] = interval

    def export(self):
        """
        Exports the recurrence trigger's data in a dictionary format.

        Returns:
            Dict: A dictionary representation of the recurrence trigger including metadata, type, and recurrence details.
        """
        d = {}
        d["metadata"] = self.metadata
        d["type"] = self.type
        d["recurrence"] = self.recurrence
        return d


class ManualTrigger(BaseTrigger):
    """
    A class defining a manual trigger, typically used for triggers that require user intervention to activate,
    such as a button press.

    Attributes:
        kind (str): The kind of manual trigger, defaults to 'Button'.
        inputs (Dict): The inputs required by the trigger, defined by a schema.
    """

    def __init__(self, name: str):
        """
        Initializes a new instance of the ManualTrigger class.

        Args:
            name (str): The name of the trigger.
        """
        super().__init__(name)
        self.type = "Request"
        self.kind = "Button"
        self.inputs = {"schema": {"type": "object", "properties": {}, "required": []}}

    def export(self):
        """
        Exports the manual trigger's data in a dictionary format.

        Returns:
            Dict: A dictionary representation of the manual trigger including metadata, type, kind, and input details.
        """
        d = {}
        d["metadata"] = self.metadata
        d["type"] = self.type
        d["kind"] = self.kind
        d["inputs"] = self.inputs
        return d

Classes

class BaseTrigger (name: str)

A base class for defining triggers. Triggers are building blocks in automation workflows, designed to initiate actions based on specific conditions.

Attributes

trigger_name : str
The name of the trigger.
metadata : Dict
A dictionary storing metadata related to the trigger, including a unique operation metadata ID.
type : str
The type of the trigger, to be defined in derived classes.

Initializes a new instance of the BaseTrigger class.

Args

name : str
The name of the trigger.
Expand source code
class BaseTrigger:
    """
    A base class for defining triggers. Triggers are building blocks in automation workflows,
    designed to initiate actions based on specific conditions.

    Attributes:
        trigger_name (str): The name of the trigger.
        metadata (Dict): A dictionary storing metadata related to the trigger, including a unique operation metadata ID.
        type (str): The type of the trigger, to be defined in derived classes.
    """

    def __init__(self, name: str):
        """
        Initializes a new instance of the BaseTrigger class.

        Args:
            name (str): The name of the trigger.
        """
        self.trigger_name: str = name
        self.metadata: Dict = {}
        self.metadata["operationMetadataId"] = uuid.uuid4().__str__()
        self.type: str = None

    def export(self) -> Dict:
        """
        Exports the trigger's data in a dictionary format. This method should be implemented by derived classes.

        Raises:
            NotImplementedError: If the method is not overridden in a derived class.
        """
        raise NotImplementedError()

    def __repr__(self):
        return f"TriggerNode:{self.trigger_name}({self.type})"

Subclasses

Methods

def export(self) ‑> Dict

Exports the trigger's data in a dictionary format. This method should be implemented by derived classes.

Raises

NotImplementedError
If the method is not overridden in a derived class.
Expand source code
def export(self) -> Dict:
    """
    Exports the trigger's data in a dictionary format. This method should be implemented by derived classes.

    Raises:
        NotImplementedError: If the method is not overridden in a derived class.
    """
    raise NotImplementedError()
class ManualTrigger (name: str)

A class defining a manual trigger, typically used for triggers that require user intervention to activate, such as a button press.

Attributes

kind : str
The kind of manual trigger, defaults to 'Button'.
inputs : Dict
The inputs required by the trigger, defined by a schema.

Initializes a new instance of the ManualTrigger class.

Args

name : str
The name of the trigger.
Expand source code
class ManualTrigger(BaseTrigger):
    """
    A class defining a manual trigger, typically used for triggers that require user intervention to activate,
    such as a button press.

    Attributes:
        kind (str): The kind of manual trigger, defaults to 'Button'.
        inputs (Dict): The inputs required by the trigger, defined by a schema.
    """

    def __init__(self, name: str):
        """
        Initializes a new instance of the ManualTrigger class.

        Args:
            name (str): The name of the trigger.
        """
        super().__init__(name)
        self.type = "Request"
        self.kind = "Button"
        self.inputs = {"schema": {"type": "object", "properties": {}, "required": []}}

    def export(self):
        """
        Exports the manual trigger's data in a dictionary format.

        Returns:
            Dict: A dictionary representation of the manual trigger including metadata, type, kind, and input details.
        """
        d = {}
        d["metadata"] = self.metadata
        d["type"] = self.type
        d["kind"] = self.kind
        d["inputs"] = self.inputs
        return d

Ancestors

Methods

def export(self)

Exports the manual trigger's data in a dictionary format.

Returns

Dict
A dictionary representation of the manual trigger including metadata, type, kind, and input details.
Expand source code
def export(self):
    """
    Exports the manual trigger's data in a dictionary format.

    Returns:
        Dict: A dictionary representation of the manual trigger including metadata, type, kind, and input details.
    """
    d = {}
    d["metadata"] = self.metadata
    d["type"] = self.type
    d["kind"] = self.kind
    d["inputs"] = self.inputs
    return d
class RecurrenceTrigger (name: str)

A class defining a recurrence trigger that schedules actions to occur repeatedly.

Attributes

recurrence : Dict
Dictionary holding recurrence schedule details.

Initializes a new instance of the RecurrenceTrigger class.

Args

name : str
The name of the trigger.
Expand source code
class RecurrenceTrigger(BaseTrigger):
    """
    A class defining a recurrence trigger that schedules actions to occur repeatedly.

    Attributes:
        recurrence (Dict): Dictionary holding recurrence schedule details.
    """

    def __init__(self, name: str):
        """
        Initializes a new instance of the RecurrenceTrigger class.

        Args:
            name (str): The name of the trigger.
        """
        super().__init__(name)
        self.type = "Recurrence"
        self.recurrence = {}

    def set_schedule(self, frequency: str, interval: int):
        """
        Sets the recurrence schedule for the trigger.

        Args:
            frequency (str): The frequency of recurrence (e.g., 'Daily', 'Weekly').
            interval (int): The interval number between each recurrence.
        """
        self.recurrence["frequency"] = frequency
        self.recurrence["interval"] = interval

    def export(self):
        """
        Exports the recurrence trigger's data in a dictionary format.

        Returns:
            Dict: A dictionary representation of the recurrence trigger including metadata, type, and recurrence details.
        """
        d = {}
        d["metadata"] = self.metadata
        d["type"] = self.type
        d["recurrence"] = self.recurrence
        return d

Ancestors

Methods

def export(self)

Exports the recurrence trigger's data in a dictionary format.

Returns

Dict
A dictionary representation of the recurrence trigger including metadata, type, and recurrence details.
Expand source code
def export(self):
    """
    Exports the recurrence trigger's data in a dictionary format.

    Returns:
        Dict: A dictionary representation of the recurrence trigger including metadata, type, and recurrence details.
    """
    d = {}
    d["metadata"] = self.metadata
    d["type"] = self.type
    d["recurrence"] = self.recurrence
    return d
def set_schedule(self, frequency: str, interval: int)

Sets the recurrence schedule for the trigger.

Args

frequency : str
The frequency of recurrence (e.g., 'Daily', 'Weekly').
interval : int
The interval number between each recurrence.
Expand source code
def set_schedule(self, frequency: str, interval: int):
    """
    Sets the recurrence schedule for the trigger.

    Args:
        frequency (str): The frequency of recurrence (e.g., 'Daily', 'Weekly').
        interval (int): The interval number between each recurrence.
    """
    self.recurrence["frequency"] = frequency
    self.recurrence["interval"] = interval
class Triggers (is_root: bool = False)

A class to aggregate multiple trigger nodes into a list structure, corresponding to the 'Triggers' field in a JSON schema.

Attributes

nodes : List[BaseTrigger]
A list of trigger nodes.

Initializes a new instance of the Triggers class.

Args

is_root : bool
Indicates if this instance is at the root of trigger hierarchy. Defaults to False.
Expand source code
class Triggers:
    """
    A class to aggregate multiple trigger nodes into a list structure, corresponding to the 'Triggers' field
    in a JSON schema.

    Attributes:
        nodes (List[BaseTrigger]): A list of trigger nodes.
    """

    def __init__(self, is_root: bool = False) -> None:
        """
        Initializes a new instance of the Triggers class.

        Args:
            is_root (bool): Indicates if this instance is at the root of trigger hierarchy. Defaults to False.
        """
        self.nodes: List[BaseTrigger] = []

    def append(self, new_trigger: BaseTrigger):
        """
        Appends a new trigger to the list of trigger nodes.

        Args:
            new_trigger (BaseTrigger): The trigger to be added to the nodes list.

        Raises:
            ValueError: If the trigger already exists in the nodes list.
        """
        if new_trigger in self.nodes:
            raise ValueError(f"{new_trigger} already exists in Triggers")
        self.nodes.append(new_trigger)

    def export(self) -> Dict:
        """
        Exports all trigger nodes into a dictionary format.

        Returns:
            Dict: A dictionary representation of all trigger nodes.
        """
        d = {}
        for node in self.nodes:
            d[node.trigger_name] = node.export()
        return d

Methods

def append(self, new_trigger: BaseTrigger)

Appends a new trigger to the list of trigger nodes.

Args

new_trigger : BaseTrigger
The trigger to be added to the nodes list.

Raises

ValueError
If the trigger already exists in the nodes list.
Expand source code
def append(self, new_trigger: BaseTrigger):
    """
    Appends a new trigger to the list of trigger nodes.

    Args:
        new_trigger (BaseTrigger): The trigger to be added to the nodes list.

    Raises:
        ValueError: If the trigger already exists in the nodes list.
    """
    if new_trigger in self.nodes:
        raise ValueError(f"{new_trigger} already exists in Triggers")
    self.nodes.append(new_trigger)
def export(self) ‑> Dict

Exports all trigger nodes into a dictionary format.

Returns

Dict
A dictionary representation of all trigger nodes.
Expand source code
def export(self) -> Dict:
    """
    Exports all trigger nodes into a dictionary format.

    Returns:
        Dict: A dictionary representation of all trigger nodes.
    """
    d = {}
    for node in self.nodes:
        d[node.trigger_name] = node.export()
    return d