diff --git a/.github/workflows/pytest-builds.yml b/.github/workflows/pytest-builds.yml index a36e55c..c2d8d06 100644 --- a/.github/workflows/pytest-builds.yml +++ b/.github/workflows/pytest-builds.yml @@ -12,7 +12,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.10', '3.11', '3.12', '3.13'] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] arch: ['x64', 'x86'] steps: @@ -50,7 +50,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.10', '3.11', '3.12', '3.13'] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v6 @@ -86,7 +86,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.10', '3.11', '3.12', '3.13'] + python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v6 @@ -117,7 +117,7 @@ jobs: pytest --cov=libjpeg --cov-append libjpeg/tests - name: Switch to pydicom dev and rerun pytest - if: ${{ contains('3.10 3.11 3.12 3.13', matrix.python-version) }} + if: ${{ contains('3.10 3.11 3.12 3.13 3.14', matrix.python-version) }} run: | pip uninstall -y pydicom pip install git+https://github.com/pydicom/pydicom diff --git a/.github/workflows/release-wheels.yml b/.github/workflows/release-wheels.yml index d35852b..a41698d 100644 --- a/.github/workflows/release-wheels.yml +++ b/.github/workflows/release-wheels.yml @@ -20,7 +20,7 @@ jobs: - uses: actions/setup-python@v6 name: Install Python with: - python-version: '3.10' + python-version: '3.11' - name: Build sdist run: | @@ -29,7 +29,7 @@ jobs: poetry build -f sdist - name: Store artifacts - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: sdist path: ./dist @@ -42,9 +42,6 @@ jobs: matrix: include: # Windows 32 bit - - os: windows-latest - python: 39 - platform_id: win32 - os: windows-latest python: 310 platform_id: win32 @@ -57,11 +54,11 @@ jobs: - os: windows-latest python: 313 platform_id: win32 + - os: windows-latest + python: 314 + platform_id: win32 # Windows 64 bit - - os: windows-latest - python: 39 - platform_id: win_amd64 - os: windows-latest python: 310 platform_id: win_amd64 @@ -74,12 +71,11 @@ jobs: - os: windows-latest python: 313 platform_id: win_amd64 + - os: windows-latest + python: 314 + platform_id: win_amd64 # Linux 64 bit manylinux2014 - - os: ubuntu-latest - python: 39 - platform_id: manylinux_x86_64 - manylinux_image: manylinux2014 - os: ubuntu-latest python: 310 platform_id: manylinux_x86_64 @@ -96,11 +92,12 @@ jobs: python: 313 platform_id: manylinux_x86_64 manylinux_image: manylinux2014 + - os: ubuntu-latest + python: 314 + platform_id: manylinux_x86_64 + manylinux_image: manylinux2014 # Linux aarch64 - - os: ubuntu-latest - python: 39 - platform_id: manylinux_aarch64 - os: ubuntu-latest python: 310 platform_id: manylinux_aarch64 @@ -113,23 +110,26 @@ jobs: - os: ubuntu-latest python: 313 platform_id: manylinux_aarch64 + - os: ubuntu-latest + python: 314 + platform_id: manylinux_aarch64 # MacOS x86_64 - - os: macos-12 - python: 39 - platform_id: macosx_x86_64 - - os: macos-12 + - os: macos-26-intel python: 310 platform_id: macosx_x86_64 - - os: macos-12 + - os: macos-26-intel python: 311 platform_id: macosx_x86_64 - - os: macos-12 + - os: macos-26-intel python: 312 platform_id: macosx_x86_64 - - os: macos-12 + - os: macos-26-intel python: 313 platform_id: macosx_x86_64 + - os: macos-26-intel + python: 314 + platform_id: macosx_x86_64 steps: - uses: actions/checkout@v6 @@ -145,12 +145,12 @@ jobs: - uses: actions/setup-python@v6 name: Install Python with: - python-version: '3.9' + python-version: '3.11' - name: Install cibuildwheel run: | python -m pip install -U pip - python -m pip install cibuildwheel>=2.21 + python -m pip install cibuildwheel>=3.4 - name: Build wheels env: @@ -165,7 +165,7 @@ jobs: python -m cibuildwheel --output-dir dist - name: Store artifacts - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: wheel-${{ matrix.python }}-${{ matrix.platform_id }} path: ./dist @@ -178,9 +178,6 @@ jobs: matrix: include: # MacOS arm64 - - os: macos-14 - python: 39 - platform_id: macosx_arm64 - os: macos-14 python: 310 platform_id: macosx_arm64 @@ -193,6 +190,9 @@ jobs: - os: macos-14 python: 313 platform_id: macosx_arm64 + - os: macos-14 + python: 314 + platform_id: macosx_arm64 steps: - uses: actions/checkout@v6 @@ -202,10 +202,10 @@ jobs: - uses: actions/setup-python@v6 name: Install Python with: - python-version: '3.9' + python-version: '3.11' - name: Install cibuildwheel - run: python -m pip install cibuildwheel>=2.21 wheel>=0.42 + run: python -m pip install cibuildwheel>=3.4 wheel>=0.42 - name: Build wheels env: @@ -216,7 +216,7 @@ jobs: python -m cibuildwheel --output-dir dist - name: Store artifacts - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: wheel-${{ matrix.python }}-${{ matrix.platform_id }} path: ./dist/*.whl @@ -239,7 +239,7 @@ jobs: # python-version: ${{ matrix.python-version }} # # - name: Download the wheels - # uses: actions/download-artifact@v7 + # uses: actions/download-artifact@v8 # with: # path: dist/ # merge-multiple: true @@ -287,7 +287,7 @@ jobs: steps: - name: Download the wheels - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: path: dist/ merge-multiple: true diff --git a/build.py b/build_libjpeg.py similarity index 100% rename from build.py rename to build_libjpeg.py diff --git a/docs/changes/v2.4.0.rst b/docs/changes/v2.4.0.rst new file mode 100644 index 0000000..ae97080 --- /dev/null +++ b/docs/changes/v2.4.0.rst @@ -0,0 +1,7 @@ +.. _v2.4.0: + +2.4.0 +===== + +* Added support for Python 3.14 and dropped 3.9 +* Updated to v1.71 of libjpeg diff --git a/lib/libjpeg b/lib/libjpeg index b911ba5..25f7128 160000 --- a/lib/libjpeg +++ b/lib/libjpeg @@ -1 +1 @@ -Subproject commit b911ba54feae159efd1adceda7b07e5a1db611da +Subproject commit 25f71280913fde7400801772bbf885bb3e873242 diff --git a/pyproject.toml b/pyproject.toml index 28d5088..e36ce12 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ requires = [ build-backend = "poetry.core.masonry.api" [tool.poetry.build] -script = "build.py" +script = "build_libjpeg.py" generate-setup-file = true @@ -22,11 +22,11 @@ classifiers=[ "Development Status :: 5 - Production/Stable", "Natural Language :: English", "Programming Language :: C++", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Operating System :: Microsoft :: Windows", @@ -56,10 +56,10 @@ packages = [ { include = "libjpeg" }, ] readme = "README.md" -version = "2.3.0" +version = "2.4.0" [tool.poetry.dependencies] -python = "^3.9" +python = "^3.10" numpy = "^2.0" [tool.poetry.plugins."pylibjpeg.jpeg_decoders"] @@ -86,7 +86,7 @@ omit = [ ] [tool.mypy] -python_version = "3.9" +python_version = "3.10" files = "libjpeg" exclude = ["libjpeg/tests"] show_error_codes = true