# Path: botoflow/history_events/event_bases.py
# class ActivityEventBase(EventBase):
#     pass
# 
# class ChildWorkflowEventBase(EventBase):
#     pass
# 
# class DecisionEventBase(EventBase):
#     """
#     To be used as a mixin with events that represent decisions
#     """
#     pass
# 
# class ExternalWorkflowEventBase(EventBase):
#     pass
# 
# class WorkflowEventBase(EventBase):
#     pass
# 
# class TimerEventBase(EventBase):
#     pass
# 
# class EventBase(object):
# 
#     def __init__(self, event_id, datetime, attributes):
#         """
#         :param event_id: event id
#         :type event_id: int
#         :param datetime: datetime of event
#         :type datetime: datetime.datetime
#         :param attributes: event attributes
#         :type attributes: dict
#         """
#         self.id = event_id
#         self.datetime = datetime
#         self.attributes = attributes
# 
#     def __repr__(self):
#         return "<{0} id={1}, time={2}, attributes={3}>".format(
#             self.__class__.__name__, self.id, self.datetime,
#             self.attributes)
# 
# class MarkerEventBase(EventBase):
#     pass
# 
# class DecisionTaskEventBase(EventBase):
#     pass


import logging
import six
from .event_bases import (ActivityEventBase, ChildWorkflowEventBase,
                          DecisionEventBase, ExternalWorkflowEventBase,
                          WorkflowEventBase, TimerEventBase, EventBase,
                          MarkerEventBase, DecisionTaskEventBase)
class WorkflowExecutionCompleted(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionCompletedEventAttributes'


class WorkflowExecutionContinuedAsNew(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionContinuedAsNewEventAttributes'


class WorkflowExecutionFailed(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionFailedEventAttributes'


class WorkflowExecutionStarted(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionStartedEventAttributes'


class WorkflowExecutionSignaled(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionSignaledEventAttributes'


class WorkflowExecutionTimedOut(WorkflowEventBase):
    attribute_key = 'workflowExecutionTimedOutEventAttributes'

# extract event classes from the module into a name dictionary
_event_type_name_to_class = dict()


def _set_event_type_name_to_class():
    for name, value in six.iteritems(globals()):
        try:

# Path: botoflow/history_events/event_bases.py
# class ActivityEventBase(EventBase):
#     pass
# 
# class ChildWorkflowEventBase(EventBase):
#     pass
# 
# class DecisionEventBase(EventBase):
#     """
#     To be used as a mixin with events that represent decisions
#     """
#     pass
# 
# class ExternalWorkflowEventBase(EventBase):
#     pass
# 
# class WorkflowEventBase(EventBase):
#     pass
# 
# class TimerEventBase(EventBase):
#     pass
# 
# class EventBase(object):
# 
#     def __init__(self, event_id, datetime, attributes):
#         """
#         :param event_id: event id
#         :type event_id: int
#         :param datetime: datetime of event
#         :type datetime: datetime.datetime
#         :param attributes: event attributes
#         :type attributes: dict
#         """
#         self.id = event_id
#         self.datetime = datetime
#         self.attributes = attributes
# 
#     def __repr__(self):
#         return "<{0} id={1}, time={2}, attributes={3}>".format(
#             self.__class__.__name__, self.id, self.datetime,
#             self.attributes)
# 
# class MarkerEventBase(EventBase):
#     pass
# 
# class DecisionTaskEventBase(EventBase):
#     pass


# Path: botoflow/history_events/events.py
import logging
import six
from .event_bases import (ActivityEventBase, ChildWorkflowEventBase,
                          DecisionEventBase, ExternalWorkflowEventBase,
                          WorkflowEventBase, TimerEventBase, EventBase,
                          MarkerEventBase, DecisionTaskEventBase)

class WorkflowExecutionCompleted(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionCompletedEventAttributes'


class WorkflowExecutionContinuedAsNew(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionContinuedAsNewEventAttributes'


class WorkflowExecutionFailed(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionFailedEventAttributes'


class WorkflowExecutionStarted(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionStartedEventAttributes'


class WorkflowExecutionSignaled(WorkflowEventBase, DecisionEventBase):
    attribute_key = 'workflowExecutionSignaledEventAttributes'


class WorkflowExecutionTimedOut(WorkflowEventBase):
    attribute_key = 'workflowExecutionTimedOutEventAttributes'

# extract event classes from the module into a name dictionary
_event_type_name_to_class = dict()


def _set_event_type_name_to_class():
    for name, value in six.iteritems(globals()):
        try:

            if issubclass(value, EventBase):