From bcde91491b552513c30bcf23e418f96c5abd4577 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:36:41 +0000 Subject: [PATCH 01/71] build(deps): bump chardet from 6.0.0.post1 to 7.0.1 Bumps [chardet](https://github.com/chardet/chardet) from 6.0.0.post1 to 7.0.1. - [Release notes](https://github.com/chardet/chardet/releases) - [Changelog](https://github.com/chardet/chardet/blob/main/docs/changelog.rst) - [Commits](https://github.com/chardet/chardet/compare/6.0.0.post1...7.0.1) --- updated-dependencies: - dependency-name: chardet dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cc8b378c..e35b6584 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ attrs==25.4.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.2.25 -chardet==6.0.0.post1 +chardet==7.0.1 charset-normalizer==3.4.4 colorama==0.4.6 configobj==5.0.9 From e444b0ca4eeaba06e5f1ad9a4f0687e1c1c1ebdc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:36:48 +0000 Subject: [PATCH 02/71] build(deps): bump setuptools from 82.0.0 to 82.0.1 Bumps [setuptools](https://github.com/pypa/setuptools) from 82.0.0 to 82.0.1. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v82.0.0...v82.0.1) --- updated-dependencies: - dependency-name: setuptools dependency-version: 82.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cc8b378c..888089af 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,7 +43,7 @@ requests==2.32.5 requests-oauthlib==2.0.0 requests-toolbelt==1.0.0 rfc3986==2.0.0 -setuptools==82.0.0 +setuptools==82.0.1 six==1.17.0 sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 From 026da1c562ef446b0ccc60ff171a8199671f7569 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:36:55 +0000 Subject: [PATCH 03/71] build(deps): bump numpy from 2.4.2 to 2.4.3 Bumps [numpy](https://github.com/numpy/numpy) from 2.4.2 to 2.4.3. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v2.4.2...v2.4.3) --- updated-dependencies: - dependency-name: numpy dependency-version: 2.4.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cc8b378c..02e6171b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,7 +23,7 @@ libretranslatepy==2.1.4 lief==0.15.1 Markdown==3.10.2 Mastodon.py==2.1.4 -numpy==2.4.2 +numpy==2.4.3 oauthlib==3.3.1 packaging==25.0 pillow==12.1.1 From 3eebc2610611dcd830bdc284da651f41a393fd6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 23:33:53 +0000 Subject: [PATCH 04/71] build(deps): bump types-python-dateutil Bumps [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) from 2.9.0.20260302 to 2.9.0.20260305. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-version: 2.9.0.20260305 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cdb8222b..5f3204ba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -49,7 +49,7 @@ sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 sqlitedict==2.1.0 twitter-text-parser==3.0.0 -types-python-dateutil==2.9.0.20260302 +types-python-dateutil==2.9.0.20260305 urllib3==2.6.3 win-inet-pton==1.1.0 winpaths==0.2 From 6e6f74f73519c1a846e2fb95d13f4db012235bef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 23:34:04 +0000 Subject: [PATCH 05/71] build(deps): bump charset-normalizer from 3.4.4 to 3.4.6 Bumps [charset-normalizer](https://github.com/jawah/charset_normalizer) from 3.4.4 to 3.4.6. - [Release notes](https://github.com/jawah/charset_normalizer/releases) - [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md) - [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.4...3.4.6) --- updated-dependencies: - dependency-name: charset-normalizer dependency-version: 3.4.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cdb8222b..4fd0504c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.2.25 chardet==7.0.1 -charset-normalizer==3.4.4 +charset-normalizer==3.4.6 colorama==0.4.6 configobj==5.0.9 coverage==7.13.4 From c1ae648bcd18c14490a4712dc34aa5313b963b21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Mar 2026 06:31:45 +0000 Subject: [PATCH 06/71] build(deps): bump chardet from 7.0.1 to 7.1.0 Bumps [chardet](https://github.com/chardet/chardet) from 7.0.1 to 7.1.0. - [Release notes](https://github.com/chardet/chardet/releases) - [Changelog](https://github.com/chardet/chardet/blob/main/docs/changelog.rst) - [Commits](https://github.com/chardet/chardet/compare/7.0.1...7.1.0) --- updated-dependencies: - dependency-name: chardet dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b4e46501..543df627 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ attrs==25.4.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.2.25 -chardet==7.0.1 +chardet==7.1.0 charset-normalizer==3.4.6 colorama==0.4.6 configobj==5.0.9 From e4a0f4048fd62d3ebe66418472760513071981b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:34:09 +0000 Subject: [PATCH 07/71] build(deps): bump types-python-dateutil Bumps [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) from 2.9.0.20260305 to 2.9.0.20260323. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-version: 2.9.0.20260323 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 543df627..f3db5fe4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -49,7 +49,7 @@ sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 sqlitedict==2.1.0 twitter-text-parser==3.0.0 -types-python-dateutil==2.9.0.20260305 +types-python-dateutil==2.9.0.20260323 urllib3==2.6.3 win-inet-pton==1.1.0 winpaths==0.2 From 2a456b8446a971f52091a1c5ca1782cb67a33007 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:34:12 +0000 Subject: [PATCH 08/71] build(deps): bump coverage from 7.13.4 to 7.13.5 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.13.4 to 7.13.5. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.13.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 543df627..0f0d10ca 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.1.0 charset-normalizer==3.4.6 colorama==0.4.6 configobj==5.0.9 -coverage==7.13.4 +coverage==7.13.5 cx-Freeze==8.6.0 cx-Logging==3.2.1 decorator==5.2.1 From bf53e21736e3299d3c72cee206836ac326bf9c4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:34:21 +0000 Subject: [PATCH 09/71] build(deps): bump chardet from 7.1.0 to 7.2.0 Bumps [chardet](https://github.com/chardet/chardet) from 7.1.0 to 7.2.0. - [Release notes](https://github.com/chardet/chardet/releases) - [Changelog](https://github.com/chardet/chardet/blob/main/docs/changelog.rst) - [Commits](https://github.com/chardet/chardet/compare/7.1.0...7.2.0) --- updated-dependencies: - dependency-name: chardet dependency-version: 7.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 543df627..4b004e6a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ attrs==25.4.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.2.25 -chardet==7.1.0 +chardet==7.2.0 charset-normalizer==3.4.6 colorama==0.4.6 configobj==5.0.9 From 8df1d331ab3544b83689826370f195f2ec0f605f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Mar 2026 19:09:33 +0000 Subject: [PATCH 10/71] build(deps): bump attrs from 25.4.0 to 26.1.0 Bumps [attrs](https://github.com/python-attrs/attrs) from 25.4.0 to 26.1.0. - [Release notes](https://github.com/python-attrs/attrs/releases) - [Changelog](https://github.com/python-attrs/attrs/blob/main/CHANGELOG.md) - [Commits](https://github.com/python-attrs/attrs/compare/25.4.0...26.1.0) --- updated-dependencies: - dependency-name: attrs dependency-version: 26.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fec92184..845a7924 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ accessible_output2 @ git+https://github.com/accessibleapps/accessible_output2@57bda997d98e87dd78aa049e7021cf777871619b arrow==1.4.0 -attrs==25.4.0 +attrs==26.1.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.2.25 From 2a3238bed4c1cd5afdff07123c03f6221e460618 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Mar 2026 19:09:40 +0000 Subject: [PATCH 11/71] build(deps): bump cx-freeze from 8.6.0 to 8.6.3 Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 8.6.0 to 8.6.3. - [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases) - [Changelog](https://github.com/marcelotduarte/cx_Freeze/blob/main/CHANGELOG.md) - [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/8.6.0...8.6.3) --- updated-dependencies: - dependency-name: cx-freeze dependency-version: 8.6.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fec92184..dfab49ee 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ charset-normalizer==3.4.6 colorama==0.4.6 configobj==5.0.9 coverage==7.13.5 -cx-Freeze==8.6.0 +cx-Freeze==8.6.3 cx-Logging==3.2.1 decorator==5.2.1 demoji==1.1.0 From e266fb6331c198f2f4bcd53d64dbf1d2a5bf5feb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Mar 2026 19:09:45 +0000 Subject: [PATCH 12/71] build(deps): bump importlib-metadata from 8.7.1 to 9.0.0 Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.7.1 to 9.0.0. - [Release notes](https://github.com/python/importlib_metadata/releases) - [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst) - [Commits](https://github.com/python/importlib_metadata/compare/v8.7.1...v9.0.0) --- updated-dependencies: - dependency-name: importlib-metadata dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fec92184..97ff93b5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,7 +16,7 @@ demoji==1.1.0 deepl==1.28.0 future==1.0.0 idna==3.11 -importlib-metadata==8.7.1 +importlib-metadata==9.0.0 iniconfig==2.3.0 libloader @ git+https://github.com/accessibleapps/libloader@bc94811c095b2e57a036acd88660be9a33260267 libretranslatepy==2.1.4 From d15d6178190c19d0398e52400d8e3e1790ffc407 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 23:36:23 +0000 Subject: [PATCH 13/71] build(deps): bump requests from 2.32.5 to 2.33.1 Bumps [requests](https://github.com/psf/requests) from 2.32.5 to 2.33.1. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.32.5...v2.33.1) --- updated-dependencies: - dependency-name: requests dependency-version: 2.33.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 06424b2e..8bcc8495 100644 --- a/requirements.txt +++ b/requirements.txt @@ -39,7 +39,7 @@ python-dateutil==2.9.0.post0 python-magic-bin==0.4.14 python-vlc==3.0.21203 pywin32==311 -requests==2.32.5 +requests==2.33.1 requests-oauthlib==2.0.0 requests-toolbelt==1.0.0 rfc3986==2.0.0 From 417f6d15e140971dd56023a56dd09f48c900d5ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 23:36:26 +0000 Subject: [PATCH 14/71] build(deps): bump chardet from 7.2.0 to 7.4.0.post2 Bumps [chardet](https://github.com/chardet/chardet) from 7.2.0 to 7.4.0.post2. - [Release notes](https://github.com/chardet/chardet/releases) - [Changelog](https://github.com/chardet/chardet/blob/main/docs/changelog.rst) - [Commits](https://github.com/chardet/chardet/compare/7.2.0...7.4.0.post2) --- updated-dependencies: - dependency-name: chardet dependency-version: 7.4.0.post2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 06424b2e..31ecaeb0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ attrs==26.1.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.2.25 -chardet==7.2.0 +chardet==7.4.0.post2 charset-normalizer==3.4.6 colorama==0.4.6 configobj==5.0.9 From 3af77e3ef16027008e06d49b0efab5d75e347a27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 23:36:34 +0000 Subject: [PATCH 15/71] build(deps): bump numpy from 2.4.3 to 2.4.4 Bumps [numpy](https://github.com/numpy/numpy) from 2.4.3 to 2.4.4. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v2.4.3...v2.4.4) --- updated-dependencies: - dependency-name: numpy dependency-version: 2.4.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 06424b2e..56a24689 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,7 +23,7 @@ libretranslatepy==2.1.4 lief==0.15.1 Markdown==3.10.2 Mastodon.py==2.1.4 -numpy==2.4.3 +numpy==2.4.4 oauthlib==3.3.1 packaging==25.0 pillow==12.1.1 From a53ccc7861e09939e20ea2b1a924a082a355a30b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 23:34:12 +0000 Subject: [PATCH 16/71] build(deps): bump types-python-dateutil Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20260323 to 2.9.0.20260402. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-version: 2.9.0.20260402 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index dc7939a0..ee6cffcb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -49,7 +49,7 @@ sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 sqlitedict==2.1.0 twitter-text-parser==3.0.0 -types-python-dateutil==2.9.0.20260323 +types-python-dateutil==2.9.0.20260402 urllib3==2.6.3 win-inet-pton==1.1.0 winpaths==0.2 From 170f306498b1413e457ed4a8342c512b5fabc412 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 23:34:18 +0000 Subject: [PATCH 17/71] build(deps): bump pillow from 12.1.1 to 12.2.0 Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.1.1 to 12.2.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/12.1.1...12.2.0) --- updated-dependencies: - dependency-name: pillow dependency-version: 12.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index dc7939a0..049bee46 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,7 +26,7 @@ Mastodon.py==2.1.4 numpy==2.4.4 oauthlib==3.3.1 packaging==25.0 -pillow==12.1.1 +pillow==12.2.0 platform_utils @ git+https://github.com/accessibleapps/platform_utils@e0d79f7b399c4ea677a633d2dde9202350d62c38 pluggy==1.6.0 psutil==7.2.2 From 0b888b0bc6f36c153e1d935b8b6140b860acb049 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 23:34:24 +0000 Subject: [PATCH 18/71] build(deps): bump deepl from 1.28.0 to 1.29.0 Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.28.0 to 1.29.0. - [Release notes](https://github.com/DeepLcom/deepl-python/releases) - [Changelog](https://github.com/DeepLcom/deepl-python/blob/main/CHANGELOG.md) - [Commits](https://github.com/DeepLcom/deepl-python/compare/v1.28.0...v1.29.0) --- updated-dependencies: - dependency-name: deepl dependency-version: 1.29.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index dc7939a0..d206469c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ cx-Freeze==8.6.3 cx-Logging==3.2.1 decorator==5.2.1 demoji==1.1.0 -deepl==1.28.0 +deepl==1.29.0 future==1.0.0 idna==3.11 importlib-metadata==9.0.0 From c8531a06be818f097f0199fb92e8d8e0e5592075 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 16:35:01 +0000 Subject: [PATCH 19/71] build(deps): bump charset-normalizer from 3.4.6 to 3.4.7 Bumps [charset-normalizer](https://github.com/jawah/charset_normalizer) from 3.4.6 to 3.4.7. - [Release notes](https://github.com/jawah/charset_normalizer/releases) - [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md) - [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.6...3.4.7) --- updated-dependencies: - dependency-name: charset-normalizer dependency-version: 3.4.7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fa69a6cc..28240ffb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.2.25 chardet==7.4.0.post2 -charset-normalizer==3.4.6 +charset-normalizer==3.4.7 colorama==0.4.6 configobj==5.0.9 coverage==7.13.5 From da5fe132433067c49f13e77dc0cbbdc367a54b75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 16:35:05 +0000 Subject: [PATCH 20/71] build(deps): bump types-python-dateutil Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20260402 to 2.9.0.20260408. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-version: 2.9.0.20260408 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fa69a6cc..6018f647 100644 --- a/requirements.txt +++ b/requirements.txt @@ -49,7 +49,7 @@ sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 sqlitedict==2.1.0 twitter-text-parser==3.0.0 -types-python-dateutil==2.9.0.20260402 +types-python-dateutil==2.9.0.20260408 urllib3==2.6.3 win-inet-pton==1.1.0 winpaths==0.2 From 36827b7e1f75a293deb2391d3989a6b4ef4aed7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 16:35:08 +0000 Subject: [PATCH 21/71] build(deps): bump mastodon-py from 2.1.4 to 2.2.1 Bumps [mastodon-py](https://github.com/halcy/Mastodon.py) from 2.1.4 to 2.2.1. - [Release notes](https://github.com/halcy/Mastodon.py/releases) - [Changelog](https://github.com/halcy/Mastodon.py/blob/master/CHANGELOG.rst) - [Commits](https://github.com/halcy/Mastodon.py/compare/v2.1.4...v2.2.1) --- updated-dependencies: - dependency-name: mastodon-py dependency-version: 2.2.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fa69a6cc..e6775ba7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -22,7 +22,7 @@ libloader @ git+https://github.com/accessibleapps/libloader@bc94811c095b2e57a036 libretranslatepy==2.1.4 lief==0.15.1 Markdown==3.10.2 -Mastodon.py==2.1.4 +Mastodon.py==2.2.1 numpy==2.4.4 oauthlib==3.3.1 packaging==25.0 From 10cdb5f30040eb94ddaab8408b0b461f32eac594 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 23:38:19 +0000 Subject: [PATCH 22/71] build(deps): bump pytest from 9.0.2 to 9.0.3 Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.2 to 9.0.3. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3) --- updated-dependencies: - dependency-name: pytest dependency-version: 9.0.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 90e7d52e..c555b57c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,7 +34,7 @@ pyenchant==3.3.0 pypiwin32==223 Pypubsub==4.0.7 PySocks==1.7.1 -pytest==9.0.2 +pytest==9.0.3 python-dateutil==2.9.0.post0 python-magic-bin==0.4.14 python-vlc==3.0.21203 From d38e2e26520798be9331c185a1696de319f7a540 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 23:38:29 +0000 Subject: [PATCH 23/71] build(deps): bump cx-freeze from 8.6.3 to 8.6.4 Bumps [cx-freeze](https://github.com/marcelotduarte/cx_Freeze) from 8.6.3 to 8.6.4. - [Release notes](https://github.com/marcelotduarte/cx_Freeze/releases) - [Changelog](https://github.com/marcelotduarte/cx_Freeze/blob/main/CHANGELOG.md) - [Commits](https://github.com/marcelotduarte/cx_Freeze/compare/8.6.3...8.6.4) --- updated-dependencies: - dependency-name: cx-freeze dependency-version: 8.6.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 90e7d52e..7b471291 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,7 +9,7 @@ charset-normalizer==3.4.7 colorama==0.4.6 configobj==5.0.9 coverage==7.13.5 -cx-Freeze==8.6.3 +cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.2.1 demoji==1.1.0 From 64717845b22490a1e5362e71d4a83cd7c6a2a18b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 23:38:33 +0000 Subject: [PATCH 24/71] build(deps): bump zipp from 3.23.0 to 3.23.1 Bumps [zipp](https://github.com/jaraco/zipp) from 3.23.0 to 3.23.1. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.23.0...v3.23.1) --- updated-dependencies: - dependency-name: zipp dependency-version: 3.23.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 90e7d52e..601b0480 100644 --- a/requirements.txt +++ b/requirements.txt @@ -55,5 +55,5 @@ win-inet-pton==1.1.0 winpaths==0.2 wxPython==4.2.5 youtube-dl==2021.12.17 -zipp==3.23.0 +zipp==3.23.1 atproto>=0.0.65 From 29c93fea1b3151390773c9a232790fdc0fa5c7b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 00:24:07 +0000 Subject: [PATCH 25/71] build(deps): bump chardet from 7.4.0.post2 to 7.4.3 Bumps [chardet](https://github.com/chardet/chardet) from 7.4.0.post2 to 7.4.3. - [Release notes](https://github.com/chardet/chardet/releases) - [Changelog](https://github.com/chardet/chardet/blob/main/docs/changelog.rst) - [Commits](https://github.com/chardet/chardet/compare/7.4.0.post2...7.4.3) --- updated-dependencies: - dependency-name: chardet dependency-version: 7.4.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2dd9bb18..07006c3e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ attrs==26.1.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.2.25 -chardet==7.4.0.post2 +chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 configobj==5.0.9 From 837a4a08fbebd770b7228941f984ea1e47a3d9a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 00:24:11 +0000 Subject: [PATCH 26/71] build(deps): bump packaging from 25.0 to 26.1 Bumps [packaging](https://github.com/pypa/packaging) from 25.0 to 26.1. - [Release notes](https://github.com/pypa/packaging/releases) - [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pypa/packaging/compare/25.0...26.1) --- updated-dependencies: - dependency-name: packaging dependency-version: '26.1' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2dd9bb18..7d6c23c8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,7 +25,7 @@ Markdown==3.10.2 Mastodon.py==2.2.1 numpy==2.4.4 oauthlib==3.3.1 -packaging==25.0 +packaging==26.1 pillow==12.2.0 platform_utils @ git+https://github.com/accessibleapps/platform_utils@e0d79f7b399c4ea677a633d2dde9202350d62c38 pluggy==1.6.0 From c40767b7e14c59c1a96fa5b9fdaad40b63a73bd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 00:24:18 +0000 Subject: [PATCH 27/71] build(deps): bump deepl from 1.29.0 to 1.30.0 Bumps [deepl](https://github.com/DeepLcom/deepl-python) from 1.29.0 to 1.30.0. - [Release notes](https://github.com/DeepLcom/deepl-python/releases) - [Changelog](https://github.com/DeepLcom/deepl-python/blob/main/CHANGELOG.md) - [Commits](https://github.com/DeepLcom/deepl-python/compare/v1.29.0...v1.30.0) --- updated-dependencies: - dependency-name: deepl dependency-version: 1.30.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2dd9bb18..649b8a10 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.2.1 demoji==1.1.0 -deepl==1.29.0 +deepl==1.30.0 future==1.0.0 idna==3.11 importlib-metadata==9.0.0 From b1ec7e022da6f533574ae6c70079db61c3f957ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 05:32:27 +0000 Subject: [PATCH 28/71] build(deps): bump demoji from 1.1.0 to 2.0.0 Bumps [demoji](https://github.com/bsolomon1124/demoji) from 1.1.0 to 2.0.0. - [Release notes](https://github.com/bsolomon1124/demoji/releases) - [Changelog](https://github.com/bsolomon1124/demoji/blob/master/CHANGELOG.md) - [Commits](https://github.com/bsolomon1124/demoji/compare/v1.1.0...v2.0.0) --- updated-dependencies: - dependency-name: demoji dependency-version: 2.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 649b8a10..9e675192 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ coverage==7.13.5 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.2.1 -demoji==1.1.0 +demoji==2.0.0 deepl==1.30.0 future==1.0.0 idna==3.11 From 5181be142826d3fb7970177ce8de6a987e84f9c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 02:09:21 +0000 Subject: [PATCH 29/71] build(deps): bump certifi from 2026.2.25 to 2026.4.22 Bumps [certifi](https://github.com/certifi/python-certifi) from 2026.2.25 to 2026.4.22. - [Commits](https://github.com/certifi/python-certifi/compare/2026.02.25...2026.04.22) --- updated-dependencies: - dependency-name: certifi dependency-version: 2026.4.22 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5e58d8c1..6f40473b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ arrow==1.4.0 attrs==26.1.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 -certifi==2026.2.25 +certifi==2026.4.22 chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 From 4f75dd8b02849d8ddb2f87b68a20637a1012f0f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 02:09:25 +0000 Subject: [PATCH 30/71] build(deps): bump idna from 3.11 to 3.13 Bumps [idna](https://github.com/kjd/idna) from 3.11 to 3.13. - [Release notes](https://github.com/kjd/idna/releases) - [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst) - [Commits](https://github.com/kjd/idna/compare/v3.11...v3.13) --- updated-dependencies: - dependency-name: idna dependency-version: '3.13' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5e58d8c1..2db012e0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,7 +15,7 @@ decorator==5.2.1 demoji==2.0.0 deepl==1.30.0 future==1.0.0 -idna==3.11 +idna==3.13 importlib-metadata==9.0.0 iniconfig==2.3.0 libloader @ git+https://github.com/accessibleapps/libloader@bc94811c095b2e57a036acd88660be9a33260267 From 8b5668e8ee75c4e10454f034904c4b899122e1a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Apr 2026 02:09:39 +0000 Subject: [PATCH 31/71] build(deps): bump packaging from 26.1 to 26.2 Bumps [packaging](https://github.com/pypa/packaging) from 26.1 to 26.2. - [Release notes](https://github.com/pypa/packaging/releases) - [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pypa/packaging/compare/26.1...26.2) --- updated-dependencies: - dependency-name: packaging dependency-version: '26.2' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5e58d8c1..494b3157 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,7 +25,7 @@ Markdown==3.10.2 Mastodon.py==2.2.1 numpy==2.4.4 oauthlib==3.3.1 -packaging==26.1 +packaging==26.2 pillow==12.2.0 platform_utils @ git+https://github.com/accessibleapps/platform_utils@e0d79f7b399c4ea677a633d2dde9202350d62c38 pluggy==1.6.0 From 2359fc30acfc22643c1bb707128d9f9c0f6d0723 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 05:27:35 +0000 Subject: [PATCH 32/71] build(deps): bump urllib3 from 2.6.3 to 2.7.0 Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8b3837d7..4722ec23 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,7 +50,7 @@ sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba sqlitedict==2.1.0 twitter-text-parser==3.0.0 types-python-dateutil==2.9.0.20260408 -urllib3==2.6.3 +urllib3==2.7.0 win-inet-pton==1.1.0 winpaths==0.2 wxPython==4.2.5 From 83b8f27711370c7ed5c213a20301fef3f93c6f72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 05:27:40 +0000 Subject: [PATCH 33/71] build(deps): bump coverage from 7.13.5 to 7.14.0 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.13.5 to 7.14.0. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.14.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8b3837d7..75623892 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 configobj==5.0.9 -coverage==7.13.5 +coverage==7.14.0 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.2.1 From 7a1b3578d12025ed97f7f5b2732fa63ba443d55b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 05:27:47 +0000 Subject: [PATCH 34/71] build(deps): bump requests from 2.33.1 to 2.34.0 Bumps [requests](https://github.com/psf/requests) from 2.33.1 to 2.34.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.33.1...v2.34.0) --- updated-dependencies: - dependency-name: requests dependency-version: 2.34.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8b3837d7..6ead7787 100644 --- a/requirements.txt +++ b/requirements.txt @@ -39,7 +39,7 @@ python-dateutil==2.9.0.post0 python-magic-bin==0.4.14 python-vlc==3.0.21203 pywin32==311 -requests==2.33.1 +requests==2.34.0 requests-oauthlib==2.0.0 requests-toolbelt==1.0.0 rfc3986==2.0.0 From 66ae09be171fdff1c43afd34ea0738103d6af95c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 05:32:06 +0000 Subject: [PATCH 35/71] build(deps): bump types-python-dateutil Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20260408 to 2.9.0.20260508. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-version: 2.9.0.20260508 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ba3e68a1..d5e79bd9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -49,7 +49,7 @@ sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 sqlitedict==2.1.0 twitter-text-parser==3.0.0 -types-python-dateutil==2.9.0.20260408 +types-python-dateutil==2.9.0.20260508 urllib3==2.7.0 win-inet-pton==1.1.0 winpaths==0.2 From 2017ea43d515166659a9ec89afc7cf54183fbaa7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 May 2026 09:35:09 +0000 Subject: [PATCH 36/71] build(deps): bump zipp from 3.23.1 to 4.1.0 Bumps [zipp](https://github.com/jaraco/zipp) from 3.23.1 to 4.1.0. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.23.1...v4.1.0) --- updated-dependencies: - dependency-name: zipp dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d5e79bd9..727aec4e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -55,5 +55,5 @@ win-inet-pton==1.1.0 winpaths==0.2 wxPython==4.2.5 youtube-dl==2021.12.17 -zipp==3.23.1 +zipp==4.1.0 atproto>=0.0.65 From 993a24beaba7e71f0218ca1283b8bb97e4dbd03c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 May 2026 09:35:19 +0000 Subject: [PATCH 37/71] build(deps): bump numpy from 2.4.4 to 2.4.6 Bumps [numpy](https://github.com/numpy/numpy) from 2.4.4 to 2.4.6. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v2.4.4...v2.4.6) --- updated-dependencies: - dependency-name: numpy dependency-version: 2.4.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d5e79bd9..26439fca 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,7 +23,7 @@ libretranslatepy==2.1.4 lief==0.15.1 Markdown==3.10.2 Mastodon.py==2.2.1 -numpy==2.4.4 +numpy==2.4.6 oauthlib==3.3.1 packaging==26.2 pillow==12.2.0 From d2e6aba05956fff1561eb0fb88003558c0dc9260 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 May 2026 09:35:27 +0000 Subject: [PATCH 38/71] build(deps): bump decorator from 5.2.1 to 5.3.1 Bumps [decorator](https://github.com/micheles/decorator) from 5.2.1 to 5.3.1. - [Release notes](https://github.com/micheles/decorator/releases) - [Changelog](https://github.com/micheles/decorator/blob/master/CHANGES.md) - [Commits](https://github.com/micheles/decorator/compare/5.2.1...5.3.1) --- updated-dependencies: - dependency-name: decorator dependency-version: 5.3.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d5e79bd9..28f59373 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,7 @@ configobj==5.0.9 coverage==7.14.0 cx-Freeze==8.6.4 cx-Logging==3.2.1 -decorator==5.2.1 +decorator==5.3.1 demoji==2.0.0 deepl==1.30.0 future==1.0.0 From 374ac3a940236819a592b0f512af30ef6f6a1fd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 May 2026 09:35:33 +0000 Subject: [PATCH 39/71] build(deps): bump requests from 2.34.0 to 2.34.2 Bumps [requests](https://github.com/psf/requests) from 2.34.0 to 2.34.2. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.34.0...v2.34.2) --- updated-dependencies: - dependency-name: requests dependency-version: 2.34.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d5e79bd9..e7d58a80 100644 --- a/requirements.txt +++ b/requirements.txt @@ -39,7 +39,7 @@ python-dateutil==2.9.0.post0 python-magic-bin==0.4.14 python-vlc==3.0.21203 pywin32==311 -requests==2.34.0 +requests==2.34.2 requests-oauthlib==2.0.0 requests-toolbelt==1.0.0 rfc3986==2.0.0 From 8791c57b5cbe85fb8a1ad9beb11e57647b557a43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 May 2026 04:56:16 +0000 Subject: [PATCH 40/71] build(deps): bump idna from 3.13 to 3.16 Bumps [idna](https://github.com/kjd/idna) from 3.13 to 3.16. - [Release notes](https://github.com/kjd/idna/releases) - [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md) - [Commits](https://github.com/kjd/idna/compare/v3.13...v3.16) --- updated-dependencies: - dependency-name: idna dependency-version: '3.16' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index feeba28a..32e14ad9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,7 +15,7 @@ decorator==5.3.1 demoji==2.0.0 deepl==1.30.0 future==1.0.0 -idna==3.13 +idna==3.16 importlib-metadata==9.0.0 iniconfig==2.3.0 libloader @ git+https://github.com/accessibleapps/libloader@bc94811c095b2e57a036acd88660be9a33260267 From 76b5789a25c4a44199c99f30bb305e792e91d523 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 May 2026 04:56:22 +0000 Subject: [PATCH 41/71] build(deps): bump types-python-dateutil Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20260508 to 2.9.0.20260518. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-version: 2.9.0.20260518 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index feeba28a..e462a768 100644 --- a/requirements.txt +++ b/requirements.txt @@ -49,7 +49,7 @@ sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 sqlitedict==2.1.0 twitter-text-parser==3.0.0 -types-python-dateutil==2.9.0.20260508 +types-python-dateutil==2.9.0.20260518 urllib3==2.7.0 win-inet-pton==1.1.0 winpaths==0.2 From 784176bfe71a5dcbb1a13117357e87b12f4407e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 May 2026 04:56:26 +0000 Subject: [PATCH 42/71] build(deps): bump certifi from 2026.4.22 to 2026.5.20 Bumps [certifi](https://github.com/certifi/python-certifi) from 2026.4.22 to 2026.5.20. - [Commits](https://github.com/certifi/python-certifi/compare/2026.04.22...2026.05.20) --- updated-dependencies: - dependency-name: certifi dependency-version: 2026.5.20 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index feeba28a..84463231 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ arrow==1.4.0 attrs==26.1.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 -certifi==2026.4.22 +certifi==2026.5.20 chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 From 75e925589438bfd5e6dfddd7419de55cc9cdcefd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 16:37:19 +0000 Subject: [PATCH 43/71] build(deps): bump idna from 3.16 to 3.18 Bumps [idna](https://github.com/kjd/idna) from 3.16 to 3.18. - [Release notes](https://github.com/kjd/idna/releases) - [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md) - [Commits](https://github.com/kjd/idna/compare/v3.16...v3.18) --- updated-dependencies: - dependency-name: idna dependency-version: '3.18' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 413005b9..c7b5a825 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,7 +15,7 @@ decorator==5.3.1 demoji==2.0.0 deepl==1.30.0 future==1.0.0 -idna==3.16 +idna==3.18 importlib-metadata==9.0.0 iniconfig==2.3.0 libloader @ git+https://github.com/accessibleapps/libloader@bc94811c095b2e57a036acd88660be9a33260267 From 6db19ba259a4622a4211b989e795d7b35a1779b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 16:37:24 +0000 Subject: [PATCH 44/71] build(deps): update atproto requirement from >=0.0.65 to >=0.0.67 Updates the requirements on [atproto](https://github.com/MarshalX/atproto) to permit the latest version. - [Release notes](https://github.com/MarshalX/atproto/releases) - [Changelog](https://github.com/MarshalX/atproto/blob/main/CHANGES.md) - [Commits](https://github.com/MarshalX/atproto/compare/v0.0.65...v0.0.67) --- updated-dependencies: - dependency-name: atproto dependency-version: 0.0.67 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 413005b9..7fa30692 100644 --- a/requirements.txt +++ b/requirements.txt @@ -56,4 +56,4 @@ winpaths==0.2 wxPython==4.2.5 youtube-dl==2021.12.17 zipp==4.1.0 -atproto>=0.0.65 +atproto>=0.0.67 From e5a827756357f4f0017f355e82970dbfe12d0bc7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 16:37:29 +0000 Subject: [PATCH 45/71] build(deps): bump coverage from 7.14.0 to 7.14.1 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.14.0 to 7.14.1. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.14.0...7.14.1) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.14.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 413005b9..d1e9ad05 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 configobj==5.0.9 -coverage==7.14.0 +coverage==7.14.1 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.3.1 From cc6e00500abd83b0310055a58f518d3f6d43884e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2026 23:33:38 +0000 Subject: [PATCH 46/71] build(deps): bump pywin32 from 311 to 312 Bumps [pywin32](https://github.com/mhammond/pywin32) from 311 to 312. - [Release notes](https://github.com/mhammond/pywin32/releases) - [Changelog](https://github.com/mhammond/pywin32/blob/main/CHANGES.md) - [Commits](https://github.com/mhammond/pywin32/commits) --- updated-dependencies: - dependency-name: pywin32 dependency-version: '312' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a64a4f9e..4e44e3c5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -38,7 +38,7 @@ pytest==9.0.3 python-dateutil==2.9.0.post0 python-magic-bin==0.4.14 python-vlc==3.0.21203 -pywin32==311 +pywin32==312 requests==2.34.2 requests-oauthlib==2.0.0 requests-toolbelt==1.0.0 From 30d82d8d12b7e16286f64559dceab6c78b34e33e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Pav=C3=B3n=20Abi=C3=A1n?= Date: Thu, 11 Jun 2026 08:40:48 +0200 Subject: [PATCH 47/71] =?UTF-8?q?Arreglar=20alt=20y=20=20mostrar=20la=20ho?= =?UTF-8?q?me,=20que=20desaparec=C3=ADa.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 2 +- src/blueski.defaults | 2 +- src/controller/blueski/handler.py | 2 +- src/controller/buffers/blueski/base.py | 4 ++-- src/sessions/blueski/compose.py | 9 +++++++++ src/sessions/blueski/session.py | 12 ++++++++++++ src/sessions/blueski/templates.py | 4 ++++ src/sessions/blueski/utils.py | 18 +++++++++++++++++- 8 files changed, 47 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index 4e44e3c5..48ea35fd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -56,4 +56,4 @@ winpaths==0.2 wxPython==4.2.5 youtube-dl==2021.12.17 zipp==4.1.0 -atproto>=0.0.67 +atproto>=0.0.68 diff --git a/src/blueski.defaults b/src/blueski.defaults index e90b775b..bc758d64 100644 --- a/src/blueski.defaults +++ b/src/blueski.defaults @@ -44,7 +44,7 @@ braille_reporting = boolean(default=True) speech_reporting = boolean(default=True) [templates] -post = string(default="$display_name, $reply_to$safe_text $date.") +post = string(default="$display_name, $reply_to$safe_text $image_descriptions $date.") person = string(default="$display_name (@$screen_name). $followers followers, $following following, $posts posts. Joined $created_at.") notification = string(default="$display_name $text, $date") diff --git a/src/controller/blueski/handler.py b/src/controller/blueski/handler.py index 342f2b8e..44eda881 100644 --- a/src/controller/blueski/handler.py +++ b/src/controller/blueski/handler.py @@ -357,7 +357,7 @@ class Handler: buffer.session.settings["templates"] = {} templates_cfg = buffer.session.settings.get("templates", {}) template_state = { - "post": templates_cfg.get("post", "$display_name, $reply_to$safe_text $date."), + "post": templates_cfg.get("post", "$display_name, $reply_to$safe_text $image_descriptions $date."), "person": templates_cfg.get("person", "$display_name (@$screen_name). $followers followers, $following following, $posts posts. Joined $created_at."), "notification": templates_cfg.get("notification", "$display_name $text, $date"), } diff --git a/src/controller/buffers/blueski/base.py b/src/controller/buffers/blueski/base.py index 24173bae..48c0ae26 100644 --- a/src/controller/buffers/blueski/base.py +++ b/src/controller/buffers/blueski/base.py @@ -804,12 +804,12 @@ class BaseBuffer(base.Buffer): try: if self.type == "notifications": template = template_settings.get("notification", "$display_name $text, $date") - post_template = template_settings.get("post", "$display_name, $reply_to$safe_text $date.") + post_template = template_settings.get("post", "$display_name, $reply_to$safe_text $image_descriptions $date.") return templates.render_notification(item, template, post_template, self.session.settings, relative_times, offset_hours) if self.type in ("user", "post_user_list"): template = template_settings.get("person", "$display_name (@$screen_name). $followers followers, $following following, $posts posts. Joined $created_at.") return templates.render_user(item, template, self.session.settings, relative_times, offset_hours) - template = template_settings.get("post", "$display_name, $reply_to$safe_text $date.") + template = template_settings.get("post", "$display_name, $reply_to$safe_text $image_descriptions $date.") return templates.render_post(item, template, self.session.settings, relative_times, offset_hours) except Exception: # Fallback to compose if any template render fails. diff --git a/src/sessions/blueski/compose.py b/src/sessions/blueski/compose.py index a87bf630..900da253 100644 --- a/src/sessions/blueski/compose.py +++ b/src/sessions/blueski/compose.py @@ -136,6 +136,11 @@ def compose_post(post, db, settings, relative_times, show_screen_names=False, sa if images: text += f" [{len(images)} {_('images')}]" + if etype and ("gallery" in etype): + items = g(embed, "items", []) + if items: + text += f" [{len(items)} {_('images')}]" + if etype and ("recordWithMedia" in etype): media = g(embed, "media", {}) mtype = g(media, "$type") or g(media, "py_type") @@ -143,6 +148,10 @@ def compose_post(post, db, settings, relative_times, show_screen_names=False, sa images = g(media, "images", []) if images: text += f" [{len(images)} {_('images')}]" + elif mtype and "gallery" in mtype: + items = g(media, "items", []) + if items: + text += f" [{len(items)} {_('images')}]" elif mtype and "external" in mtype: ext = g(media, "external", {}) title = g(ext, "title", "") diff --git a/src/sessions/blueski/session.py b/src/sessions/blueski/session.py index 8e5810fe..5a6ab56b 100644 --- a/src/sessions/blueski/session.py +++ b/src/sessions/blueski/session.py @@ -96,6 +96,18 @@ class Session(base.baseSession): self.settings.write() except Exception: pass + # Upgrade old default post templates so image descriptions are read. + old_post_templates = ( + "$display_name, $safe_text $date.", + "$display_name, $reply_to$safe_text $date.", + ) + templates_cfg = self.settings.get("templates") + if templates_cfg is not None and templates_cfg.get("post") in old_post_templates: + templates_cfg["post"] = "$display_name, $reply_to$safe_text $image_descriptions $date." + try: + self.settings.write() + except Exception: + pass except Exception: log.exception("Failed to migrate legacy Blueski settings") diff --git a/src/sessions/blueski/templates.py b/src/sessions/blueski/templates.py index 527fd3d5..793bf0fd 100644 --- a/src/sessions/blueski/templates.py +++ b/src/sessions/blueski/templates.py @@ -69,9 +69,13 @@ def _extract_image_descriptions(post, record): mtype = _g(media, "$type") or _g(media, "py_type") or "" if "images" in mtype: return list(_g(media, "images", []) or []) + if "gallery" in mtype: + return list(_g(media, "items", []) or []) return [] if "images" in etype: return list(_g(embed, "images", []) or []) + if "gallery" in etype: + return list(_g(embed, "items", []) or []) return [] images = [] diff --git a/src/sessions/blueski/utils.py b/src/sessions/blueski/utils.py index 8bd61682..1bbdda1f 100644 --- a/src/sessions/blueski/utils.py +++ b/src/sessions/blueski/utils.py @@ -78,7 +78,7 @@ def _extract_images_from_embed(embed): for img in (img_list or []): url = None # Try all possible URL field names - for key in ["fullsize", "thumb", "url", "uri", "src"]: + for key in ["fullsize", "thumb", "thumbnail", "url", "uri", "src"]: val = g(img, key) if val and isinstance(val, str) and val.startswith("http"): url = val @@ -103,12 +103,18 @@ def _extract_images_from_embed(embed): if "images" in etype.lower(): images.extend(extract_images(g(embed, "images", []))) + # Gallery embed (app.bsky.embed.gallery or app.bsky.embed.gallery#view) + if "gallery" in etype.lower(): + images.extend(extract_images(g(embed, "items", []))) + # Check in recordWithMedia wrapper if "recordwithmedia" in etype.lower(): media = g(embed, "media", {}) mtype = g(media, "$type") or g(media, "py_type") or "" if "images" in mtype.lower(): images.extend(extract_images(g(media, "images", []))) + if "gallery" in mtype.lower(): + images.extend(extract_images(g(media, "items", []))) return images @@ -136,6 +142,12 @@ def is_image(post): if images and len(images) > 0: return True + # Gallery embed + if "gallery" in etype.lower(): + items = g(embed, "items", []) + if items and len(items) > 0: + return True + # Check in recordWithMedia wrapper if "recordwithmedia" in etype.lower(): media = g(embed, "media", {}) @@ -144,6 +156,10 @@ def is_image(post): images = g(media, "images", []) if images and len(images) > 0: return True + if "gallery" in mtype.lower(): + items = g(media, "items", []) + if items and len(items) > 0: + return True return False From 245c32604d9ed71f404fc8b872463848a2841540 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 23:33:28 +0000 Subject: [PATCH 48/71] build(deps): bump pytest from 9.0.3 to 9.1.0 Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.3 to 9.1.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/9.0.3...9.1.0) --- updated-dependencies: - dependency-name: pytest dependency-version: 9.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 48ea35fd..8ec99307 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,7 +34,7 @@ pyenchant==3.3.0 pypiwin32==223 Pypubsub==4.0.7 PySocks==1.7.1 -pytest==9.0.3 +pytest==9.1.0 python-dateutil==2.9.0.post0 python-magic-bin==0.4.14 python-vlc==3.0.21203 From 1b681b01f7b22776166fff0a90ac40b97bf55e2f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:54:34 +0000 Subject: [PATCH 49/71] build(deps): bump pytest from 9.1.0 to 9.1.1 Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.1.0 to 9.1.1. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/9.1.0...9.1.1) --- updated-dependencies: - dependency-name: pytest dependency-version: 9.1.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8ec99307..ba28d680 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,7 +34,7 @@ pyenchant==3.3.0 pypiwin32==223 Pypubsub==4.0.7 PySocks==1.7.1 -pytest==9.1.0 +pytest==9.1.1 python-dateutil==2.9.0.post0 python-magic-bin==0.4.14 python-vlc==3.0.21203 From 07fd2d2fedd098d5805a595bdf1aa9a92198504e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:54:39 +0000 Subject: [PATCH 50/71] build(deps): bump certifi from 2026.5.20 to 2026.6.17 Bumps [certifi](https://github.com/certifi/python-certifi) from 2026.5.20 to 2026.6.17. - [Commits](https://github.com/certifi/python-certifi/compare/2026.05.20...2026.06.17) --- updated-dependencies: - dependency-name: certifi dependency-version: 2026.6.17 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8ec99307..c9604b9f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ arrow==1.4.0 attrs==26.1.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 -certifi==2026.5.20 +certifi==2026.6.17 chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 From 27fad39e59178a68ec821dcdf39ab7c66e455085 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:54:44 +0000 Subject: [PATCH 51/71] build(deps): bump coverage from 7.14.1 to 7.14.2 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.14.1 to 7.14.2. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.14.1...7.14.2) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.14.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8ec99307..6da33fa9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 configobj==5.0.9 -coverage==7.14.1 +coverage==7.14.2 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.3.1 From 18ee6c41d59dda4155cd081e2ee464f33015d3a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 15:54:50 +0000 Subject: [PATCH 52/71] build(deps): bump numpy from 2.4.6 to 2.5.0 Bumps [numpy](https://github.com/numpy/numpy) from 2.4.6 to 2.5.0. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v2.4.6...v2.5.0) --- updated-dependencies: - dependency-name: numpy dependency-version: 2.5.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8ec99307..60d41cf1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,7 +23,7 @@ libretranslatepy==2.1.4 lief==0.15.1 Markdown==3.10.2 Mastodon.py==2.2.1 -numpy==2.4.6 +numpy==2.5.0 oauthlib==3.3.1 packaging==26.2 pillow==12.2.0 From 131e026bdd2a05795b4a9a29e9261d639b967304 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 23:33:10 +0000 Subject: [PATCH 53/71] build(deps): bump coverage from 7.14.2 to 7.14.3 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.14.2 to 7.14.3. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.14.2...7.14.3) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.14.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 020d5ea5..1cdb1081 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 configobj==5.0.9 -coverage==7.14.2 +coverage==7.14.3 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.3.1 From 17820e1531d80ee1c65561d3002bdcf7244ea3bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jun 2026 14:44:02 +0000 Subject: [PATCH 54/71] build(deps): update atproto requirement from >=0.0.68 to >=0.0.69 Updates the requirements on [atproto](https://github.com/MarshalX/atproto) to permit the latest version. - [Release notes](https://github.com/MarshalX/atproto/releases) - [Changelog](https://github.com/MarshalX/atproto/blob/main/CHANGES.md) - [Commits](https://github.com/MarshalX/atproto/compare/v0.0.68...v0.0.69) --- updated-dependencies: - dependency-name: atproto dependency-version: 0.0.69 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 1cdb1081..b9152393 100644 --- a/requirements.txt +++ b/requirements.txt @@ -56,4 +56,4 @@ winpaths==0.2 wxPython==4.2.5 youtube-dl==2021.12.17 zipp==4.1.0 -atproto>=0.0.68 +atproto>=0.0.69 From 17a49dad1a8e80d2ad358cae3957570cde5d64df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2026 23:33:27 +0000 Subject: [PATCH 55/71] build(deps): bump setuptools from 82.0.1 to 83.0.0 Bumps [setuptools](https://github.com/pypa/setuptools) from 82.0.1 to 83.0.0. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v82.0.1...v83.0.0) --- updated-dependencies: - dependency-name: setuptools dependency-version: 83.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b9152393..59fc4988 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,7 +43,7 @@ requests==2.34.2 requests-oauthlib==2.0.0 requests-toolbelt==1.0.0 rfc3986==2.0.0 -setuptools==82.0.1 +setuptools==83.0.0 six==1.17.0 sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 From 74c0765d4c1d2a67804dfafde3a110b8b66fa7d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2026 23:33:33 +0000 Subject: [PATCH 56/71] build(deps): bump charset-normalizer from 3.4.7 to 3.4.8 Bumps [charset-normalizer](https://github.com/jawah/charset_normalizer) from 3.4.7 to 3.4.8. - [Release notes](https://github.com/jawah/charset_normalizer/releases) - [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md) - [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.7...3.4.8) --- updated-dependencies: - dependency-name: charset-normalizer dependency-version: 3.4.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b9152393..1524dc5c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.6.17 chardet==7.4.3 -charset-normalizer==3.4.7 +charset-normalizer==3.4.8 colorama==0.4.6 configobj==5.0.9 coverage==7.14.3 From 2769f17fc44860124796efbb4ae58f741a1e1dd9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2026 23:33:41 +0000 Subject: [PATCH 57/71] build(deps): bump coverage from 7.14.3 to 7.15.0 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.14.3 to 7.15.0. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.14.3...7.15.0) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.15.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b9152393..5860d4ea 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.4.3 charset-normalizer==3.4.7 colorama==0.4.6 configobj==5.0.9 -coverage==7.14.3 +coverage==7.15.0 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.3.1 From bc6be70ed3c67cc284ae64284b5bc16dd03db78a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2026 23:33:52 +0000 Subject: [PATCH 58/71] build(deps): bump numpy from 2.5.0 to 2.5.1 Bumps [numpy](https://github.com/numpy/numpy) from 2.5.0 to 2.5.1. - [Release notes](https://github.com/numpy/numpy/releases) - [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst) - [Commits](https://github.com/numpy/numpy/compare/v2.5.0...v2.5.1) --- updated-dependencies: - dependency-name: numpy dependency-version: 2.5.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b9152393..2a197287 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,7 +23,7 @@ libretranslatepy==2.1.4 lief==0.15.1 Markdown==3.10.2 Mastodon.py==2.2.1 -numpy==2.5.0 +numpy==2.5.1 oauthlib==3.3.1 packaging==26.2 pillow==12.2.0 From d000deebaeb7923898d09256b24104bc8819dafb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2026 23:33:22 +0000 Subject: [PATCH 59/71] build(deps): bump charset-normalizer from 3.4.8 to 3.4.9 Bumps [charset-normalizer](https://github.com/jawah/charset_normalizer) from 3.4.8 to 3.4.9. - [Release notes](https://github.com/jawah/charset_normalizer/releases) - [Changelog](https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md) - [Commits](https://github.com/jawah/charset_normalizer/compare/3.4.8...3.4.9) --- updated-dependencies: - dependency-name: charset-normalizer dependency-version: 3.4.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 72a50ceb..7620578f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.6.17 chardet==7.4.3 -charset-normalizer==3.4.8 +charset-normalizer==3.4.9 colorama==0.4.6 configobj==5.0.9 coverage==7.15.0 From 3c916738b68efa4b24866718f7899e1962349240 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2026 23:33:27 +0000 Subject: [PATCH 60/71] build(deps): bump coverage from 7.15.0 to 7.15.1 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.15.0 to 7.15.1. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.15.0...7.15.1) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.15.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 72a50ceb..eb3359d9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.4.3 charset-normalizer==3.4.8 colorama==0.4.6 configobj==5.0.9 -coverage==7.15.0 +coverage==7.15.1 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.3.1 From 6b919dc65bbb69ce0b07a061f46962e28890e9b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2026 23:33:38 +0000 Subject: [PATCH 61/71] build(deps): bump pillow from 12.2.0 to 12.3.0 Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.2.0 to 12.3.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0) --- updated-dependencies: - dependency-name: pillow dependency-version: 12.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 72a50ceb..e0199e4b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,7 +26,7 @@ Mastodon.py==2.2.1 numpy==2.5.1 oauthlib==3.3.1 packaging==26.2 -pillow==12.2.0 +pillow==12.3.0 platform_utils @ git+https://github.com/accessibleapps/platform_utils@e0d79f7b399c4ea677a633d2dde9202350d62c38 pluggy==1.6.0 psutil==7.2.2 From 232aa48ee9fe7f152e97162a11227938bb44d86c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:09:51 +0000 Subject: [PATCH 62/71] build(deps): bump coverage from 7.15.1 to 7.15.2 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.15.1 to 7.15.2. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.15.1...7.15.2) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.15.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2eb88657..b9b2c71f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.4.3 charset-normalizer==3.4.9 colorama==0.4.6 configobj==5.0.9 -coverage==7.15.1 +coverage==7.15.2 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.3.1 From 77283b5b24ed9d011a96166c40d4ac93ff6ed8ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:10:00 +0000 Subject: [PATCH 63/71] build(deps): bump types-python-dateutil Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20260518 to 2.9.0.20260716. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-version: 2.9.0.20260716 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2eb88657..5af866a8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -49,7 +49,7 @@ sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 sqlitedict==2.1.0 twitter-text-parser==3.0.0 -types-python-dateutil==2.9.0.20260518 +types-python-dateutil==2.9.0.20260716 urllib3==2.7.0 win-inet-pton==1.1.0 winpaths==0.2 From fb22d67b2de34c2187c7d98481fb2deb6d338f42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 23:33:28 +0000 Subject: [PATCH 64/71] build(deps): bump certifi from 2026.6.17 to 2026.7.22 Bumps [certifi](https://github.com/certifi/python-certifi) from 2026.6.17 to 2026.7.22. - [Commits](https://github.com/certifi/python-certifi/compare/2026.06.17...2026.07.22) --- updated-dependencies: - dependency-name: certifi dependency-version: 2026.7.22 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cc240ddc..fdd44d3a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ arrow==1.4.0 attrs==26.1.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 -certifi==2026.6.17 +certifi==2026.7.22 chardet==7.4.3 charset-normalizer==3.4.9 colorama==0.4.6 From b6681df03c6be7ef6f55a6585adf1430dfdc77ab Mon Sep 17 00:00:00 2001 From: Juanjo M Date: Sun, 2 Aug 2026 14:32:45 +0100 Subject: [PATCH 65/71] Fix "Unknown image format" error when showing or updating profiles wx only decodes the image formats its own handlers support. Mastodon instances commonly serve avatars and headers as WebP, so wx.Image failed and raised a modal "Unknown image format" dialog, which blocked the user from updating their profile or from reading someone's profile. Images are now decoded with Pillow and their raw pixel data handed over to wx, through a new mysc.image_utils module shared by the Mastodon and Bluesky profile dialogs. Undecodable or unreachable images log the problem and leave an empty placeholder instead of raising. Also accept WebP and JPEG files in the header/avatar file pickers, warn the user with a common message dialog when the picked file cannot be read, and fix the parentless wx.StaticBitmap placeholders that were created when a profile image could not be downloaded. --- doc/changelog.md | 1 + src/mysc/image_utils.py | 77 ++++++++++++++++ src/test/mysc/__init__.py | 0 src/test/mysc/test_image_utils.py | 97 ++++++++++++++++++++ src/wxUI/commonMessageDialogs.py | 3 + src/wxUI/dialogs/blueski/showUserProfile.py | 15 +-- src/wxUI/dialogs/mastodon/showUserProfile.py | 14 +-- src/wxUI/dialogs/mastodon/updateProfile.py | 76 +++++++++------ 8 files changed, 241 insertions(+), 42 deletions(-) create mode 100644 src/mysc/image_utils.py create mode 100644 src/test/mysc/__init__.py create mode 100644 src/test/mysc/test_image_utils.py diff --git a/doc/changelog.md b/doc/changelog.md index 0ef8b027..3a4cea23 100644 --- a/doc/changelog.md +++ b/doc/changelog.md @@ -53,6 +53,7 @@ This version introduces comprehensive support for the AT Protocol (ATProto), ena * Mastodon: * Added support for sending quoted posts! You can now quote other users' posts from the context menu or the new Boost dialog. ([#860](https://github.com/mcv-software/twblue/issues/860)) * Fixed an issue where HTML entities were not decoded when editing a post. ([#893](https://github.com/mcv-software/twblue/issues/893)) + * Fixed an error that displayed an "Unknown image format" dialog when viewing someone's profile or updating your own, if the avatar or header was served in a format TWBlue could not read, such as WebP. ([#977](https://github.com/mcv-software/twblue/issues/977)) ## Changes in version 2026.01.13 diff --git a/src/mysc/image_utils.py b/src/mysc/image_utils.py new file mode 100644 index 00000000..9e172e5c --- /dev/null +++ b/src/mysc/image_utils.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +""" Helpers to turn arbitrary image data into wx.Image objects. + +wx only knows about the image formats its own handlers support. Fediverse +instances (and Bluesky) happily serve avatars and headers in formats such as +WebP, which makes wx.Image fail and pop up a modal "Unknown image format" +error dialog, blocking the user. Pillow understands many more formats, so we +decode everything with it and hand the raw pixel data over to wx. +""" +from io import BytesIO +from logging import getLogger +from typing import Optional, Tuple, Union + +import wx +from PIL import Image as PILImage + +log = getLogger("mysc.image_utils") + +ImageSource = Union[bytes, bytearray, str] + +#: Pillow modes that carry per pixel transparency. +_TRANSPARENT_MODES = ("RGBA", "LA", "PA") + + +def decode_image(source: ImageSource) -> Tuple[int, int, bytes, Optional[bytes]]: + """ Decodes an image into raw pixel data suitable for wx. + + :param source: Raw image bytes or a path to an image file. + :returns: A (width, height, rgb_data, alpha_data) tuple. alpha_data is None + when the image has no transparency. + :raises Exception: Whatever Pillow raises when the data cannot be decoded. + """ + if isinstance(source, (bytes, bytearray)): + source = BytesIO(bytes(source)) + with PILImage.open(source) as image: + image.load() + has_alpha = image.mode in _TRANSPARENT_MODES or (image.mode == "P" and "transparency" in image.info) + if has_alpha: + image = image.convert("RGBA") + return image.width, image.height, image.convert("RGB").tobytes(), image.getchannel("A").tobytes() + image = image.convert("RGB") + return image.width, image.height, image.tobytes(), None + + +def load_image(source: ImageSource) -> Optional[wx.Image]: + """ Builds a wx.Image from raw image bytes or a path to an image file. + + :param source: Raw image bytes or a path to an image file. + :returns: The decoded wx.Image, or None if the data could not be decoded. + Callers are expected to skip drawing when None is returned, instead of + letting wx show its own error dialog. + """ + try: + width, height, rgb_data, alpha_data = decode_image(source) + except Exception: + log.exception("Unable to decode image data.") + return None + image = wx.Image(width, height) + image.SetData(rgb_data) + if alpha_data is not None: + image.SetAlpha(alpha_data) + return image + + +def load_scaled_image(source: ImageSource, width: int, height: int) -> Optional[wx.Image]: + """ Same as load_image, but rescales the result to the given size. + + :param source: Raw image bytes or a path to an image file. + :param width: Width, in pixels, of the resulting image. + :param height: Height, in pixels, of the resulting image. + :returns: The rescaled wx.Image, or None if the data could not be decoded. + """ + image = load_image(source) + if image is None: + return None + image.Rescale(width, height, wx.IMAGE_QUALITY_HIGH) + return image diff --git a/src/test/mysc/__init__.py b/src/test/mysc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/test/mysc/test_image_utils.py b/src/test/mysc/test_image_utils.py new file mode 100644 index 00000000..3e368bde --- /dev/null +++ b/src/test/mysc/test_image_utils.py @@ -0,0 +1,97 @@ +# -*- coding: utf-8 -*- +""" Tests for mysc.image_utils. + +These are regression tests for the "Unknown image format" modal error dialog +that wx raised when a Mastodon instance served profile pictures in a format +wx cannot decode by itself, such as WebP. +""" +from io import BytesIO + +import pytest +import wx +from PIL import Image as PILImage + +from mysc import image_utils + + +@pytest.fixture(scope="module") +def app(): + """ wx needs an application object before image objects can be created. """ + application = wx.App() + yield application + application.Destroy() + + +def make_image_bytes(image_format, mode="RGB", size=(64, 32), color=(10, 20, 30)): + """ Generates an in memory image in the requested format. """ + image = PILImage.new(mode, size, color) + buffer = BytesIO() + image.save(buffer, format=image_format) + return buffer.getvalue() + + +@pytest.mark.parametrize("image_format", ["PNG", "JPEG", "GIF", "WEBP", "BMP"]) +def test_decode_image_supports_common_formats(image_format): + """ All formats served by fediverse instances should decode, WebP included. """ + width, height, rgb_data, alpha_data = image_utils.decode_image(make_image_bytes(image_format)) + assert (width, height) == (64, 32) + assert len(rgb_data) == 64 * 32 * 3 + assert alpha_data is None + + +def test_decode_image_keeps_alpha_channel(): + """ Transparent images should keep their alpha channel separated for wx. """ + data = make_image_bytes("PNG", mode="RGBA", color=(10, 20, 30, 128)) + width, height, rgb_data, alpha_data = image_utils.decode_image(data) + assert len(rgb_data) == width * height * 3 + assert alpha_data is not None + assert len(alpha_data) == width * height + assert set(alpha_data) == {128} + + +def test_decode_image_accepts_a_path(tmp_path): + """ Images picked by the user are passed around as filesystem paths. """ + path = tmp_path / "avatar.webp" + path.write_bytes(make_image_bytes("WEBP")) + width, height, rgb_data, alpha_data = image_utils.decode_image(str(path)) + assert (width, height) == (64, 32) + assert len(rgb_data) == 64 * 32 * 3 + + +def test_decode_image_raises_on_invalid_data(): + with pytest.raises(Exception): + image_utils.decode_image(b"this is definitely not an image") + + +@pytest.mark.parametrize("image_format", ["PNG", "JPEG", "GIF", "WEBP"]) +def test_load_image_returns_a_wx_image(app, image_format): + image = image_utils.load_image(make_image_bytes(image_format)) + assert image is not None + assert image.IsOk() + assert (image.GetWidth(), image.GetHeight()) == (64, 32) + + +def test_load_image_sets_alpha_on_transparent_images(app): + image = image_utils.load_image(make_image_bytes("PNG", mode="RGBA", color=(10, 20, 30, 128))) + assert image is not None + assert image.HasAlpha() + + +def test_load_image_returns_none_on_invalid_data(app): + """ Broken or unsupported data must not raise, so no error dialog is shown. """ + assert image_utils.load_image(b"not an image at all") is None + + +def test_load_image_returns_none_on_empty_data(app): + """ Servers answering with an empty body should not break profile dialogs. """ + assert image_utils.load_image(b"") is None + + +def test_load_scaled_image_rescales(app): + image = image_utils.load_scaled_image(make_image_bytes("WEBP"), 150, 150) + assert image is not None + assert (image.GetWidth(), image.GetHeight()) == (150, 150) + + +def test_load_scaled_image_returns_none_on_invalid_data(app): + assert image_utils.load_scaled_image(b"nope", 150, 150) is None diff --git a/src/wxUI/commonMessageDialogs.py b/src/wxUI/commonMessageDialogs.py index ae6a0719..bf4709e4 100644 --- a/src/wxUI/commonMessageDialogs.py +++ b/src/wxUI/commonMessageDialogs.py @@ -64,3 +64,6 @@ def common_error(message): """Show a generic error dialog with the provided message.""" dlg = wx.MessageDialog(None, message, _("Error"), wx.OK | wx.ICON_ERROR) return dlg.ShowModal() + +def unsupported_image(): + return wx.MessageDialog(None, _("TWBlue was unable to load the selected image. Please make sure the file is a valid image and try again."), _("Error"), wx.ICON_ERROR).ShowModal() diff --git a/src/wxUI/dialogs/blueski/showUserProfile.py b/src/wxUI/dialogs/blueski/showUserProfile.py index 59723015..798aca32 100644 --- a/src/wxUI/dialogs/blueski/showUserProfile.py +++ b/src/wxUI/dialogs/blueski/showUserProfile.py @@ -4,10 +4,11 @@ import logging import languageHandler import builtins import requests -from io import BytesIO from threading import Thread from pubsub import pub +from mysc.image_utils import load_scaled_image + _ = getattr(builtins, "_", lambda s: s) logger = logging.getLogger(__name__) @@ -233,14 +234,14 @@ class ShowUserProfileDialog(wx.Dialog): """Draws downloaded images on the bitmap controls.""" try: if banner_bytes: - banner_image = wx.Image(BytesIO(banner_bytes), wx.BITMAP_TYPE_ANY) - banner_image.Rescale(300, 100, wx.IMAGE_QUALITY_HIGH) - self.bannerImage.SetBitmap(banner_image.ConvertToBitmap()) + banner_image = load_scaled_image(banner_bytes, 300, 100) + if banner_image is not None: + self.bannerImage.SetBitmap(banner_image.ConvertToBitmap()) if avatar_bytes: - avatar_image = wx.Image(BytesIO(avatar_bytes), wx.BITMAP_TYPE_ANY) - avatar_image.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) - self.avatarImage.SetBitmap(avatar_image.ConvertToBitmap()) + avatar_image = load_scaled_image(avatar_bytes, 150, 150) + if avatar_image is not None: + self.avatarImage.SetBitmap(avatar_image.ConvertToBitmap()) self.Layout() self.Fit() diff --git a/src/wxUI/dialogs/mastodon/showUserProfile.py b/src/wxUI/dialogs/mastodon/showUserProfile.py index b79887c8..d3f94825 100644 --- a/src/wxUI/dialogs/mastodon/showUserProfile.py +++ b/src/wxUI/dialogs/mastodon/showUserProfile.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- """Wx dialogs for showing a user's profile.""" -from io import BytesIO from pubsub import pub from typing import Tuple import requests @@ -10,6 +9,7 @@ from logging import getLogger from threading import Thread from sessions.mastodon.utils import html_filter +from mysc.image_utils import load_scaled_image log = getLogger(__name__) @@ -229,11 +229,11 @@ class ShowUserProfile(wx.Dialog): """Draws images on the bitmap ui""" # log.debug("Drawing images...") # Header - headerImage = wx.Image(BytesIO(headerImageBytes), wx.BITMAP_TYPE_ANY) - headerImage.Rescale(300, 100, wx.IMAGE_QUALITY_HIGH) - self.headerImage.SetBitmap(headerImage.ConvertToBitmap()) + headerImage = load_scaled_image(headerImageBytes, 300, 100) + if headerImage is not None: + self.headerImage.SetBitmap(headerImage.ConvertToBitmap()) # Avatar - avatarImage = wx.Image(BytesIO(avatarImageBytes), wx.BITMAP_TYPE_ANY) - avatarImage.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) - self.avatarImage.SetBitmap(avatarImage.ConvertToBitmap()) + avatarImage = load_scaled_image(avatarImageBytes, 150, 150) + if avatarImage is not None: + self.avatarImage.SetBitmap(avatarImage.ConvertToBitmap()) diff --git a/src/wxUI/dialogs/mastodon/updateProfile.py b/src/wxUI/dialogs/mastodon/updateProfile.py index 9bbd46ef..92e81763 100644 --- a/src/wxUI/dialogs/mastodon/updateProfile.py +++ b/src/wxUI/dialogs/mastodon/updateProfile.py @@ -1,15 +1,43 @@ # -*- coding: utf-8 -*- import os -import requests -from io import BytesIO +from logging import getLogger +from typing import Optional +import requests import wx +from mysc.image_utils import load_scaled_image +from wxUI import commonMessageDialogs + +log = getLogger("wxUI.dialogs.mastodon.updateProfile") + +#: Formats accepted when the user picks a new header or avatar. +IMAGE_WILDCARD = "Images (*.png;*.jpg;*.jpeg;*.gif;*.webp)|*.png;*.jpg;*.jpeg;*.gif;*.webp" + def return_true(): return True +def download_scaled_image(url: str, width: int, height: int) -> Optional[wx.Image]: + """ Downloads an image and decodes it, scaled to the given size. + + :param url: URL of the image to download. + :param width: Width, in pixels, of the resulting image. + :param height: Height, in pixels, of the resulting image. + :returns: The decoded wx.Image, or None if it could not be downloaded or decoded. + """ + if not url: + return None + try: + response = requests.get(url, timeout=10) + response.raise_for_status() + except requests.exceptions.RequestException: + log.exception("Unable to download image from %s", url) + return None + return load_scaled_image(response.content, width, height) + + class UpdateProfileDialog(wx.Dialog): """ A dialog for user to update his / her profile details. @@ -56,16 +84,12 @@ class UpdateProfileDialog(wx.Dialog): # header header_label = wx.StaticText(panel, label=_("Header")) - try: - response = requests.get(self.header) - except requests.exceptions.RequestException: - # Create empty image - self.header_image = wx.StaticBitmap() + header_bitmap = download_scaled_image(self.header, 300, 100) + if header_bitmap is None: + # The image is unavailable or in a format we cannot decode, so show an empty placeholder. + self.header_image = wx.StaticBitmap(panel) else: - image_bytes = BytesIO(response.content) - image = wx.Image(image_bytes, wx.BITMAP_TYPE_ANY) - image.Rescale(300, 100, wx.IMAGE_QUALITY_HIGH) - self.header_image = wx.StaticBitmap(panel, bitmap=image.ConvertToBitmap()) + self.header_image = wx.StaticBitmap(panel, bitmap=header_bitmap.ConvertToBitmap()) self.header_image.AcceptsFocusFromKeyboard = return_true self.change_header = wx.Button(panel, label=_("Change &header")) @@ -77,16 +101,12 @@ class UpdateProfileDialog(wx.Dialog): # avatar avatar_label = wx.StaticText(panel, label=_("Avatar")) - try: - response = requests.get(self.avatar) - except requests.exceptions.RequestException: - # Create empty image - self.avatar_image = wx.StaticBitmap() + avatar_bitmap = download_scaled_image(self.avatar, 150, 150) + if avatar_bitmap is None: + # The image is unavailable or in a format we cannot decode, so show an empty placeholder. + self.avatar_image = wx.StaticBitmap(panel) else: - image_bytes = BytesIO(response.content) - image = wx.Image(image_bytes, wx.BITMAP_TYPE_ANY) - image.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) - self.avatar_image = wx.StaticBitmap(panel, bitmap=image.ConvertToBitmap()) + self.avatar_image = wx.StaticBitmap(panel, bitmap=avatar_bitmap.ConvertToBitmap()) self.avatar_image.AcceptsFocusFromKeyboard = return_true self.change_avatar = wx.Button(panel, label=_("Change &avatar")) @@ -163,8 +183,7 @@ class UpdateProfileDialog(wx.Dialog): def on_change_header(self, *args): """Display a dialog for the user to choose a picture and update the appropriate attribute""" - wildcard = "Images (*.png;*.jpg;*.gif)|*.png;*.jpg;*.gif" - dlg = wx.FileDialog(self, _("Select header image - max 2MB"), wildcard=wildcard) + dlg = wx.FileDialog(self, _("Select header image - max 2MB"), wildcard=IMAGE_WILDCARD) if dlg.ShowModal() == wx.CLOSE: return if os.path.getsize(dlg.GetPath()) > 2097152: @@ -178,15 +197,15 @@ class UpdateProfileDialog(wx.Dialog): return self.on_change_header() if result == wx.YES else None self.header = dlg.GetPath() - image = wx.Image(self.header, wx.BITMAP_TYPE_ANY) - image.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) + image = load_scaled_image(self.header, 150, 150) + if image is None: + return commonMessageDialogs.unsupported_image() self.header_image.SetBitmap(image.ConvertToBitmap()) def on_change_avatar(self, *args): """Display a dialog for the user to choose a picture and update the appropriate attribute""" - wildcard = "Images (*.png;*.jpg;*.gif)|*.png;*.jpg;*.gif" - dlg = wx.FileDialog(self, _("Select avatar image - max 2MB"), wildcard=wildcard) + dlg = wx.FileDialog(self, _("Select avatar image - max 2MB"), wildcard=IMAGE_WILDCARD) if dlg.ShowModal() == wx.CLOSE: return if os.path.getsize(dlg.GetPath()) > 2097152: @@ -200,6 +219,7 @@ class UpdateProfileDialog(wx.Dialog): return self.on_change_avatar() if result == wx.YES else None self.avatar = dlg.GetPath() - image = wx.Image(self.avatar, wx.BITMAP_TYPE_ANY) - image.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) + image = load_scaled_image(self.avatar, 150, 150) + if image is None: + return commonMessageDialogs.unsupported_image() self.avatar_image.SetBitmap(image.ConvertToBitmap()) From 28339c50dd84a7ffcc36aac42c5666c31ec504aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 23:33:16 +0000 Subject: [PATCH 66/71] build(deps): bump wxpython from 4.2.5 to 4.3.1 Bumps [wxpython](https://github.com/wxWidgets/Phoenix) from 4.2.5 to 4.3.1. - [Release notes](https://github.com/wxWidgets/Phoenix/releases) - [Changelog](https://github.com/wxWidgets/Phoenix/blob/master/CHANGES.rst) - [Commits](https://github.com/wxWidgets/Phoenix/compare/wxPython-4.2.5...wxPython-4.3.1) --- updated-dependencies: - dependency-name: wxpython dependency-version: 4.3.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fdd44d3a..c02ec48c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -53,7 +53,7 @@ types-python-dateutil==2.9.0.20260716 urllib3==2.7.0 win-inet-pton==1.1.0 winpaths==0.2 -wxPython==4.2.5 +wxPython==4.3.1 youtube-dl==2021.12.17 zipp==4.1.0 atproto>=0.0.69 From cde81bcd1e56615334e91525c12ca75de1327c2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 23:33:22 +0000 Subject: [PATCH 67/71] build(deps): bump markdown from 3.10.2 to 3.10.3 Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.10.2 to 3.10.3. - [Release notes](https://github.com/Python-Markdown/markdown/releases) - [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md) - [Commits](https://github.com/Python-Markdown/markdown/compare/3.10.2...3.10.3) --- updated-dependencies: - dependency-name: markdown dependency-version: 3.10.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fdd44d3a..3d3f9b00 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,7 +21,7 @@ iniconfig==2.3.0 libloader @ git+https://github.com/accessibleapps/libloader@bc94811c095b2e57a036acd88660be9a33260267 libretranslatepy==2.1.4 lief==0.15.1 -Markdown==3.10.2 +Markdown==3.10.3 Mastodon.py==2.2.1 numpy==2.5.1 oauthlib==3.3.1 From 42d8dca4cf3bc759e56b1138b8162d7813818172 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 23:35:02 +0000 Subject: [PATCH 68/71] build(deps): bump packaging from 26.2 to 26.3 Bumps [packaging](https://github.com/pypa/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](https://github.com/pypa/packaging/compare/26.2...26.3) --- updated-dependencies: - dependency-name: packaging dependency-version: '26.3' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ae962b97..80d67859 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,7 +25,7 @@ Markdown==3.10.3 Mastodon.py==2.2.1 numpy==2.5.1 oauthlib==3.3.1 -packaging==26.2 +packaging==26.3 pillow==12.3.0 platform_utils @ git+https://github.com/accessibleapps/platform_utils@e0d79f7b399c4ea677a633d2dde9202350d62c38 pluggy==1.6.0 From e1d871d970bc6a359e8f4e857477052ede12f2a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 23:35:08 +0000 Subject: [PATCH 69/71] build(deps): bump coverage from 7.15.2 to 7.15.4 Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.15.2 to 7.15.4. - [Release notes](https://github.com/coveragepy/coveragepy/releases) - [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst) - [Commits](https://github.com/coveragepy/coveragepy/compare/7.15.2...7.15.4) --- updated-dependencies: - dependency-name: coverage dependency-version: 7.15.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ae962b97..68cb27d7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ chardet==7.4.3 charset-normalizer==3.4.9 colorama==0.4.6 configobj==5.0.9 -coverage==7.15.2 +coverage==7.15.4 cx-Freeze==8.6.4 cx-Logging==3.2.1 decorator==5.3.1 From 4431960f28a91e18c180ad7e5116a43b874ae74f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 23:35:13 +0000 Subject: [PATCH 70/71] build(deps): bump types-python-dateutil Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.9.0.20260716 to 2.9.0.20260807. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-python-dateutil dependency-version: 2.9.0.20260807 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ae962b97..c607c4f7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -49,7 +49,7 @@ sniffio==1.3.1 sound_lib @ git+https://github.com/accessibleapps/sound_lib@a439f0943fb95ee7b6ba24f51a686f47c4ad66b2 sqlitedict==2.1.0 twitter-text-parser==3.0.0 -types-python-dateutil==2.9.0.20260716 +types-python-dateutil==2.9.0.20260807 urllib3==2.7.0 win-inet-pton==1.1.0 winpaths==0.2 From ed764a105c7da230dcb34405a298093fca590607 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 23:35:15 +0000 Subject: [PATCH 71/71] build(deps): bump chardet from 7.4.3 to 7.5.1 Bumps [chardet](https://github.com/chardet/chardet) from 7.4.3 to 7.5.1. - [Release notes](https://github.com/chardet/chardet/releases) - [Changelog](https://github.com/chardet/chardet/blob/main/docs/changelog.rst) - [Commits](https://github.com/chardet/chardet/compare/7.4.3...7.5.1) --- updated-dependencies: - dependency-name: chardet dependency-version: 7.5.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ae962b97..2f2b2e9c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ attrs==26.1.0 backports.functools-lru-cache==2.0.0 blurhash==1.1.5 certifi==2026.7.22 -chardet==7.4.3 +chardet==7.5.1 charset-normalizer==3.4.9 colorama==0.4.6 configobj==5.0.9