Skip to content

Commit

Permalink
added rudimentary logging
Browse files Browse the repository at this point in the history
  • Loading branch information
tyarkoni committed Jul 26, 2015
1 parent aaae9dc commit a17617e
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
3 changes: 2 additions & 1 deletion tests/test_transitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
from builtins import object
except ImportError:
pass
from transitions.core import Machine, State, MachineError

from transitions import Machine, State, MachineError
from unittest import TestCase


Expand Down
3 changes: 2 additions & 1 deletion transitions/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
from __future__ import absolute_import
from .core import State, Transition, Event, EventData, Machine, MachineError
from .core import (State, Transition, Event, EventData, Machine, MachineError,
logger)
12 changes: 12 additions & 0 deletions transitions/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
from collections import defaultdict, OrderedDict
from six import string_types

import logging
logging.basicConfig()
logger = logging.getLogger(__name__)


def listify(obj):
return obj if isinstance(obj, (list, type(None))) else [obj]
Expand Down Expand Up @@ -39,12 +43,14 @@ def enter(self, event_data):
for oe in self.on_enter:
event_data.machine.callback(
getattr(event_data.model, oe), event_data)
logger.info("Entered state %s", self.name)

def exit(self, event_data):
""" Triggered when a state is exited. """
for oe in self.on_exit:
event_data.machine.callback(
getattr(event_data.model, oe), event_data)
logger.info("Exited state %s", self.name)

def add_callback(self, trigger, func):
""" Add a new enter or exit callback.
Expand Down Expand Up @@ -107,19 +113,25 @@ def execute(self, event_data):
Args:
event: An instance of class EventData.
"""
logger.info("Initiating transition from state %s to state %s...",
self.source, self.dest)
machine = event_data.machine
for c in self.conditions:
if not c.check(event_data.model):
logger.info("Transition condition failed: %s() does not " +
"return %s. Transition halted.", c.func, c.target)
return False

for func in self.before:
machine.callback(getattr(event_data.model, func), event_data)
logger.info("Executing callback '%s' before transition.", func)
machine.get_state(self.source).exit(event_data)
machine.set_state(self.dest)
event_data.update()
machine.get_state(self.dest).enter(event_data)
for func in self.after:
machine.callback(getattr(event_data.model, func), event_data)
logger.info("Executed callback '%s' after transition.", func)
return True

def add_callback(self, trigger, func):
Expand Down

0 comments on commit a17617e

Please sign in to comment.