From 3c996b3e94adc6b5793647c4ed1258b8edd1ee8f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 7 May 2026 22:50:18 +0200
Subject: [PATCH 1/6] Bump ty from 0.0.33 to 0.0.34 (#2027)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [ty](https://github.com/astral-sh/ty) from 0.0.33 to 0.0.34.
Release notes
Sourced from ty's
releases.
0.0.34
Release Notes
Released on 2026-05-01.
Bug fixes
- Avoid panic in recursive protocol signature comparisons (#24665)
- Avoid panics for syntax error targets in invalid unpacking
assignments (#24663)
- Fix unbounded type growth in nested-typevar substitutions (#24803)
- Prevent string annotation tokens from leaking across notebook cells
(#24919)
- Support reference finding in stringified annotations (#24956)
LSP server
- Add hover support for PEP 695 type aliases (#24926)
- Offer string literal completion suggestions based on expected type
(#24555)
- Support Go-to Definition, Go-To Declaration, and Find References for
TypedDict and NamedTuple initializers (#24897)
- Support
Annotated metadata in semantic tokens (#24890)
Core type checking
- Add support for
functools.partial (#24582)
- Fix ParamSpec defaults and alias variance (#24479)
- Fix
TypeIs assignability with gradual types (#24928)
- Infer
dict(**TypedDict) in TypedDict
context (#24709)
- Support
infer_variance for legacy TypeVar
(#24930)
- Support variance keywords in
ParamSpec (#24927)
- Sync vendored typeshed stubs (#24952).
Typeshed
diff
- Unpack
Union of TypedDict in various sites
(#24958)
Diagnostics
- Add missing error context node for protocol to protocol
assignability (#24905)
- Show a diagnostic for unsupported inferred Python version (#24581)
Performance
- Lazily build TypeVar accumulations (#24782)
Contributors
... (truncated)
Changelog
Sourced from ty's
changelog.
0.0.34
Released on 2026-05-01.
Bug fixes
- Avoid panic in recursive protocol signature comparisons (#24665)
- Avoid panics for syntax error targets in invalid unpacking
assignments (#24663)
- Fix unbounded type growth in nested-typevar substitutions (#24803)
- Prevent string annotation tokens from leaking across notebook cells
(#24919)
- Support reference finding in stringified annotations (#24956)
LSP server
- Add hover support for PEP 695 type aliases (#24926)
- Offer string literal completion suggestions based on expected type
(#24555)
- Support Go-to Definition, Go-To Declaration, and Find References for
TypedDict and NamedTuple initializers (#24897)
- Support
Annotated metadata in semantic tokens (#24890)
Core type checking
- Add support for
functools.partial (#24582)
- Fix ParamSpec defaults and alias variance (#24479)
- Fix
TypeIs assignability with gradual types (#24928)
- Infer
dict(**TypedDict) in TypedDict
context (#24709)
- Support
infer_variance for legacy TypeVar
(#24930)
- Support variance keywords in
ParamSpec (#24927)
- Sync vendored typeshed stubs (#24952).
Typeshed
diff
- Unpack
Union of TypedDict in various sites
(#24958)
Diagnostics
- Add missing error context node for protocol to protocol
assignability (#24905)
- Show a diagnostic for unsupported inferred Python version (#24581)
Performance
- Lazily build TypeVar accumulations (#24782)
Contributors
Commits
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
uv.lock | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/uv.lock b/uv.lock
index 26fa2f69..da31e062 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1308,26 +1308,26 @@ wheels = [
[[package]]
name = "ty"
-version = "0.0.33"
+version = "0.0.34"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/84/44/9478c50c266826c1bf30d1692e589755bffa8f1c0a3eb7af8a346c255991/ty-0.0.33.tar.gz", hash = "sha256:46d63bda07403322cb6c28ccfdd5536be916e13df725c29f7ccd0a21f06bd9e8", size = 5559373, upload-time = "2026-04-28T10:45:13.18Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/c4/69/e24eefe2c35c0fdbdec9b60e162727af669bb76d64d993d982eb67b24c38/ty-0.0.34.tar.gz", hash = "sha256:a6efe66b0f13c03a65e6c72ec9abfe2792e2fd063c74fa67e2c4930e29d661be", size = 5585933, upload-time = "2026-05-01T23:06:46.388Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/e9/24/e287388c63a19191be26b32ff4dbd06029834068150ebe2532939bc4c851/ty-0.0.33-py3-none-linux_armv6l.whl", hash = "sha256:94d0a9d2234261a8911396d59e506b5923fe0971dbda43b9dcea287936887fcc", size = 11021308, upload-time = "2026-04-28T10:45:43.34Z" },
- { url = "https://files.pythonhosted.org/packages/00/ca/ba1eed819895bd239fba8ee35dfcd5fcb266c203b0914a17a59579096bb5/ty-0.0.33-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e4a2b5ba078f90de342f56b5f7979bb77c9b9b1d8625a041352ffc6ee93c4073", size = 10777272, upload-time = "2026-04-28T10:45:32.905Z" },
- { url = "https://files.pythonhosted.org/packages/25/a8/c3131d37b44b3fea1d6654a1c929a0cd0873822f77a90482b8ec28f6fbbd/ty-0.0.33-py3-none-macosx_11_0_arm64.whl", hash = "sha256:84ff5707825e9af9668d2bcf66975f93e520a63b524ab494e3a8265735be2563", size = 10201078, upload-time = "2026-04-28T10:45:23.374Z" },
- { url = "https://files.pythonhosted.org/packages/7b/db/d8e37ff0045810cc65e1ff36aa0da0a2253c05659787ac987df8a16c7897/ty-0.0.33-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e375285736f57886868e7af0b11c7b0ec5b6543fa15e7ad2a714fed9f077d4e0", size = 10732347, upload-time = "2026-04-28T10:45:21.444Z" },
- { url = "https://files.pythonhosted.org/packages/e0/1a/20e83a412506a918e4684fc67b567cf7cc13b105470b3428cb23c3d5aa13/ty-0.0.33-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5680f6350c3b4e46b8bff6d7bb132366ea239463d6cad4892725d06046e65464", size = 10808238, upload-time = "2026-04-28T10:45:38.565Z" },
- { url = "https://files.pythonhosted.org/packages/5d/4b/d0a39f4464dc6cb4cc2c159473ce216bd1846bfb684c0323a3cb36dce5c6/ty-0.0.33-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5535538bad8d0f7e62bcdff02197cdb30e41451d80b35d27e17d128f2e1dc5d", size = 11288348, upload-time = "2026-04-28T10:45:08.419Z" },
- { url = "https://files.pythonhosted.org/packages/35/7e/f1745e0f9583363d7a83d9a4990fc244f76ecc30840ddad83dc16a33c52d/ty-0.0.33-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:da196c42bbbc069e1e21e3e52107c061aa9660352dae57a41930690b56e2c02d", size = 11789907, upload-time = "2026-04-28T10:45:19.064Z" },
- { url = "https://files.pythonhosted.org/packages/a5/71/25f39f46a12d662859d45bc648555d0661044eb43db6b5648c9947487da9/ty-0.0.33-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9281672921ef6d4460e03146b5e6c18cb1a3e3a3b8a1a88f6f33226d05a469b7", size = 11500774, upload-time = "2026-04-28T10:45:48.012Z" },
- { url = "https://files.pythonhosted.org/packages/94/ec/136959ecbb7c71cb90537f5aea441c73f4ab24612868a6ecdc9d7444d32d/ty-0.0.33-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c1b8f303f82da64e878108e764be3ecbcd7c9903ac0a7f7031614ed00b97ab", size = 11360314, upload-time = "2026-04-28T10:45:05.402Z" },
- { url = "https://files.pythonhosted.org/packages/cf/95/32809575c222f00beed498cb728e9290a0f5009f930025381bb7253b2206/ty-0.0.33-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:efe3af412c9ff67bce5fa37d0a2b0d8555c24072b145a5bac6c79637f1c83abe", size = 10707785, upload-time = "2026-04-28T10:45:10.836Z" },
- { url = "https://files.pythonhosted.org/packages/13/89/c8e9531f7aa4a093359e15fa32c8e1277fbbe90d16894d7c6032d29f4b34/ty-0.0.33-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:aeec29c91ea768601747da546c3efc20b72c2fb1bd52bcc786a5c6eeff51d27b", size = 10834987, upload-time = "2026-04-28T10:45:40.738Z" },
- { url = "https://files.pythonhosted.org/packages/31/16/9835fbcf5338af1a1917bd28fdb8a7193c210b83f243aa286fa9f79cb3ad/ty-0.0.33-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a535977c52bbb5f7e96b8b70a6ad375ad077f4a9ff2492508ea3816a2b403819", size = 10968968, upload-time = "2026-04-28T10:45:30.26Z" },
- { url = "https://files.pythonhosted.org/packages/36/69/64c76aabc1bc70c7f24b686cd93c3407f8ea430905e395f59bf9603ef571/ty-0.0.33-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1d732facf39fcb221ba279d469c5040d37883e964f123b1563888efd34818180", size = 11458077, upload-time = "2026-04-28T10:45:45.971Z" },
- { url = "https://files.pythonhosted.org/packages/91/84/fae27b0c4718776a298690d31ca4cc1995f2e3e1c63a7b59e84c41498e9a/ty-0.0.33-py3-none-win32.whl", hash = "sha256:d90960b574428dc252f85e8598ec5fcb7f619794196b2fc95a90da075ed4681c", size = 10345364, upload-time = "2026-04-28T10:45:16.836Z" },
- { url = "https://files.pythonhosted.org/packages/3c/a0/a2938b23ae3e1a09a2d7c189e2ac5f7113676bae4e0e23948b568e18e5f8/ty-0.0.33-py3-none-win_amd64.whl", hash = "sha256:c1c3aec62c44de610c6e95f0a4e97ac3dbc07934bfdbf1fd90d758c9ff72f48e", size = 11342470, upload-time = "2026-04-28T10:45:26.455Z" },
- { url = "https://files.pythonhosted.org/packages/ab/62/7fb948aace38d2f6329261bb33c035a8484549c74f1db28649c7a4c6fed9/ty-0.0.33-py3-none-win_arm64.whl", hash = "sha256:0d44f99ba1b441e55e2aa301b2ac0a21112784931b46a5f66f4ea9efe5620d97", size = 10742673, upload-time = "2026-04-28T10:45:35.555Z" },
+ { url = "https://files.pythonhosted.org/packages/83/7b/8b85003d6639ef17a97dcbb31f4511cfe78f1c81a964470db100c8c883e7/ty-0.0.34-py3-none-linux_armv6l.whl", hash = "sha256:9ecc3d14f07a95a6ceb88e07f8e62358dbd37325d3d5bd56da7217ff1fef7fb8", size = 11067094, upload-time = "2026-05-01T23:06:21.133Z" },
+ { url = "https://files.pythonhosted.org/packages/d7/25/b0098f65b020b015c40567c763fc66fffbec88b2ba6f584bca1e92f05ebb/ty-0.0.34-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:0dccffd8a9d02321cd2dee3249df205e26d62694e741f4eeca36b157fd8b419f", size = 10840909, upload-time = "2026-05-01T23:06:18.409Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/55/5e4adcf7d2a1006b844903b27cb81244a9b748d850433a46a6c21776c401/ty-0.0.34-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b0ea47a2998e167ab3b21d2f4b5309a9cf33c297809f6d7e3e753252223174d0", size = 10279378, upload-time = "2026-05-01T23:06:37.962Z" },
+ { url = "https://files.pythonhosted.org/packages/4d/91/f537dca0db8fe2558e8ab04d8941d687b384fcc1df5eb9023b2db75ac26c/ty-0.0.34-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b37da00b41a118a459ae56d8947e70651073fb33ebfbceb820e4a10b22d5023", size = 10817423, upload-time = "2026-05-01T23:06:26.247Z" },
+ { url = "https://files.pythonhosted.org/packages/2c/c4/55a3ad1da2815af1009bdc1b8c90dc11a364cd314e4b48c5128ba9d38859/ty-0.0.34-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81cbbb93c2342fe3de43e625d3a9eb149633e9f485e816ebf6395d08685355d8", size = 10851826, upload-time = "2026-05-01T23:06:24.198Z" },
+ { url = "https://files.pythonhosted.org/packages/ce/8c/9c7606af22d73fb43ea4369472d9c66ece11231be73b0efe8e3c61655559/ty-0.0.34-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c5b4dea1594a021289e172582df9cde7089dce14b276fc650e7b212b1772e12", size = 11356318, upload-time = "2026-05-01T23:06:51.139Z" },
+ { url = "https://files.pythonhosted.org/packages/20/54/bb423f663721ab4138b216425c6b55eaefd3a068243b24d6d8fe988f4e13/ty-0.0.34-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:030fb00aa2d2a5b5ae9d9183d574e0c82dae80566700a7490c43669d8ece40cd", size = 11902968, upload-time = "2026-05-01T23:06:35.82Z" },
+ { url = "https://files.pythonhosted.org/packages/b6/22/01122b21ab6b534a2f618c6bbe5f1f7f49fd56f4b2ec8887cd6d40d08fb3/ty-0.0.34-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ae9555e24e36c63a8218e037a5a63f15579eb6aa94f41017e57cd41d335cfb5", size = 11548860, upload-time = "2026-05-01T23:06:42.155Z" },
+ { url = "https://files.pythonhosted.org/packages/d1/50/86008b1392ec64bed1957bbcc7aaa43b466b50dfc91bb131841c21d7c5c3/ty-0.0.34-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99eb23df9ed129fc26d1ab00d6f0b8dfe5253b09c2ac6abdb11523fa70d67f10", size = 11457097, upload-time = "2026-05-01T23:06:53.477Z" },
+ { url = "https://files.pythonhosted.org/packages/92/3e/4558b2296963ba99c58d8409c57d7db4f3061b656c3613cb21c02c1ef4c2/ty-0.0.34-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:85de45382016eceae69e104815eb2cfa200787df104002e262a86cbd43ed2c02", size = 10798192, upload-time = "2026-05-01T23:06:40.004Z" },
+ { url = "https://files.pythonhosted.org/packages/76/bf/650d24402be2ef678528d60caac1d9477a40fc37e3792ecef07834fd7a4a/ty-0.0.34-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:14cb575fb8fa5131f5129d100cfe23c1575d23faf5dfc5158432749a3e38c9b5", size = 10890390, upload-time = "2026-05-01T23:06:33.076Z" },
+ { url = "https://files.pythonhosted.org/packages/5c/ef/ccd2ca13906079f7935fd7e067661b24233017f57d987d51d6a121d85bb5/ty-0.0.34-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c6fc0b69d8450e6910ba9db34572b959b81329a97ae273c391f70e9fb6c1aade", size = 11031564, upload-time = "2026-05-01T23:06:55.812Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/2d/d27b72005b6f43599e3bcabab0d7135ac0c230b7a307bb99f9eea02c1cda/ty-0.0.34-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:30dfcec2f0fde3993f4f912ed0e057dcbebc8615299f610a4c2ddb7b5a3e1e06", size = 11553430, upload-time = "2026-05-01T23:06:31.096Z" },
+ { url = "https://files.pythonhosted.org/packages/a7/12/20812e1ad930b8d4af70eebf19ad23cff6e31efcfa613ef884531fcdbaa1/ty-0.0.34-py3-none-win32.whl", hash = "sha256:97b77ddf007271b812a313a8f0a14929bc5590958433e1fb83ef585676f53342", size = 10436048, upload-time = "2026-05-01T23:06:49.108Z" },
+ { url = "https://files.pythonhosted.org/packages/b0/6a/afa095c5987868fbda27c0f731146ac8e3d07b357adfa83daccaee5b1a16/ty-0.0.34-py3-none-win_amd64.whl", hash = "sha256:1f543968accb952705134028d1fda8656882787dbbc667ad4d6c3ba23791d604", size = 11462526, upload-time = "2026-05-01T23:06:28.514Z" },
+ { url = "https://files.pythonhosted.org/packages/63/8f/bf041a06260d77662c0605e56dacfe90b786bf824cbe1aed238d15fe5e84/ty-0.0.34-py3-none-win_arm64.whl", hash = "sha256:ea09108cbcb16b6b06d7596312b433bf49681e78d30e4dc7fb3c1b248a95e09a", size = 10846945, upload-time = "2026-05-01T23:06:44.428Z" },
]
[[package]]
From 57838b97e7ac09fe1c55a7f3c3682420b3c4ff41 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 7 May 2026 22:50:25 +0200
Subject: [PATCH 2/6] Bump boto3 from 1.42.97 to 1.43.4 (#2026)
Bumps [boto3](https://github.com/boto/boto3) from 1.42.97 to 1.43.4.
Commits
96f1897
Merge branch 'release-1.43.4'
5b40fbf
Bumping version to 1.43.4
86325c7
Add changelog entries from botocore
bea693c
Merge branch 'release-1.43.3'
99980e5
Merge branch 'release-1.43.3' into develop
1f57fdc
Bumping version to 1.43.3
ba69bd2
Add changelog entries from botocore
7dc336e
Merge branch 'release-1.43.2'
e240af8
Merge branch 'release-1.43.2' into develop
99fd421
Bumping version to 1.43.2
- Additional commits viewable in compare
view
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
uv.lock | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/uv.lock b/uv.lock
index da31e062..c4fad0ce 100644
--- a/uv.lock
+++ b/uv.lock
@@ -191,30 +191,30 @@ wheels = [
[[package]]
name = "boto3"
-version = "1.42.97"
+version = "1.43.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "botocore" },
{ name = "jmespath" },
{ name = "s3transfer" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/55/7d/5c6fa0bb9fd5caf865b9356411793900304328bcd0bc1eda96a32a1368a6/boto3-1.42.97.tar.gz", hash = "sha256:2833dbeda3670ea610ad48dff7d27cdc829dbbfcdfbc6b750b673948e949b6f0", size = 113217, upload-time = "2026-04-27T20:39:17.646Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/17/04/f391b6e5b607bc00b633e3f18932bf1ef7b92e9a03f8fcc5bb09a561234b/boto3-1.43.4.tar.gz", hash = "sha256:00f40e9ca704c0f860b70ef47b042813c8d9a66b3d5e7bf81d578f79ae17dcd3", size = 113174, upload-time = "2026-05-05T19:34:37.859Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/38/43/84c1888139aa1aaf1dc53f8f914e6ec629e5a571fbafdd42fb2d98ac361f/boto3-1.42.97-py3-none-any.whl", hash = "sha256:966e49f0510af9a64057a902b7df53d4348c447de0d3df4cc855dfd85e058fcd", size = 140556, upload-time = "2026-04-27T20:39:15.509Z" },
+ { url = "https://files.pythonhosted.org/packages/cd/85/b25499be693449df63c2c91e4e966ee81e46eb86071747e699f458583ebc/boto3-1.43.4-py3-none-any.whl", hash = "sha256:c4910b54c1f2401ab55d9fbca3d92df0a68e4ac64a69f2bab47a079e384a9d4f", size = 140502, upload-time = "2026-05-05T19:34:36.356Z" },
]
[[package]]
name = "botocore"
-version = "1.42.97"
+version = "1.43.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "jmespath" },
{ name = "python-dateutil" },
{ name = "urllib3" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/c6/95/c37edb602948fad2253ffd1bb3dba5b938645bd1845ee4160350136a0f41/botocore-1.42.97.tar.gz", hash = "sha256:5c0bb00e32d16ff6d278cc8c9e10dc3672d9c1d569031635ac3c908a60de8310", size = 15269348, upload-time = "2026-04-27T20:39:05.625Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/c1/45/f73f2a126752ed4c762a46210315c80cb7e67a96887aaa2f9c32d41631c6/botocore-1.43.4.tar.gz", hash = "sha256:1a95c90fa9ca6ee85c1a02b04c8e05e948661d201b85b443000d676857905019", size = 15317239, upload-time = "2026-05-05T19:34:27.317Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/e3/d2/8e025ba1a4e257879af72d06913272311af79673d82fa2581a351b924317/botocore-1.42.97-py3-none-any.whl", hash = "sha256:77d2c8ce1bc592d3fbd7c01c35836f4a5b0cac2ca03ccdf6ffc60faa16b5fadc", size = 14950367, upload-time = "2026-04-27T20:39:01.261Z" },
+ { url = "https://files.pythonhosted.org/packages/5d/53/8dfb1f8f0be68cce735181d876d8f7c537c5c44656b3b9ab4b3b9e973320/botocore-1.43.4-py3-none-any.whl", hash = "sha256:f1897d3254965cacac7514cfed1b6ff016166b165ee2e06232b4a3954cf9d713", size = 14999193, upload-time = "2026-05-05T19:34:23.893Z" },
]
[[package]]
@@ -1238,14 +1238,14 @@ wheels = [
[[package]]
name = "s3transfer"
-version = "0.16.0"
+version = "0.17.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "botocore" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/05/04/74127fc843314818edfa81b5540e26dd537353b123a4edc563109d8f17dd/s3transfer-0.16.0.tar.gz", hash = "sha256:8e990f13268025792229cd52fa10cb7163744bf56e719e0b9cb925ab79abf920", size = 153827, upload-time = "2025-12-01T02:30:59.114Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/9b/ec/7c692cde9125b77e84b307354d4fb705f98b8ccad59a036d5957ca75bfc3/s3transfer-0.17.0.tar.gz", hash = "sha256:9edeb6d1c3c2f89d6050348548834ad8289610d886e5bf7b7207728bd43ce33a", size = 155337, upload-time = "2026-04-29T22:07:36.33Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl", hash = "sha256:18e25d66fed509e3868dc1572b3f427ff947dd2c56f844a5bf09481ad3f3b2fe", size = 86830, upload-time = "2025-12-01T02:30:57.729Z" },
+ { url = "https://files.pythonhosted.org/packages/87/72/c6c32d2b657fa3dad1de340254e14390b1e334ce38268b7ad51abda3c8c2/s3transfer-0.17.0-py3-none-any.whl", hash = "sha256:ce3801712acf4ad3e89fb9990df97b4972e93f4b3b0004d214be5bce12814c20", size = 86811, upload-time = "2026-04-29T22:07:34.966Z" },
]
[[package]]
From 9ddf9bcd1e83f21dee59950eb86648f038e07958 Mon Sep 17 00:00:00 2001
From: Mick Vleeshouwer
Date: Thu, 7 May 2026 22:56:28 +0200
Subject: [PATCH 3/6] Add new UI widget enums for sliding gate opener and
remote controller (#2029)
---
pyoverkiz/enums/ui.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/pyoverkiz/enums/ui.py b/pyoverkiz/enums/ui.py
index 8865915d..d132b239 100644
--- a/pyoverkiz/enums/ui.py
+++ b/pyoverkiz/enums/ui.py
@@ -155,7 +155,8 @@ class UIWidget(StrEnum):
CURTAIN_TRACK_UNO = "CurtainTrackUno"
CYCLIC_GARAGE_DOOR = "CyclicGarageDoor"
CYCLIC_GENERIC = "CyclicGeneric"
- CYCLIC_SWINGING_GATE_OPENER = "CyclicSwingingGateOpener "
+ CYCLIC_SLIDING_GATE_OPENER = "CyclicSlidingGateOpener"
+ CYCLIC_SWINGING_GATE_OPENER = "CyclicSwingingGateOpener"
DHW_SET_POINT = "DHWSetPoint"
DE_DIETRICH_BOILER = "DeDietrichBoiler"
DE_DIETRICH_DHW = "DeDietrichDHW"
@@ -205,6 +206,7 @@ class UIWidget(StrEnum):
DYNAMIC_OVEN = "DynamicOven"
DYNAMIC_PERGOLA = "DynamicPergola"
DYNAMIC_RAIN_SENSOR = "DynamicRainSensor"
+ DYNAMIC_REMOTE_CONTROLLER = "DynamicRemoteController"
DYNAMIC_ROLLER_SHUTTER = "DynamicRollerShutter"
DYNAMIC_SCREEN = "DynamicScreen"
DYNAMIC_SHUTTER = "DynamicShutter"
From 836c74b2e8d1a8be70a6a7f5fc030489ebc44de8 Mon Sep 17 00:00:00 2001
From: Mick Vleeshouwer
Date: Thu, 7 May 2026 22:56:36 +0200
Subject: [PATCH 4/6] Add UNKNOWN command parameter to OverkizCommandParam enum
(#2030)
---
pyoverkiz/enums/command.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/pyoverkiz/enums/command.py b/pyoverkiz/enums/command.py
index bdae0cd1..a403b667 100644
--- a/pyoverkiz/enums/command.py
+++ b/pyoverkiz/enums/command.py
@@ -365,6 +365,7 @@ class OverkizCommandParam(StrEnum):
TILT_NEGATIVE = "tiltNegative"
TOTAL = "total"
UNDETECTED = "undetected"
+ UNKNOWN = "unknown"
UPS = "UPS"
VERTICAL = "vertical"
VERY_LOW = "verylow"
From 9ce81afe552815ec12bbf2dd8a5fcff50d57c58e Mon Sep 17 00:00:00 2001
From: GitHub Action
Date: Thu, 7 May 2026 20:57:54 +0000
Subject: [PATCH 5/6] Bump package version to 1.20.3.
---
pyproject.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyproject.toml b/pyproject.toml
index e0940104..a642636c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pyoverkiz"
-version = "1.20.2"
+version = "1.20.3"
description = "Async Python client to interact with internal OverKiz API (e.g. used by Somfy TaHoma)."
readme = "README.md"
authors = [
From 2e2b82875e7828eed302a4cd7de496f26173a527 Mon Sep 17 00:00:00 2001
From: Mick Vleeshouwer
Date: Sun, 17 May 2026 16:40:21 +0000
Subject: [PATCH 6/6] Improve obfuscation: redact more sensitive states and fix
Unicode handling
Add IP addresses, MAC addresses, and serial numbers to the sensitive
state list. Fix obfuscate_string regex to properly handle Unicode
characters (e.g. accented letters in French device names).
Closes #2031
---
pyoverkiz/obfuscate.py | 8 ++++-
tests/test_obfuscate.py | 69 ++++++++++++++++++++++++++++++++++++++++-
2 files changed, 75 insertions(+), 2 deletions(-)
diff --git a/pyoverkiz/obfuscate.py b/pyoverkiz/obfuscate.py
index 1e320d02..c0dfc024 100644
--- a/pyoverkiz/obfuscate.py
+++ b/pyoverkiz/obfuscate.py
@@ -19,7 +19,7 @@ def obfuscate_email(email: str | None) -> str:
def obfuscate_string(value: str) -> str:
"""Mask string."""
- return re.sub(r"[a-zA-Z0-9_.-]*", "*", str(value))
+ return re.sub(r"[\w.-]+", "*", str(value), flags=re.UNICODE)
def _obfuscate_value(key: str, value: Any, mask_next_value: bool) -> tuple[Any, bool]:
@@ -49,6 +49,12 @@ def _obfuscate_value(key: str, value: Any, mask_next_value: bool) -> tuple[Any,
"homekit:SetupPayload",
"core:SSIDState",
"core:NetworkMacState",
+ "internal:CurrentInfraConfigState",
+ "core:LocalIPv4AddressState",
+ "core:IPAddress",
+ "core:MacAddress",
+ "core:SerialNumber",
+ "core:DeviceSerialNumberState",
):
mask_next_value = True
diff --git a/tests/test_obfuscate.py b/tests/test_obfuscate.py
index d55ca231..2c7b026e 100644
--- a/tests/test_obfuscate.py
+++ b/tests/test_obfuscate.py
@@ -2,7 +2,11 @@
import pytest
-from pyoverkiz.obfuscate import obfuscate_email, obfuscate_sensitive_data
+from pyoverkiz.obfuscate import (
+ obfuscate_email,
+ obfuscate_sensitive_data,
+ obfuscate_string,
+)
LOCAL_HOST = "gateway-1234-5678-1243.local:8443"
LOCAL_HOST_BY_IP = "192.168.1.105:8443"
@@ -23,6 +27,28 @@ def test_email_obfuscate(self, email: str, obfuscated: str):
assert obfuscate_email(email) == obfuscated
+class TestObfuscateString:
+ """Tests for obfuscate_string with various character sets."""
+
+ @pytest.mark.parametrize(
+ ("value", "expected"),
+ [
+ ("My Room", "* *"),
+ ("Séjour", "*"),
+ ("Étage", "*"),
+ ("Entrée", "*"),
+ ("Volet Fenêtre", "* *"),
+ ("Ré-de-chaussée", "*"),
+ ("Büro", "*"),
+ ("abc123", "*"),
+ ("", ""),
+ ],
+ )
+ def test_obfuscate_string(self, value: str, expected: str):
+ """Verify string obfuscation handles Unicode characters."""
+ assert obfuscate_string(value) == expected
+
+
class TestObfucscateSensitive:
"""Tests around obfuscating sensitive structures while preserving non-sensitive content."""
@@ -71,3 +97,44 @@ def test_obfuscate_list_of_dicts(self):
assert result[0]["oid"] == "abc-123" # oid is not a sensitive key
assert result[1]["label"] != "Night Mode"
assert result[1]["deviceURL"] != "io://1234-5678-1234/12345678"
+
+ def test_obfuscate_infra_config_state(self):
+ """Ensure internal:CurrentInfraConfigState value is redacted."""
+ data = {
+ "name": "internal:CurrentInfraConfigState",
+ "type": 3,
+ "value": "wifi_ssid:MyNetwork;password:secret123",
+ }
+ result = obfuscate_sensitive_data(data)
+ assert result["name"] == "internal:CurrentInfraConfigState"
+ assert result["value"] != "wifi_ssid:MyNetwork;password:secret123"
+
+ @pytest.mark.parametrize(
+ "state_name",
+ [
+ "core:NameState",
+ "homekit:SetupCode",
+ "homekit:SetupPayload",
+ "core:SSIDState",
+ "core:NetworkMacState",
+ "internal:CurrentInfraConfigState",
+ "core:LocalIPv4AddressState",
+ "core:IPAddress",
+ "core:MacAddress",
+ "core:SerialNumber",
+ "core:DeviceSerialNumberState",
+ ],
+ )
+ def test_obfuscate_sensitive_states(self, state_name: str):
+ """Ensure all sensitive state names trigger value redaction."""
+ data = {"name": state_name, "type": 3, "value": "sensitive_data"}
+ result = obfuscate_sensitive_data(data)
+ assert result["name"] == state_name
+ assert result["value"] != "sensitive_data"
+
+ def test_obfuscate_unicode_label(self):
+ """Ensure labels with Unicode characters are fully redacted."""
+ data = {"label": "Volet Séjour"}
+ result = obfuscate_sensitive_data(data)
+ assert "Séjour" not in result["label"]
+ assert "é" not in result["label"]