Skip to content

chore(deps): Bump the python-dependencies group across 1 directory with 21 updates - #149

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/python-dependencies-dbf6c298e2
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/python-dependencies-dbf6c298e2

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 6, 2026

Copy link
Copy Markdown
Contributor

Bumps the python-dependencies group with 21 updates in the / directory:

Package From To
pydantic 2.14.1 2.14.2
pypdf 6.21.2 6.21.4
python-multipart 0.0.32 0.0.33
filelock 4.2.4 4.2.7
anthropic 2.3.0 2.4.0
pytest 9.1.1 9.2.0
pytest-asyncio 1.4.0 1.4.1.post1
ruff 0.17.2 0.17.3
mypy 2.4.0 2.4.1
moto 5.2.4 5.2.5
anyio 4.15.1 4.16.0
boto3 1.43.118 1.43.123
botocore 1.43.118 1.43.123
coverage 7.17.0 7.17.1
deprecated 3.0.0 3.0.1
mypy-extensions 1.1.0 1.2.0
opentelemetry-api 1.45.1 1.45.2
pydantic-core 2.50.1 2.50.2
python-dateutil 2.9.0.post0 4.0.0
websockets 17.3 17.4
wrapt 2.5.1 2.5.2

Updates pydantic from 2.14.1 to 2.14.2

Release notes

Sourced from pydantic's releases.

v2.14.2 2026-10-29

v2.14.2 (2026-10-29)

This release addresses 2 security issues, GHSA-qpmf-fgh3-ff25 and GHSA-3r8g-cqwr-jr29.

Packaging

Performance

Fixes

  • Make JSON validation by iteration consistent with Python approach by @​davidhewitt in #13275.

    JSON validation now handles field lookup and extra data the same way as Python validation. In particular, keys that only match an unused alias or field name are now treated as extra data, instead of being silently dropped:

    from pydantic import BaseModel, ConfigDict
    from pydantic.alias_generators import to_camel
    class Page(BaseModel):
    model_config = ConfigDict(extra='forbid', alias_generator=to_camel)
    page_size: int = 10
    
    Page.model_validate_json('{"page_size": 50}')
    Before: Page(page_size=10)
    After: ValidationError (extra_forbidden)

    See the pull request for the full list of behavior changes. This change addresses GHSA-qpmf-fgh3-ff25.

  • Ignore extra data matching a field name in TypedDict and dataclasses with extra=allow by @​Viicos in #14090. Addresses GHSA-3r8g-cqwr-jr29.

  • Fix unpickling of generic classes defined in separate module by @​Viicos in #13994

  • Support explicit by_alias overriding validate_by_alias in validation JSON schemas by @​Viicos in #13997

  • Fix mypy plugin crash on deferred empty model by @​ilevkivskyi in #14027

  • Fix infinite recursion when validating an invalid default with PydanticUseDefault by @​Viicos in #14028

  • Implement recursion guard for validate_strings() by @​Viicos in #14029

... (truncated)

Changelog

Sourced from pydantic's changelog.

v2.14.2 (2026-10-29)

GitHub release

What's Changed

Packaging

Performance

Fixes

  • Make JSON validation by iteration consistent with Python approach by @​davidhewitt in #13275.

    JSON validation now handles field lookup and extra data the same way as Python validation. In particular, keys that only match an unused alias or field name are now treated as extra data, instead of being silently dropped:

    from pydantic import BaseModel, ConfigDict
    from pydantic.alias_generators import to_camel
    class Page(BaseModel):
    model_config = ConfigDict(extra='forbid', alias_generator=to_camel)
    page_size: int = 10
    
    Page.model_validate_json('{"page_size": 50}')
    Before: Page(page_size=10)
    After: ValidationError (extra_forbidden)

    See the pull request for the full list of behavior changes.

  • Fix unpickling of generic classes defined in separate module by @​Viicos in #13994

  • Support explicit by_alias overriding validate_by_alias in validation JSON schemas by @​Viicos in #13997

  • Fix mypy plugin crash on deferred empty model by @​ilevkivskyi in #14027

  • Fix infinite recursion when validating an invalid default with PydanticUseDefault by @​Viicos in #14028

  • Implement recursion guard for validate_strings() by @​Viicos in #14029

  • Support named tuples in Sequence serialization by @​Viicos in #14033

... (truncated)

Commits
  • aa540ac Update changelog for v2.14.2
  • 6cde12f Update changelog for v2.14.2
  • 2db7c25 Fix deep copy of self-referential models
  • d783154 Update changelog for v2.14.2
  • df49b6c Avoid heap allocation for small JSON model field buffers
  • cd93e69 Skip decorator field checks when no field decorators exist
  • 2771e57 Make JSON validation by iteration consistent with Python approach
  • 8102e3f Avoid Python tuple allocation during model fields validation
  • dd139b5 Bump pydantic.v1 namespace to v1.10.27
  • 66155f9 Prepare release v2.14.2
  • Additional commits viewable in compare view

Updates pypdf from 6.21.2 to 6.21.4

Release notes

Sourced from pypdf's releases.

Version 6.21.4, 2026-10-28

What's new

Security (SEC)

Documentation (DOC)

Full Changelog

Version 6.21.3, 2026-10-27

What's new

Security (SEC)

Performance Improvements (PI)

Bug Fixes (BUG)

Documentation (DOC)

Developer Experience (DEV)

Maintenance (MAINT)

  • Revert: Reject unsupported key lengths in the /Encrypt dictionary by @​stefan6419846

Full Changelog

Changelog

Sourced from pypdf's changelog.

Version 6.21.4, 2026-10-28

Security (SEC)

  • Limit the number of copied page attributes during flattening (#4290)
  • Detect EOF when reading standard xref table trailer (#4289)
  • Fix loop detection when cloning DictionaryObject (#4288)

Documentation (DOC)

  • Exclude performance issues from security reports (#4280)

Full Changelog

Version 6.21.3, 2026-10-27

Security (SEC)

  • Use the validated page count after decrypting a document (#4270)
  • Limit total number of cross-reference stream entries (#4269)
  • Avoid excessive error messages (#4265)

Performance Improvements (PI)

  • Read flat page label number trees once for all pages (#4251)
  • Collect the named destinations once when resolving links (#4249)
  • Avoid scanning all objects in get_outline_root (#4245)

Bug Fixes (BUG)

  • Resolve indirect widths in CID font /W arrays (#4267)

Documentation (DOC)

  • Block incremental writes of encrypted documents (#4246)

Developer Experience (DEV)

  • Update to PyPy 3.12 and pinned requirements (#4244)

Maintenance (MAINT)

  • Revert: Reject unsupported key lengths in the /Encrypt dictionary

Full Changelog

Commits
  • b2c3fa2 REL: 6.21.4
  • ea4ac66 SEC: Limit the number of copied page attributes during flattening (#4290)
  • 06593f9 SEC: Detect EOF when reading standard xref table trailer (#4289)
  • f176db1 SEC: Fix loop detection when cloning DictionaryObject (#4288)
  • c7d391c PI: Speed up transformation matrix handling for layout mode text extraction (...
  • b330dcd DEV: Bump actions/setup-python from 7.0.0 to 7.1.0 (#4278)
  • 8901534 DOC: Exclude performance issues from security reports (#4280)
  • 70eab9b PI: Speed up parse_bfchar (#4273)
  • 4ef744f ROB: Skip an embedded file specification that is not a dictionary (#4256)
  • 945216f ROB: Keep the text state when a text state operator has no operand in layout ...
  • Additional commits viewable in compare view

Updates python-multipart from 0.0.32 to 0.0.33

Release notes

Sourced from python-multipart's releases.

Version 0.0.33

🛡️ Safer form parsing

This release lets you cap URL-encoded form fields as they stream in, and fixes several upload and decoding edge cases. It also drops Python 3.10 and adds Python 3.15.

pip install python-multipart==0.0.33
  • Limit URL-encoded fields while streaming (#333). The new opt-in MAX_FIELDS and MAX_FIELD_SIZE options for FormParser raise FormParserError before oversized data is buffered. Both default to no limit, and multipart forms are unaffected.
  • Nameless uploads no longer crash when spilled to disk (#343). Uploads without a filename used to raise AttributeError when UPLOAD_KEEP_EXTENSIONS or UPLOAD_KEEP_FILENAME was set.
  • UPLOAD_DIR accepts str with UPLOAD_KEEP_FILENAME (#335). A str upload directory used to fail on the first write to disk.
  • Decoded data is complete before callbacks run (#336, #355). Content-Transfer-Encoding decoders are finalized at the end of each part, and quoted-printable escapes split across writes decode correctly.
  • parse_options_header lowercases content types with parameters (#287). Multipart/Form-Data; boundary=abc now returns multipart/form-data, the same as headers without parameters.

⚡ Faster parsing

  • Faster opening boundary matching (#328). Complete boundaries are matched in one step.
  • Faster parser state lookups (#330). Parser states are module-level enum members, so their repr is now multipart.END instead of <MultipartState.END: 12>.
  • Faster querystring callback dispatch (#316).

🐍 Python support

  • Python 3.10 is no longer supported (#329). Python 3.11 is now the minimum.
  • Python 3.15 is supported (#350).

💜 Thank you

Thanks to @​Edneam, @​sungbin1015, @​carlok, and @​fjvbn2003 for contributing to this release.

Thanks to the individual sponsors who contributed $134.00 to support this work. If python-multipart is useful to you, consider sponsoring me on GitHub.

Full changelog: 0.0.32...0.0.33

Changelog

Sourced from python-multipart's changelog.

0.0.33 (2026-10-31)

  • Drop Python 3.10 support #329.
  • Add Python 3.15 support #350.
  • Add opt-in field-count and field-size limits for URL-encoded forms in FormParser #333.
  • Normalize the content type returned by parse_options_header when the header has parameters #287.
  • Finalize Content-Transfer-Encoding decoding before invoking field and file callbacks #336.
  • Keep only the incomplete escape when quoted-printable data is split across writes #355.
  • Handle nameless uploads when UPLOAD_KEEP_FILENAME or UPLOAD_KEEP_EXTENSIONS is set #343.
  • Accept a str UPLOAD_DIR when UPLOAD_KEEP_FILENAME is set #335.
  • Speed up parser state lookups #330.
  • Speed up opening boundary matching #328.
  • Speed up querystring callback dispatch #316.
Commits
  • 9217f26 Bump version to 0.0.33 (#357)
  • d0344c1 Keep only the incomplete escape when quoted-printable data is split (#355)
  • 44871df Handle nameless uploads when keeping the filename or extension (#343)
  • b21ea59 Add streaming field limits to FormParser (#333)
  • 48f9e21 Fix the In-Depth Example in the docs to return bytes (#338)
  • 12a2f8f Accept a str UPLOAD_DIR when UPLOAD_KEEP_FILENAME is set (#335)
  • 95f6376 Use the shared security policy (#353)
  • 8ec84ef Migrate documentation from MkDocs to Zensical (#352)
  • d7af81c Rewrite README for newcomers (#351)
  • b035d14 Add Python 3.15 classifier (#350)
  • Additional commits viewable in compare view

Updates filelock from 4.2.4 to 4.2.7

Release notes

Sourced from filelock's releases.

4.2.7

Bug fixes

  • A SoftFileLease reclaims a dead holder's lease marker even when that holder published another lease_duration. It used to raise LeaseSettingsMismatch on every attempt instead, so after a holder crashed and its peers restarted with a changed duration the lock stayed wedged until force_break(). A live holder with another duration still raises (#900) by @​dxbjavid and @​gaborbernat.

PyPI release

Full Changelog

4.2.6

Bug fixes

  • Fix a race in SoftFileLock, MarkerSoftFileLock and SoftFileLease when three or more contenders reclaim a dead marker. The race could strand a live holder's marker under a break name, leaving the lock unusable or admitting a second holder. Contenders now recheck the marker before exchanging names and unwind nested exchanges in order. If the filesystem refuses a return exchange, the contender leaves its marker at the lock path for later recovery (#899) by @​dxbjavid and @​gaborbernat.

PyPI release

Full Changelog

4.2.5

Bug fixes

  • acquire and acquire raise TypeError for a blocking that is not a bool, as the constructor and the blocking setter already do. A truthy value such as the string "false" used to count as True, so a call meant as a single attempt waited for the instance's timeout, and without a limit at the default -1 (#870) by @​simpleqt and @​gaborbernat.
  • A SoftFileLock acquisition whose first read of its new marker's identity failed reads it again before rolling back. On Windows the rollback could otherwise not recognize the marker it had created, and the empty marker it left blocked the path for every later acquisition, since no contender breaks an empty marker (#869) by @​simpleqt and @​gaborbernat.
  • A fork() child of a process holding a SoftFileLease starts from an unheld claim. It used to inherit the parent's token, last compromise and heartbeat, so token and compromise reported a claim the child never held while is_locked reported it unheld (#868) by @​dxbjavid and @​gaborbernat.
  • A nested acquire of a held FileLock or SoftFileLock no longer creates the lock file's parent directory. After a rename of that directory during the hold, the nested acquire recreated the old name, and when a file had taken the name it raised FileExistsError and left the hold's recursion count incremented (#878) by @​0x5t4l1n and @​gaborbernat.
  • Fix ReadWriteLock failing every acquire with "link directory ... was replaced while opening" in a group-writable directory whose inherited ACL, such as an NFSv4 one on ZFS, opens the link directory to the group. The lock now closes the empty link directory to its owner, and where the filesystem refuses that, such as ZFS with aclmode=restricted, it names the directory to make writable by its owner only (#898) by @​gaborbernat.
  • Fix SoftFileLock, MarkerSoftFileLock and SoftFileLease raising OverflowError out of acquire(), or never reclaiming a dead holder's lock, when a stranded restore claim beside the lock names a process number outside 1..2**31-1 or spells it in non-ASCII digits. Such a claim is now ignored, as no filelock writes one (#871) by @​dxbjavid and @​gaborbernat.
  • Fix soft locks on Windows keeping the marker of a holder that has exited while another process still holds a handle to it, such as a parent's subprocess.Popen after wait() or multiprocessing.Process after join(). Acquiring such a lock with the default timeout=-1 waited forever (#874) by @​nk-batman21.
  • Fix the read-only reopen of a lock file this account cannot write resolving a relative path against the working directory of the moment. A chdir between the refused O_RDWR open and the reopen made the acquisition wait on a file that is not there, or probe one in another directory. The reopen now uses the path the acquisition pinned (#889) by @​dxbjavid and @​gaborbernat.
  • Handle EMLINK, the error FreeBSD reports when a no-follow open refuses a symlink, in a soft reader/writer lock's protocol tree, so heartbeat reports lost ownership there rather than a transient refresh error (#866) by @​pacocartones and @​gaborbernat.
  • Resolving ReadWriteLock or AsyncReadWriteLock raises the ImportError when a module other than Python's sqlite3 is missing, as in a frozen application that left out a filelock submodule. The names are None only without SQLite (#880) by @​pintu544 and @​gaborbernat.

Documentation

Packaging

  • Releases now run on the shared tox-dev/github-workflows pipeline, with a locked release toolchain and generated GitHub Release notes (#885) by @​gaborbernat.

... (truncated)

Changelog

Sourced from filelock's changelog.

########### Changelog ###########

.. towncrier-draft-entries:: Unreleased

.. towncrier release notes start

.. _release-4-2-9:


4.2.9 (2026-11-04)


.. _release-4-2-9-fixed:

Fixed

  • :class:~filelock.ReadWriteLock, :class:~filelock.SoftReadWriteLock and their async wrappers now raise :class:TypeError for a blocking that is not a :class:bool, in the constructor and on acquire, as :class:~filelock.FileLock already does. Before, blocking=0 waited out the full timeout on a contended :class:~filelock.ReadWriteLock while blocking=False failed at once, and a truthy value such as "false" turned a single attempt into a blocking wait (:pr:908) by :user:abhishekcpp007 and :user:gaborbernat.

.. _release-4-2-8:


4.2.8 (2026-11-04)


.. _release-4-2-8-documentation:

Documentation

  • Clarify the platform-specific locking primitive and range used by descriptor locks, and correct the guidance on interoperating with byte-range lock protocols such as conda's repodata lock (:pr:905) by :user:boyfeiyu.

.. _release-4-2-7:


4.2.7 (2026-11-02)


.. _release-4-2-7-fixed:

Fixed

... (truncated)

Commits
  • 5fd486b release 4.2.7
  • ff84735 🐛 fix(lease): reclaim dead holders after duration changes (#900)
  • f71acb1 release 4.2.6
  • 77eb01a 🐛 fix(soft): restore raced stale markers (#899)
  • b0cc007 release 4.2.5
  • 21bc250 🐛 fix(rw): close a link directory an ACL opened (#898)
  • 715a8de 📝 docs(security): add a threat model and align the policy (#896)
  • b0f1b73 🧪 test: tolerate a preloaded sqlite3 (#894)
  • a2e26ac 🧪 test: count descriptors behind an incomplete /dev/fd (#877)
  • 160141c 🐛 fix(import): raise for a missing read-write module (#880)
  • Additional commits viewable in compare view

Updates anthropic from 2.3.0 to 2.4.0

Release notes

Sourced from anthropic's releases.

v2.4.0

Features

  • api: add GA methods for analytics, spend limits and RBAC
  • api: add named beta types for unified metrics and RBAC delete responses
  • api: add shared analytics order and increase request actor types
  • api: add tool_use_limit_reached_error and compaction_limit_reached_error session error types
  • api: add types for analytics group_by and spend limit period filters
  • api: add user_profile_id to External Keys and Workspaces

Bug Fixes

  • api: make spend_limit nullable in the spend limit increase request approve response
  • api: require always-sent analytics fields and drop the unused project product field
  • client: let pydantic validate params types that accept omit

Chores

  • ci: remove unused build upload steps
  • docs: clarify the Slack channel id description
  • docs: clarify what disabling the Compliance API stops
  • docs: clarify what the capability_access_all role action grants
  • docs: link Dreams model fields to the supported models section
  • docs: update example user ID in Admin API examples
  • internal: add a section for each repository's own review rules
  • internal: plainer wording in worker comments

Documentation

  • client: add missing await to the async parse() docstring example
  • examples: keep the message threads example valid on Sonnet 5.5
  • examples: use current model IDs
  • readme: point to the docs site for documentation
  • link to the SDK documentation instead of removed README sections
Changelog

Sourced from anthropic's changelog.

2.4.0 (2026-11-02)

Features

  • api: add GA methods for analytics, spend limits and RBAC
  • api: add named beta types for unified metrics and RBAC delete responses
  • api: add shared analytics order and increase request actor types
  • api: add tool_use_limit_reached_error and compaction_limit_reached_error session error types
  • api: add types for analytics group_by and spend limit period filters
  • api: add user_profile_id to External Keys and Workspaces

Bug Fixes

  • api: make spend_limit nullable in the spend limit increase request approve response
  • api: require always-sent analytics fields and drop the unused project product field
  • client: let pydantic validate params types that accept omit

Chores

  • ci: remove unused build upload steps
  • docs: clarify the Slack channel id description
  • docs: clarify what disabling the Compliance API stops
  • docs: clarify what the capability_access_all role action grants
  • docs: link Dreams model fields to the supported models section
  • docs: update example user ID in Admin API examples
  • internal: add a section for each repository's own review rules
  • internal: plainer wording in worker comments

Documentation

  • client: add missing await to the async parse() docstring example
  • examples: keep the message threads example valid on Sonnet 5.5
  • examples: use current model IDs
  • readme: point to the docs site for documentation
  • link to the SDK documentation instead of removed README sections
Commits
  • 5752c13 release: 2.4.0
  • c2cf85f Merge pull request #1079 from anthropics/synced/published
  • 62b05ab feat(api): add named beta types for unified metrics and RBAC delete responses
  • fb176c1 chore(docs): clarify the Slack channel id description
  • c94ad93 chore(internal): plainer wording in worker comments and private names (#1085)
  • 2d29fcb chore(docs): link Dreams model fields to the supported models section
  • caf6c5b codegen metadata
  • 174bfb6 feat(api): add tool_use_limit_reached_error and compaction_limit_reached_erro...
  • 760525d codegen metadata
  • 1b413ea codegen metadata
  • Additional commits viewable in compare view

Updates pytest from 9.1.1 to 9.2.0

Release notes

Sourced from pytest's releases.

9.2.0

pytest 9.2.0 (2026-10-27)

Removals and backward incompatible breaking changes

  • #14716: -c now raises a usage error for a path that does not exist, is a directory, or is in a format pytest has no loader for. Such paths were previously either ignored or reported as an unhandled FileNotFoundError.

  • #8593: The indirect, ids and scope arguments of Metafunc.parametrize() <pytest.Metafunc.parametrize> -- and therefore of @pytest.mark.parametrize <pytest.mark.parametrize ref> -- are now keyword-only.

    Passing them positionally was a common source of confusing errors, e.g. parametrize("arg1", "arg2", [(1, 2)]) made the argvalues land in indirect and failed with indirect fixture '(1, 2)' doesn't exist; such mistakes now fail with an understandable TypeError. The type annotations have always declared these arguments as keyword-only.

  • #993: Plugin import failures at startup are now reported and classified instead of escaping as a raw traceback with the accidental exit code 1:

    • a plugin that cannot be found -- via -p, pytest_plugins or PYTEST_PLUGINS -- exits with pytest.ExitCode USAGE_ERROR (4), like a conftest.py that fails to import;
    • a plugin that is found but raises while importing -- including a broken pytest11 entry point or a missing plugin dependency -- exits with pytest.ExitCode INTERNAL_ERROR (3), with the traceback preserved.

    pytest.main now returns these codes instead of raising ImportError. Also fixed an IndexError from pytest's own internals when the plugin raised an exception with no arguments.

Deprecations (removal in next major release)

  • #14742: The private _pytest.python.CallSpec2 name has been renamed to CallSpec. The old CallSpec2 alias remains available for now and will be removed in pytest 10 or 11.

  • #14755: Schedule yield_fixture decorator for removal in pytest 10 or 11.

  • #14774: Similarly to the deprecation of class-scoped fixtures defined as instance methods in pytest 9.1, all higher-scoped fixtures (module, package, and session) defined as instance methods are now deprecated.

    They suffer from the same issue the original deprecation only fixed for class-scoped fixtures, see 10819 and 14011.

  • #14808: Passing a non-string value to a string-typed ini option now emits a pytest.PytestRemovedIn10Warning. This affects [tool.pytest.ini_options] in pyproject.toml. In pytest 10 this will raise a TypeError, matching the behavior of the corresponding TOML config path.

  • #7323: Passing bytes to TerminalReporter.write_line() is now deprecated, pass a str instead.

New features

  • #14743: Full diff: now contains a legend explaining the + & - symbols in diff output.
  • #2781: When strict_markers is enabled, marker names used in -m expressions are now validated against registered markers.
  • #6881: Added the parametrize_long_str_id_strategy configuration option to control how long str/bytes parameter values are handled in auto-generated test IDs. Explicit IDs set via ids=[...] or pytest.param(..., id=...) are not affected. Available strategies: short (default, values over 100 chars fall back to argname+index), sha256 (SHA-256 hex digest), legacy (keep full value), and disallow (error requesting explicit IDs).

Improvements in existing functionality

  • #10745: A RecursionError whose recursion origin cannot be located now shows only the first and last 10 stack frames, matching what pytest already did when locating the origin failed outright. Previously the full traceback -- often around a thousand near-identical frames -- was rendered, which was both slow and unreadable. Pass --full-trace to see every frame.

... (truncated)

Commits
  • ae1d0ff Prepare release version 9.2.0
  • 143ce31 pre-commit: exclude codespell on generated release announcements
  • 532dc5f tox: add attrs dependency to regen, needed in reportingdemo.rst
  • a7b2446 Merge pull request #15245 from pytest-dev/claude/project-thread-9jcf91
  • 679d09c [pre-commit.ci] pre-commit autoupdate (#15266)
  • 41d12cd docs: clarify typing for yield fixtures
  • b9022ba Merge pull request #15182 from 1871698/docs/improve-getting-started-description
  • 16f87a7 docs: improve getting-started.rst test execution description
  • 082ed70 Merge pull request #15255 from pytest-dev/claude/project-thread-eoi3d6
  • ae37a01 Merge pull request #15227 from pytest-dev/claude/project-thread-4etye4
  • Additional commits viewable in compare view

Updates pytest-asyncio from 1.4.0 to 1.4.1.post1

Release notes

Sourced from pytest-asyncio's releases.

pytest-asyncio v1.4.1.post1

1.4.1.post1 - 2026-11-01

Changed

  • Removed the upper version bound on the pytest dependency. (#1605)

pytest-asyncio v1.4.1

1.4.1 - 2026-10-25

Added

  • Declared support for Python 3.15 (#1588)

Fixed

  • Allow AsyncIterable as a return type for asynchronous generator fixtures decorated with pytest_asyncio.fixture (#1090)

Notes for Downstream Packagers

  • Source-tree development dependencies now use PEP 735 dependency groups and uv.lock. (#1518)
Commits
  • e420349 Bump mypy pre-commit hook to v2.4.0 (#1601)
  • 16a1ba4 chore: Prepare release of v1.4.1.post1.
  • 7087e7f build: drop pytest upper bound (#1605) (#1606)
  • 6af7f5c chore: Prepare release of v1.4.1.
  • 32ccf64 Support 3.15 (#1588)
  • 9830071 Build(deps): Bump certifi from 2026.6.17 to 2026.10.19 (#1590)
  • 0238023 Build(deps): Bump virtualenv from 21.7.13 to 21.14.13 (#1589)
  • 93893ec Build(deps): Bump astral-sh/setup-uv from 10.2.0 to 10.3.0 (#1583)
  • f287e5e Build(deps): Bump actions/download-artifact from 8.0.1 to 8.0.2 (#1581)
  • b71da4f Build(deps-dev): Bump hypothesis from 6.168.3 to 6.168.5 (#1582)
  • Additional commits viewable in compare view

Updates ruff from 0.17.2 to 0.17.3

Release notes

Sourced from ruff's releases.

0.17.3

Release Notes

Released on 2026-10-26.

Preview features

  • [suspicious] Add shared-clock-mock (#29074)

Bug fixes

  • [pyupgrade] Avoid incorrect conversions to f-strings (UP032) (#25485)

Performance

  • Buffer stdout in ruff format (#29631)
  • Specialize ASCII identifier lexing (#29503)
  • Speed up identifier and keyword lexing (#29463)

Documentation

  • [flake8-bandit] Describe what the rule actually checks for httpx (S113) (#27936)

Contributors

Install ruff 0.17.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.17.3/ruff-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.17.3/ruff-installer.ps1 | iex"

Download ruff 0.17.3

File<...

Description has been truncated

…th 21 updates

Bumps the python-dependencies group with 21 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [pydantic](https://github.com/pydantic/pydantic) | `2.14.1` | `2.14.2` |
| [pypdf](https://github.com/py-pdf/pypdf) | `6.21.2` | `6.21.4` |
| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.32` | `0.0.33` |
| [filelock](https://github.com/tox-dev/filelock) | `4.2.4` | `4.2.7` |
| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `2.3.0` | `2.4.0` |
| [pytest](https://github.com/pytest-dev/pytest) | `9.1.1` | `9.2.0` |
| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.4.0` | `1.4.1.post1` |
| [ruff](https://github.com/astral-sh/ruff) | `0.17.2` | `0.17.3` |
| [mypy](https://github.com/python/mypy) | `2.4.0` | `2.4.1` |
| [moto](https://github.com/getmoto/moto) | `5.2.4` | `5.2.5` |
| [anyio](https://github.com/agronholm/anyio) | `4.15.1` | `4.16.0` |
| [boto3](https://github.com/boto/boto3) | `1.43.118` | `1.43.123` |
| [botocore](https://github.com/boto/botocore) | `1.43.118` | `1.43.123` |
| [coverage](https://github.com/coveragepy/coveragepy) | `7.17.0` | `7.17.1` |
| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `3.0.0` | `3.0.1` |
| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.1.0` | `1.2.0` |
| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.45.1` | `1.45.2` |
| [pydantic-core](https://github.com/pydantic/pydantic) | `2.50.1` | `2.50.2` |
| [python-dateutil](https://github.com/dateutil/dateutil) | `2.9.0.post0` | `4.0.0` |
| [websockets](https://github.com/python-websockets/websockets) | `17.3` | `17.4` |
| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.5.1` | `2.5.2` |



Updates `pydantic` from 2.14.1 to 2.14.2
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v2.14.2/HISTORY.md)
- [Commits](pydantic/pydantic@v2.14.1...v2.14.2)

Updates `pypdf` from 6.21.2 to 6.21.4
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](py-pdf/pypdf@6.21.2...6.21.4)

Updates `python-multipart` from 0.0.32 to 0.0.33
- [Release notes](https://github.com/Kludex/python-multipart/releases)
- [Changelog](https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md)
- [Commits](Kludex/python-multipart@0.0.32...0.0.33)

Updates `filelock` from 4.2.4 to 4.2.7
- [Release notes](https://github.com/tox-dev/filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](tox-dev/filelock@4.2.4...4.2.7)

Updates `anthropic` from 2.3.0 to 2.4.0
- [Release notes](https://github.com/anthropics/anthropic-sdk-python/releases)
- [Changelog](https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md)
- [Commits](anthropics/anthropic-sdk-python@v2.3.0...v2.4.0)

Updates `pytest` from 9.1.1 to 9.2.0
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](pytest-dev/pytest@9.1.1...9.2.0)

Updates `pytest-asyncio` from 1.4.0 to 1.4.1.post1
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](pytest-dev/pytest-asyncio@v1.4.0...v1.4.1.post1)

Updates `ruff` from 0.17.2 to 0.17.3
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.17.2...0.17.3)

Updates `mypy` from 2.4.0 to 2.4.1
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](python/mypy@v2.4.0...v2.4.1)

Updates `moto` from 5.2.4 to 5.2.5
- [Release notes](https://github.com/getmoto/moto/releases)
- [Changelog](https://github.com/getmoto/moto/blob/master/CHANGELOG.md)
- [Commits](getmoto/moto@5.2.4...5.2.5)

Updates `anyio` from 4.15.1 to 4.16.0
- [Release notes](https://github.com/agronholm/anyio/releases)
- [Commits](agronholm/anyio@4.15.1...4.16.0)

Updates `boto3` from 1.43.118 to 1.43.123
- [Release notes](https://github.com/boto/boto3/releases)
- [Commits](boto/boto3@1.43.118...1.43.123)

Updates `botocore` from 1.43.118 to 1.43.123
- [Commits](boto/botocore@1.43.118...1.43.123)

Updates `coverage` from 7.17.0 to 7.17.1
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](coveragepy/coveragepy@7.17.0...7.17.1)

Updates `deprecated` from 3.0.0 to 3.0.1
- [Release notes](https://github.com/laurent-laporte-pro/deprecated/releases)
- [Changelog](https://github.com/laurent-laporte-pro/deprecated/blob/master/CHANGELOG.md)
- [Commits](laurent-laporte-pro/deprecated@v3.0.0...v3.0.1)

Updates `mypy-extensions` from 1.1.0 to 1.2.0
- [Commits](python/mypy_extensions@1.1.0...1.2.0)

Updates `opentelemetry-api` from 1.45.1 to 1.45.2
- [Release notes](https://github.com/open-telemetry/opentelemetry-python/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-python@v1.45.1...v1.45.2)

Updates `pydantic-core` from 2.50.1 to 2.50.2
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](pydantic/pydantic@core-v2.50.1...core-v2.50.2)

Updates `python-dateutil` from 2.9.0.post0 to 4.0.0
- [Release notes](https://github.com/dateutil/dateutil/releases)
- [Changelog](https://github.com/dateutil/dateutil/blob/master/NEWS)
- [Commits](dateutil/dateutil@2.9.0.post0...4.0.0)

Updates `websockets` from 17.3 to 17.4
- [Release notes](https://github.com/python-websockets/websockets/releases)
- [Commits](python-websockets/websockets@17.3...17.4)

Updates `wrapt` from 2.5.1 to 2.5.2
- [Release notes](https://github.com/GrahamDumpleton/wrapt/releases)
- [Changelog](https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst)
- [Commits](GrahamDumpleton/wrapt@2.5.1...2.5.2)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-version: 2.14.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: pypdf
  dependency-version: 6.21.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: python-multipart
  dependency-version: 0.0.33
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: filelock
  dependency-version: 4.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: anthropic
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: pytest
  dependency-version: 9.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: pytest-asyncio
  dependency-version: 1.4.1.post1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: ruff
  dependency-version: 0.17.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: mypy
  dependency-version: 2.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: moto
  dependency-version: 5.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: anyio
  dependency-version: 4.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: boto3
  dependency-version: 1.43.123
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: botocore
  dependency-version: 1.43.123
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: coverage
  dependency-version: 7.17.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: deprecated
  dependency-version: 3.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: mypy-extensions
  dependency-version: 1.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: opentelemetry-api
  dependency-version: 1.45.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: pydantic-core
  dependency-version: 2.50.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
- dependency-name: python-dateutil
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-dependencies
- dependency-name: websockets
  dependency-version: '17.4'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-dependencies
- dependency-name: wrapt
  dependency-version: 2.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants