# Path: feature_toggle/constants.py
# class Attribute(Container):
# class Environment(Container):
#     def __init__(self):
#     def __init__(self):
# 
# Path: feature_toggle/utilities.py
# def utc_now():
#     return datetime.datetime.now(tz=pytz.utc)


import datetime
import warnings
from feature_toggle.constants import Environments
from feature_toggle.utilities import utc_now
# -*- coding: utf-8 -*-





class BaseToggle(object):
    """
    Interface for implementing toggle class
    """

    class Attributes(object):
        def __init__(self, attribs):
            assert isinstance(attribs, dict)

            self.attribs = attribs

        def __getattr__(self, item):
            try:
                return self.attribs[item]
            except KeyError:
                raise AttributeError(item)

    def __init__(self, uid, name, environment, is_active, attributes=None, **kwargs):
        self.uid = uid
        self.name = name

# Path: feature_toggle/constants.py
# class Attribute(Container):
# class Environment(Container):
#     def __init__(self):
#     def __init__(self):
# 
# Path: feature_toggle/utilities.py
# def utc_now():
#     return datetime.datetime.now(tz=pytz.utc)


# Path: feature_toggle/toggle.py
import datetime
import warnings
from feature_toggle.constants import Environments
from feature_toggle.utilities import utc_now

# -*- coding: utf-8 -*-





class BaseToggle(object):
    """
    Interface for implementing toggle class
    """

    class Attributes(object):
        def __init__(self, attribs):
            assert isinstance(attribs, dict)

            self.attribs = attribs

        def __getattr__(self, item):
            try:
                return self.attribs[item]
            except KeyError:
                raise AttributeError(item)

    def __init__(self, uid, name, environment, is_active, attributes=None, **kwargs):
        self.uid = uid
        self.name = name

        assert environment in Environments