Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Chore(deps): Bump the python-packages group across 1 directory with 9…
… updates (#329) Updates the requirements on [numpy](https://github.com/numpy/numpy), [torch](https://github.com/pytorch/pytorch), [torchvision](https://github.com/pytorch/vision), [tifffile](https://github.com/cgohlke/tifffile), [pydantic](https://github.com/pydantic/pydantic), [typer](https://github.com/fastapi/typer), [scikit-image](https://github.com/scikit-image/scikit-image), [pillow](https://github.com/python-pillow/Pillow) and [protobuf](https://github.com/protocolbuffers/protobuf) to permit the latest version. Updates `numpy` to 2.2.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/numpy/numpy/releases">numpy's releases</a>.</em></p> <blockquote> <h2>2.2.0 (Dec 8, 2024)</h2> <h1>NumPy 2.2.0 Release Notes</h1> <p>The NumPy 2.2.0 release is quick release that brings us back into sync with the usual twice yearly release cycle. There have been an number of small cleanups, as well as work bringing the new StringDType to completion and improving support for free threaded Python. Highlights are:</p> <ul> <li>New functions <code>matvec</code> and <code>vecmat</code>, see below.</li> <li>Many improved annotations.</li> <li>Improved support for the new StringDType.</li> <li>Improved support for free threaded Python</li> <li>Fixes for f2py</li> </ul> <p>This release supports Python versions 3.10-3.13.</p> <h2>Deprecations</h2> <ul> <li> <p><code>_add_newdoc_ufunc</code> is now deprecated. <code>ufunc.__doc__ = newdoc</code> should be used instead.</p> <p>(<a href="https://redirect.github.com/numpy/numpy/pull/27735">gh-27735</a>)</p> </li> </ul> <h2>Expired deprecations</h2> <ul> <li> <p><code>bool(np.array([]))</code> and other empty arrays will now raise an error. Use <code>arr.size > 0</code> instead to check whether an array has no elements.</p> <p>(<a href="https://redirect.github.com/numpy/numpy/pull/27160">gh-27160</a>)</p> </li> </ul> <h2>Compatibility notes</h2> <ul> <li> <p><code>numpy.cov</code> now properly transposes single-row (2d array) design matrices when <code>rowvar=False</code>. Previously, single-row design matrices would return a scalar in this scenario, which is not correct, so this is a behavior change and an array of the appropriate shape will now be returned.</p> <p>(<a href="https://redirect.github.com/numpy/numpy/pull/27661">gh-27661</a>)</p> </li> </ul> <h2>New Features</h2> <ul> <li> <p>New functions for matrix-vector and vector-matrix products</p> <p>Two new generalized ufuncs were defined:</p> <ul> <li><code>numpy.matvec</code> - matrix-vector product, treating the arguments as stacks of matrices and column vectors,</li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst">numpy's changelog</a>.</em></p> <blockquote> <p>This is a walkthrough of the NumPy 2.1.0 release on Linux, modified for building with GitHub Actions and cibuildwheels and uploading to the <code>anaconda.org staging repository for NumPy <https://anaconda.org/multibuild-wheels-staging/numpy></code>_. The commands can be copied into the command line, but be sure to replace 2.1.0 by the correct version. This should be read together with the :ref:<code>general release guide <prepare_release></code>.</p> <h1>Facility preparation</h1> <p>Before beginning to make a release, use the <code>requirements/*_requirements.txt</code> files to ensure that you have the needed software. Most software can be installed with pip, but some will require apt-get, dnf, or whatever your system uses for software. You will also need a GitHub personal access token (PAT) to push the documentation. There are a few ways to streamline things:</p> <ul> <li>Git can be set up to use a keyring to store your GitHub personal access token. Search online for the details.</li> <li>You can use the <code>keyring</code> app to store the PyPI password for twine. See the online twine documentation for details.</li> </ul> <h1>Prior to release</h1> <h2>Add/drop Python versions</h2> <p>When adding or dropping Python versions, three files need to be edited:</p> <ul> <li>.github/workflows/wheels.yml # for github cibuildwheel</li> <li>tools/ci/cirrus_wheels.yml # for cibuildwheel aarch64/arm64 builds</li> <li>pyproject.toml # for classifier and minimum version check.</li> </ul> <p>Make these changes in an ordinary PR against main and backport if necessary. Add <code>[wheel build]</code> at the end of the title line of the commit summary so that wheel builds will be run to test the changes. We currently release wheels for new Python versions after the first Python rc once manylinux and cibuildwheel support it. For Python 3.11 we were able to release within a week of the rc1 announcement.</p> <h2>Backport pull requests</h2> <p>Changes that have been marked for this release must be backported to the maintenance/2.1.x branch.</p> <h2>Update 2.1.0 milestones</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/numpy/numpy/commit/e7a123b2d3eca9897843791dd698c1803d9a39c2"><code>e7a123b</code></a> Merge pull request <a href="https://redirect.github.com/numpy/numpy/issues/27928">#27928</a> from charris/prepare-2.2.0</li> <li><a href="https://github.com/numpy/numpy/commit/d97d0714325cecbbbd806054d5dd260b825c7752"><code>d97d071</code></a> MAINT: Try fixing MacOS cirrus build failures. [wheel build]</li> <li><a href="https://github.com/numpy/numpy/commit/1ed7b6712f94082ffbc15b4009fce94143624afc"><code>1ed7b67</code></a> REL: Prepare for the NumPy 2.2.0 release [wheel build]</li> <li><a href="https://github.com/numpy/numpy/commit/fd9e7ef549bb049a6fe2da6a4122a8a324690f5a"><code>fd9e7ef</code></a> Merge pull request <a href="https://redirect.github.com/numpy/numpy/issues/27916">#27916</a> from charris/backport-27915</li> <li><a href="https://github.com/numpy/numpy/commit/2e0941fc20fbdc5289946c1b4606c5a66e73a624"><code>2e0941f</code></a> MAINT: Bump actions/cache from 4.1.2 to 4.2.0</li> <li><a href="https://github.com/numpy/numpy/commit/013656d26d62f2a0c8ea24226a7607ab0c13ff02"><code>013656d</code></a> Merge pull request <a href="https://redirect.github.com/numpy/numpy/issues/27912">#27912</a> from charris/backport-27877</li> <li><a href="https://github.com/numpy/numpy/commit/7895ba602d5416c412be33b017586bbb4ed6acf9"><code>7895ba6</code></a> Merge pull request <a href="https://redirect.github.com/numpy/numpy/issues/27913">#27913</a> from charris/backport-27896</li> <li><a href="https://github.com/numpy/numpy/commit/ee8d1cd01542836229ff1366c583e13db2b8d874"><code>ee8d1cd</code></a> PERF: improve multithreaded ufunc scaling (<a href="https://redirect.github.com/numpy/numpy/issues/27896">#27896</a>)</li> <li><a href="https://github.com/numpy/numpy/commit/77fff6b39403ac7242c8f5e916940fcf43af7cc9"><code>77fff6b</code></a> ENH: Refactor <code>__qualname__</code> across API (<a href="https://redirect.github.com/numpy/numpy/issues/27877">#27877</a>)</li> <li><a href="https://github.com/numpy/numpy/commit/b30a3384fb8966e2249e7362799b90185dffa5b5"><code>b30a338</code></a> Merge pull request <a href="https://redirect.github.com/numpy/numpy/issues/27911">#27911</a> from charris/backport-27891</li> <li>Additional commits viewable in <a href="https://github.com/numpy/numpy/compare/v0.2.0...v2.2.0">compare view</a></li> </ul> </details> <br /> Updates `torch` to 2.5.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytorch/pytorch/releases">torch's releases</a>.</em></p> <blockquote> <h2>PyTorch 2.5.1: bug fix release</h2> <p>This release is meant to fix the following regressions:</p> <ul> <li>Wheels from PyPI are unusable out of the box on PRM-based Linux distributions: <a href="https://redirect.github.com/pytorch/pytorch/issues/138324">pytorch/pytorch#138324</a></li> <li>PyPI arm64 distribution logs cpuinfo error on import: <a href="https://redirect.github.com/pytorch/pytorch/issues/138333">pytorch/pytorch#138333</a></li> <li>Crash When Using torch.compile with Math scaled_dot_product_attention in AMP Mode: <a href="https://redirect.github.com/pytorch/pytorch/issues/133974">pytorch/pytorch#133974</a></li> <li>[MPS] Internal crash due to the invalid buffer size computation if sliced API is used: <a href="https://redirect.github.com/pytorch/pytorch/issues/137800">pytorch/pytorch#137800</a></li> <li>Several issues related to CuDNN Attention: <a href="https://redirect.github.com/pytorch/pytorch/pull/138522">pytorch/pytorch#138522</a></li> </ul> <p>Besides the regression fixes, the release includes several documentation updates.</p> <p>See release tracker <a href="https://redirect.github.com/pytorch/pytorch/issues/132400">pytorch/pytorch#132400</a> for additional information.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytorch/pytorch/blob/main/RELEASE.md">torch's changelog</a>.</em></p> <blockquote> <h1>Releasing PyTorch</h1> <!-- raw HTML omitted --> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#release-compatibility-matrix">Release Compatibility Matrix</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#release-cadence">Release Cadence</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#general-overview">General Overview</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#frequently-asked-questions">Frequently Asked Questions</a></li> </ul> </li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#cutting-a-release-branch-preparations">Cutting a release branch preparations</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#cutting-release-branches">Cutting release branches</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#pytorchpytorch"><code>pytorch/pytorch</code></a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#pytorchbuilder--pytorch-domain-libraries"><code>pytorch/builder</code> / PyTorch domain libraries</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#making-release-branch-specific-changes-for-pytorch">Making release branch specific changes for PyTorch</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#making-release-branch-specific-changes-for-domain-libraries">Making release branch specific changes for domain libraries</a></li> </ul> </li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#running-launch-execution-team-core-xfn-sync">Running Launch Execution team Core XFN sync</a></li> <li><a href="#drafting-rcs-release-candidates-for-pytorch-and-domain-libraries">Drafting RCs (https://github.com/pytorch/pytorch/blob/main/Release Candidates) for PyTorch and domain libraries</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#release-candidate-storage">Release Candidate Storage</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#release-candidate-health-validation">Release Candidate health validation</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#cherry-picking-fixes">Cherry Picking Fixes</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#how-to-do-cherry-picking">How to do Cherry Picking</a></li> </ul> </li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#cherry-picking-reverts">Cherry Picking Reverts</a></li> </ul> </li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#preparing-and-creating-final-release-candidate">Preparing and Creating Final Release candidate</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#promoting-rcs-to-stable">Promoting RCs to Stable</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#additional-steps-to-prepare-for-release-day">Additional Steps to prepare for release day</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#modify-release-matrix">Modify release matrix</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#open-google-colab-issue">Open Google Colab issue</a></li> </ul> </li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#patch-releases">Patch Releases</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#patch-release-criteria">Patch Release Criteria</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#patch-release-process">Patch Release Process</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#patch-release-process-description">Patch Release Process Description</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#triage">Triage</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#issue-tracker-for-patch-releases">Issue Tracker for Patch releases</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#building-a-release-schedule--cherry-picking">Building a release schedule / cherry picking</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#building-binaries--promotion-to-stable">Building Binaries / Promotion to Stable</a></li> </ul> </li> </ul> </li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#hardware--software-support-in-binary-build-matrix">Hardware / Software Support in Binary Build Matrix</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#python">Python</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#accelerator-software">Accelerator Software</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#special-support-cases">Special support cases</a></li> </ul> </li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#operating-systems">Operating Systems</a></li> </ul> </li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#submitting-tutorials">Submitting Tutorials</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#special-topics">Special Topics</a> <ul> <li><a href="https://github.com/pytorch/pytorch/blob/main/#updating-submodules-for-a-release">Updating submodules for a release</a></li> <li><a href="https://github.com/pytorch/pytorch/blob/main/#triton-dependency-for-the-release">Triton dependency for the release</a></li> </ul> </li> </ul> <!-- raw HTML omitted --> <h2>Release Compatibility Matrix</h2> <p>Following is the Release Compatibility Matrix for PyTorch releases:</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytorch/pytorch/commit/a8d6afb511a69687bbb2b7e88a3cf67917e1697e"><code>a8d6afb</code></a> Disabling amp context when invoking compiler (<a href="https://redirect.github.com/pytorch/pytorch/issues/138659">#138659</a>)</li> <li><a href="https://github.com/pytorch/pytorch/commit/f31b8bbc5b8834cdac83d1b92e36a8896ed2e4b9"><code>f31b8bb</code></a> [MPS] Fix sliced cast (<a href="https://redirect.github.com/pytorch/pytorch/issues/138535">#138535</a>)</li> <li><a href="https://github.com/pytorch/pytorch/commit/848e7ac42a3c121d03bcff6cb53c1afb9b76164e"><code>848e7ac</code></a> [SDPA-CUDNN] Make CuDNN Attention Opt in (<a href="https://redirect.github.com/pytorch/pytorch/issues/138587">#138587</a>)</li> <li><a href="https://github.com/pytorch/pytorch/commit/885c823759be505f5725578e0ee46cfec249ccf3"><code>885c823</code></a> Update doc copyrights to 2024 (<a href="https://redirect.github.com/pytorch/pytorch/issues/138650">#138650</a>)</li> <li><a href="https://github.com/pytorch/pytorch/commit/8c3ed97baa03668945064b9f1f38496041de2ec0"><code>8c3ed97</code></a> Update cpuinfo submodule (<a href="https://redirect.github.com/pytorch/pytorch/issues/138600">#138600</a>)</li> <li><a href="https://github.com/pytorch/pytorch/commit/70cf2bbc0b9ebd30b7604b29123a9920d6fcdab6"><code>70cf2bb</code></a> Add link to torch.compile the missing manual in troubleshooting (<a href="https://redirect.github.com/pytorch/pytorch/issues/137369">#137369</a>)</li> <li><a href="https://github.com/pytorch/pytorch/commit/cde6b382ff39210939516f0d0cc3d270ced0fed0"><code>cde6b38</code></a> Don't try to load cufile (<a href="https://redirect.github.com/pytorch/pytorch/issues/138539">#138539</a>)</li> <li><a href="https://github.com/pytorch/pytorch/commit/4076a738b08e0118f0b0464fe5f79bf4109c29c5"><code>4076a73</code></a> [Cherry-Pick] Use cuda 12.4 pytorch_extra_install_requirements as default (<a href="https://redirect.github.com/pytorch/pytorch/issues/1">#1</a>...</li> <li><a href="https://github.com/pytorch/pytorch/commit/a97c15174b8bb4f4cda95f86b759aabc2fbe25df"><code>a97c151</code></a> update getting started xpu (<a href="https://redirect.github.com/pytorch/pytorch/issues/138090">#138090</a>)</li> <li><a href="https://github.com/pytorch/pytorch/commit/32f585d9346e316e554c8d9bf7548af9f62141fc"><code>32f585d</code></a> [Release only] use triton 3.1.x from pypi (<a href="https://redirect.github.com/pytorch/pytorch/issues/137895">#137895</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pytorch/pytorch/compare/v2.0.0...v2.5.1">compare view</a></li> </ul> </details> <br /> Updates `torchvision` to 0.20.1 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytorch/vision/commit/3ac97aa9120137381ed1060f37237e44485ac2aa"><code>3ac97aa</code></a> Update version.txt to 0.20.1 (<a href="https://redirect.github.com/pytorch/vision/issues/8694">#8694</a>)</li> <li><a href="https://github.com/pytorch/vision/commit/afc54f754c734d903a06194e416495e20d920ff6"><code>afc54f7</code></a> Remove lint job for release 0.20 (<a href="https://redirect.github.com/pytorch/vision/issues/8674">#8674</a>)</li> <li><a href="https://github.com/pytorch/vision/commit/8e8a208117a654c0945fa08208d2e7e6f3206441"><code>8e8a208</code></a> [Cherry-pick for 0.20] Expose transforms.v2 utils for writing custom transfor...</li> <li><a href="https://github.com/pytorch/vision/commit/2d8a288f78b576f25150533c3e3b6534f5fce5c4"><code>2d8a288</code></a> [Cherry-Pick for 0.20] Revamp decoding docs (<a href="https://redirect.github.com/pytorch/vision/issues/8633">#8633</a>) (<a href="https://redirect.github.com/pytorch/vision/issues/8666">#8666</a>)</li> <li><a href="https://github.com/pytorch/vision/commit/7f4d561307069a0f8520ff6da5c4272e5f90c117"><code>7f4d561</code></a> Remove prototype from release/0.20 branch (<a href="https://redirect.github.com/pytorch/vision/issues/8657">#8657</a>)</li> <li><a href="https://github.com/pytorch/vision/commit/4a94962699ad1a24fee03fa13589a6ea73691cb1"><code>4a94962</code></a> Use <code>@release/2</code>.5 instead of <a href="https://github.com/main"><code>@main</code></a> for CI jobs (<a href="https://redirect.github.com/pytorch/vision/issues/8646">#8646</a>)</li> <li><a href="https://github.com/pytorch/vision/commit/db5f8a00f74a39233ee00d7549e837c6b205b9de"><code>db5f8a0</code></a> Fix compile with nvjpeg on Windows CUDA 12 (<a href="https://redirect.github.com/pytorch/vision/issues/8641">#8641</a>)</li> <li><a href="https://github.com/pytorch/vision/commit/00e7fa164bfdfd302f0b471c18ce2fd6bd1a50bc"><code>00e7fa1</code></a> Fix f-string in color error message (<a href="https://redirect.github.com/pytorch/vision/issues/8639">#8639</a>)</li> <li><a href="https://github.com/pytorch/vision/commit/838ad6ccf6ef7032485671a54c1570876e366dc5"><code>838ad6c</code></a> Allow decoding functions to accept the mode parameter as a string (<a href="https://redirect.github.com/pytorch/vision/issues/8627">#8627</a>)</li> <li><a href="https://github.com/pytorch/vision/commit/d0ebeb55573820df89fa24f6418b9e624683932d"><code>d0ebeb5</code></a> Allow decode_image to support paths (<a href="https://redirect.github.com/pytorch/vision/issues/8624">#8624</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pytorch/vision/compare/v0.1.5...v0.20.1">compare view</a></li> </ul> </details> <br /> Updates `tifffile` to 2024.12.12 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/cgohlke/tifffile/releases">tifffile's releases</a>.</em></p> <blockquote> <h2>v2024.12.12</h2> <h2>Read and write TIFF files</h2> <p>Tifffile is a Python library to</p> <ol> <li>store NumPy arrays in TIFF (Tagged Image File Format) files, and</li> <li>read image and metadata from TIFF-like files used in bioimaging.</li> </ol> <p>Image and metadata can be read from TIFF, BigTIFF, OME-TIFF, GeoTIFF, Adobe DNG, ZIF (Zoomable Image File Format), MetaMorph STK, Zeiss LSM, ImageJ hyperstack, Micro-Manager MMStack and NDTiff, SGI, NIHImage, Olympus FluoView and SIS, ScanImage, Molecular Dynamics GEL, Aperio SVS, Leica SCN, Roche BIF, PerkinElmer QPTIFF (QPI, PKI), Hamamatsu NDPI, Argos AVS, and Philips DP formatted files.</p> <p>Image data can be read as NumPy arrays or Zarr arrays/groups from strips, tiles, pages (IFDs), SubIFDs, higher order series, and pyramidal levels.</p> <p>Image data can be written to TIFF, BigTIFF, OME-TIFF, and ImageJ hyperstack compatible files in multi-page, volumetric, pyramidal, memory-mappable, tiled, predicted, or compressed form.</p> <p>Many compression and predictor schemes are supported via the imagecodecs library, including LZW, PackBits, Deflate, PIXTIFF, LZMA, LERC, Zstd, JPEG (8 and 12-bit, lossless), JPEG 2000, JPEG XR, JPEG XL, WebP, PNG, EER, Jetraw, 24-bit floating-point, and horizontal differencing.</p> <p>Tifffile can also be used to inspect TIFF structures, read image data from multi-dimensional file sequences, write fsspec ReferenceFileSystem for TIFF files and image file sequences, patch TIFF tag values, and parse many proprietary metadata formats.</p> <h2>Changes</h2> <ul> <li>Read PlaneProperty from STK UIC1Tag (<a href="https://redirect.github.com/cgohlke/tifffile/issues/280">#280</a>).</li> <li>Allow 'None' as alias for COMPRESSION.NONE and PREDICTOR.NONE (<a href="https://redirect.github.com/cgohlke/tifffile/issues/274">#274</a>).</li> <li>Zarr 3 is not supported (<a href="https://redirect.github.com/cgohlke/tifffile/issues/272">#272</a>).</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/cgohlke/tifffile/blob/master/CHANGES.rst">tifffile's changelog</a>.</em></p> <blockquote> <p>2024.12.12</p> <ul> <li>Pass 5110 tests.</li> <li>Read PlaneProperty from STK UIC1Tag (<a href="https://redirect.github.com/cgohlke/tifffile/issues/280">#280</a>).</li> <li>Allow 'None' as alias for COMPRESSION.NONE and PREDICTOR.NONE (<a href="https://redirect.github.com/cgohlke/tifffile/issues/274">#274</a>).</li> <li>Zarr 3 is not supported (<a href="https://redirect.github.com/cgohlke/tifffile/issues/272">#272</a>).</li> </ul> <p>2024.9.20</p> <ul> <li>Fix writing colormap to ImageJ files (breaking).</li> <li>Improve typing.</li> <li>Remove support for Python 3.9.</li> </ul> <p>2024.8.30</p> <ul> <li>Support writing OME Dataset and some StructuredAnnotations elements.</li> </ul> <p>2024.8.28</p> <ul> <li>Fix LSM scan types and dimension orders (<a href="https://redirect.github.com/cgohlke/tifffile/issues/269">#269</a>, breaking).</li> <li>Use IO[bytes] instead of BinaryIO for typing (<a href="https://redirect.github.com/cgohlke/tifffile/issues/268">#268</a>).</li> </ul> <p>2024.8.24</p> <ul> <li>Do not remove trailing length-1 dimension writing non-shaped file (breaking).</li> <li>Fix writing OME-TIFF with certain modulo axes orders.</li> <li>Make imshow NaN aware.</li> </ul> <p>2024.8.10</p> <ul> <li>Relax bitspersample check for JPEG, JPEG2K, and JPEGXL compression (<a href="https://redirect.github.com/cgohlke/tifffile/issues/265">#265</a>).</li> </ul> <p>2024.7.24</p> <ul> <li>Fix reading contiguous multi-page series via Zarr store (<a href="https://redirect.github.com/cgohlke/tifffile/issues/67">#67</a>).</li> </ul> <p>2024.7.21</p> <ul> <li>Fix integer overflow in product function caused by numpy types.</li> <li>Allow tag reader functions to fail.</li> </ul> <p>2024.7.2</p> <ul> <li>Enable memmap to create empty files with non-native byte order.</li> <li>Deprecate Python 3.9, support Python 3.13.</li> </ul> <p>2024.6.18</p> <ul> <li>Ensure TiffPage.nodata is castable to dtype (breaking, <a href="https://redirect.github.com/cgohlke/tifffile/issues/260">#260</a>).</li> <li>Support Argos AVS slides.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/cgohlke/tifffile/commit/00b42ea8226018ffee11eb8888511060ac7529d9"><code>00b42ea</code></a> Release v2024.12.12</li> <li><a href="https://github.com/cgohlke/tifffile/commit/e9604d9ba2ca73cd0e33cc762814e92b143ad03d"><code>e9604d9</code></a> Update CHANGES.rst</li> <li><a href="https://github.com/cgohlke/tifffile/commit/ce8fe2d4e83b08f82f7b8992c3806971435ca0ce"><code>ce8fe2d</code></a> Update tifffile/tifffile.py</li> <li><a href="https://github.com/cgohlke/tifffile/commit/553268ddd24c2cc8e92e77a1c3102deb88578d6e"><code>553268d</code></a> Update tests/test_tifffile.py</li> <li><a href="https://github.com/cgohlke/tifffile/commit/8d9e896a431a871be7d608a0b9fd58d76cc3cbf1"><code>8d9e896</code></a> Update setup.py</li> <li><a href="https://github.com/cgohlke/tifffile/commit/4843f98d652b590edb9fc78abba407abf3e93204"><code>4843f98</code></a> Update tifffile/tiffcomment.py</li> <li><a href="https://github.com/cgohlke/tifffile/commit/8a25a0d4738390af0a1f693705f29875d88fc320"><code>8a25a0d</code></a> Release v2024.9.20</li> <li><a href="https://github.com/cgohlke/tifffile/commit/88f489f507db3553c5a2f245af31b89d08423867"><code>88f489f</code></a> Update CHANGES.rst</li> <li><a href="https://github.com/cgohlke/tifffile/commit/fe52fa5c0dd66b0ca1d10a94e591a3874b74bacd"><code>fe52fa5</code></a> Update tifffile/tifffile.py</li> <li><a href="https://github.com/cgohlke/tifffile/commit/9bde6b995f27b867cec72410b9d3344492ac5b89"><code>9bde6b9</code></a> Update setup.py</li> <li>Additional commits viewable in <a href="https://github.com/cgohlke/tifffile/compare/v2018.10.18...v2024.12.12">compare view</a></li> </ul> </details> <br /> Updates `pydantic` to 2.10.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pydantic/pydantic/releases">pydantic's releases</a>.</em></p> <blockquote> <h2>v2.10.3 2024-12-03</h2> <h2>What's Changed</h2> <h3>Fixes</h3> <ul> <li>Set fields when <code>defer_build</code> is set on Pydantic dataclasses by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10984">#10984</a></li> <li>Do not resolve the JSON Schema reference for <code>dict</code> core schema keys by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10989">#10989</a></li> <li>Use the globals of the function when evaluating the return type for <code>PlainSerializer</code> and <code>WrapSerializer</code> functions by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11008">#11008</a></li> <li>Fix host required enforcement for urls to be compatible with v2.9 behavior by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11027">#11027</a></li> <li>Add a <code>default_factory_takes_validated_data</code> property to <code>FieldInfo</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11034">#11034</a></li> <li>Fix url json schema in <code>serialization</code> mode by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11035">#11035</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.10.2...v2.10.3">https://github.com/pydantic/pydantic/compare/v2.10.2...v2.10.3</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pydantic/pydantic/blob/main/HISTORY.md">pydantic's changelog</a>.</em></p> <blockquote> <h2>v2.10.3 (2024-12-03)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.10.3">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Set fields when <code>defer_build</code> is set on Pydantic dataclasses by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10984">#10984</a></li> <li>Do not resolve the JSON Schema reference for <code>dict</code> core schema keys by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10989">#10989</a></li> <li>Use the globals of the function when evaluating the return type for <code>PlainSerializer</code> and <code>WrapSerializer</code> functions by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11008">#11008</a></li> <li>Fix host required enforcement for urls to be compatible with v2.9 behavior by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11027">#11027</a></li> <li>Add a <code>default_factory_takes_validated_data</code> property to <code>FieldInfo</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11034">#11034</a></li> <li>Fix url json schema in <code>serialization</code> mode by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/11035">#11035</a></li> </ul> <h2>v2.10.2 (2024-11-25)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.10.2">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Only evaluate FieldInfo annotations if required during schema building by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10769">#10769</a></li> <li>Do not evaluate annotations for private fields by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10962">#10962</a></li> <li>Support serialization as any for <code>Secret</code> types and <code>Url</code> types by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10947">#10947</a></li> <li>Fix type hint of <code>Field.default</code> to be compatible with Python 3.8 and 3.9 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10972">#10972</a></li> <li>Add hashing support for URL types by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10975">#10975</a></li> <li>Hide <code>BaseModel.__replace__</code> definition from type checkers by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10979">10979</a></li> </ul> <h2>v2.10.1 (2024-11-21)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.10.1">GitHub release</a></p> <h3>What's Changed</h3> <h4>Packaging</h4> <ul> <li>Bump <code>pydantic-core</code> version to <code>v2.27.1</code> by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10938">#10938</a></li> </ul> <h4>Fixes</h4> <ul> <li>Use the correct frame when instantiating a parametrized <code>TypeAdapter</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10893">#10893</a></li> <li>Relax check for validated data in <code>default_factory</code> utils by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10909">#10909</a></li> <li>Fix type checking issue with <code>model_fields</code> and <code>model_computed_fields</code> by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10911">#10911</a></li> <li>Use the parent configuration during schema generation for stdlib <code>dataclass</code>es by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10928">#10928</a></li> <li>Use the <code>globals</code> of the function when evaluating the return type of serializers and <code>computed_field</code>s by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10929">#10929</a></li> <li>Fix URL constraint application by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10922">#10922</a></li> <li>Fix URL equality with different validation methods by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10934">#10934</a></li> <li>Fix JSON schema title when specified as <code>''</code> by <a href="https://github.com/sydney-runkle"><code>@sydney-runkle</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/10936">#10936</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pydantic/pydantic/commit/c326748b0119f12e284c280825d4ab6d3576643c"><code>c326748</code></a> Prep for v2.10.3 release (<a href="https://redirect.github.com/pydantic/pydantic/issues/11038">#11038</a>)</li> <li><a href="https://github.com/pydantic/pydantic/commit/68d35bffe00bf3b417d025a915effbfa8749d1e3"><code>68d35bf</code></a> Fix url json schema in <code>serialization</code> mode (<a href="https://redirect.github.com/pydantic/pydantic/issues/11035">#11035</a>)</li> <li><a href="https://github.com/pydantic/pydantic/commit/fa69b4c09a64d2c12a61e9ff2a747f2a304f1ee2"><code>fa69b4c</code></a> Add a <code>default_factory_takes_validated_data</code> property to <code>FieldInfo</code> (<a href="https://redirect.github.com/pydantic/pydantic/issues/11034">#11034</a>)</li> <li><a href="https://github.com/pydantic/pydantic/commit/435a7031f39c35286934edd0de6bfe134e8118c8"><code>435a703</code></a> Fix host required enforcement for urls to be compatible with v2.9 behavior (#...</li> <li><a href="https://github.com/pydantic/pydantic/commit/b2c4548f361b046062efe01e699b30121bb6b88d"><code>b2c4548</code></a> Use the globals of the function when evaluating the return type for `PlainSer...</li> <li><a href="https://github.com/pydantic/pydantic/commit/cb962c10b75c51fa4e1dc377c3d0db416ccb3bbf"><code>cb962c1</code></a> Do not resolve the JSON Schema reference for <code>dict</code> core schema keys (<a href="https://redirect.github.com/pydantic/pydantic/issues/10989">#10989</a>)</li> <li><a href="https://github.com/pydantic/pydantic/commit/10ebcdf60319676211b2bd5d36d9507835df9cb6"><code>10ebcdf</code></a> Set fields when <code>defer_build</code> is set on Pydantic dataclasses (<a href="https://redirect.github.com/pydantic/pydantic/issues/10984">#10984</a>)</li> <li><a href="https://github.com/pydantic/pydantic/commit/fe325154987b41345b356e5eb6d1584d7278bb0d"><code>fe32515</code></a> Prepare for v2.10.2 release (<a href="https://redirect.github.com/pydantic/pydantic/issues/10982">#10982</a>)</li> <li><a href="https://github.com/pydantic/pydantic/commit/226cfaf62bcfbc2454f81eb46ffd5001ecc8baa7"><code>226cfaf</code></a> Hide <code>BaseModel.__replace__</code> definition from type checkers (<a href="https://redirect.github.com/pydantic/pydantic/issues/10979">#10979</a>)</li> <li><a href="https://github.com/pydantic/pydantic/commit/02229a6ab176ae25d88f25e4c08fc84150558f86"><code>02229a6</code></a> hashing support for urls (<a href="https://redirect.github.com/pydantic/pydantic/issues/10975">#10975</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pydantic/pydantic/compare/v2.5.0...v2.10.3">compare view</a></li> </ul> </details> <br /> Updates `typer` from 0.12.3 to 0.15.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/fastapi/typer/releases">typer's releases</a>.</em></p> <blockquote> <h2>0.15.1</h2> <h3>Features</h3> <ul> <li>🗑️ Deprecate <code>shell_complete</code> and continue to use <code>autocompletion</code> for CLI parameters. PR <a href="https://redirect.github.com/fastapi/typer/pull/974">#974</a> by <a href="https://github.com/svlandeg"><code>@svlandeg</code></a>.</li> </ul> <h3>Docs</h3> <ul> <li>✏️ Fix a few typos in the source and documentation. PR <a href="https://redirect.github.com/fastapi/typer/pull/1028">#1028</a> by <a href="https://github.com/kkirsche"><code>@kkirsche</code></a>.</li> <li>📝 Fix minor inconsistencies and typos in tutorial. PR <a href="https://redirect.github.com/fastapi/typer/pull/1067">#1067</a> by <a href="https://github.com/tvoirand"><code>@tvoirand</code></a>.</li> <li>✏️ Fix a few small typos in the documentation. PR <a href="https://redirect.github.com/fastapi/typer/pull/1077">#1077</a> by <a href="https://github.com/svlandeg"><code>@svlandeg</code></a>.</li> </ul> <h3>Internal</h3> <ul> <li>🔧 Update build-docs filter patterns. PR <a href="https://redirect.github.com/fastapi/typer/pull/1080">#1080</a> by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li> <li>🔨 Update deploy docs preview script. PR <a href="https://redirect.github.com/fastapi/typer/pull/1079">#1079</a> by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li> <li>🔧 Update members. PR <a href="https://redirect.github.com/fastapi/typer/pull/1078">#1078</a> by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li> <li>⬆ [pre-commit.ci] pre-commit autoupdate. PR <a href="https://redirect.github.com/fastapi/typer/pull/1071">#1071</a> by <a href="https://github.com/apps/pre-commit-ci"><code>@pre-commit-ci[bot]</code></a>.</li> <li>⬆ Update httpx requirement from <!-- raw HTML omitted -->=0.27.0,<0.29.0. PR <a href="https://redirect.github.com/fastapi/typer/pull/1065">#1065</a> by <a href="https://github.com/apps/dependabot"><code>@dependabot[bot]</code></a>.</li> </ul> <h2>0.15.0</h2> <h3>Features</h3> <ul> <li>✨ Add support for extending typer apps without passing a name, add commands to the top level. PR <a href="https://redirect.github.com/fastapi/typer/pull/1037">#1037</a> by <a href="https://github.com/patrick91"><code>@patrick91</code></a>. <ul> <li>New docs: <a href="https://typer.tiangolo.com/tutorial/one-file-per-command/">One File Per Command</a>.</li> </ul> </li> </ul> <h3>Internal</h3> <ul> <li>⬆ Bump mkdocs-material from 9.5.46 to 9.5.47. PR <a href="https://redirect.github.com/fastapi/typer/pull/1070">#1070</a> by <a href="https://github.com/apps/dependabot"><code>@dependabot[bot]</code></a>.</li> <li>⬆ Bump ruff from 0.8.0 to 0.8.1. PR <a href="https://redirect.github.com/fastapi/typer/pull/1066">#1066</a> by <a href="https://github.com/apps/dependabot"><code>@dependabot[bot]</code></a>.</li> </ul> <h2>0.14.0</h2> <h3>Breaking Changes</h3> <ul> <li>🔥 Remove auto naming of groups added via <code>add_typer</code> based on the group's callback function name. PR <a href="https://redirect.github.com/fastapi/typer/pull/1052">#1052</a> by <a href="https://github.com/patrick91"><code>@patrick91</code></a>.</li> </ul> <p>Before, it was supported to infer the name of a command group from the callback function name in the sub-app, so, in this code:</p> <pre lang="python"><code>import typer <p>app = typer.Typer() users_app = typer.Typer()</p> <p>app.add_typer(users_app)</p> <p><a href="https://github.com/users"><code>@users</code></a>_app.callback() def users(): # <-- This was the inferred command group name """ Manage users in the app. </tr></table> </code></pre></p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/fastapi/typer/blob/master/docs/release-notes.md">typer's changelog</a>.</em></p> <blockquote> <h2>0.15.1</h2> <h3>Features</h3> <ul> <li>🗑️ Deprecate <code>shell_complete</code> and continue to use <code>autocompletion</code> for CLI parameters. PR <a href="https://redirect.github.com/fastapi/typer/pull/974">#974</a> by <a href="https://github.com/svlandeg"><code>@svlandeg</code></a>.</li> </ul> <h3>Docs</h3> <ul> <li>✏️ Fix a few typos in the source and documentation. PR <a href="https://redirect.github.com/fastapi/typer/pull/1028">#1028</a> by <a href="https://github.com/kkirsche"><code>@kkirsche</code></a>.</li> <li>📝 Fix minor inconsistencies and typos in tutorial. PR <a href="https://redirect.github.com/fastapi/typer/pull/1067">#1067</a> by <a href="https://github.com/tvoirand"><code>@tvoirand</code></a>.</li> <li>✏️ Fix a few small typos in the documentation. PR <a href="https://redirect.github.com/fastapi/typer/pull/1077">#1077</a> by <a href="https://github.com/svlandeg"><code>@svlandeg</code></a>.</li> </ul> <h3>Internal</h3> <ul> <li>🔧 Update build-docs filter patterns. PR <a href="https://redirect.github.com/fastapi/typer/pull/1080">#1080</a> by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li> <li>🔨 Update deploy docs preview script. PR <a href="https://redirect.github.com/fastapi/typer/pull/1079">#1079</a> by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li> <li>🔧 Update members. PR <a href="https://redirect.github.com/fastapi/typer/pull/1078">#1078</a> by <a href="https://github.com/tiangolo"><code>@tiangolo</code></a>.</li> <li>⬆ [pre-commit.ci] pre-commit autoupdate. PR <a href="https://redirect.github.com/fastapi/typer/pull/1071">#1071</a> by <a href="https://github.com/apps/pre-commit-ci"><code>@pre-commit-ci[bot]</code></a>.</li> <li>⬆ Update httpx requirement from <!-- raw HTML omitted -->=0.27.0,<0.29.0. PR <a href="https://redirect.github.com/fastapi/typer/pull/1065">#1065</a> by <a href="https://github.com/apps/dependabot"><code>@dependabot[bot]</code></a>.</li> </ul> <h2>0.15.0</h2> <h3>Features</h3> <ul> <li>✨ Add support for extending typer apps without passing a name, add commands to the top level. PR <a href="https://redirect.github.com/fastapi/typer/pull/1037">#1037</a> by <a href="https://github.com/patrick91"><code>@patrick91</code></a>. <ul> <li>New docs: <a href="https://typer.tiangolo.com/tutorial/one-file-per-command/">One File Per Command</a>.</li> </ul> </li> </ul> <h3>Internal</h3> <ul> <li>⬆ Bump mkdocs-material from 9.5.46 to 9.5.47. PR <a href="https://redirect.github.com/fastapi/typer/pull/1070">#1070</a> by <a href="https://github.com/apps/dependabot"><code>@dependabot[bot]</code></a>.</li> <li>⬆ Bump ruff from 0.8.0 to 0.8.1. PR <a href="https://redirect.github.com/fastapi/typer/pull/1066">#1066</a> by <a href="https://github.com/apps/dependabot"><code>@dependabot[bot]</code></a>.</li> </ul> <h2>0.14.0</h2> <h3>Breaking Changes</h3> <ul> <li>🔥 Remove auto naming of groups added via <code>add_typer</code> based on the group's callback function name. PR <a href="https://redirect.github.com/fastapi/typer/pull/1052">#1052</a> by <a href="https://github.com/patrick91"><code>@patrick91</code></a>.</li> </ul> <p>Before, it was supported to infer the name of a command group from the callback function name in the sub-app, so, in this code:</p> <pre lang="python"><code>import typer <p>app = typer.Typer() users_app = typer.Typer()</p> <p>app.add_typer(users_app)</p> <p><a href="https://github.com/users"><code>@users</code></a>_app.callback() </tr></table> </code></pre></p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/fastapi/typer/commit/0b89650d1e694f5c936836c9b768d8c023413cf2"><code>0b89650</code></a> 🔖 Release version 0.15.1</li> <li><a href="https://github.com/fastapi/typer/commit/bd89bf62f2bfe0af8667e85db341db1f32db694d"><code>bd89bf6</code></a> 📝 Update release notes</li> <li><a href="https://github.com/fastapi/typer/commit/3b9ce479086636280271d36e410dc5abdcf318d8"><code>3b9ce47</code></a> ✏️ Fix a few typos in the source and documentation (<a href="https://redirect.github.com/fastapi/typer/issues/1028">#1028</a>)</li> <li><a href="https://github.com/fastapi/typer/commit/95ba85f5b3c8088733e22218d9c87eb38e03ab08"><code>95ba85f</code></a> 📝 Update release notes</li> <li><a href="https://github.com/fastapi/typer/commit/dbc335b0824b952c70278cccb5dbcf774cdba9b5"><code>dbc335b</code></a> 📝 Fix minor inconsistencies and typos in tutorial (<a href="https://redirect.github.com/fastapi/typer/issues/1067">#1067</a>)</li> <li><a href="https://github.com/fastapi/typer/commit/b88c327d1c3c94de53280130f787a320f3378f69"><code>b88c327</code></a> 📝 Update release notes</li> <li><a href="https://github.com/fastapi/typer/commit/d8e56e275f63446e7d455efc83095ec4d711114d"><code>d8e56e2</code></a> 🗑️ Deprecate <code>shell_complete</code> and continue to use <code>autocompletion</code> for CLI pa...</li> <li><a href="https://github.com/fastapi/typer/commit/5f378eec9d8400960e89a305763572f97237afe4"><code>5f378ee</code></a> 📝 Update release notes</li> <li><a href="https://github.com/fastapi/typer/commit/b826dc445162af7d6edd1aebe173fa49c1d683ce"><code>b826dc4</code></a> ✏️ Fix a few small typos in the documentation (<a href="https://redirect.github.com/fastapi/typer/issues/1077">#1077</a>)</li> <li><a href="https://github.com/fastapi/typer/commit/9be60da3aec1693ca787947f8c8154a9b6c9fc5b"><code>9be60da</code></a> 📝 Update release notes</li> <li>Additional commits viewable in <a href="https://github.com/fastapi/typer/compare/0.12.3...0.15.1">compare view</a></li> </ul> </details> <br /> Updates `scikit-image` to 0.25.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/scikit-image/scikit-image/releases">scikit-image's releases</a>.</em></p> <blockquote> <h2>v0.25.0</h2> <h1>scikit-image 0.25.0</h1> <p>We're happy to announce the release of scikit-image 0.25.0!</p> <h2>New Features</h2> <ul> <li>Add the new Gray-Level Co-occurrence Matrix (GLCM) properties "mean", "variance", "standard deviation" and "entropy" to <code>skimage.feature.texture.graycoprops</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7375">#7375</a>).</li> <li>Add the new <code>skimage.morphology.footprint_rectangle</code> supporting generation of rectangular or hyper-rectangular footprints in one function (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7566">#7566</a>).</li> </ul> <h2>API Changes</h2> <ul> <li>Complete the deprecation of and remove <code>skimage.feature.plot_matches</code>. Use <code>skimage.feature.plot_matched_features</code> going forward (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7487">#7487</a>).</li> <li>Deprecate <code>skimage.io.imshow</code>, <code>skimage.io.imshow_collection</code> and <code>skimage.io.show</code>. Please use <code>matplotlib</code>, <code>napari</code>, etc. to visualize images (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7508">#7508</a>).</li> <li>Remove deprecated <code>skimage.morphology.skeletonize_3d</code>; use <code>skimage.morphology.skeletonize</code> instead (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7572">#7572</a>).</li> <li>Deprecate <code>skimage.io</code> plugin infrastructure (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7353">#7353</a>).</li> <li>Switched to using the <code>scipy.sparse</code> array interface. For more details, see the note about the new <code>scipy.sparse</code> array interface <a href="https://docs.scipy.org/doc/scipy/reference/sparse.html">here</a> (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7576">#7576</a>).</li> <li>Deprecate <code>skimage.morphology.rectangle</code> in favor of the new function <code>skimage.morphology.footprint_rectangle</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7566">#7566</a>).</li> <li>Deprecate <code>skimage.morphology.square</code> in favor of the new function <code>skimage.morphology.footprint_rectangle</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7566">#7566</a>).</li> <li>Deprecate <code>skimage.morphology.cube</code> in favor of the new function <code>skimage.morphology.footprint_rectangle</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7566">#7566</a>).</li> </ul> <h2>Enhancements</h2> <ul> <li>Improve numerical stability of <code>skimage.morphology.local_minima</code> for extremely small floats (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7534">#7534</a>).</li> <li>Make sure that <code>skimage.feature.plot_matched_features</code> uses the same random colors, if <code>matches_color</code> isn't provided explicitly (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7541">#7541</a>).</li> <li>Allow passing a sequence of colors to the parameter <code>matches_color</code> in <code>skimage.feature.plot_matched_features</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7541">#7541</a>).</li> </ul> <h2>Performance</h2> <ul> <li><code>skimage.feature.peak_local_max</code> will now skip unnecessary distance computations in the case of <code>min_distance=1</code>. This results in performance improvements to functions like <code>skimage.feature.blob_dog</code>, <code>skimage.feature.blob_log</code>, <code>skimage.feature.blob_doh</code> and <code>skimage.feature.corner_peaks</code> that call <code>peak_local_max</code> internally (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7548">#7548</a>).</li> <li>In <code>skimage.featurepeak_local_max</code>, skip unnecessary check for cases where <code>min_distance > 1</code> is passed (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7548">#7548</a>).</li> </ul> <h2>Bug Fixes</h2> <ul> <li>Ensure that <code>skimage.morphology.remove_objects_by_distance</code> doesn't fail if the given integer dtype cannot be safely cast to the architecture specific size of <code>intp</code>, e.g. on i386 architectures (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7453">#7453</a>).</li> <li>Fix degeneracy in <code>skimage.draw.ellipsoid_stats</code> when all semi-axes have the same length (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7473">#7473</a>).</li> <li>Prevent <code>skimage.morphology.thin</code> from accidentally modifying the input image in case it is of dtype uint8 (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7469">#7469</a>).</li> <li>Fix numerical precision error in <code>skimage.measure.ransac</code>. In some cases, <code>ransac</code> was stopping at the first iteration (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7065">#7065</a>).</li> <li>Fix numerical precision error in <code>skimage.measure.ransac</code>; very small probabilities lead to -0 number of max trials (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7496">#7496</a>).</li> <li>Ensure that <code>RegionProperties</code> objects returned by <code>skimage.measure.regionprops</code> can be deserialized with pickle (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7569">#7569</a>).</li> <li>Fix edge case where setting <code>watershed_lines=True</code> in <code>skimage.segmentation.watershed</code> resulted in an incorrect solution (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7071">#7071</a>).</li> <li>Fix the behavior of <code>skimage.segmentation.watershed</code> when the markers don't align with local minima by making sure every marker is evaluated before successive pixels (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7071">#7071</a>).</li> <li>Fix dtype promotion in <code>skimage.segmentation.join_segmentations</code> if <code>numpy.uint</code> is used with NumPy<2 (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7292">#7292</a>).</li> </ul> <h2>Documentation</h2> <ul> <li>In <code>skimage.morphology.skeletonize</code>, clarify the expected image dtypes and how objects of different intensities are handled (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7456">#7456</a>).</li> <li>Fix example section in docstring of <code>skimage.feature.graycomatrix</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7297">#7297</a>).</li> <li>Use conda-forge consistently in instructions for setting up the development environment (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7483">#7483</a>).</li> <li>Use new <code>CITATION.cff</code> instead of <code>CITATION.bib</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/pull/7505">#7505</a>).</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/scikit-image/scikit-image/commit/f172eba9912ab7fd9cd880a3eb2a0af8b3b788bb"><code>f172eba</code></a> Designate 0.25.0 release</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/af12cc8e1d6a1154da41e08e0b709c6c9ba0a13e"><code>af12cc8</code></a> Fix CI (<a href="https://redirect.github.com/scikit-image/scikit-image/issues/7631">#7631</a>)</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/583af8548c8f96a9ea057afd335d1cf4c0ed83ae"><code>583af85</code></a> Bump version</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/ee3f821bd78c54ecd08829079e71a1b40e50a1a0"><code>ee3f821</code></a> Designate 0.25.0rc2 release</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/a2a80b7387147a8b12131cac851a0fc102c65d6a"><code>a2a80b7</code></a> Lazy load legacy imports in <code>skimage</code> top module (<a href="https://redirect.github.com/scikit-image/scikit-image/issues/6892">#6892</a>)</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/aa7042ccd227e7f49b73ac466542088ec5a9ad63"><code>aa7042c</code></a> Change type annotation of ball radius from int to float (<a href="https://redirect.github.com/scikit-image/scikit-image/issues/7627">#7627</a>)</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/a854ec56aeea68f0b45c6b1ff835fdd950bcb458"><code>a854ec5</code></a> Upgrade to spin 0.13 (<a href="https://redirect.github.com/scikit-image/scikit-image/issues/7622">#7622</a>)</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/2d0c092b960c489e4bb4603d92a7d11b483725dd"><code>2d0c092</code></a> Add forgotten TODO about deprecated <code>square</code>, <code>cube</code> & <code>rectangle</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/issues/7624">#7624</a>)</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/1bd159829af2a535644400b8ca9ac3ca2c214b42"><code>1bd1598</code></a> Fix <code>join_segmentations</code> dtype error for np.uint (<a href="https://redirect.github.com/scikit-image/scikit-image/issues/7292">#7292</a>)</li> <li><a href="https://github.com/scikit-image/scikit-image/commit/4fb2464d32bbba9377f9423d5e86f12a0f756a86"><code>4fb2464</code></a> Replace <code>square</code>, <code>rectangle</code>, <code>cube</code> with <code>footprint_rectangle</code> (<a href="https://redirect.github.com/scikit-image/scikit-image/issues/7566">#7566</a>)</li> <li>Additional commits viewable in <a href="https://github.com/scikit-image/scikit-image/compare/v0.1...v0.25.0">compare view</a></li> </ul> </details> <br /> Updates `pillow` to 11.0.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/python-pillow/Pillow/releases">pillow's releases</a>.</em></p> <blockquote> <h2>11.0.0</h2> <p><a href="https://pillow.readthedocs.io/en/stable/releasenotes/11.0.0.html">https://pillow.readthedocs.io/en/stable/releasenotes/11.0.0.html</a></p> <h2>Removals</h2> <ul> <li>Drop support for EOL PyPy3.9 <a href="https://redirect.github.com/python-pillow/Pillow/issues/8335">#8335</a> [<a href="https://github.com/hugovk"><code>@hugovk</code></a>]</li> <li>Remove all WITH_* flags from _imaging.c and other flags <a href="https://redirect.github.com/python-pillow/Pillow/issues/8211">#8211</a> [<a href="https://github.com/homm"><code>@homm</code></a>]</li> <li>Remove unused _util.is_directory <a href="https://redirect.github.com/python-pillow/Pillow/issues/8259">#8259</a> [<a href="https://github.com/hugovk"><code>@hugovk</code></a>]</li> <li>Drop support for Python 3.8 <a href="https://redirect.github.com/python-pillow/Pillow/issues/8183">#8183</a> [<a href="https://github.com/hugovk"><code>@hugovk</code></a>]</li> <li>Remove PSFile, PyAccess and USE_CFFI_ACCESS <a href="https://redirect.github.com/python-pillow/Pillow/issues/8182">#8182</a> [<a href="https://github.com/hugovk"><code>@hugovk</code></a>]</li> </ul> <h2>Deprecations</h2> <ul> <li>Deprecate ICNS (width, height, scale) sizes in favour of load(scale) <a href="https://redirect.github.com/python-pillow/Pillow/issues/8352">#8352</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Deprecate isImageType <a href="https://redirect.github.com/python-pillow/Pillow/issues/8364">#8364</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Deprecate support for FreeType 2.9.0 <a href="https://redirect.github.com/python-pillow/Pillow/issues/8356">#8356</a> [<a href="https://github.com/hugovk"><code>@hugovk</code></a>]</li> <li>Remove WebP support without anim, mux/demux, and with buggy alpha <a href="https://redirect.github.com/python-pillow/Pillow/issues/8213">#8213</a> [<a href="https://github.com/homm"><code>@homm</code></a>]</li> <li>Deprecate JpegImageFile huffman_ac and huffman_dc <a href="https://redirect.github.com/python-pillow/Pillow/issues/8274">#8274</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Deprecate ImageMath lambda_eval and unsafe_eval options argument <a href="https://redirect.github.com/python-pillow/Pillow/issues/8242">#8242</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> </ul> <h2>Changes</h2> <ul> <li>Do not create core image in TIFF seek() <a href="https://redirect.github.com/python-pillow/Pillow/issues/8392">#8392</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Removed custom build_openjpeg <a href="https://redirect.github.com/python-pillow/Pillow/issues/8365">#8365</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Support writing LONG8 offsets in AppendingTiffWriter <a href="https://redirect.github.com/python-pillow/Pillow/issues/8417">#8417</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Use ImageFile.MAXBLOCK when saving TIFF images <a href="https://redirect.github.com/python-pillow/Pillow/issues/8461">#8461</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Always raise warnings for deprecated feature checks <a href="https://redirect.github.com/python-pillow/Pillow/issues/8459">#8459</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Do not close provided file handles with libtiff when saving <a href="https://redirect.github.com/python-pillow/Pillow/issues/8458">#8458</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Revert "Skip QEMU-emulated wheels on workflow dispatch event" <a href="https://redirect.github.com/python-pillow/Pillow/issues/8455">#8455</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Support ImageFilter.BuiltinFilter for I;16* images <a href="https://redirect.github.com/python-pillow/Pillow/issues/8438">#8438</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>[pre-commit.ci] pre-commit autoupdate <a href="https://redirect.github.com/python-pillow/Pillow/issues/8448">#8448</a> [<a href="https://github.com/pre-commit-ci"><code>@pre-commit-ci</code></a>]</li> <li>Use ImagingCore.ptr instead of ImagingCore.id <a href="https://redirect.github.com/python-pillow/Pillow/issues/8341">#8341</a> [<a href="https://github.com/homm"><code>@homm</code></a>]</li> <li>Simplified code <a href="https://redirect.github.com/python-pillow/Pillow/issues/8445">#8445</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Removed unused code <a href="https://redirect.github.com/python-pillow/Pillow/issues/8447">#8447</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Updated EPS mode when opening images without transparency <a href="https://redirect.github.com/python-pillow/Pillow/issues/8281">#8281</a> [<a href="https://github.com/Yay295"><code>@Yay295</code></a>]</li> <li>Use transparency when combining P frames from APNGs <a href="https://redirect.github.com/python-pillow/Pillow/issues/8443">#8443</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Generate and upload attestations to PyPI <a href="https://redirect.github.com/python-pillow/Pillow/issues/8441">#8441</a> [<a href="https://github.com/hugovk"><code>@hugovk</code></a>]</li> <li>Do not convert images unnecessarily in ImageEnhance <a href="https://redirect.github.com/python-pillow/Pillow/issues/8431">#8431</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Raise an error if path is compacted during mapping <a href="https://redirect.github.com/python-pillow/Pillow/issues/8416">#8416</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Support all resampling filters when resizing I;16* images <a href="https://redirect.github.com/python-pillow/Pillow/issues/8422">#8422</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Free memory on early return <a href="https://redirect.github.com/python-pillow/Pillow/issues/8413">#8413</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Cast int before potentially exceeding INT_MAX <a href="https://redirect.github.com/python-pillow/Pillow/issues/8402">#8402</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Prevent division by zero <a href="https://redirect.github.com/python-pillow/Pillow/issues/8408">#8408</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Check image value before use <a href="https://redirect.github.com/python-pillow/Pillow/issues/8400">#8400</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Use ruff check <a href="https://redirect.github.com/python-pillow/Pillow/issues/8423">#8423</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Change harfbuzz versions in wheels <a href="https://redirect.github.com/python-pillow/Pillow/issues/8421">#8421</a> [<a href="https://github.com/radarhere"><code>@radarhere</code></a>]</li> <li>Use Capsule for WebP saving <a href="https://redirect…
- Loading branch information