From 6964e11455532280076f06fc69e2b99bb94bf995 Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 26 Jan 2024 09:43:44 +0100 Subject: [PATCH 01/10] Add pyproject.toml and simplify Cython build Fixes #1319 --- pyproject.toml | 3 +++ setup.py | 22 ++++++---------------- 2 files changed, 9 insertions(+), 16 deletions(-) create mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..ebe2ac5b9 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools", "cython"] +build-backend = "setuptools.build_meta" diff --git a/setup.py b/setup.py index c507b0622..70e55b51a 100755 --- a/setup.py +++ b/setup.py @@ -17,21 +17,7 @@ import ast import glob -from setuptools import setup -from setuptools import find_packages - -try: - from Cython.Build import cythonize - extensions = cythonize("printrun/gcoder_line.pyx") - from Cython.Distutils import build_ext -except ImportError as e: - print("WARNING: Failed to cythonize: %s" % e) - # Debug helper: uncomment these: - # import traceback - # traceback.print_exc() - extensions = None - build_ext = None - +from setuptools import Extension, find_packages, setup with open('README.md', encoding='utf-8') as f: long_description = f.read() @@ -63,6 +49,11 @@ def multiglob(*globs): for locale in glob.glob('locale/*/LC_MESSAGES/'): data_files.append((f'share/{locale}', glob.glob(f'{locale}/*.mo'))) +extensions = [ + Extension( + name="printrun.gcoder_line", + sources=["printrun/gcoder_line.pyx"]) + ] setup( name="Printrun", @@ -79,7 +70,6 @@ def multiglob(*globs): ext_modules=extensions, python_requires=">=3.7", install_requires=install_requires, - setup_requires=["Cython"], classifiers=[ "Environment :: X11 Applications :: GTK", "Intended Audience :: End Users/Desktop", From cd892337d55710cca29d66c67885deccb72aee10 Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 26 Jan 2024 09:46:02 +0100 Subject: [PATCH 02/10] Move static metadata to pyproject.toml The philosophy being to keep all static project metadata within 'pyproject.toml' while all build configuration and dynamic metadata remains at 'setup.py'. The 'long_description' is no longer needed because we link to the README on 'pyproject.toml'. A 'license' field is not required because it is already set on 'classifiers'. --- pyproject.toml | 35 +++++++++++++++++++++++++++++++++++ setup.py | 29 ----------------------------- 2 files changed, 35 insertions(+), 29 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ebe2ac5b9..fb7c4da78 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,38 @@ [build-system] requires = ["setuptools", "cython"] build-backend = "setuptools.build_meta" + +[project] +name = "Printrun" +description = "Host software for 3D printers" +authors = [ + {name = "Kliment Yanev"}, + {name = "Guillaume Seguin"}, +] +readme = "README.md" +requires-python=">=3.8" +classifiers=[ + "Environment :: X11 Applications :: GTK", + "Intended Audience :: End Users/Desktop", + "Intended Audience :: Manufacturing", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX :: Linux", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Printing", +] +dynamic = [ # these variables are dynamically set at `setup.py` + "version", + "scripts", +] + +[project.urls] +Homepage = "https://github.com/kliment/Printrun/" +Issues = "https://github.com/kliment/Printrun/issues" +Changelog = "https://github.com/kliment/Printrun/blob/master/NEWS.md" \ No newline at end of file diff --git a/setup.py b/setup.py index 70e55b51a..595ef8b8f 100755 --- a/setup.py +++ b/setup.py @@ -19,9 +19,6 @@ import glob from setuptools import Extension, find_packages, setup -with open('README.md', encoding='utf-8') as f: - long_description = f.read() - with open('requirements.txt') as f: install_requires = f.readlines() @@ -30,14 +27,12 @@ if line.startswith("__version__"): __version__ = ast.literal_eval(line.split("=")[1].strip()) - def multiglob(*globs): paths = [] for g in globs: paths.extend(glob.glob(g)) return paths - data_files = [ ('share/pixmaps', multiglob('*.png')), ('share/applications', multiglob('*.desktop')), @@ -56,35 +51,11 @@ def multiglob(*globs): ] setup( - name="Printrun", version=__version__, - description="Host software for 3D printers", - author="Kliment Yanev, Guillaume Seguin and others", - long_description=long_description, - long_description_content_type="text/markdown", - url="http://github.com/kliment/Printrun/", - license="GPLv3+", data_files=data_files, packages=find_packages(), scripts=["pronsole.py", "pronterface.py", "plater.py", "printcore.py"], ext_modules=extensions, - python_requires=">=3.7", install_requires=install_requires, - classifiers=[ - "Environment :: X11 Applications :: GTK", - "Intended Audience :: End Users/Desktop", - "Intended Audience :: Manufacturing", - "Intended Audience :: Science/Research", - "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", - "Operating System :: MacOS :: MacOS X", - "Operating System :: Microsoft :: Windows", - "Operating System :: POSIX :: Linux", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Topic :: Printing", - ], zip_safe=False, ) From 36e011af0cd1755070ab4bd74cc5290a6c70121a Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 26 Jan 2024 10:52:23 +0100 Subject: [PATCH 03/10] setup: Use functions for dynamic configuration This way no code is run when 'setup.py' is loaded until the setup function is called. --- setup.py | 63 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/setup.py b/setup.py index 595ef8b8f..fc27da308 100755 --- a/setup.py +++ b/setup.py @@ -19,13 +19,19 @@ import glob from setuptools import Extension, find_packages, setup -with open('requirements.txt') as f: - install_requires = f.readlines() -with open('printrun/printcore.py') as f: - for line in f.readlines(): - if line.startswith("__version__"): - __version__ = ast.literal_eval(line.split("=")[1].strip()) +def get_install_requires(): + with open('requirements.txt') as f: + install_requires = f.readlines() + + +def get_version(): + with open('printrun/printcore.py', encoding="utf-8") as f: + for line in f.readlines(): + if line.startswith("__version__"): + return ast.literal_eval(line.split("=")[1].strip()) + return "unknown" + def multiglob(*globs): paths = [] @@ -33,29 +39,36 @@ def multiglob(*globs): paths.extend(glob.glob(g)) return paths -data_files = [ - ('share/pixmaps', multiglob('*.png')), - ('share/applications', multiglob('*.desktop')), - ('share/metainfo', multiglob('*.appdata.xml')), - ('share/pronterface/images', multiglob('images/*.png', - 'images/*.svg')), -] - -for locale in glob.glob('locale/*/LC_MESSAGES/'): - data_files.append((f'share/{locale}', glob.glob(f'{locale}/*.mo'))) - -extensions = [ - Extension( - name="printrun.gcoder_line", - sources=["printrun/gcoder_line.pyx"]) + +def get_data_files(): + data_files = [ + ('share/pixmaps', multiglob('*.png')), + ('share/applications', multiglob('*.desktop')), + ('share/metainfo', multiglob('*.appdata.xml')), + ('share/pronterface/images', multiglob('images/*.png', + 'images/*.svg')), + ] + + for locale in glob.glob('locale/*/LC_MESSAGES/'): + data_files.append((f'share/{locale}', glob.glob(f'{locale}/*.mo'))) + + return data_files + + +def get_extensions(): + extensions = [ + Extension(name="printrun.gcoder_line", + sources=["printrun/gcoder_line.pyx"]) ] + return extensions + setup( - version=__version__, - data_files=data_files, + version=get_version(), + data_files=get_data_files(), packages=find_packages(), scripts=["pronsole.py", "pronterface.py", "plater.py", "printcore.py"], - ext_modules=extensions, - install_requires=install_requires, + ext_modules=get_extensions(), + install_requires=get_install_requires(), zip_safe=False, ) From 9e87df7bac19318d789640f5c655686e6d9b347b Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 26 Jan 2024 11:13:09 +0100 Subject: [PATCH 04/10] README: Update install from source guide for unix --- README.md | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 2295026f4..f32b376e3 100644 --- a/README.md +++ b/README.md @@ -163,17 +163,15 @@ $ source venv/bin/activate # activate the virtual environment > **Note for Ubuntu/Debian**: You might need to install `python3-venv` first. > **Note for Ubuntu/Debian**: If you get `python: command not found` use -> `python3` instead of just `python` on all commands below. +> `python3 -m venv venv` instead. -#### 4. Install dependencies +#### 4. Install Printrun -Dependencies for running Printrun are laid out in the [`requirements.txt`][5] -file. Once activated your virtual environment, install required dependencies -with: +Once activated your virtual environment, install Printrun' source code with: ``` -(venv) $ python -m pip install -r requirements.txt # install the rest of dependencies +(venv) $ python -m pip install . ``` > **Note for Linux users**: wxPython4 doesn't have Linux wheels available from @@ -186,32 +184,15 @@ with: > (venv) $ python -m pip install https://extras.wxpython.org/wxPython4/extras/linux/gtk3/fedora-27/wxPython-4.0.1-cp36-cp36m-linux_x86_64.whl # replace the link with yours > ``` -[5]: requirements.txt [6]: https://extras.wxpython.org/wxPython4/extras/linux/gtk3 -#### 5. (Optional) Cython-based G-Code parser - -Printrun default G-Code parser is quite memory hungry, but we also provide a -much lighter one which just needs an extra build-time dependency (Cython). The -warning message `WARNING:root:Memory-efficient GCoder implementation -unavailable: No module named gcoder_line` means that this optimized G-Code -parser hasn't been compiled. To get rid of it and benefit from the better -implementation, install Cython and build the extension with the following -commands: - -```console -(venv) $ python -m pip install Cython -(venv) $ python setup.py build_ext --inplace -``` - - -#### 6. Run Printrun +#### 5. Run Printrun With your virtual environment still active, invoke the app you need like: ```shell -(venv) $ python pronterface.py # or `pronsole.py` or `plater.py` +(venv) $ pronterface.py # or `pronsole.py` or `plater.py` ``` From 837d34ecf57c823f75667b5b7fa9fa426d187c48 Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 26 Jan 2024 13:18:40 +0100 Subject: [PATCH 05/10] Stop ignoring gcoder_line cruft The in-place build of the 'gcoder_line' extension is no longer recommended. A command such as `python setup.py build_ext --inplace` is deprecated. Therefore its outputs should no longer be ignored and should be considered cruft that needs to be removed. --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index e19383990..84b56a4b2 100644 --- a/.gitignore +++ b/.gitignore @@ -10,9 +10,6 @@ prontserve-env pronterface.spec pronsole.spec plater.spec -printrun/gcoder_line.c -printrun/gcoder_line*.so -printrun/gcoder_line*.pyd .project .pydevproject /build/ From 0fd23d352296e3bb53c321640583b013dfadc84a Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 26 Jan 2024 13:32:43 +0100 Subject: [PATCH 06/10] ci: Unify all PyPI build actions Integrate all current CI actions building wheels and sdist for PyPI into a single file using `cibuildwheel`. The use of action 'RalfG/python-wheels-manylinux-build' is deprecated in favor of `PyPA/cibuildwheel`. --- .github/workflows/build-wheels.yml | 79 ++++++++++++++++++++++++++++ .github/workflows/pypi-mac.yml | 45 ---------------- .github/workflows/pypi-manylinux.yml | 39 -------------- .github/workflows/pypi-sdist.yml | 37 ------------- .github/workflows/pypi-win.yml | 45 ---------------- 5 files changed, 79 insertions(+), 166 deletions(-) create mode 100644 .github/workflows/build-wheels.yml delete mode 100644 .github/workflows/pypi-mac.yml delete mode 100644 .github/workflows/pypi-manylinux.yml delete mode 100644 .github/workflows/pypi-sdist.yml delete mode 100644 .github/workflows/pypi-win.yml diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml new file mode 100644 index 000000000..e34c58ee7 --- /dev/null +++ b/.github/workflows/build-wheels.yml @@ -0,0 +1,79 @@ +name: Build sdist and wheels + +on: + pull_request: + push: + release: + types: + - published + +jobs: + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-22.04, windows-2022, macos-11, macos-12] + + steps: + - uses: actions/checkout@v4 + + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v3 + with: + platforms: all + + - name: Build ${{ matrix.os }} wheels + uses: pypa/cibuildwheel@v2.16.2 + env: + # we only support what's supported by wxPython, therefore we skip: + # * PyPy Python implementation + # * Python 3.6 nor 3.7 versions + # * musl C implementation + CIBW_SKIP: "pp* cp36* cp37* *-musllinux*" + # produce ARM wheels on Linux in addition to 32 and 64 bit + CIBW_ARCHS_LINUX: auto aarch64 + # produce wheels for macOS to support both Intel and Apple silicon + CIBW_ARCHS_MACOS: x86_64 universal2 arm64 + + - name: Upload ${{ matrix.os }} wheels + uses: actions/upload-artifact@v4 + with: + name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} + path: ./wheelhouse/*.whl + + build_sdist: + name: Build source distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build sdist + run: pipx run build --sdist + + - name: Upload sdist + uses: actions/upload-artifact@v4 + with: + name: cibw-sdist + path: dist/*.tar.gz + + upload_pypi: + needs: [build_wheels, build_sdist] + runs-on: ubuntu-latest + environment: pypi + permissions: + id-token: write + if: github.event_name == 'release' && github.event.action == 'published' + steps: + - uses: actions/download-artifact@v4 + with: + # unpack all CIBW artifacts into dist/ + pattern: cibw-* + path: dist + merge-multiple: true + + - uses: pypa/gh-action-pypi-publish@release/v1 + with: + # by default, the contents of the `dist/` directory are uploaded + password: ${{ secrets.PYPI_API_KEY }} diff --git a/.github/workflows/pypi-mac.yml b/.github/workflows/pypi-mac.yml deleted file mode 100644 index db108feea..000000000 --- a/.github/workflows/pypi-mac.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Build macOS Python package - -on: - push: - pull_request: - release: - types: - - created - -jobs: - build: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [macos-11, macos-12] - architecture: [x64] - python-version: ["3.7", "3.8", "3.9", "3.10"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - architecture: ${{ matrix.architecture }} - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools wheel twine cython - - name: Build Python wheel - run: | - python setup.py bdist_wheel - - name: Upload artifacts for inspection - uses: actions/upload-artifact@v4 - with: - name: wheel_${{ matrix.os }}_${{ matrix.architecture }}_${{ matrix.python-version }} - path: dist/*.whl - - name: Publish sdists and wheels to PyPI - if: ${{ success() && github.event_name == 'release' && github.event.action == 'created' }} - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_KEY }} - run: | - twine upload dist/* diff --git a/.github/workflows/pypi-manylinux.yml b/.github/workflows/pypi-manylinux.yml deleted file mode 100644 index bb428fcc8..000000000 --- a/.github/workflows/pypi-manylinux.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Build manylinux x86_64 Python package - -on: - push: - pull_request: - release: - types: - - created - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: 3.x - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools wheel twine - - name: Build manylinux Python wheels - uses: RalfG/python-wheels-manylinux-build@v0.3.3-manylinux2014_x86_64 - with: - python-versions: 'cp37-cp37m cp38-cp38 cp39-cp39 cp310-cp310' - build-requirements: 'cython' - - name: Upload artifacts for inspection - uses: actions/upload-artifact@v4 - with: - name: manylinux_wheels - path: dist/*-manylinux*.whl - - name: Publish sdists and wheels to PyPI - if: ${{ success() && github.event_name == 'release' && github.event.action == 'created' }} - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_KEY }} - run: | - twine upload dist/*-manylinux*.whl diff --git a/.github/workflows/pypi-sdist.yml b/.github/workflows/pypi-sdist.yml deleted file mode 100644 index e1822e36f..000000000 --- a/.github/workflows/pypi-sdist.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Create sdists package - -on: - push: - pull_request: - release: - types: - - created - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: 3.x - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools wheel twine - - name: Create sdist - run: | - python setup.py sdist - - name: Upload artifacts for inspection - uses: actions/upload-artifact@v4 - with: - name: sdist - path: dist/*.tar.gz - - name: Publish sdists and wheels to PyPI - if: ${{ success() && github.event_name == 'release' && github.event.action == 'created' }} - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_KEY }} - run: | - twine upload dist/* diff --git a/.github/workflows/pypi-win.yml b/.github/workflows/pypi-win.yml deleted file mode 100644 index 31a4874e9..000000000 --- a/.github/workflows/pypi-win.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Build Windows Python package - -on: - push: - pull_request: - release: - types: - - created - -jobs: - build: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [windows-latest] - architecture: [x64, x86] - python-version: ["3.8", "3.9", "3.10", "3.11"] - - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - architecture: ${{ matrix.architecture }} - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip setuptools wheel twine cython - - name: Build Python wheel - run: | - python setup.py bdist_wheel - - name: Upload artifacts for inspection - uses: actions/upload-artifact@v4 - with: - name: wheel_${{ matrix.os }}_${{ matrix.architecture }}_${{ matrix.python-version }} - path: dist/*.whl - - name: Publish sdists and wheels to PyPI - if: ${{ success() && github.event_name == 'release' && github.event.action == 'created' }} - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_KEY }} - run: | - twine upload dist/* From fc4db017d20cf1f2e15a22c4540d2d5b3257424f Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 2 Feb 2024 20:15:24 +0100 Subject: [PATCH 07/10] Revert "Stop ignoring gcoder_line cruft" This reverts commit 837d34ecf57c823f75667b5b7fa9fa426d187c48. --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 84b56a4b2..e19383990 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,9 @@ prontserve-env pronterface.spec pronsole.spec plater.spec +printrun/gcoder_line.c +printrun/gcoder_line*.so +printrun/gcoder_line*.pyd .project .pydevproject /build/ From b88db4bff6d7bd030d9d2b65c5e6199905f991ff Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 26 Jan 2024 19:06:37 +0100 Subject: [PATCH 08/10] ci: Remove macos-11 runner on wheel build Both macos runners produce the same wheels and are therefore redundant. --- .github/workflows/build-wheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index e34c58ee7..187417efd 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -1,4 +1,4 @@ -name: Build sdist and wheels +name: Build Python sdist and wheels on: pull_request: @@ -13,7 +13,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-22.04, windows-2022, macos-11, macos-12] + os: [ubuntu-22.04, windows-2022, macos-12] steps: - uses: actions/checkout@v4 From cfcbad511b35bfff416678193306ab260c1ed272 Mon Sep 17 00:00:00 2001 From: Rock Storm Date: Fri, 2 Feb 2024 20:12:38 +0100 Subject: [PATCH 09/10] ci: Produce macOS app with capital P Thanks to @neofelis2X --- .github/workflows/buildpackage-mac.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/buildpackage-mac.yml b/.github/workflows/buildpackage-mac.yml index 203da0f94..bcafa9441 100644 --- a/.github/workflows/buildpackage-mac.yml +++ b/.github/workflows/buildpackage-mac.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: - os: [macos-11, macos-12] + os: [macos-12] architecture: [x64] python-version: ['3.10'] @@ -33,11 +33,11 @@ jobs: python setup.py build_ext --inplace - name: Make pyinstaller spec run: | - pyi-makespec --hidden-import="pkg_resources.py2_warn" -F --add-data images/\*:images --add-data \*.png:. --add-data \*.ico:. -w -i P-face.icns pronterface.py + pyi-makespec --hidden-import="pkg_resources.py2_warn" -F --add-data images/\*:images --add-data \*.png:. --add-data \*.ico:. --name Pronterface -w -i P-face.icns pronterface.py # Edit spec file export git_hash=$(git rev-parse --short "$GITHUB_SHA") - sed -i '' '$ s/.$//' pronterface.spec - cat >> pronterface.spec <> Pronterface.spec < Date: Sat, 10 Feb 2024 09:53:58 +0100 Subject: [PATCH 10/10] ci: Bump pypa/cibuildwheel from 2.16.2 to 2.16.5 --- .github/workflows/build-wheels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 187417efd..47060d5df 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -25,11 +25,11 @@ jobs: platforms: all - name: Build ${{ matrix.os }} wheels - uses: pypa/cibuildwheel@v2.16.2 + uses: pypa/cibuildwheel@v2.16.5 env: # we only support what's supported by wxPython, therefore we skip: # * PyPy Python implementation - # * Python 3.6 nor 3.7 versions + # * Python 3.6 and 3.7 versions # * musl C implementation CIBW_SKIP: "pp* cp36* cp37* *-musllinux*" # produce ARM wheels on Linux in addition to 32 and 64 bit