From 78dfbd3c2ac9af00628afb2a89b8d1effe41f250 Mon Sep 17 00:00:00 2001 From: scaramallion Date: Tue, 29 Oct 2024 09:37:43 +1100 Subject: [PATCH 1/3] Test build --- .github/workflows/release-wheels.yml | 377 ++++++++++++++------------- 1 file changed, 189 insertions(+), 188 deletions(-) diff --git a/.github/workflows/release-wheels.yml b/.github/workflows/release-wheels.yml index ddbf1ab..18379dc 100644 --- a/.github/workflows/release-wheels.yml +++ b/.github/workflows/release-wheels.yml @@ -3,9 +3,9 @@ name: release-deploy on: release: types: [ published ] - # push: - # branches: [ main ] - # pull_request: + push: + branches: [ main ] + pull_request: jobs: build-sdist: @@ -42,77 +42,77 @@ jobs: matrix: include: # Windows 32 bit - - os: windows-latest - python: 39 - platform_id: win32 - - os: windows-latest - python: 310 - platform_id: win32 - - os: windows-latest - python: 311 - platform_id: win32 - - os: windows-latest - python: 312 - platform_id: win32 - - os: windows-latest - python: 313 - platform_id: win32 - - # Windows 64 bit - - os: windows-latest - python: 39 - platform_id: win_amd64 - - os: windows-latest - python: 310 - platform_id: win_amd64 - - os: windows-latest - python: 311 - platform_id: win_amd64 - - os: windows-latest - python: 312 - platform_id: win_amd64 - - os: windows-latest - python: 313 - 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 - manylinux_image: manylinux2014 - - os: ubuntu-latest - python: 311 - platform_id: manylinux_x86_64 - manylinux_image: manylinux2014 - - os: ubuntu-latest - python: 312 - platform_id: manylinux_x86_64 - manylinux_image: manylinux2014 - - os: ubuntu-latest - python: 313 - 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 - - os: ubuntu-latest - python: 311 - platform_id: manylinux_aarch64 - - os: ubuntu-latest - python: 312 - platform_id: manylinux_aarch64 - - os: ubuntu-latest - python: 313 - platform_id: manylinux_aarch64 + # - os: windows-latest + # python: 39 + # platform_id: win32 + # - os: windows-latest + # python: 310 + # platform_id: win32 + # - os: windows-latest + # python: 311 + # platform_id: win32 + # - os: windows-latest + # python: 312 + # platform_id: win32 + # - os: windows-latest + # python: 313 + # platform_id: win32 + # + # # Windows 64 bit + # - os: windows-latest + # python: 39 + # platform_id: win_amd64 + # - os: windows-latest + # python: 310 + # platform_id: win_amd64 + # - os: windows-latest + # python: 311 + # platform_id: win_amd64 + # - os: windows-latest + # python: 312 + # platform_id: win_amd64 + # - os: windows-latest + # python: 313 + # 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 + # manylinux_image: manylinux2014 + # - os: ubuntu-latest + # python: 311 + # platform_id: manylinux_x86_64 + # manylinux_image: manylinux2014 + # - os: ubuntu-latest + # python: 312 + # platform_id: manylinux_x86_64 + # manylinux_image: manylinux2014 + # - os: ubuntu-latest + # python: 313 + # 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 + # - os: ubuntu-latest + # python: 311 + # platform_id: manylinux_aarch64 + # - os: ubuntu-latest + # python: 312 + # platform_id: manylinux_aarch64 + # - os: ubuntu-latest + # python: 313 + # platform_id: manylinux_aarch64 # MacOS 12 x86_64 - os: macos-12 @@ -171,122 +171,123 @@ jobs: name: wheel-${{ matrix.python }}-${{ matrix.platform_id }} path: ./dist - build-wheels-macos-arm64: - name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - include: - # MacOS 14 arm64 - - os: macos-14 - python: 39 - platform_id: macosx_arm64 - - os: macos-14 - python: 310 - platform_id: macosx_arm64 - - os: macos-14 - python: 311 - platform_id: macosx_arm64 - - os: macos-14 - python: 312 - platform_id: macosx_arm64 - - os: macos-14 - python: 313 - platform_id: macosx_arm64 - - steps: - - uses: actions/checkout@v4 - with: - submodules: true - - - uses: actions/setup-python@v5 - name: Install Python - with: - python-version: '3.9' - - - name: Install cibuildwheel - run: python -m pip install cibuildwheel>=2.21 wheel>=0.42 - - - name: Build wheels - env: - CIBW_BUILD: cp${{ matrix.python }}-* - CIBW_ARCHS_MACOS: arm64 - CIBW_BUILD_VERBOSITY: 1 - run: | - python -m cibuildwheel --output-dir dist + # build-wheels-macos-arm64: + # name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }} + # runs-on: ${{ matrix.os }} + # strategy: + # fail-fast: false + # matrix: + # include: + # # MacOS 14 arm64 + # - os: macos-14 + # python: 39 + # platform_id: macosx_arm64 + # - os: macos-14 + # python: 310 + # platform_id: macosx_arm64 + # - os: macos-14 + # python: 311 + # platform_id: macosx_arm64 + # - os: macos-14 + # python: 312 + # platform_id: macosx_arm64 + # - os: macos-14 + # python: 313 + # platform_id: macosx_arm64 + # + # steps: + # - uses: actions/checkout@v4 + # with: + # submodules: true + # + # - uses: actions/setup-python@v5 + # name: Install Python + # with: + # python-version: '3.9' + # + # - name: Install cibuildwheel + # run: python -m pip install cibuildwheel>=2.21 wheel>=0.42 + # + # - name: Build wheels + # env: + # CIBW_BUILD: cp${{ matrix.python }}-* + # CIBW_ARCHS_MACOS: arm64 + # CIBW_BUILD_VERBOSITY: 1 + # run: | + # python -m cibuildwheel --output-dir dist + # + # - name: Store artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: wheel-${{ matrix.python }}-${{ matrix.platform_id }} + # path: ./dist/*.whl - - name: Store artifacts - uses: actions/upload-artifact@v4 - with: - name: wheel-${{ matrix.python }}-${{ matrix.platform_id }} - path: ./dist/*.whl - - test-package: - name: Test built package - needs: [ build-wheels, build-sdist, build-wheels-macos-arm64 ] - runs-on: ubuntu-latest - timeout-minutes: 30 - strategy: - fail-fast: false - matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] - - steps: - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: Download the wheels - uses: actions/download-artifact@v4 - with: - path: dist/ - merge-multiple: true - - - name: Install from package wheels and test - run: | - python -m venv testwhl - source testwhl/bin/activate - python -m pip install -U pip - python -m pip install pytest pydicom pylibjpeg - python -m pip uninstall -y pylibjpeg-openjpeg - python -m pip install git+https://github.com/pydicom/pylibjpeg-data - python -m pip install -U --pre --find-links dist/ pylibjpeg-openjpeg - python -m pytest --pyargs openjpeg.tests - deactivate - - - name: Install from package tarball and test - run: | - python -m venv testsrc - source testsrc/bin/activate - python -m pip install -U pip - python -m pip install pytest pydicom pylibjpeg - python -m pip uninstall -y pylibjpeg-openjpeg - python -m pip install git+https://github.com/pydicom/pylibjpeg-data - python -m pip install -U dist/pylibjpeg*openjpeg-*.tar.gz - python -m pytest --pyargs openjpeg.tests - deactivate + # test-package: + # name: Test built package + # needs: [ build-wheels, build-sdist, build-wheels-macos-arm64 ] + # runs-on: ubuntu-latest + # timeout-minutes: 30 + # strategy: + # fail-fast: false + # matrix: + # python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + # + # steps: + # - name: Set up Python ${{ matrix.python-version }} + # uses: actions/setup-python@v5 + # with: + # python-version: ${{ matrix.python-version }} + # + # - name: Download the wheels + # uses: actions/download-artifact@v4 + # with: + # path: dist/ + # merge-multiple: true + # + # - name: Install from package wheels and test + # run: | + # python -m venv testwhl + # source testwhl/bin/activate + # python -m pip install -U pip + # python -m pip install pytest pydicom pylibjpeg + # python -m pip uninstall -y pylibjpeg-openjpeg + # python -m pip install git+https://github.com/pydicom/pylibjpeg-data + # python -m pip install -U --pre --find-links dist/ pylibjpeg-openjpeg + # python -m pytest --pyargs openjpeg.tests + # deactivate + # + # - name: Install from package tarball and test + # run: | + # python -m venv testsrc + # source testsrc/bin/activate + # python -m pip install -U pip + # python -m pip install pytest pydicom pylibjpeg + # python -m pip uninstall -y pylibjpeg-openjpeg + # python -m pip install git+https://github.com/pydicom/pylibjpeg-data + # python -m pip install -U dist/pylibjpeg*openjpeg-*.tar.gz + # python -m pytest --pyargs openjpeg.tests + # deactivate # The pypi upload fails with non-linux containers, so grab the uploaded # artifacts and run using those # See: https://github.com/pypa/gh-action-pypi-publish/discussions/15 - deploy: - name: Upload wheels to PyPI - needs: [ test-package ] - runs-on: ubuntu-latest - environment: - name: pypi - url: https://pypi.org/project/pylibjpeg-openjpeg/ - permissions: - id-token: write - - steps: - - name: Download the wheels - uses: actions/download-artifact@v4 - with: - path: dist/ - merge-multiple: true - - - name: Publish package to PyPi - uses: pypa/gh-action-pypi-publish@release/v1 + # deploy: + # name: Upload wheels to PyPI + # # needs: [ test-package ] + # needs: [ build-wheels, build-sdist, build-wheels-macos-arm64 ] + # runs-on: ubuntu-latest + # environment: + # name: pypi + # url: https://pypi.org/project/pylibjpeg-openjpeg/ + # permissions: + # id-token: write + # + # steps: + # - name: Download the wheels + # uses: actions/download-artifact@v4 + # with: + # path: dist/ + # merge-multiple: true + # + # - name: Publish package to PyPi + # uses: pypa/gh-action-pypi-publish@release/v1 From fe91d45243013d5d4790d7a38dc21cd1d5988b81 Mon Sep 17 00:00:00 2001 From: scaramallion Date: Tue, 29 Oct 2024 09:43:42 +1100 Subject: [PATCH 2/3] Finalise --- .github/workflows/release-wheels.yml | 294 +++++++++++++-------------- docs/changes/v2.4.0.rst | 8 - 2 files changed, 147 insertions(+), 155 deletions(-) diff --git a/.github/workflows/release-wheels.yml b/.github/workflows/release-wheels.yml index 18379dc..30a40b7 100644 --- a/.github/workflows/release-wheels.yml +++ b/.github/workflows/release-wheels.yml @@ -42,92 +42,92 @@ jobs: matrix: include: # Windows 32 bit - # - os: windows-latest - # python: 39 - # platform_id: win32 - # - os: windows-latest - # python: 310 - # platform_id: win32 - # - os: windows-latest - # python: 311 - # platform_id: win32 - # - os: windows-latest - # python: 312 - # platform_id: win32 - # - os: windows-latest - # python: 313 - # platform_id: win32 - # - # # Windows 64 bit - # - os: windows-latest - # python: 39 - # platform_id: win_amd64 - # - os: windows-latest - # python: 310 - # platform_id: win_amd64 - # - os: windows-latest - # python: 311 - # platform_id: win_amd64 - # - os: windows-latest - # python: 312 - # platform_id: win_amd64 - # - os: windows-latest - # python: 313 - # 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 - # manylinux_image: manylinux2014 - # - os: ubuntu-latest - # python: 311 - # platform_id: manylinux_x86_64 - # manylinux_image: manylinux2014 - # - os: ubuntu-latest - # python: 312 - # platform_id: manylinux_x86_64 - # manylinux_image: manylinux2014 - # - os: ubuntu-latest - # python: 313 - # 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 - # - os: ubuntu-latest - # python: 311 - # platform_id: manylinux_aarch64 - # - os: ubuntu-latest - # python: 312 - # platform_id: manylinux_aarch64 - # - os: ubuntu-latest - # python: 313 - # platform_id: manylinux_aarch64 + - os: windows-latest + python: 39 + platform_id: win32 + - os: windows-latest + python: 310 + platform_id: win32 + - os: windows-latest + python: 311 + platform_id: win32 + - os: windows-latest + python: 312 + platform_id: win32 + - os: windows-latest + python: 313 + platform_id: win32 + + # Windows 64 bit + - os: windows-latest + python: 39 + platform_id: win_amd64 + - os: windows-latest + python: 310 + platform_id: win_amd64 + - os: windows-latest + python: 311 + platform_id: win_amd64 + - os: windows-latest + python: 312 + platform_id: win_amd64 + - os: windows-latest + python: 313 + 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 + manylinux_image: manylinux2014 + - os: ubuntu-latest + python: 311 + platform_id: manylinux_x86_64 + manylinux_image: manylinux2014 + - os: ubuntu-latest + python: 312 + platform_id: manylinux_x86_64 + manylinux_image: manylinux2014 + - os: ubuntu-latest + python: 313 + platform_id: manylinux_x86_64 + manylinux_image: manylinux2014 - # MacOS 12 x86_64 - - os: macos-12 + # Linux aarch64 + - os: ubuntu-latest + python: 39 + platform_id: manylinux_aarch64 + - os: ubuntu-latest + python: 310 + platform_id: manylinux_aarch64 + - os: ubuntu-latest + python: 311 + platform_id: manylinux_aarch64 + - os: ubuntu-latest + python: 312 + platform_id: manylinux_aarch64 + - os: ubuntu-latest + python: 313 + platform_id: manylinux_aarch64 + + # MacOS 13 x86_64 + - os: macos-13 python: 39 platform_id: macosx_x86_64 - - os: macos-12 + - os: macos-13 python: 310 platform_id: macosx_x86_64 - - os: macos-12 + - os: macos-13 python: 311 platform_id: macosx_x86_64 - - os: macos-12 + - os: macos-13 python: 312 platform_id: macosx_x86_64 - - os: macos-12 + - os: macos-13 python: 313 platform_id: macosx_x86_64 @@ -171,56 +171,56 @@ jobs: name: wheel-${{ matrix.python }}-${{ matrix.platform_id }} path: ./dist - # build-wheels-macos-arm64: - # name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }} - # runs-on: ${{ matrix.os }} - # strategy: - # fail-fast: false - # matrix: - # include: - # # MacOS 14 arm64 - # - os: macos-14 - # python: 39 - # platform_id: macosx_arm64 - # - os: macos-14 - # python: 310 - # platform_id: macosx_arm64 - # - os: macos-14 - # python: 311 - # platform_id: macosx_arm64 - # - os: macos-14 - # python: 312 - # platform_id: macosx_arm64 - # - os: macos-14 - # python: 313 - # platform_id: macosx_arm64 - # - # steps: - # - uses: actions/checkout@v4 - # with: - # submodules: true - # - # - uses: actions/setup-python@v5 - # name: Install Python - # with: - # python-version: '3.9' - # - # - name: Install cibuildwheel - # run: python -m pip install cibuildwheel>=2.21 wheel>=0.42 - # - # - name: Build wheels - # env: - # CIBW_BUILD: cp${{ matrix.python }}-* - # CIBW_ARCHS_MACOS: arm64 - # CIBW_BUILD_VERBOSITY: 1 - # run: | - # python -m cibuildwheel --output-dir dist - # - # - name: Store artifacts - # uses: actions/upload-artifact@v4 - # with: - # name: wheel-${{ matrix.python }}-${{ matrix.platform_id }} - # path: ./dist/*.whl + build-wheels-macos-arm64: + name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # MacOS 14 arm64 + - os: macos-14 + python: 39 + platform_id: macosx_arm64 + - os: macos-14 + python: 310 + platform_id: macosx_arm64 + - os: macos-14 + python: 311 + platform_id: macosx_arm64 + - os: macos-14 + python: 312 + platform_id: macosx_arm64 + - os: macos-14 + python: 313 + platform_id: macosx_arm64 + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - uses: actions/setup-python@v5 + name: Install Python + with: + python-version: '3.9' + + - name: Install cibuildwheel + run: python -m pip install cibuildwheel>=2.21 wheel>=0.42 + + - name: Build wheels + env: + CIBW_BUILD: cp${{ matrix.python }}-* + CIBW_ARCHS_MACOS: arm64 + CIBW_BUILD_VERBOSITY: 1 + run: | + python -m cibuildwheel --output-dir dist + + - name: Store artifacts + uses: actions/upload-artifact@v4 + with: + name: wheel-${{ matrix.python }}-${{ matrix.platform_id }} + path: ./dist/*.whl # test-package: # name: Test built package @@ -271,23 +271,23 @@ jobs: # The pypi upload fails with non-linux containers, so grab the uploaded # artifacts and run using those # See: https://github.com/pypa/gh-action-pypi-publish/discussions/15 - # deploy: - # name: Upload wheels to PyPI - # # needs: [ test-package ] - # needs: [ build-wheels, build-sdist, build-wheels-macos-arm64 ] - # runs-on: ubuntu-latest - # environment: - # name: pypi - # url: https://pypi.org/project/pylibjpeg-openjpeg/ - # permissions: - # id-token: write - # - # steps: - # - name: Download the wheels - # uses: actions/download-artifact@v4 - # with: - # path: dist/ - # merge-multiple: true - # - # - name: Publish package to PyPi - # uses: pypa/gh-action-pypi-publish@release/v1 + deploy: + name: Upload wheels to PyPI + # needs: [ test-package ] + needs: [ build-wheels, build-sdist, build-wheels-macos-arm64 ] + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/project/pylibjpeg-openjpeg/ + permissions: + id-token: write + + steps: + - name: Download the wheels + uses: actions/download-artifact@v4 + with: + path: dist/ + merge-multiple: true + + - name: Publish package to PyPi + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/docs/changes/v2.4.0.rst b/docs/changes/v2.4.0.rst index 659d9bb..ce6dc04 100644 --- a/docs/changes/v2.4.0.rst +++ b/docs/changes/v2.4.0.rst @@ -10,11 +10,3 @@ Changes * Supported Python versions are 3.9 to 3.13. * NumPy < 2.0 is no longer supported. * Switched to OpenJpeg v2.5.2 - -Known Issues ------------- - -* OpenJpeg seems to be unable to correctly encode image data with more than 16-bit - precision when running on big endian systems -* Encoding images on little endian systems works with up to 24-bit precision, but the - results for lossy encoding can be extremely poor for more than 20+ bits. From d1f1133c4980a488807dad323b7cb67851b3975d Mon Sep 17 00:00:00 2001 From: scaramallion Date: Tue, 29 Oct 2024 09:45:03 +1100 Subject: [PATCH 3/3] Finalise 2 --- .github/workflows/release-wheels.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-wheels.yml b/.github/workflows/release-wheels.yml index 30a40b7..2dd8ad2 100644 --- a/.github/workflows/release-wheels.yml +++ b/.github/workflows/release-wheels.yml @@ -3,9 +3,9 @@ name: release-deploy on: release: types: [ published ] - push: - branches: [ main ] - pull_request: + # push: + # branches: [ main ] + # pull_request: jobs: build-sdist: