[Bot] Update dependencies (#2253)

* Update dependencies

* ci(fix): use tonistiigi/binfmt:qemu-v8.1.5 image for qemu

* fix(test): implement retry for test_container_removed

The test is flaky on some platforms. Implement retry rather than just skip.

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
This commit is contained in:
cibuildwheel-bot[bot]
2025-01-27 14:35:31 -05:00
committed by GitHub
co-authored by cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> mayeut
parent 3f123af8a1
commit 318a963cc3
13 changed files with 84 additions and 67 deletions
+10
View File
@@ -64,6 +64,11 @@ jobs:
- name: Set up QEMU - name: Set up QEMU
if: runner.os == 'Linux' if: runner.os == 'Linux'
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3
with:
# This should be temporary
# xref https://github.com/docker/setup-qemu-action/issues/188
# xref https://github.com/tonistiigi/binfmt/issues/215
image: tonistiigi/binfmt:qemu-v8.1.5
- name: Install dependencies - name: Install dependencies
run: | run: |
@@ -165,6 +170,11 @@ jobs:
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3
with:
# This should be temporary
# xref https://github.com/docker/setup-qemu-action/issues/188
# xref https://github.com/tonistiigi/binfmt/issues/215
image: tonistiigi/binfmt:qemu-v8.1.5
- name: Run the emulation tests - name: Run the emulation tests
run: uv run pytest --run-emulation ${{ matrix.arch }} test/test_emulation.py run: uv run pytest --run-emulation ${{ matrix.arch }} test/test_emulation.py
@@ -23,7 +23,7 @@ cmake==3.31.4
# via pyodide-build # via pyodide-build
distlib==0.3.9 distlib==0.3.9
# via virtualenv # via virtualenv
filelock==3.16.1 filelock==3.17.0
# via virtualenv # via virtualenv
h11==0.14.0 h11==0.14.0
# via httpcore # via httpcore
@@ -48,11 +48,11 @@ packaging==24.2
# build # build
# pyodide-build # pyodide-build
# unearth # unearth
pip==24.3.1 pip==25.0
# via -r .nox/update_constraints/tmp/constraints-pyodide.in # via -r .nox/update_constraints/tmp/constraints-pyodide.in
platformdirs==4.3.6 platformdirs==4.3.6
# via virtualenv # via virtualenv
pydantic==2.10.5 pydantic==2.10.6
# via # via
# pyodide-build # pyodide-build
# pyodide-lock # pyodide-lock
@@ -8,9 +8,9 @@ delocate==0.12.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
distlib==0.3.9 distlib==0.3.9
# via virtualenv # via virtualenv
filelock==3.16.1 filelock==3.17.0
# via virtualenv # via virtualenv
importlib-metadata==8.5.0 importlib-metadata==8.6.1
# via build # via build
macholib==1.16.3 macholib==1.16.3
# via delocate # via delocate
@@ -18,7 +18,7 @@ packaging==24.2
# via # via
# build # build
# delocate # delocate
pip==24.3.1 pip==25.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
platformdirs==4.3.6 platformdirs==4.3.6
# via virtualenv # via virtualenv
@@ -8,7 +8,7 @@ delocate==0.12.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
distlib==0.3.9 distlib==0.3.9
# via virtualenv # via virtualenv
filelock==3.16.1 filelock==3.17.0
# via virtualenv # via virtualenv
macholib==1.16.3 macholib==1.16.3
# via delocate # via delocate
@@ -16,7 +16,7 @@ packaging==24.2
# via # via
# build # build
# delocate # delocate
pip==24.3.1 pip==25.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
platformdirs==4.3.6 platformdirs==4.3.6
# via virtualenv # via virtualenv
@@ -8,7 +8,7 @@ delocate==0.12.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
distlib==0.3.9 distlib==0.3.9
# via virtualenv # via virtualenv
filelock==3.16.1 filelock==3.17.0
# via virtualenv # via virtualenv
macholib==1.16.3 macholib==1.16.3
# via delocate # via delocate
@@ -16,7 +16,7 @@ packaging==24.2
# via # via
# build # build
# delocate # delocate
pip==24.3.1 pip==25.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
platformdirs==4.3.6 platformdirs==4.3.6
# via virtualenv # via virtualenv
@@ -8,7 +8,7 @@ delocate==0.12.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
distlib==0.3.9 distlib==0.3.9
# via virtualenv # via virtualenv
filelock==3.16.1 filelock==3.17.0
# via virtualenv # via virtualenv
macholib==1.16.3 macholib==1.16.3
# via delocate # via delocate
@@ -16,7 +16,7 @@ packaging==24.2
# via # via
# build # build
# delocate # delocate
pip==24.3.1 pip==25.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
platformdirs==4.3.6 platformdirs==4.3.6
# via virtualenv # via virtualenv
@@ -18,7 +18,7 @@ packaging==24.2
# via # via
# build # build
# delocate # delocate
pip==24.3.1 pip==25.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
platformdirs==4.3.6 platformdirs==4.3.6
# via virtualenv # via virtualenv
@@ -8,9 +8,9 @@ delocate==0.12.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
distlib==0.3.9 distlib==0.3.9
# via virtualenv # via virtualenv
filelock==3.16.1 filelock==3.17.0
# via virtualenv # via virtualenv
importlib-metadata==8.5.0 importlib-metadata==8.6.1
# via build # via build
macholib==1.16.3 macholib==1.16.3
# via delocate # via delocate
@@ -18,7 +18,7 @@ packaging==24.2
# via # via
# build # build
# delocate # delocate
pip==24.3.1 pip==25.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
platformdirs==4.3.6 platformdirs==4.3.6
# via virtualenv # via virtualenv
+2 -2
View File
@@ -8,7 +8,7 @@ delocate==0.12.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
distlib==0.3.9 distlib==0.3.9
# via virtualenv # via virtualenv
filelock==3.16.1 filelock==3.17.0
# via virtualenv # via virtualenv
macholib==1.16.3 macholib==1.16.3
# via delocate # via delocate
@@ -16,7 +16,7 @@ packaging==24.2
# via # via
# build # build
# delocate # delocate
pip==24.3.1 pip==25.0
# via -r cibuildwheel/resources/constraints.in # via -r cibuildwheel/resources/constraints.in
platformdirs==4.3.6 platformdirs==4.3.6
# via virtualenv # via virtualenv
+2 -2
View File
@@ -1,3 +1,3 @@
url = "https://nodejs.org/dist/" url = "https://nodejs.org/dist/"
v22 = "v22.13.0" v22 = "v22.13.1"
v20 = "v20.18.1" v20 = "v20.18.2"
+27 -27
View File
@@ -1,64 +1,64 @@
[x86_64] [x86_64]
manylinux1 = quay.io/pypa/manylinux1_x86_64:2024-04-29-76807b8 manylinux1 = quay.io/pypa/manylinux1_x86_64:2024-04-29-76807b8
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.01.19-2 manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.01.24-1
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.01.19-2 manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.01.24-1
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.01.19-2 manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.01.24-1
musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2024.10.26-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2024.10.26-1
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.01.19-2 musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.01.24-1
[i686] [i686]
manylinux1 = quay.io/pypa/manylinux1_i686:2024-04-29-76807b8 manylinux1 = quay.io/pypa/manylinux1_i686:2024-04-29-76807b8
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.01.19-2 manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.01.24-1
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463
musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2024.10.26-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2024.10.26-1
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.01.19-2 musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.01.24-1
[pypy_x86_64] [pypy_x86_64]
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.01.19-2 manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.01.24-1
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.01.19-2 manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.01.24-1
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.01.19-2 manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.01.24-1
[pypy_i686] [pypy_i686]
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.01.19-2 manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.01.24-1
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463
[aarch64] [aarch64]
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.01.19-2 manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.01.24-1
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.01.19-2 manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.01.24-1
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.01.19-2 manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.01.24-1
musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2024.10.26-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2024.10.26-1
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.01.19-2 musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.01.24-1
[ppc64le] [ppc64le]
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.01.19-2 manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.01.24-1
manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.01.19-2 manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.01.24-1
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.01.19-2 manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.01.24-1
musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2024.10.26-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2024.10.26-1
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.01.19-2 musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.01.24-1
[s390x] [s390x]
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.01.19-2 manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.01.24-1
manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.01.19-2 manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.01.24-1
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.01.19-2 manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.01.24-1
musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2024.10.26-1 musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2024.10.26-1
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.01.19-2 musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.01.24-1
[pypy_aarch64] [pypy_aarch64]
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.01.19-2 manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.01.24-1
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.01.19-2 manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.01.24-1
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.01.19-2 manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.01.24-1
[armv7l] [armv7l]
manylinux_2_31 = ghcr.io/mayeut/manylinux_2_31:2025.01.19-1 manylinux_2_31 = ghcr.io/mayeut/manylinux_2_31:2025.01.25-1
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.01.19-2 musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.01.24-1
+4 -4
View File
@@ -47,8 +47,8 @@ title: Working examples
| [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python | | [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python |
| [PyCryptodome][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A self-contained cryptographic library for Python | | [PyCryptodome][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A self-contained cryptographic library for Python |
| [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling for Python | | [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling for Python |
| [PyYAML][] | ![github icon][] | ![apple icon][] | Canonical source repository for PyYAML |
| [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. | | [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. |
| [PyYAML][] | ![github icon][] | ![apple icon][] | Canonical source repository for PyYAML |
| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, Pandas, PyTables and more | | [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, Pandas, PyTables and more |
| [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by QPDF | | [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by QPDF |
| [h5py][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | HDF5 for Python -- The h5py package is a Pythonic interface to the HDF5 binary data format. | | [h5py][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | HDF5 for Python -- The h5py package is a Pythonic interface to the HDF5 binary data format. |
@@ -92,8 +92,8 @@ title: Working examples
| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 | | [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
| [Confluent client for Kafka][] | ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | setup in `tools/wheels/build-wheels.bat` | | [Confluent client for Kafka][] | ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | setup in `tools/wheels/build-wheels.bat` |
| [streaming-form-data][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Streaming parser for multipart/form-data written in Cython | | [streaming-form-data][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Streaming parser for multipart/form-data written in Cython |
| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
| [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis | | [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis |
| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python | | [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
| [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. | | [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. |
| [Python-WebRTC][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | a Python extension that provides bindings to WebRTC M92 | | [Python-WebRTC][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | a Python extension that provides bindings to WebRTC M92 |
@@ -157,8 +157,8 @@ title: Working examples
[coverage.py]: https://github.com/nedbat/coveragepy [coverage.py]: https://github.com/nedbat/coveragepy
[PyCryptodome]: https://github.com/Legrandin/pycryptodome [PyCryptodome]: https://github.com/Legrandin/pycryptodome
[Line Profiler]: https://github.com/pyutils/line_profiler [Line Profiler]: https://github.com/pyutils/line_profiler
[PyYAML]: https://github.com/yaml/pyyaml
[PyAV]: https://github.com/PyAV-Org/PyAV [PyAV]: https://github.com/PyAV-Org/PyAV
[PyYAML]: https://github.com/yaml/pyyaml
[numexpr]: https://github.com/pydata/numexpr [numexpr]: https://github.com/pydata/numexpr
[pikepdf]: https://github.com/pikepdf/pikepdf [pikepdf]: https://github.com/pikepdf/pikepdf
[h5py]: https://github.com/h5py/h5py [h5py]: https://github.com/h5py/h5py
@@ -202,8 +202,8 @@ title: Working examples
[iDynTree]: https://github.com/robotology/idyntree [iDynTree]: https://github.com/robotology/idyntree
[Confluent client for Kafka]: https://github.com/confluentinc/confluent-kafka-python [Confluent client for Kafka]: https://github.com/confluentinc/confluent-kafka-python
[streaming-form-data]: https://github.com/siddhantgoel/streaming-form-data [streaming-form-data]: https://github.com/siddhantgoel/streaming-form-data
[bx-python]: https://github.com/bxlab/bx-python
[power-grid-model]: https://github.com/PowerGridModel/power-grid-model [power-grid-model]: https://github.com/PowerGridModel/power-grid-model
[bx-python]: https://github.com/bxlab/bx-python
[pybase64]: https://github.com/mayeut/pybase64 [pybase64]: https://github.com/mayeut/pybase64
[boost-histogram]: https://github.com/scikit-hep/boost-histogram [boost-histogram]: https://github.com/scikit-hep/boost-histogram
[Python-WebRTC]: https://github.com/MarshalX/python-webrtc [Python-WebRTC]: https://github.com/MarshalX/python-webrtc
+22 -15
View File
@@ -8,6 +8,7 @@ import shutil
import subprocess import subprocess
import sys import sys
import textwrap import textwrap
import time
from contextlib import nullcontext from contextlib import nullcontext
from pathlib import Path, PurePath, PurePosixPath from pathlib import Path, PurePath, PurePosixPath
@@ -138,25 +139,15 @@ def test_cwd(container_engine):
assert container.call(["pwd"], capture_output=True, cwd="/opt") == "/opt\n" assert container.call(["pwd"], capture_output=True, cwd="/opt") == "/opt\n"
@pytest.mark.skipif(
pm == "s390x" and detect_ci_provider() == CIProvider.travis_ci,
reason="test is flaky on this platform, see https://github.com/pypa/cibuildwheel/pull/1961#issuecomment-2334678966",
)
def test_container_removed(container_engine): def test_container_removed(container_engine):
# test is flaky on some platforms, implement retry for 5 second
timeout = 50 # * 100 ms = 5s
with OCIContainer( with OCIContainer(
engine=container_engine, image=DEFAULT_IMAGE, oci_platform=DEFAULT_OCI_PLATFORM engine=container_engine, image=DEFAULT_IMAGE, oci_platform=DEFAULT_OCI_PLATFORM
) as container: ) as container:
docker_containers_listing = subprocess.run(
f"{container.engine.name} container ls",
shell=True,
check=True,
stdout=subprocess.PIPE,
text=True,
).stdout
assert container.name is not None assert container.name is not None
assert container.name in docker_containers_listing container_name = container.name
old_container_name = container.name for _ in range(timeout):
docker_containers_listing = subprocess.run( docker_containers_listing = subprocess.run(
f"{container.engine.name} container ls", f"{container.engine.name} container ls",
shell=True, shell=True,
@@ -164,7 +155,23 @@ def test_container_removed(container_engine):
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
text=True, text=True,
).stdout ).stdout
assert old_container_name not in docker_containers_listing if container_name in docker_containers_listing:
break
time.sleep(0.1)
assert container_name in docker_containers_listing
for _ in range(timeout):
docker_containers_listing = subprocess.run(
f"{container.engine.name} container ls",
shell=True,
check=True,
stdout=subprocess.PIPE,
text=True,
).stdout
if container_name not in docker_containers_listing:
break
time.sleep(0.1)
assert container_name not in docker_containers_listing
def test_large_environment(container_engine): def test_large_environment(container_engine):