[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/dronedeploy/python-client/master/ldclient/interfaces.py [Back]  [Original]

from abc import ABCMeta, abstractmethod, abstractproperty


class FeatureStore(object):
    """
    Stores and retrieves the state of feature flags
    """
    __metaclass__ = ABCMeta

    @abstractmethod
    def get(self, key):
        """
        Gets the data for a feature flag for evaluation

        :param key: The feature flag key
        :type key: str
        :return: The feature flag data
        :rtype: dict
        """

    @abstractmethod
    def all(self):
        """
        Returns all feature flags and their data

        :rtype: dict[str, dict]
        """

    @abstractmethod
    def init(self, features):
        """
        Initializes the store with a set of feature flags.  Meant to be called by the UpdateProcessor

        :param features: The features and their data as provided by LD
        :type features: dict[str, dict]
        """

    @abstractmethod
    def delete(self, key, version):
        """
        Marks a feature flag as deleted

        :param key: The feature flag key
        :type key: str
        :param version: The version of the flag to mark as deleted
        :type version: str
        """

    @abstractmethod
    def upsert(self, key, feature):
        """
        Inserts a feature flag if its version is newer or missing

        :param key: The feature flag
        :type key: str
        :param feature: The feature information
        :type feature: dict
        """

    @abstractproperty
    def initialized(self):
        """
        Returns whether the store has been initialized yet or not

        :rtype: bool
        """


class BackgroundOperation(object):
    """
    Performs a task in the background
    """

    # noinspection PyMethodMayBeStatic
    def start(self):
        """
        Starts an operation in the background.  Should return immediately and not block.
        """
        pass

    def stop(self):
        """
        Stops an operation running in the background.  May return before the operation is actually stopped.
        """
        pass

    # noinspection PyMethodMayBeStatic
    def is_alive(self):
        """
        Returns whether the operation is alive or not
        :rtype: bool
        """
        return True


class UpdateProcessor(BackgroundOperation):
    """
    Responsible for retrieving Feature Flag updates from LaunchDarkly and saving them to the feature store
    """
    __metaclass__ = ABCMeta

    def initialized(self):
        """
        Returns whether the update processor has received feature flags and has initialized its feature store.
        :rtype: bool
        """


class EventConsumer(BackgroundOperation):
    """
    Consumes events from the client and sends them to LaunchDarkly
    """
    __metaclass__ = ABCMeta

    @abstractmethod
    def flush(self):
        """
        Flushes any outstanding events immediately.
        """


class FeatureRequester(object):
    """
    Requests features.
    """
    __metaclass__ = ABCMeta

    def get_all(self):
        """
        Gets all feature flags.
        """
        pass

    def get_one(self, key):
        """
        Gets one Feature flag
        :return:
        """
        pass

Web Proxy Viewer  |  New URL  |  Original Page