mirror of
https://github.com/langchain-ai/langchain.git
synced 2026-10-05 09:25:14 +03:00
master
102
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
e2db474707 |
release(text-splitters): 1.1.3 (#41001)
Bump `langchain-text-splitters` from 1.1.2 to 1.1.3. Changes since [1.1.2](https://github.com/langchain-ai/langchain/releases/tag/langchain-text-splitters%3D%3D1.1.2) are itemized below; dependency bumps and lockfile-only updates are excluded. ### Fixes - Restore lazy imports for heavy optional dependencies, with import-isolation and missing-dependency regression coverage ([#35469](https://github.com/langchain-ai/langchain/pull/35469)). - Raise a descriptive `TypeError` for unsupported `RecursiveJsonSplitter` inputs rather than silently returning an empty result; top-level lists require `convert_lists=True`, while `None` still returns `[]` ([#39238](https://github.com/langchain-ai/langchain/pull/39238)). - Remove invalid or duplicate Kotlin, Rust, and Haskell separators ([#37039](https://github.com/langchain-ai/langchain/pull/37039)). - Remove incorrect C# `implements` and Elixir `while` separators ([#37037](https://github.com/langchain-ai/langchain/pull/37037)). - Avoid `None` metadata keys when `ExperimentalMarkdownSyntaxTextSplitter` has no header mapping ([#34545](https://github.com/langchain-ai/langchain/pull/34545)). - Clarify the existing `HTMLHeaderTextSplitter.split_text_from_url` deprecation warning: fetch HTML separately and use `split_text` ([#37164](https://github.com/langchain-ai/langchain/pull/37164)). ### Tooling, packaging, and documentation - Replace `mypy` with `ty` and refactor tokenizer/HTML helpers. Also fix `SentenceTransformersTokenTextSplitter` for models without a maximum token limit: honor explicit `tokens_per_chunk`, or raise a clear `ValueError` when omitted. Correct the GPT-4.1-mini encoding expectation to `o200k_base` ([#38658](https://github.com/langchain-ai/langchain/pull/38658)). - Update the token-splitter integration-test model from GPT-3.5 Turbo to GPT-4.1-mini ([#38042](https://github.com/langchain-ai/langchain/pull/38042)). - Tighten tokenizer/spaCy annotations and replace deprecated `load_module()` in the import-check script with module-spec loading ([#40085](https://github.com/langchain-ai/langchain/pull/40085), non-dependency changes only). - Document existing support for `None` Markdown header names with a targeted type-checker suppression; no runtime change ([#40566](https://github.com/langchain-ai/langchain/pull/40566), non-dependency change only). ## References - Slack thread: https://langchain.slack.com/archives/C0C5950ARJT/p1790955367956069 Made by [Open SWE](https://github.com/langchain-ai/open-swe) · [view thread](https://openswe.langchain.dev/agents/aadecb8c-db4f-537a-a174-fe630f165f81) · openai:gpt-6-astra (medium) Co-authored-by: Mason Daugherty <mdrxy@users.noreply.github.com> Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com> |
||
|
|
c4c57d35bf |
chore: bump the major group across 2 directories with 2 updates (#39864)
Bumps the major group with 1 update in the /libs/standard-tests directory: [pytest-codspeed](https://github.com/CodSpeedHQ/pytest-codspeed). Bumps the major group with 1 update in the /libs/text-splitters directory: [sentence-transformers](https://github.com/huggingface/sentence-transformers). Updates `pytest-codspeed` from 4.3.0 to 5.0.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/CodSpeedHQ/pytest-codspeed/releases">pytest-codspeed's releases</a>.</em></p> <blockquote> <h2>v5.0.3</h2> <h2>What's Changed</h2> <ul> <li>chore: move callgrind skip obj API to instrument-hooks by <a href="https://github.com/not-matthias"><code>@not-matthias</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/123">CodSpeedHQ/pytest-codspeed#123</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.2...v5.0.3">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.2...v5.0.3</a></p> <h2>v5.0.2</h2> <h2>What's Changed</h2> <ul> <li>feat: skip Python runtime objects in callgrind by <a href="https://github.com/not-matthias"><code>@not-matthias</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/122">CodSpeedHQ/pytest-codspeed#122</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.1...v5.0.2">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.1...v5.0.2</a></p> <h2>v5.0.1</h2> <h2>What's Changed</h2> <ul> <li>build: enable free-threaded wheels in cibuildwheel by <a href="https://github.com/art049"><code>@art049</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/121">CodSpeedHQ/pytest-codspeed#121</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.0...v5.0.1">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v5.0.0...v5.0.1</a></p> <h2>v5.0.0</h2> <h2>Highlights</h2> <p>MacOS walltime profiling is now available with the <a href="https://github.com/CodSpeedHQ/codspeed/releases/tag/v4.16.1">codspeed cli v4.16.1</a> and above.</p> <p><code>pytest-codspeed</code> can now be used in free threaded mode. This has been tested with 3.14t and 3.15t. For this, we have dropped usage of <code>cffi</code> in favor of the native extension support.</p> <h2>What's Changed</h2> <ul> <li>chore: bump instrument-hooks by <a href="https://github.com/not-matthias"><code>@not-matthias</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/119">CodSpeedHQ/pytest-codspeed#119</a></li> <li>Remove CFFI in favor of native extension to support free-threaded mode by <a href="https://github.com/adriencaccia"><code>@adriencaccia</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/96">CodSpeedHQ/pytest-codspeed#96</a></li> <li>feat(hooks): declare native extension free-thread safe by <a href="https://github.com/art049"><code>@art049</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/120">CodSpeedHQ/pytest-codspeed#120</a></li> <li>feat: use instrument-hook markers in walltime by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/118">CodSpeedHQ/pytest-codspeed#118</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.5.0...v5.0.0">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.5.0...v5.0.0</a></p> <h2>v4.5.0</h2> <h2>What's Changed</h2> <p>This release adds first support for macOS walltime.</p> <p>Please note that profiling and other instruments are not yet available on macOS and will come in a later update.</p> <ul> <li>Support macos walltime without profiling in pytest-codspeed by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/117">CodSpeedHQ/pytest-codspeed#117</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.4.0...v4.5.0">https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.4.0...v4.5.0</a></p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/CodSpeedHQ/pytest-codspeed/blob/master/CHANGELOG.md">pytest-codspeed's changelog</a>.</em></p> <blockquote> <h2>[5.0.3] - 2026-05-22</h2> <h3><!-- raw HTML omitted -->🏗️ Refactor</h3> <ul> <li>Use instrument_hooks_callgrind_add_obj_skip from C API by <a href="https://github.com/not-matthias"><code>@not-matthias</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/123">#123</a></li> </ul> <h2>[5.0.2] - 2026-05-14</h2> <h3><!-- raw HTML omitted -->🚀 Features</h3> <ul> <li>Skip Python runtime objects in callgrind by <a href="https://github.com/not-matthias"><code>@not-matthias</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/122">#122</a></li> </ul> <h2>[5.0.1] - 2026-05-13</h2> <h3><!-- raw HTML omitted -->💼 Other</h3> <ul> <li>Enable free-threaded wheels in cibuildwheel (<a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/issues/121">#121</a>) by <a href="https://github.com/art049"><code>@art049</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/121">#121</a></li> </ul> <h2>[5.0.0] - 2026-05-13</h2> <h3><!-- raw HTML omitted -->🚀 Features</h3> <ul> <li>Use instrument_hooks markers in walltime by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a></li> <li>Declare native extension free-thread safe (<a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/issues/120">#120</a>) by <a href="https://github.com/art049"><code>@art049</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/120">#120</a></li> <li>Remove cffi in favor of native extension by <a href="https://github.com/adriencaccia"><code>@adriencaccia</code></a></li> </ul> <h3><!-- raw HTML omitted -->⚡ Performance</h3> <ul> <li>Bind callgrind start/stop directly to avoid extra frame by <a href="https://github.com/art049"><code>@art049</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/96">#96</a></li> </ul> <h3><!-- raw HTML omitted -->⚙️ Internals</h3> <ul> <li>Ignore common compilation warnings for instrument-hooks by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/118">#118</a></li> <li>Use unsigned bash in the macos test by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a></li> <li>Bump pinned uv version to 0.11.14 by <a href="https://github.com/art049"><code>@art049</code></a></li> <li>Add python 3.15 and 3.15t to test matrix by <a href="https://github.com/art049"><code>@art049</code></a></li> <li>Add 3.14.t in test suite by <a href="https://github.com/adriencaccia"><code>@adriencaccia</code></a></li> <li>Bump instrument-hooks (<a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/issues/119">#119</a>) by <a href="https://github.com/not-matthias"><code>@not-matthias</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/119">#119</a></li> </ul> <h2>[4.5.0] - 2026-04-28</h2> <h3><!-- raw HTML omitted -->⚙️ Internals</h3> <ul> <li>Pre-build macos binary by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/117">#117</a></li> <li>Bump instrument-hooks submodule to use int32_t as pid by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a></li> <li>Add macos integration test by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a></li> </ul> <h2>[4.4.0] - 2026-04-14</h2> <h3><!-- raw HTML omitted -->🚀 Features</h3> <ul> <li>Collect Python toolchain information via instrument hooks environment API by <a href="https://github.com/GuillaumeLagrange"><code>@GuillaumeLagrange</code></a> in <a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/pull/108">#108</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/b2d12d8e96704c82b449d8668818a754ede45c66"><code>b2d12d8</code></a> Release v5.0.3 🚀</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/31447b7b6fba4ff9a5bdf5c0d046b7d8936cab5c"><code>31447b7</code></a> refactor: use instrument_hooks_callgrind_add_obj_skip from C API</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/fc33d2098d7a1296b320b30e9ed14c270ab714b8"><code>fc33d20</code></a> Release v5.0.2 🚀</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/3bbabe482458518555fa9939902410ae8cf1baa8"><code>3bbabe4</code></a> feat: skip Python runtime objects in callgrind</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/d4d9dc6ca011bbf6d21640e7c370d3d181f944cf"><code>d4d9dc6</code></a> Release v5.0.1 🚀</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/ad709a5904ea756c577dcfa91caff67c3cf8777a"><code>ad709a5</code></a> build: enable free-threaded wheels in cibuildwheel (<a href="https://redirect.github.com/CodSpeedHQ/pytest-codspeed/issues/121">#121</a>)</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/080d620ba846adaf6e1b70b96e525e773438034b"><code>080d620</code></a> Release v5.0.0 🚀</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/befdebfba2cdebddd84d6377f8d14d72e0ad4086"><code>befdebf</code></a> chore: ignore common compilation warnings for instrument-hooks</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/ee98055fb69fba4cc62c3822ef3df4c7002352d3"><code>ee98055</code></a> chore: use unsigned bash in the macos test</li> <li><a href="https://github.com/CodSpeedHQ/pytest-codspeed/commit/5a205c8822ca16db400ef25a5d8b51a65c875669"><code>5a205c8</code></a> feat: use instrument_hooks markers in walltime</li> <li>Additional commits viewable in <a href="https://github.com/CodSpeedHQ/pytest-codspeed/compare/v4.3.0...v5.0.3">compare view</a></li> </ul> </details> <br /> Updates `sentence-transformers` from 5.6.1 to 6.0.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/huggingface/sentence-transformers/releases">sentence-transformers's releases</a>.</em></p> <blockquote> <h2>v6.0.0 - MultiVectorEncoder for ColBERT & late interaction models, transformers v5, float32 scoring, faster training & encoding</h2> <p>This major release introduces Multi-Vector Embedding models, also known as late interaction or ColBERT-style models, as a fourth model type alongside <code>SentenceTransformer</code>, <code>CrossEncoder</code>, and <code>SparseEncoder</code>. Going forward, you'll be able to use Sentence Transformers for training, inferencing, and interpreting Multi-Vector Embedding models.</p> <p>It also modernizes the dependency floors to <code>transformers</code> v5, fixes a class of silent scoring bugs caused by half precision, and speeds up both training and encoding.</p> <p>Install this version with</p> <pre lang="bash"><code># Training + Inference pip install sentence-transformers[train]==6.0.0 <h1>Inference only, use one of:</h1> <p>pip install sentence-transformers==6.0.0 pip install sentence-transformers[onnx-gpu]==6.0.0 pip install sentence-transformers[onnx]==6.0.0 pip install sentence-transformers[openvino]==6.0.0</p> <h1>Multimodal dependencies (optional):</h1> <p>pip install sentence-transformers[image]==6.0.0 pip install sentence-transformers[audio]==6.0.0 pip install sentence-transformers[video]==6.0.0</p> <h1>Or combine as needed:</h1> <p>pip install sentence-transformers[train,onnx,image]==6.0.0 </code></pre></p> <blockquote> <p>[!TIP] Our <a href="https://huggingface.co/blog/multi-vector-encoder">Multi-Vector (Late Interaction) Embedding Models with Sentence Transformers blogpost</a> is an excellent place to learn about multi-vector models: loading the various checkpoint formats, encoding and scoring, plugging them into a search stack, running them on page images, and keeping the index affordable.</p> </blockquote> <blockquote> <p>[!WARNING] This is a major release with breaking changes. Upgrading from v5.x to v6.0 may require code updates. The changes marked 🚨 below are the ones most likely to affect you, and the <a href="https://sbert.net/docs/migration_guide.html">Migration Guide</a> has the full list. If you run into issues when upgrading, feel free to open <a href="https://github.com/huggingface/sentence-transformers/issues/new">an issue</a>.</p> </blockquote> <h2>MultiVectorEncoder: ColBERT-style late interaction models (<a href="https://redirect.github.com/huggingface/sentence-transformers/issues/3794">#3794</a>)</h2> <p>Sentence Transformers v6.0 introduces <code>MultiVectorEncoder</code>, for ColBERT-style late interaction retrieval. Where a regular embedding model compresses a whole text into one vector, a multi-vector model keeps <strong>one vector per token</strong> and scores query against document with the MaxSim operator. That preserves token-level matching information that a single vector has to average away, which usually means stronger retrieval at the cost of a bigger index. It is also the state of the art for visual document retrieval, where a text query is matched against page images directly, with no OCR step in between.</p> <p>Any <a href="https://github.com/lightonai/pylate">PyLate</a> checkpoint and any <a href="https://github.com/stanford-futuredata/ColBERT">Stanford-NLP ColBERT</a> checkpoint loads straight into it, and <a href="https://github.com/illuin-tech/colpali">colpali-engine</a> models for visual document retrieval work too, through the same familiar API you already use for dense, sparse, and reranker models.</p> <pre lang="python"><code>from sentence_transformers import MultiVectorEncoder <h1>Download from the 🤗 Hub</h1> <p>model = MultiVectorEncoder("lightonai/LateOn")</p> <p>query_embeddings = model.encode_query(["Which planet is known as the Red Planet?"]) document_embeddings = model.encode_document([ "Venus is often called Earth's twin because of its similar size and proximity.", "Mars, known for its reddish appearance, is often referred to as the Red Planet.", "Jupiter, the largest planet in our solar system, has a prominent red spot.", "Saturn, famous for its rings, is sometimes mistaken for the Red Planet.", </tr></table> </code></pre></p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/huggingface/sentence-transformers/commit/56c9548fd8dbef8ba492f57ac04366900e36f5d4"><code>56c9548</code></a> [<code>docs</code>] Remove revision from EVIE now that it's integrated (<a href="https://redirect.github.com/huggingface/sentence-transformers/issues/3951">#3951</a>)</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/aa791ebd6dc9273f6bd4537b4f3a985b8262c6c7"><code>aa791eb</code></a> Release v6.0.0</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/8b332d13155132c8c84d8b1a0c6f252503e6e818"><code>8b332d1</code></a> tests: Fix the pretrained MultiVectorEncoder tests for device tensors and Hub...</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/a03cfd60531eb1f67875208ff3fe3a551e6d3cb8"><code>a03cfd6</code></a> docs: Point cross-references at their documented targets (<a href="https://redirect.github.com/huggingface/sentence-transformers/issues/3947">#3947</a>)</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/310ed7bee7b7a421e0555b4e1356a0816e35b3ec"><code>310ed7b</code></a> docs: Rank the pretrained MultiVectorEncoder models by NanoBEIR and NanoViDoR...</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/345c53844c069d791c7d78eb344bc64c5d45794b"><code>345c538</code></a> Speed up multi-vector padding and numpy to tensor conversion (<a href="https://redirect.github.com/huggingface/sentence-transformers/issues/3942">#3942</a>)</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/8d62fa21bebc70ef6d5bf019024da9dfc858fd4d"><code>8d62fa2</code></a> [<code>v6</code>] Return tensors on the model device from MultiVectorEncoder encoding (#...</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/8a73e35a5ef98730e086d6e2275835b5ed36344e"><code>8a73e35</code></a> [<code>v6</code>] Keep the prompt-excluded mask out of the feature dicts (<a href="https://redirect.github.com/huggingface/sentence-transformers/issues/3944">#3944</a>)</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/c8d2c0c370f0d2993e3574a5e9d1bc4333cdcdcb"><code>c8d2c0c</code></a> [<code>v6</code>] Extend the merged column forward to the SentenceTransformer losses (<a href="https://redirect.github.com/huggingface/sentence-transformers/issues/3">#3</a>...</li> <li><a href="https://github.com/huggingface/sentence-transformers/commit/adc09fca3889c581df8c9f3195a2a7ceccfe2828"><code>adc09fc</code></a> [<code>v6</code>] Fix XTR input validation, padding masks, and integer embedding support...</li> <li>Additional commits viewable in <a href="https://github.com/huggingface/sentence-transformers/compare/v5.6.1...v6.0.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
37205e51bc |
chore: bump the minor-and-patch group across 3 directories with 7 updates (#39187)
Bumps the minor-and-patch group with 4 updates in the /libs/model-profiles directory: [typing-extensions](https://github.com/python/typing_extensions), [syrupy](https://github.com/syrupy-project/syrupy), [ruff](https://github.com/astral-sh/ruff) and [mypy](https://github.com/python/mypy). Bumps the minor-and-patch group with 4 updates in the /libs/standard-tests directory: [typing-extensions](https://github.com/python/typing_extensions), [syrupy](https://github.com/syrupy-project/syrupy), [ruff](https://github.com/astral-sh/ruff) and [mypy](https://github.com/python/mypy). Bumps the minor-and-patch group with 5 updates in the /libs/text-splitters directory: | Package | From | To | | --- | --- | --- | | [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` | | [ruff](https://github.com/astral-sh/ruff) | `0.15.20` | `0.16.0` | | [ty](https://github.com/astral-sh/ty) | `0.0.56` | `0.0.64` | | [transformers](https://github.com/huggingface/transformers) | `5.12.1` | `5.14.1` | | [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.6.0` | `5.6.1` | Updates `typing-extensions` from 4.15.0 to 4.16.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/python/typing_extensions/releases">typing-extensions's releases</a>.</em></p> <blockquote> <h2>4.16.0</h2> <p>No changes since 4.16.0rc2.</p> <p>Changes since 4.15.0:</p> <ul> <li>Make <code>typing_extensions.TypeAliasType</code>'s <code>__module__</code> attribute writable. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li> <li>Fix setting of <code>__required_keys__</code> and <code>__optional_keys__</code> when inheriting keys with the same name.</li> <li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>, <code>io.Writer</code> and <code>os.PathLike</code> protocols as bases for other protocols.</li> <li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant that calling <code>isinstance</code> with <code>typing_extensions.Concatenate[...]</code> or <code>typing_extensions.Unpack[...]</code> as the first argument could have a different result in some situations depending on whether or not a profiling function had been set using <code>sys.setprofile</code>. This affected both CPython and PyPy implementations. Patch by Brian Schubert.</li> <li>Fix <code>__init_subclass__()</code> behavior in the presence of multiple inheritance involving an <code>@deprecated</code>-decorated base class. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/138210">#138210</a> by Brian Schubert.</li> <li>Raise <code>TypeError</code> when attempting to subclass <code>typing_extensions.ParamSpec</code> on Python 3.9. The <code>typing</code> implementation has always raised an error, and the <code>typing_extensions</code> implementation has raised an error on Python 3.10+ since <code>typing_extensions</code> v4.6.0. Patch by Brian Schubert.</li> <li>Add the <code>bound</code>, <code>covariant</code>, <code>contravariant</code>, and <code>infer_variance</code> parameters to <code>TypeVarTuple</code>.</li> <li>Officially support the <code>bound</code>, <code>covariant</code>, <code>contravariant</code> and <code>infer_variance</code> parameters to <code>ParamSpec</code>. Improve the validation of these parameters at runtime.</li> <li>Rename <code>typing_extensions.Sentinel</code> to <code>typing_extensions.sentinel</code>, following the name that has been adopted for <code>builtins.sentinel</code> on Python 3.15. <code>typing_extensions.Sentinel</code> is retained as a soft-deprecated alias for backwards compatibility.</li> <li>Add support for pickling sentinels.</li> <li>Sentinels now preserve their identity when copied or deep-copied.</li> <li>Deprecate passing <code>name</code> as a keyword argument or <code>repr</code> as a positional argument to the <code>sentinel</code> constructor.</li> <li>The default repr of a sentinel <code>X = sentinel("X")</code> is now <code>X</code> rather than <code><X></code>.</li> <li>Deprecate arbitrary attribute assignments to sentinels.</li> <li>Deprecate subclassing sentinels.</li> <li>Add support for Python 3.15.</li> <li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code> is applied to a coroutine function on Python 3.14.0.</li> </ul> <h2>4.16.0rc2</h2> <p>Changes since 4.16.0rc1:</p> <ul> <li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code> is applied to a coroutine function on Python 3.14.0.</li> </ul> <p>Changes since 4.15.0:</p> <ul> <li>Make <code>typing_extensions.TypeAliasType</code>'s <code>__module__</code> attribute writable. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li> <li>Fix setting of <code>__required_keys__</code> and <code>__optional_keys__</code> when inheriting keys with the same name.</li> <li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>, <code>io.Writer</code> and <code>os.PathLike</code> protocols as bases for other protocols.</li> <li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant that calling <code>isinstance</code> with <code>typing_extensions.Concatenate[...]</code> or <code>typing_extensions.Unpack[...]</code> as the first argument could have a different result in some situations depending on whether or not a profiling function had been set using <code>sys.setprofile</code>. This affected both CPython and PyPy implementations. Patch by Brian Schubert.</li> <li>Fix <code>__init_subclass__()</code> behavior in the presence of multiple inheritance involving an <code>@deprecated</code>-decorated base class. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/138210">#138210</a> by Brian Schubert.</li> <li>Raise <code>TypeError</code> when attempting to subclass <code>typing_extensions.ParamSpec</code> on Python 3.9. The <code>typing</code> implementation has always raised an error, and the <code>typing_extensions</code> implementation has raised an error on Python 3.10+ since <code>typing_extensions</code> v4.6.0. Patch by Brian Schubert.</li> <li>Add the <code>bound</code>, <code>covariant</code>, <code>contravariant</code>, and <code>infer_variance</code> parameters to <code>TypeVarTuple</code>.</li> <li>Officially support the <code>bound</code>, <code>covariant</code>, <code>contravariant</code> and <code>infer_variance</code> parameters to <code>ParamSpec</code>. Improve the validation of these parameters at runtime.</li> <li>Rename <code>typing_extensions.Sentinel</code> to <code>typing_extensions.sentinel</code>, following the name that has been adopted for <code>builtins.sentinel</code> on Python 3.15. <code>typing_extensions.Sentinel</code> is retained as a soft-deprecated alias for backwards compatibility.</li> <li>Add support for pickling sentinels.</li> <li>Sentinels now preserve their identity when copied or deep-copied.</li> <li>Deprecate passing <code>name</code> as a keyword argument or <code>repr</code> as a positional argument to the <code>sentinel</code> constructor.</li> <li>The default repr of a sentinel <code>X = sentinel("X")</code> is now <code>X</code> rather than <code><X></code>.</li> <li>Deprecate arbitrary attribute assignments to sentinels.</li> <li>Deprecate subclassing sentinels.</li> <li>Add support for Python 3.15.</li> </ul> <h2>4.16.0rc1</h2> <ul> <li>Make <code>typing_extensions.TypeAliasType</code>'s <code>__module__</code> attribute writable. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li> <li>Fix setting of <code>__required_keys__</code> and <code>__optional_keys__</code> when inheriting keys with the same name.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/typing_extensions/blob/main/CHANGELOG.md">typing-extensions's changelog</a>.</em></p> <blockquote> <h1>Release 4.16.0 (July 2, 2025)</h1> <p>No user-facing changes since 4.16.0rc2.</p> <h1>Release 4.16.0rc2 (June 25, 2026)</h1> <ul> <li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code> is applied to a coroutine function on Python 3.14.0.</li> </ul> <h1>Release 4.16.0rc1 (June 24, 2026)</h1> <ul> <li>Make <code>typing_extensions.TypeAliasType</code>'s <code>__module__</code> attribute writable. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li> <li>Fix setting of <code>__required_keys__</code> and <code>__optional_keys__</code> when inheriting keys with the same name.</li> <li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>, <code>io.Writer</code> and <code>os.PathLike</code> protocols as bases for other protocols.</li> <li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant that calling <code>isinstance</code> with <code>typing_extensions.Concatenate[...]</code> or <code>typing_extensions.Unpack[...]</code> as the first argument could have a different result in some situations depending on whether or not a profiling function had been set using <code>sys.setprofile</code>. This affected both CPython and PyPy implementations. Patch by Brian Schubert.</li> <li>Fix <code>__init_subclass__()</code> behavior in the presence of multiple inheritance involving an <code>@deprecated</code>-decorated base class. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/138210">#138210</a> by Brian Schubert.</li> <li>Raise <code>TypeError</code> when attempting to subclass <code>typing_extensions.ParamSpec</code> on Python 3.9. The <code>typing</code> implementation has always raised an error, and the <code>typing_extensions</code> implementation has raised an error on Python 3.10+ since <code>typing_extensions</code> v4.6.0. Patch by Brian Schubert.</li> <li>Add the <code>bound</code>, <code>covariant</code>, <code>contravariant</code>, and <code>infer_variance</code> parameters to <code>TypeVarTuple</code>.</li> <li>Officially support the <code>bound</code>, <code>covariant</code>, <code>contravariant</code> and <code>infer_variance</code> parameters to <code>ParamSpec</code>. Improve the validation of these parameters at runtime.</li> <li>Rename <code>typing_extensions.Sentinel</code> to <code>typing_extensions.sentinel</code>, following the name that has been adopted for <code>builtins.sentinel</code> on Python 3.15. <code>typing_extensions.Sentinel</code> is retained as a soft-deprecated alias for backwards compatibility.</li> <li>Add support for pickling sentinels.</li> <li>Sentinels now preserve their identity when copied or deep-copied.</li> <li>Deprecate passing <code>name</code> as a keyword argument or <code>repr</code> as a positional argument to the <code>sentinel</code> constructor.</li> <li>The default repr of a sentinel <code>X = sentinel("X")</code> is now <code>X</code> rather than <code><X></code>.</li> <li>Deprecate arbitrary attribute assignments to sentinels.</li> <li>Deprecate subclassing sentinels.</li> <li>Add support for Python 3.15.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/typing_extensions/commit/f29cd28d8ed7642cafb1d18daf5aa41be6a5c0aa"><code>f29cd28</code></a> Prepare relase 4.16.0 (<a href="https://redirect.github.com/python/typing_extensions/issues/774">#774</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/43174610ec0c407ce05ad750077c4e62b9192b2b"><code>4317461</code></a> Bump version to 4.16.0rc2.dev (<a href="https://redirect.github.com/python/typing_extensions/issues/772">#772</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/4f71098e5be84798d36416bbca0e776223ee40f9"><code>4f71098</code></a> Prepare release 4.16.0rc2 (<a href="https://redirect.github.com/python/typing_extensions/issues/771">#771</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/37ed08a11f3b7c05234f8963ab97e3ebdbdc16a2"><code>37ed08a</code></a> Remove use of <code>asyncio.coroutines.iscoroutinefunction()</code> (<a href="https://redirect.github.com/python/typing_extensions/issues/769">#769</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/8dcc5594cbe5a4e348245fea6ce160ce93ed6601"><code>8dcc559</code></a> Improve <code>TypedDict</code> documentation (<a href="https://redirect.github.com/python/typing_extensions/issues/770">#770</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/224f8d50551d26f0d603093596c3a47a7302a46f"><code>224f8d5</code></a> Post-release followups for 3.16.0rc1 (<a href="https://redirect.github.com/python/typing_extensions/issues/767">#767</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/777de3eb5f4562e2054d1d7ce707f098b1f4fd2f"><code>777de3e</code></a> Prepare release 4.16.0rc1 (<a href="https://redirect.github.com/python/typing_extensions/issues/766">#766</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/890be90f1545e7d5fa904dfa3154d5f03c96782c"><code>890be90</code></a> Type variable tuple variance (<a href="https://redirect.github.com/python/typing_extensions/issues/741">#741</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/0e0545866d78458b668dc52d2edc411f6e39540d"><code>0e05458</code></a> Pin SQLAlchemy third-party tests to pytest==9.0.3 (<a href="https://redirect.github.com/python/typing_extensions/issues/765">#765</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/d2777468c274202ec290103b34313e50cf040229"><code>d277746</code></a> docs: add version compatibility table (<a href="https://redirect.github.com/python/typing_extensions/issues/733">#733</a>)</li> <li>Additional commits viewable in <a href="https://github.com/python/typing_extensions/compare/4.15.0...4.16.0">compare view</a></li> </ul> </details> <br /> Updates `syrupy` from 5.3.4 to 5.5.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/releases">syrupy's releases</a>.</em></p> <blockquote> <h2>v5.5.3</h2> <h2>What's Changed</h2> <p>This release has no functional changes. It just fixes an issue where the release tag pointed to the previous commit instead of the commit with the updated pyproject.toml (see <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">syrupy-project/syrupy#1144</a>).</p> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3">https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3</a></p> <h2>v5.5.2</h2> <h2>What's Changed</h2> <ul> <li>fix: Fix detecting <code>pytest-xdist</code> when loaded via <code>PYTEST_PLUGINS</code> by <a href="https://github.com/mgorny"><code>@mgorny</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/mgorny"><code>@mgorny</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2">https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2</a></p> <h2>v5.5.1</h2> <h2>What's Changed</h2> <ul> <li>fix: Defer registering <code>pytest-xdist</code> hook <code>pytest_testnodedown</code> to avoid "unknown hook" error by <a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1">https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1</a></p> <h2>v5.5.0</h2> <h2>What's Changed</h2> <ul> <li>feat: detect unused snapshots under pytest-xdist by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1132">syrupy-project/syrupy#1132</a></li> </ul> <blockquote> <p><strong>NOTE</strong>: Test suites using pytest-xdist that previously passed due to incomplete snapshot support may now fail if unused snapshots are detected. You can use <code>--snapshot-warn-unused</code> to downgrade unused snapshot detection from an error to a warning though it's not recommended.</p> </blockquote> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0">https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0</a></p> <h2>v5.4.0</h2> <h2>What's Changed</h2> <ul> <li>feat: add --snapshot-no-cleanup to keep unused snapshots on update by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1126">syrupy-project/syrupy#1126</a></li> <li>fix: honor boolean operators in -k snapshot selection by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1127">syrupy-project/syrupy#1127</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.4...v5.4.0">https://github.com/syrupy-project/syrupy/compare/v5.3.4...v5.4.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md">syrupy's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.3">v5.5.3</a> (2026-07-11)</h2> <h2>What's Changed</h2> <ul> <li>chore(deps): update astral-sh/setup-uv action to v8.3.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1143">syrupy-project/syrupy#1143</a></li> <li>chore(deps): update astral-sh/setup-uv action to v8.3.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1145">syrupy-project/syrupy#1145</a></li> <li>chore(deps): update dependency hypothesis to v6.156.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1147">syrupy-project/syrupy#1147</a></li> <li>chore(deps): update dependency mypy to v2.2.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1148">syrupy-project/syrupy#1148</a></li> <li>chore(deps): update dependency hypothesis to v6.156.3 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1150">syrupy-project/syrupy#1150</a></li> <li>chore: closes <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">#1144</a> by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1146">syrupy-project/syrupy#1146</a></li> <li>chore(deps): update astral-sh/setup-uv action to v8.3.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1149">syrupy-project/syrupy#1149</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3">https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.2">v5.5.2</a> (2026-07-08)</h2> <h2>What's Changed</h2> <ul> <li>fix: Fix detecting <code>pytest-xdist</code> when loaded via <code>PYTEST_PLUGINS</code> by <a href="https://github.com/mgorny"><code>@mgorny</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/mgorny"><code>@mgorny</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2">https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.1">v5.5.1</a> (2026-07-06)</h2> <h2>What's Changed</h2> <ul> <li>fix: Defer registering <code>pytest-xdist</code> hook <code>pytest_testnodedown</code> to avoid "unknown hook" error by <a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1">https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.0">v5.5.0</a> (2026-07-06)</h2> <h2>What's Changed</h2> <ul> <li>feat: detect unused snapshots under pytest-xdist by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1132">syrupy-project/syrupy#1132</a></li> </ul> <blockquote> <p><strong>NOTE</strong>: Test suites using pytest-xdist that previously passed due to incomplete snapshot support may now fail if unused snapshots are detected. You can use <code>--snapshot-warn-unused</code> to downgrade unused snapshot detection from an error to a warning though it's not recommended.</p> </blockquote> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0">https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.4.0">v5.4.0</a> (2026-07-01)</h2> <h2>What's Changed</h2> <ul> <li>feat: add --snapshot-no-cleanup to keep unused snapshots on update by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1126">syrupy-project/syrupy#1126</a></li> <li>fix: honor boolean operators in -k snapshot selection by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1127">syrupy-project/syrupy#1127</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/syrupy-project/syrupy/commit/3cd347306cf44db076d2e4f50f7dfd325d9b5a92"><code>3cd3473</code></a> chore(release): 5.5.3 [skip ci]</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/fed7e9f69f4dd14b39360e626236c868147588d5"><code>fed7e9f</code></a> chore(deps): update astral-sh/setup-uv action to v8.3.2 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1149">#1149</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/443fc11bf67ce588753cd4518ef056463cfe651b"><code>443fc11</code></a> chore: closes <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">#1144</a> (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1146">#1146</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/56bf157ce4135bde78ecc49cfa9532ffa41659e8"><code>56bf157</code></a> chore(deps): update dependency hypothesis to v6.156.3 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1150">#1150</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/f9c725a5653677bfcafb53645c9a078f3aa79d87"><code>f9c725a</code></a> chore(deps): update dependency mypy to v2.2.0 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1148">#1148</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/3af2ccf2feeadb3a0d4e3f418d22ad3395725c80"><code>3af2ccf</code></a> chore(deps): update dependency hypothesis to v6.156.2 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1147">#1147</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/feaa22ca4c211dfcdd8d0d048112531fd6cb344c"><code>feaa22c</code></a> chore(deps): update astral-sh/setup-uv action to v8.3.1 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1145">#1145</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/5c59701e411922a464497398f5df25d76f2f9dcd"><code>5c59701</code></a> chore(deps): update astral-sh/setup-uv action to v8.3.0 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1143">#1143</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/1cbf7167ff114e3012b1c139661777c1a0b692ee"><code>1cbf716</code></a> chore(release): 5.5.2 [skip ci]</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/4f83490d2ebf4ae22aeba6d9946979640151aa34"><code>4f83490</code></a> fix: Fix detecting <code>pytest-xdist</code> when loaded via <code>PYTEST_PLUGINS</code> (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1142">#1142</a>)</li> <li>Additional commits viewable in <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.4...v5.5.3">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.15.20 to 0.16.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.16.0</h2> <h2>Release Notes</h2> <p>Released on 2026-07-23.</p> <p>Check out the <a href="https://astral.sh/blog/ruff-v0.16.0">blog post</a> for a migration guide and overview of the changes!</p> <h3>Breaking changes</h3> <ul> <li> <p>Ruff now enables a much larger set of rules by default (413, up from 59). See the blog post for more details and the new <a href="https://docs.astral.sh/ruff/default-rules/">Default Rules</a> page for a full listing of the enabled rules. Note that this is primarily an expansion, but 18 of the more opinionated pycodestyle (<code>E</code>) and pyflakes (<code>F</code>) rules have been removed from the default set: <code>E401</code>, <code>E402</code>, <code>E701</code>, <code>E702</code>, <code>E703</code>, <code>E711</code>, <code>E712</code>, <code>E713</code>, <code>E714</code>, <code>E721</code>, <code>E731</code>, <code>E741</code>, <code>E742</code>, <code>E743</code>, <code>F403</code>, <code>F405</code>, <code>F406</code>, and <code>F722</code>.</p> </li> <li> <p>Ruff can now format Python code blocks in Markdown files and will do this by default. See the <a href="https://docs.astral.sh/ruff/formatter/#markdown-code-formatting">documentation</a> for more details.</p> </li> <li> <p>Ruff now supports <code>ruff: ignore</code> comments at the ends of lines, like <code>noqa</code> comments, or on the line preceding a diagnostic. For example, these both suppress an <a href="https://docs.astral.sh/ruff/rules/unused-import/"><code>unused-import</code></a> (<code>F401</code>) diagnostic:</p> <pre lang="py"><code>import math # ruff: ignore[F401] <h1>ruff: ignore[F401]</h1> <p>import os </code></pre></p> </li> <li> <p>Fixes are now shown in <code>check</code> and <code>format --check</code> output:</p> <pre lang="console"><code>❯ ruff format --check . unformatted: File would be reformatted --> try.md:1:1 | 1 | ```python - import math 2 + import math 3 | ``` | <p>1 file would be reformatted </code></pre></p> <p>This example also shows off the Markdown formatting.</p> </li> <li> <p><code>format --check</code> now supports the same output formats as the linter, including the <code>github</code> and <code>gitlab</code> outputs for rendering annotations in CI:</p> <pre lang="console"><code>❯ ruff format --check --output-format github . ::error title=ruff (unformatted),file=try.md,line=2,col=8,endLine=2,endColumn=10::try.md:2:8: unformatted: File would be reformatted </code></pre> <p>See the CLI help or <a href="https://docs.astral.sh/ruff/settings/#output-format">documentation</a> for the full list of supported formats.</p> </li> <li> <p>The <code>filename</code>, <code>location</code>, <code>end_location</code>, <code>fix.edits[].location</code>, and <code>fix.edits[].end_location</code> fields in the JSON output format may now be <code>null</code> rather than defaulting to the empty string and row 1, column 1, respectively.</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.16.0</h2> <p>Released on 2026-07-23.</p> <p>Check out the <a href="https://astral.sh/blog/ruff-v0.16.0">blog post</a> for a migration guide and overview of the changes!</p> <h3>Breaking changes</h3> <ul> <li> <p>Ruff now enables a much larger set of rules by default (413, up from 59). See the blog post for more details and the new <a href="https://docs.astral.sh/ruff/default-rules/">Default Rules</a> page for a full listing of the enabled rules. Note that this is primarily an expansion, but 18 of the more opinionated pycodestyle (<code>E</code>) and pyflakes (<code>F</code>) rules have been removed from the default set: <code>E401</code>, <code>E402</code>, <code>E701</code>, <code>E702</code>, <code>E703</code>, <code>E711</code>, <code>E712</code>, <code>E713</code>, <code>E714</code>, <code>E721</code>, <code>E731</code>, <code>E741</code>, <code>E742</code>, <code>E743</code>, <code>F403</code>, <code>F405</code>, <code>F406</code>, and <code>F722</code>.</p> </li> <li> <p>Ruff can now format Python code blocks in Markdown files and will do this by default. See the <a href="https://docs.astral.sh/ruff/formatter/#markdown-code-formatting">documentation</a> for more details.</p> </li> <li> <p>Ruff now supports <code>ruff: ignore</code> comments at the ends of lines, like <code>noqa</code> comments, or on the line preceding a diagnostic. For example, these both suppress an <a href="https://docs.astral.sh/ruff/rules/unused-import/"><code>unused-import</code></a> (<code>F401</code>) diagnostic:</p> <pre lang="py"><code>import math # ruff: ignore[F401] <h1>ruff: ignore[F401]</h1> <p>import os </code></pre></p> </li> <li> <p>Fixes are now shown in <code>check</code> and <code>format --check</code> output:</p> <pre lang="console"><code>❯ ruff format --check . unformatted: File would be reformatted --> try.md:1:1 | 1 | ```python - import math 2 + import math 3 | ``` | <p>1 file would be reformatted </code></pre></p> <p>This example also shows off the Markdown formatting.</p> </li> <li> <p><code>format --check</code> now supports the same output formats as the linter, including the <code>github</code> and <code>gitlab</code> outputs for rendering annotations in CI:</p> <pre lang="console"><code></code></pre> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/a2635fd8f39e1d34ce8074cb486809426148f3e9"><code>a2635fd</code></a> Bump 0.16.0 (<a href="https://redirect.github.com/astral-sh/ruff/issues/27136">#27136</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/34334491652f8ceca5246d15c5c5afe0d6bc77ae"><code>3433449</code></a> [ty] Reuse full call diagnostics for implicit setter calls (<a href="https://redirect.github.com/astral-sh/ruff/issues/27115">#27115</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/22400709220931375e072ad5d7460b9fc781af78"><code>2240070</code></a> Reflect <code>ruff: ignore</code> and <code>--add-ignore</code> stabilization in documentation (<a href="https://redirect.github.com/astral-sh/ruff/issues/27">#27</a>...</li> <li><a href="https://github.com/astral-sh/ruff/commit/17ef71142c52230b923dad46ee5554140fc3fd2e"><code>17ef711</code></a> Stabilize <code>--add-ignore</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/27125">#27125</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/ef912bbbe466856aa4aac10ad2a8856eb3d5aef3"><code>ef912bb</code></a> Add newly stabilized rules to defaults (<a href="https://redirect.github.com/astral-sh/ruff/issues/27055">#27055</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/b30f04023281b46f12011f13ce6b45c247e0d2e3"><code>b30f040</code></a> Stabilize new default rules (<a href="https://redirect.github.com/astral-sh/ruff/issues/27035">#27035</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/bcd70c5f10ea97ed52a785d70e7f33b83b7c697a"><code>bcd70c5</code></a> Exclude Markdown files from <code>format-dev</code> runs (<a href="https://redirect.github.com/astral-sh/ruff/issues/27052">#27052</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/87e51e2cbbaed376fc13dead40fd772361fa07c0"><code>87e51e2</code></a> Fix <code>format --check</code> spans for syntax errors (<a href="https://redirect.github.com/astral-sh/ruff/issues/27045">#27045</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/afe2723a348364ac7f4b9abd76fc67779490c05e"><code>afe2723</code></a> [<code>flake8-gettext</code>] Stabilize qualified-name and built-in binding resolution (...</li> <li><a href="https://github.com/astral-sh/ruff/commit/a9702d8928344f77a41dbe535f655a69fb04e2df"><code>a9702d8</code></a> [<code>flake8-bandit</code>] Stabilize string literal binding resolution (<code>S310</code>) (<a href="https://redirect.github.com/astral-sh/ruff/issues/26944">#26944</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.20...0.16.0">compare view</a></li> </ul> </details> <br /> Updates `mypy` from 2.1.0 to 2.3.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's changelog</a>.</em></p> <blockquote> <h1>Mypy Release Notes</h1> <h2>Next Release</h2> <h3>Packaging changes</h3> <ul> <li>No longer provide mypyc-accelerated wheels for macOS x86_64 [mypyc-wheels <a href="https://redirect.github.com/python/mypy/issues/119">#119</a>](<a href="https://redirect.github.com/mypyc/mypy_mypyc-wheels/pull/119">mypyc/mypy_mypyc-wheels#119</a>)</li> </ul> <h2>Mypy 2.3</h2> <p>We've just uploaded mypy 2.3.0 to the Python Package Index (<a href="https://pypi.org/project/mypy/">PyPI</a>). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:</p> <pre><code>python3 -m pip install -U mypy </code></pre> <p>You can read the full documentation for this release on <a href="http://mypy.readthedocs.io">Read the Docs</a>.</p> <h3>The Upcoming Switch to the New Native Parser</h3> <p>We are planning to enable the new native parser (<code>--native-parser</code>) by default soon. We recommend that you test the native parser in your projects and report any issues in the <a href="https://github.com/python/mypy/issues">mypy issue tracker</a>.</p> <h3>Mypyc Free-threading Memory Safety</h3> <p>Free-threaded Python builds that don't have the GIL require additional synchronization primitives or lock-free algorithms to ensure memory safety when there are race conditions (for example, when a thread reads a list item while another thread writes the same list item concurrently). This release greatly improves memory safety of free threading.</p> <p>List operations are now memory-safe on free threaded Python builds, even in the presence of race conditions. This has some performance cost. For list-heavy workloads, using <code>librt.vecs.vec</code> instead of list is often significantly faster, but note that <code>vec</code> is not (and likely won't be) fully memory safe, and the user is expected to avoid race conditions. The newly introduced <code>librt.threading.Lock</code> helps with this. Using variable-length tuples can also be more efficient than lists, since tuples are immutable and don't require expensive synchronization to ensure memory safety.</p> <p>Instance attribute access is also (mostly) memory safe now on free-threaded builds in the presence of race conditions. We are planning to fix the remaining unsafe cases in a future release.</p> <p>Full list of changes:</p> <ul> <li>Make attribute access memory safe on free-threaded builds (Jukka Lehtosalo, PR <a href="https://redirect.github.com/python/mypy/pull/21705">21705</a>)</li> <li>Fix unsafe borrowing of instance attributes with free-threading (Jukka Lehtosalo, PR <a href="https://redirect.github.com/python/mypy/pull/21688">21688</a>)</li> <li>Make list get/set item more memory safe on free-threaded builds (Jukka Lehtosalo, PR <a href="https://redirect.github.com/python/mypy/pull/21683">21683</a>)</li> <li>Don't borrow list items on free-threaded builds (Jukka Lehtosalo, PR <a href="https://redirect.github.com/python/mypy/pull/21679">21679</a>)</li> <li>Make multiple assignment from list memory-safe on free-threaded builds (Jukka Lehtosalo, PR <a href="https://redirect.github.com/python/mypy/pull/21684">21684</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/mypy/commit/8aabf8435357eaffceca7237f371e293b8168e54"><code>8aabf84</code></a> Drop +dev from version</li> <li><a href="https://github.com/python/mypy/commit/4d8ad2ab5e86c99581b73775f2c00b9b8265b589"><code>4d8ad2a</code></a> Update changelog for 2.3 release (<a href="https://redirect.github.com/python/mypy/issues/21728">#21728</a>)</li> <li><a href="https://github.com/python/mypy/commit/2c2154672040c52e481f423854d104e6cf172585"><code>2c21546</code></a> [mypyc] Update documentation of race conditions under free threading (<a href="https://redirect.github.com/python/mypy/issues/21726">#21726</a>)</li> <li><a href="https://github.com/python/mypy/commit/a9f62a3cf98a58a7a2607b7c81695802b39f5edc"><code>a9f62a3</code></a> [mypyc] Make attribute access memory safe on free-threaded builds (<a href="https://redirect.github.com/python/mypy/issues/21705">#21705</a>)</li> <li><a href="https://github.com/python/mypy/commit/0faa413ebf7c924a864ef5dabd70303d898e7766"><code>0faa413</code></a> Use <code>PYODIDE</code> environment variable for Emscripten cross-compilation detection...</li> <li><a href="https://github.com/python/mypy/commit/3d75cdb09f0928fa8b83e5ef03572ed878ac8d09"><code>3d75cdb</code></a> [mypyc] Borrow final attributes more aggressively (<a href="https://redirect.github.com/python/mypy/issues/21702">#21702</a>)</li> <li><a href="https://github.com/python/mypy/commit/24c237d85b48f618e655ffff1dc0f19089d9b599"><code>24c237d</code></a> [mypyc] Improve documentation of Final (<a href="https://redirect.github.com/python/mypy/issues/21713">#21713</a>)</li> <li><a href="https://github.com/python/mypy/commit/b5be217392b9b2771d1764066b9d600bf93ce7a8"><code>b5be217</code></a> [mypyc] Update free threading Python compatibility docs (<a href="https://redirect.github.com/python/mypy/issues/21711">#21711</a>)</li> <li><a href="https://github.com/python/mypy/commit/cbcb51add3094ec91b29cdd4c624943bf251b63f"><code>cbcb51a</code></a> Narrow for frozendict membership check (<a href="https://redirect.github.com/python/mypy/issues/21709">#21709</a>)</li> <li><a href="https://github.com/python/mypy/commit/af2bc0f3cc7f2f129f0c11294158d0c292692c3d"><code>af2bc0f</code></a> Sync typeshed (<a href="https://redirect.github.com/python/mypy/issues/21707">#21707</a>)</li> <li>Additional commits viewable in <a href="https://github.com/python/mypy/compare/v2.1.0...v2.3.0">compare view</a></li> </ul> </details> <br /> Updates `typing-extensions` from 4.15.0 to 4.16.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/python/typing_extensions/releases">typing-extensions's releases</a>.</em></p> <blockquote> <h2>4.16.0</h2> <p>No changes since 4.16.0rc2.</p> <p>Changes since 4.15.0:</p> <ul> <li>Make <code>typing_extensions.TypeAliasType</code>'s <code>__module__</code> attribute writable. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li> <li>Fix setting of <code>__required_keys__</code> and <code>__optional_keys__</code> when inheriting keys with the same name.</li> <li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>, <code>io.Writer</code> and <code>os.PathLike</code> protocols as bases for other protocols.</li> <li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant that calling <code>isinstance</code> with <code>typing_extensions.Concatenate[...]</code> or <code>typing_extensions.Unpack[...]</code> as the first argument could have a different result in some situations depending on whether or not a profiling function had been set using <code>sys.setprofile</code>. This affected both CPython and PyPy implementations. Patch by Brian Schubert.</li> <li>Fix <code>__init_subclass__()</code> behavior in the presence of multiple inheritance involving an <code>@deprecated</code>-decorated base class. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/138210">#138210</a> by Brian Schubert.</li> <li>Raise <code>TypeError</code> when attempting to subclass <code>typing_extensions.ParamSpec</code> on Python 3.9. The <code>typing</code> implementation has always raised an error, and the <code>typing_extensions</code> implementation has raised an error on Python 3.10+ since <code>typing_extensions</code> v4.6.0. Patch by Brian Schubert.</li> <li>Add the <code>bound</code>, <code>covariant</code>, <code>contravariant</code>, and <code>infer_variance</code> parameters to <code>TypeVarTuple</code>.</li> <li>Officially support the <code>bound</code>, <code>covariant</code>, <code>contravariant</code> and <code>infer_variance</code> parameters to <code>ParamSpec</code>. Improve the validation of these parameters at runtime.</li> <li>Rename <code>typing_extensions.Sentinel</code> to <code>typing_extensions.sentinel</code>, following the name that has been adopted for <code>builtins.sentinel</code> on Python 3.15. <code>typing_extensions.Sentinel</code> is retained as a soft-deprecated alias for backwards compatibility.</li> <li>Add support for pickling sentinels.</li> <li>Sentinels now preserve their identity when copied or deep-copied.</li> <li>Deprecate passing <code>name</code> as a keyword argument or <code>repr</code> as a positional argument to the <code>sentinel</code> constructor.</li> <li>The default repr of a sentinel <code>X = sentinel("X")</code> is now <code>X</code> rather than <code><X></code>.</li> <li>Deprecate arbitrary attribute assignments to sentinels.</li> <li>Deprecate subclassing sentinels.</li> <li>Add support for Python 3.15.</li> <li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code> is applied to a coroutine function on Python 3.14.0.</li> </ul> <h2>4.16.0rc2</h2> <p>Changes since 4.16.0rc1:</p> <ul> <li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code> is applied to a coroutine function on Python 3.14.0.</li> </ul> <p>Changes since 4.15.0:</p> <ul> <li>Make <code>typing_extensions.TypeAliasType</code>'s <code>__module__</code> attribute writable. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li> <li>Fix setting of <code>__required_keys__</code> and <code>__optional_keys__</code> when inheriting keys with the same name.</li> <li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>, <code>io.Writer</code> and <code>os.PathLike</code> protocols as bases for other protocols.</li> <li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant that calling <code>isinstance</code> with <code>typing_extensions.Concatenate[...]</code> or <code>typing_extensions.Unpack[...]</code> as the first argument could have a different result in some situations depending on whether or not a profiling function had been set using <code>sys.setprofile</code>. This affected both CPython and PyPy implementations. Patch by Brian Schubert.</li> <li>Fix <code>__init_subclass__()</code> behavior in the presence of multiple inheritance involving an <code>@deprecated</code>-decorated base class. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/138210">#138210</a> by Brian Schubert.</li> <li>Raise <code>TypeError</code> when attempting to subclass <code>typing_extensions.ParamSpec</code> on Python 3.9. The <code>typing</code> implementation has always raised an error, and the <code>typing_extensions</code> implementation has raised an error on Python 3.10+ since <code>typing_extensions</code> v4.6.0. Patch by Brian Schubert.</li> <li>Add the <code>bound</code>, <code>covariant</code>, <code>contravariant</code>, and <code>infer_variance</code> parameters to <code>TypeVarTuple</code>.</li> <li>Officially support the <code>bound</code>, <code>covariant</code>, <code>contravariant</code> and <code>infer_variance</code> parameters to <code>ParamSpec</code>. Improve the validation of these parameters at runtime.</li> <li>Rename <code>typing_extensions.Sentinel</code> to <code>typing_extensions.sentinel</code>, following the name that has been adopted for <code>builtins.sentinel</code> on Python 3.15. <code>typing_extensions.Sentinel</code> is retained as a soft-deprecated alias for backwards compatibility.</li> <li>Add support for pickling sentinels.</li> <li>Sentinels now preserve their identity when copied or deep-copied.</li> <li>Deprecate passing <code>name</code> as a keyword argument or <code>repr</code> as a positional argument to the <code>sentinel</code> constructor.</li> <li>The default repr of a sentinel <code>X = sentinel("X")</code> is now <code>X</code> rather than <code><X></code>.</li> <li>Deprecate arbitrary attribute assignments to sentinels.</li> <li>Deprecate subclassing sentinels.</li> <li>Add support for Python 3.15.</li> </ul> <h2>4.16.0rc1</h2> <ul> <li>Make <code>typing_extensions.TypeAliasType</code>'s <code>__module__</code> attribute writable. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li> <li>Fix setting of <code>__required_keys__</code> and <code>__optional_keys__</code> when inheriting keys with the same name.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/typing_extensions/blob/main/CHANGELOG.md">typing-extensions's changelog</a>.</em></p> <blockquote> <h1>Release 4.16.0 (July 2, 2025)</h1> <p>No user-facing changes since 4.16.0rc2.</p> <h1>Release 4.16.0rc2 (June 25, 2026)</h1> <ul> <li>Avoid a <code>DeprecationWarning</code> when <code>deprecated</code> is applied to a coroutine function on Python 3.14.0.</li> </ul> <h1>Release 4.16.0rc1 (June 24, 2026)</h1> <ul> <li>Make <code>typing_extensions.TypeAliasType</code>'s <code>__module__</code> attribute writable. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/149172">#149172</a>.</li> <li>Fix setting of <code>__required_keys__</code> and <code>__optional_keys__</code> when inheriting keys with the same name.</li> <li>Add support for <code>AsyncIterator</code>, <code>io.Reader</code>, <code>io.Writer</code> and <code>os.PathLike</code> protocols as bases for other protocols.</li> <li>Fix incorrect behaviour on Python 3.9 and Python 3.10 that meant that calling <code>isinstance</code> with <code>typing_extensions.Concatenate[...]</code> or <code>typing_extensions.Unpack[...]</code> as the first argument could have a different result in some situations depending on whether or not a profiling function had been set using <code>sys.setprofile</code>. This affected both CPython and PyPy implementations. Patch by Brian Schubert.</li> <li>Fix <code>__init_subclass__()</code> behavior in the presence of multiple inheritance involving an <code>@deprecated</code>-decorated base class. Backport of CPython PR <a href="https://redirect.github.com/python/cpython/pull/138210">#138210</a> by Brian Schubert.</li> <li>Raise <code>TypeError</code> when attempting to subclass <code>typing_extensions.ParamSpec</code> on Python 3.9. The <code>typing</code> implementation has always raised an error, and the <code>typing_extensions</code> implementation has raised an error on Python 3.10+ since <code>typing_extensions</code> v4.6.0. Patch by Brian Schubert.</li> <li>Add the <code>bound</code>, <code>covariant</code>, <code>contravariant</code>, and <code>infer_variance</code> parameters to <code>TypeVarTuple</code>.</li> <li>Officially support the <code>bound</code>, <code>covariant</code>, <code>contravariant</code> and <code>infer_variance</code> parameters to <code>ParamSpec</code>. Improve the validation of these parameters at runtime.</li> <li>Rename <code>typing_extensions.Sentinel</code> to <code>typing_extensions.sentinel</code>, following the name that has been adopted for <code>builtins.sentinel</code> on Python 3.15. <code>typing_extensions.Sentinel</code> is retained as a soft-deprecated alias for backwards compatibility.</li> <li>Add support for pickling sentinels.</li> <li>Sentinels now preserve their identity when copied or deep-copied.</li> <li>Deprecate passing <code>name</code> as a keyword argument or <code>repr</code> as a positional argument to the <code>sentinel</code> constructor.</li> <li>The default repr of a sentinel <code>X = sentinel("X")</code> is now <code>X</code> rather than <code><X></code>.</li> <li>Deprecate arbitrary attribute assignments to sentinels.</li> <li>Deprecate subclassing sentinels.</li> <li>Add support for Python 3.15.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/typing_extensions/commit/f29cd28d8ed7642cafb1d18daf5aa41be6a5c0aa"><code>f29cd28</code></a> Prepare relase 4.16.0 (<a href="https://redirect.github.com/python/typing_extensions/issues/774">#774</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/43174610ec0c407ce05ad750077c4e62b9192b2b"><code>4317461</code></a> Bump version to 4.16.0rc2.dev (<a href="https://redirect.github.com/python/typing_extensions/issues/772">#772</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/4f71098e5be84798d36416bbca0e776223ee40f9"><code>4f71098</code></a> Prepare release 4.16.0rc2 (<a href="https://redirect.github.com/python/typing_extensions/issues/771">#771</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/37ed08a11f3b7c05234f8963ab97e3ebdbdc16a2"><code>37ed08a</code></a> Remove use of <code>asyncio.coroutines.iscoroutinefunction()</code> (<a href="https://redirect.github.com/python/typing_extensions/issues/769">#769</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/8dcc5594cbe5a4e348245fea6ce160ce93ed6601"><code>8dcc559</code></a> Improve <code>TypedDict</code> documentation (<a href="https://redirect.github.com/python/typing_extensions/issues/770">#770</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/224f8d50551d26f0d603093596c3a47a7302a46f"><code>224f8d5</code></a> Post-release followups for 3.16.0rc1 (<a href="https://redirect.github.com/python/typing_extensions/issues/767">#767</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/777de3eb5f4562e2054d1d7ce707f098b1f4fd2f"><code>777de3e</code></a> Prepare release 4.16.0rc1 (<a href="https://redirect.github.com/python/typing_extensions/issues/766">#766</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/890be90f1545e7d5fa904dfa3154d5f03c96782c"><code>890be90</code></a> Type variable tuple variance (<a href="https://redirect.github.com/python/typing_extensions/issues/741">#741</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/0e0545866d78458b668dc52d2edc411f6e39540d"><code>0e05458</code></a> Pin SQLAlchemy third-party tests to pytest==9.0.3 (<a href="https://redirect.github.com/python/typing_extensions/issues/765">#765</a>)</li> <li><a href="https://github.com/python/typing_extensions/commit/d2777468c274202ec290103b34313e50cf040229"><code>d277746</code></a> docs: add version compatibility table (<a href="https://redirect.github.com/python/typing_extensions/issues/733">#733</a>)</li> <li>Additional commits viewable in <a href="https://github.com/python/typing_extensions/compare/4.15.0...4.16.0">compare view</a></li> </ul> </details> <br /> Updates `syrupy` from 5.3.4 to 5.5.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/releases">syrupy's releases</a>.</em></p> <blockquote> <h2>v5.5.3</h2> <h2>What's Changed</h2> <p>This release has no functional changes. It just fixes an issue where the release tag pointed to the previous commit instead of the commit with the updated pyproject.toml (see <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">syrupy-project/syrupy#1144</a>).</p> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3">https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3</a></p> <h2>v5.5.2</h2> <h2>What's Changed</h2> <ul> <li>fix: Fix detecting <code>pytest-xdist</code> when loaded via <code>PYTEST_PLUGINS</code> by <a href="https://github.com/mgorny"><code>@mgorny</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/mgorny"><code>@mgorny</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2">https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2</a></p> <h2>v5.5.1</h2> <h2>What's Changed</h2> <ul> <li>fix: Defer registering <code>pytest-xdist</code> hook <code>pytest_testnodedown</code> to avoid "unknown hook" error by <a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1">https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1</a></p> <h2>v5.5.0</h2> <h2>What's Changed</h2> <ul> <li>feat: detect unused snapshots under pytest-xdist by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1132">syrupy-project/syrupy#1132</a></li> </ul> <blockquote> <p><strong>NOTE</strong>: Test suites using pytest-xdist that previously passed due to incomplete snapshot support may now fail if unused snapshots are detected. You can use <code>--snapshot-warn-unused</code> to downgrade unused snapshot detection from an error to a warning though it's not recommended.</p> </blockquote> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0">https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0</a></p> <h2>v5.4.0</h2> <h2>What's Changed</h2> <ul> <li>feat: add --snapshot-no-cleanup to keep unused snapshots on update by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1126">syrupy-project/syrupy#1126</a></li> <li>fix: honor boolean operators in -k snapshot selection by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1127">syrupy-project/syrupy#1127</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.3.4...v5.4.0">https://github.com/syrupy-project/syrupy/compare/v5.3.4...v5.4.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md">syrupy's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.3">v5.5.3</a> (2026-07-11)</h2> <h2>What's Changed</h2> <ul> <li>chore(deps): update astral-sh/setup-uv action to v8.3.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1143">syrupy-project/syrupy#1143</a></li> <li>chore(deps): update astral-sh/setup-uv action to v8.3.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1145">syrupy-project/syrupy#1145</a></li> <li>chore(deps): update dependency hypothesis to v6.156.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1147">syrupy-project/syrupy#1147</a></li> <li>chore(deps): update dependency mypy to v2.2.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1148">syrupy-project/syrupy#1148</a></li> <li>chore(deps): update dependency hypothesis to v6.156.3 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1150">syrupy-project/syrupy#1150</a></li> <li>chore: closes <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">#1144</a> by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1146">syrupy-project/syrupy#1146</a></li> <li>chore(deps): update astral-sh/setup-uv action to v8.3.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1149">syrupy-project/syrupy#1149</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3">https://github.com/syrupy-project/syrupy/compare/v5.5.2...v5.5.3</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.2">v5.5.2</a> (2026-07-08)</h2> <h2>What's Changed</h2> <ul> <li>fix: Fix detecting <code>pytest-xdist</code> when loaded via <code>PYTEST_PLUGINS</code> by <a href="https://github.com/mgorny"><code>@mgorny</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/mgorny"><code>@mgorny</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1142">syrupy-project/syrupy#1142</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2">https://github.com/syrupy-project/syrupy/compare/v5.5.1...v5.5.2</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.1">v5.5.1</a> (2026-07-06)</h2> <h2>What's Changed</h2> <ul> <li>fix: Defer registering <code>pytest-xdist</code> hook <code>pytest_testnodedown</code> to avoid "unknown hook" error by <a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1140">syrupy-project/syrupy#1140</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1">https://github.com/syrupy-project/syrupy/compare/v5.5.0...v5.5.1</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.5.0">v5.5.0</a> (2026-07-06)</h2> <h2>What's Changed</h2> <ul> <li>feat: detect unused snapshots under pytest-xdist by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1132">syrupy-project/syrupy#1132</a></li> </ul> <blockquote> <p><strong>NOTE</strong>: Test suites using pytest-xdist that previously passed due to incomplete snapshot support may now fail if unused snapshots are detected. You can use <code>--snapshot-warn-unused</code> to downgrade unused snapshot detection from an error to a warning though it's not recommended.</p> </blockquote> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0">https://github.com/syrupy-project/syrupy/compare/v5.4.0...v5.5.0</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.4.0">v5.4.0</a> (2026-07-01)</h2> <h2>What's Changed</h2> <ul> <li>feat: add --snapshot-no-cleanup to keep unused snapshots on update by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1126">syrupy-project/syrupy#1126</a></li> <li>fix: honor boolean operators in -k snapshot selection by <a href="https://github.com/frenck"><code>@frenck</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1127">syrupy-project/syrupy#1127</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/syrupy-project/syrupy/commit/3cd347306cf44db076d2e4f50f7dfd325d9b5a92"><code>3cd3473</code></a> chore(release): 5.5.3 [skip ci]</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/fed7e9f69f4dd14b39360e626236c868147588d5"><code>fed7e9f</code></a> chore(deps): update astral-sh/setup-uv action to v8.3.2 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1149">#1149</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/443fc11bf67ce588753cd4518ef056463cfe651b"><code>443fc11</code></a> chore: closes <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1144">#1144</a> (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1146">#1146</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/56bf157ce4135bde78ecc49cfa9532ffa41659e8"><code>56bf157</code></a> chore(deps): update dependency hypothesis to v6.156.3 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1150">#1150</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/f9c725a5653677bfcafb53645c9a078f3aa79d87"><code>f9c725a</code></a> chore(deps): update dependency mypy to v2.2.0 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1148">#1148</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/3af2ccf2feeadb3a0d4e3f418d22ad3395725c80"><code>3af2ccf</code></a> chore(deps): update dependency hypothesis to v6.156.2 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1147">#1147</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/feaa22ca4c211dfcdd8d0d048112531fd6cb344c"><code>feaa22c</code></a> chore(deps): update astral-sh/setup-uv action to v8.3.1 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1145">#1145</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/5c59701e411922a464497398f5df25d76f2f9dcd"><code>5c59701</code></a> chore(deps): update astral-sh/setup-uv action to v8.3.0 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1143">#1143</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/1cbf7167ff114e3012b1c139661777c1a0b692ee"><code>1cbf716</code></a> chore(release): 5.5.2 [skip ci]</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/4f83490d2ebf4ae22aeba6d9946979640151aa34"><code>4f83490</code></a> fix: Fix detecting <code>pytest-xdist</code> when loaded via <code>PYTEST_PLUGINS</code> (<a href="https://redi... _Description has been truncated_ --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mason Daugherty <mason@langchain.dev> Co-authored-by: Mason Daugherty <github@mdrxy.com> |
||
|
|
a2e53fda73 |
feat(text-splitters): replace mypy by ty for type checking (#38658)
Switches type checking for `langchain-text-splitters` from `mypy` to [`ty`](https://docs.astral.sh/ty/), which is much faster. The `ollama` package already [switched to `ty`](https://github.com/langchain-ai/langchain/pull/36571). ## What changed The core of this PR is the config swap (`[tool.mypy]` → `[tool.ty.rules]`/`[tool.ty.analysis]`, `Makefile`, and the `typing` dependency group). Because `ty` runs with `all = "error"`, a few modules also needed source-level adjustments to satisfy the stricter analysis. These are **behavior-preserving refactors** except for one intentional fix, called out below so reviewers know where to look. ### Behavioral change (intentional fix) - `SentenceTransformersTokenTextSplitter` now raises a clear `ValueError` when the underlying model reports no maximum sequence length **and** no `tokens_per_chunk` was provided. Previously this combination reached a `None > None` comparison and surfaced as an opaque `TypeError`. As a consequence, the public `maximum_tokens_per_chunk` attribute is now honestly typed as `int | None` — it can remain `None` when the caller supplies `tokens_per_chunk` explicitly for a model without a limit. ### Behavior-preserving refactors (no user-visible change) - `TokenTextSplitter.from_tiktoken_encoder` is now an explicit override rather than the base method dispatching on `issubclass(cls, TokenTextSplitter)`. The shared length-function logic moved into a private helper. Public signatures and return types are unchanged. - `NLTKTextSplitter` builds its tokenizer once at construction, so `_tokenizer` is now always a `Callable[[str], list[str]]`. The private attributes `_language` and `_use_span_tokenize` are no longer stored — flagging in case any downstream code read those (they are underscore-private). Tokenization output is unchanged. - `HTMLSemanticPreservingSplitter` text extraction was rewritten from a `cast`-based check to `isinstance(element, Tag)` narrowing; output is equivalent for tags, text nodes, and comments. --------- Co-authored-by: Mason Daugherty <github@mdrxy.com> |
||
|
|
4108c0738c |
release(core): 1.4.7 (#38111)
Bumps `langchain-core` to `1.4.7` for the next patch release and updates downstream minimum `langchain-core` requirements so package locks resolve against the new core version. This also refreshes the runnable snapshots that embed `lc_versions` metadata so the version consistency check continues to validate checked-in artifacts. Validated with `python libs/core/scripts/check_version.py`, `uv lock --check` across package lockfiles, and the core runnable tests that own the updated snapshots with local LangSmith tracing env disabled. |
||
|
|
05cc55f1bc | release(core): 1.4.6 (#38061) | ||
|
|
1de100f278 |
chore(infra): bump mypy to 2.1 and unify type-check config across the monorepo (#36470)
Originally a narrow bump of mypy to `1.20` in four packages. Expanded to get the whole monorepo onto a single, current mypy and a consistent type-check configuration, so contributors no longer hit different mypy versions and divergent behavior depending on which package they touch. ### What changed - **Unified the mypy pin to `>=2.1.0,<2.2.0`** in every mypy-using package (6 libs + 14 partners), replacing the previously scattered pins (`1.10`/`1.17`/`1.18`/`1.19`/`1.20`, with assorted upper bounds). - **Unified the `[tool.mypy]` base per tier:** - libs: `plugins = ["pydantic.mypy"]`, `strict = true`, `enable_error_code = "deprecated"`, `warn_unreachable = true` - partners: `disallow_untyped_defs = true` - Normalized style (`disallow_untyped_defs = "True"` string → bool, quote/key consistency). - **Fixed the 20 real errors** mypy 2.1 surfaces: `redundant-cast` from improved narrowing (`core`, `langchain-classic`), a `var-annotated` for `_LOGGED`, a return-type widening in `langchain-groq`'s `_convert_from_v1_to_groq` (it can legitimately return a bare `str`), and stale `type-arg`/`unused-ignore` in `langchain-model-profiles` tests. ### Deliberate non-uniformity (documented inline in the relevant `pyproject.toml`s) Going fully byte-identical would surface ~196 additional errors that are *not* real bugs, so two settings are kept package-appropriate: - **`warn_unreachable`** is enabled on every strict lib **except `core`**, where it false-flags intentional defensive code — including the SSRF / IP-policy guards in `_security/` — as unreachable. - **`pydantic.mypy` plugin** is used only on `anthropic` and `perplexity` (their code is authored against it and reports ~99/~132 errors without it). It is *not* added to the other partners, where it only flags the public alias constructor API (e.g. `ChatGroq(model=...)`) in tests rather than finding bugs. - **`ollama`** is left on its `ty` type checker; it does not use mypy. --------- Co-authored-by: Mason Daugherty <github@mdrxy.com> |
||
|
|
b2ee0a9bba |
chore: unify core versions in text-splitters. (#37523)
Signed-off-by: zhanluxianshen <yanggangtony@163.com> |
||
|
|
6120400329 |
chore: bump the minor-and-patch group across 3 directories with 15 updates (#37515)
Bumps the minor-and-patch group with 10 updates in the /libs/model-profiles directory: | Package | From | To | | --- | --- | --- | | [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` | | [syrupy](https://github.com/syrupy-project/syrupy) | `5.1.0` | `5.2.0` | | [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.13` | | [openai](https://github.com/openai/openai-python) | `2.26.0` | `2.37.0` | | [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` | | [pydantic](https://github.com/pydantic/pydantic) | `2.12.3` | `2.13.4` | | [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` | | [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.0` | `0.8.5` | | [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` | | [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.15.0` | Bumps the minor-and-patch group with 7 updates in the /libs/standard-tests directory: | Package | From | To | | --- | --- | --- | | [syrupy](https://github.com/syrupy-project/syrupy) | `5.1.0` | `5.2.0` | | [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.13` | | [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` | | [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.0` | `0.8.5` | | [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` | | [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.15.0` | | [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.14` | `0.0.15` | Bumps the minor-and-patch group with 10 updates in the /libs/text-splitters directory: | Package | From | To | | --- | --- | --- | | [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.13` | | [tiktoken](https://github.com/openai/tiktoken) | `0.12.0` | `0.13.0` | | [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` | | [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260518` | | [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.0` | `0.8.5` | | [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` | | [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.12.0` | `0.15.0` | | [spacy](https://github.com/explosion/spaCy) | `3.8.13` | `3.8.14` | | [transformers](https://github.com/huggingface/transformers) | `5.3.0` | `5.8.1` | | [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.3.0` | `5.5.0` | Updates `pytest-cov` from 7.0.0 to 7.1.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst">pytest-cov's changelog</a>.</em></p> <blockquote> <h2>7.1.0 (2026-03-21)</h2> <ul> <li> <p>Fixed total coverage computation to always be consistent, regardless of reporting settings. Previously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on reporting options. See <code>[#641](https://github.com/pytest-dev/pytest-cov/issues/641) <https://github.com/pytest-dev/pytest-cov/issues/641></code>_.</p> </li> <li> <p>Improve handling of ResourceWarning from sqlite3.</p> <p>The plugin adds warning filter for sqlite3 <code>ResourceWarning</code> unclosed database (since 6.2.0). It checks if there is already existing plugin for this message by comparing filter regular expression. When filter is specified on command line the message is escaped and does not match an expected message. A check for an escaped regular expression is added to handle this case.</p> <p>With this fix one can suppress <code>ResourceWarning</code> from sqlite3 from command line::</p> <p>pytest -W "ignore:unclosed database in <sqlite3.Connection object at:ResourceWarning" ...</p> </li> <li> <p>Various improvements to documentation. Contributed by Art Pelling in <code>[#718](https://github.com/pytest-dev/pytest-cov/issues/718) <https://github.com/pytest-dev/pytest-cov/pull/718></code>_ and "vivodi" in <code>[#738](https://github.com/pytest-dev/pytest-cov/issues/738) <https://github.com/pytest-dev/pytest-cov/pull/738></code><em>. Also closed <code>[#736](https://github.com/pytest-dev/pytest-cov/issues/736) <https://github.com/pytest-dev/pytest-cov/issues/736></code></em>.</p> </li> <li> <p>Fixed some assertions in tests. Contributed by in Markéta Machová in <code>[#722](https://github.com/pytest-dev/pytest-cov/issues/722) <https://github.com/pytest-dev/pytest-cov/pull/722></code>_.</p> </li> <li> <p>Removed unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622"><code>66c8a52</code></a> Bump version: 7.0.0 → 7.1.0</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e"><code>f707662</code></a> Make the examples use pypy 3.11.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672"><code>6049a78</code></a> Make context test use the old ctracer (seems the new sysmon tracer behaves di...</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b"><code>8ebf20b</code></a> Update changelog.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9"><code>861d30e</code></a> Remove the backup context manager - shouldn't be needed since coverage 5.0, ...</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f"><code>fd4c956</code></a> Pass the precision on the nulled total (seems that there's some caching goion...</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6"><code>78c9c4e</code></a> Only run the 3.9 on older deps.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc"><code>4849a92</code></a> Punctuation.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7"><code>197c35e</code></a> Update changelog and hopefully I don't forget to publish release again :))</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f"><code>14dc1c9</code></a> Update examples to use 3.11 and make the adhoc layout example look a bit more...</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0">compare view</a></li> </ul> </details> <br /> Updates `syrupy` from 5.1.0 to 5.2.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/releases">syrupy's releases</a>.</em></p> <blockquote> <h2>v5.2.0</h2> <h2>What's Changed</h2> <ul> <li>chore(deps): update actions/checkout action to v6.0.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1065">syrupy-project/syrupy#1065</a></li> <li>chore(deps): update actions/setup-python action to v6.2.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1066">syrupy-project/syrupy#1066</a></li> <li>chore(deps): update dependency ruff to v0.14.14 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1067">syrupy-project/syrupy#1067</a></li> <li>chore(deps): update dependency coverage to v7.13.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1068">syrupy-project/syrupy#1068</a></li> <li>chore: migrate to uv, close <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1019">#1019</a> by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1049">syrupy-project/syrupy#1049</a></li> <li>chore(deps): update dependency coverage to v7.13.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1069">syrupy-project/syrupy#1069</a></li> <li>chore(deps): update dependency debugpy to v1.8.19 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1070">syrupy-project/syrupy#1070</a></li> <li>chore(deps): update dependency mypy to v1.19.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1071">syrupy-project/syrupy#1071</a></li> <li>chore(deps): update dependency ruff to v0.14.14 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1072">syrupy-project/syrupy#1072</a></li> <li>chore(deps): update python docker tag to v3.14.3 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1073">syrupy-project/syrupy#1073</a></li> <li>chore(deps): update astral-sh/setup-uv action to v7.3.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1076">syrupy-project/syrupy#1076</a></li> <li>chore: update lock file by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1077">syrupy-project/syrupy#1077</a></li> <li>chore(deps): update benchmark-action/github-action-benchmark action to v1.21.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1078">syrupy-project/syrupy#1078</a></li> <li>chore(deps): update astral-sh/setup-uv action to v7.5.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1080">syrupy-project/syrupy#1080</a></li> <li>fix(<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1081">#1081</a>): Handle unicode line-endings correctly when serializing by <a href="https://github.com/DRMacIver"><code>@DRMacIver</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1082">syrupy-project/syrupy#1082</a></li> <li>docs: add DRMacIver as a contributor for bug by <a href="https://github.com/allcontributors"><code>@allcontributors</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1083">syrupy-project/syrupy#1083</a></li> <li>chore: update lockfile by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1086">syrupy-project/syrupy#1086</a></li> <li>chore: migrate off semantic-release to trusted publishing by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1093">syrupy-project/syrupy#1093</a></li> <li>chore: set name/email by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1094">syrupy-project/syrupy#1094</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/DRMacIver"><code>@DRMacIver</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1082">syrupy-project/syrupy#1082</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.1.0...v5.2.0">https://github.com/syrupy-project/syrupy/compare/v5.1.0...v5.2.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md">syrupy's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/syrupy-project/syrupy/releases/tag/v5.2.0">v5.2.0</a> (2026-05-16)</h2> <h2>What's Changed</h2> <ul> <li>chore(deps): update actions/checkout action to v6.0.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1065">syrupy-project/syrupy#1065</a></li> <li>chore(deps): update actions/setup-python action to v6.2.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1066">syrupy-project/syrupy#1066</a></li> <li>chore(deps): update dependency ruff to v0.14.14 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1067">syrupy-project/syrupy#1067</a></li> <li>chore(deps): update dependency coverage to v7.13.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1068">syrupy-project/syrupy#1068</a></li> <li>chore: migrate to uv, close <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1019">#1019</a> by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1049">syrupy-project/syrupy#1049</a></li> <li>chore(deps): update dependency coverage to v7.13.2 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1069">syrupy-project/syrupy#1069</a></li> <li>chore(deps): update dependency debugpy to v1.8.19 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1070">syrupy-project/syrupy#1070</a></li> <li>chore(deps): update dependency mypy to v1.19.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1071">syrupy-project/syrupy#1071</a></li> <li>chore(deps): update dependency ruff to v0.14.14 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1072">syrupy-project/syrupy#1072</a></li> <li>chore(deps): update python docker tag to v3.14.3 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1073">syrupy-project/syrupy#1073</a></li> <li>chore(deps): update astral-sh/setup-uv action to v7.3.1 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1076">syrupy-project/syrupy#1076</a></li> <li>chore: update lock file by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1077">syrupy-project/syrupy#1077</a></li> <li>chore(deps): update benchmark-action/github-action-benchmark action to v1.21.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1078">syrupy-project/syrupy#1078</a></li> <li>chore(deps): update astral-sh/setup-uv action to v7.5.0 by <a href="https://github.com/renovate"><code>@renovate</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1080">syrupy-project/syrupy#1080</a></li> <li>fix(<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1081">#1081</a>): Handle unicode line-endings correctly when serializing by <a href="https://github.com/DRMacIver"><code>@DRMacIver</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1082">syrupy-project/syrupy#1082</a></li> <li>docs: add DRMacIver as a contributor for bug by <a href="https://github.com/allcontributors"><code>@allcontributors</code></a>[bot] in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1083">syrupy-project/syrupy#1083</a></li> <li>chore: update lockfile by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1086">syrupy-project/syrupy#1086</a></li> <li>chore: migrate off semantic-release to trusted publishing by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1093">syrupy-project/syrupy#1093</a></li> <li>chore: set name/email by <a href="https://github.com/noahnu"><code>@noahnu</code></a> in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1094">syrupy-project/syrupy#1094</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/DRMacIver"><code>@DRMacIver</code></a> made their first contribution in <a href="https://redirect.github.com/syrupy-project/syrupy/pull/1082">syrupy-project/syrupy#1082</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/syrupy-project/syrupy/compare/v5.1.0...v5.2.0">https://github.com/syrupy-project/syrupy/compare/v5.1.0...v5.2.0</a></p> <h2><a href="https://github.com/syrupy-project/syrupy/compare/v5.1.1...v5.1.2">5.1.2</a> (2026-04-06)</h2> <h3>Bug Fixes</h3> <ul> <li>build configuration (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1086">#1086</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/a997e3e643b55342af2e1d89d7b24d6c1fbadc1f">a997e3e</a>)</li> </ul> <h2><a href="https://github.com/syrupy-project/syrupy/compare/v5.1.0...v5.1.1">5.1.1</a> (2026-04-06)</h2> <h3>Bug Fixes</h3> <ul> <li><strong><a href="https://redirect.github.com/syrupy-project/syrupy/issues/1081">#1081</a>:</strong> Handle unicode line-endings correctly when serializing (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1082">#1082</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/04f4cc8e21ae743d4ebc95a0961f0802f57f1856">04f4cc8</a>), closes <a href="https://redirect.github.com/syrupy-project/syrupy/issues/1081">#1081</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/syrupy-project/syrupy/commit/c6bc988ee61ded4c1bea1e13a1d95e42c68219b0"><code>c6bc988</code></a> chore: push on correct branch</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/659f456bfef13df50fef5c95f84248b8fd720a60"><code>659f456</code></a> chore: add id-token write</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/6401bc28aab02447dfc698beba33df6fd6d93817"><code>6401bc2</code></a> chore: set name/email (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1094">#1094</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/f1e3f0bac92a683a7412d4e1fbaf076e82c932de"><code>f1e3f0b</code></a> chore: migrate off semantic-release to trusted publishing (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1093">#1093</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/8ff4d46fe1b4392d9d2f3ac1a2228911d9939948"><code>8ff4d46</code></a> chore(release): 5.1.2 [skip ci]</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/a997e3e643b55342af2e1d89d7b24d6c1fbadc1f"><code>a997e3e</code></a> fix: build configuration (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1086">#1086</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/561c94a136b183f5f22eb71f5b660e0f46e01b5b"><code>561c94a</code></a> chore(release): 5.1.1 [skip ci]</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/dfdba17b3cb983a5452f35e712c074cc1186d935"><code>dfdba17</code></a> docs: add DRMacIver as a contributor for bug (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1083">#1083</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/04f4cc8e21ae743d4ebc95a0961f0802f57f1856"><code>04f4cc8</code></a> fix(<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1081">#1081</a>): Handle unicode line-endings correctly when serializing (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1082">#1082</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/34f9b27e699a690e7ca1644a8a64d10a0e7d789c"><code>34f9b27</code></a> chore(deps): update astral-sh/setup-uv action to v7.5.0 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1080">#1080</a>)</li> <li>Additional commits viewable in <a href="https://github.com/syrupy-project/syrupy/compare/v5.1.0...v5.2.0">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.15.5 to 0.15.13 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.15.13</h2> <h2>Release Notes</h2> <p>Released on 2026-05-14.</p> <h3>Preview features</h3> <ul> <li>Add a rule to flag lazy imports that are eagerly evaluated (<a href="https://redirect.github.com/astral-sh/ruff/pull/25016">#25016</a>)</li> <li>[<code>pylint</code>] Standardize diagnostic message (<code>PLR0914</code>, <code>PLR0917</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24996">#24996</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Fix <code>F811</code> false positive for class methods (<a href="https://redirect.github.com/astral-sh/ruff/pull/24933">#24933</a>)</li> <li>Fix setting selection for multi-folder workspace (<a href="https://redirect.github.com/astral-sh/ruff/pull/24819">#24819</a>)</li> <li>[<code>eradicate</code>] Fix false positive for lines with leading whitespace (<code>ERA001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25122">#25122</a>)</li> <li>[<code>flake8-pyi</code>] Fix false positive for f-string debug specifier (<code>PYI016</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24098">#24098</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>Always include panic payload in panic diagnostic message (<a href="https://redirect.github.com/astral-sh/ruff/pull/24873">#24873</a>)</li> <li>Restrict <code>PYI034</code> for in-place operations to enclosing class (<a href="https://redirect.github.com/astral-sh/ruff/pull/24511">#24511</a>)</li> <li>Improve error message for parameters that are declared <code>global</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24902">#24902</a>)</li> <li>Update known stdlib (<a href="https://redirect.github.com/astral-sh/ruff/pull/25103">#25103</a>)</li> </ul> <h3>Performance</h3> <ul> <li>[<code>isort</code>] Avoid constructing <code>glob::Pattern</code>s for literal known modules (<a href="https://redirect.github.com/astral-sh/ruff/pull/25123">#25123</a>)</li> </ul> <h3>CLI</h3> <ul> <li>Add TOML examples to <code>--config</code> help text (<a href="https://redirect.github.com/astral-sh/ruff/pull/25013">#25013</a>)</li> <li>Colorize ruff check 'All checks passed' (<a href="https://redirect.github.com/astral-sh/ruff/pull/25085">#25085</a>)</li> </ul> <h3>Configuration</h3> <ul> <li>Increase max allowed value of <code>line-length</code> setting (<a href="https://redirect.github.com/astral-sh/ruff/pull/24962">#24962</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Add <code>D203</code> to rules that conflict with the formatter (<a href="https://redirect.github.com/astral-sh/ruff/pull/25044">#25044</a>)</li> <li>Clarify <code>COM819</code> and formatter interaction (<a href="https://redirect.github.com/astral-sh/ruff/pull/25045">#25045</a>)</li> <li>Clarify that <code>NotImplemented</code> is a value, not an exception (<code>F901</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25054">#25054</a>)</li> <li>Update number of lint rules supported (<a href="https://redirect.github.com/astral-sh/ruff/pull/24942">#24942</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Simplify the playground's markdown template (<a href="https://redirect.github.com/astral-sh/ruff/pull/24924">#24924</a>)</li> </ul> <h3>Contributors</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.15.13</h2> <p>Released on 2026-05-14.</p> <h3>Preview features</h3> <ul> <li>Add a rule to flag lazy imports that are eagerly evaluated (<a href="https://redirect.github.com/astral-sh/ruff/pull/25016">#25016</a>)</li> <li>[<code>pylint</code>] Standardize diagnostic message (<code>PLR0914</code>, <code>PLR0917</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24996">#24996</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>Fix <code>F811</code> false positive for class methods (<a href="https://redirect.github.com/astral-sh/ruff/pull/24933">#24933</a>)</li> <li>Fix setting selection for multi-folder workspace (<a href="https://redirect.github.com/astral-sh/ruff/pull/24819">#24819</a>)</li> <li>[<code>eradicate</code>] Fix false positive for lines with leading whitespace (<code>ERA001</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25122">#25122</a>)</li> <li>[<code>flake8-pyi</code>] Fix false positive for f-string debug specifier (<code>PYI016</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24098">#24098</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>Always include panic payload in panic diagnostic message (<a href="https://redirect.github.com/astral-sh/ruff/pull/24873">#24873</a>)</li> <li>Restrict <code>PYI034</code> for in-place operations to enclosing class (<a href="https://redirect.github.com/astral-sh/ruff/pull/24511">#24511</a>)</li> <li>Improve error message for parameters that are declared <code>global</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24902">#24902</a>)</li> <li>Update known stdlib (<a href="https://redirect.github.com/astral-sh/ruff/pull/25103">#25103</a>)</li> </ul> <h3>Performance</h3> <ul> <li>[<code>isort</code>] Avoid constructing <code>glob::Pattern</code>s for literal known modules (<a href="https://redirect.github.com/astral-sh/ruff/pull/25123">#25123</a>)</li> </ul> <h3>CLI</h3> <ul> <li>Add TOML examples to <code>--config</code> help text (<a href="https://redirect.github.com/astral-sh/ruff/pull/25013">#25013</a>)</li> <li>Colorize ruff check 'All checks passed' (<a href="https://redirect.github.com/astral-sh/ruff/pull/25085">#25085</a>)</li> </ul> <h3>Configuration</h3> <ul> <li>Increase max allowed value of <code>line-length</code> setting (<a href="https://redirect.github.com/astral-sh/ruff/pull/24962">#24962</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Add <code>D203</code> to rules that conflict with the formatter (<a href="https://redirect.github.com/astral-sh/ruff/pull/25044">#25044</a>)</li> <li>Clarify <code>COM819</code> and formatter interaction (<a href="https://redirect.github.com/astral-sh/ruff/pull/25045">#25045</a>)</li> <li>Clarify that <code>NotImplemented</code> is a value, not an exception (<code>F901</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/25054">#25054</a>)</li> <li>Update number of lint rules supported (<a href="https://redirect.github.com/astral-sh/ruff/pull/24942">#24942</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Simplify the playground's markdown template (<a href="https://redirect.github.com/astral-sh/ruff/pull/24924">#24924</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49"><code>2afb467</code></a> Bump 0.15.13 (<a href="https://redirect.github.com/astral-sh/ruff/issues/25157">#25157</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b"><code>3008796</code></a> [ty] classify TypeVar semantic tokens as type parameters (<a href="https://redirect.github.com/astral-sh/ruff/issues/24891">#24891</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8"><code>79470e3</code></a> [<code>isort</code>] Avoid constructing <code>glob::Pattern</code>s for literal known modules (<a href="https://redirect.github.com/astral-sh/ruff/issues/25123">#25123</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0"><code>2522549</code></a> Remove shellcheck from prek (<a href="https://redirect.github.com/astral-sh/ruff/issues/25154">#25154</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06"><code>7db7170</code></a> [ty] Support TypedDict key completions in incomplete, anonymous contexts (<a href="https://redirect.github.com/astral-sh/ruff/issues/25">#25</a>...</li> <li><a href="https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0"><code>bb3dd53</code></a> [ty] Run full iteration analysis on narrowed typevars (<a href="https://redirect.github.com/astral-sh/ruff/issues/25143">#25143</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a"><code>828cdb7</code></a> [ty] Isolate file-watching test environment (<a href="https://redirect.github.com/astral-sh/ruff/issues/25151">#25151</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d"><code>89e1d86</code></a> [ty] Preserve TypedDict keys through dict unpacking (<a href="https://redirect.github.com/astral-sh/ruff/issues/24523">#24523</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da"><code>86f3064</code></a> [ty] Avoid accessing <code>args[0]</code> for <code>static_assert</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/25149">#25149</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a"><code>ed819f9</code></a> [ty] Treat custom enum <code>__new__</code> values as dynamic (<a href="https://redirect.github.com/astral-sh/ruff/issues/25136">#25136</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.5...0.15.13">compare view</a></li> </ul> </details> <br /> Updates `openai` from 2.26.0 to 2.37.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/openai/openai-python/releases">openai's releases</a>.</em></p> <blockquote> <h2>v2.37.0</h2> <h2>2.37.0 (2026-05-13)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0">v2.36.0...v2.37.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> add service_tier parameter to responses compact method (<a href="https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374">625827c</a>)</li> <li><strong>internal/types:</strong> support eagerly validating pydantic iterators (<a href="https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa">7e527bc</a>)</li> <li>Remove unnecessary client_id when using workload identity provider for auth (<a href="https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597">c39ea8d</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>client:</strong> add missing f-string prefix in file type error message (<a href="https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00">c85ebd9</a>)</li> </ul> <h2>v2.36.0</h2> <h2>2.36.0 (2026-05-07)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-python/compare/v2.35.1...v2.36.0">v2.35.1...v2.36.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> manual updates (<a href="https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2">13c639c</a>)</li> <li><strong>api:</strong> realtime 2 (<a href="https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e">8fe0ab8</a>)</li> </ul> <h2>v2.35.1</h2> <h2>2.35.1 (2026-05-06)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-python/compare/v2.35.0...v2.35.1">v2.35.0...v2.35.1</a></p> <h3>Bug Fixes</h3> <ul> <li><strong>api:</strong> fix imagegen <code>size</code> enum regression (<a href="https://github.com/openai/openai-python/commit/44846536bc3b02c393daa5bae70a85de04c7f621">4484653</a>)</li> </ul> <h2>v2.35.0</h2> <h2>2.35.0 (2026-05-06)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-python/compare/v2.34.0...v2.35.0">v2.34.0...v2.35.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> update image 2 (<a href="https://github.com/openai/openai-python/commit/0ba55d7569565045426e1587906a70d5682a4bba">0ba55d7</a>)</li> <li><strong>api:</strong> manual updates (<a href="https://github.com/openai/openai-python/commit/72bf67acbc9f030c20db3d5a1a74ea6d67d55f51">72bf67a</a>)</li> </ul> <h3>Chores</h3> <ul> <li>remove legacy python cli (<a href="https://github.com/openai/openai-python/commit/32f36e447d02c3124af8ab48fcc3537df2fed66e">32f36e4</a>)</li> <li>rename legacy python cli entrypoint (<a href="https://github.com/openai/openai-python/commit/a3b182d6d2c2e6fe1d53ca7550b2d43e0f8b2cd3">a3b182d</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/openai/openai-python/blob/main/CHANGELOG.md">openai's changelog</a>.</em></p> <blockquote> <h2>2.37.0 (2026-05-13)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0">v2.36.0...v2.37.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> add service_tier parameter to responses compact method (<a href="https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374">625827c</a>)</li> <li><strong>internal/types:</strong> support eagerly validating pydantic iterators (<a href="https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa">7e527bc</a>)</li> <li>Remove unnecessary client_id when using workload identity provider for auth (<a href="https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597">c39ea8d</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><strong>client:</strong> add missing f-string prefix in file type error message (<a href="https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00">c85ebd9</a>)</li> </ul> <h2>2.36.0 (2026-05-07)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-python/compare/v2.35.1...v2.36.0">v2.35.1...v2.36.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> manual updates (<a href="https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2">13c639c</a>)</li> <li><strong>api:</strong> realtime 2 (<a href="https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e">8fe0ab8</a>)</li> </ul> <h2>2.35.1 (2026-05-06)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-python/compare/v2.35.0...v2.35.1">v2.35.0...v2.35.1</a></p> <h3>Bug Fixes</h3> <ul> <li><strong>api:</strong> fix imagegen <code>size</code> enum regression (<a href="https://github.com/openai/openai-python/commit/44846536bc3b02c393daa5bae70a85de04c7f621">4484653</a>)</li> </ul> <h2>2.35.0 (2026-05-06)</h2> <p>Full Changelog: <a href="https://github.com/openai/openai-python/compare/v2.34.0...v2.35.0">v2.34.0...v2.35.0</a></p> <h3>Features</h3> <ul> <li><strong>api:</strong> update image 2 (<a href="https://github.com/openai/openai-python/commit/0ba55d7569565045426e1587906a70d5682a4bba">0ba55d7</a>)</li> <li><strong>api:</strong> manual updates (<a href="https://github.com/openai/openai-python/commit/72bf67acbc9f030c20db3d5a1a74ea6d67d55f51">72bf67a</a>)</li> </ul> <h3>Chores</h3> <ul> <li>remove legacy python cli (<a href="https://github.com/openai/openai-python/commit/32f36e447d02c3124af8ab48fcc3537df2fed66e">32f36e4</a>)</li> <li>rename legacy python cli entrypoint (<a href="https://github.com/openai/openai-python/commit/a3b182d6d2c2e6fe1d53ca7550b2d43e0f8b2cd3">a3b182d</a>)</li> </ul> <h3>Documentation</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/openai/openai-python/commit/658be644f48028ea3c7b1545034470fda75a70ba"><code>658be64</code></a> Merge pull request <a href="https://redirect.github.com/openai/openai-python/issues/3213">#3213</a> from openai/release-please--branches--main--changes-...</li> <li><a href="https://github.com/openai/openai-python/commit/8a7cac34cbc64fe02854beb3659f4bb5f46815f9"><code>8a7cac3</code></a> release: 2.37.0</li> <li><a href="https://github.com/openai/openai-python/commit/9b4bf8edbac6aab217f1ac4436a47cbca2cad43b"><code>9b4bf8e</code></a> Merge pull request <a href="https://redirect.github.com/openai/openai-python/issues/1903">#1903</a> from stainless-sdks/dev/jtian/remove-unnecessary-params</li> <li><a href="https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597"><code>c39ea8d</code></a> feat: Remove unnecessary client_id when using workload identity provider for ...</li> <li><a href="https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa"><code>7e527bc</code></a> feat(internal/types): support eagerly validating pydantic iterators</li> <li><a href="https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374"><code>625827c</code></a> feat(api): add service_tier parameter to responses compact method</li> <li><a href="https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00"><code>c85ebd9</code></a> fix(client): add missing f-string prefix in file type error message</li> <li><a href="https://github.com/openai/openai-python/commit/38d75d74a5626472cd7d1be9705ea8aba29a6b22"><code>38d75d7</code></a> Merge pull request <a href="https://redirect.github.com/openai/openai-python/issues/3205">#3205</a> from openai/release-please--branches--main--changes-...</li> <li><a href="https://github.com/openai/openai-python/commit/ff683ffbeba94fc01d93966b774c05a3471f2495"><code>ff683ff</code></a> release: 2.36.0</li> <li><a href="https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e"><code>8fe0ab8</code></a> feat(api): realtime 2</li> <li>Additional commits viewable in <a href="https://github.com/openai/openai-python/compare/v2.26.0...v2.37.0">compare view</a></li> </ul> </details> <br /> Updates `tiktoken` from 0.12.0 to 0.13.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/openai/tiktoken/blob/main/CHANGELOG.md">tiktoken's changelog</a>.</em></p> <blockquote> <h2>[v0.13.0]</h2> <ul> <li>Update fancy-regex for significantly increased performance</li> <li>Branch byte pair encoding to fix performance on unusual input</li> <li>Fix AttributeError caused by incomplete redaction of experimental code</li> <li>Update version of <code>pyo3</code></li> <li>Update version of optional dependency <code>blobfile</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/openai/tiktoken/commit/fa8b65d062fb6a656ac3810c89efde4c8ab999e2"><code>fa8b65d</code></a> Partial sync of codebase (<a href="https://redirect.github.com/openai/tiktoken/issues/543">#543</a>)</li> <li><a href="https://github.com/openai/tiktoken/commit/dcb39287a1f90a94d4bf6146df25da03c017646f"><code>dcb3928</code></a> [codex] Pin GitHub Actions workflow references (<a href="https://redirect.github.com/openai/tiktoken/issues/515">#515</a>)</li> <li><a href="https://github.com/openai/tiktoken/commit/6ec8149812275a88a99dfddb54a60b6d98d75bc2"><code>6ec8149</code></a> Partial sync of codebase (<a href="https://redirect.github.com/openai/tiktoken/issues/495">#495</a>)</li> <li><a href="https://github.com/openai/tiktoken/commit/6ad70b2d03756a7c3ea2eb9d295b34fd73c77283"><code>6ad70b2</code></a> Upgrade GitHub Actions for Node 24 compatibility (<a href="https://redirect.github.com/openai/tiktoken/issues/472">#472</a>)</li> <li>See full diff in <a href="https://github.com/openai/tiktoken/compare/0.12.0...0.13.0">compare view</a></li> </ul> </details> <br /> Updates `pydantic` from 2.12.3 to 2.13.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pydantic/pydantic/releases">pydantic's releases</a>.</em></p> <blockquote> <h2>v2.13.4 2026-05-06</h2> <h2>v2.13.4 (2026-05-06)</h2> <h3>What's Changed</h3> <h4>Packaging</h4> <ul> <li>Bump libc from 0.2.155 to 0.2.185 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13109">#13109</a></li> <li>Adapt <code>pydantic-core</code> linker flags on macOS by <a href="https://github.com/washingtoneg"><code>@washingtoneg</code></a> and <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13147">#13147</a></li> </ul> <h4>Fixes</h4> <ul> <li>Preserve <code>RootModel</code> core metadata by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13129">#13129</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4">https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4</a></p> <h2>v2.13.3 2026-04-20</h2> <h2>v2.13.3 (2026-04-20)</h2> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Handle <code>AttributeError</code> subclasses with <code>from_attributes</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13096">#13096</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3">https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3</a></p> <h2>v2.13.2 2026-04-17</h2> <h2>v2.13.2 (2026-04-17)</h2> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Fix <code>ValidationInfo.field_name</code> missing with <code>model_validate_json()</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13084">#13084</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2">https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2</a></p> <h2>v2.13.1 2026-04-15</h2> <h2>v2.13.1 (2026-04-15)</h2> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Fix <code>ValidationInfo.data</code> missing with <code>model_validate_json()</code> by <a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13079">#13079</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1">https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1</a></p> <h2>v2.13.0 2026-04-13</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pydantic/pydantic/blob/v2.13.4/HISTORY.md">pydantic's changelog</a>.</em></p> <blockquote> <h2>v2.13.4 (2026-05-06)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.13.4">GitHub release</a></p> <h3>What's Changed</h3> <h4>Packaging</h4> <ul> <li>Bump libc from 0.2.155 to 0.2.185 by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13109">#13109</a></li> <li>Adapt <code>pydantic-core</code> linker flags on macOS by <a href="https://github.com/washingtoneg"><code>@washingtoneg</code></a> and <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13147">#13147</a></li> </ul> <h4>Fixes</h4> <ul> <li>Preserve <code>RootModel</code> core metadata by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13129">#13129</a></li> </ul> <h2>v2.13.3 (2026-04-20)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.13.3">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Handle <code>AttributeError</code> subclasses with <code>from_attributes</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13096">#13096</a></li> </ul> <h2>v2.13.2 (2026-04-17)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.13.2">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Fix <code>ValidationInfo.field_name</code> missing with <code>model_validate_json()</code> by <a href="https://github.com/Viicos"><code>@Viicos</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13084">#13084</a></li> </ul> <h2>v2.13.1 (2026-04-15)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.13.1">GitHub release</a></p> <h3>What's Changed</h3> <h4>Fixes</h4> <ul> <li>Fix <code>ValidationInfo.data</code> missing with <code>model_validate_json()</code> by <a href="https://github.com/davidhewitt"><code>@davidhewitt</code></a> in <a href="https://redirect.github.com/pydantic/pydantic/pull/13079">#13079</a></li> </ul> <h2>v2.13.0 (2026-04-13)</h2> <p><a href="https://github.com/pydantic/pydantic/releases/tag/v2.13.0">GitHub release</a></p> <p>The highlights of the v2.13 release are available in the <a href="https://pydantic.dev/articles/pydantic-v2-13-release">blog post</a>.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382"><code>cf67d4b</code></a> Fix linting</li> <li><a href="https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662"><code>f0d8a21</code></a> Prepare release v2.13.4</li> <li><a href="https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a"><code>5e3fe1d</code></a> Check for pydantic tag pattern in CI</li> <li><a href="https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686"><code>7f9edcc</code></a> Document tagging conventions</li> <li><a href="https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c"><code>b46a0c9</code></a> Adapt <code>pydantic-core</code> linker flags on macOS</li> <li><a href="https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400"><code>50629c8</code></a> Update to PyPy 7.3.22</li> <li><a href="https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725"><code>8522ebb</code></a> Preserve <code>RootModel</code> core metadata</li> <li><a href="https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8"><code>a37f3af</code></a> Adapt <code>MISSING</code> sentinel test to work with unreleased <code>typing_extensions</code> ver...</li> <li><a href="https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2"><code>909259a</code></a> Remove Logfire example in documentation</li> <li><a href="https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df"><code>2c4174c</code></a> Bump libc from 0.2.155 to 0.2.185</li> <li>Additional commits viewable in <a href="https://github.com/pydantic/pydantic/compare/v2.12.3...v2.13.4">compare view</a></li> </ul> </details> <br /> Updates `requests` from 2.33.0 to 2.34.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/psf/requests/releases">requests's releases</a>.</em></p> <blockquote> <h2>v2.34.2</h2> <h2>2.34.2 (2026-05-14)</h2> <ul> <li>Moved <code>headers</code> input type back to <code>Mapping</code> to avoid invariance issues with <code>MutableMapping</code> and inferred dict types. Users calling <code>Request.headers.update()</code> may need to narrow typing in their code. (<a href="https://redirect.github.com/psf/requests/issues/7441">#7441</a>)</li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14">https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14</a></p> <h2>v2.34.1</h2> <h2>2.34.1 (2026-05-13)</h2> <p><strong>Bugfixes</strong></p> <ul> <li>Widened <code>json</code> input type from <code>dict</code> and <code>list</code> to <code>Mapping</code> and <code>Sequence</code>. (<a href="https://redirect.github.com/psf/requests/issues/7436">#7436</a>)</li> <li>Changed <code>headers</code> input type to MutableMapping and removed <code>None</code> from <code>Request.headers</code> typing to improve handling for users. (<a href="https://redirect.github.com/psf/requests/issues/7431">#7431</a>)</li> <li><code>Response.reason</code> moved from <code>str | None</code> to <code>str</code> to improve handling for users. (<a href="https://redirect.github.com/psf/requests/issues/7437">#7437</a>)</li> <li>Fixed a bug where some bodies with custom <code>__getattr__</code> implementations weren't being properly detected as Iterables. (<a href="https://redirect.github.com/psf/requests/issues/7433">#7433</a>)</li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/k223kim"><code>@k223kim</code></a> made their first contribution in <a href="https://redirect.github.com/psf/requests/pull/7433">psf/requests#7433</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13">https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13</a></p> <h2>v2.34.0</h2> <h2>2.34.0 (2026-05-11)</h2> <p><strong>Announcements</strong></p> <ul> <li> <p>Requests 2.34.0 introduces inline types, replacing those provided by typeshed. Public API types should be fully compatible with mypy, pyright, and ty. <strong>We believe types are comprehensive but if you find issues, please report them to the <a href="https://redirect.github.com/psf/requests/issues/7271">pinned tracking issue</a>.</strong></p> <p>Special thanks to <a href="https://github.com/bastimeyer"><code>@bastimeyer</code></a>, <a href="https://github.com/cthoyt"><code>@cthoyt</code></a>, <a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a>, and <a href="https://github.com/srittau"><code>@srittau</code></a> for helping review and test the types ahead of the release. (<a href="https://redirect.github.com/psf/requests/issues/7272">#7272</a>)</p> </li> </ul> <p><strong>Improvements</strong></p> <ul> <li>Digest Auth hashing algorithms have added <code>usedforsecurity=False</code> to clarify security considerations. (<a href="https://redirect.github.com/psf/requests/issues/7310">#7310</a>)</li> <li>Requests added support for Python 3.15 based on beta1. Downstream projects should be able to start testing prior to its release in October. (<a href="https://redirect.github.com/psf/requests/issues/7422">#7422</a>)</li> <li>Requests added support for Python 3.14t. (<a href="https://redirect.github.com/psf/requests/issues/7419">#7419</a>)</li> </ul> <p><strong>Bugfixes</strong></p> <ul> <li><code>Response.history</code> no longer contains a reference to itself, preventing accidental looping when traversing the history list. (<a href="https://redirect.github.com/psf/requests/issues/7328">#7328</a>)</li> <li>Requests no longer performs greedy matching on no_proxy domains. The</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psf/requests/blob/main/HISTORY.md">requests's changelog</a>.</em></p> <blockquote> <h2>2.34.2 (2026-05-14)</h2> <ul> <li>Moved <code>headers</code> input type back to <code>Mapping</code> to avoid invariance issues with <code>MutableMapping</code> and inferred dict types. Users calling <code>Request.headers.update()</code> may need to narrow typing in their code. (<a href="https://redirect.github.com/psf/requests/issues/7441">#7441</a>)</li> </ul> <h2>2.34.1 (2026-05-13)</h2> <p><strong>Bugfixes</strong></p> <ul> <li>Widened <code>json</code> input type from <code>dict</code> and <code>list</code> to <code>Mapping</code> and <code>Sequence</code>. (<a href="https://redirect.github.com/psf/requests/issues/7436">#7436</a>)</li> <li>Changed <code>headers</code> input type to MutableMapping and removed <code>None</code> from <code>Request.headers</code> typing to improve handling for users. (<a href="https://redirect.github.com/psf/requests/issues/7431">#7431</a>)</li> <li><code>Response.reason</code> moved from <code>str | None</code> to <code>str</code> to improve handling for users. (<a href="https://redirect.github.com/psf/requests/issues/7437">#7437</a>)</li> <li>Fixed a bug where some bodies with custom <code>__getattr__</code> implementations weren't being properly detected as Iterables. (<a href="https://redirect.github.com/psf/requests/issues/7433">#7433</a>)</li> </ul> <h2>2.34.0 (2026-05-11)</h2> <p><strong>Announcements</strong></p> <ul> <li> <p>Requests 2.34.0 introduces inline types, replacing those provided by typeshed. Public API types should be fully compatible with mypy, pyright, and ty. We believe types are comprehensive but if you find issues, please report them to the pinned tracking issue.</p> <p>Special thanks to <a href="https://github.com/bastimeyer"><code>@bastimeyer</code></a>, <a href="https://github.com/cthoyt"><code>@cthoyt</code></a>, <a href="https://github.com/edgarrmondragon"><code>@edgarrmondragon</code></a>, and <a href="https://github.com/srittau"><code>@srittau</code></a> for helping review and test the types ahead of the release. (<a href="https://redirect.github.com/psf/requests/issues/7272">#7272</a>)</p> </li> </ul> <p><strong>Improvements</strong></p> <ul> <li>Digest Auth hashing algorithms have added <code>usedforsecurity=False</code> to clarify security considerations. (<a href="https://redirect.github.com/psf/requests/issues/7310">#7310</a>)</li> <li>Requests added support for Python 3.15 based on beta1. Downstream projects should be able to start testing prior to its release in October. (<a href="https://redirect.github.com/psf/requests/issues/7422">#7422</a>)</li> <li>Requests added support for Python 3.14t. (<a href="https://redirect.github.com/psf/requests/issues/7419">#7419</a>)</li> </ul> <p><strong>Bugfixes</strong></p> <ul> <li><code>Response.history</code> no longer contains a reference to itself, preventing accidental looping when traversing the history list. (<a href="https://redirect.github.com/psf/requests/issues/7328">#7328</a>)</li> <li>Requests no longer performs greedy matching on no_proxy domains. The proxy_bypass implementation has been updated with CPython's fix from bpo-39057. (<a href="https://redirect.github.com/psf/requests/issues/7427">#7427</a>)</li> <li>Requests no longer incorrectly strips duplicate leading slashes in URI paths. This should address user issues with specific presigned URLs. Note the full fix requires urllib3 2.7.0+. (<a href="https://redirect.github.com/psf/requests/issues/7315">#7315</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3"><code>6e83187</code></a> v2.34.2</li> <li><a href="https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b"><code>84d10f0</code></a> Move Request.headers back to Mapping (<a href="https://redirect.github.com/psf/requests/issues/7441">#7441</a>)</li> <li><a href="https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224"><code>b7b549b</code></a> v2.34.1</li> <li><a href="https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe"><code>e511bc7</code></a> Fix mutability issues with headers input types (<a href="https://redirect.github.com/psf/requests/issues/7431">#7431</a>)</li> <li><a href="https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61"><code>5691f59</code></a> Update JsonType containers to read-based collections (<a href="https://redirect.github.com/psf/requests/issues/7436">#7436</a>)</li> <li><a href="https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035"><code>2144213</code></a> Constrain Response.reason to str (<a href="https://redirect.github.com/psf/requests/issues/7437">#7437</a>)</li> <li><a href="https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232"><code>6404f34</code></a> Fix <code>prepare_body</code> stream detection for <code>__getattr__</code>-based file wrappers (<a href="https://redirect.github.com/psf/requests/issues/7">#7</a>...</li> <li><a href="https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca"><code>0b401c7</code></a> v2.34.0</li> <li><a href="https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4"><code>86b378d</code></a> Align Session.get parameters with requests.get (<a href="https://redirect.github.com/psf/requests/issues/7429">#7429</a>)</li> <li><a href="https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f"><code>a4f9a59</code></a> Port bpo-39057 to Requests (<a href="https://redirect.github.com/psf/requests/issues/7427">#7427</a>)</li> <li>Additional commits viewable in <a href="https://github.com/psf/requests/compare/v2.33.0...v2.34.2">compare view</a></li> </ul> </details> <br /> Updates `langsmith` from 0.8.0 to 0.8.5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/langchain-ai/langsmith-sdk/releases">langsmith's releases</a>.</em></p> <blockquote> <h2>v0.8.5</h2> <h2>What's Changed</h2> <ul> <li>release(js): 0.7.0 by <a href="https://github.com/ramon-langchain"><code>@ramon-langchain</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2890">langchain-ai/langsmith-sdk#2890</a></li> <li>fix(js): add alias for <code>experimental/sandbox</code> to appease broad peer dep range within <code>deepagents</code> by <a href="https://github.com/dqbd"><code>@dqbd</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2893">langchain-ai/langsmith-sdk#2893</a></li> <li>feat(js): allow disabling multipart streaming via env variable by <a href="https://github.com/dqbd"><code>@dqbd</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2900">langchain-ai/langsmith-sdk#2900</a></li> <li>feat(python): add Client.close() to release session [closes LSDK-183] by <a href="https://github.com/open-swe"><code>@open-swe</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2866">langchain-ai/langsmith-sdk#2866</a></li> <li>feat(sandbox): forward client default headers on exec WebSocket by <a href="https://github.com/open-swe"><code>@open-swe</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2899">langchain-ai/langsmith-sdk#2899</a></li> <li>release(js): 0.7.1 by <a href="https://github.com/langchain-infra"><code>@langchain-infra</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2902">langchain-ai/langsmith-sdk#2902</a></li> <li>release(py): 0.8.5 by <a href="https://github.com/langchain-infra"><code>@langchain-infra</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2903">langchain-ai/langsmith-sdk#2903</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.4...v0.8.5">https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.4...v0.8.5</a></p> <h2>v0.8.4</h2> <h2>What's Changed</h2> <ul> <li>release(js): 0.6.3 by <a href="https://github.com/vishnu-ssuresh"><code>@vishnu-ssuresh</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2864">langchain-ai/langsmith-sdk#2864</a></li> <li>chore(deps): bump python-multipart from 0.0.26 to 0.0.27 in /python by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2859">langchain-ai/langsmith-sdk#2859</a></li> <li>chore(deps-dev): bump <code>@anthropic-ai/sdk</code> from 0.91.1 to 0.92.0 in /js by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2858">langchain-ai/langsmith-sdk#2858</a></li> <li>chore(deps): bump postcss from 8.5.8 to 8.5.14 in /js by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2857">langchain-ai/langsmith-sdk#2857</a></li> <li>chore(deps): bump hono from 4.12.15 to 4.12.18 in /js by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2860">langchain-ai/langsmith-sdk#2860</a></li> <li>chore(deps-dev): bump langchain-core from 1.3.2 to 1.3.3 in /python by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2867">langchain-ai/langsmith-sdk#2867</a></li> <li>chore(deps-dev): bump <code>@anthropic-ai/sdk</code> from 0.92.0 to 0.93.0 in /js by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2869">langchain-ai/langsmith-sdk#2869</a></li> <li>chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /python by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2873">langchain-ai/langsmith-sdk#2873</a></li> <li>chore(deps): bump the py-minor-and-patch group across 1 directory with 12 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2876">langchain-ai/langsmith-sdk#2876</a></li> <li>chore(deps-dev): bump the js-minor-and-patch group across 1 directory with 16 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2877">langchain-ai/langsmith-sdk#2877</a></li> <li>chore(deps): bump the py-minor-and-patch group across 1 directory with 11 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2879">langchain-ai/langsmith-sdk#2879</a></li> <li>chore(deps): bump the npm_and_yarn group across 2 directories with 2 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2868">langchain-ai/langsmith-sdk#2868</a></li> <li>chore(deps-dev): bump <code>@anthropic-ai/sdk</code> from 0.93.0 to 0.94.0 in /js by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2878">langchain-ai/langsmith-sdk#2878</a></li> <li>sdk(js): rename experimental/sandbox -> sandbox (breaking) by <a href="https://github.com/DanielKneipp"><code>@DanielKneipp</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2885">langchain-ai/langsmith-sdk#2885</a></li> <li>sdk(py): drop sandbox alpha/experimental warnings by <a href="https://github.com/DanielKneipp"><code>@DanielKneipp</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2884">langchain-ai/langsmith-sdk#2884</a></li> <li>feat(sandbox): make snapshot optional and add TS options overload by <a href="https://github.com/ramon-langchain"><code>@ramon-langchain</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2887">langchain-ai/langsmith-sdk#2887</a></li> <li>release(py): 0.8.4 by <a href="https://github.com/ramon-langchain"><code>@ramon-langchain</code></a> in <a href="https://redirect.github.com/langchain-ai/langsmith-sdk/pull/2889">langchain-ai/langsmith-sdk#2889</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.3...v0.8.4">https://github.com/langchain-ai/langsmith-sdk/compare/v0.8.3...v0.8.4</a></p> <h2>v0.8.3</h2> <h2>What's Changed</h2> <ul> <li>fix(js): prevent sending [object Object] as span attribute when dealing with nested objects, send full langsmith.usage_m... _Description has been truncated_ --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mason Daugherty <mason@langchain.dev> Co-authored-by: Mason Daugherty <github@mdrxy.com> |
||
|
|
abd9d4ce31 |
ci(infra): harden Dependabot version-bound preservation (#37510)
Dependabot has been stripping upper/lower bounds from internal `langchain-*` deps in partner `pyproject.toml` files (e.g. #37288 reduced `langchain-core>=1.3.2,<2.0.0` to bare `langchain-core`). Locks down the config so bumps preserve existing specifiers, and restores the bounds it already mangled across the monorepo. ## Changes - Add `versioning-strategy: increase` to every `uv` ecosystem block in `.github/dependabot.yml` so future bumps move the lower bound in place instead of rewriting the constraint. - Ignore workspace-internal packages (`langchain-core`, `langchain`, `langchain-classic`, `langchain-text-splitters`, `langchain-tests`, `langchain-model-profiles`) on every `uv` block — these are editable installs from local paths and their published constraints are hand-curated for release, not Dependabot's to bump. - Restore stripped bounds across all `libs/` packages — runtime `dependencies` and every dep group (`test`, `dev`, `test_integration`, `typing`, `lint`) — to `>=1.4.0,<2.0.0` for `langchain-core` and `>=1.0.0,<2.0.0` for the other internal packages. |
||
|
|
ba897ffa7e |
chore(docs): update x handle references (#37081)
## Description Updates package metadata and README badges so LangChain social links point to the new `@langchain_oss` X handle. This was completed with AI-agent assistance. ## Test Plan - [ ] Validate README badges and package metadata links point to `https://x.com/langchain_oss` _Opened collaboratively by Mason Daugherty and open-swe._ --------- Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com> Co-authored-by: Mason Daugherty <61371264+mdrxy@users.noreply.github.com> |
||
|
|
56d6e89be0 | hotfix: bump min core versions (#36996) | ||
|
|
58c4e5bbdd | release(text-splitters): 1.1.2 (#36822) | ||
|
|
c289bf10e9 | fix(text-splitters): deprecate and use SSRF-safe transport in split_text_from_url (#36821) | ||
|
|
7e81d09f2a |
chore(deps): bump pytest to 9.0.3 (#36801)
CVE-2025-71176 (medium severity) All are dev-only (test dependency group) — no impact on published packages. ### Why syrupy was also bumped syrupy 4.x (`<5.0.0`) constrains pytest to `<9.0.0`, blocking the CVE fix. Widening to `<6.0.0` allows syrupy 5.x which supports pytest 9.x. |
||
|
|
555bdfbade |
chore: add comment explaining pygments>=2.20.0 (#36570)
|
||
|
|
0f4f3f74c8 |
chore: pygments>=2.20.0 across all packages (CVE-2026-4539) (#36385)
## Summary Bumps `pygments` to `>=2.20.0` across all 21 affected packages to address [CVE-2026-4539](https://github.com/advisories/GHSA-XXXX) — ReDoS via inefficient GUID regex in Pygments. - **Severity:** Low - **Fixed in:** 2.20.0 (was 2.19.2) - **Change:** Added `pygments>=2.20.0` to `constraint-dependencies` in `[tool.uv]` for each package, then ran `uv lock --upgrade-package pygments` to regenerate lock files. Closes Dependabot alerts #3435–#3455. ## Release Note Patch deps ### Test Plan - [x] CI Green 🙏 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
61443c2580 | feat(text-splitters): support spacy tests with Python 3.14 (#36198) | ||
|
|
07fa576de1 |
ci: avoid unnecessary dep installs in lint targets (#36046)
CI lint jobs use `uv run --all-groups` for all tools, but ruff doesn't need dependency resolution — only mypy does. By splitting into `UV_RUN_LINT` (ruff) and `UV_RUN_TYPE` (mypy), the CI-facing targets run ruff with `--group lint` only, giving fast-fail feedback before mypy triggers the full environment sync. For packages where source code only conditionally imports heavy deps (text-splitters, huggingface), `lint_package` also overrides `UV_RUN_TYPE` to `--group lint --group typing`, skipping the ~3.5GB `test_integration` download entirely. `lint_tests` keeps `--all-groups` since test code legitimately imports those deps. Additionally, `lint_imports.sh` was inconsistently wired — most packages had the script but weren't calling it. ## Changes **Makefile optimization** - Introduce `UV_RUN_LINT` and `UV_RUN_TYPE` Make variables, both defaulting to `uv run --all-groups`. For `lint_package` and `lint_tests`, `UV_RUN_LINT` is overridden to `uv run --group lint` so ruff runs instantly without syncing heavy deps - For `text-splitters` and `huggingface`, override `UV_RUN_TYPE` on `lint_package` to `uv run --group lint --group typing` — mypy runs without downloading torch, CUDA, spacy, etc. **mypy config for lean groups** - Add `transformers` and `transformers.*` to `ignore_missing_imports` in `text-splitters` pyproject.toml (conditional `try/except` import, same treatment as existing `konlpy`/`nltk` entries) - Add `torch`, `torch.*`, `langchain_community`, `langchain_community.*` to `ignore_missing_imports` in `huggingface` pyproject.toml - Add dual `# type: ignore[unreachable, unused-ignore]` in `text-splitters/base.py` to handle the `PreTrainedTokenizerBase` isinstance check that behaves differently depending on whether transformers is installed **lint_imports.sh consistency** - Add `./scripts/lint_imports.sh` to the lint recipe in every package that wasn't calling it (standard-tests, model-profiles, all 15 partners), and create the script for the two packages missing it entirely (`model-profiles`, `openrouter`) - Update all `lint_imports.sh` scripts to allow `from langchain.agents` and `from langchain.tools` imports (legitimate v1 middleware dependencies used by `langchain-anthropic` and `langchain-openai`) |
||
|
|
269947b11f | release(text-splitters): 1.1.1 (#35318) | ||
|
|
b97c629f9a | style: bump ruff version to 0.15 (#35042) | ||
|
|
1493b4c5ee | fix: Server-Side Request Forgery (SSRF) in HTMLHeaderTextSplitter.split_text_from_url (#35196) | ||
|
|
83070bba8d |
chore(deps): bump the other-deps group across 3 directories with 8 updates (#35120)
Updates the requirements on [pytest](https://github.com/pytest-dev/pytest), [syrupy](https://github.com/syrupy-project/syrupy), [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio), [thinc](https://github.com/explosion/thinc), [transformers](https://github.com/huggingface/transformers) and [sentence-transformers](https://github.com/huggingface/sentence-transformers) to permit the latest version. Updates `pytest` to 9.0.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest/releases">pytest's releases</a>.</em></p> <blockquote> <h2>9.0.2</h2> <h1>pytest 9.0.2 (2025-12-06)</h1> <h2>Bug fixes</h2> <ul> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13896">#13896</a>: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.</p> <p>You may enable it again by passing <code>-p terminalprogress</code>. We may enable it by default again once compatibility improves in the future.</p> <p>Additionally, when the environment variable <code>TERM</code> is <code>dumb</code>, the escape codes are no longer emitted, even if the plugin is enabled.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13904">#13904</a>: Fixed the TOML type of the <code>tmp_path_retention_count</code> settings in the API reference from number to string.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13946">#13946</a>: The private <code>config.inicfg</code> attribute was changed in a breaking manner in pytest 9.0.0. Due to its usage in the ecosystem, it is now restored to working order using a compatibility shim. It will be deprecated in pytest 9.1 and removed in pytest 10.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13965">#13965</a>: Fixed quadratic-time behavior when handling <code>unittest</code> subtests in Python 3.10.</p> </li> </ul> <h2>Improved documentation</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/4492">#4492</a>: The API Reference now contains cross-reference-able documentation of <code>pytest's command-line flags <command-line-flags></code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2"><code>3d10b51</code></a> Prepare release version 9.0.2</li> <li><a href="https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69"><code>188750b</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14030">#14030</a> from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58"><code>b7d7bef</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14014">#14014</a> from bluetech/compat-note</li> <li><a href="https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0"><code>bd08e85</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14013">#14013</a> from pytest-dev/patchback/backports/9.0.x/922b60377...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10"><code>bc78386</code></a> Add CLI options reference documentation (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13930">#13930</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa"><code>5a4e398</code></a> Fix docs typo (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14005">#14005</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14008">#14008</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee"><code>d7ae6df</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14006">#14006</a> from pytest-dev/maintenance/update-plugin-list-tmpl...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87"><code>556f6a2</code></a> pre-commit: fix rst-lint after new release (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13999">#13999</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14001">#14001</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50"><code>c60fbe6</code></a> Fix quadratic-time behavior when handling <code>unittest</code> subtests in Python 3.10 ...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e"><code>73d9b01</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13995">#13995</a> from nicoddemus/patchback/backports/9.0.x/1b5200c0f...</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest/compare/8.0.0...9.0.2">compare view</a></li> </ul> </details> <br /> Updates `syrupy` to 5.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/releases">syrupy's releases</a>.</em></p> <blockquote> <h2>v5.1.0</h2> <h1><a href="https://github.com/syrupy-project/syrupy/compare/v5.0.0...v5.1.0">5.1.0</a> (2026-01-25)</h1> <h3>Features</h3> <ul> <li>add serializer plugin system; plugins for data models (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1062">#1062</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a">df9bc8f</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md">syrupy's changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/syrupy-project/syrupy/compare/v5.0.0...v5.1.0">5.1.0</a> (2026-01-25)</h1> <h3>Features</h3> <ul> <li>add serializer plugin system; plugins for data models (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1062">#1062</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a">df9bc8f</a>)</li> </ul> <h1><a href="https://github.com/syrupy-project/syrupy/compare/v4.9.1...v5.0.0">5.0.0</a> (2025-09-28)</h1> <ul> <li>Switch to MIT license (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/945">#945</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/d74d340f8884fdb04831fcf77f29d66e098aaa66">d74d340</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li>Block terminal summary for xdist workers. (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/978">#978</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/33a848df7c4a33577e4057eae5792f6592ad3172">33a848d</a>)</li> <li>ensure syrupy's pytest_assertrepr_compare hook is called first. (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/984">#984</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/eb0024d339248b7e1f76fdb65ed30ba3e19c0857">eb0024d</a>)</li> </ul> <h3>Code Refactoring</h3> <ul> <li>remove incorrect private underscore prefix from public methods (<a href="https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f">8cfc905</a>)</li> </ul> <h3>Features</h3> <ul> <li>add --snapshot-dirname option, close <a href="https://redirect.github.com/syrupy-project/syrupy/issues/810">#810</a> (<a href="https://github.com/syrupy-project/syrupy/commit/27135c7c861441962c2cedde841f3e4fed2949fd">27135c7</a>)</li> <li>drop support for py3.8, raise min. pytest to v8 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/904">#904</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/a879ff15ad82e59a2f387db0822be072a5684f2f">a879ff1</a>)</li> <li>update min. python version to 3.10 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1024">#1024</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/16b4113cd56da96e84a90ebda0919e9b8dd35954">16b4113</a>)</li> </ul> <h3>BREAKING CHANGES</h3> <ul> <li>The following methods have been renamed:</li> </ul> <p>SnapshotCollectionStorage</p> <ul> <li>_read_snapshot_collection -> read_snapshot_collection</li> <li>_read_snapshot_data_from_location -> read_snapshot_data_from_location</li> <li>_write_snapshot_collection -> write_snapshot_collection</li> <li>_get_file_basename -> get_file_basename</li> <li>_file_extension -> file_extension</li> </ul> <p>AmberDataSerializer</p> <ul> <li>_snapshot_sort_key -> snapshot_sort_key</li> </ul> <p>Renamed constants to improve clarity:</p> <p>constants</p> <ul> <li>SNAPSHOT_EMPTY_FOSSIL_KEY -> SNAPSHOT_EMPTY_COLLECTION_KEY</li> <li>SNAPSHOT_UNKNOWN_FOSSIL_KEY -> SNAPSHOT_UNKNOWN_COLLECTION_KEY</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/syrupy-project/syrupy/commit/7096efdee61a8e1bc47492bdd0bc860766df40e9"><code>7096efd</code></a> chore(release): 5.1.0 [skip ci]</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/07aa00dd48d65e74814cec863b5f236e09afb464"><code>07aa00d</code></a> chore(deps): update dependency attrs to v25 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1063">#1063</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/1f29ae061e9557e205e50fb2f9971ee95c4bd08e"><code>1f29ae0</code></a> docs: add bwrob as a contributor for code (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1064">#1064</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a"><code>df9bc8f</code></a> feat: add serializer plugin system; plugins for data models (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1062">#1062</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/841257deaf598df7c3d154b8e2d694f8bb7e5055"><code>841257d</code></a> chore(deps): update dependency coverage to v7.13.1 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1061">#1061</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/2d8dfa7f7bb2a5f7c0210107dbb65b62a615d434"><code>2d8dfa7</code></a> chore(deps): update codecov/codecov-action action to v5.5.2 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1056">#1056</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/f5f9ef77027983d3b62d8cc5bfc3a9ef058fe509"><code>f5f9ef7</code></a> chore(deps): update dependency debugpy to v1.8.18 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1057">#1057</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/eaeb6ae11f57aa3e595d4c45e7be4a3ed2d66dfc"><code>eaeb6ae</code></a> chore(deps): update dependency pytest to v9.0.2 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1055">#1055</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/263b23b768ef761c3f7e1faa0671b0709c1887b1"><code>263b23b</code></a> chore(deps): update python docker tag to v3.14.1 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1054">#1054</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/a0dd77b023fee34ff0968a822e0d0740c9c7fb93"><code>a0dd77b</code></a> chore(deps): update actions/checkout action to v6.0.1 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1053">#1053</a>)</li> <li>Additional commits viewable in <a href="https://github.com/syrupy-project/syrupy/compare/v4.0.2...v5.1.0">compare view</a></li> </ul> </details> <br /> Updates `ruff` to 0.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.15.0</h2> <h2>Release Notes</h2> <p>Released on 2026-02-03.</p> <p>Check out the <a href="https://astral.sh/blog/ruff-v0.15.0">blog post</a> for a migration guide and overview of the changes!</p> <h3>Breaking changes</h3> <ul> <li> <p>Ruff now formats your code according to the 2026 style guide. See the formatter section below or in the blog post for a detailed list of changes.</p> </li> <li> <p>The linter now supports block suppression comments. For example, to suppress <code>N803</code> for all parameters in this function:</p> <pre lang="python"><code># ruff: disable[N803] def foo( legacyArg1, legacyArg2, legacyArg3, legacyArg4, ): ... # ruff: enable[N803] </code></pre> <p>See the <a href="https://docs.astral.sh/ruff/linter/#block-level">documentation</a> for more details.</p> </li> <li> <p>The <code>ruff:alpine</code> Docker image is now based on Alpine 3.23 (up from 3.21).</p> </li> <li> <p>The <code>ruff:debian</code> and <code>ruff:debian-slim</code> Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm."</p> </li> <li> <p>Binaries for the <code>ppc64</code> (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed.</p> </li> <li> <p>Ruff now resolves all <code>extend</code>ed configuration files before falling back on a default Python version.</p> </li> </ul> <h3>Stabilization</h3> <p>The following rules have been stabilized and are no longer in preview:</p> <ul> <li><a href="https://docs.astral.sh/ruff/rules/blocking-http-call-httpx-in-async-function"><code>blocking-http-call-httpx-in-async-function</code></a> (<code>ASYNC212</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-path-method-in-async-function"><code>blocking-path-method-in-async-function</code></a> (<code>ASYNC240</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-input-in-async-function"><code>blocking-input-in-async-function</code></a> (<code>ASYNC250</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/map-without-explicit-strict"><code>map-without-explicit-strict</code></a> (<code>B912</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/if-exp-instead-of-or-operator"><code>if-exp-instead-of-or-operator</code></a> (<code>FURB110</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/single-item-membership-test"><code>single-item-membership-test</code></a> (<code>FURB171</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/missing-maxsplit-arg"><code>missing-maxsplit-arg</code></a> (<code>PLC0207</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/unnecessary-lambda"><code>unnecessary-lambda</code></a> (<code>PLW0108</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/unnecessary-empty-iterable-within-deque-call"><code>unnecessary-empty-iterable-within-deque-call</code></a> (<code>RUF037</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/in-empty-collection"><code>in-empty-collection</code></a> (<code>RUF060</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/legacy-form-pytest-raises"><code>legacy-form-pytest-raises</code></a> (<code>RUF061</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/non-octal-permissions"><code>non-octal-permissions</code></a> (<code>RUF064</code>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.15.0</h2> <p>Released on 2026-02-03.</p> <p>Check out the <a href="https://astral.sh/blog/ruff-v0.15.0">blog post</a> for a migration guide and overview of the changes!</p> <h3>Breaking changes</h3> <ul> <li> <p>Ruff now formats your code according to the 2026 style guide. See the formatter section below or in the blog post for a detailed list of changes.</p> </li> <li> <p>The linter now supports block suppression comments. For example, to suppress <code>N803</code> for all parameters in this function:</p> <pre lang="python"><code># ruff: disable[N803] def foo( legacyArg1, legacyArg2, legacyArg3, legacyArg4, ): ... # ruff: enable[N803] </code></pre> <p>See the <a href="https://docs.astral.sh/ruff/linter/#block-level">documentation</a> for more details.</p> </li> <li> <p>The <code>ruff:alpine</code> Docker image is now based on Alpine 3.23 (up from 3.21).</p> </li> <li> <p>The <code>ruff:debian</code> and <code>ruff:debian-slim</code> Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm."</p> </li> <li> <p>Binaries for the <code>ppc64</code> (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed.</p> </li> <li> <p>Ruff now resolves all <code>extend</code>ed configuration files before falling back on a default Python version.</p> </li> </ul> <h3>Stabilization</h3> <p>The following rules have been stabilized and are no longer in preview:</p> <ul> <li><a href="https://docs.astral.sh/ruff/rules/blocking-http-call-httpx-in-async-function"><code>blocking-http-call-httpx-in-async-function</code></a> (<code>ASYNC212</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-path-method-in-async-function"><code>blocking-path-method-in-async-function</code></a> (<code>ASYNC240</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-input-in-async-function"><code>blocking-input-in-async-function</code></a> (<code>ASYNC250</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/map-without-explicit-strict"><code>map-without-explicit-strict</code></a> (<code>B912</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/if-exp-instead-of-or-operator"><code>if-exp-instead-of-or-operator</code></a> (<code>FURB110</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/single-item-membership-test"><code>single-item-membership-test</code></a> (<code>FURB171</code>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/ce5f7b6127a5d684e96fd0f8e387f73c41c7a1b0"><code>ce5f7b6</code></a> Bump 0.15.0 (<a href="https://redirect.github.com/astral-sh/ruff/issues/23055">#23055</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/b4e40f539cdbafac8afd6e510994ca64c3b317b9"><code>b4e40f5</code></a> [ty] Fix <code>__contains__</code> to respect descriptors (<a href="https://redirect.github.com/astral-sh/ruff/issues/23056">#23056</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/848cb72dc14b4c9409bf08e8323b4119d6b90005"><code>848cb72</code></a> [ty] Fix narrowing of nonlocal variables with conditional assignments (<a href="https://redirect.github.com/astral-sh/ruff/issues/22966">#22966</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/da7f33af22c7da3f3cb9321f776dda4131dda3cb"><code>da7f33a</code></a> [ty] Add a diagnostic for <code>Final</code> without assignment (<a href="https://redirect.github.com/astral-sh/ruff/issues/23001">#23001</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/e65f9a6b039fa411e5609a7bda9bb7ffd11e9b1a"><code>e65f9a6</code></a> Document markdown formatting feature (<a href="https://redirect.github.com/astral-sh/ruff/issues/22990">#22990</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/c0c1b985c9ec4b3570b0a28af69ad6776a3ec401"><code>c0c1b98</code></a> Format markdown code blocks with line-by-line regex parse (<a href="https://redirect.github.com/astral-sh/ruff/issues/22996">#22996</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/9f8f3e196bd6d4f2c572075536dd38b769c48087"><code>9f8f3e1</code></a> Allow positional-only params with defaults in method overrides (<a href="https://redirect.github.com/astral-sh/ruff/issues/23037">#23037</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/ef83810e118e3e41aa6c63f87f8a8147363a3e56"><code>ef83810</code></a> [ty] ecosystem-analyzer: Support bare git repositories (<a href="https://redirect.github.com/astral-sh/ruff/issues/23054">#23054</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/54dfee4cb800c0b0890b2b2c74c64cc45584194c"><code>54dfee4</code></a> Customize where the <code>fix_title</code> sub-diagnostic appears (<a href="https://redirect.github.com/astral-sh/ruff/issues/23044">#23044</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/b53460799b592e5276e1d148d8a48469f396032e"><code>b534607</code></a> 2026 Ruff Formatter Style (<a href="https://redirect.github.com/astral-sh/ruff/issues/22735">#22735</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.12.2...0.15.0">compare view</a></li> </ul> </details> <br /> Updates `mypy` to 1.19.1 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's changelog</a>.</em></p> <blockquote> <h3>Mypy 1.19.1</h3> <ul> <li>Fix noncommutative joins with bounded TypeVars (Shantanu, PR <a href="https://redirect.github.com/python/mypy/pull/20345">20345</a>)</li> <li>Respect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR <a href="https://redirect.github.com/python/mypy/pull/20372">20372</a>)</li> <li>Allow <code>types.NoneType</code> in match cases (A5rocks, PR <a href="https://redirect.github.com/python/mypy/pull/20383">20383</a>)</li> <li>Fix mypyc generator regression with empty tuple (BobTheBuidler, PR <a href="https://redirect.github.com/python/mypy/pull/20371">20371</a>)</li> <li>Fix crash involving Unpack-ed TypeVarTuple (Shantanu, PR <a href="https://redirect.github.com/python/mypy/pull/20323">20323</a>)</li> <li>Fix crash on star import of redefinition (Ivan Levkivskyi, PR <a href="https://redirect.github.com/python/mypy/pull/20333">20333</a>)</li> <li>Fix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR <a href="https://redirect.github.com/python/mypy/pull/20334">20334</a>)</li> <li>Fail with an explicit error on PyPy (Ivan Levkivskyi, PR <a href="https://redirect.github.com/python/mypy/pull/20389">20389</a>)</li> </ul> <h3>Acknowledgements</h3> <p>Thanks to all mypy contributors who contributed to this release:</p> <ul> <li>A5rocks</li> <li>BobTheBuidler</li> <li>bzoracler</li> <li>Chainfire</li> <li>Christoph Tyralla</li> <li>David Foster</li> <li>Frank Dana</li> <li>Guo Ci</li> <li>iap</li> <li>Ivan Levkivskyi</li> <li>James Hilton-Balfe</li> <li>jhance</li> <li>Joren Hammudoglu</li> <li>Jukka Lehtosalo</li> <li>KarelKenens</li> <li>Kevin Kannammalil</li> <li>Marc Mueller</li> <li>Michael Carlstrom</li> <li>Michael J. Sullivan</li> <li>Piotr Sawicki</li> <li>Randolf Scholz</li> <li>Shantanu</li> <li>Sigve Sebastian Farstad</li> <li>sobolevn</li> <li>Stanislav Terliakov</li> <li>Stephen Morton</li> <li>Theodore Ando</li> <li>Thiago J. Barbalho</li> <li>wyattscarpenter</li> </ul> <p>I’d also like to thank my employer, Dropbox, for supporting mypy development.</p> <h2>Mypy 1.18</h2> <p>We’ve just uploaded mypy 1.18.1 to the Python Package Index (<a href="https://pypi.org/project/mypy/">PyPI</a>). Mypy is a static type checker for Python. This release includes new features, performance</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80"><code>412c19a</code></a> Bump version to 1.19.1</li> <li><a href="https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634"><code>20aea0a</code></a> Update changelog for 1.19.1 (<a href="https://redirect.github.com/python/mypy/issues/20414">#20414</a>)</li> <li><a href="https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6"><code>2b23b50</code></a> Serialize raw errors in cache metas (<a href="https://redirect.github.com/python/mypy/issues/20372">#20372</a>)</li> <li><a href="https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05"><code>f60f90f</code></a> Fail on PyPy in main instead of setup.py (<a href="https://redirect.github.com/python/mypy/issues/20389">#20389</a>)</li> <li><a href="https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6"><code>58d485b</code></a> Fail with an explicit error on PyPy (<a href="https://redirect.github.com/python/mypy/issues/20384">#20384</a>)</li> <li><a href="https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b"><code>a4b31a2</code></a> Allow <code>types.NoneType</code> in match cases (<a href="https://redirect.github.com/python/mypy/issues/20383">#20383</a>)</li> <li><a href="https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9"><code>8a6eff4</code></a> [mypyc] fix generator regression with empty tuple (<a href="https://redirect.github.com/python/mypy/issues/20371">#20371</a>)</li> <li><a href="https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014"><code>70eceea</code></a> Fix noncommutative joins with bounded TypeVars (<a href="https://redirect.github.com/python/mypy/issues/20345">#20345</a>)</li> <li><a href="https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0"><code>3890fc4</code></a> Fix crash involving Unpack-ed TypeVarTuple (<a href="https://redirect.github.com/python/mypy/issues/20323">#20323</a>)</li> <li><a href="https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8"><code>c93d917</code></a> Fix crash on star import of redefinition (<a href="https://redirect.github.com/python/mypy/issues/20333">#20333</a>)</li> <li>Additional commits viewable in <a href="https://github.com/python/mypy/compare/v1.18.1...v1.19.1">compare view</a></li> </ul> </details> <br /> Updates `pytest` to 9.0.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest/releases">pytest's releases</a>.</em></p> <blockquote> <h2>9.0.2</h2> <h1>pytest 9.0.2 (2025-12-06)</h1> <h2>Bug fixes</h2> <ul> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13896">#13896</a>: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.</p> <p>You may enable it again by passing <code>-p terminalprogress</code>. We may enable it by default again once compatibility improves in the future.</p> <p>Additionally, when the environment variable <code>TERM</code> is <code>dumb</code>, the escape codes are no longer emitted, even if the plugin is enabled.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13904">#13904</a>: Fixed the TOML type of the <code>tmp_path_retention_count</code> settings in the API reference from number to string.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13946">#13946</a>: The private <code>config.inicfg</code> attribute was changed in a breaking manner in pytest 9.0.0. Due to its usage in the ecosystem, it is now restored to working order using a compatibility shim. It will be deprecated in pytest 9.1 and removed in pytest 10.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13965">#13965</a>: Fixed quadratic-time behavior when handling <code>unittest</code> subtests in Python 3.10.</p> </li> </ul> <h2>Improved documentation</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/4492">#4492</a>: The API Reference now contains cross-reference-able documentation of <code>pytest's command-line flags <command-line-flags></code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2"><code>3d10b51</code></a> Prepare release version 9.0.2</li> <li><a href="https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69"><code>188750b</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14030">#14030</a> from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58"><code>b7d7bef</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14014">#14014</a> from bluetech/compat-note</li> <li><a href="https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0"><code>bd08e85</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14013">#14013</a> from pytest-dev/patchback/backports/9.0.x/922b60377...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10"><code>bc78386</code></a> Add CLI options reference documentation (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13930">#13930</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa"><code>5a4e398</code></a> Fix docs typo (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14005">#14005</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14008">#14008</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee"><code>d7ae6df</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14006">#14006</a> from pytest-dev/maintenance/update-plugin-list-tmpl...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87"><code>556f6a2</code></a> pre-commit: fix rst-lint after new release (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13999">#13999</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14001">#14001</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50"><code>c60fbe6</code></a> Fix quadratic-time behavior when handling <code>unittest</code> subtests in Python 3.10 ...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e"><code>73d9b01</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13995">#13995</a> from nicoddemus/patchback/backports/9.0.x/1b5200c0f...</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest/compare/8.0.0...9.0.2">compare view</a></li> </ul> </details> <br /> Updates `syrupy` to 5.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/releases">syrupy's releases</a>.</em></p> <blockquote> <h2>v5.1.0</h2> <h1><a href="https://github.com/syrupy-project/syrupy/compare/v5.0.0...v5.1.0">5.1.0</a> (2026-01-25)</h1> <h3>Features</h3> <ul> <li>add serializer plugin system; plugins for data models (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1062">#1062</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a">df9bc8f</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/syrupy-project/syrupy/blob/main/CHANGELOG.md">syrupy's changelog</a>.</em></p> <blockquote> <h1><a href="https://github.com/syrupy-project/syrupy/compare/v5.0.0...v5.1.0">5.1.0</a> (2026-01-25)</h1> <h3>Features</h3> <ul> <li>add serializer plugin system; plugins for data models (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1062">#1062</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a">df9bc8f</a>)</li> </ul> <h1><a href="https://github.com/syrupy-project/syrupy/compare/v4.9.1...v5.0.0">5.0.0</a> (2025-09-28)</h1> <ul> <li>Switch to MIT license (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/945">#945</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/d74d340f8884fdb04831fcf77f29d66e098aaa66">d74d340</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li>Block terminal summary for xdist workers. (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/978">#978</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/33a848df7c4a33577e4057eae5792f6592ad3172">33a848d</a>)</li> <li>ensure syrupy's pytest_assertrepr_compare hook is called first. (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/984">#984</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/eb0024d339248b7e1f76fdb65ed30ba3e19c0857">eb0024d</a>)</li> </ul> <h3>Code Refactoring</h3> <ul> <li>remove incorrect private underscore prefix from public methods (<a href="https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f">8cfc905</a>)</li> </ul> <h3>Features</h3> <ul> <li>add --snapshot-dirname option, close <a href="https://redirect.github.com/syrupy-project/syrupy/issues/810">#810</a> (<a href="https://github.com/syrupy-project/syrupy/commit/27135c7c861441962c2cedde841f3e4fed2949fd">27135c7</a>)</li> <li>drop support for py3.8, raise min. pytest to v8 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/904">#904</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/a879ff15ad82e59a2f387db0822be072a5684f2f">a879ff1</a>)</li> <li>update min. python version to 3.10 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1024">#1024</a>) (<a href="https://github.com/syrupy-project/syrupy/commit/16b4113cd56da96e84a90ebda0919e9b8dd35954">16b4113</a>)</li> </ul> <h3>BREAKING CHANGES</h3> <ul> <li>The following methods have been renamed:</li> </ul> <p>SnapshotCollectionStorage</p> <ul> <li>_read_snapshot_collection -> read_snapshot_collection</li> <li>_read_snapshot_data_from_location -> read_snapshot_data_from_location</li> <li>_write_snapshot_collection -> write_snapshot_collection</li> <li>_get_file_basename -> get_file_basename</li> <li>_file_extension -> file_extension</li> </ul> <p>AmberDataSerializer</p> <ul> <li>_snapshot_sort_key -> snapshot_sort_key</li> </ul> <p>Renamed constants to improve clarity:</p> <p>constants</p> <ul> <li>SNAPSHOT_EMPTY_FOSSIL_KEY -> SNAPSHOT_EMPTY_COLLECTION_KEY</li> <li>SNAPSHOT_UNKNOWN_FOSSIL_KEY -> SNAPSHOT_UNKNOWN_COLLECTION_KEY</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/syrupy-project/syrupy/commit/7096efdee61a8e1bc47492bdd0bc860766df40e9"><code>7096efd</code></a> chore(release): 5.1.0 [skip ci]</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/07aa00dd48d65e74814cec863b5f236e09afb464"><code>07aa00d</code></a> chore(deps): update dependency attrs to v25 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1063">#1063</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/1f29ae061e9557e205e50fb2f9971ee95c4bd08e"><code>1f29ae0</code></a> docs: add bwrob as a contributor for code (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1064">#1064</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/df9bc8f6b3a222dde82167e10a2e6bb57456305a"><code>df9bc8f</code></a> feat: add serializer plugin system; plugins for data models (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1062">#1062</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/841257deaf598df7c3d154b8e2d694f8bb7e5055"><code>841257d</code></a> chore(deps): update dependency coverage to v7.13.1 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1061">#1061</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/2d8dfa7f7bb2a5f7c0210107dbb65b62a615d434"><code>2d8dfa7</code></a> chore(deps): update codecov/codecov-action action to v5.5.2 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1056">#1056</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/f5f9ef77027983d3b62d8cc5bfc3a9ef058fe509"><code>f5f9ef7</code></a> chore(deps): update dependency debugpy to v1.8.18 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1057">#1057</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/eaeb6ae11f57aa3e595d4c45e7be4a3ed2d66dfc"><code>eaeb6ae</code></a> chore(deps): update dependency pytest to v9.0.2 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1055">#1055</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/263b23b768ef761c3f7e1faa0671b0709c1887b1"><code>263b23b</code></a> chore(deps): update python docker tag to v3.14.1 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1054">#1054</a>)</li> <li><a href="https://github.com/syrupy-project/syrupy/commit/a0dd77b023fee34ff0968a822e0d0740c9c7fb93"><code>a0dd77b</code></a> chore(deps): update actions/checkout action to v6.0.1 (<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1053">#1053</a>)</li> <li>Additional commits viewable in <a href="https://github.com/syrupy-project/syrupy/compare/v4.0.2...v5.1.0">compare view</a></li> </ul> </details> <br /> Updates `ruff` to 0.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.15.0</h2> <h2>Release Notes</h2> <p>Released on 2026-02-03.</p> <p>Check out the <a href="https://astral.sh/blog/ruff-v0.15.0">blog post</a> for a migration guide and overview of the changes!</p> <h3>Breaking changes</h3> <ul> <li> <p>Ruff now formats your code according to the 2026 style guide. See the formatter section below or in the blog post for a detailed list of changes.</p> </li> <li> <p>The linter now supports block suppression comments. For example, to suppress <code>N803</code> for all parameters in this function:</p> <pre lang="python"><code># ruff: disable[N803] def foo( legacyArg1, legacyArg2, legacyArg3, legacyArg4, ): ... # ruff: enable[N803] </code></pre> <p>See the <a href="https://docs.astral.sh/ruff/linter/#block-level">documentation</a> for more details.</p> </li> <li> <p>The <code>ruff:alpine</code> Docker image is now based on Alpine 3.23 (up from 3.21).</p> </li> <li> <p>The <code>ruff:debian</code> and <code>ruff:debian-slim</code> Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm."</p> </li> <li> <p>Binaries for the <code>ppc64</code> (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed.</p> </li> <li> <p>Ruff now resolves all <code>extend</code>ed configuration files before falling back on a default Python version.</p> </li> </ul> <h3>Stabilization</h3> <p>The following rules have been stabilized and are no longer in preview:</p> <ul> <li><a href="https://docs.astral.sh/ruff/rules/blocking-http-call-httpx-in-async-function"><code>blocking-http-call-httpx-in-async-function</code></a> (<code>ASYNC212</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-path-method-in-async-function"><code>blocking-path-method-in-async-function</code></a> (<code>ASYNC240</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-input-in-async-function"><code>blocking-input-in-async-function</code></a> (<code>ASYNC250</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/map-without-explicit-strict"><code>map-without-explicit-strict</code></a> (<code>B912</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/if-exp-instead-of-or-operator"><code>if-exp-instead-of-or-operator</code></a> (<code>FURB110</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/single-item-membership-test"><code>single-item-membership-test</code></a> (<code>FURB171</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/missing-maxsplit-arg"><code>missing-maxsplit-arg</code></a> (<code>PLC0207</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/unnecessary-lambda"><code>unnecessary-lambda</code></a> (<code>PLW0108</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/unnecessary-empty-iterable-within-deque-call"><code>unnecessary-empty-iterable-within-deque-call</code></a> (<code>RUF037</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/in-empty-collection"><code>in-empty-collection</code></a> (<code>RUF060</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/legacy-form-pytest-raises"><code>legacy-form-pytest-raises</code></a> (<code>RUF061</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/non-octal-permissions"><code>non-octal-permissions</code></a> (<code>RUF064</code>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.15.0</h2> <p>Released on 2026-02-03.</p> <p>Check out the <a href="https://astral.sh/blog/ruff-v0.15.0">blog post</a> for a migration guide and overview of the changes!</p> <h3>Breaking changes</h3> <ul> <li> <p>Ruff now formats your code according to the 2026 style guide. See the formatter section below or in the blog post for a detailed list of changes.</p> </li> <li> <p>The linter now supports block suppression comments. For example, to suppress <code>N803</code> for all parameters in this function:</p> <pre lang="python"><code># ruff: disable[N803] def foo( legacyArg1, legacyArg2, legacyArg3, legacyArg4, ): ... # ruff: enable[N803] </code></pre> <p>See the <a href="https://docs.astral.sh/ruff/linter/#block-level">documentation</a> for more details.</p> </li> <li> <p>The <code>ruff:alpine</code> Docker image is now based on Alpine 3.23 (up from 3.21).</p> </li> <li> <p>The <code>ruff:debian</code> and <code>ruff:debian-slim</code> Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm."</p> </li> <li> <p>Binaries for the <code>ppc64</code> (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed.</p> </li> <li> <p>Ruff now resolves all <code>extend</code>ed configuration files before falling back on a default Python version.</p> </li> </ul> <h3>Stabilization</h3> <p>The following rules have been stabilized and are no longer in preview:</p> <ul> <li><a href="https://docs.astral.sh/ruff/rules/blocking-http-call-httpx-in-async-function"><code>blocking-http-call-httpx-in-async-function</code></a> (<code>ASYNC212</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-path-method-in-async-function"><code>blocking-path-method-in-async-function</code></a> (<code>ASYNC240</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-input-in-async-function"><code>blocking-input-in-async-function</code></a> (<code>ASYNC250</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/map-without-explicit-strict"><code>map-without-explicit-strict</code></a> (<code>B912</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/if-exp-instead-of-or-operator"><code>if-exp-instead-of-or-operator</code></a> (<code>FURB110</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/single-item-membership-test"><code>single-item-membership-test</code></a> (<code>FURB171</code>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/ce5f7b6127a5d684e96fd0f8e387f73c41c7a1b0"><code>ce5f7b6</code></a> Bump 0.15.0 (<a href="https://redirect.github.com/astral-sh/ruff/issues/23055">#23055</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/b4e40f539cdbafac8afd6e510994ca64c3b317b9"><code>b4e40f5</code></a> [ty] Fix <code>__contains__</code> to respect descriptors (<a href="https://redirect.github.com/astral-sh/ruff/issues/23056">#23056</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/848cb72dc14b4c9409bf08e8323b4119d6b90005"><code>848cb72</code></a> [ty] Fix narrowing of nonlocal variables with conditional assignments (<a href="https://redirect.github.com/astral-sh/ruff/issues/22966">#22966</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/da7f33af22c7da3f3cb9321f776dda4131dda3cb"><code>da7f33a</code></a> [ty] Add a diagnostic for <code>Final</code> without assignment (<a href="https://redirect.github.com/astral-sh/ruff/issues/23001">#23001</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/e65f9a6b039fa411e5609a7bda9bb7ffd11e9b1a"><code>e65f9a6</code></a> Document markdown formatting feature (<a href="https://redirect.github.com/astral-sh/ruff/issues/22990">#22990</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/c0c1b985c9ec4b3570b0a28af69ad6776a3ec401"><code>c0c1b98</code></a> Format markdown code blocks with line-by-line regex parse (<a href="https://redirect.github.com/astral-sh/ruff/issues/22996">#22996</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/9f8f3e196bd6d4f2c572075536dd38b769c48087"><code>9f8f3e1</code></a> Allow positional-only params with defaults in method overrides (<a href="https://redirect.github.com/astral-sh/ruff/issues/23037">#23037</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/ef83810e118e3e41aa6c63f87f8a8147363a3e56"><code>ef83810</code></a> [ty] ecosystem-analyzer: Support bare git repositories (<a href="https://redirect.github.com/astral-sh/ruff/issues/23054">#23054</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/54dfee4cb800c0b0890b2b2c74c64cc45584194c"><code>54dfee4</code></a> Customize where the <code>fix_title</code> sub-diagnostic appears (<a href="https://redirect.github.com/astral-sh/ruff/issues/23044">#23044</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/b53460799b592e5276e1d148d8a48469f396032e"><code>b534607</code></a> 2026 Ruff Formatter Style (<a href="https://redirect.github.com/astral-sh/ruff/issues/22735">#22735</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.12.2...0.15.0">compare view</a></li> </ul> </details> <br /> Updates `pytest` to 9.0.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest/releases">pytest's releases</a>.</em></p> <blockquote> <h2>9.0.2</h2> <h1>pytest 9.0.2 (2025-12-06)</h1> <h2>Bug fixes</h2> <ul> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13896">#13896</a>: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.</p> <p>You may enable it again by passing <code>-p terminalprogress</code>. We may enable it by default again once compatibility improves in the future.</p> <p>Additionally, when the environment variable <code>TERM</code> is <code>dumb</code>, the escape codes are no longer emitted, even if the plugin is enabled.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13904">#13904</a>: Fixed the TOML type of the <code>tmp_path_retention_count</code> settings in the API reference from number to string.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13946">#13946</a>: The private <code>config.inicfg</code> attribute was changed in a breaking manner in pytest 9.0.0. Due to its usage in the ecosystem, it is now restored to working order using a compatibility shim. It will be deprecated in pytest 9.1 and removed in pytest 10.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13965">#13965</a>: Fixed quadratic-time behavior when handling <code>unittest</code> subtests in Python 3.10.</p> </li> </ul> <h2>Improved documentation</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/4492">#4492</a>: The API Reference now contains cross-reference-able documentation of <code>pytest's command-line flags <command-line-flags></code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2"><code>3d10b51</code></a> Prepare release version 9.0.2</li> <li><a href="https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69"><code>188750b</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14030">#14030</a> from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58"><code>b7d7bef</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14014">#14014</a> from bluetech/compat-note</li> <li><a href="https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0"><code>bd08e85</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14013">#14013</a> from pytest-dev/patchback/backports/9.0.x/922b60377...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10"><code>bc78386</code></a> Add CLI options reference documentation (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13930">#13930</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa"><code>5a4e398</code></a> Fix docs typo (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14005">#14005</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14008">#14008</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee"><code>d7ae6df</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/14006">#14006</a> from pytest-dev/maintenance/update-plugin-list-tmpl...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87"><code>556f6a2</code></a> pre-commit: fix rst-lint after new release (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13999">#13999</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/14001">#14001</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50"><code>c60fbe6</code></a> Fix quadratic-time behavior when handling <code>unittest</code> subtests in Python 3.10 ...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e"><code>73d9b01</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13995">#13995</a> from nicoddemus/patchback/backports/9.0.x/1b5200c0f...</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest/compare/8.0.0...9.0.2">compare view</a></li> </ul> </details> <br /> Updates `pytest-asyncio` to 1.3.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's releases</a>.</em></p> <blockquote> <h2>pytest-asyncio 1.3.0</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/1.3.0">1.3.0</a> - 2025-11-10</h1> <h2>Removed</h2> <ul> <li>Support for Python 3.9 (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1278">#1278</a>)</li> </ul> <h2>Added</h2> <ul> <li>Support for pytest 9 (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1279">#1279</a>)</li> </ul> <h2>Notes for Downstream Packagers</h2> <ul> <li>Tested Python versions include free threaded Python 3.14t (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1274">#1274</a>)</li> <li>Tests are run in the same pytest process, instead of spawning a subprocess with <code>pytest.Pytester.runpytest_subprocess</code>. This prevents the test suite from accidentally using a system installation of pytest-asyncio, which could result in test errors. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1275">#1275</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/2e9695fcf8c5c514f30f57b7d14ab83846357b96"><code>2e9695f</code></a> docs: Compile changelog for v1.3.0</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/dd0e9ba3fa672fd6bf375004319742f8d3a50e12"><code>dd0e9ba</code></a> docs: Reference correct issue in news fragment.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/4c31abe5bf46bca3c9bdc7b18405f3deba4145d0"><code>4c31abe</code></a> Build(deps): Bump nh3 from 0.3.1 to 0.3.2</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/13e94770d7bb146c329ae0e02486c0a6b38f3772"><code>13e9477</code></a> Link to migration guides from changelog</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/4d2cf3c36f47d7c4d563d401cdf229b35da34fbe"><code>4d2cf3c</code></a> tests: handle Python 3.14 DefaultEventLoopPolicy deprecation warnings</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/ee3549b6efb729b934e370e2be8040b25b034010"><code>ee3549b</code></a> test: Remove obsolete test for the event_loop fixture.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/7a67c82c5ae548f0968438e9dfa0f282d51c4597"><code>7a67c82</code></a> tests: Fix failing test by preventing warning conversion to error.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/a17b689a750d05b6fc9369f5fb2b06baaba83536"><code>a17b689</code></a> test: add pytest config to isolated test directories</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/18afc9df5a3153dc1fbdc4e11a56517ef95480df"><code>18afc9d</code></a> fix(tests): replace runpytest_subprocess with runpytest</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/cdc6bd1de75b4738289eafd546f5e27a0bfd3b41"><code>cdc6bd1</code></a> Add support for pytest 9 and drop Python 3.9 support</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-asyncio/compare/v0.21.1...v1.3.0">compare view</a></li> </ul> </details> <br /> Updates `ruff` to 0.15.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.15.0</h2> <h2>Release Notes</h2> <p>Released on 2026-02-03.</p> <p>Check out the <a href="https://astral.sh/blog/ruff-v0.15.0">blog post</a> for a migration guide and overview of the changes!</p> <h3>Breaking changes</h3> <ul> <li> <p>Ruff now formats your code according to the 2026 style guide. See the formatter section below or in the blog post for a detailed list of changes.</p> </li> <li> <p>The linter now supports block suppression comments. For example, to suppress <code>N803</code> for all parameters in this function:</p> <pre lang="python"><code># ruff: disable[N803] def foo( legacyArg1, legacyArg2, legacyArg3, legacyArg4, ): ... # ruff: enable[N803] </code></pre> <p>See the <a href="https://docs.astral.sh/ruff/linter/#block-level">documentation</a> for more details.</p> </li> <li> <p>The <code>ruff:alpine</code> Docker image is now based on Alpine 3.23 (up from 3.21).</p> </li> <li> <p>The <code>ruff:debian</code> and <code>ruff:debian-slim</code> Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm."</p> </li> <li> <p>Binaries for the <code>ppc64</code> (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed.</p> </li> <li> <p>Ruff now resolves all <code>extend</code>ed configuration files before falling back on a default Python version.</p> </li> </ul> <h3>Stabilization</h3> <p>The following rules have been stabilized and are no longer in preview:</p> <ul> <li><a href="https://docs.astral.sh/ruff/rules/blocking-http-call-httpx-in-async-function"><code>blocking-http-call-httpx-in-async-function</code></a> (<code>ASYNC212</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-path-method-in-async-function"><code>blocking-path-method-in-async-function</code></a> (<code>ASYNC240</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-input-in-async-function"><code>blocking-input-in-async-function</code></a> (<code>ASYNC250</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/map-without-explicit-strict"><code>map-without-explicit-strict</code></a> (<code>B912</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/if-exp-instead-of-or-operator"><code>if-exp-instead-of-or-operator</code></a> (<code>FURB110</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/single-item-membership-test"><code>single-item-membership-test</code></a> (<code>FURB171</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/missing-maxsplit-arg"><code>missing-maxsplit-arg</code></a> (<code>PLC0207</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/unnecessary-lambda"><code>unnecessary-lambda</code></a> (<code>PLW0108</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/unnecessary-empty-iterable-within-deque-call"><code>unnecessary-empty-iterable-within-deque-call</code></a> (<code>RUF037</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/in-empty-collection"><code>in-empty-collection</code></a> (<code>RUF060</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/legacy-form-pytest-raises"><code>legacy-form-pytest-raises</code></a> (<code>RUF061</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/non-octal-permissions"><code>non-octal-permissions</code></a> (<code>RUF064</code>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.15.0</h2> <p>Released on 2026-02-03.</p> <p>Check out the <a href="https://astral.sh/blog/ruff-v0.15.0">blog post</a> for a migration guide and overview of the changes!</p> <h3>Breaking changes</h3> <ul> <li> <p>Ruff now formats your code according to the 2026 style guide. See the formatter section below or in the blog post for a detailed list of changes.</p> </li> <li> <p>The linter now supports block suppression comments. For example, to suppress <code>N803</code> for all parameters in this function:</p> <pre lang="python"><code># ruff: disable[N803] def foo( legacyArg1, legacyArg2, legacyArg3, legacyArg4, ): ... # ruff: enable[N803] </code></pre> <p>See the <a href="https://docs.astral.sh/ruff/linter/#block-level">documentation</a> for more details.</p> </li> <li> <p>The <code>ruff:alpine</code> Docker image is now based on Alpine 3.23 (up from 3.21).</p> </li> <li> <p>The <code>ruff:debian</code> and <code>ruff:debian-slim</code> Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm."</p> </li> <li> <p>Binaries for the <code>ppc64</code> (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed.</p> </li> <li> <p>Ruff now resolves all <code>extend</code>ed configuration files before falling back on a default Python version.</p> </li> </ul> <h3>Stabilization</h3> <p>The following rules have been stabilized and are no longer in preview:</p> <ul> <li><a href="https://docs.astral.sh/ruff/rules/blocking-http-call-httpx-in-async-function"><code>blocking-http-call-httpx-in-async-function</code></a> (<code>ASYNC212</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-path-method-in-async-function"><code>blocking-path-method-in-async-function</code></a> (<code>ASYNC240</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/blocking-input-in-async-function"><code>blocking-input-in-async-function</code></a> (<code>ASYNC250</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/map-without-explicit-strict"><code>map-without-explicit-strict</code></a> (<code>B912</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/if-exp-instead-of-or-operator"><code>if-exp-instead-of-or-operator</code></a> (<code>FURB110</code>)</li> <li><a href="https://docs.astral.sh/ruff/rules/single-item-membership-test"><code>single-item-membership-test</code></a> (<code>FURB171</code>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/ce5f7b6127a5d684e96fd0f8e387f73c41c7a1b0"><code>ce5f7b6</code></a> Bump 0.15.0 (<a href="https://redirect.github.com/astral-sh/ruff/issues/23055">#23055</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/b4e40f539cdbafac8afd6e510994ca64c3b317b9"><code>b4e40f5</code></a> [ty] Fix <code>__contains__</code> to respect descriptors (<a href="https://redirect.github.com/astral-sh/ruff/issues/23056">#23056</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/848cb72dc14b4c9409bf08e8323b4119d6b90005"><code>848cb72</code></a> [ty] Fix narrowing of nonlocal variables with conditional assignments (<a href="https://redirect.github.com/astral-sh/ruff/issues/22966">#22966</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/da7f33af22c7da3f3cb9321f776dda4131dda3cb"><code>da7f33a</code></a> [ty] Add a diagnostic for <code>Final</code> without assignment (<a href="https://redirect.github.com/astral-sh/ruff/issues/23001">#23001</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/e65f9a6b039fa411e5609a7bda9bb7ffd11e9b1a"><code>e65f9a6</code></a> Document markdown formatting feature (<a href="https://redirect.github.com/astral-sh/ruff/issues/22990">#22990</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/c0c1b985c9ec4b3570b0a28af69ad6776a3ec401"><code>c0c1b98</code></a> Format markdown code blocks with line-by-line regex parse (<a href="https://redirect.github.com/astral-sh/ruff/issues/22996">#22996</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/9f8f3e196bd6d4f2c572075536dd38b769c48087"><code>9f8f3e1</code></a> Allow positional-only params with defaults in method overrides (<a href="https://redirect.github.com/astral-sh/ruff/issues/23037">#23037</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/ef83810e118e3e41aa6c63f87f8a8147363a3e56"><code>ef83810</code></a> [ty] ecosystem-analyzer: Support bare git repositories (<a href="https://redirect.github.com/astral-sh/ruff/issues/23054">#23054</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/54dfee4cb800c0b0890b2b2c74c64cc45584194c"><code>54dfee4</code></a> Customize where the <code>fix_title</code> sub-diagnostic appears (<a href="https://redirect.github.com/astral-sh/ruff/issues/23044">#23044</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/b53460799b592e5276e1d148d8a48469f396032e"><code>b534607</code></a> 2026 Ruff Formatter Style (<a href="https://redirect.github.com/astral-sh/ruff/issues/22735">#22735</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.12.2...0.15.0">compare view</a></li> </ul> </details> <br /> Updates `thinc` to 9.1.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/explosion/thinc/releases">thinc's releases</a>.</em></p> <blockquote> <h2>v9.1.1: Restore wheels for MacOS ARM 64</h2> <p>Previously we used a complicated build process that used self-hosted runners to build wheels for platforms Github Actions did not support. Github Actions has been adding support for ARM recently, so we've simplified the CI process to rely only on it exclusively.</p> <p>This release adds back support for MacOS ARM64 wheels that were missing from the previous release. Linux ARM wheels are still pending, as Linux ARM architectures are currently only supported for private repos. Cross-compilation with QEMU is possible in theory, but in practice the build timed out after several hours.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/explosion/thinc/commit/04956f0102e51ca3cbcd35ec2525066f0c5d2322"><code>04956f0</code></a> Set version to v9.1.1</li> <li><a href="https://github.com/explosion/thinc/commit/da60bb5c6c1f21b15cbdb4f6547a85dcedae4bea"><code>da60bb5</code></a> Remove building of aarch</li> <li><a href="https://github.com/explosion/thinc/commit/1081f6bd08a4c6663d8c25e35b69e6016a061752"><code>1081f6b</code></a> Upd cibuildwheel</li> <li><a href="https://github.com/explosion/thinc/commit/728838abf54c682d220d3dd5c926e9a6aea554b5"><code>728838a</code></a> Set version to v9.1.1.dev0</li> <li><a href="https://github.... _Description has been truncated_ Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|
|
5c018f5cd1 |
chore: enrich pyproject.toml files (#34980)
|
||
|
|
3d687ea8fb | chore: update twitter URLs (#34736) | ||
|
|
18c25e9f10 | chore: ban relative imports on all packages (#34691) | ||
|
|
8e824d9ec4 |
style: bump ruff version to 0.14.11 (#34674)
With ruff 0.14.11+, we can remove `PLW1510` from `unfixable` (see https://github.com/astral-sh/ruff/issues/17091) |
||
|
|
e03d6b80d5 |
chore(deps): bump mypy to v1.19 and ruff to v1.14 (#34521)
* Set mypy to >=1.19.1,<1.20 * Set ruff to >=0.14.10,<0.15 |
||
|
|
ea25f5ebdd |
chore(text-splitters): bump dependency locks for python 3.14 (#34522)
* Support sentence-transformers optional dep on python 3.14 * Bump some dep locks to use pre-built wheels instead of building them (murmurhash, cymem, preshed, thinc, srsly, blis) * Still not possible to use spacy: even though there are wheels available, spacy depends on Pydantic v1 which doesn't work on Python 3.14. * Speeds up installation and CI. Co-authored-by: Mason Daugherty <mason@langchain.dev> |
||
|
|
5884fb9523 |
style(text-splitters,standard-tests,cli): add ruff TC and RUF012 rules (#34495)
Co-authored-by: Mason Daugherty <mason@langchain.dev> |
||
|
|
d46187201d |
style: add ruff ISC001 rule (#34493)
ISC001 doesn't conflict anymore with the formatter. See https://github.com/astral-sh/ruff/issues/8272 Co-authored-by: Mason Daugherty <mason@langchain.dev> |
||
|
|
0cd72b50fb | release(text-splitters): 1.1.0 (#34346) | ||
|
|
e023201d42 | style: some cleanup (#33857) | ||
|
|
64e6798a39 |
chore: update pyproject.toml url entries (#33587)
|
||
|
|
3152d25811 |
fix: support python 3.14 in various projects (#33575)
Co-authored-by: cbornet <cbornet@hotmail.com> Co-authored-by: Mason Daugherty <mason@langchain.dev> |
||
|
|
3b8cb3d4b6 | release(text-splitters): 1.0.0 (#33565) | ||
|
|
cda336295f |
chore: enrich pyproject.toml files with links to new references, others (#33343)
|
||
|
|
8bcdfbb24e |
chore: clean up pyproject.toml files, use core a7 (#33334)
|
||
|
|
20e04fc3dd |
chore(text-splitters): cleanup ruff config (#33247)
Co-authored-by: Mason Daugherty <mason@langchain.dev> |
||
|
|
90e4d944ac | chore(infra): pdm -> hatchling (#33289) | ||
|
|
ae16392ada | release(text-splitters): 1.0.0a1 (#33214) | ||
|
|
5e8cb58e6a | refactor(text-splitters): drop python 3.9 (#33212) | ||
|
|
eaa6dcce9e |
release: v1.0.0 (#32567)
Co-authored-by: Mohammad Mohtashim <45242107+keenborder786@users.noreply.github.com> Co-authored-by: Caspar Broekhuizen <caspar@langchain.dev> Co-authored-by: ccurme <chester.curme@gmail.com> Co-authored-by: Christophe Bornet <cbornet@hotmail.com> Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com> Co-authored-by: Sadra Barikbin <sadraqazvin1@yahoo.com> Co-authored-by: Vadym Barda <vadim.barda@gmail.com> |
||
|
|
986302322f | docs: more standardization (#33124) | ||
|
|
eaf8dce7c2 |
chore: bump ruff version to 0.13 (#33043)
Co-authored-by: Mason Daugherty <mason@langchain.dev> |
||
|
|
781db9d892 |
chore: update pyproject.toml files, remove codespell (#33028)
- Removes Codespell from deps, docs, and `Makefile`s - Python version requirements in all `pyproject.toml` files now use the `~=` (compatible release) specifier - All dependency groups and main dependencies now use explicit lower and upper bounds, reducing potential for breaking changes |
||
|
|
cbaf97ada4 | chore: bump mypy version to 1.18 (#32914) | ||
|
|
7a158c7f1c |
revert: "chore: remove ruff target-version" (#32895)
Reverts langchain-ai/langchain#32880 Not needed at the moment, will do when finishing v1 |
||
|
|
b274416441 |
chore: remove ruff target-version (#32880)
This is not needed anymore since `requires-python` was added when moving to `uv`. |
||
|
|
8b90eae455 | chore(text-splitters): enable ruff docstring-code-format (#32854) |