-
Notifications
You must be signed in to change notification settings - Fork 156
144 lines (129 loc) · 4.26 KB
/
ci.yml
File metadata and controls
144 lines (129 loc) · 4.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
on:
push:
branches: [main]
pull_request:
branches: [main]
types: [opened, reopened, synchronize, edited]
jobs:
format:
name: Ruff format
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.14"]
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.9.27"
python-version: ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }}
run: uv python install
- name: Format with Ruff
run: |
uvx ruff format --check .
linter:
name: Ruff linter
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.14"]
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.9.27"
python-version: ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }}
run: uv python install
- name: Lint with Ruff
run: |
uvx ruff check --output-format=github .
pre-commit:
name: Pre-commit checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.9.27"
python-version: "3.14"
- name: Set up Python
run: uv python install
- name: Run pre-commit
run: |
uvx --with absl-py pre-commit run -a
test:
name: Test with ${{ matrix.dep-type }} dependencies (${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.14"]
dep-type: ["locked uv", stable]
steps:
- uses: actions/checkout@v6
# Setup for locked uv dependencies
- name: Install uv
if: matrix.dep-type == 'locked uv'
uses: astral-sh/setup-uv@v7
with:
version: "0.9.27"
python-version: ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }} (uv)
if: matrix.dep-type == 'locked uv'
run: uv python install
# Setup for stable dependencies
- name: Set up Python ${{ matrix.python-version }} (standard)
if: matrix.dep-type == 'stable'
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
# Common Cache step
- name: Restore Warp kernel cache
uses: actions/cache@v4
with:
path: ~/.cache/warp
key: warp-kernels-${{ runner.os }}-${{ runner.arch }}-${{ matrix.python-version }}-${{ matrix.dep-type }}-${{ hashFiles('uv.lock', 'mujoco_warp/**/*.py') }}
restore-keys: |
warp-kernels-${{ runner.os }}-${{ runner.arch }}-${{ matrix.python-version }}-${{ matrix.dep-type }}-
# Install for stable
- name: Install stable dependencies
if: matrix.dep-type == 'stable'
run: |
python -m pip install --upgrade pip
python -m pip install pytest pytest-xdist
python -m pip install .
# Run tests for locked uv
- name: Test with pytest (locked uv)
if: matrix.dep-type == 'locked uv'
run: |
uv run --with pytest --with pytest-xdist pytest -n 2
# Run tests for stable
- name: Test with pytest (stable)
if: matrix.dep-type == 'stable'
run: |
pytest -n 2
# Extra step for stable
- name: Out-of-bounds check for batched model fields
if: matrix.dep-type == 'stable'
run: |
pytest mujoco_warp/_src/io_test.py -k test_model_batched_fields --debug_mode
kernel_analyzer:
name: Kernel analyzer
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install absl-py
- name: Run kernel analyzer
run: |
python contrib/kernel_analyzer/kernel_analyzer/cli.py mujoco_warp/_src/*.py --output=github