# Path: swf/utils.py
# class Enum(object):
# class _CachedProperty(property):
#     class immutableclass(mutableclass):
#     def __init__(self, *sequential, **named):
#     def __contains__(self, key):
#     def has_member(self, member):
# def get_subkey(d, key_path):
#     def __init__(self, fget, fset=None, fdel=None, doc=None):
#     def _wrap_fget(self, fget):
#         def do_fget(obj):
#     def _wrap_fset(self, fset):
#         def do_fset(obj, value):
#     def _wrap_fdel(self, fdel):
#         def do_fdel(obj):
# def immutable(mutableclass):
#         def __new__(cls, *args, **kw):
#         def __init__(self, *args, **kw):    # Prevent re-init after __new__
# def camel_to_underscore(string):
# def underscore_to_camel(string):


import json
from datetime import datetime
from swf.utils import camel_to_underscore, cached_property
    def id(self):
        return self._id

    @property
    def type(self):
        return self._type

    @property
    def name(self):
        return self._name

    @property
    def state(self):
        return self._state

    @cached_property
    def timestamp(self):
        return datetime.fromtimestamp(self._timestamp)

    @property
    def input(self):
        return self._input

    @input.setter
    def input(self, value):
        self._input = json.loads(value)

    def process_attributes(self):
        """Processes the event raw_data attributes_key elements
        and sets current instance attributes accordingly"""

# Path: swf/utils.py
# class Enum(object):
# class _CachedProperty(property):
#     class immutableclass(mutableclass):
#     def __init__(self, *sequential, **named):
#     def __contains__(self, key):
#     def has_member(self, member):
# def get_subkey(d, key_path):
#     def __init__(self, fget, fset=None, fdel=None, doc=None):
#     def _wrap_fget(self, fget):
#         def do_fget(obj):
#     def _wrap_fset(self, fset):
#         def do_fset(obj, value):
#     def _wrap_fdel(self, fdel):
#         def do_fdel(obj):
# def immutable(mutableclass):
#         def __new__(cls, *args, **kw):
#         def __init__(self, *args, **kw):    # Prevent re-init after __new__
# def camel_to_underscore(string):
# def underscore_to_camel(string):


# Path: swf/models/event/base.py
import json
from datetime import datetime
from swf.utils import camel_to_underscore, cached_property

    def id(self):
        return self._id

    @property
    def type(self):
        return self._type

    @property
    def name(self):
        return self._name

    @property
    def state(self):
        return self._state

    @cached_property
    def timestamp(self):
        return datetime.fromtimestamp(self._timestamp)

    @property
    def input(self):
        return self._input

    @input.setter
    def input(self, value):
        self._input = json.loads(value)

    def process_attributes(self):
        """Processes the event raw_data attributes_key elements
        and sets current instance attributes accordingly"""

        for key, value in self.raw[self._attributes_key].iteritems():