From be71b5692d5130b652e8c787e69093cd340de07b Mon Sep 17 00:00:00 2001 From: Eva Maxfield Brown Date: Tue, 15 Nov 2022 20:28:00 -0800 Subject: [PATCH 01/11] Support Py311 --- .github/workflows/build-main.yml | 8 ++++---- .github/workflows/test-and-lint.yml | 8 ++++---- .github/workflows/test-upstreams.yml | 2 +- setup.py | 1 + 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-main.yml b/.github/workflows/build-main.yml index f58c242d8..0a0e29bfa 100644 --- a/.github/workflows/build-main.yml +++ b/.github/workflows/build-main.yml @@ -17,7 +17,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.8, 3.9, '3.10'] + python-version: [3.8, 3.9, '3.10', 3.11] os: [ ubuntu-20.04, windows-latest, @@ -55,7 +55,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.8, 3.9, '3.10'] + python-version: [3.8, 3.9, '3.10', 3.11] os: [ ubuntu-20.04, windows-latest, @@ -110,7 +110,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v1 with: - python-version: '3.10' + python-version: 3.11 - name: Install Dependencies run: | python -m pip install --upgrade pip @@ -130,7 +130,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v1 with: - python-version: '3.10' + python-version: 3.11 - name: Install Dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/test-and-lint.yml b/.github/workflows/test-and-lint.yml index 049828317..4ad7ff06e 100644 --- a/.github/workflows/test-and-lint.yml +++ b/.github/workflows/test-and-lint.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.8, 3.9, '3.10'] + python-version: [3.8, 3.9, '3.10', 3.11] os: [ ubuntu-20.04, windows-latest, @@ -51,7 +51,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.8, 3.9, '3.10'] + python-version: [3.8, 3.9, '3.10', 3.11] os: [ ubuntu-20.04, windows-latest, @@ -105,7 +105,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v1 with: - python-version: '3.10' + python-version: 3.11 - name: Install Dependencies run: | python -m pip install --upgrade pip @@ -123,7 +123,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v1 with: - python-version: '3.10' + python-version: 3.11 - name: Install Dependencies run: | pip install --upgrade pip diff --git a/.github/workflows/test-upstreams.yml b/.github/workflows/test-upstreams.yml index b2117bec0..1430aa230 100644 --- a/.github/workflows/test-upstreams.yml +++ b/.github/workflows/test-upstreams.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.8, 3.9, '3.10'] + python-version: [3.8, 3.9, '3.10', 3.11] os: [ ubuntu-20.04, windows-latest, diff --git a/setup.py b/setup.py index 59799f71d..7912a5bcf 100644 --- a/setup.py +++ b/setup.py @@ -137,6 +137,7 @@ def run(self): "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", ], description=( "Image Reading, Metadata Conversion, and Image Writing for Microscopy Images " From f8b015511d2e58c117fcead8f308719233fc7011 Mon Sep 17 00:00:00 2001 From: Eva Maxfield Brown Date: Tue, 15 Nov 2022 20:30:33 -0800 Subject: [PATCH 02/11] Always use latest runners instead of defined versions --- .github/workflows/build-main.yml | 4 ++-- .github/workflows/test-and-lint.yml | 4 ++-- .github/workflows/test-upstreams.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-main.yml b/.github/workflows/build-main.yml index 0a0e29bfa..b13bc5f33 100644 --- a/.github/workflows/build-main.yml +++ b/.github/workflows/build-main.yml @@ -19,9 +19,9 @@ jobs: matrix: python-version: [3.8, 3.9, '3.10', 3.11] os: [ - ubuntu-20.04, + ubuntu-latest, windows-latest, - macos-11, + macos-latest, ] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/test-and-lint.yml b/.github/workflows/test-and-lint.yml index 4ad7ff06e..08a90ac4f 100644 --- a/.github/workflows/test-and-lint.yml +++ b/.github/workflows/test-and-lint.yml @@ -15,9 +15,9 @@ jobs: matrix: python-version: [3.8, 3.9, '3.10', 3.11] os: [ - ubuntu-20.04, + ubuntu-latest, windows-latest, - macos-11, + macos-latest, ] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/test-upstreams.yml b/.github/workflows/test-upstreams.yml index 1430aa230..8550dd715 100644 --- a/.github/workflows/test-upstreams.yml +++ b/.github/workflows/test-upstreams.yml @@ -22,9 +22,9 @@ jobs: matrix: python-version: [3.8, 3.9, '3.10', 3.11] os: [ - ubuntu-20.04, + ubuntu-latest, windows-latest, - macos-11, + macos-latest, ] steps: - uses: actions/checkout@v2 From d56fe0082d8670ef6d6b94b3778857397d533ea2 Mon Sep 17 00:00:00 2001 From: dmt Date: Wed, 15 Feb 2023 13:21:16 -0800 Subject: [PATCH 03/11] fix multiscene czi bioformats test --- .../tests/readers/extra_readers/test_bioformats_reader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aicsimageio/tests/readers/extra_readers/test_bioformats_reader.py b/aicsimageio/tests/readers/extra_readers/test_bioformats_reader.py index 88edb49c1..95f28874d 100644 --- a/aicsimageio/tests/readers/extra_readers/test_bioformats_reader.py +++ b/aicsimageio/tests/readers/extra_readers/test_bioformats_reader.py @@ -392,9 +392,9 @@ def test_bioformats_reader_large_files( ( "S=2_4x2_T=2=Z=3_CH=2.czi", "S=2_4x2_T=2=Z=3_CH=2.czi #1", - (2, 2, 3, 488, 948), + (2, 2, 3, 487, 947), "S=2_4x2_T=2=Z=3_CH=2.czi #2", - (2, 2, 3, 244, 474), + (2, 2, 3, 243, 473), ), ], ) From 2be9508cdf9520d34d3e41abc978e810b2c19cea Mon Sep 17 00:00:00 2001 From: dmt Date: Wed, 15 Feb 2023 13:40:01 -0800 Subject: [PATCH 04/11] fix ome-tiff-reader tests --- aicsimageio/readers/ome_tiff_reader.py | 8 +++++++- .../tests/readers/test_ome_tiff_reader.py | 16 ++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/aicsimageio/readers/ome_tiff_reader.py b/aicsimageio/readers/ome_tiff_reader.py index e963a65b0..d832abe36 100644 --- a/aicsimageio/readers/ome_tiff_reader.py +++ b/aicsimageio/readers/ome_tiff_reader.py @@ -11,8 +11,10 @@ from fsspec.spec import AbstractFileSystem from ome_types import from_xml from ome_types.model.ome import OME +from pydantic.error_wrappers import ValidationError from tifffile.tifffile import TiffFile, TiffFileError, TiffTags from xmlschema import XMLSchemaValidationError +from xmlschema.exceptions import XMLSchemaValueError from .. import constants, exceptions, transforms, types from ..dimensions import DEFAULT_CHUNK_DIMS, DEFAULT_DIMENSION_ORDER, DimensionNames @@ -99,7 +101,7 @@ def _is_supported_image( return False # invalid OME XMl - except XMLSchemaValidationError as e: + except (XMLSchemaValueError, XMLSchemaValidationError, ValidationError) as e: log.debug(f"OME XML validation failed. Error: {e}") return False @@ -112,6 +114,10 @@ def _is_supported_image( ) return False + except Exception as e: + log.debug(f"Unhandled exception: {e}") + return False + def __init__( self, image: types.PathLike, diff --git a/aicsimageio/tests/readers/test_ome_tiff_reader.py b/aicsimageio/tests/readers/test_ome_tiff_reader.py index 22792a3c7..7885a3837 100644 --- a/aicsimageio/tests/readers/test_ome_tiff_reader.py +++ b/aicsimageio/tests/readers/test_ome_tiff_reader.py @@ -393,18 +393,10 @@ def test_multi_resolution_ome_tiff_reader( "s_3_t_1_c_3_z_5.ome.tiff", # A lot of our files aren't valid, :upside-down-smiley: # These files have invalid schema / layout - pytest.param( - "3d-cell-viewer.ome.tiff", - marks=pytest.mark.raises(exception=exceptions.UnsupportedFileFormatError), - ), - pytest.param( - "pre-variance-cfe.ome.tiff", - marks=pytest.mark.raises(exception=exceptions.UnsupportedFileFormatError), - ), - pytest.param( - "variance-cfe.ome.tiff", - marks=pytest.mark.raises(exception=exceptions.UnsupportedFileFormatError), - ), + # but recently ome-types default settings are more lenient! + "3d-cell-viewer.ome.tiff", + "pre-variance-cfe.ome.tiff", + "variance-cfe.ome.tiff", pytest.param( "actk.ome.tiff", marks=pytest.mark.raises(exception=exceptions.UnsupportedFileFormatError), From 9f31a0a8e85a99929306ea5a2b1f11c1786bed41 Mon Sep 17 00:00:00 2001 From: dmt Date: Wed, 15 Feb 2023 14:08:09 -0800 Subject: [PATCH 05/11] bump isort version --- .pre-commit-config.yaml | 10 ++++++++-- setup.py | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6eb0c0658..53fd873b9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,14 +6,20 @@ repos: hooks: - id: flake8 additional_dependencies: [flake8-typing-imports, flake8-debugger] - args: [--count, --show-source, --statistics, --min-python-version=3.8.0] + args: + [ + --count, + --show-source, + --statistics, + --min-python-version=3.8.0, + ] - repo: https://github.com/myint/autoflake rev: v1.4 hooks: - id: autoflake args: ["--in-place", "--remove-all-unused-imports"] - repo: https://github.com/PyCQA/isort - rev: 5.9.3 + rev: 5.11.5 hooks: - id: isort - repo: https://github.com/psf/black diff --git a/setup.py b/setup.py index b23e32c57..654e667b5 100644 --- a/setup.py +++ b/setup.py @@ -78,7 +78,7 @@ def run(self): "flake8-debugger>=3.2.1", "gitchangelog>=3.0.4", "ipython>=7.15.0", - "isort>=5.7.0", + "isort>=5.11.5", "m2r2>=0.2.7", "mypy>=0.800", "pytest-runner>=5.2", From fbbcb1bd128a01dd6b31df25ef64c6d6e713de4f Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 11 Apr 2023 16:18:04 -0700 Subject: [PATCH 06/11] add py311 to tox --- tox.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index 633d6b99d..397eb883a 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38, py39, py310, bioformats, czi, base-imageio, dv, lif, nd2, bfio, upstreams, lint +envlist = py38, py39, py310, py311, bioformats, czi, base-imageio, dv, lif, nd2, bfio, upstreams, lint skip_missing_interpreters = true toxworkdir={env:TOX_WORK_DIR:.tox} @@ -32,7 +32,7 @@ setenv = extras = test deps = - aicspylibczi>=3.0.5 + aicspylibczi>=3.1.0 fsspec>=2022.7.1 commands = pytest --basetemp={envtmpdir} --cov-report xml --cov-report html --cov=aicsimageio aicsimageio/tests/readers/extra_readers/test_czi_reader.py {posargs} From 069f5c6cfa32772df26de71ab554da73d24be520 Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 11 Apr 2023 16:20:04 -0700 Subject: [PATCH 07/11] bumping to latest aicspylibczi --- README.md | 5 +++-- setup.py | 4 ++-- tox.ini | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c2ed000dc..4ef495df1 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Image Reading, Metadata Conversion, and Image Writing for Microscopy Images in P - `TIFF` - `ND2` -- (`pip install aicsimageio[nd2]`) - `DV` -- (`pip install aicsimageio[dv]`) - - `CZI` -- (`pip install aicspylibczi>=3.0.5 fsspec>=2022.7.1`) + - `CZI` -- (`pip install aicspylibczi>=3.1.0 fsspec>=2022.8.0`) - `LIF` -- (`pip install readlif>=0.6.4`) - `PNG`, `GIF`, [etc.](https://github.com/imageio/imageio) -- (`pip install aicsimageio[base-imageio]`) - Files supported by [Bio-Formats](https://docs.openmicroscopy.org/bio-formats/latest/supported-formats.html) -- (`pip install aicsimageio bioformats_jar`) (Note: requires `java` and `maven`, see below for details.) @@ -55,7 +55,7 @@ optionally installed using `[...]` syntax. - For multiple additional supported formats: `pip install aicsimageio[base-imageio,nd2]` - For all additional supported (and openly licensed) formats: `pip install aicsimageio[all]` - Due to the GPL license, LIF support is not included with the `[all]` extra, and must be installed manually with `pip install aicsimageio readlif>=0.6.4` -- Due to the GPL license, CZI support is not included with the `[all]` extra, and must be installed manually with `pip install aicsimageio aicspylibczi>=3.0.5 fsspec>=2022.7.1` +- Due to the GPL license, CZI support is not included with the `[all]` extra, and must be installed manually with `pip install aicsimageio aicspylibczi>=3.1.0 fsspec>=2022.8.0` - Due to the GPL license, Bio-Formats support is not included with the `[all]` extra, and must be installed manually with `pip install aicsimageio bioformats_jar`. **Important!!** Bio-Formats support also requires a `java` and `mvn` executable in the environment. The simplest method is to install `bioformats_jar` from conda: `conda install -c conda-forge bioformats_jar` (which will additionally bring `openjdk` and `maven` packages). ## Documentation @@ -340,6 +340,7 @@ If you find `aicsimageio` useful, please cite this repository as: > Eva Maxfield Brown, Dan Toloudis, Jamie Sherman, Madison Swain-Bowden, Talley Lambert, AICSImageIO Contributors (2021). AICSImageIO: Image Reading, Metadata Conversion, and Image Writing for Microscopy Images in Pure Python [Computer software]. GitHub. https://github.com/AllenCellModeling/aicsimageio bibtex: + ```bibtex @misc{aicsimageio, author = {Brown, Eva Maxfield and Toloudis, Dan and Sherman, Jamie and Swain-Bowden, Madison and Lambert, Talley and {AICSImageIO Contributors}}, diff --git a/setup.py b/setup.py index d55ce26c5..bc6521b7d 100644 --- a/setup.py +++ b/setup.py @@ -38,8 +38,8 @@ def run(self): "dv": ["mrc>=0.2.0"], "bfio": ["bfio>=2.3.0", "tifffile<2022.4.22"], # "czi": [ # excluded for licensing reasons - # "fsspec>=2022.7.1", - # "aicspylibczi>=3.0.5", + # "fsspec>=2022.8.0", + # "aicspylibczi>=3.1.0", # ], # "bioformats": ["bioformats_jar"], # excluded for licensing reasons # "lif": ["readlif>=0.6.4"], # excluded for licensing reasons diff --git a/tox.ini b/tox.ini index 397eb883a..289818a91 100644 --- a/tox.ini +++ b/tox.ini @@ -33,7 +33,7 @@ extras = test deps = aicspylibczi>=3.1.0 - fsspec>=2022.7.1 + fsspec>=2022.8.0 commands = pytest --basetemp={envtmpdir} --cov-report xml --cov-report html --cov=aicsimageio aicsimageio/tests/readers/extra_readers/test_czi_reader.py {posargs} From 97d58f2ef648d5621ee66a2de7044f5cf3d50ea4 Mon Sep 17 00:00:00 2001 From: dmt Date: Wed, 12 Apr 2023 19:07:36 -0700 Subject: [PATCH 08/11] bump to aicspylibczi 3.1.1 --- README.md | 4 ++-- aicsimageio/formats.py | 2 +- aicsimageio/readers/czi_reader.py | 4 ++-- setup.py | 4 ++-- tox.ini | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4ef495df1..8611b93bd 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Image Reading, Metadata Conversion, and Image Writing for Microscopy Images in P - `TIFF` - `ND2` -- (`pip install aicsimageio[nd2]`) - `DV` -- (`pip install aicsimageio[dv]`) - - `CZI` -- (`pip install aicspylibczi>=3.1.0 fsspec>=2022.8.0`) + - `CZI` -- (`pip install aicspylibczi>=3.1.1 fsspec>=2022.8.0`) - `LIF` -- (`pip install readlif>=0.6.4`) - `PNG`, `GIF`, [etc.](https://github.com/imageio/imageio) -- (`pip install aicsimageio[base-imageio]`) - Files supported by [Bio-Formats](https://docs.openmicroscopy.org/bio-formats/latest/supported-formats.html) -- (`pip install aicsimageio bioformats_jar`) (Note: requires `java` and `maven`, see below for details.) @@ -55,7 +55,7 @@ optionally installed using `[...]` syntax. - For multiple additional supported formats: `pip install aicsimageio[base-imageio,nd2]` - For all additional supported (and openly licensed) formats: `pip install aicsimageio[all]` - Due to the GPL license, LIF support is not included with the `[all]` extra, and must be installed manually with `pip install aicsimageio readlif>=0.6.4` -- Due to the GPL license, CZI support is not included with the `[all]` extra, and must be installed manually with `pip install aicsimageio aicspylibczi>=3.1.0 fsspec>=2022.8.0` +- Due to the GPL license, CZI support is not included with the `[all]` extra, and must be installed manually with `pip install aicsimageio aicspylibczi>=3.1.1 fsspec>=2022.8.0` - Due to the GPL license, Bio-Formats support is not included with the `[all]` extra, and must be installed manually with `pip install aicsimageio bioformats_jar`. **Important!!** Bio-Formats support also requires a `java` and `mvn` executable in the environment. The simplest method is to install `bioformats_jar` from conda: `conda install -c conda-forge bioformats_jar` (which will additionally bring `openjdk` and `maven` packages). ## Documentation diff --git a/aicsimageio/formats.py b/aicsimageio/formats.py index 702508f73..b63f3f8b9 100644 --- a/aicsimageio/formats.py +++ b/aicsimageio/formats.py @@ -481,7 +481,7 @@ "aicsimageio.readers.bioformats_reader.BioformatsReader": "bioformats_jar", "aicsimageio.readers.default_reader.DefaultReader": "aicsimageio[base-imageio]", "aicsimageio.readers.lif_reader.LifReader": "readlif>=0.6.4", - "aicsimageio.readers.czi_reader.CziReader": "aicspylibczi>=3.0.5", + "aicsimageio.readers.czi_reader.CziReader": "aicspylibczi>=3.1.1", "aicsimageio.readers.dv_reader.DVReader": "aicsimageio[dv]", "aicsimageio.readers.nd2_reader.ND2Reader": "aicsimageio[nd2]", } diff --git a/aicsimageio/readers/czi_reader.py b/aicsimageio/readers/czi_reader.py index 9987252b8..baab7441e 100644 --- a/aicsimageio/readers/czi_reader.py +++ b/aicsimageio/readers/czi_reader.py @@ -28,7 +28,7 @@ except ImportError: raise ImportError( "aicspylibczi is required for this reader. " - "Install with `pip install 'aicspylibczi>=3.0.5' 'fsspec>=2022.7.1'`" + "Install with `pip install 'aicspylibczi>=3.1.1' 'fsspec>=2022.7.1'`" ) ############################################################################### @@ -82,7 +82,7 @@ class CziReader(Reader): Notes ----- - To use this reader, install with: `pip install aicspylibczi>=3.0.5`. + To use this reader, install with: `pip install aicspylibczi>=3.1.1`. """ @staticmethod diff --git a/setup.py b/setup.py index bc6521b7d..1703cbc4c 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,7 @@ def run(self): "bfio": ["bfio>=2.3.0", "tifffile<2022.4.22"], # "czi": [ # excluded for licensing reasons # "fsspec>=2022.8.0", - # "aicspylibczi>=3.1.0", + # "aicspylibczi>=3.1.1", # ], # "bioformats": ["bioformats_jar"], # excluded for licensing reasons # "lif": ["readlif>=0.6.4"], # excluded for licensing reasons @@ -91,7 +91,7 @@ def run(self): "bioformats_jar", # to test bioformats "bfio>=2.3.0", "readlif>=0.6.4", # to test lif - "aicspylibczi>=3.0.5", # to test czi + "aicspylibczi>=3.1.1", # to test czi ] benchmark_requirements = [ diff --git a/tox.ini b/tox.ini index 289818a91..480509b0c 100644 --- a/tox.ini +++ b/tox.ini @@ -32,7 +32,7 @@ setenv = extras = test deps = - aicspylibczi>=3.1.0 + aicspylibczi>=3.1.1 fsspec>=2022.8.0 commands = pytest --basetemp={envtmpdir} --cov-report xml --cov-report html --cov=aicsimageio aicsimageio/tests/readers/extra_readers/test_czi_reader.py {posargs} From 723fe8a68d1fbde147ae29bfb9dc5bca39068dfc Mon Sep 17 00:00:00 2001 From: dmt Date: Wed, 12 Apr 2023 19:37:19 -0700 Subject: [PATCH 09/11] remove codecov --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index 1703cbc4c..f28576e75 100644 --- a/setup.py +++ b/setup.py @@ -55,7 +55,6 @@ def run(self): ] test_requirements = [ - "codecov>=2.1.4", "dask[array,distributed]>=2021.4.1,!=2022.5.1", "docutils>=0.10,<0.16", "psutil>=5.7.0", From ec6fae1ace4901a9abfa16ac0a7e310721a14b0f Mon Sep 17 00:00:00 2001 From: dmt Date: Wed, 12 Apr 2023 20:53:34 -0700 Subject: [PATCH 10/11] fix equality check --- aicsimageio/readers/czi_reader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aicsimageio/readers/czi_reader.py b/aicsimageio/readers/czi_reader.py index baab7441e..18225e3bb 100644 --- a/aicsimageio/readers/czi_reader.py +++ b/aicsimageio/readers/czi_reader.py @@ -369,7 +369,7 @@ def _get_image_data( # If the dim was provided in the read dims # we know a single plane for that dimension was requested so remove it - if dim in read_dims or dim is CZI_BLOCK_DIM_CHAR: + if dim in read_dims or dim == CZI_BLOCK_DIM_CHAR: ops.append(0) # Otherwise just read the full slice From a4dfe1bb0ec958c7f008ac49b8b043ff36bb9847 Mon Sep 17 00:00:00 2001 From: toloudis Date: Thu, 13 Apr 2023 08:53:14 -0700 Subject: [PATCH 11/11] Update setup.py try to bump Pillow to first version supporting 3.11 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f28576e75..18aa8e21d 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ def run(self): format_libs: Dict[str, List[str]] = { "base-imageio": [ "imageio[ffmpeg]>=2.11.0", - "Pillow>=8.2.0,!=8.3.0,<9", + "Pillow>=9.3", ], "nd2": ["nd2[legacy]>=0.2.0"], "dv": ["mrc>=0.2.0"],