@@ -18,11 +18,13 @@ Brief feature list:
1818
1919## What's New?
2020
21+ * [ 2025-11-13] New ` ForEach ` decorator.
22+ * [ 2025-11-13] New ` CompareBlackboardVariables ` behaviour, with comparison expressions that allow callables.
2123* [ 2025-01-11] Support for Python 3.12 was added, and Python 3.8 was dropped.
2224
2325## Documentation
2426
25- [ ![ devel] [ docs-devel-image ]] [ docs-devel ] [ ![ 2.3.x] [ docs-2.3.x-image ]] [ docs-2.3.x ] [ ![ 2.2.x] [ docs-2.2.x-image ]] [ docs-2.2.x ] [ ![ 2.1.x] [ docs-2.1.x-image ]] [ docs-2.1.x ]
27+ [ ![ devel] [ docs-devel-image ]] [ docs-devel ] [ ![ 2.4.x ] [ docs-2.4.x-image ]] [ docs-2.4.x ] [ ![ 2. 3.x] [ docs-2.3.x-image ]] [ docs-2.3.x ] [ ![ 2.2.x] [ docs-2.2.x-image ]] [ docs-2.2.x ] [ ![ 2.1.x] [ docs-2.1.x-image ]] [ docs-2.1.x ]
2628
2729## Getting Started
2830
@@ -85,6 +87,7 @@ Robotics:
8587
8688## Releases
8789
90+ * ` 2.4.x ` - New ForEach decorator, new CompareBlackboardVariables behaviour, and callables in comparison expressions.
8891* ` 2.3.x ` - Support for Python 3.12 was added, and Python 3.8 was dropped.
8992* ` 2.2.x ` - Selectors, Sequences with and without memory. Improved testing and style/type checking.
9093* ` 2.1.x ` - Chooser deprecated. API housekeeping.
@@ -94,12 +97,12 @@ Robotics:
9497* ` 1.0.x ` - Behaviours, Decorators, Composites, Blackboards, Tree Management and Viz tools.
9598* ` 0.y.x ` - First open source pre-releases.
9699
97- | | Devel | 2.3 .x | 2.2 .x | 2.1 .x | 2.0 .x | 1.2 .x |
100+ | | Devel | 2.4 .x | 2.3 .x | 2.2 .x | 2.1 .x | 2.0 .x |
98101| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
99- | Sources | [ ![ devel] [ sources-devel-image ]] [ sources-devel ] | [ ![ 2.3 .x] [ sources-2.3 .x-image ]] [ sources-2.3 .x ] | [ ![ 2.2 .x] [ sources-2.2 .x-image ]] [ sources-2.2 .x ] | [ ![ 2.1 .x] [ sources-2.1 .x-image ]] [ sources-2.1 .x ] | [ ![ 2.0 .x] [ sources-2.0 .x-image ]] [ sources-2.0 .x ] | [ ![ 1.2. x] [ sources-1.2. x-image ]] [ sources-1.2 .x ] |
100- | Compatibility | [ ![ Python 3.12] [ python312-image ]] [ python312-docs ] <br />[ ![ Python 3.10] [ python310-image ]] [ python310-docs ] | [ ![ Python 3.12] [ python312-image ]] [ python312-docs ] <br />[ ![ Python 3.10] [ python310-image ]] [ python310-docs ] | [ ![ Python 3.10 ] [ python310 -image]] [ python310 -docs] <br />[ ![ Python 3.8 ] [ python38 -image]] [ python38 -docs] | [ ![ Python 3.6 ] [ python36 -image]] [ python36 -docs] | [ ![ Python 3.6] [ python36-image ]] [ python36-docs ] | [ ![ Python 3.6] [ python36-image ]] [ python36-docs ] | [ ![ Python 3.6] [ python36-image ]] [ python36-docs ] |
101- | CI | [ ![ devel-Status] [ devel-build-status-image ]] [ devel-build-status ] | [ ![ 2.3.x-Status] [ 2.3.x-build-status-image ]] [ 2.3.x-build-status ] | [ ![ 2.2.x-Status] [ 2.2.x-build-status-image ]] [ 2.2.x-build-status ] | - | - | - | - | - |
102- | Documentation | [ ![ devel-Docs] [ rtd-devel-image ]] [ docs-devel ] | [ ![ 2.3 .x-Docs] [ rtd-2.3 .x-image ]] [ docs-2.3 .x ] | [ ![ 2.2 .x-Docs] [ rtd-2.2 .x-image ]] [ docs-2.2 .x ] | [ ![ 2.1 .x-Docs] [ rtd-2.1 .x-image ]] [ docs-2.1 .x ] | [ ![ 2.0 .x-Docs] [ rtd-2.0 .x-image ]] [ docs-2.0 .x ] | [ ![ 1.2. x-Docs] [ rtd-1.2. x-image ]] [ docs-1.2 .x ] |
102+ | Sources | [ ![ devel] [ sources-devel-image ]] [ sources-devel ] | [ ![ 2.4 .x] [ sources-2.4 .x-image ]] [ sources-2.4 .x ] | [ ![ 2.3 .x] [ sources-2.3 .x-image ]] [ sources-2.3 .x ] | [ ![ 2.2 .x] [ sources-2.2 .x-image ]] [ sources-2.2 .x ] | [ ![ 2.1 .x] [ sources-2.1 .x-image ]] [ sources-2.1 .x ] | [ ![ 2.0. x] [ sources-2.0. x-image ]] [ sources-2.0 .x ] |
103+ | Compatibility | [ ![ Python 3.12] [ python312-image ]] [ python312-docs ] <br />[ ![ Python 3.10] [ python310-image ]] [ python310-docs ] | [ ![ Python 3.12] [ python312-image ]] [ python312-docs ] <br />[ ![ Python 3.10] [ python310-image ]] [ python310-docs ] | [ ![ Python 3.12 ] [ python312 -image]] [ python312 -docs] <br />[ ![ Python 3.10 ] [ python310 -image]] [ python310 -docs] | [ ![ Python 3.10 ] [ python310 -image]] [ python310-docs ] < br /> [ ![ Python 3.8 ] [ python38-image ]] [ python38 -docs] | [ ![ Python 3.6] [ python36-image ]] [ python36-docs ] | [ ![ Python 3.6] [ python36-image ]] [ python36-docs ] | [ ![ Python 3.6] [ python36-image ]] [ python36-docs ] |
104+ | CI | [ ![ devel-Status] [ devel-build-status-image ]] [ devel-build-status ] | [ ![ 2.4.x-Status ] [ 2.4.x-build-status-image ]] [ 2.4.x-build-status ] | [ ![ 2. 3.x-Status] [ 2.3.x-build-status-image ]] [ 2.3.x-build-status ] | [ ![ 2.2.x-Status] [ 2.2.x-build-status-image ]] [ 2.2.x-build-status ] | - | - | - | - |
105+ | Documentation | [ ![ devel-Docs] [ rtd-devel-image ]] [ docs-devel ] | [ ![ 2.4 .x-Docs] [ rtd-2.4 .x-image ]] [ docs-2.4 .x ] | [ ![ 2.3 .x-Docs] [ rtd-2.3 .x-image ]] [ docs-2.3 .x ] | [ ![ 2.2 .x-Docs] [ rtd-2.2 .x-image ]] [ docs-2.2 .x ] | [ ![ 2.1 .x-Docs] [ rtd-2.1 .x-image ]] [ docs-2.1 .x ] | [ ![ 2.0. x-Docs] [ rtd-2.0. x-image ]] [ docs-2.0 .x ] |
103106
104107
105108[ license-image ] : https://img.shields.io/badge/License-BSD%203--Clause-orange.svg?style=plastic
@@ -116,12 +119,15 @@ Robotics:
116119
117120[ devel-build-status-image ] : https://github.com/splintered-reality/py_trees/actions/workflows/pre-merge.yaml/badge.svg
118121[ devel-build-status ] : https://github.com/splintered-reality/py_trees/actions/workflows/pre-merge.yaml
122+ [ 2.4.x-build-status-image ] : https://github.com/splintered-reality/py_trees/actions/workflows/pre-merge.yaml/badge.svg??branch=release/2.4.x
123+ [ 2.4.x-build-status ] : https://github.com/splintered-reality/py_trees/actions/workflows/pre-merge.yaml
119124[ 2.3.x-build-status-image ] : https://github.com/splintered-reality/py_trees/actions/workflows/pre-merge.yaml/badge.svg??branch=release/2.3.x
120125[ 2.3.x-build-status ] : https://github.com/splintered-reality/py_trees/actions/workflows/pre-merge.yaml
121126[ 2.2.x-build-status-image ] : https://github.com/splintered-reality/py_trees/actions/workflows/pre-merge.yaml/badge.svg??branch=release/2.2.x
122127[ 2.2.x-build-status ] : https://github.com/splintered-reality/py_trees/actions/workflows/pre-merge.yaml
123128
124129[ docs-devel ] : http://py-trees.readthedocs.io/
130+ [ docs-2.4.x ] : http://py-trees.readthedocs.io/en/release-2.4.x/
125131[ docs-2.3.x ] : http://py-trees.readthedocs.io/en/release-2.3.x/
126132[ docs-2.2.x ] : http://py-trees.readthedocs.io/en/release-2.2.x/
127133[ docs-2.1.x ] : http://py-trees.readthedocs.io/en/release-2.1.x/
@@ -133,6 +139,7 @@ Robotics:
133139[ docs-0.5.x ] : http://docs.ros.org/kinetic/api/py_trees/html/
134140
135141[ docs-devel-image ] : http://img.shields.io/badge/docs-devel-brightgreen.svg?style=plastic
142+ [ docs-2.4.x-image ] : http://img.shields.io/badge/docs-2.4.x-brightgreen.svg?style=plastic
136143[ docs-2.3.x-image ] : http://img.shields.io/badge/docs-2.3.x-brightgreen.svg?style=plastic
137144[ docs-2.2.x-image ] : http://img.shields.io/badge/docs-2.2.x-brightgreen.svg?style=plastic
138145[ docs-2.1.x-image ] : http://img.shields.io/badge/docs-2.1.x-brightgreen.svg?style=plastic
@@ -144,6 +151,7 @@ Robotics:
144151[ docs-0.5.x-image ] : http://img.shields.io/badge/docs-0.5.x-brightgreen.svg?style=plastic
145152
146153[ rtd-devel-image ] : https://readthedocs.org/projects/py-trees/badge/?version=devel&style=plastic
154+ [ rtd-2.4.x-image ] : https://readthedocs.org/projects/py-trees/badge/?version=release-2.4.x&style=plastic
147155[ rtd-2.3.x-image ] : https://readthedocs.org/projects/py-trees/badge/?version=release-2.3.x&style=plastic
148156[ rtd-2.2.x-image ] : https://readthedocs.org/projects/py-trees/badge/?version=release-2.2.x&style=plastic
149157[ rtd-2.1.x-image ] : https://readthedocs.org/projects/py-trees/badge/?version=release-2.1.x&style=plastic
@@ -156,6 +164,7 @@ Robotics:
156164[ not-available-docs-image ] : http://img.shields.io/badge/docs-n/a-yellow.svg?style=plastic
157165
158166[ sources-devel ] : https://github.com/splintered-reality/py_trees/tree/devel
167+ [ sources-2.4.x ] : https://github.com/splintered-reality/py_trees/tree/release/2.4.x
159168[ sources-2.3.x ] : https://github.com/splintered-reality/py_trees/tree/release/2.3.x
160169[ sources-2.2.x ] : https://github.com/splintered-reality/py_trees/tree/release/2.2.x
161170[ sources-2.1.x ] : https://github.com/splintered-reality/py_trees/tree/release/2.1.x
@@ -167,6 +176,7 @@ Robotics:
167176[ sources-0.5.x ] : https://github.com/splintered-reality/py_trees/tree/release/0.5.x
168177
169178[ sources-devel-image ] : http://img.shields.io/badge/sources-devel-blue.svg?style=plastic
179+ [ sources-2.4.x-image ] : http://img.shields.io/badge/sources-2.4.x-blue.svg?style=plastic
170180[ sources-2.3.x-image ] : http://img.shields.io/badge/sources-2.3.x-blue.svg?style=plastic
171181[ sources-2.2.x-image ] : http://img.shields.io/badge/sources-2.2.x-blue.svg?style=plastic
172182[ sources-2.1.x-image ] : http://img.shields.io/badge/sources-2.1.x-blue.svg?style=plastic
0 commit comments