Skip to content

Commit d8847ab

Browse files
committed
feat: Support for SCXML <script>, all W3C tests imported and ~50% passing
1 parent 883854d commit d8847ab

File tree

212 files changed

+6747
-111
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

212 files changed

+6747
-111
lines changed

pyproject.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,10 @@ addopts = [
9696
]
9797
doctest_optionflags = "ELLIPSIS IGNORE_EXCEPTION_DETAIL NORMALIZE_WHITESPACE IGNORE_EXCEPTION_DETAIL"
9898
asyncio_mode = "auto"
99-
markers = ["""slow: marks tests as slow (deselect with '-m "not slow"')"""]
99+
markers = [
100+
"""slow: marks tests as slow (deselect with '-m "not slow"')""",
101+
"""scxml: marks a tests as scxml (deselect with '-m "not scxml"')""",
102+
]
100103
python_files = ["tests.py", "test_*.py", "*_tests.py"]
101104
xfail_strict = true
102105

statemachine/engines/base.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,7 @@ def put(self, trigger_data: TriggerData):
3434
self._external_queue.put(trigger_data)
3535

3636
def pop(self):
37-
try:
38-
return self._external_queue.get(block=False)
39-
except Exception:
40-
return None
37+
return self._external_queue.get(block=False)
4138

4239
def clear(self):
4340
with self._external_queue.mutex:

statemachine/event.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ def split( # type: ignore[override]
152152
return [self]
153153
return [Event(event) for event in result]
154154

155+
def match(self, event: str) -> bool:
156+
return self == event or self == "*"
157+
155158

156159
class BoundEvent(Event):
157160
pass

statemachine/event_data.py

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,6 @@
1212
from .transition import Transition
1313

1414

15-
@dataclass
16-
class _Data:
17-
kwargs: dict
18-
19-
def __getattr__(self, name):
20-
return self.kwargs.get(name, None)
21-
22-
2315
@dataclass(order=True)
2416
class TriggerData:
2517
machine: "StateMachine" = field(compare=False)
@@ -74,9 +66,6 @@ class EventData:
7466

7567
executed: bool = False
7668

77-
origintype: str = "http://www.w3.org/TR/scxml/#SCXMLEventProcessor"
78-
"""The origintype of the :ref:`Event` as specified by the SCXML namespace."""
79-
8069
def __post_init__(self):
8170
self.state = self.transition.source
8271
self.source = self.transition.source
@@ -103,13 +92,3 @@ def extended_kwargs(self):
10392
kwargs["source"] = self.source
10493
kwargs["target"] = self.target
10594
return kwargs
106-
107-
@property
108-
def data(self):
109-
"Property used by the SCXML namespace"
110-
if self.trigger_data.kwargs:
111-
return _Data(self.trigger_data.kwargs)
112-
elif self.trigger_data.args and len(self.trigger_data.args) == 1:
113-
return self.trigger_data.args[0]
114-
else:
115-
return self.trigger_data.args

statemachine/events.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def add(self, events):
3434
def match(self, event: str):
3535
if event is None and self.is_empty:
3636
return True
37-
return any(e == event or e == "*" for e in self)
37+
return any(e.match(event) for e in self)
3838

3939
def _replace(self, old, new):
4040
self._items.remove(old)

0 commit comments

Comments
 (0)