mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-01 21:23:51 -09:00
package/python-transitions: new package
Lightweight finite state machine implementation in Python. https://github.com/pytransitions/transitions Signed-off-by: Vincent Cruz <mooz@blockos.org> [Julien: - remove directory for LICENSE in hash file - remove PKG-INFO entry in hash file ] Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
374e31947a
commit
f3d0050e3d
@@ -3361,6 +3361,9 @@ F: package/rtl8822cs/
|
|||||||
N: Victor Huesca <victor.huesca@bootlin.com>
|
N: Victor Huesca <victor.huesca@bootlin.com>
|
||||||
F: support/testing/tests/core/test_root_password.py
|
F: support/testing/tests/core/test_root_password.py
|
||||||
|
|
||||||
|
N: Vincent Cruz <mooz@blockos.org>
|
||||||
|
F: package/python-transitions/
|
||||||
|
|
||||||
N: Vincent Jardin <vjardin@free.fr>
|
N: Vincent Jardin <vjardin@free.fr>
|
||||||
F: board/nvidia/bf3/
|
F: board/nvidia/bf3/
|
||||||
F: configs/nvidia_bf3_defconfig
|
F: configs/nvidia_bf3_defconfig
|
||||||
|
|||||||
@@ -1463,6 +1463,7 @@ menu "External python modules"
|
|||||||
source "package/python-tqdm/Config.in"
|
source "package/python-tqdm/Config.in"
|
||||||
source "package/python-trafaret/Config.in"
|
source "package/python-trafaret/Config.in"
|
||||||
source "package/python-traitlets/Config.in"
|
source "package/python-traitlets/Config.in"
|
||||||
|
source "package/python-transitions/Config.in"
|
||||||
source "package/python-treq/Config.in"
|
source "package/python-treq/Config.in"
|
||||||
source "package/python-trio/Config.in"
|
source "package/python-trio/Config.in"
|
||||||
source "package/python-trio-websocket/Config.in"
|
source "package/python-trio-websocket/Config.in"
|
||||||
|
|||||||
7
package/python-transitions/Config.in
Normal file
7
package/python-transitions/Config.in
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
config BR2_PACKAGE_PYTHON_TRANSITIONS
|
||||||
|
bool "python-transitions"
|
||||||
|
select BR2_PACKAGE_PYTHON_SIX # runtime
|
||||||
|
help
|
||||||
|
Lightweight finite state machine implementation in Python.
|
||||||
|
|
||||||
|
https://github.com/pytransitions/transitions
|
||||||
4
package/python-transitions/python-transitions.hash
Normal file
4
package/python-transitions/python-transitions.hash
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# From https://pypi.org/pypi/transitions/0.9.3/json
|
||||||
|
sha256 881fb75bb1654ed55d86060bb067f2c716f8e155f57bb73fd444e53713aafec8 transitions-0.9.3.tar.gz
|
||||||
|
# Locally computed
|
||||||
|
sha256 fd7115fc5517d1d2d042a80a33d92033532236830a9c25866112299fe33c036b LICENSE
|
||||||
15
package/python-transitions/python-transitions.mk
Normal file
15
package/python-transitions/python-transitions.mk
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# python-transitions
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
PYTHON_TRANSITIONS_VERSION = 0.9.3
|
||||||
|
PYTHON_TRANSITIONS_SOURCE = transitions-$(PYTHON_TRANSITIONS_VERSION).tar.gz
|
||||||
|
PYTHON_TRANSITIONS_SITE = https://files.pythonhosted.org/packages/source/t/transitions
|
||||||
|
PYTHON_TRANSITIONS_SETUP_TYPE = setuptools
|
||||||
|
|
||||||
|
PYTHON_TRANSITIONS_LICENSE = MIT
|
||||||
|
PYTHON_TRANSITIONS_LICENSE_FILES = LICENSE
|
||||||
|
|
||||||
|
$(eval $(python-package))
|
||||||
34
support/testing/tests/package/sample_python_transitions.py
Normal file
34
support/testing/tests/package/sample_python_transitions.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# test from https://github.com/pytransitions/transitions/blob/master/tests/test_nesting.py
|
||||||
|
|
||||||
|
from transitions.extensions import HierarchicalMachine as Machine
|
||||||
|
|
||||||
|
states = ['standing', 'walking', {'name': 'caffeinated', 'children': ['dithering', 'running']}]
|
||||||
|
transitions = [
|
||||||
|
['walk', 'standing', 'walking'],
|
||||||
|
['stop', 'walking', 'standing'],
|
||||||
|
['drink', 'caffeinated_dithering', '='],
|
||||||
|
['drink', 'caffeinated', 'caffeinated_dithering'],
|
||||||
|
['drink', '*', 'caffeinated'],
|
||||||
|
['walk', 'caffeinated', 'caffeinated_running'],
|
||||||
|
['relax', 'caffeinated', 'standing']
|
||||||
|
]
|
||||||
|
|
||||||
|
machine = Machine(states=states, transitions=transitions, initial='standing', ignore_invalid_triggers=True)
|
||||||
|
|
||||||
|
machine.walk() # Walking now
|
||||||
|
machine.stop() # let's stop for a moment
|
||||||
|
machine.drink() # coffee time
|
||||||
|
machine.state
|
||||||
|
print(machine.state)
|
||||||
|
machine.drink() # again!
|
||||||
|
print(machine.state)
|
||||||
|
machine.drink() # and again!
|
||||||
|
print(machine.state)
|
||||||
|
machine.walk() # we have to go faster
|
||||||
|
print(machine.state)
|
||||||
|
machine.stop() # can't stop moving!
|
||||||
|
machine.state
|
||||||
|
print(machine.state)
|
||||||
|
machine.relax() # leave nested state
|
||||||
|
machine.state # phew, what a ride
|
||||||
|
print(machine.state)
|
||||||
29
support/testing/tests/package/test_python_transitions.py
Normal file
29
support/testing/tests/package/test_python_transitions.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
from tests.package.test_python import TestPythonPackageBase
|
||||||
|
|
||||||
|
|
||||||
|
class TestPythonTransitions(TestPythonPackageBase):
|
||||||
|
__test__ = True
|
||||||
|
config = TestPythonPackageBase.config + \
|
||||||
|
"""
|
||||||
|
BR2_PACKAGE_PYTHON3=y
|
||||||
|
BR2_PACKAGE_PYTHON_TRANSITIONS=y
|
||||||
|
"""
|
||||||
|
sample_scripts = ["tests/package/sample_python_transitions.py"]
|
||||||
|
|
||||||
|
def test_run(self):
|
||||||
|
self.login()
|
||||||
|
self.check_sample_scripts_exist()
|
||||||
|
|
||||||
|
cmd = self.interpreter + " " + os.path.basename(self.sample_scripts[0])
|
||||||
|
output, exit_code = self.emulator.run(cmd, timeout=15)
|
||||||
|
self.assertEqual(exit_code, 0)
|
||||||
|
self.assertEqual(output, [
|
||||||
|
'caffeinated',
|
||||||
|
'caffeinated_dithering',
|
||||||
|
'caffeinated_dithering',
|
||||||
|
'caffeinated_running',
|
||||||
|
'caffeinated_running',
|
||||||
|
'standing'
|
||||||
|
])
|
||||||
Reference in New Issue
Block a user