Skip to content

Commit d9f808f

Browse files
committed
Modernize Python tooling with uv
Implement [#269](#269) and switch from pip / pipenv to uv: - all configuration centralized in pyproject.toml - Pipfile / Pipfile.lock are gone, lock / SHA1 versions in uv.lock - setup.py is gone - usage documented in python/README.md Signed-off-by: Jean-Francois Panisset <panisset@gmail.com> Assisted-by: Cursor
1 parent cb49caf commit d9f808f

12 files changed

Lines changed: 2446 additions & 2646 deletions

File tree

.github/workflows/docker-builds.yml

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,15 @@ jobs:
4343
- name: Set up Python
4444
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
4545
with:
46-
python-version: 3.9
47-
cache: 'pipenv'
48-
- name: Install pipenv
49-
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
50-
- name: Install aswfdocker and dependencies with pipenv
51-
run: pipenv install
46+
python-version: "3.9"
47+
48+
- name: Install uv
49+
uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
50+
with:
51+
enable-cache: auto
52+
53+
- name: Install aswfdocker and dependencies
54+
run: uv sync
5255

5356
- name: Free up disk space
5457
run: |
@@ -77,7 +80,7 @@ jobs:
7780
- name: Build Conan Builder Image
7881
run: |
7982
set -ex
80-
pipenv run aswfdocker \
83+
uv run aswfdocker \
8184
--verbose \
8285
build \
8386
--ci-image-type IMAGE \
@@ -88,7 +91,7 @@ jobs:
8891
- name: Build Ninja and CMake (Conan)
8992
run: |
9093
set -ex
91-
pipenv run aswfdocker \
94+
uv run aswfdocker \
9295
--verbose \
9396
build \
9497
--ci-image-type PACKAGE \
@@ -103,7 +106,7 @@ jobs:
103106
- name: Build Clang (Conan)
104107
run: |
105108
set -ex
106-
pipenv run aswfdocker \
109+
uv run aswfdocker \
107110
--verbose \
108111
build \
109112
--ci-image-type PACKAGE \
@@ -116,7 +119,7 @@ jobs:
116119
117120
- name: Build ci-common Docker Image for downstream images
118121
run: |
119-
pipenv run aswfdocker \
122+
uv run aswfdocker \
120123
--verbose \
121124
build \
122125
--ci-image-type IMAGE \
@@ -127,7 +130,7 @@ jobs:
127130
- name: Build base1 system wrapper packages
128131
run: |
129132
set -ex
130-
pipenv run aswfdocker \
133+
uv run aswfdocker \
131134
--verbose \
132135
build \
133136
--ci-image-type PACKAGE \
@@ -140,7 +143,7 @@ jobs:
140143
- name: Build base1 level 1 Conan packages
141144
run: |
142145
set -ex
143-
pipenv run aswfdocker \
146+
uv run aswfdocker \
144147
--verbose \
145148
build \
146149
--ci-image-type PACKAGE \
@@ -153,7 +156,7 @@ jobs:
153156
- name: Build base1 level 2 Conan packages
154157
run: |
155158
set -ex
156-
pipenv run aswfdocker \
159+
uv run aswfdocker \
157160
--verbose \
158161
build \
159162
--ci-image-type PACKAGE \
@@ -166,7 +169,7 @@ jobs:
166169
- name: Build base1 level 3 Conan packages
167170
run: |
168171
set -ex
169-
pipenv run aswfdocker \
172+
uv run aswfdocker \
170173
--verbose \
171174
build \
172175
--ci-image-type PACKAGE \
@@ -179,7 +182,7 @@ jobs:
179182
- name: Build base2 system wrapper Conan packages for ci-baseqt image
180183
run: |
181184
set -ex
182-
pipenv run aswfdocker \
185+
uv run aswfdocker \
183186
--verbose \
184187
build \
185188
--ci-image-type PACKAGE \
@@ -192,7 +195,7 @@ jobs:
192195
- name: Build base2 system Conan packages for ci-baseqt image
193196
run: |
194197
set -ex
195-
pipenv run aswfdocker \
198+
uv run aswfdocker \
196199
--verbose \
197200
build \
198201
--ci-image-type PACKAGE \
@@ -205,7 +208,7 @@ jobs:
205208
- name: Build base2 level 2 Conan packages (Qt) for ci-baseqt image
206209
run: |
207210
set -ex
208-
pipenv run aswfdocker \
211+
uv run aswfdocker \
209212
--verbose \
210213
build \
211214
--ci-image-type PACKAGE \
@@ -218,7 +221,7 @@ jobs:
218221
- name: Build base3 Conan packages (PySide) for base image
219222
run: |
220223
set -ex
221-
pipenv run aswfdocker \
224+
uv run aswfdocker \
222225
--verbose \
223226
build \
224227
--ci-image-type PACKAGE \
@@ -231,7 +234,7 @@ jobs:
231234
- name: Build base and baseqt images
232235
run: |
233236
set -ex
234-
pipenv run aswfdocker \
237+
uv run aswfdocker \
235238
--verbose \
236239
build \
237240
--ci-image-type IMAGE \
@@ -242,7 +245,7 @@ jobs:
242245
- name: Build vfx1 system wrapper Conan packages
243246
run: |
244247
set -ex
245-
pipenv run aswfdocker \
248+
uv run aswfdocker \
246249
--verbose \
247250
build \
248251
--ci-image-type PACKAGE \
@@ -255,7 +258,7 @@ jobs:
255258
- name: Build vfx1 level 1 Conan packages
256259
run: |
257260
set -ex
258-
pipenv run aswfdocker \
261+
uv run aswfdocker \
259262
--verbose \
260263
build \
261264
--ci-image-type PACKAGE \
@@ -268,7 +271,7 @@ jobs:
268271
- name: Build vfx1 level 2 Conan packages
269272
run: |
270273
set -ex
271-
pipenv run aswfdocker \
274+
uv run aswfdocker \
272275
--verbose \
273276
build \
274277
--ci-image-type PACKAGE \
@@ -281,7 +284,7 @@ jobs:
281284
- name: Build vfx1 level 3 Conan packages
282285
run: |
283286
set -ex
284-
pipenv run aswfdocker \
287+
uv run aswfdocker \
285288
--verbose \
286289
build \
287290
--ci-image-type PACKAGE \
@@ -294,7 +297,7 @@ jobs:
294297
- name: Build vfx1 level 4 Conan packages
295298
run: |
296299
set -ex
297-
pipenv run aswfdocker \
300+
uv run aswfdocker \
298301
--verbose \
299302
build \
300303
--ci-image-type PACKAGE \
@@ -307,7 +310,7 @@ jobs:
307310
- name: Build vfx1 level 5 Conan packages
308311
run: |
309312
set -ex
310-
pipenv run aswfdocker \
313+
uv run aswfdocker \
311314
--verbose \
312315
build \
313316
--ci-image-type PACKAGE \
@@ -320,7 +323,7 @@ jobs:
320323
- name: Build vfx2 level 1 Conan packages
321324
run: |
322325
set -ex
323-
pipenv run aswfdocker \
326+
uv run aswfdocker \
324327
--verbose \
325328
build \
326329
--ci-image-type PACKAGE \
@@ -333,7 +336,7 @@ jobs:
333336
- name: Build vfx2 level 2 non-Conan packages
334337
run: |
335338
set -ex
336-
pipenv run aswfdocker \
339+
uv run aswfdocker \
337340
--verbose \
338341
build \
339342
--ci-image-type PACKAGE \
@@ -345,7 +348,7 @@ jobs:
345348
- name: Build vfx1 / vfx2 images
346349
run: |
347350
set -ex
348-
pipenv run aswfdocker \
351+
uv run aswfdocker \
349352
--verbose \
350353
build \
351354
--ci-image-type IMAGE \
@@ -357,7 +360,7 @@ jobs:
357360
- name: Build vfx images
358361
run: |
359362
set -ex
360-
pipenv run aswfdocker \
363+
uv run aswfdocker \
361364
--verbose \
362365
build \
363366
--ci-image-type IMAGE \
@@ -367,7 +370,7 @@ jobs:
367370
368371
- run: |
369372
set -ex
370-
export DOCKER_ORG=`pipenv run aswfdocker --repo-uri $GITHUB_REPOSITORY --source-branch $GITHUB_REF getdockerorg`
373+
export DOCKER_ORG=`uv run aswfdocker --repo-uri $GITHUB_REPOSITORY --source-branch $GITHUB_REF getdockerorg`
371374
test_script=scripts/tests/${{ matrix.version }}/test_${{ matrix.test }}.sh
372375
if [ -f $test_script ]
373376
then

.github/workflows/python-sonar.yml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,23 @@ jobs:
1717
- name: Set up Python
1818
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
1919
with:
20-
python-version: 3.9
21-
cache: 'pipenv'
22-
- name: Install pipenv
23-
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
24-
- name: Install aswfdocker and dev dependencies with pipenv
25-
run: pipenv install --dev
20+
python-version: "3.9"
21+
22+
- name: Install uv
23+
uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
24+
with:
25+
enable-cache: auto
26+
27+
- name: Install aswfdocker and dev dependencies
28+
run: uv sync --all-extras
2629

2730
# mypy static type checks with junit XML report
2831
- name: Run mypy
29-
run: pipenv run mypy python/aswfdocker --junit-xml=test-mypy-results.xml
32+
run: uv run mypy python/aswfdocker --junit-xml=test-mypy-results.xml
3033

3134
# python unittests with junit XML report, PyLint and coverage XML Cobertura report for publishing task
3235
- name: Run pylint linter
33-
run: pipenv run pytest python/aswfdocker --doctest-modules --pylint --junitxml=test-pylint-results.xml --cov=. --cov-report=xml
36+
run: uv run pytest python/aswfdocker --doctest-modules --pylint --junitxml=test-pylint-results.xml --cov=. --cov-report=xml
3437

3538
- name: Install and Run Sonar Scanner
3639
uses: SonarSource/sonarqube-scan-action@a31c9398be7ace6bbfaf30c0bd5d415f843d45e9 # v7.0.0

.github/workflows/python.yml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,18 @@ jobs:
2222
- name: Set up Python
2323
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
2424
with:
25-
python-version: 3.9
26-
cache: 'pipenv'
27-
- name: Install pipenv
28-
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
29-
- name: Install aswfdocker and dev dependencies with pipenv
30-
run: pipenv install --dev
25+
python-version: "3.9"
26+
27+
- name: Install uv
28+
uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
29+
with:
30+
enable-cache: auto
31+
32+
- name: Install aswfdocker and dev dependencies
33+
run: uv sync --all-extras
3134

3235
- name: Run all pre-commit tests
33-
run: pipenv run pre-commit run --all-files
36+
run: uv run pre-commit run --all-files
3437

3538
- name: Check that all templated Dockerfile and README.md are up to date
36-
run: pipenv run aswfdocker dockergen --check
39+
run: uv run aswfdocker dockergen --check

.github/workflows/release.yml

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,15 @@ jobs:
3838
- name: Set up Python
3939
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
4040
with:
41-
python-version: 3.9
42-
cache: 'pipenv'
43-
- name: Install pipenv
44-
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
45-
- name: Install aswfdocker and dependencies with pipenv
46-
run: pipenv install
41+
python-version: "3.9"
42+
43+
- name: Install uv
44+
uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
45+
with:
46+
enable-cache: auto
47+
48+
- name: Install aswfdocker and dependencies
49+
run: uv sync
4750

4851
- name: Login to DockerHub
4952
if: ${{ matrix.build }}
@@ -52,7 +55,7 @@ jobs:
5255
- name: Build and Push
5356
if: ${{ matrix.build }}
5457
run: |
55-
pipenv run aswfdocker \
58+
uv run aswfdocker \
5659
--repo-uri $GITHUB_REPOSITORY \
5760
--verbose \
5861
build \
@@ -63,7 +66,7 @@ jobs:
6366
- name: Update Docker Hub Description
6467
if: ${{ matrix.push_description }}
6568
run: |
66-
pipenv run aswfdocker \
69+
uv run aswfdocker \
6770
pushoverview \
6871
--username aswfdocker \
6972
--password ${{ secrets.DOCKERHUB_PASSWORD }} \

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ repos:
1010
hooks:
1111
- id: pytest
1212
name: Check pytest unit tests pass
13-
entry: pipenv run pytest python/aswfdocker
13+
entry: uv run pytest python/aswfdocker
1414
pass_filenames: false
1515
language: system
1616
types: [python]
1717
- id: mypy
1818
name: Check mypy static types match
19-
entry: pipenv run mypy python/aswfdocker
19+
entry: uv run mypy python/aswfdocker
2020
pass_filenames: false
2121
language: system
2222
types: [python]
2323
- id: pylint
2424
name: Check linting with pylint
25-
entry: pipenv run pylint python/aswfdocker
25+
entry: uv run pylint python/aswfdocker
2626
pass_filenames: false
2727
language: system
2828
types: [python]

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ All notable changes to this project will be documented in this file.
55
# 2026-03-14
66

77
- All releases
8+
- [Replace Pipenv with uv](https://github.com/AcademySoftwareFoundation/aswf-docker/issues/269) for Python dependency management; use `uv sync --all-extras` and `uv run` (see `python/README.md`). Lockfile is `uv.lock`; dependencies are in `pyproject.toml` [project].
89
- Update GitHub action versions for [NodeJS 24](https://github.com/AcademySoftwareFoundation/aswf-docker/issues/350)
910
- Update some Python dependencies
1011
- [Enable building iv for OpenImageIO](https://github.com/AcademySoftwareFoundation/aswf-docker/issues/357) to include Qt in ci-oiio, re-release ci-oiio 2026.3 / 2025.5 / 2024.6 images

0 commit comments

Comments
 (0)