chore(deps): update all non-major dependencies #31

Merged
renovate[bot] merged 1 commit from renovate/all-minor-patch into main 2026-02-11 09:08:43 +00:00
renovate[bot] commented 2026-01-02 12:59:10 +00:00 (Migrated from github.com)

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
numpy (changelog) <2.4.1 → <2.4.3 age confidence
opencv-python ==4.12.0.88 → ==4.13.0.92 age confidence
pillow (changelog) ==12.0.0 → ==12.1.1 age confidence
psutil ==7.2.1 → ==7.2.2 age confidence
qiskit (changelog) >=2.2.3,<=2.2.3 → >=2.3.0,<=2.3.0 age confidence
tqdm (changelog) ==4.67.1 → ==4.67.3 age confidence

Release Notes

numpy/numpy (numpy)

v2.4.2

Compare Source

v2.4.1: 2.4.1 (Jan 10, 2026)

Compare Source

NumPy 2.4.1 Release Notes

The NumPy 2.4.1 is a patch release that fixes bugs discoved after the
2.4.0 release. In particular, the typo SeedlessSequence is preserved to
enable wheels using the random Cython API and built against NumPy < 2.4.0
to run without errors.

This release supports Python versions 3.11-3.14

Contributors

A total of 9 people contributed to this release. People with a "+" by their
names contributed a patch for the first time.

  • Alexander Shadchin
  • Bill Tompkins +
  • Charles Harris
  • Joren Hammudoglu
  • Marten van Kerkwijk
  • Nathan Goldbaum
  • Raghuveer Devulapalli
  • Ralf Gommers
  • Sebastian Berg
Pull requests merged

A total of 15 pull requests were merged for this release.

  • #​30490: MAINT: Prepare 2.4.x for further development
  • #​30503: DOC: numpy.select: fix default parameter docstring...
  • #​30504: REV: Revert part of #​30164 (#​30500)
  • #​30506: TYP: numpy.select: allow passing array-like default...
  • #​30507: MNT: use if constexpr for compile-time branch selection
  • #​30513: BUG: Fix leak in flat assignment iterator
  • #​30516: BUG: fix heap overflow in fixed-width string multiply (#​30511)
  • #​30523: BUG: Ensure summed weights returned by np.average always are...
  • #​30527: TYP: Fix return type of histogram2d
  • #​30594: MAINT: avoid passing ints to random functions that take double...
  • #​30595: BLD: Avoiding conflict with pygit2 for static build
  • #​30596: MAINT: Fix msvccompiler missing error on FreeBSD
  • #​30608: BLD: update vendored Meson to 1.9.2
  • #​30620: ENH: use more fine-grained critical sections in array coercion...
  • #​30623: BUG: Undo result type change of quantile/percentile but keep...

v2.4.0: 2.4.0 (Dec 20, 2025)

Compare Source

NumPy 2.4.0 Release Notes

The NumPy 2.4.0 release continues the work to improve free threaded Python
support, user dtypes implementation, and annotations. There are many expired
deprecations and bug fixes as well.

This release supports Python versions 3.11-3.14

Highlights

Apart from annotations and same_value kwarg, the 2.4 highlights are mostly
of interest to downstream developers. They should help in implementing new user
dtypes.

  • Many annotation improvements. In particular, runtime signature introspection.
  • New casting kwarg 'same_value' for casting by value.
  • New PyUFunc_AddLoopsFromSpec function that can be used to add user sort
    loops using the ArrayMethod API.
  • New __numpy_dtype__ protocol.
Deprecations
Setting the strides attribute is deprecated

Setting the strides attribute is now deprecated since mutating
an array is unsafe if an array is shared, especially by multiple
threads. As an alternative, you can create a new view (no copy) via:

  • np.lib.stride_tricks.strided_window_view if applicable,
  • np.lib.stride_tricks.as_strided for the general case,
  • or the np.ndarray constructor (buffer is the original array) for a
    light-weight version.

(gh-28925)

Positional out argument to np.maximum, np.minimum is deprecated

Passing the output array out positionally to numpy.maximum and
numpy.minimum is deprecated. For example, np.maximum(a, b, c) will emit
a deprecation warning, since c is treated as the output buffer rather than
a third input.

Always pass the output with the keyword form, e.g. np.maximum(a, b, out=c).
This makes intent clear and simplifies type annotations.

(gh-29052)

align= must be passed as boolean to np.dtype()

When creating a new dtype a VisibleDeprecationWarning will be given if
align= is not a boolean. This is mainly to prevent accidentally passing a
subarray align flag where it has no effect, such as np.dtype("f8", 3)
instead of np.dtype(("f8", 3)). We strongly suggest to always pass
align= as a keyword argument.

(gh-29301)

Assertion and warning control utilities are deprecated

np.testing.assert_warns and np.testing.suppress_warnings are
deprecated. Use warnings.catch_warnings, warnings.filterwarnings,
pytest.warns, or pytest.filterwarnings instead.

(gh-29550)

np.fix is pending deprecation

The numpy.fix function will be deprecated in a future release. It is
recommended to use numpy.trunc instead, as it provides the same
functionality of truncating decimal values to their integer parts. Static type
checkers might already report a warning for the use of numpy.fix.

(gh-30168)

in-place modification of ndarray.shape is pending deprecation

Setting the ndarray.shape attribute directly will be deprecated in a future
release. Instead of modifying the shape in place, it is recommended to use the
numpy.reshape function. Static type checkers might already report a
warning for assignments to ndarray.shape.

(gh-30282)

Deprecation of numpy.lib.user_array.container

The numpy.lib.user_array.container class is deprecated and will be removed
in a future version.

(gh-30284)

Expired deprecations
Removed deprecated MachAr runtime discovery mechanism.

(gh-29836)

Raise TypeError on attempt to convert array with ndim > 0 to scalar

Conversion of an array with ndim > 0 to a scalar was deprecated in NumPy
1.25. Now, attempting to do so raises TypeError. Ensure you extract a
single element from your array before performing this operation.

(gh-29841)

Removed numpy.linalg.linalg and numpy.fft.helper

The following were deprecated in NumPy 2.0 and have been moved to private
modules:

  • numpy.linalg.linalg
    Use numpy.linalg instead.
  • numpy.fft.helper
    Use numpy.fft instead.

(gh-29909)

Removed interpolation parameter from quantile and percentile functions

The interpolation parameter was deprecated in NumPy 1.22.0 and has been
removed from the following functions:

  • numpy.percentile
  • numpy.nanpercentile
  • numpy.quantile
  • numpy.nanquantile

Use the method parameter instead.

(gh-29973)

Removed numpy.in1d

numpy.in1d has been deprecated since NumPy 2.0 and is now removed in favor of numpy.isin.

(gh-29978)

Removed numpy.ndindex.ndincr()

The ndindex.ndincr() method has been deprecated since NumPy 1.20 and is now
removed; use next(ndindex) instead.

(gh-29980)

Removed fix_imports parameter from numpy.save

The fix_imports parameter was deprecated in NumPy 2.1.0 and is now removed.
This flag has been ignored since NumPy 1.17 and was only needed to support
loading files in Python 2 that were written in Python 3.

(gh-29984)

Removal of four undocumented ndarray.ctypes methods

Four undocumented methods of the ndarray.ctypes object have been removed:

  • _ctypes.get_data() (use _ctypes.data instead)
  • _ctypes.get_shape() (use _ctypes.shape instead)
  • _ctypes.get_strides() (use _ctypes.strides instead)
  • _ctypes.get_as_parameter() (use _ctypes._as_parameter_ instead)

These methods have been deprecated since NumPy 1.21.

(gh-29986)

Removed newshape parameter from numpy.reshape

The newshape parameter was deprecated in NumPy 2.1.0 and has been
removed from numpy.reshape. Pass it positionally or use shape=
on newer NumPy versions.

(gh-29994)

Removal of deprecated functions and arguments

The following long-deprecated APIs have been removed:

  • numpy.trapz --- deprecated since NumPy 2.0 (2023-08-18). Use numpy.trapezoid or
    scipy.integrate functions instead.
  • disp function --- deprecated from 2.0 release and no longer functional. Use
    your own printing function instead.
  • bias and ddof arguments in numpy.corrcoef --- these had no effect
    since NumPy 1.10.

(gh-29997)

Removed delimitor parameter from numpy.ma.mrecords.fromtextfile()

The delimitor parameter was deprecated in NumPy 1.22.0 and has been
removed from numpy.ma.mrecords.fromtextfile(). Use delimiter instead.

(gh-30021)

numpy.array2string and numpy.sum deprecations finalized

The following long-deprecated APIs have been removed or converted to errors:

  • The style parameter has been removed from numpy.array2string.
    This argument had no effect since Numpy 1.14.0. Any arguments following
    it, such as formatter have now been made keyword-only.
  • Calling np.sum(generator) directly on a generator object now raises a
    TypeError. This behavior was deprecated in NumPy 1.15.0. Use
    np.sum(np.fromiter(generator)) or the python sum builtin instead.

(gh-30068)

Compatibility notes
  • NumPy's C extension modules have begun to use multi-phase initialisation, as
    defined by PEP 489. As part of this, a new explicit check has been added that
    each such module is only imported once per Python process. This comes with
    the side-effect that deleting numpy from sys.modules and re-importing
    it will now fail with an ImportError. This has always been unsafe, with
    unexpected side-effects, though did not previously raise an error.

    (gh-29030)

  • numpy.round now always returns a copy. Previously, it returned a view
    for integer inputs for decimals >= 0 and a copy in all other cases.
    This change brings round in line with ceil, floor and trunc.

    (gh-29137)

  • Type-checkers will no longer accept calls to numpy.arange with
    start as a keyword argument. This was done for compatibility with
    the Array API standard. At runtime it is still possible to use
    numpy.arange with start as a keyword argument.

    (gh-30147)

  • The Macro NPY_ALIGNMENT_REQUIRED has been removed The macro was defined in
    the npy_cpu.h file, so might be regarded as semi public. As it turns out,
    with modern compilers and hardware it is almost always the case that
    alignment is required, so numpy no longer uses the macro. It is unlikely
    anyone uses it, but you might want to compile with the -Wundef flag or
    equivalent to be sure.

    (gh-29094)

C API changes
The NPY_SORTKIND enum has been enhanced with new variables

This is of interest if you are using PyArray_Sort or PyArray_ArgSort.
We have changed the semantics of the old names in the NPY_SORTKIND enum and
added new ones. The changes are backward compatible, and no recompilation is
needed. The new names of interest are:

  • NPY_SORT_DEFAULT -- default sort (same value as NPY_QUICKSORT)
  • NPY_SORT_STABLE -- the sort must be stable (same value as NPY_MERGESORT)
  • NPY_SORT_DESCENDING -- the sort must be descending

The semantic change is that NPY_HEAPSORT is mapped to NPY_QUICKSORT when used.
Note that NPY_SORT_DESCENDING is not yet implemented.

(gh-29642)

New NPY_DT_get_constant slot for DType constant retrieval

A new slot NPY_DT_get_constant has been added to the DType API, allowing
dtype implementations to provide constant values such as machine limits and
special values. The slot function has the signature:

int get_constant(PyArray_Descr *descr, int constant_id, void *ptr)

It returns 1 on success, 0 if the constant is not available, or -1 on error.
The function is always called with the GIL held and may write to unaligned memory.

Integer constants (marked with the 1 << 16 bit) return npy_intp values,
while floating-point constants return values of the dtype's native type.

Implementing this can be used by user DTypes to provide numpy.finfo values.

(gh-29836)

A new PyUFunc_AddLoopsFromSpecs convenience function has been added to the C API.

This function allows adding multiple ufunc loops from their specs in one call
using a NULL-terminated array of PyUFunc_LoopSlot structs. It allows
registering sorting and argsorting loops using the new ArrayMethod API.

(gh-29900)

New Features
  • Let np.size accept multiple axes.

    (gh-29240)

  • Extend numpy.pad to accept a dictionary for the pad_width argument.

    (gh-29273)

'same_value' for casting by value

The casting kwarg now has a 'same_value' option that checks the actual
values can be round-trip cast without changing value. Currently it is only
implemented in ndarray.astype. This will raise a ValueError if any of the
values in the array would change as a result of the cast, including rounding of
floats or overflowing of ints.

(gh-29129)

StringDType fill_value support in numpy.ma.MaskedArray

Masked arrays now accept and preserve a Python str as their fill_value
when using the variable‑width StringDType (kind 'T'), including through
slicing and views. The default is 'N/A' and may be overridden by any valid
string. This fixes issue gh‑29421
and was implemented in pull request gh‑29423.

(gh-29423)

ndmax option for numpy.array

The ndmax option is now available for numpy.array.
It explicitly limits the maximum number of dimensions created from nested sequences.

This is particularly useful when creating arrays of list-like objects with dtype=object.
By default, NumPy recurses through all nesting levels to create the highest possible
dimensional array, but this behavior may not be desired when the intent is to preserve
nested structures as objects. The ndmax parameter provides explicit control over
this recursion depth.


# Default behavior: Creates a 2D array
>>> a = np.array([[1, 2], [3, 4]], dtype=object)
>>> a
array([[1, 2],
       [3, 4]], dtype=object)
>>> a.shape
(2, 2)

# With ndmax=1: Creates a 1D array
>>> b = np.array([[1, 2], [3, 4]], dtype=object, ndmax=1)
>>> b
array([list([1, 2]), list([3, 4])], dtype=object)
>>> b.shape
(2,)

(gh-29569)

Warning emitted when using where without out

Ufuncs called with a where mask and without an out positional or kwarg will
now emit a warning. This usage tends to trip up users who expect some value in
output locations where the mask is False (the ufunc will not touch those
locations). The warning can be suppressed by using out=None.

(gh-29813)

DType sorting and argsorting supports the ArrayMethod API

User-defined dtypes can now implement custom sorting and argsorting using the
ArrayMethod API. This mechanism can be used in place of the
PyArray_ArrFuncs slots which may be deprecated in the future.

The sorting and argsorting methods are registered by passing the arraymethod
specs that implement the operations to the new PyUFunc_AddLoopsFromSpecs
function. See the ArrayMethod API documentation for details.

(gh-29900)

New __numpy_dtype__ protocol

NumPy now has a new __numpy_dtype__ protocol. NumPy will check
for this attribute when converting to a NumPy dtype via np.dtype(obj)
or any dtype= argument.

Downstream projects are encouraged to implement this for all dtype like
objects which may previously have used a .dtype attribute that returned
a NumPy dtype.
We expect to deprecate .dtype in the future to prevent interpreting
array-like objects with a .dtype attribute as a dtype.
If you wish you can implement __numpy_dtype__ to ensure an earlier
warning or error (.dtype is ignored if this is found).

(gh-30179)

Improvements
Fix flatiter indexing edge cases

The flatiter object now shares the same index preparation logic as
ndarray, ensuring consistent behavior and fixing several issues where
invalid indices were previously accepted or misinterpreted.

Key fixes and improvements:

  • Stricter index validation

    • Boolean non-array indices like arr.flat[[True, True]] were
      incorrectly treated as arr.flat[np.array([1, 1], dtype=int)].
      They now raise an index error. Note that indices that match the
      iterator's shape are expected to not raise in the future and be
      handled as regular boolean indices. Use np.asarray(<index>) if
      you want to match that behavior.
    • Float non-array indices were also cast to integer and incorrectly
      treated as arr.flat[np.array([1.0, 1.0], dtype=int)]. This is now
      deprecated and will be removed in a future version.
    • 0-dimensional boolean indices like arr.flat[True] are also
      deprecated and will be removed in a future version.
  • Consistent error types:

    Certain invalid flatiter indices that previously raised ValueError
    now correctly raise IndexError, aligning with ndarray behavior.

  • Improved error messages:

    The error message for unsupported index operations now provides more
    specific details, including explicitly listing the valid index types,
    instead of the generic IndexError: unsupported index operation.

(gh-28590)

Improved error handling in np.quantile

[np.quantile]{.title-ref} now raises errors if:

  • All weights are zero
  • At least one weight is np.nan
  • At least one weight is np.inf

(gh-28595)

Improved error message for assert_array_compare

The error message generated by assert_array_compare which is used by functions
like assert_allclose, assert_array_less etc. now also includes information
about the indices at which the assertion fails.

(gh-29112)

Show unit information in __repr__ for datetime64("NaT")

When a datetime64 object is "Not a Time" (NaT), its __repr__ method now
includes the time unit of the datetime64 type. This makes it consistent with
the behavior of a timedelta64 object.

(gh-29396)

Performance increase for scalar calculations

The speed of calculations on scalars has been improved by about a factor 6 for
ufuncs that take only one input (like np.sin(scalar)), reducing the speed
difference from their math equivalents from a factor 19 to 3 (the speed
for arrays is left unchanged).

(gh-29819)

numpy.finfo Refactor

The numpy.finfo class has been completely refactored to obtain floating-point
constants directly from C compiler macros rather than deriving them at runtime.
This provides better accuracy, platform compatibility and corrected
several attribute calculations:

  • Constants like eps, min, max, smallest_normal, and
    smallest_subnormal now come directly from standard C macros (FLT_EPSILON,
    DBL_MIN, etc.), ensuring platform-correct values.
  • The deprecated MachAr runtime discovery mechanism has been removed.
  • Derived attributes have been corrected to match standard definitions:
    machep and negep now use int(log2(eps)); nexp accounts for
    all exponent patterns; nmant excludes the implicit bit; and minexp
    follows the C standard definition.
  • longdouble constants, Specifically smallest_normal now follows the
    C standard definitions as per respecitive platform.
  • Special handling added for PowerPC's IBM double-double format.
  • New test suite added in test_finfo.py to validate all
    finfo properties against expected machine arithmetic values for
    float16, float32, and float64 types.

(gh-29836)

Multiple axes are now supported in numpy.trim_zeros

The axis argument of numpy.trim_zeros now accepts a sequence; for example
np.trim_zeros(x, axis=(0, 1)) will trim the zeros from a multi-dimensional
array x along axes 0 and 1. This fixes issue
gh‑29945 and was implemented
in pull request gh‑29947.

(gh-29947)

Runtime signature introspection support has been significantly improved

Many NumPy functions, classes, and methods that previously raised
ValueError when passed to inspect.signature() now return meaningful
signatures. This improves support for runtime type checking, IDE autocomplete,
documentation generation, and runtime introspection capabilities across the
NumPy API.

Over three hundred classes and functions have been updated in total, including,
but not limited to, core classes such as ndarray, generic, dtype,
ufunc, broadcast, nditer, etc., most methods of ndarray and
scalar types, array constructor functions (array, empty, arange,
fromiter, etc.), all ufuncs, and many other commonly used functions,
including dot, concat, where, bincount, can_cast, and
numerous others.

(gh-30208)

Performance improvements and changes
Performance improvements to np.unique for string dtypes

The hash-based algorithm for unique extraction provides an order-of-magnitude
speedup on large string arrays. In an internal benchmark with about 1 billion
string elements, the hash-based np.unique completed in roughly 33.5 seconds,
compared to 498 seconds with the sort-based method -- about 15× faster for
unsorted unique operations on strings. This improvement greatly reduces the
time to find unique values in very large string datasets.

(gh-28767)

Rewrite of np.ndindex using itertools.product

The numpy.ndindex function now uses itertools.product internally,
providing significant improvements in performance for large iteration spaces,
while maintaining the original behavior and interface. For example, for an
array of shape (50, 60, 90) the NumPy ndindex benchmark improves
performance by a factor 5.2.

(gh-29165)

Performance improvements to np.unique for complex dtypes

The hash-based algorithm for unique extraction now also supports
complex dtypes, offering noticeable performance gains.

In our benchmarks on complex128 arrays with 200,000 elements,
the hash-based approach was about 1.4--1.5× faster
than the sort-based baseline when there were 20% of unique values,
and about 5× faster when there were 0.2% of unique values.

(gh-29537)

Changes
  • Multiplication between a string and integer now raises OverflowError instead
    of MemoryError if the result of the multiplication would create a string that
    is too large to be represented. This follows Python's behavior.

    (gh-29060)

  • The accuracy of np.quantile and np.percentile for 16- and 32-bit
    floating point input data has been improved.

    (gh-29105)

unique_values for string dtypes may return unsorted data

np.unique now supports hash‐based duplicate removal for string dtypes.
This enhancement extends the hash-table algorithm to byte strings ('S'),
Unicode strings ('U'), and the experimental string dtype ('T', StringDType).
As a result, calling np.unique() on an array of strings will use
the faster hash-based method to obtain unique values.
Note that this hash-based method does not guarantee that the returned unique values will be sorted.
This also works for StringDType arrays containing None (missing values)
when using equal_nan=True (treating missing values as equal).

(gh-28767)

Modulate dispatched x86 CPU features

IMPORTANT: The default setting for cpu-baseline on x86 has been raised
to x86-64-v2 microarchitecture. This can be changed to none during build
time to support older CPUs, though SIMD optimizations for pre-2009 processors
are no longer maintained.

NumPy has reorganized x86 CPU features into microarchitecture-based groups
instead of individual features, aligning with Linux distribution standards and
Google Highway requirements.

Key changes:

  • Replaced individual x86 features with microarchitecture levels: X86_V2,
    X86_V3, and X86_V4
  • Raised the baseline to X86_V2
  • Improved - operator behavior to properly exclude successor features that
    imply the excluded feature
  • Added meson redirections for removed feature names to maintain backward
    compatibility
  • Removed compiler compatibility workarounds for partial feature support (e.g.,
    AVX512 without mask operations)
  • Removed legacy AMD features (XOP, FMA4) and discontinued Intel Xeon Phi
    support

New Feature Group Hierarchy:

Name Implies Includes


X86_V2 SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 POPCNT CX16 LAHF
X86_V3 X86_V2 AVX AVX2 FMA3 BMI BMI2 LZCNT F16C MOVBE
X86_V4 X86_V3 AVX512F AVX512CD AVX512VL AVX512BW AVX512DQ
AVX512_ICL X86_V4 AVX512VBMI AVX512VBMI2 AVX512VNNI AVX512BITALG AVX512VPOPCNTDQ AVX512IFMA VAES GFNI VPCLMULQDQ
AVX512_SPR AVX512_ICL AVX512FP16

These groups correspond to CPU generations:

  • X86_V2: x86-64-v2 microarchitectures (CPUs since 2009)
  • X86_V3: x86-64-v3 microarchitectures (CPUs since 2015)
  • X86_V4: x86-64-v4 microarchitectures (AVX-512 capable CPUs)
  • AVX512_ICL: Intel Ice Lake and similar CPUs
  • AVX512_SPR: Intel Sapphire Rapids and newer CPUs

On 32-bit x86, cx16 is excluded from X86_V2.

Documentation has been updated with details on using these new feature groups
with the current meson build system.

(gh-28896)

Fix bug in matmul for non-contiguous out kwarg parameter

In some cases, if out was non-contiguous, np.matmul would cause memory
corruption or a c-level assert. This was new to v2.3.0 and fixed in v2.3.1.

(gh-29179)

__array_interface__ with NULL pointer changed

The array interface now accepts NULL pointers (NumPy will do its own dummy
allocation, though). Previously, these incorrectly triggered an undocumented
scalar path. In the unlikely event that the scalar path was actually desired,
you can (for now) achieve the previous behavior via the correct scalar path by
not providing a data field at all.

(gh-29338)

unique_values for complex dtypes may return unsorted data

np.unique now supports hash‐based duplicate removal for complex dtypes. This
enhancement extends the hash‐table algorithm to all complex types ('c'), and
their extended precision variants. The hash‐based method provides faster
extraction of unique values but does not guarantee that the result will be
sorted.

(gh-29537)

Sorting kind='heapsort' now maps to kind='quicksort'

It is unlikely that this change will be noticed, but if you do see a change in
execution time or unstable argsort order, that is likely the cause. Please let
us know if there is a performance regression. Congratulate us if it is improved
:)

(gh-29642)

numpy.typing.DTypeLike no longer accepts None

The type alias numpy.typing.DTypeLike no longer accepts None. Instead of

dtype: DTypeLike = None

it should now be

dtype: DTypeLike | None = None

instead.

(gh-29739)

The npymath and npyrandom libraries now have a .lib rather than a
.a file extension on win-arm64, for compatibility for building with MSVC
and setuptools. Please note that using these static libraries is
discouraged and for existing projects using it, it's best to use it with a
matching compiler toolchain, which is clang-cl on Windows on Arm.

(gh-29750)

python-pillow/Pillow (pillow)

v12.1.1

Compare Source

v12.1.0

Compare Source

https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html

Deprecations
Documentation
Dependencies
Testing
Type hints
Other changes
giampaolo/psutil (psutil)

v7.2.2

Compare Source

=====

2026-01-28

Enhancements

  • 2705_: [Linux]: Process.wait()_ now uses pidfd_open() + poll() for
    waiting, resulting in no busy loop and faster response times. Requires
    Linux >= 5.3 and Python >= 3.9. Falls back to traditional polling if
    unavailable.
  • 2705_: [macOS], [BSD]: Process.wait()_ now uses kqueue() for waiting,
    resulting in no busy loop and faster response times.

Bug fixes

  • 2701_, [macOS]: fix compilation error on macOS < 10.7. (patch by Sergey
    Fedorov)
  • 2707_, [macOS]: fix potential memory leaks in error paths of
    Process.memory_full_info() and Process.threads().
  • 2708_, [macOS]: Process.cmdline()_ and Process.environ()_ may fail with ``OSError: [Errno 0] Undefined error`` (from ``sysctl(KERN_PROCARGS2)``). They now raise AccessDenied`_ instead.
Qiskit/qiskit (qiskit)

v2.3.0: Qiskit 2.3.0

Compare Source

Changelog

Deprecated

  • Deprecate unsafe legacy format in Solovay Kitaev (#​15360)
  • Deprecate annotated=None in control methods (#​15356)

Added

  • Add ways to retrieve operations from the QkTarget (#​15283)
  • Add Statevector.from_circuit to mirror Operator.from_circuit (#​14981)
  • Add PauliLindbladMap.parity_sample method (#​15335)
  • Support simple IfElseOp conditionals in OpenQASM 2 export (#​14556)
  • Add qk_dag_compose to the C API (#​15329)
  • Add ways to iterate over the Target in C. (#​15208)
  • Added Reverse topology iterator in DAG (#​15060)
  • Using Ross-Selinger in Qiskit (#​15270)
  • Allow user-specified unitary synthesis methods for Clifford+T transpilation (#​14952)
  • Add the argument fallback_on_default to UnitarySynthesis (#​15287)
  • Add qk_transpile_stage_routing() to the C API (#​15358)
  • Add substitute_node_with_dag to c api (#​15374)
  • Add qk_transpile_stage_optimization() to the C API (#​15295)
  • Enable commutation checks among Pauli-based gates (#​15359)
  • Add qk_transpile_stage_translation() to the C API (#​15293)
  • Add method wrappers for circuit and DAG converters (#​15043)
  • Add DAG copy-empty-like to the C API (#​15320)
  • Add qk_transpile_stage_layout() to the C API (#​15241)
  • Add SolovayKitaev as part of the default unitary synthesis plugin (#​15285)
  • Unified commutative optimization (#​15047)
  • Add instruction_supported to QkTarget. (#​14566)
  • Converting RX/RY/RZ rotations to {Clifford,T,Tdg} (#​15321)
  • Add QkDag instruction appliers and getter to C API (#​15313)
  • Add qk_dag_successors and qk_dag_predecessors to the C API (#​15346)
  • Expose both forms of VF2 layout passes in the C API (#​14864)
  • Add qk_circuit_to_dag and qk_dag_to_circuit to the C API (#​15247)
  • Adding qk_dag_topological_op_nodes to C API (#​15297)
  • Add qk_transpile_stage_init() to the C API (#​15207)
  • Port VF2PostLayout to Rust (#​14863)
  • Add UnitaryGate handling to QkDag C API (#​15363)
  • Add no-overhead ParameterExpression.num_parameters attribute (#​15354)
  • Split VF2 call_limit to before and after first layout (#​14862)
  • Extend LitinskiTransformation pass to handle measurements (#​15217)
  • Create PauliProductMeasurement instruction (#​15126)
  • Add DAG typed node support to C API. (#​15206)
  • Optimize the OptimizeCliffordT transpiler pass. (#​14996)
  • Expose Neighbors in the C API (#​15236)
  • Encapsulate VF2 configuration and return types (#​14861)
  • Add Clifford prepend gates internal methods to improve Clifford.dot (#​15166)
  • Add QkDag with registers to the C API. (#​15200)
  • Improve performance of quantum_info predicates (#​15118)
  • Add quantum volume generator function to C API (#​15037)
  • Add QkParam to the C API (#​14837)
  • Rust Implementation for using SparseObservable in sampled_expectation_value (#​14516)
  • Unbias directionality in VF2 priority queue (#​14859)
  • Handle VF2 coupling-map shuffling in Rust (#​14860)
  • Use QSD from rust in default unitary synthesis plugin (#​15003)
  • Make VF2 fully generic over index types and semantics (#​14858)
  • Use on-the-fly scoring in VF2Layout (#​14857)
  • Rust Shannon Decomposition (#​14797)

Changed

  • Move preferred location of WrapAngles default registry (#​15101)
  • Drop support for Python 3.9 (#​15371)
  • adding name to qktarget (#​15334)
  • Cleanup of circuit library control methods (#​15209)
  • Swap to setuptools>=77.0 licence specification (#​15128)
  • Drop macOS x86_64 to tier 2 (#​15041)
  • Lower limits on VF2PostLayout in exact mode (#​15068)

Fixed

  • Represent non-fixed params as NaN for QkTargetOp (#​15463) (#​15525)
  • Fix param extraction for arrays with a single element (backport #​15436) (#​15522)
  • QPY serialization of SparseObservable (#​15263)
  • Fix timeline drawer for gates without unitary in target (#​15421)
  • Stop using a parallel sort in disjoint utils (#​15410)
  • Bug fix for Clifford+T transpilation: passing incorrect argument to generate_unroll_3q (#​15401)
  • fix: preserve identity 'I' characters in PauliEvolutionGate labels (#​15173)
  • Fix operator @​ quantumstate multiplication (#​14963)
  • Fix text drawer layering for classical wires (#​15262)
  • Pauli.evolve() recognize common rotations by (n*pi/2) as Clifford gates (#​15289)
  • Unitary synthesis bug fix (#​15286)
  • Change the rust structure of expr.Value (#​15272)
  • Fix reuse of ConsolidateBlocks instances (#​15258)
  • Fix qpy.dump failure with gzip write streams in QPY v16 (backward seek unsupported) (#​15158)
  • Raise exception not panic on bad ConsolidateBlocks input (#​15110)
  • Fix schedule analysis passes with empty circuits (#​15147)
  • Fix qubit mapping in ConsolidateBlocks control-flow blocks (#​15083)
  • Fixing inverse methods for MCPhase and MCU1 gates (#​15181)
  • Fix textdrawer for controlflow with different regs ([#​15155](https://redirect.g

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

> ℹ️ **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [numpy](https://redirect.github.com/numpy/numpy) ([changelog](https://numpy.org/doc/stable/release)) | `<2.4.1` → `<2.4.3` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/numpy/2.4.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/numpy/2.3.5/2.4.2?slim=true) | | [opencv-python](https://redirect.github.com/opencv/opencv-python) | `==4.12.0.88` → `==4.13.0.92` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/opencv-python/4.13.0.92?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/opencv-python/4.12.0.88/4.13.0.92?slim=true) | | [pillow](https://redirect.github.com/python-pillow/Pillow) ([changelog](https://redirect.github.com/python-pillow/Pillow/releases)) | `==12.0.0` → `==12.1.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pillow/12.1.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pillow/12.0.0/12.1.1?slim=true) | | [psutil](https://redirect.github.com/giampaolo/psutil) | `==7.2.1` → `==7.2.2` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/psutil/7.2.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/psutil/7.2.1/7.2.2?slim=true) | | [qiskit](https://redirect.github.com/Qiskit/qiskit) ([changelog](https://quantum.cloud.ibm.com/docs/api/qiskit/release-notes)) | `>=2.2.3,<=2.2.3` → `>=2.3.0,<=2.3.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/qiskit/2.3.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/qiskit/2.2.3/2.3.0?slim=true) | | [tqdm](https://redirect.github.com/tqdm/tqdm) ([changelog](https://tqdm.github.io/releases)) | `==4.67.1` → `==4.67.3` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/tqdm/4.67.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/tqdm/4.67.1/4.67.3?slim=true) | --- ### Release Notes <details> <summary>numpy/numpy (numpy)</summary> ### [`v2.4.2`](https://redirect.github.com/numpy/numpy/compare/v2.4.1...v2.4.2) [Compare Source](https://redirect.github.com/numpy/numpy/compare/v2.4.1...v2.4.2) ### [`v2.4.1`](https://redirect.github.com/numpy/numpy/releases/tag/v2.4.1): 2.4.1 (Jan 10, 2026) [Compare Source](https://redirect.github.com/numpy/numpy/compare/v2.4.0...v2.4.1) ##### NumPy 2.4.1 Release Notes The NumPy 2.4.1 is a patch release that fixes bugs discoved after the 2.4.0 release. In particular, the typo `SeedlessSequence` is preserved to enable wheels using the random Cython API and built against NumPy < 2.4.0 to run without errors. This release supports Python versions 3.11-3.14 ##### Contributors A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time. - Alexander Shadchin - Bill Tompkins + - Charles Harris - Joren Hammudoglu - Marten van Kerkwijk - Nathan Goldbaum - Raghuveer Devulapalli - Ralf Gommers - Sebastian Berg ##### Pull requests merged A total of 15 pull requests were merged for this release. - [#&#8203;30490](https://redirect.github.com/numpy/numpy/pull/30490): MAINT: Prepare 2.4.x for further development - [#&#8203;30503](https://redirect.github.com/numpy/numpy/pull/30503): DOC: `numpy.select`: fix `default` parameter docstring... - [#&#8203;30504](https://redirect.github.com/numpy/numpy/pull/30504): REV: Revert part of [#&#8203;30164](https://redirect.github.com/numpy/numpy/issues/30164) ([#&#8203;30500](https://redirect.github.com/numpy/numpy/issues/30500)) - [#&#8203;30506](https://redirect.github.com/numpy/numpy/pull/30506): TYP: `numpy.select`: allow passing array-like `default`... - [#&#8203;30507](https://redirect.github.com/numpy/numpy/pull/30507): MNT: use if constexpr for compile-time branch selection - [#&#8203;30513](https://redirect.github.com/numpy/numpy/pull/30513): BUG: Fix leak in flat assignment iterator - [#&#8203;30516](https://redirect.github.com/numpy/numpy/pull/30516): BUG: fix heap overflow in fixed-width string multiply ([#&#8203;30511](https://redirect.github.com/numpy/numpy/issues/30511)) - [#&#8203;30523](https://redirect.github.com/numpy/numpy/pull/30523): BUG: Ensure summed weights returned by np.average always are... - [#&#8203;30527](https://redirect.github.com/numpy/numpy/pull/30527): TYP: Fix return type of histogram2d - [#&#8203;30594](https://redirect.github.com/numpy/numpy/pull/30594): MAINT: avoid passing ints to random functions that take double... - [#&#8203;30595](https://redirect.github.com/numpy/numpy/pull/30595): BLD: Avoiding conflict with pygit2 for static build - [#&#8203;30596](https://redirect.github.com/numpy/numpy/pull/30596): MAINT: Fix msvccompiler missing error on FreeBSD - [#&#8203;30608](https://redirect.github.com/numpy/numpy/pull/30608): BLD: update vendored Meson to 1.9.2 - [#&#8203;30620](https://redirect.github.com/numpy/numpy/pull/30620): ENH: use more fine-grained critical sections in array coercion... - [#&#8203;30623](https://redirect.github.com/numpy/numpy/pull/30623): BUG: Undo result type change of quantile/percentile but keep... ### [`v2.4.0`](https://redirect.github.com/numpy/numpy/releases/tag/v2.4.0): 2.4.0 (Dec 20, 2025) [Compare Source](https://redirect.github.com/numpy/numpy/compare/v2.3.5...v2.4.0) ##### NumPy 2.4.0 Release Notes The NumPy 2.4.0 release continues the work to improve free threaded Python support, user dtypes implementation, and annotations. There are many expired deprecations and bug fixes as well. This release supports Python versions 3.11-3.14 ##### Highlights Apart from annotations and `same_value` kwarg, the 2.4 highlights are mostly of interest to downstream developers. They should help in implementing new user dtypes. - Many annotation improvements. In particular, runtime signature introspection. - New `casting` kwarg `'same_value'` for casting by value. - New `PyUFunc_AddLoopsFromSpec` function that can be used to add user sort loops using the `ArrayMethod` API. - New `__numpy_dtype__` protocol. ##### Deprecations ##### Setting the `strides` attribute is deprecated Setting the strides attribute is now deprecated since mutating an array is unsafe if an array is shared, especially by multiple threads. As an alternative, you can create a new view (no copy) via: - `np.lib.stride_tricks.strided_window_view` if applicable, - `np.lib.stride_tricks.as_strided` for the general case, - or the `np.ndarray` constructor (`buffer` is the original array) for a light-weight version. ([gh-28925](https://redirect.github.com/numpy/numpy/pull/28925)) ##### Positional `out` argument to `np.maximum`, `np.minimum` is deprecated Passing the output array `out` positionally to `numpy.maximum` and `numpy.minimum` is deprecated. For example, `np.maximum(a, b, c)` will emit a deprecation warning, since `c` is treated as the output buffer rather than a third input. Always pass the output with the keyword form, e.g. `np.maximum(a, b, out=c)`. This makes intent clear and simplifies type annotations. ([gh-29052](https://redirect.github.com/numpy/numpy/pull/29052)) ##### `align=` must be passed as boolean to `np.dtype()` When creating a new `dtype` a `VisibleDeprecationWarning` will be given if `align=` is not a boolean. This is mainly to prevent accidentally passing a subarray align flag where it has no effect, such as `np.dtype("f8", 3)` instead of `np.dtype(("f8", 3))`. We strongly suggest to always pass `align=` as a keyword argument. ([gh-29301](https://redirect.github.com/numpy/numpy/pull/29301)) ##### Assertion and warning control utilities are deprecated `np.testing.assert_warns` and `np.testing.suppress_warnings` are deprecated. Use `warnings.catch_warnings`, `warnings.filterwarnings`, `pytest.warns`, or `pytest.filterwarnings` instead. ([gh-29550](https://redirect.github.com/numpy/numpy/pull/29550)) ##### `np.fix` is pending deprecation The `numpy.fix` function will be deprecated in a future release. It is recommended to use `numpy.trunc` instead, as it provides the same functionality of truncating decimal values to their integer parts. Static type checkers might already report a warning for the use of `numpy.fix`. ([gh-30168](https://redirect.github.com/numpy/numpy/pull/30168)) ##### in-place modification of `ndarray.shape` is pending deprecation Setting the `ndarray.shape` attribute directly will be deprecated in a future release. Instead of modifying the shape in place, it is recommended to use the `numpy.reshape` function. Static type checkers might already report a warning for assignments to `ndarray.shape`. ([gh-30282](https://redirect.github.com/numpy/numpy/pull/30282)) ##### Deprecation of `numpy.lib.user_array.container` The `numpy.lib.user_array.container` class is deprecated and will be removed in a future version. ([gh-30284](https://redirect.github.com/numpy/numpy/pull/30284)) ##### Expired deprecations ##### Removed deprecated `MachAr` runtime discovery mechanism. ([gh-29836](https://redirect.github.com/numpy/numpy/pull/29836)) ##### Raise `TypeError` on attempt to convert array with `ndim > 0` to scalar Conversion of an array with `ndim > 0` to a scalar was deprecated in NumPy 1.25. Now, attempting to do so raises `TypeError`. Ensure you extract a single element from your array before performing this operation. ([gh-29841](https://redirect.github.com/numpy/numpy/pull/29841)) ##### Removed numpy.linalg.linalg and numpy.fft.helper The following were deprecated in NumPy 2.0 and have been moved to private modules: - `numpy.linalg.linalg` Use `numpy.linalg` instead. - `numpy.fft.helper` Use `numpy.fft` instead. ([gh-29909](https://redirect.github.com/numpy/numpy/pull/29909)) ##### Removed `interpolation` parameter from quantile and percentile functions The `interpolation` parameter was deprecated in NumPy 1.22.0 and has been removed from the following functions: - `numpy.percentile` - `numpy.nanpercentile` - `numpy.quantile` - `numpy.nanquantile` Use the `method` parameter instead. ([gh-29973](https://redirect.github.com/numpy/numpy/pull/29973)) ##### Removed `numpy.in1d` `numpy.in1d` has been deprecated since NumPy 2.0 and is now removed in favor of `numpy.isin`. ([gh-29978](https://redirect.github.com/numpy/numpy/pull/29978)) ##### Removed `numpy.ndindex.ndincr()` The `ndindex.ndincr()` method has been deprecated since NumPy 1.20 and is now removed; use `next(ndindex)` instead. ([gh-29980](https://redirect.github.com/numpy/numpy/pull/29980)) ##### Removed `fix_imports` parameter from `numpy.save` The `fix_imports` parameter was deprecated in NumPy 2.1.0 and is now removed. This flag has been ignored since NumPy 1.17 and was only needed to support loading files in Python 2 that were written in Python 3. ([gh-29984](https://redirect.github.com/numpy/numpy/pull/29984)) ##### Removal of four undocumented `ndarray.ctypes` methods Four undocumented methods of the `ndarray.ctypes` object have been removed: - `_ctypes.get_data()` (use `_ctypes.data` instead) - `_ctypes.get_shape()` (use `_ctypes.shape` instead) - `_ctypes.get_strides()` (use `_ctypes.strides` instead) - `_ctypes.get_as_parameter()` (use `_ctypes._as_parameter_` instead) These methods have been deprecated since NumPy 1.21. ([gh-29986](https://redirect.github.com/numpy/numpy/pull/29986)) ##### Removed `newshape` parameter from `numpy.reshape` The `newshape` parameter was deprecated in NumPy 2.1.0 and has been removed from `numpy.reshape`. Pass it positionally or use `shape=` on newer NumPy versions. ([gh-29994](https://redirect.github.com/numpy/numpy/pull/29994)) ##### Removal of deprecated functions and arguments The following long-deprecated APIs have been removed: - `numpy.trapz` --- deprecated since NumPy 2.0 (2023-08-18). Use `numpy.trapezoid` or `scipy.integrate` functions instead. - `disp` function --- deprecated from 2.0 release and no longer functional. Use your own printing function instead. - `bias` and `ddof` arguments in `numpy.corrcoef` --- these had no effect since NumPy 1.10. ([gh-29997](https://redirect.github.com/numpy/numpy/pull/29997)) ##### Removed `delimitor` parameter from `numpy.ma.mrecords.fromtextfile()` The `delimitor` parameter was deprecated in NumPy 1.22.0 and has been removed from `numpy.ma.mrecords.fromtextfile()`. Use `delimiter` instead. ([gh-30021](https://redirect.github.com/numpy/numpy/pull/30021)) ##### `numpy.array2string` and `numpy.sum` deprecations finalized The following long-deprecated APIs have been removed or converted to errors: - The `style` parameter has been removed from `numpy.array2string`. This argument had no effect since Numpy 1.14.0. Any arguments following it, such as `formatter` have now been made keyword-only. - Calling `np.sum(generator)` directly on a generator object now raises a `TypeError`. This behavior was deprecated in NumPy 1.15.0. Use `np.sum(np.fromiter(generator))` or the python `sum` builtin instead. ([gh-30068](https://redirect.github.com/numpy/numpy/pull/30068)) ##### Compatibility notes - NumPy's C extension modules have begun to use multi-phase initialisation, as defined by PEP 489. As part of this, a new explicit check has been added that each such module is only imported once per Python process. This comes with the side-effect that deleting `numpy` from `sys.modules` and re-importing it will now fail with an `ImportError`. This has always been unsafe, with unexpected side-effects, though did not previously raise an error. ([gh-29030](https://redirect.github.com/numpy/numpy/pull/29030)) - `numpy.round` now always returns a copy. Previously, it returned a view for integer inputs for `decimals >= 0` and a copy in all other cases. This change brings `round` in line with `ceil`, `floor` and `trunc`. ([gh-29137](https://redirect.github.com/numpy/numpy/pull/29137)) - Type-checkers will no longer accept calls to `numpy.arange` with `start` as a keyword argument. This was done for compatibility with the Array API standard. At runtime it is still possible to use `numpy.arange` with `start` as a keyword argument. ([gh-30147](https://redirect.github.com/numpy/numpy/pull/30147)) - The Macro NPY\_ALIGNMENT\_REQUIRED has been removed The macro was defined in the `npy_cpu.h` file, so might be regarded as semi public. As it turns out, with modern compilers and hardware it is almost always the case that alignment is required, so numpy no longer uses the macro. It is unlikely anyone uses it, but you might want to compile with the `-Wundef` flag or equivalent to be sure. ([gh-29094](https://redirect.github.com/numpy/numpy/pull/29094)) ##### C API changes ##### The NPY\_SORTKIND enum has been enhanced with new variables This is of interest if you are using `PyArray_Sort` or `PyArray_ArgSort`. We have changed the semantics of the old names in the `NPY_SORTKIND` enum and added new ones. The changes are backward compatible, and no recompilation is needed. The new names of interest are: - `NPY_SORT_DEFAULT` -- default sort (same value as `NPY_QUICKSORT`) - `NPY_SORT_STABLE` -- the sort must be stable (same value as `NPY_MERGESORT`) - `NPY_SORT_DESCENDING` -- the sort must be descending The semantic change is that `NPY_HEAPSORT` is mapped to `NPY_QUICKSORT` when used. Note that `NPY_SORT_DESCENDING` is not yet implemented. ([gh-29642](https://redirect.github.com/numpy/numpy/pull/29642)) ##### New `NPY_DT_get_constant` slot for DType constant retrieval A new slot `NPY_DT_get_constant` has been added to the DType API, allowing dtype implementations to provide constant values such as machine limits and special values. The slot function has the signature: ``` int get_constant(PyArray_Descr *descr, int constant_id, void *ptr) ``` It returns 1 on success, 0 if the constant is not available, or -1 on error. The function is always called with the GIL held and may write to unaligned memory. Integer constants (marked with the `1 << 16` bit) return `npy_intp` values, while floating-point constants return values of the dtype's native type. Implementing this can be used by user DTypes to provide `numpy.finfo` values. ([gh-29836](https://redirect.github.com/numpy/numpy/pull/29836)) ##### A new `PyUFunc_AddLoopsFromSpecs` convenience function has been added to the C API. This function allows adding multiple ufunc loops from their specs in one call using a NULL-terminated array of `PyUFunc_LoopSlot` structs. It allows registering sorting and argsorting loops using the new ArrayMethod API. ([gh-29900](https://redirect.github.com/numpy/numpy/pull/29900)) ##### New Features - Let `np.size` accept multiple axes. ([gh-29240](https://redirect.github.com/numpy/numpy/pull/29240)) - Extend `numpy.pad` to accept a dictionary for the `pad_width` argument. ([gh-29273](https://redirect.github.com/numpy/numpy/pull/29273)) ##### `'same_value'` for casting by value The `casting` kwarg now has a `'same_value'` option that checks the actual values can be round-trip cast without changing value. Currently it is only implemented in `ndarray.astype`. This will raise a `ValueError` if any of the values in the array would change as a result of the cast, including rounding of floats or overflowing of ints. ([gh-29129](https://redirect.github.com/numpy/numpy/pull/29129)) ##### `StringDType` fill\_value support in `numpy.ma.MaskedArray` Masked arrays now accept and preserve a Python `str` as their `fill_value` when using the variable‑width `StringDType` (kind `'T'`), including through slicing and views. The default is `'N/A'` and may be overridden by any valid string. This fixes issue [gh‑29421](https://redirect.github.com/numpy/numpy/issues/29421) and was implemented in pull request [gh‑29423](https://redirect.github.com/numpy/numpy/pull/29423). ([gh-29423](https://redirect.github.com/numpy/numpy/pull/29423)) ##### `ndmax` option for `numpy.array` The `ndmax` option is now available for `numpy.array`. It explicitly limits the maximum number of dimensions created from nested sequences. This is particularly useful when creating arrays of list-like objects with `dtype=object`. By default, NumPy recurses through all nesting levels to create the highest possible dimensional array, but this behavior may not be desired when the intent is to preserve nested structures as objects. The `ndmax` parameter provides explicit control over this recursion depth. ```python # Default behavior: Creates a 2D array >>> a = np.array([[1, 2], [3, 4]], dtype=object) >>> a array([[1, 2], [3, 4]], dtype=object) >>> a.shape (2, 2) # With ndmax=1: Creates a 1D array >>> b = np.array([[1, 2], [3, 4]], dtype=object, ndmax=1) >>> b array([list([1, 2]), list([3, 4])], dtype=object) >>> b.shape (2,) ``` ([gh-29569](https://redirect.github.com/numpy/numpy/pull/29569)) ##### Warning emitted when using `where` without `out` Ufuncs called with a `where` mask and without an `out` positional or kwarg will now emit a warning. This usage tends to trip up users who expect some value in output locations where the mask is `False` (the ufunc will not touch those locations). The warning can be suppressed by using `out=None`. ([gh-29813](https://redirect.github.com/numpy/numpy/pull/29813)) ##### DType sorting and argsorting supports the ArrayMethod API User-defined dtypes can now implement custom sorting and argsorting using the `ArrayMethod` API. This mechanism can be used in place of the `PyArray_ArrFuncs` slots which may be deprecated in the future. The sorting and argsorting methods are registered by passing the arraymethod specs that implement the operations to the new `PyUFunc_AddLoopsFromSpecs` function. See the `ArrayMethod` API documentation for details. ([gh-29900](https://redirect.github.com/numpy/numpy/pull/29900)) ##### New `__numpy_dtype__` protocol NumPy now has a new `__numpy_dtype__` protocol. NumPy will check for this attribute when converting to a NumPy dtype via `np.dtype(obj)` or any `dtype=` argument. Downstream projects are encouraged to implement this for all dtype like objects which may previously have used a `.dtype` attribute that returned a NumPy dtype. We expect to deprecate `.dtype` in the future to prevent interpreting array-like objects with a `.dtype` attribute as a dtype. If you wish you can implement `__numpy_dtype__` to ensure an earlier warning or error (`.dtype` is ignored if this is found). ([gh-30179](https://redirect.github.com/numpy/numpy/pull/30179)) ##### Improvements ##### Fix `flatiter` indexing edge cases The `flatiter` object now shares the same index preparation logic as `ndarray`, ensuring consistent behavior and fixing several issues where invalid indices were previously accepted or misinterpreted. Key fixes and improvements: - Stricter index validation - Boolean non-array indices like `arr.flat[[True, True]]` were incorrectly treated as `arr.flat[np.array([1, 1], dtype=int)]`. They now raise an index error. Note that indices that match the iterator's shape are expected to not raise in the future and be handled as regular boolean indices. Use `np.asarray(<index>)` if you want to match that behavior. - Float non-array indices were also cast to integer and incorrectly treated as `arr.flat[np.array([1.0, 1.0], dtype=int)]`. This is now deprecated and will be removed in a future version. - 0-dimensional boolean indices like `arr.flat[True]` are also deprecated and will be removed in a future version. - Consistent error types: Certain invalid `flatiter` indices that previously raised `ValueError` now correctly raise `IndexError`, aligning with `ndarray` behavior. - Improved error messages: The error message for unsupported index operations now provides more specific details, including explicitly listing the valid index types, instead of the generic `IndexError: unsupported index operation`. ([gh-28590](https://redirect.github.com/numpy/numpy/pull/28590)) ##### Improved error handling in `np.quantile` \[np.quantile]{.title-ref} now raises errors if: - All weights are zero - At least one weight is `np.nan` - At least one weight is `np.inf` ([gh-28595](https://redirect.github.com/numpy/numpy/pull/28595)) ##### Improved error message for `assert_array_compare` The error message generated by `assert_array_compare` which is used by functions like `assert_allclose`, `assert_array_less` etc. now also includes information about the indices at which the assertion fails. ([gh-29112](https://redirect.github.com/numpy/numpy/pull/29112)) ##### Show unit information in `__repr__` for `datetime64("NaT")` When a `datetime64` object is "Not a Time" (NaT), its `__repr__` method now includes the time unit of the datetime64 type. This makes it consistent with the behavior of a `timedelta64` object. ([gh-29396](https://redirect.github.com/numpy/numpy/pull/29396)) ##### Performance increase for scalar calculations The speed of calculations on scalars has been improved by about a factor 6 for ufuncs that take only one input (like `np.sin(scalar)`), reducing the speed difference from their `math` equivalents from a factor 19 to 3 (the speed for arrays is left unchanged). ([gh-29819](https://redirect.github.com/numpy/numpy/pull/29819)) ##### `numpy.finfo` Refactor The `numpy.finfo` class has been completely refactored to obtain floating-point constants directly from C compiler macros rather than deriving them at runtime. This provides better accuracy, platform compatibility and corrected several attribute calculations: - Constants like `eps`, `min`, `max`, `smallest_normal`, and `smallest_subnormal` now come directly from standard C macros (`FLT_EPSILON`, `DBL_MIN`, etc.), ensuring platform-correct values. - The deprecated `MachAr` runtime discovery mechanism has been removed. - Derived attributes have been corrected to match standard definitions: `machep` and `negep` now use `int(log2(eps))`; `nexp` accounts for all exponent patterns; `nmant` excludes the implicit bit; and `minexp` follows the C standard definition. - longdouble constants, Specifically `smallest_normal` now follows the C standard definitions as per respecitive platform. - Special handling added for PowerPC's IBM double-double format. - New test suite added in `test_finfo.py` to validate all `finfo` properties against expected machine arithmetic values for float16, float32, and float64 types. ([gh-29836](https://redirect.github.com/numpy/numpy/pull/29836)) ##### Multiple axes are now supported in `numpy.trim_zeros` The `axis` argument of `numpy.trim_zeros` now accepts a sequence; for example `np.trim_zeros(x, axis=(0, 1))` will trim the zeros from a multi-dimensional array `x` along axes 0 and 1. This fixes issue [gh‑29945](https://redirect.github.com/numpy/numpy/issues/29945) and was implemented in pull request [gh‑29947](https://redirect.github.com/numpy/numpy/pull/29947). ([gh-29947](https://redirect.github.com/numpy/numpy/pull/29947)) ##### Runtime signature introspection support has been significantly improved Many NumPy functions, classes, and methods that previously raised `ValueError` when passed to `inspect.signature()` now return meaningful signatures. This improves support for runtime type checking, IDE autocomplete, documentation generation, and runtime introspection capabilities across the NumPy API. Over three hundred classes and functions have been updated in total, including, but not limited to, core classes such as `ndarray`, `generic`, `dtype`, `ufunc`, `broadcast`, `nditer`, etc., most methods of `ndarray` and scalar types, array constructor functions (`array`, `empty`, `arange`, `fromiter`, etc.), all `ufuncs`, and many other commonly used functions, including `dot`, `concat`, `where`, `bincount`, `can_cast`, and numerous others. ([gh-30208](https://redirect.github.com/numpy/numpy/pull/30208)) ##### Performance improvements and changes ##### Performance improvements to `np.unique` for string dtypes The hash-based algorithm for unique extraction provides an order-of-magnitude speedup on large string arrays. In an internal benchmark with about 1 billion string elements, the hash-based np.unique completed in roughly 33.5 seconds, compared to 498 seconds with the sort-based method -- about 15× faster for unsorted unique operations on strings. This improvement greatly reduces the time to find unique values in very large string datasets. ([gh-28767](https://redirect.github.com/numpy/numpy/pull/28767)) ##### Rewrite of `np.ndindex` using `itertools.product` The `numpy.ndindex` function now uses `itertools.product` internally, providing significant improvements in performance for large iteration spaces, while maintaining the original behavior and interface. For example, for an array of shape (50, 60, 90) the NumPy `ndindex` benchmark improves performance by a factor 5.2. ([gh-29165](https://redirect.github.com/numpy/numpy/pull/29165)) ##### Performance improvements to `np.unique` for complex dtypes The hash-based algorithm for unique extraction now also supports complex dtypes, offering noticeable performance gains. In our benchmarks on complex128 arrays with 200,000 elements, the hash-based approach was about 1.4--1.5× faster than the sort-based baseline when there were 20% of unique values, and about 5× faster when there were 0.2% of unique values. ([gh-29537](https://redirect.github.com/numpy/numpy/pull/29537)) ##### Changes - Multiplication between a string and integer now raises OverflowError instead of MemoryError if the result of the multiplication would create a string that is too large to be represented. This follows Python's behavior. ([gh-29060](https://redirect.github.com/numpy/numpy/pull/29060)) - The accuracy of `np.quantile` and `np.percentile` for 16- and 32-bit floating point input data has been improved. ([gh-29105](https://redirect.github.com/numpy/numpy/pull/29105)) ##### `unique_values` for string dtypes may return unsorted data np.unique now supports hash‐based duplicate removal for string dtypes. This enhancement extends the hash-table algorithm to byte strings ('S'), Unicode strings ('U'), and the experimental string dtype ('T', StringDType). As a result, calling np.unique() on an array of strings will use the faster hash-based method to obtain unique values. Note that this hash-based method does not guarantee that the returned unique values will be sorted. This also works for StringDType arrays containing None (missing values) when using equal\_nan=True (treating missing values as equal). ([gh-28767](https://redirect.github.com/numpy/numpy/pull/28767)) ##### Modulate dispatched x86 CPU features **IMPORTANT**: The default setting for `cpu-baseline` on x86 has been raised to `x86-64-v2` microarchitecture. This can be changed to none during build time to support older CPUs, though SIMD optimizations for pre-2009 processors are no longer maintained. NumPy has reorganized x86 CPU features into microarchitecture-based groups instead of individual features, aligning with Linux distribution standards and Google Highway requirements. Key changes: - Replaced individual x86 features with microarchitecture levels: `X86_V2`, `X86_V3`, and `X86_V4` - Raised the baseline to `X86_V2` - Improved `-` operator behavior to properly exclude successor features that imply the excluded feature - Added meson redirections for removed feature names to maintain backward compatibility - Removed compiler compatibility workarounds for partial feature support (e.g., AVX512 without mask operations) - Removed legacy AMD features (XOP, FMA4) and discontinued Intel Xeon Phi support New Feature Group Hierarchy: Name Implies Includes *** `X86_V2` `SSE` `SSE2` `SSE3` `SSSE3` `SSE4_1` `SSE4_2` `POPCNT` `CX16` `LAHF` `X86_V3` `X86_V2` `AVX` `AVX2` `FMA3` `BMI` `BMI2` `LZCNT` `F16C` `MOVBE` `X86_V4` `X86_V3` `AVX512F` `AVX512CD` `AVX512VL` `AVX512BW` `AVX512DQ` `AVX512_ICL` `X86_V4` `AVX512VBMI` `AVX512VBMI2` `AVX512VNNI` `AVX512BITALG` `AVX512VPOPCNTDQ` `AVX512IFMA` `VAES` `GFNI` `VPCLMULQDQ` `AVX512_SPR` `AVX512_ICL` `AVX512FP16` These groups correspond to CPU generations: - `X86_V2`: x86-64-v2 microarchitectures (CPUs since 2009) - `X86_V3`: x86-64-v3 microarchitectures (CPUs since 2015) - `X86_V4`: x86-64-v4 microarchitectures (AVX-512 capable CPUs) - `AVX512_ICL`: Intel Ice Lake and similar CPUs - `AVX512_SPR`: Intel Sapphire Rapids and newer CPUs On 32-bit x86, `cx16` is excluded from `X86_V2`. Documentation has been updated with details on using these new feature groups with the current meson build system. ([gh-28896](https://redirect.github.com/numpy/numpy/pull/28896)) ##### Fix bug in `matmul` for non-contiguous out kwarg parameter In some cases, if `out` was non-contiguous, `np.matmul` would cause memory corruption or a c-level assert. This was new to v2.3.0 and fixed in v2.3.1. ([gh-29179](https://redirect.github.com/numpy/numpy/pull/29179)) ##### `__array_interface__` with NULL pointer changed The array interface now accepts NULL pointers (NumPy will do its own dummy allocation, though). Previously, these incorrectly triggered an undocumented scalar path. In the unlikely event that the scalar path was actually desired, you can (for now) achieve the previous behavior via the correct scalar path by not providing a `data` field at all. ([gh-29338](https://redirect.github.com/numpy/numpy/pull/29338)) ##### `unique_values` for complex dtypes may return unsorted data np.unique now supports hash‐based duplicate removal for complex dtypes. This enhancement extends the hash‐table algorithm to all complex types ('c'), and their extended precision variants. The hash‐based method provides faster extraction of unique values but does not guarantee that the result will be sorted. ([gh-29537](https://redirect.github.com/numpy/numpy/pull/29537)) ##### Sorting `kind='heapsort'` now maps to `kind='quicksort'` It is unlikely that this change will be noticed, but if you do see a change in execution time or unstable argsort order, that is likely the cause. Please let us know if there is a performance regression. Congratulate us if it is improved :) ([gh-29642](https://redirect.github.com/numpy/numpy/pull/29642)) ##### `numpy.typing.DTypeLike` no longer accepts `None` The type alias `numpy.typing.DTypeLike` no longer accepts `None`. Instead of ```python dtype: DTypeLike = None ``` it should now be ```python dtype: DTypeLike | None = None ``` instead. ([gh-29739](https://redirect.github.com/numpy/numpy/pull/29739)) The `npymath` and `npyrandom` libraries now have a `.lib` rather than a `.a` file extension on win-arm64, for compatibility for building with MSVC and `setuptools`. Please note that using these static libraries is discouraged and for existing projects using it, it's best to use it with a matching compiler toolchain, which is `clang-cl` on Windows on Arm. ([gh-29750](https://redirect.github.com/numpy/numpy/pull/29750)) </details> <details> <summary>python-pillow/Pillow (pillow)</summary> ### [`v12.1.1`](https://redirect.github.com/python-pillow/Pillow/compare/12.1.0...12.1.1) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/12.1.0...12.1.1) ### [`v12.1.0`](https://redirect.github.com/python-pillow/Pillow/releases/tag/12.1.0) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/12.0.0...12.1.0) <https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html> ##### Deprecations - Deprecate getdata(), in favour of new get\_flattened\_data() [#&#8203;9292](https://redirect.github.com/python-pillow/Pillow/issues/9292) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] ##### Documentation - Specify APNG duration type when opening [#&#8203;9368](https://redirect.github.com/python-pillow/Pillow/issues/9368) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Added release notes for [#&#8203;9350](https://redirect.github.com/python-pillow/Pillow/issues/9350) [#&#8203;9366](https://redirect.github.com/python-pillow/Pillow/issues/9366) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Update ImageMorph documentation [#&#8203;9349](https://redirect.github.com/python-pillow/Pillow/issues/9349) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Docs: update major bump cadence [#&#8203;9334](https://redirect.github.com/python-pillow/Pillow/issues/9334) \[[@&#8203;hugovk](https://redirect.github.com/hugovk)] - Add release notes for [#&#8203;9070](https://redirect.github.com/python-pillow/Pillow/issues/9070) [#&#8203;9320](https://redirect.github.com/python-pillow/Pillow/issues/9320) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Updated Ubuntu version [#&#8203;9306](https://redirect.github.com/python-pillow/Pillow/issues/9306) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Update macOS tested Pillow versions [#&#8203;9265](https://redirect.github.com/python-pillow/Pillow/issues/9265) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] ##### Dependencies - Update harfbuzz to 12.3.0 [#&#8203;9355](https://redirect.github.com/python-pillow/Pillow/issues/9355) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Update xz to 5.8.2 [#&#8203;9343](https://redirect.github.com/python-pillow/Pillow/issues/9343) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Updated libjpeg-turbo to 3.1.3 [#&#8203;9333](https://redirect.github.com/python-pillow/Pillow/issues/9333) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Updated zlib-ng to 2.3.2 [#&#8203;9324](https://redirect.github.com/python-pillow/Pillow/issues/9324) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Updated libpng to 1.6.53 [#&#8203;9325](https://redirect.github.com/python-pillow/Pillow/issues/9325) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Update actions/checkout action to v6 [#&#8203;9323](https://redirect.github.com/python-pillow/Pillow/issues/9323) \[@&#8203;[renovate\[bot\]](https://redirect.github.com/apps/renovate)] - Update dependency mypy to v1.19.0 [#&#8203;9322](https://redirect.github.com/python-pillow/Pillow/issues/9322) \[@&#8203;[renovate\[bot\]](https://redirect.github.com/apps/renovate)] - Updated libpng to 1.6.51 [#&#8203;9305](https://redirect.github.com/python-pillow/Pillow/issues/9305) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Updated brotli to 1.2.0 [#&#8203;9284](https://redirect.github.com/python-pillow/Pillow/issues/9284) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Update libimagequant to 4.4.1 [#&#8203;9301](https://redirect.github.com/python-pillow/Pillow/issues/9301) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Update zlib-ng to 2.3.1, except on manylinux2014 aarch64 [#&#8203;9312](https://redirect.github.com/python-pillow/Pillow/issues/9312) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Updated harfbuzz to 12.2.0 [#&#8203;9289](https://redirect.github.com/python-pillow/Pillow/issues/9289) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Update github-actions [#&#8203;9277](https://redirect.github.com/python-pillow/Pillow/issues/9277) \[@&#8203;[renovate\[bot\]](https://redirect.github.com/apps/renovate)] ##### Testing - Replace pre-commit with prek [#&#8203;9360](https://redirect.github.com/python-pillow/Pillow/issues/9360) \[[@&#8203;hugovk](https://redirect.github.com/hugovk)] - Test PyQt6 on Python 3.14 on Windows [#&#8203;9353](https://redirect.github.com/python-pillow/Pillow/issues/9353) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Test 32-bit Windows on Windows Server 2022 [#&#8203;9345](https://redirect.github.com/python-pillow/Pillow/issues/9345) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Correct variable type [#&#8203;9335](https://redirect.github.com/python-pillow/Pillow/issues/9335) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Fix `ResourceWarning`s in `selftest.py` [#&#8203;9332](https://redirect.github.com/python-pillow/Pillow/issues/9332) \[[@&#8203;hugovk](https://redirect.github.com/hugovk)] - Fix testing good P mode BMP images [#&#8203;9319](https://redirect.github.com/python-pillow/Pillow/issues/9319) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Test Python 3.15 pre-release [#&#8203;9331](https://redirect.github.com/python-pillow/Pillow/issues/9331) \[[@&#8203;hugovk](https://redirect.github.com/hugovk)] - Test ImageFont.ImageFont, in case freetype2 is not supported [#&#8203;9287](https://redirect.github.com/python-pillow/Pillow/issues/9287) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Add Fedora 43 [#&#8203;9290](https://redirect.github.com/python-pillow/Pillow/issues/9290) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Remove Fedora 41 [#&#8203;9260](https://redirect.github.com/python-pillow/Pillow/issues/9260) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] ##### Type hints - Add ImageFile context manager [#&#8203;9367](https://redirect.github.com/python-pillow/Pillow/issues/9367) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Assert fp is not None [#&#8203;8617](https://redirect.github.com/python-pillow/Pillow/issues/8617) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Added return type to ImageFile \_close\_fp() [#&#8203;9356](https://redirect.github.com/python-pillow/Pillow/issues/9356) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Use different variables for Image and ImageFile instances [#&#8203;9316](https://redirect.github.com/python-pillow/Pillow/issues/9316) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Correct variable type [#&#8203;9335](https://redirect.github.com/python-pillow/Pillow/issues/9335) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Improve type hints [#&#8203;9317](https://redirect.github.com/python-pillow/Pillow/issues/9317) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Use different variables for Image and ImageFile instances [#&#8203;9268](https://redirect.github.com/python-pillow/Pillow/issues/9268) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Added type hints [#&#8203;9269](https://redirect.github.com/python-pillow/Pillow/issues/9269) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Correct **getitem** return type [#&#8203;9264](https://redirect.github.com/python-pillow/Pillow/issues/9264) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] ##### Other changes - Simplify band splitting [#&#8203;9291](https://redirect.github.com/python-pillow/Pillow/issues/9291) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Support saving APNG float durations [#&#8203;9365](https://redirect.github.com/python-pillow/Pillow/issues/9365) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Allow 1 mode images in MorphOp [#&#8203;9348](https://redirect.github.com/python-pillow/Pillow/issues/9348) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Use minimum supported Python version for Lint [#&#8203;9364](https://redirect.github.com/python-pillow/Pillow/issues/9364) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Allow for duplicate font variation styles [#&#8203;9362](https://redirect.github.com/python-pillow/Pillow/issues/9362) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Call parent verify method [#&#8203;9357](https://redirect.github.com/python-pillow/Pillow/issues/9357) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Return LUT from LutBuilder build\_default\_lut() [#&#8203;9350](https://redirect.github.com/python-pillow/Pillow/issues/9350) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Simplify WebP code [#&#8203;9329](https://redirect.github.com/python-pillow/Pillow/issues/9329) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Use unsigned long for DWORD [#&#8203;9352](https://redirect.github.com/python-pillow/Pillow/issues/9352) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Cast to UINT32 before shifting bits [#&#8203;9347](https://redirect.github.com/python-pillow/Pillow/issues/9347) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - \[pre-commit.ci] pre-commit autoupdate [#&#8203;9318](https://redirect.github.com/python-pillow/Pillow/issues/9318) \[@&#8203;[pre-commit-ci\[bot\]](https://redirect.github.com/apps/pre-commit-ci)] - Allow window ID to be passed to ImageGrab.grab() on macOS [#&#8203;9070](https://redirect.github.com/python-pillow/Pillow/issues/9070) \[[@&#8203;yankeguo](https://redirect.github.com/yankeguo)] - Apply encoder options when saving multiple PNG frames [#&#8203;9300](https://redirect.github.com/python-pillow/Pillow/issues/9300) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Read all non-zero transparency from mode 1 PNG images as 255 [#&#8203;9282](https://redirect.github.com/python-pillow/Pillow/issues/9282) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Support writing IFD, SIGNED\_RATIONAL and InkNames TIFF tags [#&#8203;9276](https://redirect.github.com/python-pillow/Pillow/issues/9276) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Remove unused modes [#&#8203;9275](https://redirect.github.com/python-pillow/Pillow/issues/9275) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Correct allocating new color to RGBA palette [#&#8203;9313](https://redirect.github.com/python-pillow/Pillow/issues/9313) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Close image on ImageFont exception [#&#8203;9304](https://redirect.github.com/python-pillow/Pillow/issues/9304) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Reapply "Use macos-latest for iOS arm64 simulator" [#&#8203;9259](https://redirect.github.com/python-pillow/Pillow/issues/9259) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Escape period in pre-commit-config [#&#8203;9036](https://redirect.github.com/python-pillow/Pillow/issues/9036) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Add Apache-2.0 notice to IcoImagePlugin [#&#8203;8947](https://redirect.github.com/python-pillow/Pillow/issues/8947) \[[@&#8203;stefan6419846](https://redirect.github.com/stefan6419846)] - \[pre-commit.ci] pre-commit autoupdate [#&#8203;9288](https://redirect.github.com/python-pillow/Pillow/issues/9288) \[@&#8203;[pre-commit-ci\[bot\]](https://redirect.github.com/apps/pre-commit-ci)] - Simplify code now that I;16\* modes are the only IMAGING\_TYPE\_SPECIAL [#&#8203;9263](https://redirect.github.com/python-pillow/Pillow/issues/9263) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Remove BytesIO from DdsImagePlugin [#&#8203;9273](https://redirect.github.com/python-pillow/Pillow/issues/9273) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Fix ZeroDivisionError in DdsImagePlugin [#&#8203;9272](https://redirect.github.com/python-pillow/Pillow/issues/9272) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] - Fix warnings [#&#8203;9257](https://redirect.github.com/python-pillow/Pillow/issues/9257) \[[@&#8203;radarhere](https://redirect.github.com/radarhere)] </details> <details> <summary>giampaolo/psutil (psutil)</summary> ### [`v7.2.2`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#722) [Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-7.2.1...release-7.2.2) \===== 2026-01-28 **Enhancements** - 2705\_: \[Linux]: `Process.wait()`\_ now uses `pidfd_open()` + `poll()` for waiting, resulting in no busy loop and faster response times. Requires Linux >= 5.3 and Python >= 3.9. Falls back to traditional polling if unavailable. - 2705\_: \[macOS], \[BSD]: `Process.wait()`\_ now uses `kqueue()` for waiting, resulting in no busy loop and faster response times. **Bug fixes** - 2701\_, \[macOS]: fix compilation error on macOS < 10.7. (patch by Sergey Fedorov) - 2707\_, \[macOS]: fix potential memory leaks in error paths of `Process.memory_full_info()` and `Process.threads()`. - 2708\_, \[macOS]: Process.cmdline()`_ and `Process.environ()`_ may fail with ``OSError: [Errno 0] Undefined error`` (from ``sysctl(KERN_PROCARGS2)``). They now raise `AccessDenied\`\_ instead. </details> <details> <summary>Qiskit/qiskit (qiskit)</summary> ### [`v2.3.0`](https://redirect.github.com/Qiskit/qiskit/releases/tag/2.3.0): Qiskit 2.3.0 [Compare Source](https://redirect.github.com/Qiskit/qiskit/compare/2.2.3...2.3.0) ### Changelog #### Deprecated - Deprecate unsafe legacy format in Solovay Kitaev ([#&#8203;15360](https://redirect.github.com/Qiskit/qiskit/issues/15360)) - Deprecate annotated=None in control methods ([#&#8203;15356](https://redirect.github.com/Qiskit/qiskit/issues/15356)) #### Added - Add ways to retrieve operations from the `QkTarget` ([#&#8203;15283](https://redirect.github.com/Qiskit/qiskit/issues/15283)) - Add Statevector.from\_circuit to mirror Operator.from\_circuit ([#&#8203;14981](https://redirect.github.com/Qiskit/qiskit/issues/14981)) - Add PauliLindbladMap.parity\_sample method ([#&#8203;15335](https://redirect.github.com/Qiskit/qiskit/issues/15335)) - Support simple `IfElseOp` conditionals in OpenQASM 2 export ([#&#8203;14556](https://redirect.github.com/Qiskit/qiskit/issues/14556)) - Add `qk_dag_compose` to the C API ([#&#8203;15329](https://redirect.github.com/Qiskit/qiskit/issues/15329)) - Add ways to iterate over the `Target` in C. ([#&#8203;15208](https://redirect.github.com/Qiskit/qiskit/issues/15208)) - Added Reverse topology iterator in DAG ([#&#8203;15060](https://redirect.github.com/Qiskit/qiskit/issues/15060)) - Using Ross-Selinger in Qiskit ([#&#8203;15270](https://redirect.github.com/Qiskit/qiskit/issues/15270)) - Allow user-specified unitary synthesis methods for Clifford+T transpilation ([#&#8203;14952](https://redirect.github.com/Qiskit/qiskit/issues/14952)) - Add the argument `fallback_on_default` to `UnitarySynthesis` ([#&#8203;15287](https://redirect.github.com/Qiskit/qiskit/issues/15287)) - Add qk\_transpile\_stage\_routing() to the C API ([#&#8203;15358](https://redirect.github.com/Qiskit/qiskit/issues/15358)) - Add substitute\_node\_with\_dag to c api ([#&#8203;15374](https://redirect.github.com/Qiskit/qiskit/issues/15374)) - Add qk\_transpile\_stage\_optimization() to the C API ([#&#8203;15295](https://redirect.github.com/Qiskit/qiskit/issues/15295)) - Enable commutation checks among Pauli-based gates ([#&#8203;15359](https://redirect.github.com/Qiskit/qiskit/issues/15359)) - Add qk\_transpile\_stage\_translation() to the C API ([#&#8203;15293](https://redirect.github.com/Qiskit/qiskit/issues/15293)) - Add method wrappers for circuit and DAG converters ([#&#8203;15043](https://redirect.github.com/Qiskit/qiskit/issues/15043)) - Add DAG copy-empty-like to the C API ([#&#8203;15320](https://redirect.github.com/Qiskit/qiskit/issues/15320)) - Add qk\_transpile\_stage\_layout() to the C API ([#&#8203;15241](https://redirect.github.com/Qiskit/qiskit/issues/15241)) - Add SolovayKitaev as part of the default unitary synthesis plugin ([#&#8203;15285](https://redirect.github.com/Qiskit/qiskit/issues/15285)) - Unified commutative optimization ([#&#8203;15047](https://redirect.github.com/Qiskit/qiskit/issues/15047)) - Add `instruction_supported` to `QkTarget`. ([#&#8203;14566](https://redirect.github.com/Qiskit/qiskit/issues/14566)) - Converting RX/RY/RZ rotations to {Clifford,T,Tdg} ([#&#8203;15321](https://redirect.github.com/Qiskit/qiskit/issues/15321)) - Add `QkDag` instruction appliers and getter to C API ([#&#8203;15313](https://redirect.github.com/Qiskit/qiskit/issues/15313)) - Add `qk_dag_successors` and `qk_dag_predecessors` to the C API ([#&#8203;15346](https://redirect.github.com/Qiskit/qiskit/issues/15346)) - Expose both forms of VF2 layout passes in the C API ([#&#8203;14864](https://redirect.github.com/Qiskit/qiskit/issues/14864)) - Add `qk_circuit_to_dag` and `qk_dag_to_circuit` to the C API ([#&#8203;15247](https://redirect.github.com/Qiskit/qiskit/issues/15247)) - Adding `qk_dag_topological_op_nodes` to C API ([#&#8203;15297](https://redirect.github.com/Qiskit/qiskit/issues/15297)) - Add qk\_transpile\_stage\_init() to the C API ([#&#8203;15207](https://redirect.github.com/Qiskit/qiskit/issues/15207)) - Port `VF2PostLayout` to Rust ([#&#8203;14863](https://redirect.github.com/Qiskit/qiskit/issues/14863)) - Add `UnitaryGate` handling to `QkDag` C API ([#&#8203;15363](https://redirect.github.com/Qiskit/qiskit/issues/15363)) - Add no-overhead `ParameterExpression.num_parameters` attribute ([#&#8203;15354](https://redirect.github.com/Qiskit/qiskit/issues/15354)) - Split VF2 `call_limit` to before and after first layout ([#&#8203;14862](https://redirect.github.com/Qiskit/qiskit/issues/14862)) - Extend `LitinskiTransformation` pass to handle measurements ([#&#8203;15217](https://redirect.github.com/Qiskit/qiskit/issues/15217)) - Create `PauliProductMeasurement` instruction ([#&#8203;15126](https://redirect.github.com/Qiskit/qiskit/issues/15126)) - Add DAG typed node support to C API. ([#&#8203;15206](https://redirect.github.com/Qiskit/qiskit/issues/15206)) - Optimize the `OptimizeCliffordT` transpiler pass. ([#&#8203;14996](https://redirect.github.com/Qiskit/qiskit/issues/14996)) - Expose `Neighbors` in the C API ([#&#8203;15236](https://redirect.github.com/Qiskit/qiskit/issues/15236)) - Encapsulate VF2 configuration and return types ([#&#8203;14861](https://redirect.github.com/Qiskit/qiskit/issues/14861)) - Add Clifford prepend gates internal methods to improve Clifford.dot ([#&#8203;15166](https://redirect.github.com/Qiskit/qiskit/issues/15166)) - Add `QkDag` with registers to the C API. ([#&#8203;15200](https://redirect.github.com/Qiskit/qiskit/issues/15200)) - Improve performance of quantum\_info predicates ([#&#8203;15118](https://redirect.github.com/Qiskit/qiskit/issues/15118)) - Add quantum volume generator function to C API ([#&#8203;15037](https://redirect.github.com/Qiskit/qiskit/issues/15037)) - Add `QkParam` to the C API ([#&#8203;14837](https://redirect.github.com/Qiskit/qiskit/issues/14837)) - Rust Implementation for using `SparseObservable` in `sampled_expectation_value` ([#&#8203;14516](https://redirect.github.com/Qiskit/qiskit/issues/14516)) - Unbias directionality in VF2 priority queue ([#&#8203;14859](https://redirect.github.com/Qiskit/qiskit/issues/14859)) - Handle VF2 coupling-map shuffling in Rust ([#&#8203;14860](https://redirect.github.com/Qiskit/qiskit/issues/14860)) - Use QSD from rust in default unitary synthesis plugin ([#&#8203;15003](https://redirect.github.com/Qiskit/qiskit/issues/15003)) - Make VF2 fully generic over index types and semantics ([#&#8203;14858](https://redirect.github.com/Qiskit/qiskit/issues/14858)) - Use on-the-fly scoring in VF2Layout ([#&#8203;14857](https://redirect.github.com/Qiskit/qiskit/issues/14857)) - Rust Shannon Decomposition ([#&#8203;14797](https://redirect.github.com/Qiskit/qiskit/issues/14797)) #### Changed - Move preferred location of `WrapAngles` default registry ([#&#8203;15101](https://redirect.github.com/Qiskit/qiskit/issues/15101)) - Drop support for Python 3.9 ([#&#8203;15371](https://redirect.github.com/Qiskit/qiskit/issues/15371)) - adding name to qktarget ([#&#8203;15334](https://redirect.github.com/Qiskit/qiskit/issues/15334)) - Cleanup of circuit library `control` methods ([#&#8203;15209](https://redirect.github.com/Qiskit/qiskit/issues/15209)) - Swap to `setuptools>=77.0` licence specification ([#&#8203;15128](https://redirect.github.com/Qiskit/qiskit/issues/15128)) - Drop macOS x86\_64 to tier 2 ([#&#8203;15041](https://redirect.github.com/Qiskit/qiskit/issues/15041)) - Lower limits on `VF2PostLayout` in exact mode ([#&#8203;15068](https://redirect.github.com/Qiskit/qiskit/issues/15068)) #### Fixed - Represent non-fixed params as `NaN` for `QkTargetOp` ([#&#8203;15463](https://redirect.github.com/Qiskit/qiskit/issues/15463)) ([#&#8203;15525](https://redirect.github.com/Qiskit/qiskit/issues/15525)) - Fix param extraction for arrays with a single element (backport [#&#8203;15436](https://redirect.github.com/Qiskit/qiskit/issues/15436)) ([#&#8203;15522](https://redirect.github.com/Qiskit/qiskit/issues/15522)) - QPY serialization of `SparseObservable` ([#&#8203;15263](https://redirect.github.com/Qiskit/qiskit/issues/15263)) - Fix timeline drawer for gates without unitary in target ([#&#8203;15421](https://redirect.github.com/Qiskit/qiskit/issues/15421)) - Stop using a parallel sort in disjoint utils ([#&#8203;15410](https://redirect.github.com/Qiskit/qiskit/issues/15410)) - Bug fix for Clifford+T transpilation: passing incorrect argument to `generate_unroll_3q` ([#&#8203;15401](https://redirect.github.com/Qiskit/qiskit/issues/15401)) - fix: preserve identity 'I' characters in PauliEvolutionGate labels ([#&#8203;15173](https://redirect.github.com/Qiskit/qiskit/issues/15173)) - Fix operator @&#8203; quantumstate multiplication ([#&#8203;14963](https://redirect.github.com/Qiskit/qiskit/issues/14963)) - Fix text drawer layering for classical wires ([#&#8203;15262](https://redirect.github.com/Qiskit/qiskit/issues/15262)) - `Pauli.evolve()` recognize common rotations by (n\*pi/2) as Clifford gates ([#&#8203;15289](https://redirect.github.com/Qiskit/qiskit/issues/15289)) - Unitary synthesis bug fix ([#&#8203;15286](https://redirect.github.com/Qiskit/qiskit/issues/15286)) - Change the rust structure of expr.Value ([#&#8203;15272](https://redirect.github.com/Qiskit/qiskit/issues/15272)) - Fix reuse of `ConsolidateBlocks` instances ([#&#8203;15258](https://redirect.github.com/Qiskit/qiskit/issues/15258)) - Fix qpy.dump failure with gzip write streams in QPY v16 (backward seek unsupported) ([#&#8203;15158](https://redirect.github.com/Qiskit/qiskit/issues/15158)) - Raise exception not panic on bad `ConsolidateBlocks` input ([#&#8203;15110](https://redirect.github.com/Qiskit/qiskit/issues/15110)) - Fix schedule analysis passes with empty circuits ([#&#8203;15147](https://redirect.github.com/Qiskit/qiskit/issues/15147)) - Fix qubit mapping in `ConsolidateBlocks` control-flow blocks ([#&#8203;15083](https://redirect.github.com/Qiskit/qiskit/issues/15083)) - Fixing inverse methods for MCPhase and MCU1 gates ([#&#8203;15181](https://redirect.github.com/Qiskit/qiskit/issues/15181)) - Fix textdrawer for controlflow with different regs ([#&#8203;15155](https://redirect.g </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/sarumaj/qiskit-state-evolution-recorder). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTcuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
dawid/qiskit-state-evolution-recorder!31
No description provided.