From 5ff326b27749424f6a29f3867726a1f2004fe998 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Thu, 12 Feb 2026 16:25:07 -0700 Subject: [PATCH 1/8] bump cibuildwheel and build python 3.14 --- .github/workflows/build-and-deploy.yml | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index 17893dc..024de04 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -74,7 +74,7 @@ jobs: shell: pwsh - name: Build wheels - uses: pypa/cibuildwheel@v2.22.0 + uses: pypa/cibuildwheel@v3.3.1 env: CIBW_ENVIRONMENT_WINDOWS: 'OpenCV_DIR="D:/a/magsac/magsac/opencv/build" Eigen3_DIR="C:/eigen3" gflags_DIR=D:/a/magsac/magsac/gflags/build_' CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -w {dest_dir} {wheel} --add-path D:/a/magsac/magsac/opencv/build/bin" diff --git a/pyproject.toml b/pyproject.toml index cfb80c9..0ff18db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ testpaths = 'tests' [tool.cibuildwheel] archs = ["auto64"] # 64-bit only -build = "cp39-* cp310-* cp311-* cp312-* cp313-*" # Only build Python 3.9-3.13 wheels +build = "cp310-* cp311-* cp312-* cp313-* cp314-*" # Only build Python 3.10-3.14 wheels skip = ["pp*", "*musllinux*"] # disable PyPy and musl-based wheels manylinux-x86_64-image = "ghcr.io/akaszynski/manylinux2014-centos7-opencv/manylinux2014_x86_64_opencv3:v3.4.5.2" test-requires = "pytest" From 015c95569a5fb4df3b6a9d99820adfff884a616d Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Thu, 12 Feb 2026 16:25:21 -0700 Subject: [PATCH 2/8] update pre-commit --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 95597ff..c1fc737 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: # Validate github workflow files - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.29.4 + rev: 0.36.1 hooks: - id: check-github-workflows From b9eb97467f006bc5e95f679e3d61fb70a51eee31 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Thu, 12 Feb 2026 16:31:25 -0700 Subject: [PATCH 3/8] add missing license in setup.py --- setup.py | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/setup.py b/setup.py index 6fd6c5d..f0efed2 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ """Setup for pymagsac.""" + import sys from setuptools import setup, find_packages @@ -7,28 +8,35 @@ try: from skbuild import setup except ImportError: - print("Please update pip to pip 10 or greater, or a manually install the PEP 518 requirements in pyproject.toml", file=sys.stderr) + print( + "Please update pip to pip 10 or greater, or a manually install the PEP 518 requirements in pyproject.toml", + file=sys.stderr, + ) raise cmake_args = [] debug = False -cfg = 'Debug' if debug else 'Release' -cmake_args += ['-DCMAKE_BUILD_TYPE=' + cfg] -cmake_args += ['-DCREATE_SAMPLE_PROJECT=OFF'] # <-- Disable the sample project - +cfg = "Debug" if debug else "Release" +cmake_args += ["-DCMAKE_BUILD_TYPE=" + cfg] +cmake_args += ["-DCREATE_SAMPLE_PROJECT=OFF"] # <-- Disable the sample project + setup( - name='pymagsac', - version='0.3.dev0', - author='Daniel Barath, Dmytro Mishkin', - author_email='barath.daniel@sztaki.hu', - description='MAGSAC and MAGSAC++', + name="pymagsac", + version="0.3.dev0", + author="Daniel Barath, Dmytro Mishkin", + author_email="barath.daniel@sztaki.hu", + description="MAGSAC and MAGSAC++", long_description=open("README.md").read(), long_description_content_type="text/markdown", - packages=find_packages('src'), - package_dir={'':'src'}, + packages=find_packages("src"), + license="BSD-3-Clause", + classifiers=[ + "License :: OSI Approved :: BSD License", + ], + package_dir={"": "src"}, cmake_args=cmake_args, cmake_install_dir="src/pymagsac", - cmake_install_target='install', + cmake_install_target="install", zip_safe=False, install_requires="numpy", ) From 10203a732197dc4f32ce5da81f12fc5c90a57091 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Thu, 12 Feb 2026 16:52:39 -0700 Subject: [PATCH 4/8] bump image --- .github/workflows/build-and-deploy.yml | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index 024de04..6aa1878 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -79,7 +79,7 @@ jobs: CIBW_ENVIRONMENT_WINDOWS: 'OpenCV_DIR="D:/a/magsac/magsac/opencv/build" Eigen3_DIR="C:/eigen3" gflags_DIR=D:/a/magsac/magsac/gflags/build_' CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -w {dest_dir} {wheel} --add-path D:/a/magsac/magsac/opencv/build/bin" - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v6 with: name: pymagsac-wheels-${{ runner.os }} path: ./wheelhouse/*.whl @@ -88,7 +88,7 @@ jobs: name: Build source distribution runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: 'recursive' @@ -102,7 +102,7 @@ jobs: pip install twine twine check dist/* - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v6 with: name: pygcransac-sdist path: dist/*.tar.gz @@ -116,7 +116,7 @@ jobs: id-token: write # this permission is mandatory for trusted publishing contents: write # required for creating releases steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v7 - name: Flatten directory structure run: | diff --git a/pyproject.toml b/pyproject.toml index 0ff18db..8740110 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ testpaths = 'tests' archs = ["auto64"] # 64-bit only build = "cp310-* cp311-* cp312-* cp313-* cp314-*" # Only build Python 3.10-3.14 wheels skip = ["pp*", "*musllinux*"] # disable PyPy and musl-based wheels -manylinux-x86_64-image = "ghcr.io/akaszynski/manylinux2014-centos7-opencv/manylinux2014_x86_64_opencv3:v3.4.5.2" +manylinux-x86_64-image = "ghcr.io/akaszynski/manylinux2014-centos7-opencv/manylinux2014_x86_64_opencv3:v3.4.5.3" test-requires = "pytest" test-command = "pytest {project}/tests" From 1f5830e82bf481b9b7b5a9b6b066d7e76e8cda05 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Thu, 12 Feb 2026 16:58:30 -0700 Subject: [PATCH 5/8] remove TestCommand --- setup.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/setup.py b/setup.py index f0efed2..4026bf0 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,6 @@ import sys from setuptools import setup, find_packages -from setuptools.command.test import test as TestCommand try: from skbuild import setup @@ -30,9 +29,6 @@ long_description_content_type="text/markdown", packages=find_packages("src"), license="BSD-3-Clause", - classifiers=[ - "License :: OSI Approved :: BSD License", - ], package_dir={"": "src"}, cmake_args=cmake_args, cmake_install_dir="src/pymagsac", From e97c874333c79f9959dadfea3821dd2028f4f9db Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Thu, 12 Feb 2026 17:07:16 -0700 Subject: [PATCH 6/8] use license file --- pyproject.toml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8740110..43c5b4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ testpaths = 'tests' archs = ["auto64"] # 64-bit only build = "cp310-* cp311-* cp312-* cp313-* cp314-*" # Only build Python 3.10-3.14 wheels skip = ["pp*", "*musllinux*"] # disable PyPy and musl-based wheels -manylinux-x86_64-image = "ghcr.io/akaszynski/manylinux2014-centos7-opencv/manylinux2014_x86_64_opencv3:v3.4.5.3" +manylinux-x86_64-image = "ghcr.io/akaszynski/manylinux2014-centos7-opencv/manylinux2014_x86_64_opencv3:v3.4.5.4" test-requires = "pytest" test-command = "pytest {project}/tests" diff --git a/setup.py b/setup.py index 4026bf0..9b3368a 100644 --- a/setup.py +++ b/setup.py @@ -28,7 +28,7 @@ long_description=open("README.md").read(), long_description_content_type="text/markdown", packages=find_packages("src"), - license="BSD-3-Clause", + license_file="LICENSE", package_dir={"": "src"}, cmake_args=cmake_args, cmake_install_dir="src/pymagsac", From cf0e51f8827290ef9e9195d4937cdd1cdcc6c7c6 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Thu, 12 Feb 2026 17:08:43 -0700 Subject: [PATCH 7/8] skip validation --- .github/workflows/build-and-deploy.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index 6aa1878..d60a2b4 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -17,6 +17,7 @@ jobs: name: Build wheels on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: [ubuntu-latest, windows-latest] @@ -97,10 +98,10 @@ jobs: rm -rf build # remove conflicting directory pipx run build --sdist - - name: Validate - run: | - pip install twine - twine check dist/* + # - name: Validate + # run: | + # pip install twine + # twine check dist/* - uses: actions/upload-artifact@v6 with: From 668b6ee5bb698caa0ad95cd2891d759b998cb3c5 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Thu, 12 Feb 2026 17:29:06 -0700 Subject: [PATCH 8/8] specify python version when checking dist --- .github/workflows/build-and-deploy.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index d60a2b4..5ab4a67 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -93,15 +93,20 @@ jobs: with: submodules: 'recursive' - - name: Build + - name: Setup Python + uses: actions/setup-python@v6 + with: + python-version: '3.14' + + - name: Build source distribution run: | - rm -rf build # remove conflicting directory - pipx run build --sdist + pip install build + python -m build --sdist - # - name: Validate - # run: | - # pip install twine - # twine check dist/* + - name: Validate + run: | + pip install twine + python -m twine check dist/* - uses: actions/upload-artifact@v6 with: