Source code for kappa_sdk.user_tasks.context
from typing import Optional, Dict, Any
import json
[docs]
class Context:
    """User task context.
    Provides an ability to persist values between different runs of the User Task.
    .. automethod:: __getitem__
    .. automethod:: __setitem__
    """
[docs]
    def __init__(self, field_id: Optional[str] = None, well_id: Optional[str] = None, context_dict: Optional[Dict[str, Any]] = None, workflow_id: Optional[str] = None) -> None:
        self.__field_id: Optional[str] = field_id
        self.__well_id: Optional[str] = well_id
        self.__workflow_id: Optional[str] = workflow_id
        if context_dict is None:
            context_dict = dict()
        self._context_dict: Dict[str, Any] = context_dict 
    @property
    def field_id(self) -> Optional[str]:
        """ Gets the field id.
        """
        return self.__field_id
    @field_id.setter
    def field_id(self, value: str) -> None:
        self.__field_id = value
    @property
    def well_id(self) -> Optional[str]:
        """ Gets the well id.
        """
        return self.__well_id
    @well_id.setter
    def well_id(self, value: str) -> None:
        self.__well_id = value
    @property
    def workflow_id(self) -> Optional[str]:
        """ Gets the workflow id.
        """
        return self.__workflow_id
    @workflow_id.setter
    def workflow_id(self, value: str) -> None:
        self.__workflow_id = value
[docs]
    def __getitem__(self, key: str) -> Optional[Any]:
        """Gets the value associated with the specified string key.
        If the value could not be found, a default one is returned.
        Only string keys are supported.
        Parameters
        ----------
        key:
            The name of the key.
        Raises
        ------
        TypeError
            If key has an unexpected type.
        """
        if not isinstance(key, str):
            raise TypeError('Only string keys are supported in the user task context, but key of type {} was given instead.'.format(type(key)))
        return self._context_dict.copy().get(key) 
[docs]
    def __setitem__(self, key: str, value: Any) -> None:
        """Sets the value for the specified string key.
        Only string keys are supported.
        Parameters
        ----------
        key:
            The name of the key.
        value:
            The value to save.
        Raises
        ------
        TypeError
            If key has an unexpected type.
        """
        if not isinstance(key, str):
            raise TypeError('Only string keys are supported in the user task context, but key of type {} was given instead.'.format(type(key)))
        self._context_dict[key] = value 
[docs]
    def dumps(self) -> str:
        return json.dumps(self._context_dict, default=str)