Skip to content

Commit 83cb0eb

Browse files
author
David Conner
committed
4.1.2
1 parent 60c63fe commit 83cb0eb

25 files changed

Lines changed: 151 additions & 26 deletions

File tree

.github/workflows/flexbe_ci.yml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,22 @@ on: [push, pull_request, workflow_dispatch]
77
jobs:
88
test:
99
strategy:
10+
fail-fast: false # Run other tests to completion
1011
matrix:
1112
ros: [jazzy, kilted, rolling]
1213
include:
13-
- os: ubuntu-24.04
14-
ros: jazzy
15-
python: python3
16-
ci_branch: ros2-devel
17-
- os: ubuntu-24.04
18-
ros: kilted
19-
ci_branch: ros2-devel
20-
python: python3
21-
- os: ubuntu-24.04
22-
ros: rolling
23-
python: python3
24-
ci_branch: ros2-devel
14+
- os: ubuntu-24.04
15+
ros: jazzy
16+
python: python3
17+
ci_branch: ros2-devel
18+
- os: ubuntu-24.04
19+
ros: kilted
20+
ci_branch: ros2-devel
21+
python: python3
22+
- os: ubuntu-24.04
23+
ros: rolling
24+
python: python3
25+
ci_branch: ros2-devel
2526

2627
runs-on: ${{ matrix.os }}
2728
env:

flexbe_behavior_engine/CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
Changelog for package flexbe_behavior_engine
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
4.1.2 (2026-05-11)
6+
------------------
7+
58
4.1.1 (2026-03-25)
69
------------------
710
* bump version to 4.1.0

flexbe_behavior_engine/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package format="2">
33
<name>flexbe_behavior_engine</name>
4-
<version>4.1.1</version>
4+
<version>4.1.2</version>
55
<description>
66
A meta-package to aggregate all the FlexBE packages
77
</description>

flexbe_core/CHANGELOG.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22
Changelog for package flexbe_core
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
4.1.2 (2026-05-11)
6+
------------------
7+
* Support nested behavior source paths in BehaviorLibrary for multi-package behavior hierarchies
8+
* Convert tuple/list behavior parameters to scalar automatically; warn on unhandled conversions
9+
* Replace runtime ``assert`` statements with ``StateError`` exceptions in core state containers
10+
* Rename ``make_persistant`` to ``make_persistent`` in ProxySubscriberCached; deprecated alias retained
11+
* Fix heartbeat topic type mappings in Topics constants
12+
* Move traceback imports to module level in ConcurrencyContainer and OperatableStateMachine
13+
* Proxy shutdown and GoalStatus constant cleanup in ProxyActionClient and ProxyPublisher
14+
* Fix test assertion to verify output userdata data-contract rather than proxy object identity
15+
516
4.1.1 (2026-03-25)
617
------------------
718
* modify handling of PriorityContainer

flexbe_core/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
schematypens="http://www.w3.org/2001/XMLSchema"?>
55
<package format="3">
66
<name>flexbe_core</name>
7-
<version>4.1.1</version>
7+
<version>4.1.2</version>
88
<description>
99
flexbe_core provides the core components for the FlexBE behavior engine.
1010
</description>

flexbe_core/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name=PACKAGE_NAME,
9-
version='4.1.1',
9+
version='4.1.2',
1010
packages=find_packages(exclude=['test']),
1111
data_files=[
1212
('share/ament_index/resource_index/packages', ['resource/' + PACKAGE_NAME]),

flexbe_input/CHANGELOG.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
Changelog for package flexbe_input
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
4.1.2 (2026-05-11)
6+
------------------
7+
* add conftest.py to ignore or stub GUI operations for GitHub tests
8+
59
4.1.1 (2026-03-25)
610
------------------
711
* add test coverage across all packages

flexbe_input/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
schematypens="http://www.w3.org/2001/XMLSchema"?>
55
<package format="3">
66
<name>flexbe_input</name>
7-
<version>4.1.1</version>
7+
<version>4.1.2</version>
88
<description>
99
flexbe_input enables to send data to onboard behavior when required.
1010
</description>

flexbe_input/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name=PACKAGE_NAME,
9-
version='4.1.1',
9+
version='4.1.2',
1010
packages=find_packages(exclude=['test']),
1111
data_files=[
1212
('share/ament_index/resource_index/packages', ['resource/' + PACKAGE_NAME]),

flexbe_input/tests/conftest.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
"""pytest configuration: stub out PySide6 when it is not installed.
2+
3+
test_input_action_server.py patches every PySide6 call it makes, so the
4+
tests run correctly with lightweight stubs. test_input_gui.py exercises
5+
real widget behaviour and requires genuine PySide6, so it is excluded from
6+
collection when only stubs are present.
7+
"""
8+
import sys
9+
import types
10+
11+
try:
12+
import PySide6 # noqa: F401
13+
collect_ignore = []
14+
except ImportError:
15+
collect_ignore = ['test_input_gui.py']
16+
17+
# ------------------------------------------------------------------ #
18+
# Minimal PySide6 stubs sufficient for importing input_action_server #
19+
# and input_gui without a real Qt installation. #
20+
# ------------------------------------------------------------------ #
21+
22+
class _Signal:
23+
24+
def __init__(self, *args):
25+
pass
26+
27+
def connect(self, *args, **kwargs):
28+
pass
29+
30+
def emit(self, *args):
31+
pass
32+
33+
def _Slot(*_args, **_kwargs):
34+
def decorator(func):
35+
return func
36+
return decorator
37+
38+
class _QObject:
39+
40+
def __init__(self, *args, **kwargs):
41+
pass
42+
43+
def __getattr__(self, name):
44+
return lambda *a, **kw: None
45+
46+
class _QThread(_QObject):
47+
pass
48+
49+
class _QCoreApplication:
50+
51+
@staticmethod
52+
def quit(): # noqa: A003
53+
pass
54+
55+
class _QApplication(_QObject):
56+
pass
57+
58+
_qtcore = types.ModuleType('PySide6.QtCore')
59+
_qtcore.Signal = _Signal
60+
_qtcore.Slot = _Slot
61+
_qtcore.QThread = _QThread
62+
_qtcore.QCoreApplication = _QCoreApplication
63+
_qtcore.Qt = type('Qt', (), {'BlockingQueuedConnection': None})()
64+
_qtcore.QSize = type('QSize', (_QObject,), {})
65+
66+
_qtwidgets = types.ModuleType('PySide6.QtWidgets')
67+
_qtwidgets.QApplication = _QApplication
68+
for _cls_name in ('QComboBox', 'QLabel', 'QLineEdit', 'QMainWindow',
69+
'QPushButton', 'QVBoxLayout', 'QWidget'):
70+
setattr(_qtwidgets, _cls_name, type(_cls_name, (_QObject,), {}))
71+
72+
_pyside6 = types.ModuleType('PySide6')
73+
_pyside6.QtCore = _qtcore
74+
_pyside6.QtWidgets = _qtwidgets
75+
76+
sys.modules['PySide6'] = _pyside6
77+
sys.modules['PySide6.QtCore'] = _qtcore
78+
sys.modules['PySide6.QtWidgets'] = _qtwidgets

0 commit comments

Comments
 (0)