Announcement: scikit-image 0.20.0
scikit-image is an image processing toolbox built on SciPy that includes algorithms for segmentation, geometric transformations, color space manipulation, analysis, filtering, morphology, feature detection, and more.
For more information, examples, and documentation, please visit our website: https://scikit-image.org
With this release, many of the functions in skimage.measure
now support anisotropic images with different voxel spacings.
Many performance improvements were made, such as support for footprint decomposition in skimage.morphology
Four new gallery examples were added to the documentation, including the new interactive example "Track solidification of a metallic alloy".
This release completes the transition to a more flexible channel_axis
parameter for indicating multi-channel images, and includes several other deprecations that make the API more consistent and expressive.
Finally, in preparation for the removal of distutils
in the upcoming Python 3.12 release, we replaced our build system with meson
and a static pyproject.toml
specification.
This release supports Python 3.8--3.11.
New features and improvements
- Support footprint decomposition to several footprint generating and consuming functions in
skimage.morphology
. By decomposing a footprint into several smaller ones, morphological operations can potentially be sped up. The decomposed footprint can be generated with the newdecomposition
parameter of the functionsrectangle
,diamond
,disk
,cube
,octahedron
,ball
, andoctagon
inskimage.morphology
. Thefootprint
parameter of the functionsbinary_erosion
,binary_dilation
,binary_opening
,binary_closing
,erosion
,dilation
,opening
,closing
,white_tophat
, andblack_tophat
inskimage.morphology
now accepts a sequence of 2-element tuples(footprint_i, num_iter_i)
where each entry,i
, of the sequence contains a footprint and the number of times it should be iteratively applied. This is the form produced by the footprint decompositions mentioned above (#5482, #6151). - Support anisotropic images with different voxel spacings. Spacings can be defined with the new parameter
spacing
of the following functions inskimage.measure
:regionprops
,regionprops_table
,moments
,moments_central
,moments_normalized
,centroid
,inertia_tensor
, andinertia_tensor_eigvals
. Voxel spacing is taken into account for the following existing properties inskimage.measure.regionprops
:area
,area_bbox
,centroid
,area_convex
,extent
,feret_diameter_max
,area_filled
,inertia_tensor
,moments
,moments_central
,moments_hu
,moments_normalized
,perimeter
,perimeter_crofton
,solidity
,moments_weighted_central
, andmoments_weighted_hu
. The new propertiesnum_pixels
andcoords_scaled
are available as well. See the respective docstrings for more details (#6296). - Add isotropic binary morphological operators
isotropic_closing
,isotropic_dilation
,isotropic_erosion
, andisotropic_opening
inskimage.morphology
. These functions return the same results as their non-isotropic counterparts but perform faster for large circular structuring elements (#6492). - Add new colocalization metrics
pearson_corr_coeff
,manders_coloc_coeff
,manders_overlap_coeff
andintersection_coeff
toskimage.measure
(#6189). - Support the Modified Hausdorff Distance (MHD) metric in
skimage.metrics.hausdorff_distance
via the new parametermethod
. The MHD can be more robust against outliers than the directed Hausdorff Distance (HD) (#5581). - Add two datasets
skimage.data.protein_transport
andskimage.data.nickel_solidification
(#6087). - Add new parameter
use_gaussian_derivatives
toskimage.feature.hessian_matrix
which allows the computation of the Hessian matrix by convolving with Gaussian derivatives (#6149). - Add new parameters
squared_butterworth
andnpad
toskimage.filters.butterworth
, which support traditional or squared filtering and edge padding, respectively (#6251). - Support construction of a
skimage.io.ImageCollection
from aload_pattern
with an arbitrary sequence as long as a matchingload_func
is provided (#6276). - Add new parameter
alpha
toskimage.metrics.adapted_rand_error
allowing control over the weight given to precision and recall (#6472). - Add new parameter
binarize
toskimage.measure.grid_points_in_poly
to optionally return labels that tell whether a pixel is inside, outside, or on the border of the polygon (#6515). - Add new parameter
include_borders
toskimage.measure.convex_hull_image
to optionally exclude vertices or edges from the final hull mask (#6515). - Add new parameter
offsets
toskimage.measure.regionprops
that optionally allows specifying the coordinates of the origin and affects the propertiescoords_scaled
andcoords
(#3706). - Add new parameter
disambiguate
toskimage.registration.phase_cross_correlation
to optionally disambiguate periodic shifts (#6617). - Support n-dimensional images in
skimage.filters.farid
(Farid & Simoncelli filter) (#6257). - Support n-dimensional images in
skimage.restoration.wiener
(#6454). - Support three dimensions for the properties
rotation
andtranslation
inskimage.transform.EuclideanTransform
as well as forskimage.transform.SimilarityTransform.scale
(#6367). - Allow footprints with non-adjacent pixels as neighbors in
skimage.morphology.flood_fill
(#6236). - Support array-likes consistently in
AffineTransform
,EssentialMatrixTransform
,EuclideanTransform
,FundamentalMatrixTransform
,GeometricTransform
,PiecewiseAffineTransform
,PolynomialTransform
,ProjectiveTransform
,SimilarityTransform
,estimate_transform
, andmatrix_transform
inskimage.transform
(#6270).
Performance
- Improve performance (~2x speedup) of
skimage.feature.canny
by porting a part of its implementation to Cython (#6387). - Improve performance (~2x speedup) of
skimage.feature.hessian_matrix_eigvals
and 2Dskimage.feature.structure_tensor_eigenvalues
(#6441). - Improve performance of
skimage.measure.moments_central
by avoiding redundant computations (#6188). - Reduce import time of
skimage.io
by loading the matplotlib plugin only when required (#6550). - Incorporate RANSAC improvements from scikit-learn into
skimage.measure.ransac
which decrease the number of iterations (#6046). - Improve histogram matching performance on unsigned integer data with
skimage.exposure.match_histograms
. (#6209, #6354). - Reduce memory consumption of the ridge filters
meijering
,sato
,frangi
, andhessian
inskimage.filters
(#6509). - Reduce memory consumption of
blob_dog
,blob_log
, andblob_doh
inskimage.feature
(#6597). - Use minimal required unsigned integer size internally in
skimage.morphology.reconstruction
which allows to operate the function with higher precision or on larger arrays. Previously, int32 was used. (#6342). - Use minimal required unsigned integer size in
skimage.filters.rank_order
which allows to operate the function with higher precision or on larger arrays. Previously, the returnedlabels
andoriginal_values
were always of type uint32. (#6342).
Changes and new deprecations
- Set Python 3.8 as the minimal supported version (#6679).
- Rewrite
skimage.filters.meijering
,skimage.filters.sato
,skimage.filters.frangi
, andskimage.filters.hessian
to match the published algorithms more closely. This change is backward incompatible and will lead to different output values compared to the previous implementation. The Hessian matrix calculation is now done more accurately. The filters will now be correctly set to zero whenever one of the Hessian eigenvalues has a sign which is incompatible with a ridge of the desired polarity. The gamma constant of the Frangi filter is now set adaptively based on the maximum Hessian norm (#6446). - Move functions in
skimage.future.graph
toskimage.graph
. This affectscut_threshold
,cut_normalized
,merge_hierarchical
,rag_mean_color
,RAG
,show_rag
, andrag_boundary
(#6674). - Return
False
inskimage.measure.LineModelND.estimate
instead of raising an error if the model is under-determined (#6453). - Return
False
inskimage.measure.CircleModel.estimate
instead of warning if the model is under-determined (#6453). - Rename
skimage.filters.inverse
toskimage.filters.inverse_filter
.skimage.filters.inverse
is deprecated and will be removed in the next release (#6418, #6701). - Update minimal supported dependencies to
numpy>=1.20
(#6565). - Update minimal supported dependencies to
scipy>=1.8
(#6564). - Update minimal supported dependencies to
networkx>=2.8
(#6564). - Update minimal supported dependency to
pillow>=9.0.1
(#6402). - Update minimal supported dependency to
setuptools 67
(#6754). - Update optional, minimal supported dependency to
matplotlib>=3.3
(#6383). - Warn for non-integer image inputs to
skimage.feature.local_binary_pattern
. Applying the function to floating-point images may give unexpected results when small numerical differences between adjacent pixels are present (#6272). - Warn if
skimage.registration.phase_cross_correlation
returns only the shift vector. Starting with the next release this function will always return a tuple of three (shift vector, error, phase difference). Usereturn_error="always"
to silence this warning and switch to this new behavior (#6543). - Warn in
skimage.metrics.structural_similarity
, ifdata_range
is not specified in case of floating point data (#6612). - Automatic detection of the color channel is deprecated in
skimage.filters.gaussian
and a warning is emitted if the parameterchannel_axis
is not set explicitly (#6583).
Completed deprecations
- Remove
skimage.viewer
which was scheduled for removal in the postponed version 1.0 (#6160). - Remove deprecated parameter
indices
fromskimage.feature.peak_local_max
(#6161). - Remove
skimage.feature.structure_tensor_eigvals
(it was replaced byskimage.feature.structure_tensor_eigenvalues
) and change the default parameter value inskimage.feature.structure_tensor
toorder="rc"
(#6162). - Remove deprecated parameter
array
in favor ofimage
fromskimage.measure.find_contours
(#6163). - Remove deprecated Qt IO plugin and the
skivi
console script (#6164). - Remove deprecated parameter value
method='_lorensen'
inskimage.measure.marching_cubes
(#6230). - Remove deprecated parameter
multichannel
; usechannel_axis
instead. This affectsskimage.draw.random_shapes
,skimage.exposure.match_histograms
,skimage.feature.multiscale_basic_features
,skimage.feature.hog
,skimage.feature.difference_of_gaussians
,skimage.filters.unsharp_mask
, andskimage.metrics.structural_similarity
. Inskimage.restoration
, this affectscycle_spin
,denoise_bilateral
,denoise_tv_bregman
,denoise_tv_chambolle
,denoise_wavelet
,estimate_sigma
,inpaint_biharmonic
, anddenoise_nl_means
. Inskimage.segmentation
, this affectsfelzenszwalb
,random_walker
, andslic
. Inskimage.transform
, this affectsrescale
,warp_polar
,pyramid_reduce
,pyramid_expand
,pyramid_gaussian
, andpyramid_laplacian
. Inskimage.util
, this affectsmontage
andapply_parallel
(#6583). - Remove deprecated parameter
selem
; usefootprint
instead. Inskimage.filters
, this affectsmedian
,autolevel_percentile
,gradient_percentile
,mean_percentile
,subtract_mean_percentile
,enhance_contrast_percentile
,percentile
,pop_percentile
,sum_percentile
,threshold_percentile
,mean_bilateral
,pop_bilateral
,sum_bilateral
,autolevel
,equalize
,gradient
,maximum
,mean
,geometric_mean
,subtract_mean
,median
,minimum
,modal
,enhance_contrast
,pop
,sum
,threshold
,noise_filter
,entropy
,otsu
,windowed_histogram
, andmajority
. Inskimage.morphology
, this affectsflood_fill
,flood
,binary_erosion
,binary_dilation
,binary_opening
,binary_closing
,h_maxima
,h_minima
,local_maxima
,local_minima
,erosion
,dilation
,opening
,closing
,white_tophat
,black_tophat
, andreconstruction
(#6583). - Remove deprecated parameter
max_iter
fromskimage.filters.threshold_minimum
,skimage.morphology.thin
, andskimage.segmentation.chan_vese
; usemax_num_iter
instead (#6583). - Remove deprecated parameter
max_iterations
fromskimage.segmentation.active_contour
; usemax_num_iter
instead (#6583). - Remove deprecated parameter
input
fromskimage.measure.label
; uselabel_image
instead (#6583). - Remove deprecated parameter
coordinates
fromskimage.measure.regionprops
andskimage.segmentation.active_contour
(#6583). - Remove deprecated parameter
neighbourhood
fromskimage.measure.perimeter
; useneighborhood
instead (#6583). - Remove deprecated parameters
height
andwidth
fromskimage.morphology.rectangle
; usencols
andnrows
instead (#6583). - Remove deprecated parameter
in_place
fromskimage.morphology.remove_small_objects
,skimage.morphology.remove_small_holes
, andskimage.segmentation.clear_border
; useout
instead (#6583). - Remove deprecated parameter
iterations
fromskimage.restoration.richardson_lucy
,skimage.segmentation.morphological_chan_vese
, andskimage.segmentation.morphological_geodesic_active_contour
; usenum_iter
instead (#6583). - Remove support for deprecated keys
"min_iter"
and"max_iter"
inskimage.restoration.unsupervised_wiener
's parameteruser_params
; use"min_num_iter"
and"max_num_iter"
instead (#6583). - Remove deprecated functions
greycomatrix
andgreycoprops
fromskimage.feature
(#6583). - Remove deprecated submodules
skimage.morphology.grey
andskimage.morphology.greyreconstruct
; useskimage.morphology
instead (#6583). - Remove deprecated submodule
skimage.morphology.selem
; useskimage.morphology.footprints
instead (#6583). - Remove deprecated
skimage.future.graph.ncut
(it was replaced byskimage.graph.cut_normalized
) (#6685).
Bug fixes
- Fix round-off error in
skimage.exposure.adjust_gamma
(#6285). - Round and convert output coordinates of
skimage.draw.rectangle
toint
even if the input coordinates usefloat
. This fix ensures that the output can be used for indexing similar to other draw functions (#6501). - Avoid unexpected exclusion of peaks near the image border in
skimage.feature.peak_local_max
if the peak value is smaller 0 (#6502). - Avoid anti-aliasing in
skimage.transform.resize
by default when using nearest neighbor interpolation (order == 0
) with an integer input data type (#6503). - Use mask during rescaling in
skimage.segmentation.slic
. Previously, the mask was ignored when rescaling the image to make choice of compactness insensitive to the image values. The new behavior makes it possible to mask values such asnumpy.nan
ornumpy.infinity
. Additionally, raise an error if the inputimage
has two dimensions and achannel_axis
is specified - indicating that the image is multi-channel (#6525). - Fix unexpected error when passing a tuple to the parameter
exclude_border
inskimage.feature.blog_dog
andskimage.feature.blob_log
(#6533). - Raise a specific error message in
skimage.segmentation.random_walker
if no seeds are provided as positive values in the parameterlabels
(#6562). - Raise a specific error message when accessing region properties from
skimage.measure.regionprops
when the requiredintensity_image
is unavailable (#6584). - Avoid errors in
skimage.feature.ORB.detect_and_extract
by breaking early if the octave image is too small (#6590). - Fix
skimage.restoration.inpaint_biharmonic
for images with Fortran-ordered memory layout (#6263). - Fix automatic detection of the color channel in
skimage.filters.gaussian
(this behavior is deprecated, see new deprecations) (#6583). - Fix stacklevel of warning in
skimage.color.lab2rgb
(#6616). - Fix the order of return values for
skimage.feature.hessian_matrix
and raise an error iforder='xy'
is requested for images with more than 2 dimensions (#6624). - Fix misleading exception in functions in
skimage.filters.rank
that did not mention that 2D images are also supported (#6666). - Fix in-place merging of wheights in
skimage.graph.RAG.merge_nodes
(#6692). - Fix growing memory error and silence compiler warning in internal
heappush
function (#6727). - Fix compiliation warning about struct initialization in
Cascade.detect_multi_scale
(#6728).
Documentation
New
- Add gallery example "Decompose flat footprints (structuring elements)" (#6151).
- Add gallery example "Butterworth Filters" and improve docstring of
skimage.filters.butterworth
(#6251). - Add gallery example "Render text onto an image" (#6431).
- Add gallery example "Track solidification of a metallic alloy" (#6469).
- Add gallery example "Colocalization metrics" (#6189).
- Add support page (
.github/SUPPORT.md
) to help users from GitHub find appropriate support resources (#6171, #6575). - Add
CITATION.bib
to repository to help with citing scikit-image (#6195). - Add usage instructions for new Meson-based build system with
dev.py
(#6600).
Improved & updated
- Improve gallery example "Measure perimeters with different estimators" (#6200, #6121).
- Adapt gallery example "Build image pyramids" to more diversified shaped images and downsample factors (#6293).
- Adapt gallery example "Explore 3D images (of cells)" with interactive slice explorer using plotly (#4953).
- Clarify meaning of the
weights
term and rewrite docstrings ofskimage.restoration.denoise_tv_bregman
andskimage.restoration.denoise_tv_chambolle
(#6544). - Describe the behavior of
skimage.io.MultiImage
more precisely in its docstring (#6290, #6292). - Clarify that the enabled
watershed_line
parameter will not catch borders between adjacent marker regions inskimage.segmentation.watershed
(#6280). - Clarify that
skimage.morphology.skeletonize
accepts animage
of any input type (#6322). - Use gridded thumbnails in our gallery to demonstrate the different images and datasets available in
skimage.data
(#6298, #6300, #6301). - Tweak
balance
in the docstring example ofskimage.restoration.wiener
for a less blurry result (#6265). - Document support for Path objects in
skimage.io.imread
andskimage.io.imsave
(#6361). - Improve error message in
skimage.filters.threshold_multiotsu
if the discretized image cannot be thresholded (#6375). - Show original unlabeled image as well in the gallery example "Expand segmentation labels without overlap" (#6396).
- Document refactoring of
grey*
toskimage.feature.graymatrix
andskimage.feature.graycoprops
in the release 0.19 (#6420). - Document inclusion criteria for new functionality in core developer guide (#6488).
- Print the number of segments after applying the Watershed in the gallery example "Comparison of segmentation and superpixel algorithms" (#6535).
- Replace issue templates with issue forms (#6554, #6576).
- Expand reviewer guidelines in pull request template (#6208).
- Provide pre-commit PR instructions in pull request template (#6578).
- Warn about and explain the handling of floating-point data in the docstring of
skimage.metricts.structural_similarity
(#6595). - Fix intensity autoscaling in animated
imshow
in gallery example "Measure fluorescence intensity at the nuclear envelope" (#6599). - Clarify dependency on
scikit-image[data]
and pooch inINSTALL.rst
(#6619). - Don't use confusing loop in installation instructions for conda (#6672).
- Document value ranges of L*a*b* and L*Ch in
lab2xyz
,rgb2lab
,lab2lch
, andlch2lab
inskimage.color
(#6688, #6697, #6719). - Use more consistent style in docstring of
skimage.feature.local_binary_pattern
(#6736).
Fixes, spelling & minor tweaks
- Remove deprecated reference and use
skimage.measure.marching_cubes
in gallery example "Marching Cubes" (#6377). - List only the two primary OS-independent methods of installing scikit-image (#6557, #6560).
- Fix description of
connectivity
parameter in the docstring ofskimage.morphology.flood
(#6534). - Fix formatting in the docstring of
skimage.metrics.hausdorff_distance
(#6203). - Fix typo in docstring of
skimage.measure.moments_hu
(#6016). - Fix formatting of mode parameter in
skimage.util.random_noise
(#6532). - Fix broken links in SKIP 3 (#6445).
- Fix broken link in docstring of
skimage.filters.sobel
(#6474). - Change "neighbour" to EN-US spelling "neighbor" (#6204).
- Add missing copyrights to LICENSE.txt and use formatting according to SPDX identifiers (#6419).
- Include
skimage.morphology.footprint_from_sequence
in the public API documentation (#6555). - Correct note about return type in the docstring of
skimage.exposure.rescale_intensity
(#6582). - Stop using the
git://
connection protocol and remove references to it (#6201, #6283). - Update scikit-image's mailing addresses to the new domain discuss.scientific-python.org (#6255).
- Remove references to deprecated mailing list in
doc/source/user_guide/getting_help.rst
(#6575). - Use "center" in favor of "centre", and "color" in favor of "colour" gallery examples (#6421, #6422).
- Replace reference to
api_changes.rst
withrelease_dev.rst
(#6495). - Clarify header pointing to notes for latest version released (#6508).
- Add missing spaces to error message in
skimage.measure.regionprops
(#6545). - Apply codespell to fix common spelling mistakes (#6537).
- Add missing space in math directive in normalized_mutual_information's docstring (#6549).
- Fix lengths of docstring heading underline in
skimage.morphology.isotropic_
functions (#6628). - Fix plot order due to duplicate examples with the file name
plot_thresholding.py
(#6644). - Get rid of numpy deprecation warning in gallery example
plot_equalize
(#6650). - Fix swapping of opening and closing in gallery example
plot_rank_filters
(#6652). - Get rid of numpy deprecation warning in gallery example
in plot_log_gamma.py
(#6655). - Remove warnings and unnecessary messages in gallery example "Tinting gray-scale images" (#6656).
- Update the contribution guide to recommend creating the virtualenv outside the source tree (#6675).
- Fix typo in docstring of
skimage.data.coffee
(#6740). - Add missing backtick in docstring of
skimage.graph.merge_nodes
(#6741). - Fix typo in
skimage.metrics.variation_of_information
(#6768).
Other and development related updates
Governance & planning
Maintenance
- Prepare release notes for v0.20.0 (#6556, #6766).
- Add and test alternative build system based on Meson as an alternative to the deprecated distutils system (#6536).
- Use
cnp.float32_t
andcnp.float64_t
overfloat
anddouble
in Cython code (#6303). - Move
skimage/measure/mc_meta
folder intotools/precompute/
folder to avoid its unnecessary distribution to users (#6294). - Remove unused function
getLutNames
intools/precompute/mc_meta/createluts.py
(#6294). - Point urls for data files to a specific commit (#6297).
- Drop Codecov badge from project README (#6302).
- Remove undefined reference to
'python_to_notebook'
indoc/ext/notebook_doc.py
(#6307). - Parameterize tests in
skimage.measure.tests.test_moments
(#6323). - Avoid unnecessary copying in
skimage.morphology.skeletonize
and update code style and tests (#6327). - Fix typo in
_probabilistic_hough_line
(#6373). - Derive OBJECT_COLUMNS from COL_DTYPES in
skimage.measure._regionprops
(#6389). - Support
loadtxt
of NumPy 1.23 withskimage/feature/orb_descriptor_positions.txt
(#6400). - Exclude pillow 9.1.1 from supported requirements (#6384).
- Use the same numpy version dependencies for building as used by default (#6409).
- Forward-port v0.19.1 and v0.19.2 release notes (#6253).
- Forward-port v0.19.3 release notes (#6416).
- Exclude submodules of
doc.*
from package install (#6428). - Substitute deprecated
vertices
withsimplices
inskimage.transform._geometric
(#6430). - Fix minor typo in
skimage.filters.sato
(#6434). - Simplify sort-by-absolute-value in ridge filters (#6440).
- Removed completed items in
TODO.txt
(#6442). - Remove duplicate import in
skimage.feature._canny
(#6457). - Use
with open(...) as f
instead off = open(...)
(#6458). - Use context manager when possible (#6484).
- Use
broadcast_to
instead ofas_strided
to generate broadcasted arrays (#6476). - Use
moving_image
in docstring ofskimage.registration._optical_flow._tvl1
(#6480). - Use
pyplot.get_cmap
instead of deprecatedcm.get_cmap
inskimage.future.graph.show_rag
for compatibility with matplotlib 3.3 to 3.6 (#6483, #6490). - Update
plot_euler_number.py
for maplotlib 3.6 compatibility (#6522). - Make non-functional change to build.txt to fix cache issue on CircleCI (#6528).
- Update deprecated field
license_file
tolicense_files
insetup.cfg
(#6529). - Ignore codespell fixes with git blame (#6539).
- Remove
FUNDING.yml
in preference of org version (#6553). - Handle pending changes to
tifffile.imwrite
defaults and avoid test warnings (#6460). - Handle deprecation by updating to
networkx.to_scipy_sparse_array
(#6564). - Update minimum supported numpy, scipy, and networkx (#6385).
- Apply linting results after enabling pre-commit in CI (#6568).
- Refactor lazy loading to use stubs & lazy_loader package (#6577).
- Update sphinx configuration (#6579).
- Update
pyproject.toml
to support Python 3.11 and to fix 32-bit pinned packages on Windows (#6519). - Update primary email address in mailmap entry for grlee77 (#6639).
- Handle new warnings introduced in NumPy 1.24 (#6637).
- Remove unnecessary dependency on ninja in
pyproject.toml
(#6634). - Pin to latest meson-python
>=0.11.0
(#6627). - Increase warning stacklevel by 1 in
skimage.color.lab2xyz
(#6613). - Update OpenBLAS to v0.3.17 (#6607, #6610).
- Fix Meson build on windows in sync with SciPy (#6609).
- Set
check: true
forrun_command
inskimage/meson.build
(#6606). - Add
dev.py
and setup commands (#6600). - Organize
dev.py
commands into sections (#6629). - Remove thumbnail_size in config since sphinx-gallery>=0.9.0 (#6647).
- Add new test cases for
skimage.transform.resize
(#6669). - Use meson-python main branch (#6671).
- Simplify QhullError import (#6677).
- Remove old SciPy cruft (#6678, #6681).
- Remove old references to imread package (#6680).
- Remove pillow cruft (and a few other cleanups) (#6683).
- Remove leftover
gtk_plugin.ini
(#6686). - Prepare v0.20.0rc0 (#6706).
- Remove pre-release suffix for for Python 3.11 (#6709).
- Loosen tests for SciPy 1.10 (#6715).
- Specify C flag only if supported by compiler (#6716).
- Extract version info from
skimage/__init__.py
inskimage/meson.build
(#6723). - Fix Cython errors/warnings (#6725).
- Generate pyproject deps from requirements (#6726).
- MAINT: Use
uintptr_t
to calculate new heap ptr positions (#6734). - Bite the bullet: remove distutils and setup.py (#6738).
- Use meson-python developer version (#6753).
- Require
setuptools
65.6+ (#6751). - Remove
setup.cfg
, usepyproject.toml
instead (#6758). - Update
pyproject.toml
to usemeson-python>=0.13.0rc0
(#6759).
Benchmarks
- Add benchmarks for
morphology.local_maxima
(#3255). - Add benchmarks for
skimage.morphology.reconstruction
(#6342). - Update benchmark environment to Python 3.10 and NumPy 1.23 (#6511).
CI & automation
- Add Github
actions/stale
to label "dormant" issues and PRs (#6506, #6546, #6552). - Fix the autogeneration of API docs for lazy loaded subpackages (#6075).
- Checkout gh-pages with a shallow clone (#6085).
- Fix dev doc build (#6091).
- Fix CI by excluding Pillow 9.1.0 (#6315).
- Pin pip pip to <22.1 in
tools/github/before_install.sh
(#6379). - Update GH actions from v2 to v3 (#6382).
- Update to supported CircleCI images (#6401).
- Use artifact-redirector (#6407).
- Forward-port gh-6369: Fix windows wheels: use vsdevcmd.bat to make sure rc.exe is on the path (#6417).
- Restrict GitHub Actions permissions to required ones (#6426, #6504).
- Update to Ubuntu LTS version on Actions workflows (#6478).
- Relax label name comparison in
benchmarks.yaml
workflow (#6520). - Add linting via pre-commit (#6563).
- Add CI tests for Python 3.11 (#6566).
- Fix CI for Scipy 1.9.2 (#6567).
- Test optional Py 3.10 dependencies on MacOS (#6580).
- Pin setuptools in GHA MacOS workflow and
azure-pipelines.yml
(#6626). - Build Python 3.11 wheels (#6581).
- Fix doc build on CircleCI and add ccache (#6646).
- Build wheels on CI via branch rather than tag (#6668).
- Do not build wheels on pushes to main (#6673).
- Use
tools/github/before_install.sh
wheels workflow (#6718). - Use Ruff for linting (#6729).
- Use test that can fail for sdist (#6731).
- Fix fstring in
skimage._shared._warnings.expected_warnings
(#6733). - Build macosx/py38 wheel natively (#6743).
- Remove CircleCI URL check (#6749).
- CI Set MACOSX_DEPLOYMENT_TARGET=10.9 for Wheels (#6750).
- Add temporary workaround until new meson-python release (#6757).
- Update action to use new environment file (#6762).
- Autogenerate pyproject.toml (#6763).
71 authors contributed to this release [alphabetical by first name or login]
- Adeel Hassan
- Albert Y. Shih
- AleixBP (AleixBP)
- Alex (sashashura)
- Alexandr Kalinin
- Alexandre de Siqueira
- Amin (MOAMSA)
- Antony Lee
- Balint Varga
- Ben Greiner
- bsmietanka (bsmietanka)
- Chris Roat
- Chris Wood
- Daria
- Dave Mellert
- Dudu Lasry
- Elena Pascal
- Eli Schwartz
- Fabian Schneider
- forgeRW (forgeRW)
- Frank A. Krueger
- Gregory Lee
- Gus Becker
- Hande Gözükan
- Jacob Rosenthal
- James Gao
- Jan Kadlec
- Jan-Hendrik Müller
- Jan-Lukas Wynen
- Jarrod Millman
- Jeremy Muhlich
- johnthagen (johnthagen)
- Joshua Newton
- Juan DF
- Juan Nunez-Iglesias
- Judd Storrs
- Larry Bradley
- Lars Grüter
- lihaitao (li1127217ye)
- Lucas Johnson
- Malinda (maldil)
- Marianne Corvellec
- Mark Harfouche
- Martijn Courteaux
- Marvin Albert
- Matthew Brett
- Matthias Bussonnier
- Miles Lucas
- Nathan Chan
- Naveen
- OBgoneSouth (OBgoneSouth)
- Oren Amsalem
- Preston Buscay
- Peter Sobolewski
- Peter Bell
- Ray Bell
- Riadh Fezzani
- Robin Thibaut
- Ross Barnowski
- samtygier (samtygier)
- Sandeep N Menon
- Sanghyeok Hyun
- Sebastian Berg
- Sebastian Wallkötter
- Simon-Martin Schröder
- Stefan van der Walt
- Teemu Kumpumäki
- Thanushi Peiris
- Thomas Voigtmann
- Tim-Oliver Buchholz
- Tyler Reddy
42 reviewers contributed to this release [alphabetical by first name or login]
- Abhijeet Parida
- Albert Y. Shih
- Alex (sashashura)
- Alexandre de Siqueira
- Antony Lee
- Ben Greiner
- Carlo Dri
- Chris Roat
- Daniele Nicolodi
- Daria
- Dudu Lasry
- Eli Schwartz
- François Boulogne
- Gregory Lee
- Gus Becker
- Jacob Rosenthal
- James Gao
- Jan-Hendrik Müller
- Jarrod Millman
- Juan DF
- Juan Nunez-Iglesias
- Lars Grüter
- Malinda (maldil)
- Marianne Corvellec
- Mark Harfouche
- Martijn Courteaux
- Marvin Albert
- Matthias Bussonnier
- Oren Amsalem
- Ralf Gommers
- Riadh Fezzani
- Robert Haase
- Robin Thibaut
- Sandeep N Menon
- Sanghyeok Hyun
- Sebastian Berg
- Sebastian Wallkötter
- Simon-Martin Schröder
- Stefan van der Walt
- Thanushi Peiris
- Thomas Voigtmann