Skip to content

chore(deps): bump the python-packaging group across 1 directory with 25 updates - #753

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/python-packaging-9ea774fba9
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/python-packaging-9ea774fba9

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

Bumps the python-packaging group with 25 updates in the / directory:

Package From To
certifi 2026.6.17 2026.7.22
polars 1.42.1 1.44.2
pytz 2026.2 2026.3.post1
temporalio 1.30.0 1.33.0
duckdb 1.5.4 1.5.5
statsmodels 0.14.6 0.15.0
coverage 7.15.2 7.16.1
hypothesis 6.152.7 6.168.0
commitizen 4.16.5 4.18.1
mypy 2.3.0 2.3.1
pre-commit 4.6.1 4.6.2
ruff 0.16.0 0.16.8
types-pyyaml 6.0.12.20260724 6.0.12.20260906
build 1.5.0 1.6.1
setuptools 83.0.0 84.0.0
twine 6.2.0 7.0.0
wheel 0.47.0 0.48.0
charset-normalizer 3.4.9 3.5.1
idna 3.18 3.20
packaging 26.2 26.3
polars-runtime-32 1.42.1 1.44.2
protobuf 7.35.1 7.36.2
pygments 2.20.0 2.21.0
types-protobuf 7.34.1.20260518 7.35.1.20260906
urllib3 2.7.0 2.8.0

Updates certifi from 2026.6.17 to 2026.7.22

Commits

Updates polars from 1.42.1 to 1.44.2

Release notes

Sourced from polars's releases.

Python Polars 1.44.2

🛠️ Other improvements

Thank you to all our contributors for making this release possible! @​EndPositive, @​dsprenkels, @​kdn36, @​lun3x, @​nameexhaustion and @​orlp

Python Polars 1.44.1

Thank you to all our contributors for making this release possible! @​Kevin-Patyk, @​henrytsanford, @​jonasdedden, @​orlp and @​ritchie46

Python Polars 1.44.0

⚠️ Deprecations

  • Deprecate rechunk parameter for all read/scan functions (#28063)
  • Deprecate Expr.rechunk() (#28692)
  • Deprecate struct.rename_fields() with an incorrect number of fields (#28672)

🚀 Performance improvements

  • Add private env var toggle for HTTP rate limit (#28882)
  • Relax default CloudRetryConfig for rate limit stability (#28885)
  • Elide generic cross join on subquery decorrelation in equality predicates (#28876)
  • cache CTE's in SQL layer (#28864)
  • Allow CSPE if manual caches are set (#28859)
  • Lower unqualified join predicates to inner joins in SQL (#28854)
  • Rechunk mask for DataFrame filter (#28762)
  • Improve performance of when/then/otherwise by masking out unevaluated elements (#28498)
  • Drop unused projections in filter on streaming engine (#28713)
  • Retain Parquet Partial metadata on filter (#28737)

✨ Enhancements

  • Support integer fixed-array dot products (#28829)
  • SQL correlated in (#28927)
  • Support more join_types in join_where (#28880)
  • Support Iceberg schema evolution (#28794)
  • SQL conformance (#28494)
  • Introduce RemoteEngine and a common base class for all engines (#28800)
  • Support Iceberg table with V3 deletion vectors in native scan_iceberg (#28772)
  • Support Iceberg snapshot properties (#28793)
  • Expose sinked_paths_callback on sink_parquet as unstable parameter (#28814)
  • Add infer_schema_files to CSV inference hint (#28809)
  • Add native fixed-array dot (#28504)
  • Export query metrics to polars_cloud (#28757)
  • Support Iceberg object storage paths (#28634)
  • More CSEE simplification (#28731)

... (truncated)

Commits
  • 1bd8ec1 Python Polars 1.44.2
  • ccc3842 refactor(rust): Reduce code monomorphization in eager joins (#29087)
  • 22f274b refactor(rust): Reduce serde monomorphization (#29088)
  • b069c83 feat(python): Add organization to Config.enable_monitoring (#29221)
  • d5a00ec ci: Skip tests that are currently failing on windows (#28962)
  • 22dc741 test(python): Update test for latest pyiceberg (#29090)
  • d1a325b fix: Include the library path in the plugin dlopen error message (#29213)
  • 461fe0e feat(python): Add a workspace argument to Config.enable_monitoring (#29196)
  • 0ced41b fix: Wrap IoError in PathIoError such that callers can extract untruncated pa...
  • 3b4075b refactor: Bump object_store for new DnsResolver trait (#29145)
  • Additional commits viewable in compare view

Updates pytz from 2026.2 to 2026.3.post1

Commits
  • 661bca9 Bump version numbers to 2026.3.post1 for python2 fix
  • 1e31a16 Log python version running tests, force python2
  • b3ca7c3 Unix line endings
  • b55039a Replace non-ASCII character in comment to fix build with Python 2
  • 5420ee2 Replace non-ASCII character in comment
  • 2c139e8 Merge branch 'fix/localize-overflow-at-datetime-extremes' of https://github.c...
  • c843864 Run zdump tests quietly
  • 518500c Reduce noise when collecting zdump info dumps
  • 081f935 Merge branch 'kytta-fix-dst' into 2026c
  • 8c9d69b Merge branch 'master' into 2026c
  • Additional commits viewable in compare view

Updates temporalio from 1.30.0 to 1.33.0

Release notes

Sourced from temporalio's releases.

1.33.0

Notable Changes

Added

Standalone Activity operator commands

  • ActivityHandle now supports operator commands for standalone activities: pause, unpause, update_options and restore_original_options.
  • Added GCP Cloud Run serverless-worker OpenTelemetry plugin in temporalio.contrib.opentelemetry.
  • Added new options to ActivityHandle.describe() to retrieve associated payloads, such as activity input and outcome.
  • New properties and methods in ActivityExecution and ActivityExecutionDescription.
  • Added experimental temporalio.converter.NexusSerializationContext support for Nexus callers and handlers. Callers use it for inputs, results, and failures; handlers use it for inputs, synchronous results, and failures. Asynchronous handler results and detached standalone handles are not yet supported. Standalone USE_EXISTING handles use their start request's context.

Changed

  • Standalone Activities are now generally available (GA). (Standalone Activities as Nexus operations and Standalone Activities operator commands remain experimental. Operator commands are pause, unpause, updateOptions, restoreOriginal.)
  • System Nexus Signal-with-Start Workflow operations now use the typed WorkflowOutboundInterceptor.start_signal_with_start_workflow interception point instead of the generic WorkflowOutboundInterceptor.start_nexus_operation method.
  • System Nexus Signal-with-Start Workflow operations now invoke WorkflowOutboundInterceptor.start_system_nexus_operation after their typed interception point. They continue not to invoke WorkflowOutboundInterceptor.start_nexus_operation.
  • The experimental GetNexusOperationResultInput now includes the Nexus endpoint, service, and operation.

💥 Breaking Changes

  • Experimental external storage: ExternalStorage.driver_selector is now called with a StorageDriverSelectContext instead of a StorageDriverStoreContext. Update the annotation; the new type carries the same target field. Since selectors are plain callables, a stale annotation fails type checking rather than at runtime.
  • client.ActivityExecution and client.ActivityExecutionDescription had some fields removed or renamed to match RPC API.
    • Dataclass parameters for these types were changed to frozen=True, eq=False, kw_only=True.
    • scheduled_time was renamed schedule_time.
    • last_failure was changed from field to method that runs data converter on demand.
    • state_transition_count, eager_execution_requested, paused and long_poll_token were removed.
  • ActivityHandle.describe() long-poll token was removed. The functionality can still be used manually through raw gRPC API.

Fixed

  • temporalio.contrib.deepagents no longer dedups repeated identical tool, model, and backend-op calls: each dispatch runs its own Activity, and the

... (truncated)

Changelog

Sourced from temporalio's changelog.

[1.33.0] - 2026-09-14

Added

Standalone Activity operator commands

  • ActivityHandle now supports operator commands for standalone activities: pause, unpause, update_options and restore_original_options.
  • Added GCP Cloud Run serverless-worker OpenTelemetry plugin in temporalio.contrib.opentelemetry.
  • Added new options to ActivityHandle.describe() to retrieve associated payloads, such as activity input and outcome.
  • New properties and methods in ActivityExecution and ActivityExecutionDescription.
  • Added experimental temporalio.converter.NexusSerializationContext support for Nexus callers and handlers. Callers use it for inputs, results, and failures; handlers use it for inputs, synchronous results, and failures. Asynchronous handler results and detached standalone handles are not yet supported. Standalone USE_EXISTING handles use their start request's context.

Changed

  • Standalone Activities are now generally available (GA). (Standalone Activities as Nexus operations and Standalone Activities operator commands remain experimental. Operator commands are pause, unpause, updateOptions, restoreOriginal.)
  • System Nexus Signal-with-Start Workflow operations now use the typed WorkflowOutboundInterceptor.start_signal_with_start_workflow interception point instead of the generic WorkflowOutboundInterceptor.start_nexus_operation method.
  • System Nexus Signal-with-Start Workflow operations now invoke WorkflowOutboundInterceptor.start_system_nexus_operation after their typed interception point. They continue not to invoke WorkflowOutboundInterceptor.start_nexus_operation.
  • The experimental GetNexusOperationResultInput now includes the Nexus endpoint, service, and operation.

💥 Breaking Changes

  • Experimental external storage: ExternalStorage.driver_selector is now called with a StorageDriverSelectContext instead of a StorageDriverStoreContext. Update the annotation; the new type carries the same target field. Since selectors are plain callables, a stale annotation fails type checking rather than at runtime.
  • client.ActivityExecution and client.ActivityExecutionDescription had some fields removed or renamed to match RPC API.
    • Dataclass parameters for these types were changed to frozen=True, eq=False, kw_only=True.
    • scheduled_time was renamed schedule_time.
    • last_failure was changed from field to method that runs data converter on demand.
    • state_transition_count, eager_execution_requested, paused and long_poll_token were removed.
  • ActivityHandle.describe() long-poll token was removed. The functionality can still be used manually through raw gRPC API.

Fixed

  • temporalio.contrib.google_genai now requires google-genai 2.21.0 or later and supports its file download API, including video inputs and download destinations.

... (truncated)

Commits
  • ab52fdd Merge branch 'main' into fix/release-changelog-notes-package
  • 6516748 Fix release changelog notes command
  • 98aa05d NexusSerializationContext for data/failure converters (#1828)
  • a848fc7 Retry worker deployment test RPCs (#1857)
  • 263f782 Prepare release 1.33.0 (#1864)
  • 4ea369a Remove Experimental tag from Standalone Activities (#1863)
  • 327ba96 Fix OpenTelemetry exporter examples in the openai_agents README (#1850)
  • ab25ed6 Fix repeated Deep Agents tool calls with identical arguments (#1806)
  • a6a8b57 Bump cryptography from 49.0.0 to 50.0.0 (#1826)
  • 8549ee4 Bump aiohttp from 3.14.1 to 3.14.3 (#1827)
  • Additional commits viewable in compare view

Updates duckdb from 1.5.4 to 1.5.5

Release notes

Sourced from duckdb's releases.

v1.5.5 Bugfix Release

See DuckDB's changelog for all changes in DuckDB.

What's Changed in DuckDB-Python

Commits

Updates statsmodels from 0.14.6 to 0.15.0

Release notes

Sourced from statsmodels's releases.

Release 0.15.0

The statsmodels developers are happy to announce the release of 0.15.0. 358 issues were closed in this release and 655 pull requests were merged. Major new features include:

  • Standardized on rng for controlling randomness across the package (SPEC 007), replacing seed/random_state
  • Functions with variable-length tuple returns now return documented NamedTuple results instead
  • A new abstracted formula engine that supports both patsy and formulaic as the backend
  • Support for Polars DataFrames and Series as model input
  • Switched the build backend from setuptools to meson-python
  • New robust estimators: CovDetMCD, CovDetS, CovDetMM, and RLMDetSMM
  • New tests: Diebold-Mariano, Pesaran-Timmermann, Jonckheere-Terpstra, Leybourne-McCabe, and a delete-k block jackknife estimator
  • The Hamilton filter, local false discovery rate correction, and an L1-penalized GLM solver
  • HurdleCountModel gained fit_regularized, and MICEData is now iterable

This release also raises the minimum supported versions of NumPy, SciPy, and pandas, and tightens input validation for many string-valued options across the package (invalid values that previously failed silently or with a confusing error now raise a clear ValueError). A handful of long-standing bugs in seldom-exercised code paths were also corrected as part of a systematic coverage audit this cycle, some of which change numerical output for affected models. See the release notes for the complete list of enhancements, breaking changes, and bug fixes.

Commits
  • 278ff99 Merge pull request #10211 from bashtage/update-release-note
  • ab3f3bc DOC: Final release note
  • 9307ef1 Merge pull request #8712 from bdpedigo/nobs-style
  • 463e5c5 Merge pull request #10210 from Panzerkampfwagen-del/mice-data-iterable
  • cc734d8 Merge branch 'main' into mice-data-iterable
  • 2912b84 Merge pull request #10209 from Panzerkampfwagen-del/var-df-model-docstring
  • 279b9f4 ENH: make MICEData iterable, yielding successive imputed datasets
  • ce7f2c0 DOC: clarify VARResults.df_model counts parameters per equation
  • d1e1875 Merge pull request #10205 from bashtage/fix-hurdle-and-l1-cov
  • bb385fb Merge pull request #10208 from bashtage/update-release-note
  • Additional commits viewable in compare view

Updates coverage from 7.15.2 to 7.16.1

Release notes

Sourced from coverage's releases.

7.16.1

Version 7.16.1 — 2026-09-13

  • Fix: when the body of an irrefutable case (like case _:) is entirely excluded, the case line is now excluded too, just as an excluded else: body removes the else: line. Previously the case line was left behind and reported as missing. Closes issue 1563 with pull 2269.
  • Fix: using CoverageData.update() twice on an in-memory database would fail, as described in issue 2279. This is now fixed.

➡️  PyPI page: coverage 7.16.1. :arrow_right:  To install: python3 -m pip install coverage==7.16.1

7.16.0

Version 7.16.0 — 2026-08-28

  • When combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define [paths] configuration to combine data across operating systems. Fixes issue 2266.
  • The Coverage.switch_context() method now returns the previous context.
  • Fix: previously, a [paths] pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in pull 2268.
  • Fixes to validation of options and configuration settings:
    • Negative precision settings now always cause useful error messages (pull 2261).
    • An invalid regex in the --contexts option (or the [report] contexts setting) reported a confusing “Couldn’t use data file …: user-defined function raised exception” error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (pull 2262).
    • Non-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren’t strings (like omit, exclude_lines, or a [paths] entry), file settings like data_file, and any wrong-typed value in the [paths] section (pull 2263).
    • coverage run refuses run-affecting command-line options like --branch alongside --concurrency=multiprocessing, since they can’t reach the subprocesses. The check only recognized multiprocessing as the entire option value, so --concurrency=multiprocessing,thread slipped through and failed later with “Can’t combine statement coverage data with branch data”. Each named concurrency library is now properly considered (pull 2270).
  • Fix: coverage annotate -d DIR raised an AssertionError if any measured file had an extension other than .py, such as a .pyw file on Windows. The original extension is now restored on the annotated copy (pull 2265).

➡️  PyPI page: coverage 7.16.0. :arrow_right:  To install: python3 -m pip install coverage==7.16.0

7.15.4

Version 7.15.4 — 2026-08-06

  • Fix: in the HTML report, a source file name containing a double quote (legal on POSIX) wasn’t escaped where it’s dropped into the href of the index and prev/next links, so it could close the attribute early and inject markup. Page URLs are now escaped. Thanks, Rajath Mohare.
  • Fix: the LCOV report wrote file names and other fields into its line-oriented records without neutralizing control characters. A measured file whose name contained a newline (legal on POSIX) could forge extra records, inflating the coverage seen by tools that read the report. Control characters in a field are now replaced. Thanks, Rajath Mohare.
  • Wheels are now provided for Python 3.15.

➡️  PyPI page: coverage 7.15.4. :arrow_right:  To install: python3 -m pip install coverage==7.15.4

7.15.3

Version 7.15.3 — 2026-08-02

  • Fix: the sysmon core is incompatible with dynamic contexts. Previously, the combination would be prevented when read from the coverage.py configuration. But using the context API as pytest-cov does, contexts would be silently dropped. Now a warning is issued, thanks to Jisang Han. Closes issue 2200.
  • A performance improvement in the low-level line number bookkeeping when combining data files, thanks to Kevin Turcios.
  • Performance improvement in HTML reporting by reducing the number of times files have to be parsed, thanks to Kevin Turcios.

➡️  PyPI page: coverage 7.15.3. :arrow_right:  To install: python3 -m pip install coverage==7.15.3

Changelog

Sourced from coverage's changelog.

Version 7.16.1 — 2026-09-13

  • Fix: when the body of an irrefutable case (like case _:) is entirely excluded, the case line is now excluded too, just as an excluded else: body removes the else: line. Previously the case line was left behind and reported as missing. Closes issue 1563_ with pull 2269_.

  • Fix: using :meth:.CoverageData.update twice on an in-memory database would fail, as described in issue 2279_. This is now fixed.

.. _issue 1563: coveragepy/coveragepy#1563 .. _pull 2269: coveragepy/coveragepy#2269 .. _issue 2279: coveragepy/coveragepy#2279

.. _changes_7-16-0:

Version 7.16.0 — 2026-08-28

  • When combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define [paths] configuration to combine data across operating systems. Fixes issue 2266_.

  • The :meth:.Coverage.switch_context method now returns the previous context.

  • Fix: previously, a [paths] pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in pull 2268_.

  • Fixes to validation of options and configuration settings:

    • Negative precision settings now always cause useful error messages (pull 2261_).

    • An invalid regex in the --contexts option (or the [report] contexts setting) reported a confusing "Couldn't use data file ...: user-defined function raised exception" error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (pull 2262_).

    • Non-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren't strings (like omit, exclude_lines, or a [paths] entry), file settings like data_file, and any wrong-typed value in the [paths] section (pull 2263_).

    • coverage run refuses run-affecting command-line options like --branch alongside --concurrency=multiprocessing, since they can't

... (truncated)

Commits
  • ccbb992 docs: prep for 7.16.1
  • 0697ccc chore: make upgrade
  • 12f3595 chore: bump docker/setup-qemu-action in the action-dependencies group (#2280)
  • 35b58d3 fix: CoverageData.update() can be called twice on an in-memory database. #2279
  • 92e1ce9 chore: bump the action-dependencies group with 4 updates (#2278)
  • bf07310 build: quote var expansion (actionlint SC2086)
  • 3c434f5 quality: use shellcheck-py to get shellcheck in GitHub CI
  • 632f397 build: use .txt instead of .pip, even though it's a stupid extension
  • ffc6a4a test: only run diff-cover on pull requests
  • 33553b3 fix: exclude the case line when an irrefutable case body is excluded (#2269)
  • Additional commits viewable in compare view

Updates hypothesis from 6.152.7 to 6.168.0

Release notes

Sourced from hypothesis's releases.

Hypothesis for Python - version 6.152.9

This release substantially improves our internal distribution for generating integers. This release has the most visible effect on "integers()", but may incidentally improve other strategies which draw integers internally.

Our integers distribution had two problems. First, it had jagged discontinuities at certain values where we switched sampling approaches. Second, it used a different distribution for bounded and unbounded ranges, which resulted in "st.integers()" and "st.integers(-264, 264)" producing very different distributions despite being semantically similar.

We now use a smooth distribution for both "st.integers()" and "st.integers(a, b)", which fixes both of these issues. This should substantially improve our testing power in certain cases.

The only way this release should be user-visible is that it finds more bugs! If this release is user-visible in other ways - for example, because it is slower, or produces a worse distribution in some cases - please open an issue.

The canonical version of these notes (with links) is on readthedocs.

Hypothesis for Python - version 6.152.8

This release drops support for end-of-life Django 4.2.

The canonical version of these notes (with links) is on readthedocs.

Commits
  • cd434f2 Bump hypothesis version to 6.168.0 and update changelog
  • 3187fb9 Merge pull request #4868 from Zac-HD/claude/hypothesis-datetime-strategy-ajzai0
  • a60dc77 Reduce rate of tricky datetimes
  • 67e5c04 Merge pull request #4875 from HypothesisWorks/create-pull-request/patch
  • ecaed93 Merge remote-tracking branch 'upstream/master' into plait/review-hypothesis-4868
  • 116ef84 Probe backwards for bound windows before the scan range
  • ef17651 Bound the cache of probed timezone transitions
  • 6b35510 Skip transition probing for fixed-offset timezones
  • 26df9dd Simplify clamping of tricky-draw windows
  • 6e9b745 Extract a _draw_ordinary_datetime helper
  • Additional commits viewable in compare view

Updates commitizen from 4.16.5 to 4.18.1

Release notes

Sourced from commitizen's releases.

v4.18.0 (2026-08-19)

Feat

  • commit: add a tag(--body-length-limit) and a function for command commit (#1849)

v4.17.1 (2026-08-17)

Fix

  • init: skip hook question when no installer is present
  • init: use prek when installing hooks if pre-commit is missing

v4.17.0 (2026-07-29)

Feat

  • cmd/version: add support for --next USE_GIT_COMMITS

Fix

  • robuster agents
  • version: remove next from exclusive group
  • bump: use correct type for calling changelog
Changelog

Sourced from commitizen's changelog.

v4.18.1 (2026-09-13)

Fix

  • preserve blank lines with body length limit (#2080)

v4.18.0 (2026-08-19)

Feat

  • commit: add a tag(--body-length-limit) and a function for command commit (#1849)

v4.17.1 (2026-08-17)

Fix

  • init: skip hook question when no installer is present
  • init: use prek when installing hooks if pre-commit is missing

v4.17.0 (2026-07-29)

Feat

  • cmd/version: add support for --next USE_GIT_COMMITS

Fix

  • robuster agents
  • version: remove next from exclusive group
  • bump: use correct type for calling changelog
Commits
  • db073f6 bump: version 4.18.0 → 4.18.1
  • 6dd4f69 fix: preserve blank lines with body length limit (#2080)
  • 9432748 build(deps): bump gitpython from 3.1.58 to 3.1.59 (#2084)
  • 0c8b051 build(deps-dev): bump mkdocs-material from 9.7.6 to 9.7.7 (#2082)
  • 4184174 docs: improve scm tutorial
  • d914b4d ci(links): avoid duplicate broken link reports (#2073)
  • d24a56e ci: restore changelog updates (#2074)
  • 61b5f92 docs: restore Star History section in README (#2054)
  • 9ad7376 docs(tutorial): fix setup-cz link
  • a56e5b3 docs(cli/screenshots): update CLI screenshots
  • Additional commits viewable in compare view

Updates mypy from 2.3.0 to 2.3.1

Changelog

Sourced from mypy's changelog.

Mypy 2.3.1

  • Fix mypyc crash on double yielding Iterators (Daniël van Noord, PR 21826)
  • Fix mypyc default_factory for inherited dataclass (Daniël van Noord, PR 21785)
  • Clear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR 21734)
  • Fix crash when unpacking return value from overload (Shantanu, PR 21830)

Acknowledgements

Thanks to all mypy contributors who contributed to this release:

  • Agriya Khetarpal
  • Ethan Sarp
  • Ivan Levkivskyi
  • Jingchen Ye
  • Jukka Lehtosalo
  • Piotr Sawicki
  • Shantanu
  • Tom Bannink
  • Viktor Szépe
  • ygale

I'd also like to thank my employer, Dropbox, for supporting mypy development.

Mypy 2.2

We've just uploaded mypy 2.2.0 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:

python3 -m pip install -U mypy

You can read the full documentation for this release on Read the Docs.

Support for Closed TypedDicts (PEP 728)

Mypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra keys beyond those explicitly defined. This allows the type checker to determine that certain operations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.

You can use the closed keyword argument with TypedDict:

HasName = TypedDict("HasName", {"name": str})
HasOnlyName = TypedDict("HasOnlyName", {"name": str}, closed=True)
Movie = TypedDict("Movie", {"name": str, "year": int})
movie: Movie = {"name": "Nimona", "year": 2023}
has_name: HasName = movie  # OK: HasName is open (default)
has_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra "year" key
</tr></table>

... (truncated)

Commits

Updates pre-commit from 4.6.1 to 4.6.2

Release notes

Sourced from pre-commit's releases.

pre-commit v4.6.2

Fixes

Changelog

Sourced from pre-commit's changelog.

4.6.2 - 2026-08-10

Fixes

Commits

Updates ruff from 0.16.0 to 0.16.8

Release notes

Sourced from ruff's releases.

0.16.8

Release Notes

Released on 2026-09-16.

Bug fixes

  • Visit functional TypedDict keyword arguments correctly (#28584)
  • [flake8-simplify] Detect nested async with under sync parent (SIM117) (#27821)
  • [flake8-simplify] Preserve operand order in SIM109 fix (#27824)
  • [pyupgrade] Preserve required parentheses in multiline UP040 fixes (#28164)
  • [pyupgrade] Skip TypeVarTuple and ParamSpec conversions with bounds or constraints (UP040, UP046, UP047) (#28505)

Rule changes

  • Add support for __lazy_modules__ (#28459)
  • Recognize PEP-728 TypedDict class keywords (#28533)
  • Recognize quoted types in typing.TypeForm (#28507)
  • Support conditional assignment to __lazy_modules__ (#28491)
  • [flake8-type-checking] Prefer lazy imports over TYPE_CHECKING on Python 3.15 and later (TC001, TC002, TC003) (#28541)
  • [pyupgrade] Make the fix for UP040 always unsafe (#28526)
  • [pyupgrade] Stop recommending deprecated ByteString aliases (UP035) (#28498)
  • [ruff, flake8-use-pathlib] Recognize the parent_mode argument (RUF064, PTH103) (#28528)
  • [ruff] Detect \Z in pytest.raises() match patterns (RUF043) (#28598)

CLI

  • Use rule name and code in formatter incompatibility warnings (#28571)

Configuration

  • [flake8-tidy-imports] Add extend-banned-api (#28644)

Contributors

Install ruff 0.16.8

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.8/ruff-installer.sh | sh
</tr></table> 

... (truncated)

Changelog

Sourced from ruff's changelog.

0.16.8

Released on 2026-09-16.

Bug fixes

  • Visit functional TypedDict keyword arguments correctly (#28584)
  • [flake8-simplify] Detect nested async with under sync parent (SIM117) (#27821)
  • [flake8-simplify] Preserve operand order in SIM109 fix (#27824)
  • [pyupgrade] Preserve required parentheses in multiline UP040 fixes (#28164)
  • [pyupgrade] Skip TypeVarTuple and ParamSpec conversions with bounds or constraints (UP040, UP046, UP047) (#28505)

Rule changes

  • Add support for __lazy_modules__ (#28459)
  • Recognize PEP-728 TypedDict class keywords (#28533)
  • Recognize quoted types in typing.TypeForm (#28507)
  • Description has been truncated

…25 updates

Bumps the python-packaging group with 25 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [certifi](https://github.com/certifi/python-certifi) | `2026.6.17` | `2026.7.22` |
| [polars](https://github.com/pola-rs/polars) | `1.42.1` | `1.44.2` |
| [pytz](https://github.com/stub42/pytz) | `2026.2` | `2026.3.post1` |
| [temporalio](https://github.com/temporalio/sdk-python) | `1.30.0` | `1.33.0` |
| [duckdb](https://github.com/duckdb/duckdb-python) | `1.5.4` | `1.5.5` |
| [statsmodels](https://github.com/statsmodels/statsmodels) | `0.14.6` | `0.15.0` |
| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.16.1` |
| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.152.7` | `6.168.0` |
| [commitizen](https://github.com/commitizen-tools/commitizen) | `4.16.5` | `4.18.1` |
| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |
| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |
| [ruff](https://github.com/astral-sh/ruff) | `0.16.0` | `0.16.8` |
| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260724` | `6.0.12.20260906` |
| [build](https://github.com/pypa/build) | `1.5.0` | `1.6.1` |
| [setuptools](https://github.com/pypa/setuptools) | `83.0.0` | `84.0.0` |
| [twine](https://github.com/pypa/twine) | `6.2.0` | `7.0.0` |
| [wheel](https://github.com/pypa/wheel) | `0.47.0` | `0.48.0` |
| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.9` | `3.5.1` |
| [idna](https://github.com/kjd/idna) | `3.18` | `3.20` |
| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |
| [polars-runtime-32](https://github.com/pola-rs/polars) | `1.42.1` | `1.44.2` |
| [protobuf](https://github.com/protocolbuffers/protobuf) | `7.35.1` | `7.36.2` |
| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |
| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260518` | `7.35.1.20260906` |
| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |



Updates `certifi` from 2026.6.17 to 2026.7.22
- [Commits](certifi/python-certifi@2026.06.17...2026.07.22)

Updates `polars` from 1.42.1 to 1.44.2
- [Release notes](https://github.com/pola-rs/polars/releases)
- [Commits](pola-rs/polars@py-1.42.1...py-1.44.2)

Updates `pytz` from 2026.2 to 2026.3.post1
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](stub42/pytz@release_2026.2...release_2026.3.post1)

Updates `temporalio` from 1.30.0 to 1.33.0
- [Release notes](https://github.com/temporalio/sdk-python/releases)
- [Changelog](https://github.com/temporalio/sdk-python/blob/main/CHANGELOG.md)
- [Commits](temporalio/sdk-python@1.30.0...1.33.0)

Updates `duckdb` from 1.5.4 to 1.5.5
- [Release notes](https://github.com/duckdb/duckdb-python/releases)
- [Commits](duckdb/duckdb-python@v1.5.4...v1.5.5)

Updates `statsmodels` from 0.14.6 to 0.15.0
- [Release notes](https://github.com/statsmodels/statsmodels/releases)
- [Changelog](https://github.com/statsmodels/statsmodels/blob/main/CHANGES.md)
- [Commits](statsmodels/statsmodels@v0.14.6...v0.15.0)

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

Updates `hypothesis` from 6.152.7 to 6.168.0
- [Release notes](https://github.com/HypothesisWorks/hypothesis/releases)
- [Commits](HypothesisWorks/hypothesis@hypothesis-python-6.152.7...v6.168.0)

Updates `commitizen` from 4.16.5 to 4.18.1
- [Release notes](https://github.com/commitizen-tools/commitizen/releases)
- [Changelog](https://github.com/commitizen-tools/commitizen/blob/master/CHANGELOG.md)
- [Commits](commitizen-tools/commitizen@v4.16.5...v4.18.1)

Updates `mypy` from 2.3.0 to 2.3.1
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](python/mypy@v2.3.0...v2.3.1)

Updates `pre-commit` from 4.6.1 to 4.6.2
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](pre-commit/pre-commit@v4.6.1...v4.6.2)

Updates `ruff` from 0.16.0 to 0.16.8
- [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.16.0...0.16.8)

Updates `types-pyyaml` from 6.0.12.20260724 to 6.0.12.20260906
- [Commits](https://github.com/python/typeshed/commits)

Updates `build` from 1.5.0 to 1.6.1
- [Release notes](https://github.com/pypa/build/releases)
- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)
- [Commits](pypa/build@1.5.0...1.6.1)

Updates `setuptools` from 83.0.0 to 84.0.0
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst)
- [Commits](pypa/setuptools@v83.0.0...v84.0.0)

Updates `twine` from 6.2.0 to 7.0.0
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](pypa/twine@6.2.0...7.0.0)

Updates `wheel` from 0.47.0 to 0.48.0
- [Release notes](https://github.com/pypa/wheel/releases)
- [Changelog](https://github.com/pypa/wheel/blob/main/docs/news.rst)
- [Commits](pypa/wheel@0.47.0...0.48.0)

Updates `charset-normalizer` from 3.4.9 to 3.5.1
- [Release notes](https://github.com/jawah/charset_normalizer/releases)
- [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md)
- [Commits](jawah/charset_normalizer@3.4.9...3.5.1)

Updates `idna` from 3.18 to 3.20
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md)
- [Commits](kjd/idna@v3.18...v3.20)

Updates `packaging` from 26.2 to 26.3
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](pypa/packaging@26.2...26.3)

Updates `polars-runtime-32` from 1.42.1 to 1.44.2
- [Release notes](https://github.com/pola-rs/polars/releases)
- [Commits](pola-rs/polars@py-1.42.1...py-1.44.2)

Updates `protobuf` from 7.35.1 to 7.36.2
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Commits](https://github.com/protocolbuffers/protobuf/commits)

Updates `pygments` from 2.20.0 to 2.21.0
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](pygments/pygments@2.20.0...2.21.0)

Updates `types-protobuf` from 7.34.1.20260518 to 7.35.1.20260906
- [Commits](https://github.com/python/typeshed/commits)

Updates `urllib3` from 2.7.0 to 2.8.0
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](urllib3/urllib3@2.7.0...2.8.0)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2026.7.22
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: polars
  dependency-version: 1.44.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: pytz
  dependency-version: 2026.3.post1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: temporalio
  dependency-version: 1.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: duckdb
  dependency-version: 1.5.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packaging
- dependency-name: statsmodels
  dependency-version: 0.15.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: coverage
  dependency-version: 7.16.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: hypothesis
  dependency-version: 6.168.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: commitizen
  dependency-version: 4.18.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: mypy
  dependency-version: 2.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packaging
- dependency-name: pre-commit
  dependency-version: 4.6.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packaging
- dependency-name: ruff
  dependency-version: 0.16.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packaging
- dependency-name: types-pyyaml
  dependency-version: 6.0.12.20260906
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-packaging
- dependency-name: build
  dependency-version: 1.6.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: setuptools
  dependency-version: 84.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packaging
- dependency-name: twine
  dependency-version: 7.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: python-packaging
- dependency-name: wheel
  dependency-version: 0.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: charset-normalizer
  dependency-version: 3.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: idna
  dependency-version: '3.20'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: packaging
  dependency-version: '26.3'
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: polars-runtime-32
  dependency-version: 1.44.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: protobuf
  dependency-version: 7.36.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: pygments
  dependency-version: 2.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: types-protobuf
  dependency-version: 7.35.1.20260906
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
- dependency-name: urllib3
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packaging
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added the modern-tooling Modern tooling, CI, release, coverage, and packaging hygiene label Sep 21, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

modern-tooling Modern tooling, CI, release, coverage, and packaging hygiene

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants