mirror of
https://github.com/langchain-ai/langchain.git
synced 2026-10-07 02:15:19 +03:00
nm/cache_openai_tool
12
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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> |
||
|
|
6b9e22dbbc |
fix(langchain): tighten structured output model fallbacks (#38042)
Provider-native structured output fallback detection now uses bounded model-name patterns instead of broad substring checks, reducing false positives for unrelated model IDs. The model examples and test fixtures across OpenAI/OpenRouter-facing code were refreshed around current OpenAI model families while preserving shipped defaults. ## Changes - Tightened `FALLBACK_MODELS_WITH_STRUCTURED_OUTPUT` from loose string fragments to regex patterns, with `_supports_provider_strategy` matching full model-name segments instead of arbitrary substrings. - Expanded structured-output fallback coverage for newer OpenAI, Anthropic, and xAI/Grok model families, including `gpt-5.x`, newer Claude 4/5-style names, and `grok-build`. - Reused `_attempt_infer_model_provider` in provider tool search routing so `_provider_from_model_name` follows the same provider inference behavior as `init_chat_model`. - Suppressed irrelevant provider-inference deprecation warnings during provider tool search registry lookup. - Refreshed OpenAI, Azure OpenAI, OpenRouter, core metadata, and example model references from older fixtures like `gpt-4`, `gpt-4o`, `o1`, and `o4-mini` to current test/profile models such as `gpt-5.5`, `gpt-5-nano`, and `gpt-4.1-mini`. - Removed outdated OpenAI test assumptions around legacy `o1` behavior and narrowed legacy structured-output checks to explicitly legacy model names. |
||
|
|
253398ebca | feat(text-splitters): add model_kwargs to SentenceTransformersTokenTextSplitter (#35113) | ||
|
|
d6e86aa748 |
chore(deps): bump the other-deps group across 3 directories with 12 updates (#35127)
Bumps the other-deps group with 4 updates in the /libs/model-profiles directory: [pytest](https://github.com/pytest-dev/pytest), [pytest-watcher](https://github.com/olzhasar/pytest-watcher), [ruff](https://github.com/astral-sh/ruff) and [mypy](https://github.com/python/mypy). Bumps the other-deps group with 3 updates in the /libs/standard-tests directory: [pytest](https://github.com/pytest-dev/pytest), [ruff](https://github.com/astral-sh/ruff) and [pytest-codspeed](https://github.com/CodSpeedHQ/pytest-codspeed). Bumps the other-deps group with 6 updates in the /libs/text-splitters directory: | Package | From | To | | --- | --- | --- | | [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` | | [pytest-watcher](https://github.com/olzhasar/pytest-watcher) | `0.4.3` | `0.6.3` | | [ruff](https://github.com/astral-sh/ruff) | `0.14.11` | `0.15.0` | | [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.4.20250913` | `2.32.4.20260107` | | [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.2` | `4.14.3` | | [transformers](https://github.com/huggingface/transformers) | `4.56.2` | `5.1.0` | Updates `pytest` from 8.4.2 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> <h2>9.0.1</h2> <h1>pytest 9.0.1 (2025-11-12)</h1> <h2>Bug fixes</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13895">#13895</a>: Restore support for skipping tests via <code>raise unittest.SkipTest</code>.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13896">#13896</a>: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13904">#13904</a>: Fixed the TOML type of the verbosity settings in the API reference from number to string.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13910">#13910</a>: Fixed <!-- raw HTML omitted -->UserWarning: Do not expect file_or_dir<!-- raw HTML omitted --> on some earlier Python 3.12 and 3.13 point versions.</li> </ul> <h2>Packaging updates and notes for downstreams</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13933">#13933</a>: The tox configuration has been adjusted to make sure the desired version string can be passed into its <code>package_env</code> through the <code>SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST</code> environment variable as a part of the release process -- by <code>webknjaz</code>.</li> </ul> <h2>Contributor-facing changes</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13891">#13891</a>, <a href="https://redirect.github.com/pytest-dev/pytest/issues/13942">#13942</a>: The CI/CD part of the release automation is now capable of creating GitHub Releases without having a Git checkout on disk -- by <code>bluetech</code> and <code>webknjaz</code>.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13933">#13933</a>: The tox configuration has been adjusted to make sure the desired version string can be passed into its <code>package_env</code> through the <code>SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST</code> environment variable as a part of the release process -- by <code>webknjaz</code>.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </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.4.2...9.0.2">compare view</a></li> </ul> </details> <br /> Updates `pytest-watcher` from 0.4.3 to 0.6.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/olzhasar/pytest-watcher/releases">pytest-watcher's releases</a>.</em></p> <blockquote> <h2>v0.6.3</h2> <h3>Features</h3> <ul> <li>Add debug mode activated with <code>PTW_DEBUG</code> environment variable and improve log messages.</li> </ul> <h3>Bugfixes</h3> <ul> <li>Fix terminal flushing after menu and header prints.</li> <li>Use monotonic clock for trigger detection to avoid misbehavior on clock changes.</li> </ul> <h2>v0.6.2</h2> <h3>Bugfixes</h3> <ul> <li>Allow specifying blank patterns via CLI</li> <li>Fix duplicate command entries in menu</li> </ul> <h2>v0.6.1</h2> <h3>Bugfixes</h3> <ul> <li>Trigger tests in interactive mode for carriage return character</li> </ul> <h3>Improved Documentation</h3> <ul> <li>Add contributing guide</li> </ul> <h3>Misc</h3> <ul> <li>Integrate <a href="https://towncrier.readthedocs.io/en/stable/index.html">towncrier</a> into the development process</li> </ul> <h2>v0.6.0</h2> <h2>Features</h2> <ul> <li>Add <code>notify-on-failure</code> flag (and config option) to emit BEL symbol on test suite failure.</li> </ul> <h2>Infrastructure</h2> <ul> <li>Migrate from poetry to uv.</li> <li>Remove tox.</li> </ul> <h2>v0.5.0</h2> <h2>Fixes</h2> <ul> <li>Merge arguments passed to the runner from config and CLI instead of overriding.</li> </ul> <h2>Changes</h2> <ul> <li>Drop support for Python 3.7 & 3.8</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/olzhasar/pytest-watcher/blob/master/CHANGELOG.md">pytest-watcher's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/olzhasar/pytest-watcher/releases/tag/0.6.3">0.6.3</a> - 2026-01-11</h2> <h3>Features</h3> <ul> <li>Add debug mode activated with <code>PTW_DEBUG</code> environment variable and improve log messages.</li> </ul> <h3>Bugfixes</h3> <ul> <li>Fix terminal flushing after menu and header prints.</li> <li>Use monotonic clock for trigger detection to avoid misbehavior on clock changes.</li> </ul> <h2><a href="https://github.com/olzhasar/pytest-watcher/releases/tag/0.6.2">0.6.2</a> - 2025-12-28</h2> <h3>Bugfixes</h3> <ul> <li>Allow specifying blank patterns via CLI</li> <li>Fix duplicate command entries in menu</li> </ul> <h2><a href="https://github.com/olzhasar/pytest-watcher/releases/tag/0.6.1">0.6.1</a> - 2025-12-26</h2> <h3>Bugfixes</h3> <ul> <li>Trigger tests in interactive mode for carriage return character</li> </ul> <h3>Improved Documentation</h3> <ul> <li>Add contributing guide</li> </ul> <h3>Misc</h3> <ul> <li>Integrate <a href="https://towncrier.readthedocs.io/en/stable/index.html">towncrier</a> into the development process</li> </ul> <h2><a href="https://github.com/olzhasar/pytest-watcher/releases/tag/0.6.0">0.6.0</a> - 2025-12-22</h2> <h3>Features</h3> <ul> <li>Add notify-on-failure flag (and config option) to emit BEL symbol on test suite failure.</li> </ul> <h3>Infrastructure</h3> <ul> <li>Migrate from <code>poetry</code> to <code>uv</code>.</li> <li>Remove <code>tox</code>.</li> </ul> <h2><a href="https://github.com/olzhasar/pytest-watcher/releases/tag/0.5.0">0.5.0</a> - 2025-12-21</h2> <h3>Fixes</h3> <ul> <li>Merge arguments passed to the runner from config and CLI instead of overriding.</li> </ul> <h3>Changes</h3> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/c52925b6134b14b3817046865ae89511b998eaf3"><code>c52925b</code></a> release v0.6.3</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/23d49893f79a1db23bbd37a4e0da8e2751e0965d"><code>23d4989</code></a> Add debug mode. Improve log messages</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/e3dffa1cb377f01eceb51673d7da86568bb369e7"><code>e3dffa1</code></a> Fix terminal flushing after menu and header prints</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/0eeaf6080ee0d5a0ed43f13261837eba41229345"><code>0eeaf60</code></a> Use monotonic clock for trigger detection</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/5ed9d0e262a7338749a90472e56e01e0fa13ddcf"><code>5ed9d0e</code></a> Update CHANGELOG. Fix changelog_reader action</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/756f005f5d7eb97bd2e9fa167e5580f919d9df52"><code>756f005</code></a> release v0.6.2</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/902aa9e07b1ff03ddfae6317ee7f35f2ca149001"><code>902aa9e</code></a> Merge pull request <a href="https://redirect.github.com/olzhasar/pytest-watcher/issues/51">#51</a> from olzhasar/fix-duplicate-menu</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/e6b20d35b9b27464eff051ea7393b99d5c1fa317"><code>e6b20d3</code></a> Allow specifying empty patterns via CLI</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/2d522dabf9da2fca4ad3838efa46ddc82389fa16"><code>2d522da</code></a> Fix duplicate menu entries</li> <li><a href="https://github.com/olzhasar/pytest-watcher/commit/171e6f128206d882e09ddbca3c09e7887d3f6062"><code>171e6f1</code></a> Fix towncrier CHANGELOG versioning</li> <li>Additional commits viewable in <a href="https://github.com/olzhasar/pytest-watcher/compare/v0.4.3...v0.6.3">compare view</a></li> </ul> </details> <br /> Updates `pytest-asyncio` from 1.2.0 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/v1.2.0...v1.3.0">compare view</a></li> </ul> </details> <br /> Updates `syrupy` from 4.9.1 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> <h2>v5.0.0</h2> <h2>Syrupy 5.0.0</h2> <p><em>(2025-09-28)</em></p> <p>This release introduces new features, bug fixes, and a major license change. It also includes several <strong>breaking changes</strong>, so please review those carefully before upgrading.</p> <hr /> <h3>New Features ✨</h3> <ul> <li><strong>Add <code>--snapshot-dirname</code> option:</strong> A new option, <code>--snapshot-dirname</code>, is now available to change the default directory snapshots are stored in. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/810">#810</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/810">syrupy-project/syrupy#810</a>))</li> <li><strong>Remove private underscore prefix:</strong> The unnecessary underscore prefixes have been removed from public methods for better code clarity. ([<a href="https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f">8cfc905</a>](<a href="https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f">https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f</a>))</li> </ul> <hr /> <h3>Bug Fixes 🐛</h3> <ul> <li><strong>Fix terminal summary for <code>xdist</code> workers:</strong> Resolves an issue where the terminal summary was not displayed correctly with <code>xdist</code> workers. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/978">#978</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/978">syrupy-project/syrupy#978</a>))</li> <li><strong>Ensure <code>pytest_assertrepr_compare</code> hook is called first:</strong> This change ensures that Syrupy's assertion hook takes precedence, improving compatibility with other plugins. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/984">#984</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/984">syrupy-project/syrupy#984</a>))</li> </ul> <hr /> <h3>Breaking Changes ⚠️</h3> <ul> <li> <p><strong>License change:</strong> The project has switched to the more permissive <strong>MIT license</strong>. This change applies to all versions from 5.0.0 and beyond. If you need to use the previous Apache 2.0 license, you must continue to use Syrupy versions 4.x or earlier. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/945">#945</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/945">syrupy-project/syrupy#945</a>))</p> </li> <li> <p><strong>Python and pytest version requirements:</strong> Syrupy now requires <strong>Python 3.10</strong> or higher. Support for Python 3.8 has been dropped as it reached its end of life in October 2024. The minimum required version of <strong>pytest is v8</strong>. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/904">#904</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/904">syrupy-project/syrupy#904</a>), [<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1024">#1024</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1024">syrupy-project/syrupy#1024</a>))</p> </li> <li> <p><strong>Method and constant name changes:</strong> Several methods and constants have been renamed for improved clarity and to align with public API standards.</p> <ul> <li> <p><strong><code>SnapshotCollectionStorage</code></strong></p> <ul> <li><code>_read_snapshot_collection</code> -> <code>read_snapshot_collection</code></li> <li><code>_read_snapshot_data_from_location</code> -> <code>read_snapshot_data_from_location</code></li> <li><code>_write_snapshot_collection</code> -> <code>write_snapshot_collection</code></li> <li><code>_get_file_basename</code> -> <code>get_file_basename</code></li> <li><code>_file_extension</code> -> <code>file_extension</code></li> </ul> </li> <li> <p><strong><code>AmberDataSerializer</code></strong></p> <ul> <li><code>_snapshot_sort_key</code> -> <code>snapshot_sort_key</code></li> </ul> </li> <li> <p><strong>Constants</strong></p> <ul> <li><code>SNAPSHOT_EMPTY_FOSSIL_KEY</code> -> <code>SNAPSHOT_EMPTY_COLLECTION_KEY</code></li> <li><code>SNAPSHOT_UNKNOWN_FOSSIL_KEY</code> -> <code>SNAPSHOT_UNKNOWN_COLLECTION_KEY</code></li> </ul> </li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/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.9.1...v5.1.0">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.12.12 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.12...0.15.0">compare view</a></li> </ul> </details> <br /> Updates `mypy` from 1.18.2 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.2...v1.19.1">compare view</a></li> </ul> </details> <br /> Updates `pytest` from 8.4.2 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> <h2>9.0.1</h2> <h1>pytest 9.0.1 (2025-11-12)</h1> <h2>Bug fixes</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13895">#13895</a>: Restore support for skipping tests via <code>raise unittest.SkipTest</code>.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13896">#13896</a>: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13904">#13904</a>: Fixed the TOML type of the verbosity settings in the API reference from number to string.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13910">#13910</a>: Fixed <!-- raw HTML omitted -->UserWarning: Do not expect file_or_dir<!-- raw HTML omitted --> on some earlier Python 3.12 and 3.13 point versions.</li> </ul> <h2>Packaging updates and notes for downstreams</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13933">#13933</a>: The tox configuration has been adjusted to make sure the desired version string can be passed into its <code>package_env</code> through the <code>SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST</code> environment variable as a part of the release process -- by <code>webknjaz</code>.</li> </ul> <h2>Contributor-facing changes</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13891">#13891</a>, <a href="https://redirect.github.com/pytest-dev/pytest/issues/13942">#13942</a>: The CI/CD part of the release automation is now capable of creating GitHub Releases without having a Git checkout on disk -- by <code>bluetech</code> and <code>webknjaz</code>.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13933">#13933</a>: The tox configuration has been adjusted to make sure the desired version string can be passed into its <code>package_env</code> through the <code>SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST</code> environment variable as a part of the release process -- by <code>webknjaz</code>.</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </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.4.2...9.0.2">compare view</a></li> </ul> </details> <br /> Updates `syrupy` from 4.9.1 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> <h2>v5.0.0</h2> <h2>Syrupy 5.0.0</h2> <p><em>(2025-09-28)</em></p> <p>This release introduces new features, bug fixes, and a major license change. It also includes several <strong>breaking changes</strong>, so please review those carefully before upgrading.</p> <hr /> <h3>New Features ✨</h3> <ul> <li><strong>Add <code>--snapshot-dirname</code> option:</strong> A new option, <code>--snapshot-dirname</code>, is now available to change the default directory snapshots are stored in. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/810">#810</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/810">syrupy-project/syrupy#810</a>))</li> <li><strong>Remove private underscore prefix:</strong> The unnecessary underscore prefixes have been removed from public methods for better code clarity. ([<a href="https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f">8cfc905</a>](<a href="https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f">https://github.com/syrupy-project/syrupy/commit/8cfc9059d37066187ac419e2233059bad58b667f</a>))</li> </ul> <hr /> <h3>Bug Fixes 🐛</h3> <ul> <li><strong>Fix terminal summary for <code>xdist</code> workers:</strong> Resolves an issue where the terminal summary was not displayed correctly with <code>xdist</code> workers. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/978">#978</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/978">syrupy-project/syrupy#978</a>))</li> <li><strong>Ensure <code>pytest_assertrepr_compare</code> hook is called first:</strong> This change ensures that Syrupy's assertion hook takes precedence, improving compatibility with other plugins. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/984">#984</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/984">syrupy-project/syrupy#984</a>))</li> </ul> <hr /> <h3>Breaking Changes ⚠️</h3> <ul> <li> <p><strong>License change:</strong> The project has switched to the more permissive <strong>MIT license</strong>. This change applies to all versions from 5.0.0 and beyond. If you need to use the previous Apache 2.0 license, you must continue to use Syrupy versions 4.x or earlier. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/945">#945</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/945">syrupy-project/syrupy#945</a>))</p> </li> <li> <p><strong>Python and pytest version requirements:</strong> Syrupy now requires <strong>Python 3.10</strong> or higher. Support for Python 3.8 has been dropped as it reached its end of life in October 2024. The minimum required version of <strong>pytest is v8</strong>. ([<a href="https://redirect.github.com/syrupy-project/syrupy/issues/904">#904</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/904">syrupy-project/syrupy#904</a>), [<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1024">#1024</a>](<a href="https://redirect.github.com/syrupy-project/syrupy/issues/1024">syrupy-project/syrupy#1024</a>))</p> </li> <li> <p><strong>Method and constant name changes:</strong> Several methods and constants have been renamed for improved clarity and to align with public API standards.</p> <ul> <li> <p><strong><code>SnapshotCollectionStorage</code></strong></p> <ul> <li><code>_read_snapshot_collection</code> -> <code>read_snapshot_collection</code></li> <li><code>_read_snapshot_data_from_location</code> -> <code>read_snapshot_data_from_location</code></li> <li><code>_write_snapshot_collection</code> -> <code>write_snapshot_collection</code></li> <li><code>_get_file_basename</code> -> <code>get_file_basename</code></li> <li><code>_file_extension</code> -> <code>file_extension</code></li> </ul> </li> <li> <p><strong><code>AmberDataSerializer</code></strong></p> <ul> <li><code>_snapshot_sort_key</code> -> <code>snapshot_sort_key</code></li> </ul> </li> <li> <p><strong>Constants</strong></p> <ul> <li><code>SNAPSHOT_EMPTY_FOSSIL_KEY</code> -> <code>SNAPSHOT_EMPTY_COLLECTION_KEY</code></li> <li><code>SNAPSHOT_UNKNOWN_FOSSIL_KEY</code> -> <code>SNAPSHOT_UNKNOWN_COLLECTION_KEY</code></li> </ul> </li> </ul> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/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.9.1...v5.1.0">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.14.11 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="h... _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: John Kennedy <65985482+jkennedyvz@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
0c3e8ccd0e |
chore(text-splitters): select ALL rules with exclusions (#32325)
Co-authored-by: Mason Daugherty <mason@langchain.dev> |
||
|
|
6b5fdfb804 |
release(text-splitters): 0.3.11 (#32770)
Fixes #32747 SpaCy integration test fixture was trying to use pip to download the SpaCy language model (`en_core_web_sm`), but uv-managed environments don't include pip by default. Fail test if not installed as opposed to downloading. |
||
|
|
451c90fefa |
text-splitters: Ruff autofixes (#31858)
Auto-fixes from ruff with rule `ALL` |
||
|
|
8c5ae108dd |
text-splitters: Set strict mypy rules (#30900)
* Add strict mypy rules * Fix mypy violations * Add error codes to all type ignores * Add ruff rule PGH003 * Bump mypy version to 1.15 |
||
|
|
b2102b8cc4 |
text-splitters: Inconsistent results with NLTKTextSplitter's add_start_index=True (#27782)
This PR closes #27781 # Problem The current implementation of `NLTKTextSplitter` is using `sent_tokenize`. However, this `sent_tokenize` doesn't handle chars between 2 tokenized sentences... hence, this behavior throws errors when we are using `add_start_index=True`, as described in issue #27781. In particular: ```python from nltk.tokenize import sent_tokenize output1 = sent_tokenize("Innovation drives our success. Collaboration fosters creative solutions. Efficiency enhances data management.", language="english") print(output1) output2 = sent_tokenize("Innovation drives our success. Collaboration fosters creative solutions. Efficiency enhances data management.", language="english") print(output2) >>> ['Innovation drives our success.', 'Collaboration fosters creative solutions.', 'Efficiency enhances data management.'] >>> ['Innovation drives our success.', 'Collaboration fosters creative solutions.', 'Efficiency enhances data management.'] ``` # Solution With this new `use_span_tokenize` parameter, we can use NLTK to create sentences (with `span_tokenize`), but also add extra chars to be sure that we still can map the chunks to the original text. --------- Co-authored-by: Erick Friis <erick@langchain.dev> Co-authored-by: Erick Friis <erickfriis@gmail.com> |
||
|
|
66828f4ecc |
text-splitters[patch]: Modified SpacyTextSplitter to fully keep whitespace when strip_whitespace is false (#23272)
Previously, regardless of whether or not strip_whitespace was set to true or false, the strip text method in the SpacyTextSplitter class used `sent.text` to get the sentence. I modified this to include a ternary such that if strip_whitespace is false, it uses `sent.text_with_ws` I also modified the project.toml to include the spacy pipeline package and to lock the numpy version, as higher versions break spacy. - **Issue:** N/a - **Dependencies:** None |
||
|
|
e5d7e455dc |
splitters: Add ensure_ascii parameter (#18485)
- **Description:** Add ensure_ascii parameter |
||
|
|
5efb5c099f | text-splitters[minor], langchain[minor], community[patch], templates, docs: langchain-text-splitters 0.0.1 (#18346) |