File: utils.py

package info (click to toggle)
python-transitions 0.9.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,728 kB
  • sloc: python: 8,765; makefile: 10; sh: 7
file content (118 lines) | stat: -rw-r--r-- 2,637 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
from transitions import Machine


class Stuff(object):

    is_false = False
    is_True = True

    def __init__(self, states=None, machine_cls=Machine, extra_kwargs={}):

        self.state = None
        self.message = None
        states = ['A', 'B', 'C', 'D', 'E', 'F'] if states is None else states

        args = [self]
        kwargs = {
            'states': states,
            'initial': 'A',
            'name': 'Test Machine',
        }
        kwargs.update(extra_kwargs)
        if machine_cls is not None:
            self.machine = machine_cls(*args, **kwargs)
        self.level = 1
        self.transitions = 0
        self.machine_cls = machine_cls

    @staticmethod
    def this_passes():
        return True

    @staticmethod
    def this_fails():
        return False

    @staticmethod
    def this_raises(exception, *args, **kwargs):
        raise exception

    @staticmethod
    def this_fails_by_default(boolean=False):
        return boolean

    @staticmethod
    def extract_boolean(event_data):
        return event_data.kwargs['boolean']

    def goodbye(self):
        self.message = "So long, suckers!"

    def hello_world(self):
        self.message = "Hello World!"

    def greet(self):
        self.message = "Hi"

    def meet(self):
        self.message = "Nice to meet you"

    def hello_F(self):
        if self.message is None:
            self.message = ''
        self.message += "Hello F!"

    def increase_level(self):
        self.level += 1
        self.transitions += 1

    def decrease_level(self):
        self.level -= 1
        self.transitions += 1

    def set_message(self, message="Hello World!"):
        self.message = message

    def extract_message(self, event_data):
        self.message = event_data.kwargs['message']

    def on_enter_E(self, msg=None):
        self.message = "I am E!" if msg is None else msg

    def on_exit_E(self):
        self.exit_message = "E go home..."

    def on_enter_F(self):
        self.message = "I am F!"

    @property
    def property_that_fails(self):
        return self.is_false


class InheritedStuff(Machine):

    def __init__(self, states, initial='A'):

        self.state = None

        Machine.__init__(self, states=states, initial=initial)

    @staticmethod
    def this_passes():
        return True


class DummyModel(object):
    pass


class SomeContext(object):
    def __init__(self, event_list):
        self._event_list = event_list

    def __enter__(self):
        self._event_list.append((self, "enter"))

    def __exit__(self, type, value, traceback):
        self._event_list.append((self, "exit"))