diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ad8e703..9621c96 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -10,7 +10,7 @@ jobs: fail-fast: false matrix: os: ["windows-latest", "ubuntu-latest", "macos-latest"] - python-version: ["3.9", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] experimental: [false] include: - python-version: "3.12" @@ -96,4 +96,3 @@ jobs: uses: AndreMiras/coveralls-python-action@develop with: parallel-finished: true - diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index f97dee7..d322907 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -1,9 +1,9 @@ name: Deploy sdist and wheels + on: push: - tags: - - v* + pull_request: release: types: - published @@ -18,7 +18,7 @@ jobs: - name: Create sdist shell: bash -l {0} run: | - pip install -q build + python -m pip install -q build python -m build -s - name: Upload sdist to build artifacts @@ -27,68 +27,46 @@ jobs: name: sdist path: dist/*.tar.gz - build_wheels: + name: "Build wheels on ${{ matrix.os }} ${{ matrix.cibw_archs }}" runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [windows-latest, macos-latest] - python-version: ["3.7", "3.8", "3.9", "3.10"] include: - # Using pythons inside a docker image to provide all the Linux - # python-versions permutations. - - name: manylinux 64-bit - os: ubuntu-latest - python-version: 3.8 - docker-image: manylinux2014_x86_64 + - os: windows-2019 + cibw_archs: "AMD64 ARM64" + - os: macos-11 + cibw_archs: "x86_64 arm64" + - os: "ubuntu-20.04" + cibw_archs: "aarch64" + - os: "ubuntu-20.04" + cibw_archs: "x86_64" steps: - uses: actions/checkout@v4 - run: | git fetch --prune --unshallow - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v3 with: - python-version: "${{ matrix.python-version }}" - - - name: Install dependencies - run: | - python -m pip install -U -q pip Cython wheel setuptools twine numpy build + platforms: all - - name: Build and install macOS/Windows wheel - if: matrix.os != 'ubuntu-latest' - # see https://setuptools.readthedocs.io/en/latest/build_meta.html - run: | - python -m build - pip install --find-links=./dist/ python-geotiepoints - - - name: Build Linux wheels inside docker - if: matrix.os == 'ubuntu-latest' - run: | - docker run \ - -e PLAT=${{ matrix.docker-image }} \ - -e USE_OMP=1 \ - -v `pwd`:/io \ - quay.io/pypa/${{ matrix.docker-image }} \ - /io/continuous_integration/build-manylinux-wheels.sh + - name: Build wheels + uses: pypa/cibuildwheel@v2.16.2 + env: + CIBW_SKIP: "cp36-* cp37-* cp38-* pp* *-manylinux_i686 *-musllinux_i686 *-musllinux_aarch64 *-win32" + CIBW_ARCHS: "${{ matrix.cibw_archs }}" + CIBW_TEST_SKIP: "*_arm64 *_universal2:arm64" - - name: Check version number from inside wheel - if: matrix.docker-image != 'manylinux2014_i686' - run: | - mv geotiepoints unused_src_to_prevent_local_import - python -m pip install --find-links=./dist/ python-geotiepoints - python -c "import geotiepoints; print(geotiepoints.__file__, geotiepoints.__version__)" - python -c "import geotiepoints; assert 'unknown' not in geotiepoints.__version__, 'incorrect version found'" - - - name: Upload wheel(s) as build artifacts - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v3 with: name: wheels - path: dist/*.whl + path: ./wheelhouse/*.whl - upload_test_pypi: + upload_to_pypi: needs: [build_sdist, build_wheels] runs-on: ubuntu-latest steps: @@ -102,28 +80,13 @@ jobs: with: name: wheels path: dist - - name: Publish package to PyPI - if: github.event.action != 'published' + - name: Publish package to Test PyPI + if: github.event.action != 'published' && github.event_name == 'push' uses: pypa/gh-action-pypi-publish@v1.8.10 with: user: __token__ password: ${{ secrets.test_pypi_password }} repository_url: https://test.pypi.org/legacy/ - - upload_pypi: - needs: [build_sdist, build_wheels] - runs-on: ubuntu-latest - steps: - - name: Download sdist artifact - uses: actions/download-artifact@v3 - with: - name: sdist - path: dist - - name: Download wheels artifact - uses: actions/download-artifact@v3 - with: - name: wheels - path: dist - name: Publish package to PyPI if: github.event.action == 'published' uses: pypa/gh-action-pypi-publish@v1.8.10 diff --git a/setup.py b/setup.py index f686720..a397172 100644 --- a/setup.py +++ b/setup.py @@ -105,7 +105,7 @@ "Topic :: Scientific/Engineering"], url="https://github.com/pytroll/python-geotiepoints", packages=find_packages(), - python_requires='>=3.9', + python_requires='>=3.10', cmdclass=cmdclass, install_requires=requirements, ext_modules=EXTENSIONS,