[PR #25067] chore(deps): update machine-learning #18058

Open
opened 2026-02-05 16:31:56 +03:00 by OVERLORD · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/immich-app/immich/pull/25067
Author: @renovate[bot]
Created: 1/6/2026
Status: 🔄 Open

Base: mainHead: renovate/machine-learning


📝 Commits (1)

  • 163ab59 chore(deps): update machine-learning

📊 Changes

2 files changed (+406 additions, -362 deletions)

View changed files

📝 machine-learning/Dockerfile (+4 -4)
📝 machine-learning/uv.lock (+402 -358)

📄 Description

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update Pending
fastapi (changelog) 0.127.10.128.0 age confidence project.dependencies minor 0.128.1
huggingface-hub 0.34.40.36.0 age confidence project.dependencies minor 0.36.1
locust 2.42.62.43.1 age confidence dependency-groups minor 2.43.2
numpy (changelog) 2.3.42.4.1 age confidence project.dependencies minor 2.4.2
opencv-python-headless 4.11.0.864.13.0.90 age confidence project.dependencies minor 4.13.0.92
orjson (changelog) 3.11.53.11.6 age confidence project.dependencies patch 3.11.7
pydantic (changelog) 2.11.72.12.5 age confidence project.dependencies minor
pydantic-settings (changelog) 2.10.12.12.0 age confidence project.dependencies minor
pytest-cov (changelog) 6.2.16.3.0 age confidence dependency-groups minor
pytest-mock (changelog) 3.14.13.15.1 age confidence dependency-groups minor
python 0222b7949b618b stage digest
python 917ec0e04cd278 stage digest
python 667cf70aa23850 stage digest
rapidocr (changelog) 3.4.53.6.0 age confidence project.dependencies minor
rich 14.1.014.3.1 age confidence project.dependencies minor 14.3.2
ruff (source, changelog) 0.14.100.14.14 age confidence dependency-groups patch 0.15.0
tokenizers 0.21.40.22.2 age confidence project.dependencies minor
types-pyyaml (changelog) 6.0.12.202508226.0.12.20250915 age confidence dependency-groups patch
types-requests (changelog) 2.32.4.202508092.32.4.20260107 age confidence dependency-groups patch
types-setuptools (changelog) 80.9.0.2025082280.10.0.20260124 age confidence dependency-groups minor
uvicorn (changelog) 0.35.00.40.0 age confidence project.dependencies minor

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

fastapi/fastapi (fastapi)

v0.128.0

Compare Source

Breaking Changes
Internal
huggingface/huggingface_hub (huggingface-hub)

v0.36.0: [v0.36.0] Last Stop Before 1.0

Compare Source

This is the final minor release before v1.0.0. This release focuses on performance optimizations to HfFileSystem and adds a new get_organization_overview API endpoint.

We'll continue to release security patches as needed, but v0.37 will not happen. The next release will be 1.0.0. We’re also deeply grateful to the entire Hugging Face community for their feedback, bug reports, and suggestions that have shaped this library.

Full Changelog: https://github.com/huggingface/huggingface_hub/compare/v0.35.0...v0.36.0

📁 HfFileSystem

Major optimizations have been implemented in HfFileSystem:

  • Cache is kept when pickling a fs instance. This is particularily useful when streaming datasets in a distributed training environment. Each worker won't have to rebuild their cache anymore

Listing files with .glob() has been greatly optimized:

from huggingface_hub import HfFileSystem

HfFileSystem().glob("datasets/HuggingFaceFW/fineweb-edu/data/*/*")

# Before: ~100 /tree calls (one per subdirectory)
# Now: 1 /tree call

Minor updates:

🌍 HfApi

It is now possible to get high-level information about an organization, the same way it is already possible to do with users:

>>> from huggingface_hub import get_organization_overview
>>> get_organization_overview("huggingface")
Organization(
    avatar_url='https://cdn-avatars.huggingface.co/v1/production/uploads/1583856921041-5dd96eb166059660ed1ee413.png',
    name='huggingface',
    fullname='Hugging Face',
    details='The AI community building the future.',
    is_verified=True,
    is_following=True,
    num_users=198,
    num_models=164, num_spaces=96,
    num_datasets=1043,
    num_followers=64814
)

🛠️ Small fixes and maintenance

🐛 Bug and typo fixes
🏗️ internal

Community contributions

The following contributors have made changes to the library over the last release. Thank you!

v0.35.3: [v0.35.3] Fix image-to-image target size parameter mapping & tiny agents allow tools list bug

Compare Source

This release includes two bug fixes:

Full Changelog: https://github.com/huggingface/huggingface_hub/compare/v0.35.2...v0.35.3

v0.35.2: [v0.35.2] Welcoming Z.ai as Inference Providers!

Compare Source

Full Changelog: https://github.com/huggingface/huggingface_hub/compare/v0.35.1...v0.35.2

New inference provider! 🔥

Z.ai is now officially an Inference Provider on the Hub. See full documentation here: https://huggingface.co/docs/inference-providers/providers/zai-org.

from huggingface_hub import InferenceClient

client = InferenceClient(provider="zai-org")
completion = client.chat.completions.create(
    model="zai-org/GLM-4.5",
    messages=[{"role": "user", "content": "What is the capital of France?"}],
)

print("\nThinking:")
print(completion.choices[0].message.reasoning_content)
print("\nOutput:")
print(completion.choices[0].message.content)
Thinking:
Okay, the user is asking about the capital of France. That's a pretty straightforward geography question. 

Hmm, I wonder if this is just a casual inquiry or if they need it for something specific like homework or travel planning. The question is very basic though, so probably just general knowledge. 

Paris is definitely the correct answer here. It's been the capital for centuries, since the Capetian dynasty made it the seat of power. Should I mention any historical context? Nah, the user didn't ask for details - just the capital. 

I recall Paris is also France's largest city and major cultural hub. But again, extra info might be overkill unless they follow up. Better keep it simple and accurate. 

The answer should be clear and direct: "Paris". No need to overcomplicate a simple fact. If they want more, they'll ask.

Output:
The capital of France is **Paris**.  

Paris has been the political and cultural center of France for centuries, serving as the seat of government, the residence of the President (Élysée Palace), and home to iconic landmarks like the Eiffel Tower, the Louvre Museum, and Notre-Dame Cathedral. It is also France's largest city and a global hub for art, fashion, gastronomy, and history.

Misc:

v0.35.1: [v0.35.1] Do not retry on 429 and skip forward ref in strict dataclass

Compare Source

  • Do not retry on 429 (only on 5xx) #​3377
  • Skip unresolved forward ref in strict dataclasses #​3376

Full Changelog: https://github.com/huggingface/huggingface_hub/compare/v0.35.0...v0.35.1

v0.35.0: [v0.35.0] Announcing Scheduled Jobs: run cron jobs on GPU on the Hugging Face Hub!

Compare Source

Scheduled Jobs

In v0.34.0 release, we announced Jobs, a new way to run compute on the Hugging Face Hub. In this new release, we are announcing Scheduled Jobs to run Jobs on a regular basic. Think "cron jobs running on GPU".

This comes with a fully-fledge CLI:

hf jobs scheduled run @​hourly ubuntu echo hello world
hf jobs scheduled run "0 * * * *" ubuntu echo hello world
hf jobs scheduled ps -a
hf jobs scheduled inspect <id>
hf jobs scheduled delete <id>
hf jobs scheduled suspend <id>
hf jobs scheduled resume <id>
hf jobs scheduled uv run @&#8203;weekly train.py

It is now possible to run a command with uv run:

hf jobs uv run --with lighteval -s HF_TOKEN lighteval endpoint inference-providers "model_name=openai/gpt-oss-20b,provider=groq" "lighteval|gsm8k|0|0"

Some other improvements have been added to the existing Jobs API for a better UX.

And finally, Jobs documentation has been updated with new examples (and some fixes):

CLI updates

In addition to the Scheduled Jobs, some improvements have been added to the hf CLI.

Inference Providers

Welcome Scaleway and PublicAI!

Two new partners have been integrated to Inference Providers: Scaleway and PublicAI! (as part of releases 0.34.5 and 0.34.6).

Image-to-video

Image to video is now supported in the InferenceClient:

from huggingface_hub import InferenceClient

client = InferenceClient(provider="fal-ai")

video = client.image_to_video(
    "cat.png",
    prompt="The cat starts to dance",
    model="Wan-AI/Wan2.2-I2V-A14B",
)
Miscellaneous

Header content-type is now correctly set when sending an image or audio request (e.g. for image-to-image task). It is inferred either from the filename or the URL provided by the user. If user is directly passing raw bytes, the content-type header has to be set manually.

  • [InferenceClient] Add content-type header whenever possible + refacto by @​Wauplin in #​3321

A .reasoning field has been added to the Chat Completion output. This is used by some providers to return reasoning tokens separated from the .content stream of tokens.

MCP & tiny-agents updates

tiny-agents now handles AGENTS.md instruction file (see https://agents.md/).

Tools filtering has already been improved to avoid loading non-relevant tools from an MCP server:

🛠️ Small fixes and maintenance

🐛 Bug and typo fixes
🏗️ internal

Community contributions

The following contributors have made changes to the library over the last release. Thank you!

v0.34.6: [v0.34.6]: Welcoming PublicAI as Inference Providers!

Compare Source

Full Changelog: https://github.com/huggingface/huggingface_hub/compare/v0.34.5...v0.34.6

New provider: PublicAI

[!Tip]
All supported PublicAI models can be found here.

Public AI Inference Utility is a nonprofit, open-source project building products and organizing advocacy to support the work of public AI model builders like the Swiss AI Initiative, AI Singapore, AI Sweden, and the Barcelona Supercomputing Center. Think of a BBC for AI, a public utility for AI, or public libraries for AI.

from huggingface_hub import InferenceClient

client = InferenceClient(provider="publicai")
completion = client.chat.completions.create(
    model="swiss-ai/Apertus-70B-Instruct-2509",
    messages=[{"role": "user", "content": "What is the capital of Switzerland?"}],
)

print(completion.choices[0].message.content)

v0.34.5: [v0.34.5]: Welcoming Scaleway as Inference Providers!

Compare Source

Full Changelog: https://github.com/huggingface/huggingface_hub/compare/v0.34.4...v0.34.5

New provider: Scaleway

[!Tip]
All supported Scaleway models can be found here. For more details, check out its documentation page.

Scaleway is a European cloud provider, serving latest LLM models through its Generative APIs alongside a complete cloud ecosystem.

from huggingface_hub import InferenceClient

client = InferenceClient(provider="scaleway")

completion = client.chat.completions.create(
    model="Qwen/Qwen3-235B-A22B-Instruct-2507",
    messages=[
        {
            "role": "user",
            "content": "What is the capital of France?"
        }
    ],
)

print(completion.choices[0].message)
locustio/locust (locust)

v2.43.1

Compare Source

Full Changelog

Merged pull requests:

v2.43.0

Compare Source

Full Changelog

Closed issues:

  • Support for requests >=2.32.5 (compatibility with LangChain/AI ecosystem) #​3307
  • Multiple select in web UI for custom arguments #​3260
  • Suggestion to Add "iter_lines" Support for "FastHttpUser" in Locust #​3018

Merged pull requests:

numpy/numpy (numpy)

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 pas


Configuration

📅 Schedule: Branch creation - "before 9am on tuesday" (UTC), 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.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


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

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


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/immich-app/immich/pull/25067 **Author:** [@renovate[bot]](https://github.com/apps/renovate) **Created:** 1/6/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `renovate/machine-learning` --- ### 📝 Commits (1) - [`163ab59`](https://github.com/immich-app/immich/commit/163ab590ab6b5d952c1b827bc8068d537de72ff6) chore(deps): update machine-learning ### 📊 Changes **2 files changed** (+406 additions, -362 deletions) <details> <summary>View changed files</summary> 📝 `machine-learning/Dockerfile` (+4 -4) 📝 `machine-learning/uv.lock` (+402 -358) </details> ### 📄 Description > ℹ️ **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/) | Type | Update | Pending | |---|---|---|---|---|---|---| | [fastapi](https://redirect.github.com/fastapi/fastapi) ([changelog](https://fastapi.tiangolo.com/release-notes/)) | `0.127.1` → `0.128.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/fastapi/0.128.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/fastapi/0.127.1/0.128.0?slim=true) | project.dependencies | minor | `0.128.1` | | [huggingface-hub](https://redirect.github.com/huggingface/huggingface_hub) | `0.34.4` → `0.36.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/huggingface-hub/0.36.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/huggingface-hub/0.34.4/0.36.0?slim=true) | project.dependencies | minor | `0.36.1` | | [locust](https://redirect.github.com/locustio/locust) | `2.42.6` → `2.43.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/locust/2.43.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/locust/2.42.6/2.43.1?slim=true) | dependency-groups | minor | `2.43.2` | | [numpy](https://redirect.github.com/numpy/numpy) ([changelog](https://numpy.org/doc/stable/release)) | `2.3.4` → `2.4.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/numpy/2.4.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/numpy/2.3.4/2.4.1?slim=true) | project.dependencies | minor | `2.4.2` | | [opencv-python-headless](https://redirect.github.com/opencv/opencv-python) | `4.11.0.86` → `4.13.0.90` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/opencv-python-headless/4.13.0.90?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/opencv-python-headless/4.11.0.86/4.13.0.90?slim=true) | project.dependencies | minor | `4.13.0.92` | | [orjson](https://redirect.github.com/ijl/orjson) ([changelog](https://redirect.github.com/ijl/orjson/blob/master/CHANGELOG.md)) | `3.11.5` → `3.11.6` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/orjson/3.11.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/orjson/3.11.5/3.11.6?slim=true) | project.dependencies | patch | `3.11.7` | | [pydantic](https://redirect.github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `2.11.7` → `2.12.5` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.12.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.11.7/2.12.5?slim=true) | project.dependencies | minor | | | [pydantic-settings](https://redirect.github.com/pydantic/pydantic-settings) ([changelog](https://redirect.github.com/pydantic/pydantic-settings/releases)) | `2.10.1` → `2.12.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic-settings/2.12.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic-settings/2.10.1/2.12.0?slim=true) | project.dependencies | minor | | | [pytest-cov](https://redirect.github.com/pytest-dev/pytest-cov) ([changelog](https://pytest-cov.readthedocs.io/en/latest/changelog.html)) | `6.2.1` → `6.3.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest-cov/6.3.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest-cov/6.2.1/6.3.0?slim=true) | dependency-groups | minor | | | [pytest-mock](https://redirect.github.com/pytest-dev/pytest-mock) ([changelog](https://pytest-mock.readthedocs.io/en/latest/changelog.html)) | `3.14.1` → `3.15.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest-mock/3.15.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest-mock/3.14.1/3.15.1?slim=true) | dependency-groups | minor | | | python | `0222b79` → `49b618b` | | | stage | digest | | | python | `917ec0e` → `04cd278` | | | stage | digest | | | python | `667cf70` → `aa23850` | | | stage | digest | | | [rapidocr](https://redirect.github.com/RapidAI/RapidOCR) ([changelog](https://redirect.github.com/RapidAI/RapidOCR/releases)) | `3.4.5` → `3.6.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/rapidocr/3.6.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/rapidocr/3.4.5/3.6.0?slim=true) | project.dependencies | minor | | | [rich](https://redirect.github.com/Textualize/rich) | `14.1.0` → `14.3.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/rich/14.3.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/rich/14.1.0/14.3.1?slim=true) | project.dependencies | minor | `14.3.2` | | [ruff](https://docs.astral.sh/ruff) ([source](https://redirect.github.com/astral-sh/ruff), [changelog](https://redirect.github.com/astral-sh/ruff/blob/main/CHANGELOG.md)) | `0.14.10` → `0.14.14` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.14.14?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.14.10/0.14.14?slim=true) | dependency-groups | patch | `0.15.0` | | [tokenizers](https://redirect.github.com/huggingface/tokenizers) | `0.21.4` → `0.22.2` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/tokenizers/0.22.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/tokenizers/0.21.4/0.22.2?slim=true) | project.dependencies | minor | | | [types-pyyaml](https://redirect.github.com/python/typeshed) ([changelog](https://redirect.github.com/typeshed-internal/stub_uploader/blob/main/data/changelogs/PyYAML.md)) | `6.0.12.20250822` → `6.0.12.20250915` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/types-pyyaml/6.0.12.20250915?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/types-pyyaml/6.0.12.20250822/6.0.12.20250915?slim=true) | dependency-groups | patch | | | [types-requests](https://redirect.github.com/python/typeshed) ([changelog](https://redirect.github.com/typeshed-internal/stub_uploader/blob/main/data/changelogs/requests.md)) | `2.32.4.20250809` → `2.32.4.20260107` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/types-requests/2.32.4.20260107?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/types-requests/2.32.4.20250809/2.32.4.20260107?slim=true) | dependency-groups | patch | | | [types-setuptools](https://redirect.github.com/python/typeshed) ([changelog](https://redirect.github.com/typeshed-internal/stub_uploader/blob/main/data/changelogs/setuptools.md)) | `80.9.0.20250822` → `80.10.0.20260124` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/types-setuptools/80.10.0.20260124?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/types-setuptools/80.9.0.20250822/80.10.0.20260124?slim=true) | dependency-groups | minor | | | [uvicorn](https://redirect.github.com/Kludex/uvicorn) ([changelog](https://uvicorn.dev/release-notes)) | `0.35.0` → `0.40.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/uvicorn/0.40.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/uvicorn/0.35.0/0.40.0?slim=true) | project.dependencies | minor | | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>fastapi/fastapi (fastapi)</summary> ### [`v0.128.0`](https://redirect.github.com/fastapi/fastapi/releases/tag/0.128.0) [Compare Source](https://redirect.github.com/fastapi/fastapi/compare/0.127.1...0.128.0) ##### Breaking Changes - ➖ Drop support for `pydantic.v1`. PR [#&#8203;14609](https://redirect.github.com/fastapi/fastapi/pull/14609) by [@&#8203;tiangolo](https://redirect.github.com/tiangolo). ##### Internal - ✅ Run performance tests only on Pydantic v2. PR [#&#8203;14608](https://redirect.github.com/fastapi/fastapi/pull/14608) by [@&#8203;tiangolo](https://redirect.github.com/tiangolo). </details> <details> <summary>huggingface/huggingface_hub (huggingface-hub)</summary> ### [`v0.36.0`](https://redirect.github.com/huggingface/huggingface_hub/releases/tag/v0.36.0): [v0.36.0] Last Stop Before 1.0 [Compare Source](https://redirect.github.com/huggingface/huggingface_hub/compare/v0.35.3...v0.36.0) This is the final minor release before v1.0.0. This release focuses on performance optimizations to `HfFileSystem` and adds a new `get_organization_overview` API endpoint. We'll continue to release security patches as needed, but v0.37 will not happen. The next release will be 1.0.0. We’re also deeply grateful to the entire Hugging Face community for their feedback, bug reports, and suggestions that have shaped this library. **Full Changelog**: <https://github.com/huggingface/huggingface_hub/compare/v0.35.0...v0.36.0> #### 📁 `HfFileSystem` Major optimizations have been implemented in `HfFileSystem`: - Cache is kept when pickling a `fs` instance. This is particularily useful when streaming datasets in a distributed training environment. Each worker won't have to rebuild their cache anymore * \[HfFileSystem] Keep cache on pickle  by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3443](https://redirect.github.com/huggingface/huggingface_hub/issues/3443) Listing files with `.glob()` has been greatly optimized: ```python from huggingface_hub import HfFileSystem HfFileSystem().glob("datasets/HuggingFaceFW/fineweb-edu/data/*/*") # Before: ~100 /tree calls (one per subdirectory) # Now: 1 /tree call ``` - \[HfFileSystem] Optimize `maxdepth`: do less `/tree` calls in `glob()`  by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3389](https://redirect.github.com/huggingface/huggingface_hub/issues/3389) Minor updates: - add block\_size in **init**  by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3425](https://redirect.github.com/huggingface/huggingface_hub/issues/3425) - hffs minor fix  by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3449](https://redirect.github.com/huggingface/huggingface_hub/issues/3449) - HTTP backoff: Retry on ChunkedEncodingError  by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3437](https://redirect.github.com/huggingface/huggingface_hub/issues/3437) #### 🌍 `HfApi` It is now possible to get high-level information about an organization, the same way it is already possible to do with users: ```python >>> from huggingface_hub import get_organization_overview >>> get_organization_overview("huggingface") Organization( avatar_url='https://cdn-avatars.huggingface.co/v1/production/uploads/1583856921041-5dd96eb166059660ed1ee413.png', name='huggingface', fullname='Hugging Face', details='The AI community building the future.', is_verified=True, is_following=True, num_users=198, num_models=164, num_spaces=96, num_datasets=1043, num_followers=64814 ) ``` - Add client support for the organization overview endpoint  by [@&#8203;BastienGimbert](https://redirect.github.com/BastienGimbert) in [#&#8203;3436](https://redirect.github.com/huggingface/huggingface_hub/issues/3436) #### 🛠️ Small fixes and maintenance ##### 🐛 Bug and typo fixes - Add quotes for better shell compatibility  by [@&#8203;aopstudio](https://redirect.github.com/aopstudio) in [#&#8203;3369](https://redirect.github.com/huggingface/huggingface_hub/issues/3369) - update the `sentence_similarity` docstring  by [@&#8203;tolgaakar](https://redirect.github.com/tolgaakar) in [#&#8203;3374](https://redirect.github.com/huggingface/huggingface_hub/issues/3374) - Do not retry on 429 (only on 5xx)  by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3377](https://redirect.github.com/huggingface/huggingface_hub/issues/3377) - Use git xet transfer to check if xet is enabled  by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3381](https://redirect.github.com/huggingface/huggingface_hub/issues/3381) - Replace pkgx install instruction with uv  by [@&#8203;gary149](https://redirect.github.com/gary149) in [#&#8203;3420](https://redirect.github.com/huggingface/huggingface_hub/issues/3420) - The error message as previously displayed...  by [@&#8203;goldnode](https://redirect.github.com/goldnode) in [#&#8203;3405](https://redirect.github.com/huggingface/huggingface_hub/issues/3405) - Use all tools unless explicit allowed\_tools  by [@&#8203;Mithil467](https://redirect.github.com/Mithil467) in [#&#8203;3397](https://redirect.github.com/huggingface/huggingface_hub/issues/3397) - \[type validation] skip unresolved forward ref  by [@&#8203;zucchini-nlp](https://redirect.github.com/zucchini-nlp) in [#&#8203;3376](https://redirect.github.com/huggingface/huggingface_hub/issues/3376) - document job stage possible values  by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3431](https://redirect.github.com/huggingface/huggingface_hub/issues/3431) - update token parameter docstring  by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3447](https://redirect.github.com/huggingface/huggingface_hub/issues/3447) ##### 🏗️ internal - bump to 0.36.0.dev0 by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) (direct commit on main) - \[Workflow] security fix  by [@&#8203;glegendre01](https://redirect.github.com/glegendre01) in [#&#8203;3383](https://redirect.github.com/huggingface/huggingface_hub/issues/3383) - migrate tip blocks  by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3392](https://redirect.github.com/huggingface/huggingface_hub/issues/3392) - \[Internal] Fix `ty` quality   by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3441](https://redirect.github.com/huggingface/huggingface_hub/issues/3441) - backward compatible cli tracking (v0.x)  by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3460](https://redirect.github.com/huggingface/huggingface_hub/issues/3460) #### Community contributions The following contributors have made changes to the library over the last release. Thank you! - [@&#8203;aopstudio](https://redirect.github.com/aopstudio)     \* Add quotes for better shell compatibility ([#&#8203;3369](https://redirect.github.com/huggingface/huggingface_hub/issues/3369)) - [@&#8203;tolgaakar](https://redirect.github.com/tolgaakar)     \* update the `sentence_similarity` docstring ([#&#8203;3374](https://redirect.github.com/huggingface/huggingface_hub/issues/3374)) ([#&#8203;3375](https://redirect.github.com/huggingface/huggingface_hub/issues/3375)) - [@&#8203;Mithil467](https://redirect.github.com/Mithil467)     \* Use all tools unless explicit allowed\_tools ([#&#8203;3397](https://redirect.github.com/huggingface/huggingface_hub/issues/3397)) - [@&#8203;goldnode](https://redirect.github.com/goldnode)     \* The error message as previously displayed... ([#&#8203;3405](https://redirect.github.com/huggingface/huggingface_hub/issues/3405)) - [@&#8203;BastienGimbert](https://redirect.github.com/BastienGimbert)     \* Add client support for the organization overview endpoint ([#&#8203;3436](https://redirect.github.com/huggingface/huggingface_hub/issues/3436)) ### [`v0.35.3`](https://redirect.github.com/huggingface/huggingface_hub/releases/tag/v0.35.3): [v0.35.3] Fix `image-to-image` target size parameter mapping &amp; tiny agents allow tools list bug [Compare Source](https://redirect.github.com/huggingface/huggingface_hub/compare/v0.35.2...v0.35.3) This release includes two bug fixes: - \[Inference] Fix target size mapping for fal-ai's image-to-image in [#&#8203;3399](https://redirect.github.com/huggingface/huggingface_hub/issues/3399) by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) flagged by [@&#8203;iam-tsr](https://redirect.github.com/iam-tsr) - \[Tiny-Agents] Use all tools unless allowed\_tools is set explicitly in [#&#8203;3397](https://redirect.github.com/huggingface/huggingface_hub/issues/3397) by [@&#8203;Mithil467](https://redirect.github.com/Mithil467) **Full Changelog**: <https://github.com/huggingface/huggingface_hub/compare/v0.35.2...v0.35.3> ### [`v0.35.2`](https://redirect.github.com/huggingface/huggingface_hub/releases/tag/v0.35.2): [v0.35.2] Welcoming Z.ai as Inference Providers! [Compare Source](https://redirect.github.com/huggingface/huggingface_hub/compare/v0.35.1...v0.35.2) **Full Changelog**: <https://github.com/huggingface/huggingface_hub/compare/v0.35.1...v0.35.2> **New inference provider! :fire:** Z.ai is now officially an Inference Provider on the Hub. See full documentation here: <https://huggingface.co/docs/inference-providers/providers/zai-org>. ```py from huggingface_hub import InferenceClient client = InferenceClient(provider="zai-org") completion = client.chat.completions.create( model="zai-org/GLM-4.5", messages=[{"role": "user", "content": "What is the capital of France?"}], ) print("\nThinking:") print(completion.choices[0].message.reasoning_content) print("\nOutput:") print(completion.choices[0].message.content) ``` ``` Thinking: Okay, the user is asking about the capital of France. That's a pretty straightforward geography question. Hmm, I wonder if this is just a casual inquiry or if they need it for something specific like homework or travel planning. The question is very basic though, so probably just general knowledge. Paris is definitely the correct answer here. It's been the capital for centuries, since the Capetian dynasty made it the seat of power. Should I mention any historical context? Nah, the user didn't ask for details - just the capital. I recall Paris is also France's largest city and major cultural hub. But again, extra info might be overkill unless they follow up. Better keep it simple and accurate. The answer should be clear and direct: "Paris". No need to overcomplicate a simple fact. If they want more, they'll ask. Output: The capital of France is **Paris**. Paris has been the political and cultural center of France for centuries, serving as the seat of government, the residence of the President (Élysée Palace), and home to iconic landmarks like the Eiffel Tower, the Louvre Museum, and Notre-Dame Cathedral. It is also France's largest city and a global hub for art, fashion, gastronomy, and history. ``` - feat: support zai as inference provider by [@&#8203;tomsun28](https://redirect.github.com/tomsun28) in [#&#8203;3395](https://redirect.github.com/huggingface/huggingface_hub/issues/3395) **Misc:** - \[HfFileSystem] Optimize maxdepth: do less /tree calls in glob() by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3389](https://redirect.github.com/huggingface/huggingface_hub/issues/3389) ### [`v0.35.1`](https://redirect.github.com/huggingface/huggingface_hub/releases/tag/v0.35.1): [v0.35.1] Do not retry on 429 and skip forward ref in strict dataclass [Compare Source](https://redirect.github.com/huggingface/huggingface_hub/compare/v0.35.0...v0.35.1) - Do not retry on 429 (only on 5xx) [#&#8203;3377](https://redirect.github.com/huggingface/huggingface_hub/pull/3377) - Skip unresolved forward ref in `strict` dataclasses [#&#8203;3376](https://redirect.github.com/huggingface/huggingface_hub/pull/3376) **Full Changelog**: <https://github.com/huggingface/huggingface_hub/compare/v0.35.0...v0.35.1> ### [`v0.35.0`](https://redirect.github.com/huggingface/huggingface_hub/releases/tag/v0.35.0): [v0.35.0] Announcing Scheduled Jobs: run cron jobs on GPU on the Hugging Face Hub! [Compare Source](https://redirect.github.com/huggingface/huggingface_hub/compare/v0.34.6...v0.35.0) #### Scheduled Jobs In [v0.34.0 release](https://redirect.github.com/huggingface/huggingface_hub/releases/tag/v0.34.0), we announced Jobs, a new way to run compute on the Hugging Face Hub. In this new release, we are announcing **Scheduled Jobs** to run Jobs on a regular basic. Think "cron jobs running on GPU". This comes with a fully-fledge CLI: ``` hf jobs scheduled run @&#8203;hourly ubuntu echo hello world hf jobs scheduled run "0 * * * *" ubuntu echo hello world hf jobs scheduled ps -a hf jobs scheduled inspect <id> hf jobs scheduled delete <id> hf jobs scheduled suspend <id> hf jobs scheduled resume <id> hf jobs scheduled uv run @&#8203;weekly train.py ``` - \[Jobs] Add scheduled jobs api by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3306](https://redirect.github.com/huggingface/huggingface_hub/issues/3306) It is now possible to run a command with `uv run`: ``` hf jobs uv run --with lighteval -s HF_TOKEN lighteval endpoint inference-providers "model_name=openai/gpt-oss-20b,provider=groq" "lighteval|gsm8k|0|0" ``` - \[Jobs] Support commands in `hf jobs uv run` by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3303](https://redirect.github.com/huggingface/huggingface_hub/issues/3303) Some other improvements have been added to the existing Jobs API for a better UX. - \[Jobs] Use current or stored token in a Job secrets by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3272](https://redirect.github.com/huggingface/huggingface_hub/issues/3272) - update uv image by [@&#8203;lhoestq](https://redirect.github.com/lhoestq) in [#&#8203;3270](https://redirect.github.com/huggingface/huggingface_hub/issues/3270) And finally, Jobs documentation has been updated with new examples (and some fixes): - Fix bash history expansion in hf jobs example by [@&#8203;nyuuzyou](https://redirect.github.com/nyuuzyou) in [#&#8203;3277](https://redirect.github.com/huggingface/huggingface_hub/issues/3277) - Add timeout info to Jobs guide docs by [@&#8203;davanstrien](https://redirect.github.com/davanstrien) in [#&#8203;3281](https://redirect.github.com/huggingface/huggingface_hub/issues/3281) - Update jobs.md by [@&#8203;tre3x](https://redirect.github.com/tre3x) in [#&#8203;3297](https://redirect.github.com/huggingface/huggingface_hub/issues/3297) - docs: Add link to uv-scripts organization in Jobs guide by [@&#8203;davanstrien](https://redirect.github.com/davanstrien) in [#&#8203;3326](https://redirect.github.com/huggingface/huggingface_hub/issues/3326) - docs: Add Docker images section for UV scripts in Jobs guide by [@&#8203;davanstrien](https://redirect.github.com/davanstrien) in [#&#8203;3327](https://redirect.github.com/huggingface/huggingface_hub/issues/3327) - docs: add link to TRL jobs training documentation by [@&#8203;davanstrien](https://redirect.github.com/davanstrien) in [#&#8203;3330](https://redirect.github.com/huggingface/huggingface_hub/issues/3330) #### CLI updates In addition to the Scheduled Jobs, some improvements have been added to the `hf` CLI. - \[CLI] print help if no command provided by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3262](https://redirect.github.com/huggingface/huggingface_hub/issues/3262) - update hf auth whoami output by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3274](https://redirect.github.com/huggingface/huggingface_hub/issues/3274) - Add 'user:' prefix to whoami command output for consistency by [@&#8203;gary149](https://redirect.github.com/gary149) in [#&#8203;3267](https://redirect.github.com/huggingface/huggingface_hub/issues/3267) - Whoami: custom message only on unauthorized by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3288](https://redirect.github.com/huggingface/huggingface_hub/issues/3288) #### Inference Providers ##### Welcome Scaleway and PublicAI! Two new partners have been integrated to Inference Providers: Scaleway and PublicAI! (as part of releases `0.34.5` and `0.34.6`). - feat: add scaleway inference provider by [@&#8203;Gnoale](https://redirect.github.com/Gnoale) in [#&#8203;3356](https://redirect.github.com/huggingface/huggingface_hub/issues/3356) - Add PublicAI provider by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3367](https://redirect.github.com/huggingface/huggingface_hub/issues/3367) ##### Image-to-video Image to video is now supported in the `InferenceClient`: ```py from huggingface_hub import InferenceClient client = InferenceClient(provider="fal-ai") video = client.image_to_video( "cat.png", prompt="The cat starts to dance", model="Wan-AI/Wan2.2-I2V-A14B", ) ``` - \[Inference] Support image to video task by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3289](https://redirect.github.com/huggingface/huggingface_hub/issues/3289) ##### Miscellaneous Header `content-type` is now correctly set when sending an image or audio request (e.g. for `image-to-image` task). It is inferred either from the filename or the URL provided by the user. If user is directly passing raw bytes, the content-type header has to be set manually. - \[InferenceClient] Add content-type header whenever possible + refacto by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3321](https://redirect.github.com/huggingface/huggingface_hub/issues/3321) A `.reasoning` field has been added to the Chat Completion output. This is used by some providers to return reasoning tokens separated from the `.content` stream of tokens. - Add reasoning field in chat completion output by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3338](https://redirect.github.com/huggingface/huggingface_hub/issues/3338) #### MCP & tiny-agents updates `tiny-agents` now handles `AGENTS.md` instruction file (see <https://agents.md/>). - allow use of AGENTS.md as well as PROMPT.md by [@&#8203;evalstate](https://redirect.github.com/evalstate) in [#&#8203;3317](https://redirect.github.com/huggingface/huggingface_hub/issues/3317) Tools filtering has already been improved to avoid loading non-relevant tools from an MCP server: - \[MCP] Handle Ollama's deviation from the OpenAI tool streaming spec by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3140](https://redirect.github.com/huggingface/huggingface_hub/issues/3140) - \[Tiny Agents] Add tools to config by [@&#8203;NielsRogge](https://redirect.github.com/NielsRogge) in [#&#8203;3242](https://redirect.github.com/huggingface/huggingface_hub/issues/3242) - fix allowed tools by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) (direct commit on main) #### 🛠️ Small fixes and maintenance ##### 🐛 Bug and typo fixes - Fix bad total size after resuming download by [@&#8203;DKingAlpha](https://redirect.github.com/DKingAlpha) in [#&#8203;3234](https://redirect.github.com/huggingface/huggingface_hub/issues/3234)) - bug fix: only extend path on window sys by [@&#8203;vealocia](https://redirect.github.com/vealocia) in [#&#8203;3265](https://redirect.github.com/huggingface/huggingface_hub/issues/3265) - \[Update] HF Jobs Documentation by [@&#8203;ariG23498](https://redirect.github.com/ariG23498) in [#&#8203;3268](https://redirect.github.com/huggingface/huggingface_hub/issues/3268) - Improve Git Credential Helper Detection for Linux (GCM & libsecret support) by [@&#8203;danchev](https://redirect.github.com/danchev) in [#&#8203;3264](https://redirect.github.com/huggingface/huggingface_hub/issues/3264) - Make requests decode content by [@&#8203;rasmusfaber](https://redirect.github.com/rasmusfaber) in [#&#8203;3271](https://redirect.github.com/huggingface/huggingface_hub/issues/3271) - Add validation warnings for repository limits in upload\_large\_folder by [@&#8203;davanstrien](https://redirect.github.com/davanstrien) in [#&#8203;3280](https://redirect.github.com/huggingface/huggingface_hub/issues/3280) - Include `HF_HUB_DISABLE_XET` in the environment dump by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3290](https://redirect.github.com/huggingface/huggingface_hub/issues/3290) - Add type to job owner by [@&#8203;drbh](https://redirect.github.com/drbh) in [#&#8203;3291](https://redirect.github.com/huggingface/huggingface_hub/issues/3291) - Update to use only summary bars for uploads when in notebooks by [@&#8203;hoytak](https://redirect.github.com/hoytak) in [#&#8203;3243](https://redirect.github.com/huggingface/huggingface_hub/issues/3243) - Deprecate library/tags/task/... filtering in list\_models by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3318](https://redirect.github.com/huggingface/huggingface_hub/issues/3318) - Added `apps` as a parameter to `HfApi.list_models` by [@&#8203;anirbanbasu](https://redirect.github.com/anirbanbasu) in [#&#8203;3322](https://redirect.github.com/huggingface/huggingface_hub/issues/3322) - Update error message to improve shell compatibility by [@&#8203;aopstudio](https://redirect.github.com/aopstudio) in [#&#8203;3333](https://redirect.github.com/huggingface/huggingface_hub/issues/3333) - docs: minor typo fix in /en/guides/manage-cache by [@&#8203;Manith-Ratnayake](https://redirect.github.com/Manith-Ratnayake) in [#&#8203;3353](https://redirect.github.com/huggingface/huggingface_hub/issues/3353) ##### 🏗️ internal - Prepare for v0.35 by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3261](https://redirect.github.com/huggingface/huggingface_hub/issues/3261) - fix-ish CI by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) (direct commit on main) - Fix lfs test in CI by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3275](https://redirect.github.com/huggingface/huggingface_hub/issues/3275) - \[Internal] Use `ty` type checker by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3294](https://redirect.github.com/huggingface/huggingface_hub/issues/3294) - \[Internal] fix `ty`check quality by [@&#8203;hanouticelina](https://redirect.github.com/hanouticelina) in [#&#8203;3320](https://redirect.github.com/huggingface/huggingface_hub/issues/3320) - Return early in `is_jsonable` if circular reference by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3348](https://redirect.github.com/huggingface/huggingface_hub/issues/3348) #### Community contributions The following contributors have made changes to the library over the last release. Thank you! - [@&#8203;DKingAlpha](https://redirect.github.com/DKingAlpha) - Fix bad total size after resuming download ([#&#8203;3234](https://redirect.github.com/huggingface/huggingface_hub/issues/3234)) ([#&#8203;3248](https://redirect.github.com/huggingface/huggingface_hub/issues/3248)) - [@&#8203;vealocia](https://redirect.github.com/vealocia) - bug fix: only extend path on window sys ([#&#8203;3265](https://redirect.github.com/huggingface/huggingface_hub/issues/3265)) - [@&#8203;danchev](https://redirect.github.com/danchev) - Improve Git Credential Helper Detection for Linux (GCM & libsecret support) ([#&#8203;3264](https://redirect.github.com/huggingface/huggingface_hub/issues/3264)) - [@&#8203;rasmusfaber](https://redirect.github.com/rasmusfaber) - Make requests decode content ([#&#8203;3271](https://redirect.github.com/huggingface/huggingface_hub/issues/3271)) - [@&#8203;nyuuzyou](https://redirect.github.com/nyuuzyou) - Fix bash history expansion in hf jobs example ([#&#8203;3277](https://redirect.github.com/huggingface/huggingface_hub/issues/3277)) - [@&#8203;tre3x](https://redirect.github.com/tre3x) - Update jobs.md ([#&#8203;3297](https://redirect.github.com/huggingface/huggingface_hub/issues/3297)) - [@&#8203;hoytak](https://redirect.github.com/hoytak) - Update to use only summary bars for uploads when in notebooks ([#&#8203;3243](https://redirect.github.com/huggingface/huggingface_hub/issues/3243)) - [@&#8203;anirbanbasu](https://redirect.github.com/anirbanbasu) - Added `apps` as a parameter to `HfApi.list_models` ([#&#8203;3322](https://redirect.github.com/huggingface/huggingface_hub/issues/3322)) - [@&#8203;aopstudio](https://redirect.github.com/aopstudio) - Update error message to improve shell compatibility ([#&#8203;3333](https://redirect.github.com/huggingface/huggingface_hub/issues/3333)) - [@&#8203;Manith-Ratnayake](https://redirect.github.com/Manith-Ratnayake) - docs: minor typo fix in /en/guides/manage-cache ([#&#8203;3353](https://redirect.github.com/huggingface/huggingface_hub/issues/3353)) - [@&#8203;Gnoale](https://redirect.github.com/Gnoale) - feat: add scaleway inference provider ([#&#8203;3356](https://redirect.github.com/huggingface/huggingface_hub/issues/3356)) ### [`v0.34.6`](https://redirect.github.com/huggingface/huggingface_hub/releases/tag/v0.34.6): [v0.34.6]: Welcoming PublicAI as Inference Providers! [Compare Source](https://redirect.github.com/huggingface/huggingface_hub/compare/v0.34.5...v0.34.6) **Full Changelog**: <https://github.com/huggingface/huggingface_hub/compare/v0.34.5...v0.34.6> #### ⚡ New provider: PublicAI > \[!Tip] > All supported PublicAI models can be found [here](https://huggingface.co/models?inference_provider=publicai\&sort=trending). Public AI Inference Utility is a nonprofit, open-source project building products and organizing advocacy to support the work of public AI model builders like the Swiss AI Initiative, AI Singapore, AI Sweden, and the Barcelona Supercomputing Center. Think of a BBC for AI, a public utility for AI, or public libraries for AI. ```python from huggingface_hub import InferenceClient client = InferenceClient(provider="publicai") completion = client.chat.completions.create( model="swiss-ai/Apertus-70B-Instruct-2509", messages=[{"role": "user", "content": "What is the capital of Switzerland?"}], ) print(completion.choices[0].message.content) ``` - Add PublicAI provider by [@&#8203;Wauplin](https://redirect.github.com/Wauplin) in [#&#8203;3367](https://redirect.github.com/huggingface/huggingface_hub/issues/3367) ### [`v0.34.5`](https://redirect.github.com/huggingface/huggingface_hub/releases/tag/v0.34.5): [v0.34.5]: Welcoming Scaleway as Inference Providers! [Compare Source](https://redirect.github.com/huggingface/huggingface_hub/compare/v0.34.4...v0.34.5) **Full Changelog**: <https://github.com/huggingface/huggingface_hub/compare/v0.34.4...v0.34.5> #### ⚡ New provider: Scaleway > \[!Tip] > All supported Scaleway models can be found [here](https://huggingface.co/models?inference_provider=scaleway\&sort=trending). For more details, check out its [documentation page](https://huggingface.co/docs/inference-providers/providers/scaleway). Scaleway is a European cloud provider, serving latest LLM models through its Generative APIs alongside a complete cloud ecosystem. ```python from huggingface_hub import InferenceClient client = InferenceClient(provider="scaleway") completion = client.chat.completions.create( model="Qwen/Qwen3-235B-A22B-Instruct-2507", messages=[ { "role": "user", "content": "What is the capital of France?" } ], ) print(completion.choices[0].message) ``` - feat: add scaleway inference provider by [@&#8203;Gnoale](https://redirect.github.com/Gnoale) in [#&#8203;1925](https://redirect.github.com/huggingface/huggingface_hub/issues/1925) </details> <details> <summary>locustio/locust (locust)</summary> ### [`v2.43.1`](https://redirect.github.com/locustio/locust/blob/HEAD/CHANGELOG.md#2431-2026-01-12) [Compare Source](https://redirect.github.com/locustio/locust/compare/2.43.0...2.43.1) [Full Changelog](https://redirect.github.com/locustio/locust/compare/2.43.0...2.43.1) **Merged pull requests:** - Bump packages [#&#8203;3331](https://redirect.github.com/locustio/locust/pull/3331) ([andrewbaldwin44](https://redirect.github.com/andrewbaldwin44)) - Stabilize tests [#&#8203;3326](https://redirect.github.com/locustio/locust/pull/3326) ([amadeuppereira](https://redirect.github.com/amadeuppereira)) - Stabilize tests [#&#8203;3325](https://redirect.github.com/locustio/locust/pull/3325) ([amadeuppereira](https://redirect.github.com/amadeuppereira)) - Bump [@&#8203;emotion/styled](https://redirect.github.com/emotion/styled) from 11.14.0 to 11.14.1 in /locust/webui in the emotion group [#&#8203;3322](https://redirect.github.com/locustio/locust/pull/3322) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - Bump the eslint group in /locust/webui with 5 updates [#&#8203;3319](https://redirect.github.com/locustio/locust/pull/3319) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - Bump the all\_dependencies group with 2 updates [#&#8203;3318](https://redirect.github.com/locustio/locust/pull/3318) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) ### [`v2.43.0`](https://redirect.github.com/locustio/locust/blob/HEAD/CHANGELOG.md#2430-2025-12-30) [Compare Source](https://redirect.github.com/locustio/locust/compare/2.42.6...2.43.0) [Full Changelog](https://redirect.github.com/locustio/locust/compare/2.42.6...2.43.0) **Closed issues:** - Support for requests >=2.32.5 (compatibility with LangChain/AI ecosystem) [#&#8203;3307](https://redirect.github.com/locustio/locust/issues/3307) - Multiple select in web UI for custom arguments [#&#8203;3260](https://redirect.github.com/locustio/locust/issues/3260) - Suggestion to Add "iter\_lines" Support for "FastHttpUser" in Locust [#&#8203;3018](https://redirect.github.com/locustio/locust/issues/3018) **Merged pull requests:** - Provide a better error message when spawn rate is set to zero [#&#8203;3317](https://redirect.github.com/locustio/locust/pull/3317) ([amadeuppereira](https://redirect.github.com/amadeuppereira)) - Support requests>=2.32.5, reimplement the fix previously there for only loading ssl certificates once [#&#8203;3316](https://redirect.github.com/locustio/locust/pull/3316) ([amadeuppereira](https://redirect.github.com/amadeuppereira)) - Remove references to locust.cloud now that it is shutting down [#&#8203;3314](https://redirect.github.com/locustio/locust/pull/3314) ([amadeuppereira](https://redirect.github.com/amadeuppereira)) - Allow users to stop test run by raising StopTest, use it on missing host in locustfile (and no --host param) [#&#8203;3313](https://redirect.github.com/locustio/locust/pull/3313) ([amadeuppereira](https://redirect.github.com/amadeuppereira)) - Locust Cloud demo tab: update domain from auth.locust.cloud to app.locust.cloud [#&#8203;3312](https://redirect.github.com/locustio/locust/pull/3312) ([andrewbaldwin44](https://redirect.github.com/andrewbaldwin44)) - Solving the iter\_lines problem [#&#8203;3311](https://redirect.github.com/locustio/locust/pull/3311) ([MasterKey-Pro](https://redirect.github.com/MasterKey-Pro)) - Refactor parse\_options [#&#8203;3310](https://redirect.github.com/locustio/locust/pull/3310) ([andrewbaldwin44](https://redirect.github.com/andrewbaldwin44)) - Capture stacktrace on KeyboardInterrupt on greenlets [#&#8203;3306](https://redirect.github.com/locustio/locust/pull/3306) ([amadeuppereira](https://redirect.github.com/amadeuppereira)) - Bump js-yaml from 4.1.0 to 4.1.1 in /locust/webui [#&#8203;3305](https://redirect.github.com/locustio/locust/pull/3305) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - Bump glob from 10.4.5 to 10.5.0 in /locust/webui [#&#8203;3304](https://redirect.github.com/locustio/locust/pull/3304) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) </details> <details> <summary>numpy/numpy (numpy)</summary> ### [`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 pas </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 9am on tuesday" (UTC), 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. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- 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/immich-app/immich). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhbmdlbG9nOnNraXAiLCJkZXBlbmRlbmNpZXMiLCJyZW5vdmF0ZSJdfQ==--> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
OVERLORD added the pull-request label 2026-02-05 16:31:56 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#18058