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 | Provenance | Actions |
|---|---|---|---|---|
| py_trees-2.6.0.tar.gz | 8.5 MB | Without provenance | Details for py_trees-2.6.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| py_trees-2.6.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details for py_trees-2.6.0-py2.py3-none-any.whl |
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}
|
Security for py-trees 2.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.