PyTrees
[About] [What's New?] [Documentation] [Getting Started] [Next Steps] [Maintainers] [Acknowledgments] [Releases]
About
PyTrees is a Python implementation of behaviour trees designed to facilitate the rapid development of medium sized decision making engines for use in fields like robotics.
Brief feature list:
- Behaviours, Decorators, Sequences, Selectors, Parallels and BehaviourTree.
- Blackboards for data sharing.
- A useful library of behaviours, decorators, and idioms.
- A more abstract ports API and XML parser for declarative behavior definitions.
- Serialise to a dot graph or render to ascii/unicode in a terminal.
- Tested on Linux and Mac (YMMV with Windows).
Documentation
Getting Started
Released versions of PyTrees can be installed directly from:
- PyPi:
pip install py_trees - conda-forge:
conda install conda-forge::py-trees
Alternatively, you can clone the repo, install uv, and you're up and running in under 5 minutes:
# Install dependencies into a .venv
$ uv sync
# Explore the demos
$ uv run py-trees-demo-<tab>-<tab>
py-trees-demo-action-behaviour py-trees-demo-context-switching py-trees-demo-logging
py-trees-demo-behaviour-lifecycle py-trees-demo-display-modes py-trees-demo-pick-up-where-you-left-off
py-trees-demo-blackboard py-trees-demo-dot-graphs py-trees-demo-selector
py-trees-demo-blackboard-namespaces py-trees-demo-either-or py-trees-demo-sequence
py-trees-demo-blackboard-remappings py-trees-demo-eternal-guard py-trees-demo-tree-stewardship
$ uv run py-trees-demo-blackboard
...
# Hack some Code
# Run the Formatter, Linter, Type-Checker and Tests
$ uv run ruff format
$ uv run ruff check
$ uv run ty check
$ uv run pytest -s tests/
# Contribute a PR!
# https://github.com/splintered-reality/py_trees/blob/devel/CONTRIBUTING.md
See DEVELOPING.md for more detail. And be froody.
Next Steps
On PyPi:
On conda-forge:
Examples:
- ReadTheDocs - PyTrees ROS Tutorials - significantly more edifying than the demos, these incrementally walk through the process of building a decision making layer for a robot. These use ROS 2 (sparsely), but merely browsing should be enlightening regardless.
Visualisation:
- py_trees_js - a javascript library for building your own runtime visualisation tool
Robotics:
- py_trees_ros - a tree manager and behaviours designed for use specifically with
ROS 2 - py_trees_ros_viewer - a
Qt/ROS 2implementation ofpy_trees_js
Maintainers
Acknowledgments
Contributors are welcome to add themselves here in future PRs.
- Port declarations, type validation, and XML parser: contributed by Sunrise Robotics.
Releases
2.6.x- Improvements to Ports API and XML file parsing, including default values and performance improvements.2.5.x- New Ports API with XML file parsing, modernized dev environment withuv, support Python 3.14.2.4.x- New ForEach decorator, new CompareBlackboardVariables behaviour, and callables in comparison expressions.2.3.x- Support for Python 3.12 was added, and Python 3.8 was dropped.2.2.x- Selectors, Sequences with and without memory. Improved testing and style/type checking.2.1.x- Chooser deprecated. API housekeeping.2.0.x- Blackboards V2!1.2.x- Trees can now shutdown cleanly. StatusToBlackboard and EternalGuard, Visitors get finalise().1.1.x- Fixes for setup, tick-tock, viz.1.0.x- Behaviours, Decorators, Composites, Blackboards, Tree Management and Viz tools.0.y.x- First open source pre-releases.
| Devel | 2.6.x | 2.5.x | 2.4.x | 2.3.x | |
|---|---|---|---|---|---|
| Sources | |||||
| Compatibility | |||||
| CI | |||||
| Documentation |
Metadata
Release files for py-trees 2.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py_trees-2.6.0.tar.gz | 8.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_trees-2.6.0-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 8.7 MB
Release files / py_trees-2.6.0.tar.gz
| Download URL | py_trees-2.6.0.tar.gz |
|---|---|
| Size | 8.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
60a5d81e1e348b0aca2c1c65a94713a2a3d87c749058bf1edfa721c53b07bde5
|
|
BLAKE2b-256 checksum How to use checksums |
4ccd592ecf58fce9b87743aab2d05dd94b57669e436d77facd4c9f1e8d4b6be7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / py_trees-2.6.0-py2.py3-none-any.whl
| Download URL | py_trees-2.6.0-py2.py3-none-any.whl |
|---|---|
| Size | 148.7 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
78155ffaf02f49de0c4bfb458488a1f766ded5b35bf1254980d8f49e6fb89837
|
|
BLAKE2b-256 checksum How to use checksums |
d2103b618ece6a776e7b7fac3dcfd0f4e2e52006c0e49d0f63fc35c5bfef3566
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|