Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ access to repository contents and uses no repository secrets.
Runs on pull requests, pushes to `main` or `stable`, manual dispatch, and daily at 02:00 UTC
(10:00 China Standard Time). Scheduled runs use the default branch. Each job installs the uv
workspace with Git LFS assets on Linux, the supported public CI environment.
The configured matrix includes Python 3.10, 3.11, 3.12, and 3.13 for every suite below.
Python 3.10 uses `--all`; the other versions omit the Unitree hardware plugin and ignore
`motrix_deploy_unitree` tests.

PR and push runs have two independent, parallel jobs:
PR and push runs have two independent, parallel suites per Python version:

- **fast**: `pytest -m "not slow and not integration and not numba"`.
- **numba**: `pytest -m "not integration and (slow or numba)"`. This includes the two expensive
Expand All @@ -30,8 +33,9 @@ PR and push runs have two independent, parallel jobs:

These selections partition all non-integration tests, including future `slow` tests. They run on
all PRs rather than relying on path filters that might miss a transitive dependency change.
A failure in either job does not cancel the other job. Both should be required checks for merging;
replace any branch-protection requirement for the old `pytest` job with these two checks.
A failure in one matrix job does not cancel the others. Both suites on every Python version should
be required checks for merging; replace any branch-protection requirement for the old `pytest` job
with these matrix checks.

Nightly and manual dispatch run the **full** suite, including
`test/test_all_envs.py::test_all_demos`. The full-environment subprocess smoke test is excluded
Expand Down Expand Up @@ -220,7 +224,7 @@ Publishes six distributions to a Python package index: `motrix-env-core`,
thin, lazy `mxlab` CLI, distinct from the development-only root project `motrix-lab`.
Its five commands are `train`, `play`, `export-onnx`, `export-deploy`, and `deploy`.
Command implementations remain in `motrix_rl.commands` and `motrix_deploy.cli`.
It requires Python `>=3.10,<3.12` and pins all five component distributions to its own version.
It requires Python `>=3.10,<3.14` and pins all five component distributions to its own version.
It does not include the full development workspace, built-in tasks/robot assets,
SKRL/RSLRL providers, or deployment backend plugins.

Expand Down Expand Up @@ -267,7 +271,7 @@ The distinct environments are required because PyPI binds at most one project
to a repository/workflow/environment combination. These external registrations
and environment protections are not configured or verified by this repository
change. See the [release guide's clean installation verification](RELEASE.md#clean-installation-verification)
for testing all six TestPyPI wheels in a fresh Python 3.10/3.11 environment,
for testing all six TestPyPI wheels in fresh Python 3.10–3.13 environments,
resolving third-party dependencies from public PyPI without mixing indexes.

# Release Pipeline
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ motrix-env-core → motrix-deploy → motrix-rl
```

`motrixlab` is the integration workspace member, distinct from the development-only
root project `motrix-lab`. It requires Python `>=3.10,<3.12` and depends on
root project `motrix-lab`. It requires Python `>=3.10,<3.14` and depends on
`motrix-env-core`, `motrix-deploy`, `motrix-rl`, `motrix-rl-builtin`, and
`motrix-env-motrixsim`, each pinned to the same version as the integration package.
Its `motrixlab` import namespace provides a thin, lazy dispatcher for the sole `mxlab`
Expand Down Expand Up @@ -314,7 +314,7 @@ GitHub Release event.
### Clean installation verification

After all six TestPyPI jobs succeed, test outside the checkout in a fresh
Python 3.10 or 3.11 virtual environment. Set `VERSION` to the exact version
Python 3.10–3.13 virtual environment. Set `VERSION` to the exact version
from that run (including any beta suffix):

```bash
Expand Down Expand Up @@ -367,8 +367,8 @@ from TestPyPI; the subsequent installation resolves third-party dependencies
from PyPI. Do not use `--extra-index-url` to mix the two indexes, or an older
production package may mask a missing test artifact. This is an actual install
and import check, not a GPU simulation or training test. Record the platform,
Python version, commands, and results; repeat with Python 3.11 for both supported
interpreters.
Python version, commands, and results; repeat with Python 3.11, 3.12, and 3.13
for all supported interpreters.

After production publication, use another fresh environment outside the
checkout and install `"motrixlab==$VERSION"` with
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python: ["3.10", "3.11"]
python: ["3.10", "3.11", "3.12", "3.13"]
suite: ${{ fromJSON((github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && '["full"]' || '["fast","numba"]') }}
steps:
- name: Resolve numba cache dir
Expand Down Expand Up @@ -63,8 +63,8 @@ jobs:
if [ '${{ matrix.python }}' = '3.10' ]; then
sh install.sh --all --python 3.10
else
# Unitree/DDS remains outside Python 3.11 runtime support.
uv sync --frozen --python 3.11 --extra cuda --extra rslrl --extra skrl-jax --extra tbb --group test
# Unitree/DDS runtime support remains limited to Python 3.10.
uv sync --frozen --python '${{ matrix.python }}' --extra cuda --extra rslrl --extra skrl-jax --extra tbb --group test
fi
.venv/bin/python -c 'import sys; assert ".".join(map(str, sys.version_info[:2])) == "${{ matrix.python }}"'

Expand All @@ -76,7 +76,7 @@ jobs:
numba) selection='not integration and (slow or numba)' ;;
esac
set --
if [ '${{ matrix.python }}' = '3.11' ]; then
if [ '${{ matrix.python }}' != '3.10' ]; then
set -- --ignore=motrix_deploy_unitree
fi
.venv/bin/python -m pytest -q --strict-markers --disable-warnings \
Expand Down
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ Python 方法,由 manager 运行时契约定义(`wiki/design/manager/runtime

## 开发环境

项目使用 UV 管理依赖,默认 Python 3.10;不含 Unitree 硬件部署插件的仿真与训练也支持 Python 3.11。
项目使用 UV 管理依赖,默认 Python 3.10;不含 Unitree 硬件部署插件的仿真与训练也支持 Python 3.11–3.13。
Unitree 硬件部署插件与包含该插件的 `--all` 安装仍仅支持 Python 3.10;Unitree 机器人模型的仿真与训练不受此限制。
根开发环境默认安装 `motrixlab`,提供 `mxlab` CLI。可用的依赖组与 extras 见 `pyproject.toml`。

Expand All @@ -149,8 +149,8 @@ sh install.sh --all

```bash
sh install.sh
# 不含 Unitree 硬件部署插件的 Python 3.11 运行环境:
sh install.sh --python 3.11
# 不含 Unitree 硬件部署插件的 Python 3.11–3.13 运行环境(以 3.13 为例):
sh install.sh --python 3.13
```

避免裸 `uv run` / `uv sync`:`cuda`/`rocm` extras 声明为互斥,裸命令会解析到默认 fork(PyPI torch)
Expand Down
9 changes: 5 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ feature proposals, and Discussions for usage questions and design discussion.

MotrixLab currently targets:

- Python **3.10.x / 3.11.x**, with 3.10 as the default. Unitree hardware
- Python **3.10–3.13**, with 3.10 as the default. Unitree hardware
deployment and `--all` require Python 3.10.
- Linux x86_64 and Windows x86_64 for the documented CPU simulation and viewer
workflows. The JAX training extra is Linux-only.
Expand All @@ -33,13 +33,14 @@ sh install.sh --all # --gpu rocm switches to the AMD wheels

A runtime-only environment without the dev toolchain is available via `sh install.sh`: it
auto-detects the GPU vendor (NVIDIA/AMD) for the torch wheels and `--rslrl`
selects the RSLRL backend. To select Python 3.11 for a non-Unitree runtime:
selects the RSLRL backend. To select Python 3.11–3.13 for a non-Unitree runtime
(example using 3.13):

```bash
sh install.sh --python 3.11
sh install.sh --python 3.13
```

`--all` cannot be combined with Python 3.11. On Windows, run `install.ps1` in
`--all` cannot be combined with Python 3.11–3.13. On Windows, run `install.ps1` in
PowerShell.

Avoid bare `uv sync` / `uv run`: the `cuda`/`rocm` extras are declared conflicting, so a bare
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# MotrixLab

[![GitHub License](https://img.shields.io/github/license/Motphys/MotrixLab)](LICENSE)
![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11-blue)
![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue)
[![Release](https://img.shields.io/github/v/release/Motphys/MotrixLab?include_prereleases)](https://github.com/Motphys/MotrixLab/releases)
[![Docs](https://img.shields.io/badge/docs-readthedocs-blue)](https://motrixlab.readthedocs.io)

Expand Down Expand Up @@ -63,7 +63,7 @@ The following steps run a built-in task from the repository root.

| Requirement | Notes |
| --- | --- |
| Python **3.10.x / 3.11.x** | Default: 3.10 |
| Python **3.10–3.13** | Default: 3.10 |
| [uv](https://docs.astral.sh/uv/) | Python project and dependency manager — [installation guide](https://docs.astral.sh/uv/getting-started/installation/) |
| [Git LFS](https://git-lfs.com) | Robot meshes, motion data, and videos are tracked by LFS |
| OS | Linux x86_64 or Windows x86_64; the JAX training backend is Linux-only |
Expand All @@ -83,11 +83,11 @@ Linux (Python 3.10 by default):

```bash
sh install.sh
# Python 3.11 for simulation/training without the Unitree hardware plugin:
sh install.sh --python 3.11
# Python 3.11–3.13 for simulation/training without the Unitree hardware plugin (3.13 shown):
sh install.sh --python 3.13
```

Unitree hardware deployment and `--all` require Python 3.10; simulation/training with Unitree robot models can use Python 3.11.
Unitree hardware deployment and `--all` require Python 3.10; simulation/training with Unitree robot models can use Python 3.11–3.13.

Windows (PowerShell):

Expand Down
10 changes: 5 additions & 5 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# MotrixLab

[![GitHub License](https://img.shields.io/github/license/Motphys/MotrixLab)](LICENSE)
![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11-blue)
![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue)
[![Release](https://img.shields.io/github/v/release/Motphys/MotrixLab?include_prereleases)](https://github.com/Motphys/MotrixLab/releases)
[![Docs](https://img.shields.io/badge/docs-readthedocs-blue)](https://motrixlab.readthedocs.io)

Expand Down Expand Up @@ -63,7 +63,7 @@ _使用 MotrixLab 训练的 microduck 行走策略,由 MotrixRender 实时渲

| 要求 | 说明 |
| --- | --- |
| Python **3.10.x / 3.11.x** | 默认 3.10 |
| Python **3.10–3.13** | 默认 3.10 |
| [uv](https://docs.astral.sh/uv/) | Python 项目与依赖管理工具 — [安装指南](https://docs.astral.sh/uv/getting-started/installation/) |
| [Git LFS](https://git-lfs.com) | 机器人网格、运动数据与视频由 LFS 管理 |
| 操作系统 | Linux x86_64 或 Windows x86_64;JAX 训练后端仅支持 Linux |
Expand All @@ -83,11 +83,11 @@ Linux(默认 Python 3.10):

```bash
sh install.sh
# 不含 Unitree 硬件部署插件的仿真与训练也可使用 Python 3.11:
sh install.sh --python 3.11
# 不含 Unitree 硬件部署插件的仿真与训练也可使用 Python 3.11–3.13(以 3.13 为例):
sh install.sh --python 3.13
```

Unitree 硬件部署与 `--all` 仅支持 Python 3.10;Unitree 机器人模型的仿真与训练可使用 Python 3.11。
Unitree 硬件部署与 `--all` 仅支持 Python 3.10;Unitree 机器人模型的仿真与训练可使用 Python 3.11–3.13。

Windows(PowerShell):

Expand Down
14 changes: 7 additions & 7 deletions docs/source/en/user_guide/getting_started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Both paths provide `mxlab` for training, playback, visualization, export, and de

## System requirements

- **Python**: 3.10 or 3.11. The repository defaults to Python 3.10. The Unitree hardware deployment plugin and the full development environment that includes it require Python 3.10. Simulation and training with Unitree robot models are not subject to this restriction.
- **Python**: 3.10–3.13. The repository defaults to Python 3.10. The Unitree hardware deployment plugin and the full development environment that includes it require Python 3.10. Simulation and training with Unitree robot models are not subject to this restriction.
- **Operating system and architecture**: Linux x86_64 or Windows x86_64. GPU runtime support also depends on your drivers and the selected PyTorch build.
- **Package manager**: Repository installation uses [uv](https://docs.astral.sh/uv/getting-started/installation/). Your own project can use pip or uv.
- **Git and Git LFS**: Required only for repository installation, to obtain source code and assets such as robot meshes and motion data.
Expand Down Expand Up @@ -40,8 +40,8 @@ Linux:

```bash
sh install.sh
# Use Python 3.11 without the Unitree hardware deployment plugin:
sh install.sh --python 3.11
# Use Python 3.11–3.13 without the Unitree hardware deployment plugin (3.13 shown):
sh install.sh --python 3.13
```

Windows PowerShell:
Expand Down Expand Up @@ -115,7 +115,7 @@ When reinstalling, include any other options you still need in the same invocati

| Option | Description |
| ------ | ----------- |
| `--python 3.10` / `--python 3.11` | Select Python; defaults to 3.10, and `--all` requires 3.10 |
| `--python VERSION` | Select Python: `3.10`, `3.11`, `3.12`, or `3.13`; defaults to 3.10, and `--all` requires 3.10 |
| `--gpu cuda` / `--gpu rocm` | Select a GPU dependency profile explicitly, overriding detection; ROCm is Linux-only |
| `--gpu hygon` | Linux Hygon DCU environment; preserve the external DTK accelerator stack and provide compatible Torch yourself; do not combine with `--skrl-jax` |
| `--rslrl` | Add the RSL-RL provider |
Expand Down Expand Up @@ -163,7 +163,7 @@ source .venv/bin/activate
python -m pip install motrixlab
```

On Windows PowerShell, create the environment with `py -3.10 -m venv .venv`, then activate it with `.venv\Scripts\Activate.ps1`. You can also choose Python 3.11.
On Windows PowerShell, create the environment with `py -3.10 -m venv .venv`, then activate it with `.venv\Scripts\Activate.ps1`. You can also choose Python 3.11–3.13.

To allow beta releases:

Expand All @@ -186,10 +186,10 @@ Before adding the dependency, make sure your project's `pyproject.toml` restrict

```toml
[project]
requires-python = ">=3.10,<3.12"
requires-python = ">=3.10,<3.14"
```

`uv init --python 3.10` selects an interpreter, but the initialized Python requirement may still have no upper bound. uv resolves dependencies for the entire Python range declared by your project. Selecting a Python 3.10 interpreter is not sufficient if the project still declares support for Python 3.12 and later.
`uv init --python 3.10` selects an interpreter, but the initialized Python requirement may still have no upper bound. uv resolves dependencies for the entire Python range declared by your project. Selecting a Python 3.10 interpreter is not sufficient if the project still declares support for Python 3.14 and later.

Then add the dependency:

Expand Down
14 changes: 7 additions & 7 deletions docs/source/zh_CN/user_guide/getting_started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ MotrixLab 支持两种使用方式。请根据你是在仓库中运行现有任

## 系统要求

- **Python**:3.10 或 3.11。仓库默认使用 Python 3.10;Unitree 硬件部署插件及包含该插件的完整开发环境仅支持 Python 3.10。Unitree 机器人模型的仿真与训练不受此限制。
- **Python**:3.10–3.13。仓库默认使用 Python 3.10;Unitree 硬件部署插件及包含该插件的完整开发环境仅支持 Python 3.10。Unitree 机器人模型的仿真与训练不受此限制。
- **系统与架构**:Linux x86_64 或 Windows x86_64。具体 GPU 运行能力还取决于驱动和所选的 PyTorch 构建。
- **包管理工具**:仓库安装使用 [uv](https://docs.astral.sh/uv/getting-started/installation/);自己的项目可以使用 pip 或 uv。
- **Git 与 Git LFS**:仅仓库安装需要,用于获取源码及机器人网格、运动数据等资产。
Expand Down Expand Up @@ -40,8 +40,8 @@ Linux:

```bash
sh install.sh
# 使用 Python 3.11,不包含 Unitree 硬件部署插件:
sh install.sh --python 3.11
# 使用 Python 3.11–3.13,不包含 Unitree 硬件部署插件(以 3.13 为例):
sh install.sh --python 3.13
```

Windows PowerShell:
Expand Down Expand Up @@ -115,7 +115,7 @@ sh install.sh --docs

| 参数 | 说明 |
| ---- | ---- |
| `--python 3.10` / `--python 3.11` | 选择 Python 版本;默认 3.10,`--all` 要求 3.10 |
| `--python VERSION` | 选择 Python 版本,可选 `3.10`、`3.11`、`3.12`、`3.13`;默认 3.10,`--all` 要求 3.10 |
| `--gpu cuda` / `--gpu rocm` | 显式选择 GPU 依赖配置,覆盖自动探测;ROCm 仅限 Linux |
| `--gpu hygon` | Linux 海光 DCU 环境;保留外部 DTK 加速栈,需自行提供兼容的 Torch,不与 `--skrl-jax` 组合 |
| `--rslrl` | 添加 RSL-RL provider |
Expand Down Expand Up @@ -163,7 +163,7 @@ source .venv/bin/activate
python -m pip install motrixlab
```

Windows PowerShell 可使用 `py -3.10 -m venv .venv` 创建环境,然后运行 `.venv\Scripts\Activate.ps1` 激活。也可以选择 Python 3.11。
Windows PowerShell 可使用 `py -3.10 -m venv .venv` 创建环境,然后运行 `.venv\Scripts\Activate.ps1` 激活。也可以选择 Python 3.11–3.13。

允许安装 beta 版本时:

Expand All @@ -186,10 +186,10 @@ cd my-robot-project

```toml
[project]
requires-python = ">=3.10,<3.12"
requires-python = ">=3.10,<3.14"
```

`uv init --python 3.10` 选择的是解释器,初始化得到的 Python 版本范围仍可能没有上界。uv 会为项目声明的整个 Python 范围解析依赖,因此不能只确认当前解释器是 3.10,而让项目仍声明支持 3.12 及以上版本。
`uv init --python 3.10` 选择的是解释器,初始化得到的 Python 版本范围仍可能没有上界。uv 会为项目声明的整个 Python 范围解析依赖,因此不能只确认当前解释器是 3.10,而让项目仍声明支持 3.14 及以上版本。

然后添加依赖:

Expand Down
10 changes: 5 additions & 5 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ usage() {
echo " --docs Include the docs toolchain (sphinx) for building the documentation"
echo " --gpu cuda|rocm|hygon GPU profile (default: auto-detected from the kernel driver)"
echo " Hygon skips accelerator packages; install DTK-compatible Torch yourself."
echo " --python 3.10|3.11 Python version (default: uv's interpreter selection; --all requires 3.10)"
echo " --python 3.10|3.11|3.12|3.13 Python version (default: uv's interpreter selection; --all requires 3.10)"
echo " --skrl-torch Training backend: SKRL on PyTorch (default)"
echo " --skrl-jax Training backend: SKRL on JAX (Linux only)"
echo " --rslrl Training backend: RSL-RL on PyTorch"
Expand Down Expand Up @@ -57,10 +57,10 @@ while [ $# -gt 0 ]; do
shift
;;
--python)
[ $# -ge 2 ] || { echo "error: $1 requires a value (3.10 or 3.11)" >&2; exit 1; }
[ $# -ge 2 ] || { echo "error: $1 requires a value (3.10, 3.11, 3.12 or 3.13)" >&2; exit 1; }
case "$2" in
3.10|3.11) PYTHON="$2" ;;
*) echo "error: invalid --python value: $2 (expected 3.10 or 3.11)" >&2; exit 1 ;;
3.10|3.11|3.12|3.13) PYTHON="$2" ;;
*) echo "error: invalid --python value: $2 (expected 3.10, 3.11, 3.12 or 3.13)" >&2; exit 1 ;;
esac
shift
;;
Expand Down Expand Up @@ -95,7 +95,7 @@ if [ -n "$GPU" ] && [ "$GPU" != cuda ] && [ "$GPU" != rocm ] && [ "$GPU" != hygo
exit 1
fi

if [ -n "$ALL" ] && [ "$PYTHON" = 3.11 ]; then
if [ -n "$ALL" ] && [ -n "$PYTHON" ] && [ "$PYTHON" != 3.10 ]; then
echo "error: --all includes Unitree, which requires Python 3.10; use --python 3.10 or omit --all" >&2
exit 1
fi
Expand Down
2 changes: 1 addition & 1 deletion motrix_deploy_motrixsim/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ name = "motrix-deploy-motrixsim"
version = "0.4.0b1"
description = "Native SceneCfg-backed MotrixSim deployment runtime plugin."
authors = [{ name = "Motphys", email = "developers@motphys.com" }]
requires-python = ">=3.10,<3.12"
requires-python = ">=3.10,<3.14"
readme = "README.md"
license = "Apache-2.0"
dependencies = [
Expand Down
Loading
Loading