summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-04-29 06:48:21 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-04-29 06:48:21 +0000
commitc9a0fb73fcabd036c3f0558f43466774a8634b2b (patch)
tree84b12905bb413b4a8f94fef392dd422935a6427b /dev-python
parentdd72f433634be9d5f9f99cfdd2e2ff98f8d32ed4 (diff)
downloadbaldeagleos-repo-c9a0fb73fcabd036c3f0558f43466774a8634b2b.tar.gz
baldeagleos-repo-c9a0fb73fcabd036c3f0558f43466774a8634b2b.tar.xz
baldeagleos-repo-c9a0fb73fcabd036c3f0558f43466774a8634b2b.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/Faker/Faker-24.14.1.ebuild43
-rw-r--r--dev-python/Faker/Manifest1
-rw-r--r--dev-python/agate/Manifest2
-rw-r--r--dev-python/agate/agate-1.10.0.ebuild45
-rw-r--r--dev-python/agate/agate-1.9.1.ebuild45
-rw-r--r--dev-python/backports-tarfile/backports-tarfile-1.1.1.ebuild2
-rw-r--r--dev-python/blinker/Manifest1
-rw-r--r--dev-python/blinker/blinker-1.8.1.ebuild32
-rw-r--r--dev-python/evernote2/evernote2-9999.ebuild3
-rw-r--r--dev-python/jaraco-context/jaraco-context-5.3.0.ebuild2
-rw-r--r--dev-python/line-profiler/Manifest1
-rw-r--r--dev-python/line-profiler/line-profiler-4.1.3.ebuild46
-rw-r--r--dev-python/myst-parser/Manifest1
-rw-r--r--dev-python/myst-parser/myst-parser-3.0.1.ebuild58
-rw-r--r--dev-python/pyqtgraph/Manifest1
-rw-r--r--dev-python/pyqtgraph/pyqtgraph-0.13.7.ebuild74
-rw-r--r--dev-python/pytest-xdist/Manifest1
-rw-r--r--dev-python/pytest-xdist/pytest-xdist-3.6.1.ebuild43
-rw-r--r--dev-python/python-telegram-bot/files/python-telegram-bot-20.3-no-internet-tests.patch704
-rw-r--r--dev-python/python-telegram-bot/files/python-telegram-bot-20.5-no-internet-tests.patch324
-rw-r--r--dev-python/python-telegram-bot/files/python-telegram-bot-20.6-no-internet-tests.patch718
-rw-r--r--dev-python/python-telegram-bot/python-telegram-bot-20.3-r1.ebuild155
-rw-r--r--dev-python/python-telegram-bot/python-telegram-bot-20.3.ebuild56
-rw-r--r--dev-python/python-telegram-bot/python-telegram-bot-20.5-r1.ebuild150
-rw-r--r--dev-python/python-telegram-bot/python-telegram-bot-20.5.ebuild54
-rw-r--r--dev-python/python-telegram-bot/python-telegram-bot-20.6-r1.ebuild150
-rw-r--r--dev-python/python-telegram-bot/python-telegram-bot-20.6.ebuild56
-rw-r--r--dev-python/regex/Manifest1
-rw-r--r--dev-python/regex/regex-2024.4.28.ebuild37
-rw-r--r--dev-python/time-machine/Manifest2
-rw-r--r--dev-python/time-machine/files/time-machine-2.13.0-backport-pr400.patch252
-rw-r--r--dev-python/time-machine/time-machine-2.13.0.ebuild32
-rw-r--r--dev-python/time-machine/time-machine-2.14.0.ebuild30
-rw-r--r--dev-python/time-machine/time-machine-2.14.1.ebuild2
-rw-r--r--dev-python/twisted/Manifest2
-rw-r--r--dev-python/twisted/twisted-23.10.0.ebuild150
-rw-r--r--dev-python/twisted/twisted-24.2.0_rc1.ebuild152
-rw-r--r--dev-python/twisted/twisted-24.3.0.ebuild2
-rw-r--r--dev-python/zenlib/Manifest2
-rw-r--r--dev-python/zenlib/zenlib-2.0.3.ebuild (renamed from dev-python/zenlib/zenlib-2.0.1.ebuild)0
40 files changed, 802 insertions, 2630 deletions
diff --git a/dev-python/Faker/Faker-24.14.1.ebuild b/dev-python/Faker/Faker-24.14.1.ebuild
new file mode 100644
index 000000000000..b50c6e807fe1
--- /dev/null
+++ b/dev-python/Faker/Faker-24.14.1.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A Python package that generates fake data for you"
+HOMEPAGE="
+ https://github.com/joke2k/faker/
+ https://pypi.org/project/Faker/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/python-dateutil-2.4.2[${PYTHON_USEDEP}]
+ !dev-ruby/faker
+"
+BDEPEND="
+ test? (
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/pillow[${PYTHON_USEDEP},tiff]
+ dev-python/validators[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=faker.contrib.pytest.plugin
+ local EPYTEST_DESELECT=(
+ tests/providers/test_job.py::TestCsCZ::test_job
+ )
+ epytest
+}
diff --git a/dev-python/Faker/Manifest b/dev-python/Faker/Manifest
index f328105144da..aea51bc45180 100644
--- a/dev-python/Faker/Manifest
+++ b/dev-python/Faker/Manifest
@@ -1,3 +1,4 @@
DIST Faker-24.11.0.tar.gz 1726502 BLAKE2B 52429b5b0db4e1fd55d2a4b30ed007417f37e36fbec8d4fe43dea316920d85877668f4e66107011fef5874b74b25c1465fcfc0990ee3f40810df064622bb5373 SHA512 d5ee8c7c048d113c37b13608406d96966745ab46b095fcb30c9107a27a7af909c9d4d6bf9c7bb478ad7d0604b3cb6b33b93b0ba9e1a321c20870d651f57617a5
DIST Faker-24.14.0.tar.gz 1732995 BLAKE2B 809773a97b417827db72172c3ba68ccf814974771abfde1609087369667b2889c7c118c2b1f4d250c2d67252c33e384d1bc0048f7bb7c5ae790a62486650b4aa SHA512 d767d4e7c7bb96b137f82f51c20dd211b1d94c79384bdcf81f73591e68457e51f884103c6a0569264712bad334774e8f0a909e94d028b9c2ec741211ea69e77b
+DIST Faker-24.14.1.tar.gz 1759770 BLAKE2B e58feb12255de946b6c10cd9e3098f4423a47554e6aafcabb1094c7aab7e0dbbd2eea2077411094611c64b92307060c5da383390dc4a14545a9fe54b654e20e7 SHA512 d6afa8c25fe223999bdc776a7c2c12c43e9ad5886d6bb4744fe29c8b358def151b251a37a74a8576e5daedae360c19146f870a1438b63763ffb74b1577a5ae2f
DIST Faker-24.8.0.tar.gz 1725365 BLAKE2B b2646766b993d946bf7965133b7484408370a2e8bed9091b713ffd427d545bb708027066b6787a78cd675659b4d342ac86c9f611aecfb7df3d0565a8066925f0 SHA512 d8fe7e411052bec485b40540317c88ff5aeae8a32ef2e53214816b190d4730c9f5af9157ac2c66aba5fbc887e995d0238f71deefdcf67300e49586c7995b60ff
diff --git a/dev-python/agate/Manifest b/dev-python/agate/Manifest
index bcd2767c04db..2d7ff2d25d11 100644
--- a/dev-python/agate/Manifest
+++ b/dev-python/agate/Manifest
@@ -1,3 +1 @@
-DIST agate-1.10.0.tar.gz 202845 BLAKE2B da462a47d8b33e6b5948bc16a9c236ee62c92d56f49df8a7e60cebc84b2d4d828f986f6f0975d24d1d513e1e8023dd5e570f77ff6ae233533ab1ac3c512fac81 SHA512 37e09f1fcccd5df9183cfd32f13bf23efad7987a3d71600e52b1b3bc9de8669640aa50f045c975c0fc8958cbe9df193e17f0ea52c1933782cca95ac267f794f9
DIST agate-1.10.1.tar.gz 203139 BLAKE2B 656cc5f9abcc38848560bb81a9e7b1a8cf498897ea49a98bd3b44f3d625c69047ef3fa32b4a7191d8807c1bee29bd0c5a8d0ed99e1b91e30ea294b8fb436fb3d SHA512 b039fa587d1fc49277860f9876ad1f885f2530e82888ad8a32066f35e3086b5da0cb7aa9a2ed09ea7992efe649d32df27a372f85e4a06e8aca0d6ec8651567b5
-DIST agate-1.9.1.tar.gz 202303 BLAKE2B a5e62ca5fdf8dc6e1b7393da3efa0432a2d7a89bcb2af744458ae04446ea85941968f1ee75facc6b29de9fdec92f9432d2b939392edbfadc5c0598a91feb9f76 SHA512 f8bbe9ed24c786063a1d99aa408a2e5b4841dd9d804004b8c74a272d564432013e0ddebc5325e73893c53a60636d64f27f2e64ad624a468a070cf6a8833b8620
diff --git a/dev-python/agate/agate-1.10.0.ebuild b/dev-python/agate/agate-1.10.0.ebuild
deleted file mode 100644
index 2d595fd7df94..000000000000
--- a/dev-python/agate/agate-1.10.0.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2021-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A Python data analysis library that is optimized for humans instead of machines"
-HOMEPAGE="
- https://github.com/wireservice/agate/
- https://pypi.org/project/agate/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~riscv ~arm64-macos ~x64-macos"
-
-RDEPEND="
- >=dev-python/pytimeparse-1.1.5[${PYTHON_USEDEP}]
- >=dev-python/parsedatetime-2.1[${PYTHON_USEDEP}]
- >=dev-python/Babel-2.0[${PYTHON_USEDEP}]
- >=dev-python/isodate-0.5.4[${PYTHON_USEDEP}]
- >=dev-python/pyicu-2.4.2[${PYTHON_USEDEP}]
- >=dev-python/python-slugify-1.2.1[${PYTHON_USEDEP}]
- >=dev-python/leather-0.3.3-r2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- >=dev-python/cssselect-0.9.1[${PYTHON_USEDEP}]
- dev-python/lxml[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-distutils_enable_sphinx docs \
- dev-python/furo
-
-EPYTEST_DESELECT=(
- # require specific locales
- tests/test_data_types.py::TestDate::test_cast_format_locale
- tests/test_data_types.py::TestDateTime::test_cast_format_locale
-)
diff --git a/dev-python/agate/agate-1.9.1.ebuild b/dev-python/agate/agate-1.9.1.ebuild
deleted file mode 100644
index 2d595fd7df94..000000000000
--- a/dev-python/agate/agate-1.9.1.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2021-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="A Python data analysis library that is optimized for humans instead of machines"
-HOMEPAGE="
- https://github.com/wireservice/agate/
- https://pypi.org/project/agate/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~riscv ~arm64-macos ~x64-macos"
-
-RDEPEND="
- >=dev-python/pytimeparse-1.1.5[${PYTHON_USEDEP}]
- >=dev-python/parsedatetime-2.1[${PYTHON_USEDEP}]
- >=dev-python/Babel-2.0[${PYTHON_USEDEP}]
- >=dev-python/isodate-0.5.4[${PYTHON_USEDEP}]
- >=dev-python/pyicu-2.4.2[${PYTHON_USEDEP}]
- >=dev-python/python-slugify-1.2.1[${PYTHON_USEDEP}]
- >=dev-python/leather-0.3.3-r2[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- >=dev-python/cssselect-0.9.1[${PYTHON_USEDEP}]
- dev-python/lxml[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-distutils_enable_sphinx docs \
- dev-python/furo
-
-EPYTEST_DESELECT=(
- # require specific locales
- tests/test_data_types.py::TestDate::test_cast_format_locale
- tests/test_data_types.py::TestDateTime::test_cast_format_locale
-)
diff --git a/dev-python/backports-tarfile/backports-tarfile-1.1.1.ebuild b/dev-python/backports-tarfile/backports-tarfile-1.1.1.ebuild
index f78088270820..079569048ee0 100644
--- a/dev-python/backports-tarfile/backports-tarfile-1.1.1.ebuild
+++ b/dev-python/backports-tarfile/backports-tarfile-1.1.1.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~ia64 ~m68k ppc ppc64 ~riscv ~s390 x86"
+KEYWORDS="~alpha amd64 arm arm64 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
BDEPEND="
test? (
diff --git a/dev-python/blinker/Manifest b/dev-python/blinker/Manifest
index 2ae80643348a..0493698cb32f 100644
--- a/dev-python/blinker/Manifest
+++ b/dev-python/blinker/Manifest
@@ -1,2 +1,3 @@
DIST blinker-1.7.0.tar.gz 28134 BLAKE2B afff064a79ae7ab9fcee46c7eb3f6557bd9149be0a10cddfd13f969649a7aa57cec727cc6a10c54af2f676b8dc9be69beaf6521b5764555ac3e97fda7b68f5f8 SHA512 b55dc104fd69bf9f682184202f9da7cb6925e7e863f38d5ad5b4b5988b2315aae02da6f4c9f0ec34238b8d5b9b6eec52b06258d93e14416cda3e2b718d9aa60c
DIST blinker-1.8.0.tar.gz 22598 BLAKE2B 80a08bc860acc049ea4bbc30dd23f74ed7b0507a6f4dd550a0fb946233445b930732300ddc2201f6217b0557c082fbc90774d64a587ed448d839ee1b085b0c09 SHA512 1862589712c8828b2d9b3d434f213017cd81b2de100290de126a0d796920bd34ac00a667cb3bc8811071c275001e4d1a0dd0cc3563d15ef4b2139769ae3d5ef3
+DIST blinker-1.8.1.tar.gz 23191 BLAKE2B 5d1b5016b24669b8f602beb650126a4da8a7aaee6d096200634206ae3ebcdcbb5d7f3bb554269a08e0aacba0dc7dcda1a2977aeb5c8ef5f38c81dc8892d786d5 SHA512 b6adada7f314369863070e830364833aade954e4cedca390643223d632c110a314856fb1c050402cad7e64959500c4d27d149ce7b682ee6bde99a69dc66ea495
diff --git a/dev-python/blinker/blinker-1.8.1.ebuild b/dev-python/blinker/blinker-1.8.1.ebuild
new file mode 100644
index 000000000000..1313f056febb
--- /dev/null
+++ b/dev-python/blinker/blinker-1.8.1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Fast, simple object-to-object and broadcast signaling"
+HOMEPAGE="
+ https://github.com/pallets-eco/blinker/
+ https://pypi.org/project/blinker/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos"
+
+BDEPEND="
+ test? (
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p asyncio
+}
diff --git a/dev-python/evernote2/evernote2-9999.ebuild b/dev-python/evernote2/evernote2-9999.ebuild
index 2d521a3bd300..a6f5bc3afb92 100644
--- a/dev-python/evernote2/evernote2-9999.ebuild
+++ b/dev-python/evernote2/evernote2-9999.ebuild
@@ -6,6 +6,8 @@ EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+inherit git-r3 distutils-r1
+
DESCRIPTION="Unofficial Evernote SDK for Python 3"
HOMEPAGE="
https://github.com/JackonYang/evernote2
@@ -13,7 +15,6 @@ HOMEPAGE="
"
EGIT_REPO_URI="https://github.com/JackonYang/evernote2"
-inherit git-r3 distutils-r1
LICENSE="Apache-2.0"
diff --git a/dev-python/jaraco-context/jaraco-context-5.3.0.ebuild b/dev-python/jaraco-context/jaraco-context-5.3.0.ebuild
index 514efea0a813..d8257d3ea477 100644
--- a/dev-python/jaraco-context/jaraco-context-5.3.0.ebuild
+++ b/dev-python/jaraco-context/jaraco-context-5.3.0.ebuild
@@ -19,7 +19,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm arm64 ~ia64 ~m68k ppc ppc64 ~riscv ~s390 x86"
+KEYWORDS="~alpha amd64 arm arm64 ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
RDEPEND="
$(python_gen_cond_dep '
diff --git a/dev-python/line-profiler/Manifest b/dev-python/line-profiler/Manifest
index 75ea791ec272..accd2b2f3f35 100644
--- a/dev-python/line-profiler/Manifest
+++ b/dev-python/line-profiler/Manifest
@@ -1 +1,2 @@
DIST line_profiler-4.1.2.gh.tar.gz 100514 BLAKE2B 4e9fa1f2bcc39658f50b5832a8c2ee15090e03532d574cfa06db846beb191b8e2f19c82e5b03f91f2fc7b9de2a024e86909191982a03702690820972e10b7b2b SHA512 feb3f799770057b1b2dbc5601e497ce8fbc3f802e48e652b30486d453710c811bf46f3c22c0e706bbcce8cf4ef3c6e118bcc4917d8d72ff8bb0bb975324dfa16
+DIST line_profiler-4.1.3.gh.tar.gz 103226 BLAKE2B 209fe81bfd29cad1fe5866af792294d956a8f5d4d20948335a418aa0c7c3c5ff23e271c49cfc6cf228287cb1031e00a0f540fc88f52ccc3a0c329443de17b188 SHA512 cc8367b40558647f097e33152bd1d8b241720a1ed79c1f1930a7958e333cecdf38bc7d1ab0a8ebfb11e3251fa076966076ec42a8b633dfcb9de0c598c02b8b93
diff --git a/dev-python/line-profiler/line-profiler-4.1.3.ebuild b/dev-python/line-profiler/line-profiler-4.1.3.ebuild
new file mode 100644
index 000000000000..8c182439c9f6
--- /dev/null
+++ b/dev-python/line-profiler/line-profiler-4.1.3.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+MY_P=line_profiler-${PV}
+DESCRIPTION="Line-by-line profiler"
+HOMEPAGE="
+ https://github.com/pyutils/line_profiler/
+ https://pypi.org/project/line-profiler/
+"
+SRC_URI="
+ https://github.com/pyutils/line_profiler/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ dev-python/ipython[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+ test? (
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/ubelt[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+export LINE_PROFILER_BUILD_METHOD=cython
+
+python_test() {
+ cd tests || die
+ epytest
+}
diff --git a/dev-python/myst-parser/Manifest b/dev-python/myst-parser/Manifest
index f6840b6b8bd3..70070c31d18d 100644
--- a/dev-python/myst-parser/Manifest
+++ b/dev-python/myst-parser/Manifest
@@ -1,3 +1,4 @@
DIST MyST-Parser-2.0.0.gh.tar.gz 815453 BLAKE2B 8f5dd823c3c79d843b45a7a4819d5677b51a12f78db2c1ce9700eb6faa8c4f0bc167fb1d8cd947e89ffab85aec947ab527b67dc73ef4db97a393f700a4331738 SHA512 c47bdd773565e93c4714d318a70f9a8adab1be6e2a63c23175667fc4afb5da4d66b84e11176782c8202e9fd68883e74d444911ddfb0b91356c2ba07fa65f7ea4
DIST MyST-Parser-3.0.0.gh.tar.gz 823619 BLAKE2B 95d8f1c5a2ab442225079495fa4ebf3619d554bd3e6f469f6215a2458bad4fde3ca555dca591ac20537026765a8fda8a4fa9d85ca592251d9b699bba90782c59 SHA512 a91abfcb99b9b53cee6877d469c32a95c69c2fcbc9cfe6217451c0995e49dec89fe98cd5a1a5e408845985a10fbc21d4e3d8063f1d7a3d96781cb44352b3e806
+DIST MyST-Parser-3.0.1.gh.tar.gz 823769 BLAKE2B 2b8d84dc6a61abd7d168317bb80632172f01f109751b40c108828d0b2fb9c8536da32ff6c873cd3bc20b70c2613b25167eeee999ea9f2d59dfc914ac231120b2 SHA512 4c2b08e9307685c2ef02eee89becba1d6e9f67eba7ab6d5bb5b425f232ac0922bb31cb5df5d60a5ed0846a9314475bcd2cb073a0101f514455c2598340e4b441
DIST myst-parser-2.0.0-sphinx-7.2.patch 22443 BLAKE2B 994f0b2c419832e61cb006b1b45c01274970900bdcfcef3422d5331e88962a46884afbf5b27b5cb98ed349a426444ca4ff21810526cc34eae4cf074102f7b3de SHA512 707b2a69c81352d2900c91088ca137f6455e0006b0e7c798b6f03b9f0cac85489c27db662f5e6ab6e2cd52e10f1594aa54d5c6821c07c110ad138d0cf129ac65
diff --git a/dev-python/myst-parser/myst-parser-3.0.1.ebuild b/dev-python/myst-parser/myst-parser-3.0.1.ebuild
new file mode 100644
index 000000000000..116346743dd9
--- /dev/null
+++ b/dev-python/myst-parser/myst-parser-3.0.1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=flit
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1
+
+MY_P=MyST-Parser-${PV}
+DESCRIPTION="Extended commonmark compliant parser, with bridges to Sphinx"
+HOMEPAGE="
+ https://github.com/executablebooks/MyST-Parser/
+ https://pypi.org/project/myst-parser/
+"
+SRC_URI="
+ https://github.com/executablebooks/MyST-Parser/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/docutils-0.18[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ <dev-python/markdown-it-py-4[${PYTHON_USEDEP}]
+ >=dev-python/markdown-it-py-3.0[${PYTHON_USEDEP}]
+ <dev-python/mdit-py-plugins-0.5[${PYTHON_USEDEP}]
+ >=dev-python/mdit-py-plugins-0.4[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ <dev-python/sphinx-8[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-6[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/defusedxml[${PYTHON_USEDEP}]
+ <dev-python/linkify-it-py-3[${PYTHON_USEDEP}]
+ >=dev-python/linkify-it-py-2.0.0[${PYTHON_USEDEP}]
+ dev-python/pytest-regressions[${PYTHON_USEDEP}]
+ dev-python/pytest-param-files[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-7.3[${PYTHON_USEDEP}]
+ dev-python/sphinx-pytest[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ default
+
+ # unpin docutils
+ sed -i -e '/docutils/s:,<[0-9.]*::' pyproject.toml || die
+}
diff --git a/dev-python/pyqtgraph/Manifest b/dev-python/pyqtgraph/Manifest
index 409be271eee6..0ffdb525dab5 100644
--- a/dev-python/pyqtgraph/Manifest
+++ b/dev-python/pyqtgraph/Manifest
@@ -1,3 +1,4 @@
DIST pyqtgraph-0.13.3.gh.tar.gz 1423224 BLAKE2B 6c054e243a95387f18c7f18a1d4375fac3a7ae3794902f72e8d75eaeea01e031422abb7bbd84bb94977c6ce14664fed4f66ebd9892f4200c3b3ccdd598ccbfd2 SHA512 a397fcf8fc2fcc5a212df9f4cd48dc07bc1ad9eb7a9b1283488eb52c236e054b01df02d04088a9d91679c4ae3ab7796cdf95cdbad06a6a585fbbcdb921f33617
DIST pyqtgraph-0.13.4.gh.tar.gz 1438293 BLAKE2B aaa1ccdf318dfdee0dfee73f8f7be99897d58114971569eb14cd9e32f404cabe08edf20e78301152ad9663bda0d1e8c589ff6af63799bfdc87dfe12ab3ac5a63 SHA512 9c5c276d1e191bbb72ce1ce66fcf2cfe34f5f31318bbc3069c634a77b0373b2df6a7572eccb3cfec9a45d225f5f5da71d6ca9db3f9ef520eaab27b76176a8904
DIST pyqtgraph-0.13.6.gh.tar.gz 2388348 BLAKE2B e0050e240b80be2448ebb998f3ea9bd51489c906512c2cb4c3e0684d6b57d093362c60eafff4aaea9262c9fa7464ffde32e8159e2694671ffe70109b5e412eef SHA512 e77a054494a01ce848685547811ad398e0c77f747c26f9f4be798465f874bfeb23f6c2e507ad1175bb747e3c9c2f0d22747eefda476c4e8c72fa892fa0bb4730
+DIST pyqtgraph-0.13.7.gh.tar.gz 2364456 BLAKE2B 3ce1a3eb177a2a6328f1b7354bf9d4a87ffedcf4fa75fa407bd2df708b91fe98e2500364220ac7395745c69ac86f4830ea58999d05af49850edc723a6ccad5a1 SHA512 91e06e143fec4b1a6fae5cc7112a1fb6b7e74c7a38605172aacc5639eb220e30c54694e419313c7bb8368ea5c5f45f41d58e4510735e63a7d6ef03cdbb0f05e9
diff --git a/dev-python/pyqtgraph/pyqtgraph-0.13.7.ebuild b/dev-python/pyqtgraph/pyqtgraph-0.13.7.ebuild
new file mode 100644
index 000000000000..99f2c1148dd3
--- /dev/null
+++ b/dev-python/pyqtgraph/pyqtgraph-0.13.7.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+DESCRIPTION="A pure-python graphics and GUI library built on PyQt and numpy"
+HOMEPAGE="
+ https://www.pyqtgraph.org/
+ https://github.com/pyqtgraph/pyqtgraph/
+ https://pypi.org/project/pyqtgraph/
+"
+SRC_URI="
+ https://github.com/pyqtgraph/pyqtgraph/archive/${P}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S=${WORKDIR}/${PN}-${P}
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+IUSE="opengl svg"
+REQUIRED_USE="test? ( opengl svg )"
+
+RDEPEND="
+ >=dev-python/numpy-1.22[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/PyQt5[gui,widgets,opengl=,svg=,${PYTHON_USEDEP}]
+ opengl? ( dev-python/pyopengl[${PYTHON_USEDEP}] )
+"
+BDEPEND="
+ test? (
+ dev-python/h5py[${PYTHON_USEDEP}]
+ dev-python/PyQt5[testlib,${PYTHON_USEDEP}]
+ dev-python/pytest-xvfb[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+
+ if ! use opengl; then
+ rm -r pyqtgraph/opengl || die
+ fi
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # apparently fragile
+ tests/test_reload.py::test_reload
+
+ # TODO
+ tests/exporters/test_svg.py::test_plotscene
+ tests/graphicsItems/test_ROI.py::test_PolyLineROI
+
+ # pyside2 is normally skipped if not installed but these two
+ # fail if it is installed
+ # TODO: this could be due to USE flags, revisit when pyside2
+ # gains py3.9
+ 'pyqtgraph/examples/test_examples.py::testExamples[ DateAxisItem_QtDesigner.py - PySide2 ]'
+ 'pyqtgraph/examples/test_examples.py::testExamples[ designerExample.py - PySide2 ]'
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p xvfb
+}
diff --git a/dev-python/pytest-xdist/Manifest b/dev-python/pytest-xdist/Manifest
index 483e783436fd..014754a9d137 100644
--- a/dev-python/pytest-xdist/Manifest
+++ b/dev-python/pytest-xdist/Manifest
@@ -1,2 +1,3 @@
DIST pytest-xdist-3.5.0.tar.gz 78977 BLAKE2B 94feaa236728688a993ed89825f4ccd67abd7a520d235790bbfc629173e5918695ac500d04de642f07d323325972512e3ad95f0ae18a9ea239da8c2f167ab1a5 SHA512 1b6a896c6c69c110d1f3aa634740ffced570bbb788b3474687fef20147a5480a8681886b04db0413f7db68db546236f9a7f37e1592a74d1145f6eb6d876216ca
DIST pytest_xdist-3.6.0.tar.gz 83818 BLAKE2B e15935799675014a01524b850106c29b1e43efcdc965c5695ae727ba4c12af446dbaec662eb66022b3e553e311d456859e90c7cfb0f7b4d9d0f28c3184e2901a SHA512 d623d31fa3f441c7ac56b7740bdd205933b90c9784ae1bcbac185bdc2920f1a27fa51fa6e1b75392a3ae13a62c51e168925ce3040cc1f0d22e8d9906faebbc2e
+DIST pytest_xdist-3.6.1.tar.gz 84060 BLAKE2B 01392bc1f5a1587f609fc0246235457ab92ca40b3c34c660c117fae1c2b8b98dc0cde345f42951d69c3b58732e0094c7618ed570a6e3ca41165e93e2d8cf9e84 SHA512 583a78d0adc05d81458bbdd5832c239581c0fcd9cad9edfd16fa78009c005c15bffec7ed074d9e18f1542393f62d9ccb2c9e0a96d825e9cff1faec123545a2a3
diff --git a/dev-python/pytest-xdist/pytest-xdist-3.6.1.ebuild b/dev-python/pytest-xdist/pytest-xdist-3.6.1.ebuild
new file mode 100644
index 000000000000..a57260d72c26
--- /dev/null
+++ b/dev-python/pytest-xdist/pytest-xdist-3.6.1.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Distributed testing and loop-on-failing modes"
+HOMEPAGE="
+ https://pypi.org/project/pytest-xdist/
+ https://github.com/pytest-dev/pytest-xdist/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos"
+
+RDEPEND="
+ >=dev-python/execnet-2.1[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ >=dev-python/pytest-7.0.0[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ dev-python/setuptools-scm[${PYTHON_USEDEP}]
+ test? (
+ dev-python/filelock[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ # disable autoloading plugins in nested pytest calls
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ # since we disabled autoloading, force loading necessary plugins
+ local -x PYTEST_PLUGINS=xdist.plugin,xdist.looponfail
+
+ epytest -o tmp_path_retention_count=1
+}
diff --git a/dev-python/python-telegram-bot/files/python-telegram-bot-20.3-no-internet-tests.patch b/dev-python/python-telegram-bot/files/python-telegram-bot-20.3-no-internet-tests.patch
deleted file mode 100644
index 1c7d71c756ca..000000000000
--- a/dev-python/python-telegram-bot/files/python-telegram-bot-20.3-no-internet-tests.patch
+++ /dev/null
@@ -1,704 +0,0 @@
---- a/tests/_files/test_animation.py
-+++ b/tests/_files/test_animation.py
-@@ -69,11 +69,13 @@ class TestAnimationBase:
-
-
- class TestAnimationWithoutRequest(TestAnimationBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, animation):
- for attr in animation.__slots__:
- assert getattr(animation, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(animation)) == len(set(mro_slots(animation))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, animation):
- assert isinstance(animation, Animation)
- assert isinstance(animation.file_id, str)
-@@ -81,6 +83,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- assert animation.file_id
- assert animation.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, animation):
- assert animation.mime_type == self.mime_type
- assert animation.file_name.startswith("game.gif") == self.file_name.startswith("game.gif")
-@@ -98,6 +101,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- assert animation.thumb is animation.thumbnail
- check_thumb_deprecation_warnings_for_args_and_attrs(recwarn, __file__)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, animation):
- json_dict = {
- "file_id": self.animation_file_id,
-@@ -118,6 +122,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- assert animation.mime_type == self.mime_type
- assert animation.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, animation):
- animation_dict = animation.to_dict()
-
-@@ -187,6 +192,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_animation(self, monkeypatch, bot, chat_id, animation):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["animation"] == animation.file_id
-@@ -195,6 +201,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- assert await bot.send_animation(animation=animation, chat_id=chat_id)
-
- @pytest.mark.parametrize("bot_class", ["Bot", "ExtBot"])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_animation_thumb_deprecation_warning(
- self, recwarn, monkeypatch, bot_class, bot, raw_bot, chat_id, animation
- ):
-@@ -216,6 +223,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- with pytest.raises(ValueError, match="different entities as 'thumb' and 'thumbnail'"):
- await bot.send_animation(chat_id, file, thumbnail=file, thumb=different_file)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, animation):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == animation.file_id
---- a/tests/_files/test_audio.py
-+++ b/tests/_files/test_audio.py
-@@ -70,11 +70,13 @@ class TestAudioBase:
-
-
- class TestAudioWithoutRequest(TestAudioBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, audio):
- for attr in audio.__slots__:
- assert getattr(audio, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(audio)) == len(set(mro_slots(audio))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, audio):
- # Make sure file has been uploaded.
- assert isinstance(audio, Audio)
-@@ -83,6 +85,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert audio.file_id
- assert audio.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, audio):
- assert audio.duration == self.duration
- assert audio.performer is None
-@@ -98,6 +101,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert audio.thumb is audio.thumbnail
- check_thumb_deprecation_warnings_for_args_and_attrs(recwarn, __file__)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, audio):
- json_dict = {
- "file_id": self.audio_file_id,
-@@ -123,6 +127,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert json_audio.file_size == self.file_size
- assert json_audio.thumbnail == audio.thumbnail
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, audio):
- audio_dict = audio.to_dict()
-
-@@ -134,6 +139,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert audio_dict["file_size"] == audio.file_size
- assert audio_dict["file_name"] == audio.file_name
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, audio):
- a = Audio(audio.file_id, audio.file_unique_id, audio.duration)
- b = Audio("", audio.file_unique_id, audio.duration)
-@@ -154,6 +160,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert a != e
- assert hash(a) != hash(e)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_audio(self, monkeypatch, bot, chat_id, audio):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["audio"] == audio.file_id
-@@ -162,6 +169,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert await bot.send_audio(audio=audio, chat_id=chat_id)
-
- @pytest.mark.parametrize("bot_class", ["Bot", "ExtBot"])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_audio_thumb_deprecation_warning(
- self, recwarn, monkeypatch, bot_class, bot, raw_bot, chat_id, audio
- ):
-@@ -214,6 +222,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- with pytest.raises(ValueError, match="different entities as 'thumb' and 'thumbnail'"):
- await bot.send_audio(chat_id, file, thumbnail=file, thumb=different_file)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, audio):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == audio.file_id
---- a/tests/_files/test_chatphoto.py
-+++ b/tests/_files/test_chatphoto.py
-@@ -61,11 +61,13 @@ class TestChatPhotoBase:
-
-
- class TestChatPhotoWithoutRequest(TestChatPhotoBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, chat_photo):
- for attr in chat_photo.__slots__:
- assert getattr(chat_photo, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(chat_photo)) == len(set(mro_slots(chat_photo))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, chat_photo):
- json_dict = {
- "small_file_id": self.chatphoto_small_file_id,
-@@ -80,6 +82,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
- assert chat_photo.small_file_unique_id == self.chatphoto_small_file_unique_id
- assert chat_photo.big_file_unique_id == self.chatphoto_big_file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_to_dict(self, chat_photo):
- chat_photo_dict = chat_photo.to_dict()
-
-@@ -121,6 +124,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
- assert a != e
- assert hash(a) != hash(e)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_chat_photo(self, monkeypatch, bot, super_group_id, chat_photo):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.parameters["photo"] == chat_photo.to_dict()
-@@ -129,6 +133,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
- message = await bot.set_chat_photo(photo=chat_photo, chat_id=super_group_id)
- assert message
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_small_file_instance_method(self, monkeypatch, chat_photo):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == chat_photo.small_file_id
-@@ -142,6 +147,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
- monkeypatch.setattr(chat_photo.get_bot(), "get_file", make_assertion)
- assert await chat_photo.get_small_file()
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_big_file_instance_method(self, monkeypatch, chat_photo):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == chat_photo.big_file_id
---- a/tests/_files/test_document.py
-+++ b/tests/_files/test_document.py
-@@ -65,11 +65,13 @@ class TestDocumentBase:
-
-
- class TestDocumentWithoutRequest(TestDocumentBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, document):
- for attr in document.__slots__:
- assert getattr(document, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(document)) == len(set(mro_slots(document))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, document):
- assert isinstance(document, Document)
- assert isinstance(document.file_id, str)
-@@ -77,6 +79,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert document.file_id
- assert document.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, document):
- assert document.file_size == self.file_size
- assert document.mime_type == self.mime_type
-@@ -90,6 +93,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert document.thumb is document.thumbnail
- check_thumb_deprecation_warnings_for_args_and_attrs(recwarn, __file__)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, document):
- json_dict = {
- "file_id": self.document_file_id,
-@@ -109,6 +113,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert test_document.mime_type == self.mime_type
- assert test_document.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, document):
- document_dict = document.to_dict()
-
-@@ -119,6 +124,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert document_dict["mime_type"] == document.mime_type
- assert document_dict["file_size"] == document.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, document):
- a = Document(document.file_id, document.file_unique_id)
- b = Document("", document.file_unique_id)
-@@ -140,6 +146,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- await bot.send_document(chat_id=chat_id)
-
- @pytest.mark.parametrize("disable_content_type_detection", [True, False, None])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_document(
- self, monkeypatch, bot, chat_id, document, disable_content_type_detection
- ):
-@@ -161,6 +168,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert message
-
- @pytest.mark.parametrize("bot_class", ["Bot", "ExtBot"])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_document_thumb_deprecation_warning(
- self, recwarn, monkeypatch, bot_class, bot, raw_bot, chat_id, document
- ):
-@@ -208,6 +216,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- with pytest.raises(ValueError, match="different entities as 'thumb' and 'thumbnail'"):
- await bot.send_document(chat_id, file, thumbnail=file, thumb=different_file)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, document):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == document.file_id
---- a/tests/_files/test_inputmedia.py
-+++ b/tests/_files/test_inputmedia.py
-@@ -186,6 +186,7 @@ class TestInputMediaVideoWithoutRequest(TestInputMediaVideoBase):
- assert input_media_video_dict["supports_streaming"] == input_media_video.supports_streaming
- assert input_media_video_dict["has_spoiler"] == input_media_video.has_spoiler
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_video(self, video): # noqa: F811
- # fixture found in test_video
- input_media_video = InputMediaVideo(video, caption="test 3")
-@@ -258,6 +259,7 @@ class TestInputMediaPhotoWithoutRequest(TestInputMediaPhotoBase):
- ]
- assert input_media_photo_dict["has_spoiler"] == input_media_photo.has_spoiler
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_photo(self, photo): # noqa: F811
- # fixture found in test_photo
- input_media_photo = InputMediaPhoto(photo, caption="test 2")
-@@ -329,6 +331,7 @@ class TestInputMediaAnimationWithoutRequest(TestInputMediaAnimationBase):
- assert input_media_animation_dict["duration"] == input_media_animation.duration
- assert input_media_animation_dict["has_spoiler"] == input_media_animation.has_spoiler
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_animation(self, animation): # noqa: F811
- # fixture found in test_animation
- input_media_animation = InputMediaAnimation(animation, caption="test 2")
-@@ -411,6 +414,7 @@ class TestInputMediaAudioWithoutRequest(TestInputMediaAudioBase):
- ce.to_dict() for ce in input_media_audio.caption_entities
- ]
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_audio(self, audio): # noqa: F811
- # fixture found in test_audio
- input_media_audio = InputMediaAudio(audio, caption="test 3")
-@@ -496,6 +500,7 @@ class TestInputMediaDocumentWithoutRequest(TestInputMediaDocumentBase):
- == input_media_document.disable_content_type_detection
- )
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_document(self, document): # noqa: F811
- # fixture found in test_document
- input_media_document = InputMediaDocument(document, caption="test 3")
-@@ -559,6 +564,7 @@ def media_group_no_caption_only_parse_mode(photo, thumb): # noqa: F811
-
-
- class TestSendMediaGroupWithoutRequest:
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_media_group_throws_error_with_group_caption_and_individual_captions(
- self,
- bot,
---- a/tests/_files/test_photo.py
-+++ b/tests/_files/test_photo.py
-@@ -74,11 +74,13 @@ class TestPhotoBase:
-
-
- class TestPhotoWithoutRequest(TestPhotoBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, photo):
- for attr in photo.__slots__:
- assert getattr(photo, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(photo)) == len(set(mro_slots(photo))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, thumb, photo):
- # Make sure file has been uploaded.
- assert isinstance(photo, PhotoSize)
-@@ -93,6 +95,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- assert thumb.file_id
- assert thumb.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, photo, thumb):
- assert photo.width == self.width
- assert photo.height == self.height
-@@ -101,6 +104,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- assert thumb.height == 90
- assert thumb.file_size == 1477
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, photo):
- json_dict = {
- "file_id": photo.file_id,
-@@ -118,6 +122,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- assert json_photo.height == self.height
- assert json_photo.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, photo):
- photo_dict = photo.to_dict()
-
-@@ -128,6 +133,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- assert photo_dict["height"] == photo.height
- assert photo_dict["file_size"] == photo.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, photo):
- a = PhotoSize(photo.file_id, photo.file_unique_id, self.width, self.height)
- b = PhotoSize("", photo.file_unique_id, self.width, self.height)
-@@ -189,6 +195,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_photosize(self, monkeypatch, bot, chat_id, photo):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["photo"] == photo.file_id
-@@ -196,6 +203,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- monkeypatch.setattr(bot.request, "post", make_assertion)
- assert await bot.send_photo(photo=photo, chat_id=chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, photo):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == photo.file_id
---- a/tests/_files/test_sticker.py
-+++ b/tests/_files/test_sticker.py
-@@ -117,11 +117,13 @@ class TestStickerBase:
-
-
- class TestStickerWithoutRequest(TestStickerBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, sticker):
- for attr in sticker.__slots__:
- assert getattr(sticker, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(sticker)) == len(set(mro_slots(sticker))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, sticker):
- # Make sure file has been uploaded.
- assert isinstance(sticker, Sticker)
-@@ -136,6 +138,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- assert sticker.thumbnail.file_unique_id
- assert isinstance(sticker.needs_repainting, bool)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, sticker):
- assert sticker.width == self.width
- assert sticker.height == self.height
-@@ -164,6 +167,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- assert sticker.thumb is sticker.thumbnail
- check_thumb_deprecation_warnings_for_args_and_attrs(recwarn, __file__)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, sticker):
- sticker_dict = sticker.to_dict()
-
-@@ -179,6 +183,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- assert sticker_dict["type"] == sticker.type
- assert sticker_dict["needs_repainting"] == sticker.needs_repainting
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, sticker):
- json_dict = {
- "file_id": self.sticker_file_id,
-@@ -212,6 +217,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- assert json_sticker.custom_emoji_id == self.custom_emoji_id
- assert json_sticker.needs_repainting == self.needs_repainting
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, sticker):
- a = Sticker(
- sticker.file_id,
-@@ -274,6 +280,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- with pytest.raises(TypeError):
- await bot.send_sticker(chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_sticker(self, monkeypatch, bot, chat_id, sticker):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["sticker"] == sticker.file_id
-@@ -565,6 +572,7 @@ class TestStickerSetWithoutRequest(TestStickerSetBase):
- assert sticker_set.thumb is sticker_set.thumbnail
- check_thumb_deprecation_warnings_for_args_and_attrs(recwarn, __file__)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, sticker):
- name = f"test_by_{bot.username}"
- json_dict = {
-@@ -588,6 +596,7 @@ class TestStickerSetWithoutRequest(TestStickerSetBase):
- assert sticker_set.sticker_type == self.sticker_type
- assert sticker_set.api_kwargs == {"contains_masks": self.contains_masks}
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_sticker_set_to_dict(self, sticker_set):
- sticker_set_dict = sticker_set.to_dict()
-
-@@ -960,6 +969,7 @@ class TestStickerSetWithoutRequest(TestStickerSetBase):
- assert recwarn[0].filename == __file__, "incorrect stacklevel!"
- recwarn.clear()
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, sticker):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == sticker.file_id
---- a/tests/_files/test_video.py
-+++ b/tests/_files/test_video.py
-@@ -69,11 +69,13 @@ class TestVideoBase:
-
-
- class TestVideoWithoutRequest(TestVideoBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, video):
- for attr in video.__slots__:
- assert getattr(video, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(video)) == len(set(mro_slots(video))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, video):
- # Make sure file has been uploaded.
- assert isinstance(video, Video)
-@@ -88,6 +90,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- assert video.thumbnail.file_id
- assert video.thumbnail.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, video):
- assert video.width == self.width
- assert video.height == self.height
-@@ -130,6 +133,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- assert json_video.file_size == self.file_size
- assert json_video.file_name == self.file_name
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, video):
- video_dict = video.to_dict()
-
-@@ -143,6 +147,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- assert video_dict["file_size"] == video.file_size
- assert video_dict["file_name"] == video.file_name
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, video):
- a = Video(video.file_id, video.file_unique_id, self.width, self.height, self.duration)
- b = Video("", video.file_unique_id, self.width, self.height, self.duration)
-@@ -167,6 +172,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- with pytest.raises(TypeError):
- await bot.send_video(chat_id=chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_video(self, monkeypatch, bot, chat_id, video):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["video"] == video.file_id
-@@ -175,6 +181,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- assert await bot.send_video(chat_id, video=video)
-
- @pytest.mark.parametrize("bot_class", ["Bot", "ExtBot"])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_video_thumb_deprecation_warning(
- self, recwarn, monkeypatch, bot_class, bot, raw_bot, chat_id, video
- ):
-@@ -228,6 +235,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- with pytest.raises(ValueError, match="different entities as 'thumb' and 'thumbnail'"):
- await bot.send_video(chat_id, file, thumbnail=file, thumb=different_file)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, video):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == video.file_id
---- a/tests/_files/test_videonote.py
-+++ b/tests/_files/test_videonote.py
-@@ -63,11 +63,13 @@ class TestVideoNoteBase:
-
-
- class TestVideoNoteWithoutRequest(TestVideoNoteBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, video_note):
- for attr in video_note.__slots__:
- assert getattr(video_note, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(video_note)) == len(set(mro_slots(video_note))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, video_note):
- # Make sure file has been uploaded.
- assert isinstance(video_note, VideoNote)
-@@ -82,6 +84,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- assert video_note.thumbnail.file_id
- assert video_note.thumbnail.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, video_note):
- assert video_note.length == self.length
- assert video_note.duration == self.duration
-@@ -111,6 +114,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- assert json_video_note.duration == self.duration
- assert json_video_note.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, video_note):
- video_note_dict = video_note.to_dict()
-
-@@ -121,6 +125,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- assert video_note_dict["duration"] == video_note.duration
- assert video_note_dict["file_size"] == video_note.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, video_note):
- a = VideoNote(video_note.file_id, video_note.file_unique_id, self.length, self.duration)
- b = VideoNote("", video_note.file_unique_id, self.length, self.duration)
-@@ -145,6 +150,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- with pytest.raises(TypeError):
- await bot.send_video_note(chat_id=chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_video_note(self, monkeypatch, bot, chat_id, video_note):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["video_note"] == video_note.file_id
-@@ -153,6 +159,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- assert await bot.send_video_note(chat_id, video_note=video_note)
-
- @pytest.mark.parametrize("bot_class", ["Bot", "ExtBot"])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_video_note_thumb_deprecation_warning(
- self, recwarn, monkeypatch, bot_class, bot, raw_bot, chat_id, video_note
- ):
-@@ -210,6 +217,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- with pytest.raises(ValueError, match="different entities as 'thumb' and 'thumbnail'"):
- await bot.send_video_note(chat_id, file, thumbnail=file, thumb=different_file)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, video_note):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == video_note.file_id
---- a/tests/_files/test_voice.py
-+++ b/tests/_files/test_voice.py
-@@ -58,11 +58,13 @@ class TestVoiceBase:
-
-
- class TestVoiceWithoutRequest(TestVoiceBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, voice):
- for attr in voice.__slots__:
- assert getattr(voice, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(voice)) == len(set(mro_slots(voice))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_creation(self, voice):
- # Make sure file has been uploaded.
- assert isinstance(voice, Voice)
-@@ -71,6 +73,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
- assert voice.file_id
- assert voice.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, voice):
- assert voice.duration == self.duration
- assert voice.mime_type == self.mime_type
-@@ -93,6 +96,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
- assert json_voice.mime_type == self.mime_type
- assert json_voice.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, voice):
- voice_dict = voice.to_dict()
-
-@@ -103,6 +107,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
- assert voice_dict["mime_type"] == voice.mime_type
- assert voice_dict["file_size"] == voice.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, voice):
- a = Voice(voice.file_id, voice.file_unique_id, self.duration)
- b = Voice("", voice.file_unique_id, self.duration)
-@@ -135,6 +140,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
-
- assert await bot.send_voice(chat_id, voice_file, filename="custom_filename")
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_voice(self, monkeypatch, bot, chat_id, voice):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["voice"] == voice.file_id
-@@ -164,6 +170,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, voice):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == voice.file_id
---- a/tests/request/test_request.py
-+++ b/tests/request/test_request.py
-@@ -418,6 +418,7 @@ class TestHTTPXRequestWithoutRequest:
- assert self.test_flag["init"] == 1
- assert self.test_flag["shutdown"] == 1
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_multiple_init_cycles(self):
- # nothing really to assert - this should just not fail
- httpx_request = HTTPXRequest()
-@@ -430,6 +431,7 @@ class TestHTTPXRequestWithoutRequest:
- with pytest.raises(ValueError, match="`http_version` must be either"):
- HTTPXRequest(http_version="1.0")
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_http_1_response(self):
- httpx_request = HTTPXRequest(http_version="1.1")
- async with httpx_request:
---- a/tests/test_bot.py
-+++ b/tests/test_bot.py
-@@ -305,6 +305,7 @@ class TestBotWithoutRequest:
-
- assert self.test_flag == "stop"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_equality(self):
- async with make_bot(token=FALLBACKS[0]["token"]) as a, make_bot(
- token=FALLBACKS[0]["token"]
-@@ -346,6 +347,7 @@ class TestBotWithoutRequest:
- finally:
- await bot.shutdown()
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_me_and_properties(self, bot):
- get_me_bot = await ExtBot(bot.token).get_me()
-
-@@ -383,6 +385,7 @@ class TestBotWithoutRequest:
- @pytest.mark.parametrize(
- ("cls", "logger_name"), [(Bot, "telegram.Bot"), (ExtBot, "telegram.ext.ExtBot")]
- )
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_log_decorator(self, bot: PytestExtBot, cls, logger_name, caplog):
- # Second argument makes sure that we ignore logs from e.g. httpx
- with caplog.at_level(logging.DEBUG, logger="telegram"):
-@@ -1418,6 +1421,7 @@ class TestBotWithoutRequest:
-
- @pytest.mark.parametrize("json_keyboard", [True, False])
- @pytest.mark.parametrize("caption", ["<b>Test</b>", "", None])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_copy_message(
- self, monkeypatch, bot, chat_id, media_message, json_keyboard, caption
- ):
---- a/tests/test_forum.py
-+++ b/tests/test_forum.py
-@@ -73,6 +73,7 @@ async def real_topic(bot, emoji_id, forum_group_id):
- assert result is True, "Topic was not deleted"
-
-
-+@pytest.mark.skip(reason="Requires internet connection")
- class TestForumTopicWithoutRequest:
- def test_slot_behaviour(self, forum_topic_object):
- inst = forum_topic_object
-@@ -336,6 +337,7 @@ class TestForumTopicCreatedWithoutRequest:
- assert action_dict["name"] == TEST_TOPIC_NAME
- assert action_dict["icon_color"] == TEST_TOPIC_ICON_COLOR
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, emoji_id):
- a = ForumTopicCreated(name=TEST_TOPIC_NAME, icon_color=TEST_TOPIC_ICON_COLOR)
- b = ForumTopicCreated(
diff --git a/dev-python/python-telegram-bot/files/python-telegram-bot-20.5-no-internet-tests.patch b/dev-python/python-telegram-bot/files/python-telegram-bot-20.5-no-internet-tests.patch
deleted file mode 100644
index 41c9840ed60c..000000000000
--- a/dev-python/python-telegram-bot/files/python-telegram-bot-20.5-no-internet-tests.patch
+++ /dev/null
@@ -1,324 +0,0 @@
-diff --git a/tests/_files/test_animation.py b/tests/_files/test_animation.py
-index 23ec3b50..a7230495 100644
---- a/tests/_files/test_animation.py
-+++ b/tests/_files/test_animation.py
-@@ -65,6 +65,7 @@ class TestAnimationBase:
-
-
- class TestAnimationWithoutRequest(TestAnimationBase):
-+ __test__ = False
- def test_slot_behaviour(self, animation):
- for attr in animation.__slots__:
- assert getattr(animation, attr, "err") != "err", f"got extra slot '{attr}'"
-diff --git a/tests/_files/test_audio.py b/tests/_files/test_audio.py
-index 3ea394d0..6a7c47e4 100644
---- a/tests/_files/test_audio.py
-+++ b/tests/_files/test_audio.py
-@@ -66,6 +66,7 @@ class TestAudioBase:
-
-
- class TestAudioWithoutRequest(TestAudioBase):
-+ __test__ = False
- def test_slot_behaviour(self, audio):
- for attr in audio.__slots__:
- assert getattr(audio, attr, "err") != "err", f"got extra slot '{attr}'"
-@@ -196,6 +197,7 @@ class TestAudioWithoutRequest(TestAudioBase):
-
-
- class TestAudioWithRequest(TestAudioBase):
-+ __test__ = False
- async def test_send_all_args(self, bot, chat_id, audio_file, thumb_file):
- message = await bot.send_audio(
- chat_id,
-diff --git a/tests/_files/test_chatphoto.py b/tests/_files/test_chatphoto.py
-index d09876e2..65c3e213 100644
---- a/tests/_files/test_chatphoto.py
-+++ b/tests/_files/test_chatphoto.py
-@@ -61,6 +61,7 @@ class TestChatPhotoBase:
-
-
- class TestChatPhotoWithoutRequest(TestChatPhotoBase):
-+ __test__ = False
- def test_slot_behaviour(self, chat_photo):
- for attr in chat_photo.__slots__:
- assert getattr(chat_photo, attr, "err") != "err", f"got extra slot '{attr}'"
-@@ -155,6 +156,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
-
-
- class TestChatPhotoWithRequest:
-+ __test__ = False
- async def test_get_and_download(self, bot, chat_photo, tmp_file):
- tasks = {bot.get_file(chat_photo.small_file_id), bot.get_file(chat_photo.big_file_id)}
- asserts = []
-diff --git a/tests/_files/test_document.py b/tests/_files/test_document.py
-index f5ccdbeb..f22cef77 100644
---- a/tests/_files/test_document.py
-+++ b/tests/_files/test_document.py
-@@ -61,6 +61,7 @@ class TestDocumentBase:
-
-
- class TestDocumentWithoutRequest(TestDocumentBase):
-+ __test__ = False
- def test_slot_behaviour(self, document):
- for attr in document.__slots__:
- assert getattr(document, attr, "err") != "err", f"got extra slot '{attr}'"
-@@ -190,6 +191,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
-
-
- class TestDocumentWithRequest(TestDocumentBase):
-+ __test__ = False
- async def test_error_send_empty_file(self, bot, chat_id):
- with Path(os.devnull).open("rb") as f, pytest.raises(TelegramError):
- await bot.send_document(chat_id=chat_id, document=f)
-diff --git a/tests/_files/test_inputmedia.py b/tests/_files/test_inputmedia.py
-index f00dd165..bb4252f4 100644
---- a/tests/_files/test_inputmedia.py
-+++ b/tests/_files/test_inputmedia.py
-@@ -179,6 +179,7 @@ class TestInputMediaVideoWithoutRequest(TestInputMediaVideoBase):
- assert input_media_video_dict["supports_streaming"] == input_media_video.supports_streaming
- assert input_media_video_dict["has_spoiler"] == input_media_video.has_spoiler
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_video(self, video): # noqa: F811
- # fixture found in test_video
- input_media_video = InputMediaVideo(video, caption="test 3")
-@@ -242,7 +243,8 @@ class TestInputMediaPhotoWithoutRequest(TestInputMediaPhotoBase):
- ce.to_dict() for ce in input_media_photo.caption_entities
- ]
- assert input_media_photo_dict["has_spoiler"] == input_media_photo.has_spoiler
--
-+
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_photo(self, photo): # noqa: F811
- # fixture found in test_photo
- input_media_photo = InputMediaPhoto(photo, caption="test 2")
-@@ -307,7 +309,8 @@ class TestInputMediaAnimationWithoutRequest(TestInputMediaAnimationBase):
- assert input_media_animation_dict["height"] == input_media_animation.height
- assert input_media_animation_dict["duration"] == input_media_animation.duration
- assert input_media_animation_dict["has_spoiler"] == input_media_animation.has_spoiler
--
-+
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_animation(self, animation): # noqa: F811
- # fixture found in test_animation
- input_media_animation = InputMediaAnimation(animation, caption="test 2")
-@@ -375,7 +378,8 @@ class TestInputMediaAudioWithoutRequest(TestInputMediaAudioBase):
- assert input_media_audio_dict["caption_entities"] == [
- ce.to_dict() for ce in input_media_audio.caption_entities
- ]
--
-+
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_audio(self, audio): # noqa: F811
- # fixture found in test_audio
- input_media_audio = InputMediaAudio(audio, caption="test 3")
-@@ -447,6 +451,7 @@ class TestInputMediaDocumentWithoutRequest(TestInputMediaDocumentBase):
- == input_media_document.disable_content_type_detection
- )
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_document(self, document): # noqa: F811
- # fixture found in test_document
- input_media_document = InputMediaDocument(document, caption="test 3")
-@@ -502,6 +507,7 @@ def media_group_no_caption_only_parse_mode(photo, thumb): # noqa: F811
-
-
- class TestSendMediaGroupWithoutRequest:
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_media_group_throws_error_with_group_caption_and_individual_captions(
- self,
- bot,
-@@ -601,6 +607,7 @@ class CustomSequence(Sequence):
-
-
- class TestSendMediaGroupWithRequest:
-+ __test__ = False
- async def test_send_media_group_photo(self, bot, chat_id, media_group):
- messages = await bot.send_media_group(chat_id, media_group)
- assert isinstance(messages, tuple)
-diff --git a/tests/_files/test_photo.py b/tests/_files/test_photo.py
-index 9f85bec5..263eb933 100644
---- a/tests/_files/test_photo.py
-+++ b/tests/_files/test_photo.py
-@@ -74,6 +74,7 @@ class TestPhotoBase:
-
-
- class TestPhotoWithoutRequest(TestPhotoBase):
-+ __test__ = False
- def test_slot_behaviour(self, photo):
- for attr in photo.__slots__:
- assert getattr(photo, attr, "err") != "err", f"got extra slot '{attr}'"
-@@ -211,6 +212,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
-
-
- class TestPhotoWithRequest(TestPhotoBase):
-+ __test__ = False
- async def test_send_photo_all_args(self, bot, chat_id, photo_file):
- message = await bot.send_photo(
- chat_id,
-diff --git a/tests/_files/test_sticker.py b/tests/_files/test_sticker.py
-index c8b9b02a..8c8c9c56 100644
---- a/tests/_files/test_sticker.py
-+++ b/tests/_files/test_sticker.py
-@@ -115,6 +115,7 @@ class TestStickerBase:
-
-
- class TestStickerWithoutRequest(TestStickerBase):
-+ __test__ = False
- def test_slot_behaviour(self, sticker):
- for attr in sticker.__slots__:
- assert getattr(sticker, attr, "err") != "err", f"got extra slot '{attr}'"
-@@ -289,6 +290,7 @@ class TestStickerWithoutRequest(TestStickerBase):
-
-
- class TestStickerWithRequest(TestStickerBase):
-+ __test__ = False
- async def test_send_all_args(self, bot, chat_id, sticker_file, sticker):
- message = await bot.send_sticker(
- chat_id, sticker=sticker_file, disable_notification=False, protect_content=True
-@@ -526,6 +528,7 @@ class TestStickerSetBase:
-
-
- class TestStickerSetWithoutRequest(TestStickerSetBase):
-+ __test__ = False
- def test_slot_behaviour(self):
- inst = StickerSet("this", "is", True, self.stickers, True, "not")
- for attr in inst.__slots__:
-diff --git a/tests/_files/test_video.py b/tests/_files/test_video.py
-index b2ec1098..d181ffa0 100644
---- a/tests/_files/test_video.py
-+++ b/tests/_files/test_video.py
-@@ -65,6 +65,7 @@ class TestVideoBase:
-
-
- class TestVideoWithoutRequest(TestVideoBase):
-+ __test__ = False
- def test_slot_behaviour(self, video):
- for attr in video.__slots__:
- assert getattr(video, attr, "err") != "err", f"got extra slot '{attr}'"
-@@ -203,6 +204,7 @@ class TestVideoWithoutRequest(TestVideoBase):
-
-
- class TestVideoWithRequest(TestVideoBase):
-+ __test__ = False
- async def test_send_all_args(self, bot, chat_id, video_file, video, thumb_file):
- message = await bot.send_video(
- chat_id,
-diff --git a/tests/_files/test_videonote.py b/tests/_files/test_videonote.py
-index b931678d..223f2541 100644
---- a/tests/_files/test_videonote.py
-+++ b/tests/_files/test_videonote.py
-@@ -59,6 +59,7 @@ class TestVideoNoteBase:
-
-
- class TestVideoNoteWithoutRequest(TestVideoNoteBase):
-+ __test__ = False
- def test_slot_behaviour(self, video_note):
- for attr in video_note.__slots__:
- assert getattr(video_note, attr, "err") != "err", f"got extra slot '{attr}'"
-@@ -190,6 +191,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
-
-
- class TestVideoNoteWithRequest(TestVideoNoteBase):
-+ __test__ = False
- async def test_send_all_args(self, bot, chat_id, video_note_file, video_note, thumb_file):
- message = await bot.send_video_note(
- chat_id,
-diff --git a/tests/_files/test_voice.py b/tests/_files/test_voice.py
-index b29260d5..14cdbba7 100644
---- a/tests/_files/test_voice.py
-+++ b/tests/_files/test_voice.py
-@@ -58,6 +58,7 @@ class TestVoiceBase:
-
-
- class TestVoiceWithoutRequest(TestVoiceBase):
-+ __test__ = False
- def test_slot_behaviour(self, voice):
- for attr in voice.__slots__:
- assert getattr(voice, attr, "err") != "err", f"got extra slot '{attr}'"
-@@ -177,6 +178,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
-
-
- class TestVoiceWithRequest(TestVoiceBase):
-+ __test__ = False
- async def test_send_all_args(self, bot, chat_id, voice_file, voice):
- message = await bot.send_voice(
- chat_id,
-diff --git a/tests/request/test_request.py b/tests/request/test_request.py
-index 9334f7b7..fd3672b9 100644
---- a/tests/request/test_request.py
-+++ b/tests/request/test_request.py
-@@ -85,6 +85,7 @@ class TestNoSocksHTTP2WithoutRequest:
-
- @pytest.mark.skipif(not TEST_WITH_OPT_DEPS, reason="Optional dependencies not installed")
- class TestHTTP2WithRequest:
-+ __test__ = False
- @pytest.mark.parametrize("http_version", ["2", "2.0"])
- async def test_http_2_response(self, http_version):
- httpx_request = HTTPXRequest(http_version=http_version)
-@@ -352,6 +353,7 @@ class TestRequestWithoutRequest:
-
- @pytest.mark.skipif(not TEST_WITH_OPT_DEPS, reason="No need to run this twice")
- class TestHTTPXRequestWithoutRequest:
-+ __test__ = False
- test_flag = None
-
- @pytest.fixture(autouse=True)
-@@ -621,6 +623,7 @@ class TestHTTPXRequestWithoutRequest:
-
- @pytest.mark.skipif(not TEST_WITH_OPT_DEPS, reason="No need to run this twice")
- class TestHTTPXRequestWithRequest:
-+ __test__ = False
- async def test_do_request_wait_for_pool(self, httpx_request):
- """The pool logic is buried rather deeply in httpxcore, so we make actual requests here
- instead of mocking"""
-diff --git a/tests/test_bot.py b/tests/test_bot.py
-index d813d9f2..e580c68b 100644
---- a/tests/test_bot.py
-+++ b/tests/test_bot.py
-@@ -196,6 +196,7 @@ class InputMessageContentDWPP(InputMessageContent):
-
-
- class TestBotWithoutRequest:
-+ __test__ = False
- """
- Most are executed on tg.ext.ExtBot, as that class only extends the functionality of tg.bot
-
-@@ -1791,6 +1792,7 @@ class TestBotWithoutRequest:
-
-
- class TestBotWithRequest:
-+ __test__ = False
- """
- Most are executed on tg.ext.ExtBot, as that class only extends the functionality of tg.bot
-
-diff --git a/tests/test_forum.py b/tests/test_forum.py
-index d367fc9c..17c5130a 100644
---- a/tests/test_forum.py
-+++ b/tests/test_forum.py
-@@ -74,6 +74,7 @@ async def real_topic(bot, emoji_id, forum_group_id):
-
-
- class TestForumTopicWithoutRequest:
-+ __test__ = False
- def test_slot_behaviour(self, forum_topic_object):
- inst = forum_topic_object
- for attr in inst.__slots__:
-@@ -154,6 +155,7 @@ class TestForumTopicWithoutRequest:
-
-
- class TestForumMethodsWithRequest:
-+ __test__ = False
- async def test_create_forum_topic(self, real_topic):
- result = real_topic
- assert isinstance(result, ForumTopic)
-@@ -349,7 +351,8 @@ class TestForumTopicCreatedWithoutRequest:
- assert isinstance(action_dict, dict)
- assert action_dict["name"] == TEST_TOPIC_NAME
- assert action_dict["icon_color"] == TEST_TOPIC_ICON_COLOR
--
-+
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, emoji_id):
- a = ForumTopicCreated(name=TEST_TOPIC_NAME, icon_color=TEST_TOPIC_ICON_COLOR)
- b = ForumTopicCreated(
diff --git a/dev-python/python-telegram-bot/files/python-telegram-bot-20.6-no-internet-tests.patch b/dev-python/python-telegram-bot/files/python-telegram-bot-20.6-no-internet-tests.patch
deleted file mode 100644
index 8718aaa03861..000000000000
--- a/dev-python/python-telegram-bot/files/python-telegram-bot-20.6-no-internet-tests.patch
+++ /dev/null
@@ -1,718 +0,0 @@
-diff --git a/tests/_files/test_animation.py b/tests/_files/test_animation.py
-index 23ec3b50..d5b3775d 100644
---- a/tests/_files/test_animation.py
-+++ b/tests/_files/test_animation.py
-@@ -65,11 +65,13 @@ class TestAnimationBase:
-
-
- class TestAnimationWithoutRequest(TestAnimationBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, animation):
- for attr in animation.__slots__:
- assert getattr(animation, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(animation)) == len(set(mro_slots(animation))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, animation):
- assert isinstance(animation, Animation)
- assert isinstance(animation.file_id, str)
-@@ -77,11 +79,13 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- assert animation.file_id
- assert animation.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, animation):
- assert animation.mime_type == self.mime_type
- assert animation.file_name.startswith("game.gif") == self.file_name.startswith("game.gif")
- assert isinstance(animation.thumbnail, PhotoSize)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, animation):
- json_dict = {
- "file_id": self.animation_file_id,
-@@ -102,6 +106,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- assert animation.mime_type == self.mime_type
- assert animation.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, animation):
- animation_dict = animation.to_dict()
-
-@@ -171,6 +176,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_animation(self, monkeypatch, bot, chat_id, animation):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["animation"] == animation.file_id
-@@ -178,6 +184,7 @@ class TestAnimationWithoutRequest(TestAnimationBase):
- monkeypatch.setattr(bot.request, "post", make_assertion)
- assert await bot.send_animation(animation=animation, chat_id=chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, animation):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == animation.file_id
-diff --git a/tests/_files/test_audio.py b/tests/_files/test_audio.py
-index 3ea394d0..17a9388b 100644
---- a/tests/_files/test_audio.py
-+++ b/tests/_files/test_audio.py
-@@ -66,11 +66,13 @@ class TestAudioBase:
-
-
- class TestAudioWithoutRequest(TestAudioBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, audio):
- for attr in audio.__slots__:
- assert getattr(audio, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(audio)) == len(set(mro_slots(audio))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, audio):
- # Make sure file has been uploaded.
- assert isinstance(audio, Audio)
-@@ -79,6 +81,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert audio.file_id
- assert audio.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, audio):
- assert audio.duration == self.duration
- assert audio.performer is None
-@@ -89,6 +92,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert audio.thumbnail.width == self.thumb_width
- assert audio.thumbnail.height == self.thumb_height
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, audio):
- json_dict = {
- "file_id": self.audio_file_id,
-@@ -114,6 +118,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert json_audio.file_size == self.file_size
- assert json_audio.thumbnail == audio.thumbnail
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, audio):
- audio_dict = audio.to_dict()
-
-@@ -125,6 +130,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert audio_dict["file_size"] == audio.file_size
- assert audio_dict["file_name"] == audio.file_name
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, audio):
- a = Audio(audio.file_id, audio.file_unique_id, audio.duration)
- b = Audio("", audio.file_unique_id, audio.duration)
-@@ -145,6 +151,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- assert a != e
- assert hash(a) != hash(e)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_audio(self, monkeypatch, bot, chat_id, audio):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["audio"] == audio.file_id
-@@ -183,6 +190,7 @@ class TestAudioWithoutRequest(TestAudioBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, audio):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == audio.file_id
-diff --git a/tests/_files/test_chatphoto.py b/tests/_files/test_chatphoto.py
-index d09876e2..f115ea9c 100644
---- a/tests/_files/test_chatphoto.py
-+++ b/tests/_files/test_chatphoto.py
-@@ -61,11 +61,13 @@ class TestChatPhotoBase:
-
-
- class TestChatPhotoWithoutRequest(TestChatPhotoBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, chat_photo):
- for attr in chat_photo.__slots__:
- assert getattr(chat_photo, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(chat_photo)) == len(set(mro_slots(chat_photo))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, chat_photo):
- json_dict = {
- "small_file_id": self.chatphoto_small_file_id,
-@@ -80,6 +82,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
- assert chat_photo.small_file_unique_id == self.chatphoto_small_file_unique_id
- assert chat_photo.big_file_unique_id == self.chatphoto_big_file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_to_dict(self, chat_photo):
- chat_photo_dict = chat_photo.to_dict()
-
-@@ -121,6 +124,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
- assert a != e
- assert hash(a) != hash(e)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_chat_photo(self, monkeypatch, bot, super_group_id, chat_photo):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.parameters["photo"] == chat_photo.to_dict()
-@@ -129,6 +133,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
- message = await bot.set_chat_photo(photo=chat_photo, chat_id=super_group_id)
- assert message
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_small_file_instance_method(self, monkeypatch, chat_photo):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == chat_photo.small_file_id
-@@ -142,6 +147,7 @@ class TestChatPhotoWithoutRequest(TestChatPhotoBase):
- monkeypatch.setattr(chat_photo.get_bot(), "get_file", make_assertion)
- assert await chat_photo.get_small_file()
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_big_file_instance_method(self, monkeypatch, chat_photo):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == chat_photo.big_file_id
-diff --git a/tests/_files/test_document.py b/tests/_files/test_document.py
-index f5ccdbeb..11d5825e 100644
---- a/tests/_files/test_document.py
-+++ b/tests/_files/test_document.py
-@@ -61,11 +61,13 @@ class TestDocumentBase:
-
-
- class TestDocumentWithoutRequest(TestDocumentBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, document):
- for attr in document.__slots__:
- assert getattr(document, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(document)) == len(set(mro_slots(document))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, document):
- assert isinstance(document, Document)
- assert isinstance(document.file_id, str)
-@@ -73,6 +75,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert document.file_id
- assert document.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, document):
- assert document.file_size == self.file_size
- assert document.mime_type == self.mime_type
-@@ -81,6 +84,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert document.thumbnail.width == self.thumb_width
- assert document.thumbnail.height == self.thumb_height
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, document):
- json_dict = {
- "file_id": self.document_file_id,
-@@ -100,6 +104,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert test_document.mime_type == self.mime_type
- assert test_document.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, document):
- document_dict = document.to_dict()
-
-@@ -110,6 +115,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- assert document_dict["mime_type"] == document.mime_type
- assert document_dict["file_size"] == document.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, document):
- a = Document(document.file_id, document.file_unique_id)
- b = Document("", document.file_unique_id)
-@@ -131,6 +137,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- await bot.send_document(chat_id=chat_id)
-
- @pytest.mark.parametrize("disable_content_type_detection", [True, False, None])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_document(
- self, monkeypatch, bot, chat_id, document, disable_content_type_detection
- ):
-@@ -177,6 +184,7 @@ class TestDocumentWithoutRequest(TestDocumentBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, document):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == document.file_id
-diff --git a/tests/_files/test_inputmedia.py b/tests/_files/test_inputmedia.py
-index f00dd165..1f99d302 100644
---- a/tests/_files/test_inputmedia.py
-+++ b/tests/_files/test_inputmedia.py
-@@ -179,6 +179,7 @@ class TestInputMediaVideoWithoutRequest(TestInputMediaVideoBase):
- assert input_media_video_dict["supports_streaming"] == input_media_video.supports_streaming
- assert input_media_video_dict["has_spoiler"] == input_media_video.has_spoiler
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_video(self, video): # noqa: F811
- # fixture found in test_video
- input_media_video = InputMediaVideo(video, caption="test 3")
-@@ -243,6 +244,7 @@ class TestInputMediaPhotoWithoutRequest(TestInputMediaPhotoBase):
- ]
- assert input_media_photo_dict["has_spoiler"] == input_media_photo.has_spoiler
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_photo(self, photo): # noqa: F811
- # fixture found in test_photo
- input_media_photo = InputMediaPhoto(photo, caption="test 2")
-@@ -308,6 +310,7 @@ class TestInputMediaAnimationWithoutRequest(TestInputMediaAnimationBase):
- assert input_media_animation_dict["duration"] == input_media_animation.duration
- assert input_media_animation_dict["has_spoiler"] == input_media_animation.has_spoiler
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_animation(self, animation): # noqa: F811
- # fixture found in test_animation
- input_media_animation = InputMediaAnimation(animation, caption="test 2")
-@@ -376,6 +379,7 @@ class TestInputMediaAudioWithoutRequest(TestInputMediaAudioBase):
- ce.to_dict() for ce in input_media_audio.caption_entities
- ]
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_audio(self, audio): # noqa: F811
- # fixture found in test_audio
- input_media_audio = InputMediaAudio(audio, caption="test 3")
-@@ -447,6 +451,7 @@ class TestInputMediaDocumentWithoutRequest(TestInputMediaDocumentBase):
- == input_media_document.disable_content_type_detection
- )
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_with_document(self, document): # noqa: F811
- # fixture found in test_document
- input_media_document = InputMediaDocument(document, caption="test 3")
-@@ -502,6 +507,7 @@ def media_group_no_caption_only_parse_mode(photo, thumb): # noqa: F811
-
-
- class TestSendMediaGroupWithoutRequest:
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_media_group_throws_error_with_group_caption_and_individual_captions(
- self,
- bot,
-diff --git a/tests/_files/test_photo.py b/tests/_files/test_photo.py
-index 9f85bec5..cd47e48f 100644
---- a/tests/_files/test_photo.py
-+++ b/tests/_files/test_photo.py
-@@ -74,11 +74,13 @@ class TestPhotoBase:
-
-
- class TestPhotoWithoutRequest(TestPhotoBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, photo):
- for attr in photo.__slots__:
- assert getattr(photo, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(photo)) == len(set(mro_slots(photo))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, thumb, photo):
- # Make sure file has been uploaded.
- assert isinstance(photo, PhotoSize)
-@@ -93,6 +95,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- assert thumb.file_id
- assert thumb.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, photo, thumb):
- assert photo.width == self.width
- assert photo.height == self.height
-@@ -103,6 +106,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- # so far
- assert thumb.file_size in [1475, 1477]
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, photo):
- json_dict = {
- "file_id": photo.file_id,
-@@ -120,6 +124,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- assert json_photo.height == self.height
- assert json_photo.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, photo):
- photo_dict = photo.to_dict()
-
-@@ -130,6 +135,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- assert photo_dict["height"] == photo.height
- assert photo_dict["file_size"] == photo.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, photo):
- a = PhotoSize(photo.file_id, photo.file_unique_id, self.width, self.height)
- b = PhotoSize("", photo.file_unique_id, self.width, self.height)
-@@ -191,6 +197,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_photosize(self, monkeypatch, bot, chat_id, photo):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["photo"] == photo.file_id
-@@ -198,6 +205,7 @@ class TestPhotoWithoutRequest(TestPhotoBase):
- monkeypatch.setattr(bot.request, "post", make_assertion)
- assert await bot.send_photo(photo=photo, chat_id=chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, photo):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == photo.file_id
-diff --git a/tests/_files/test_sticker.py b/tests/_files/test_sticker.py
-index c8b9b02a..8d5ff664 100644
---- a/tests/_files/test_sticker.py
-+++ b/tests/_files/test_sticker.py
-@@ -115,11 +115,13 @@ class TestStickerBase:
-
-
- class TestStickerWithoutRequest(TestStickerBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, sticker):
- for attr in sticker.__slots__:
- assert getattr(sticker, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(sticker)) == len(set(mro_slots(sticker))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, sticker):
- # Make sure file has been uploaded.
- assert isinstance(sticker, Sticker)
-@@ -134,6 +136,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- assert sticker.thumbnail.file_unique_id
- assert isinstance(sticker.needs_repainting, bool)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, sticker):
- assert sticker.width == self.width
- assert sticker.height == self.height
-@@ -148,6 +151,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- # we need to be a premium TG user to send a premium sticker, so the below is not tested
- # assert sticker.premium_animation == self.premium_animation
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, sticker):
- sticker_dict = sticker.to_dict()
-
-@@ -163,6 +167,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- assert sticker_dict["type"] == sticker.type
- assert sticker_dict["needs_repainting"] == sticker.needs_repainting
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, sticker):
- json_dict = {
- "file_id": self.sticker_file_id,
-@@ -196,6 +201,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- assert json_sticker.custom_emoji_id == self.custom_emoji_id
- assert json_sticker.needs_repainting == self.needs_repainting
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, sticker):
- a = Sticker(
- sticker.file_id,
-@@ -258,6 +264,7 @@ class TestStickerWithoutRequest(TestStickerBase):
- with pytest.raises(TypeError):
- await bot.send_sticker(chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_sticker(self, monkeypatch, bot, chat_id, sticker):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["sticker"] == sticker.file_id
-@@ -532,6 +539,7 @@ class TestStickerSetWithoutRequest(TestStickerSetBase):
- assert getattr(inst, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(inst)) == len(set(mro_slots(inst))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, sticker):
- name = f"test_by_{bot.username}"
- json_dict = {
-@@ -555,6 +563,7 @@ class TestStickerSetWithoutRequest(TestStickerSetBase):
- assert sticker_set.sticker_type == self.sticker_type
- assert sticker_set.api_kwargs == {"contains_masks": self.contains_masks}
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_sticker_set_to_dict(self, sticker_set):
- sticker_set_dict = sticker_set.to_dict()
-
-@@ -726,6 +735,7 @@ class TestStickerSetWithoutRequest(TestStickerSetBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, sticker):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == sticker.file_id
-diff --git a/tests/_files/test_video.py b/tests/_files/test_video.py
-index b2ec1098..f6d4280f 100644
---- a/tests/_files/test_video.py
-+++ b/tests/_files/test_video.py
-@@ -65,11 +65,13 @@ class TestVideoBase:
-
-
- class TestVideoWithoutRequest(TestVideoBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, video):
- for attr in video.__slots__:
- assert getattr(video, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(video)) == len(set(mro_slots(video))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, video):
- # Make sure file has been uploaded.
- assert isinstance(video, Video)
-@@ -84,6 +86,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- assert video.thumbnail.file_id
- assert video.thumbnail.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, video):
- assert video.width == self.width
- assert video.height == self.height
-@@ -114,6 +117,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- assert json_video.file_size == self.file_size
- assert json_video.file_name == self.file_name
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, video):
- video_dict = video.to_dict()
-
-@@ -127,6 +131,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- assert video_dict["file_size"] == video.file_size
- assert video_dict["file_name"] == video.file_name
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, video):
- a = Video(video.file_id, video.file_unique_id, self.width, self.height, self.duration)
- b = Video("", video.file_unique_id, self.width, self.height, self.duration)
-@@ -151,6 +156,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- with pytest.raises(TypeError):
- await bot.send_video(chat_id=chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_video(self, monkeypatch, bot, chat_id, video):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["video"] == video.file_id
-@@ -190,6 +196,7 @@ class TestVideoWithoutRequest(TestVideoBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, video):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == video.file_id
-diff --git a/tests/_files/test_videonote.py b/tests/_files/test_videonote.py
-index b931678d..717d86fb 100644
---- a/tests/_files/test_videonote.py
-+++ b/tests/_files/test_videonote.py
-@@ -59,11 +59,13 @@ class TestVideoNoteBase:
-
-
- class TestVideoNoteWithoutRequest(TestVideoNoteBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, video_note):
- for attr in video_note.__slots__:
- assert getattr(video_note, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(video_note)) == len(set(mro_slots(video_note))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_creation(self, video_note):
- # Make sure file has been uploaded.
- assert isinstance(video_note, VideoNote)
-@@ -78,6 +80,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- assert video_note.thumbnail.file_id
- assert video_note.thumbnail.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, video_note):
- assert video_note.length == self.length
- assert video_note.duration == self.duration
-@@ -100,6 +103,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- assert json_video_note.duration == self.duration
- assert json_video_note.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, video_note):
- video_note_dict = video_note.to_dict()
-
-@@ -110,6 +114,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- assert video_note_dict["duration"] == video_note.duration
- assert video_note_dict["file_size"] == video_note.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, video_note):
- a = VideoNote(video_note.file_id, video_note.file_unique_id, self.length, self.duration)
- b = VideoNote("", video_note.file_unique_id, self.length, self.duration)
-@@ -134,6 +139,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- with pytest.raises(TypeError):
- await bot.send_video_note(chat_id=chat_id)
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_video_note(self, monkeypatch, bot, chat_id, video_note):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["video_note"] == video_note.file_id
-@@ -177,6 +183,7 @@ class TestVideoNoteWithoutRequest(TestVideoNoteBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, video_note):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == video_note.file_id
-diff --git a/tests/_files/test_voice.py b/tests/_files/test_voice.py
-index b29260d5..77d9f719 100644
---- a/tests/_files/test_voice.py
-+++ b/tests/_files/test_voice.py
-@@ -58,11 +58,13 @@ class TestVoiceBase:
-
-
- class TestVoiceWithoutRequest(TestVoiceBase):
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, voice):
- for attr in voice.__slots__:
- assert getattr(voice, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(voice)) == len(set(mro_slots(voice))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_creation(self, voice):
- # Make sure file has been uploaded.
- assert isinstance(voice, Voice)
-@@ -71,6 +73,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
- assert voice.file_id
- assert voice.file_unique_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_expected_values(self, voice):
- assert voice.duration == self.duration
- assert voice.mime_type == self.mime_type
-@@ -93,6 +96,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
- assert json_voice.mime_type == self.mime_type
- assert json_voice.file_size == self.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, voice):
- voice_dict = voice.to_dict()
-
-@@ -103,6 +107,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
- assert voice_dict["mime_type"] == voice.mime_type
- assert voice_dict["file_size"] == voice.file_size
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, voice):
- a = Voice(voice.file_id, voice.file_unique_id, self.duration)
- b = Voice("", voice.file_unique_id, self.duration)
-@@ -135,6 +140,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
-
- assert await bot.send_voice(chat_id, voice_file, filename="custom_filename")
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_send_with_voice(self, monkeypatch, bot, chat_id, voice):
- async def make_assertion(url, request_data: RequestData, *args, **kwargs):
- return request_data.json_parameters["voice"] == voice.file_id
-@@ -164,6 +170,7 @@ class TestVoiceWithoutRequest(TestVoiceBase):
- finally:
- bot._local_mode = False
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_file_instance_method(self, monkeypatch, voice):
- async def make_assertion(*_, **kwargs):
- return kwargs["file_id"] == voice.file_id
-diff --git a/tests/request/test_request.py b/tests/request/test_request.py
-index 9334f7b7..80aef409 100644
---- a/tests/request/test_request.py
-+++ b/tests/request/test_request.py
-@@ -422,6 +422,7 @@ class TestHTTPXRequestWithoutRequest:
- assert self.test_flag["init"] == 1
- assert self.test_flag["shutdown"] == 1
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_multiple_init_cycles(self):
- # nothing really to assert - this should just not fail
- httpx_request = HTTPXRequest()
-@@ -434,6 +435,7 @@ class TestHTTPXRequestWithoutRequest:
- with pytest.raises(ValueError, match="`http_version` must be either"):
- HTTPXRequest(http_version="1.0")
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_http_1_response(self):
- httpx_request = HTTPXRequest(http_version="1.1")
- async with httpx_request:
-diff --git a/tests/test_bot.py b/tests/test_bot.py
-index ba3c82af..86970d73 100644
---- a/tests/test_bot.py
-+++ b/tests/test_bot.py
-@@ -311,6 +311,7 @@ class TestBotWithoutRequest:
-
- assert self.test_flag == "stop"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_equality(self):
- async with make_bot(token=FALLBACKS[0]["token"]) as a, make_bot(
- token=FALLBACKS[0]["token"]
-@@ -352,6 +353,7 @@ class TestBotWithoutRequest:
- finally:
- await bot.shutdown()
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_get_me_and_properties(self, bot):
- get_me_bot = await ExtBot(bot.token).get_me()
-
-@@ -389,6 +391,7 @@ class TestBotWithoutRequest:
- @pytest.mark.parametrize(
- ("cls", "logger_name"), [(Bot, "telegram.Bot"), (ExtBot, "telegram.ext.ExtBot")]
- )
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_log_decorator(self, bot: PytestExtBot, cls, logger_name, caplog):
- # Second argument makes sure that we ignore logs from e.g. httpx
- with caplog.at_level(logging.DEBUG, logger="telegram"):
-@@ -1395,6 +1398,7 @@ class TestBotWithoutRequest:
-
- @pytest.mark.parametrize("json_keyboard", [True, False])
- @pytest.mark.parametrize("caption", ["<b>Test</b>", "", None])
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_copy_message(
- self, monkeypatch, bot, chat_id, media_message, json_keyboard, caption
- ):
-diff --git a/tests/test_forum.py b/tests/test_forum.py
-index d367fc9c..a130a5cc 100644
---- a/tests/test_forum.py
-+++ b/tests/test_forum.py
-@@ -74,18 +74,21 @@ async def real_topic(bot, emoji_id, forum_group_id):
-
-
- class TestForumTopicWithoutRequest:
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_slot_behaviour(self, forum_topic_object):
- inst = forum_topic_object
- for attr in inst.__slots__:
- assert getattr(inst, attr, "err") != "err", f"got extra slot '{attr}'"
- assert len(mro_slots(inst)) == len(set(mro_slots(inst))), "duplicate slot"
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- async def test_expected_values(self, emoji_id, forum_group_id, forum_topic_object):
- assert forum_topic_object.message_thread_id == forum_group_id
- assert forum_topic_object.icon_color == TEST_TOPIC_ICON_COLOR
- assert forum_topic_object.name == TEST_TOPIC_NAME
- assert forum_topic_object.icon_custom_emoji_id == emoji_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_de_json(self, bot, emoji_id, forum_group_id):
- assert ForumTopic.de_json(None, bot=bot) is None
-
-@@ -103,6 +106,7 @@ class TestForumTopicWithoutRequest:
- assert topic.name == TEST_TOPIC_NAME
- assert topic.icon_custom_emoji_id == emoji_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_to_dict(self, emoji_id, forum_group_id, forum_topic_object):
- topic_dict = forum_topic_object.to_dict()
-
-@@ -112,6 +116,7 @@ class TestForumTopicWithoutRequest:
- assert topic_dict["icon_color"] == TEST_TOPIC_ICON_COLOR
- assert topic_dict["icon_custom_emoji_id"] == emoji_id
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, emoji_id, forum_group_id):
- a = ForumTopic(
- message_thread_id=forum_group_id,
-@@ -350,6 +355,7 @@ class TestForumTopicCreatedWithoutRequest:
- assert action_dict["name"] == TEST_TOPIC_NAME
- assert action_dict["icon_color"] == TEST_TOPIC_ICON_COLOR
-
-+ @pytest.mark.skip(reason="Requires internet connection")
- def test_equality(self, emoji_id):
- a = ForumTopicCreated(name=TEST_TOPIC_NAME, icon_color=TEST_TOPIC_ICON_COLOR)
- b = ForumTopicCreated(
diff --git a/dev-python/python-telegram-bot/python-telegram-bot-20.3-r1.ebuild b/dev-python/python-telegram-bot/python-telegram-bot-20.3-r1.ebuild
new file mode 100644
index 000000000000..ad86317b08e6
--- /dev/null
+++ b/dev-python/python-telegram-bot/python-telegram-bot-20.3-r1.ebuild
@@ -0,0 +1,155 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Python wrapper of telegram bots API"
+HOMEPAGE="https://docs.python-telegram-bot.org https://github.com/python-telegram-bot/python-telegram-bot"
+SRC_URI="https://github.com/python-telegram-bot/python-telegram-bot/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=dev-python/cachetools-5.3.0[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-39.0.1[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.24.0[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
+ )
+"
+
+# These tests require an internet connection
+EPYTEST_DESELECT=(
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_creation
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_de_json
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_expected_values
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_get_file_instance_method
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_send_animation_thumb_deprecation_warning
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_send_with_animation
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_slot_behaviour
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_to_dict
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_creation
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_de_json
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_equality
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_expected_values
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_get_file_instance_method
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_send_audio_thumb_deprecation_warning
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_send_with_audio
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_slot_behaviour
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_to_dict
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_de_json
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_get_big_file_instance_method
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_get_small_file_instance_method
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_send_with_chat_photo
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_slot_behaviour
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_to_dict
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_creation
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_de_json
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_equality
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_expected_values
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_get_file_instance_method
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_send_document_thumb_deprecation_warning
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_send_with_document
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_slot_behaviour
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_to_dict
+ tests/_files/test_inputmedia.py::TestInputMediaAnimationWithoutRequest::test_with_animation
+ tests/_files/test_inputmedia.py::TestInputMediaAudioWithoutRequest::test_with_audio
+ tests/_files/test_inputmedia.py::TestInputMediaDocumentWithoutRequest::test_with_document
+ tests/_files/test_inputmedia.py::TestInputMediaPhotoWithoutRequest::test_with_photo
+ tests/_files/test_inputmedia.py::TestInputMediaVideoWithoutRequest::test_with_video
+ tests/_files/test_inputmedia.py::TestSendMediaGroupWithoutRequest::test_send_media_group_throws_error_with_group_caption_and_individual_captions
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_creation
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_de_json
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_equality
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_expected_values
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_get_file_instance_method
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_send_with_photosize
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_slot_behaviour
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_to_dict
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_de_json
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_get_file_instance_method
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_sticker_set_to_dict
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_creation
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_de_json
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_equality
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_expected_values
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_send_with_sticker
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_slot_behaviour
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_to_dict
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_creation
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_equality
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_expected_values
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_get_file_instance_method
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_send_video_thumb_deprecation_warning
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_send_with_video
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_slot_behaviour
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_to_dict
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_creation
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_equality
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_expected_values
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_get_file_instance_method
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_send_video_note_thumb_deprecation_warning
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_send_with_video_note
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_slot_behaviour
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_to_dict
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_creation
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_equality
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_expected_values
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_get_file_instance_method
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_send_with_voice
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_slot_behaviour
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_to_dict
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_after_shutdown
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_exceptions
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_manual_timeouts
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_params_no_data
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_params_with_data
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_return_value
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_http_1_response
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_multiple_init_cycles
+ tests/request/test_request.py::TestRequestWithoutRequest::test_chat_migrated
+ tests/request/test_request.py::TestRequestWithoutRequest::test_error_description
+ tests/request/test_request.py::TestRequestWithoutRequest::test_exceptions_in_do_request
+ tests/request/test_request.py::TestRequestWithoutRequest::test_illegal_json_response
+ tests/request/test_request.py::TestRequestWithoutRequest::test_replaced_unprintable_char
+ tests/request/test_request.py::TestRequestWithoutRequest::test_retrieve
+ tests/request/test_request.py::TestRequestWithoutRequest::test_retry_after
+ tests/request/test_request.py::TestRequestWithoutRequest::test_special_errors
+ tests/request/test_request.py::TestRequestWithoutRequest::test_timeout_propagation
+ tests/request/test_request.py::TestRequestWithoutRequest::test_unknown_request_params
+ tests/test_bot.py::TestBotWithoutRequest::test_copy_message
+ tests/test_bot.py::TestBotWithoutRequest::test_equality
+ tests/test_bot.py::TestBotWithoutRequest::test_get_me_and_properties
+ tests/test_bot.py::TestBotWithoutRequest::test_log_decorator
+ tests/test_forum.py::TestForumTopicCreatedWithoutRequest::test_equality
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_de_json
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_equality
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_expected_values
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_slot_behaviour
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_to_dict
+)
+
+distutils_enable_tests pytest
+
+# Run only the tests that don't require a connection
+python_test() {
+ epytest -m no_req
+}
+
+pkg_postinst() {
+ optfeature "using telegram.ext.JobQueue" dev-python/APScheduler
+}
diff --git a/dev-python/python-telegram-bot/python-telegram-bot-20.3.ebuild b/dev-python/python-telegram-bot/python-telegram-bot-20.3.ebuild
deleted file mode 100644
index 5b2a23ecbc50..000000000000
--- a/dev-python/python-telegram-bot/python-telegram-bot-20.3.ebuild
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-inherit distutils-r1 optfeature
-
-DESCRIPTION="Python wrapper of telegram bots API"
-HOMEPAGE="https://docs.python-telegram-bot.org https://github.com/python-telegram-bot/python-telegram-bot"
-SRC_URI="https://github.com/python-telegram-bot/python-telegram-bot/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="LGPL-3"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-RDEPEND="
- >=dev-python/cachetools-5.3.0[${PYTHON_USEDEP}]
- >=dev-python/cryptography-39.0.1[${PYTHON_USEDEP}]
- >=dev-python/httpx-0.24.0[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
- dev-python/setuptools[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/beautifulsoup4[${PYTHON_USEDEP}]
- dev-python/flaky[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${P}-no-internet-tests.patch"
-)
-
-S="${WORKDIR}/${PN}-${PV}"
-
-distutils_enable_tests pytest
-
-# Run only the tests that don't require a connection
-python_test() {
- epytest -m no_req
-}
-
-python_prepare_all() {
- distutils-r1_python_prepare_all
-}
-
-pkg_postinst() {
- optfeature_header "Optional package dependencies:"
- optfeature "using telegram.ext.JobQueue" dev-python/APScheduler
-}
diff --git a/dev-python/python-telegram-bot/python-telegram-bot-20.5-r1.ebuild b/dev-python/python-telegram-bot/python-telegram-bot-20.5-r1.ebuild
new file mode 100644
index 000000000000..a90e597a2ad5
--- /dev/null
+++ b/dev-python/python-telegram-bot/python-telegram-bot-20.5-r1.ebuild
@@ -0,0 +1,150 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Python wrapper of telegram bots API"
+HOMEPAGE="https://docs.python-telegram-bot.org https://github.com/python-telegram-bot/python-telegram-bot"
+SRC_URI="https://github.com/python-telegram-bot/python-telegram-bot/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=dev-python/cachetools-5.3.0[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-39.0.1[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.24.0[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
+ )
+"
+
+# These tests require an internet connection
+EPYTEST_DESELECT=(
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_creation
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_de_json
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_expected_values
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_get_file_instance_method
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_send_with_animation
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_slot_behaviour
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_to_dict
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_creation
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_de_json
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_equality
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_expected_values
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_get_file_instance_method
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_send_with_audio
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_slot_behaviour
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_to_dict
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_de_json
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_get_big_file_instance_method
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_get_small_file_instance_method
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_send_with_chat_photo
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_slot_behaviour
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_to_dict
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_creation
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_de_json
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_equality
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_expected_values
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_get_file_instance_method
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_send_with_document
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_slot_behaviour
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_to_dict
+ tests/_files/test_inputmedia.py::TestInputMediaAnimationWithoutRequest::test_with_animation
+ tests/_files/test_inputmedia.py::TestInputMediaAudioWithoutRequest::test_with_audio
+ tests/_files/test_inputmedia.py::TestInputMediaDocumentWithoutRequest::test_with_document
+ tests/_files/test_inputmedia.py::TestInputMediaPhotoWithoutRequest::test_with_photo
+ tests/_files/test_inputmedia.py::TestInputMediaVideoWithoutRequest::test_with_video
+ tests/_files/test_inputmedia.py::TestSendMediaGroupWithoutRequest::test_send_media_group_throws_error_with_group_caption_and_individual_captions
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_creation
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_de_json
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_equality
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_expected_values
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_get_file_instance_method
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_send_with_photosize
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_slot_behaviour
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_to_dict
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_de_json
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_get_file_instance_method
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_sticker_set_to_dict
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_creation
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_de_json
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_equality
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_expected_values
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_send_with_sticker
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_slot_behaviour
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_to_dict
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_creation
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_equality
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_expected_values
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_get_file_instance_method
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_send_with_video
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_slot_behaviour
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_to_dict
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_creation
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_equality
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_expected_values
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_get_file_instance_method
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_send_with_video_note
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_slot_behaviour
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_to_dict
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_creation
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_equality
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_expected_values
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_get_file_instance_method
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_send_with_voice
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_slot_behaviour
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_to_dict
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_after_shutdown
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_exceptions
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_manual_timeouts
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_params_no_data
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_params_with_data
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_return_value
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_http_1_response
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_multiple_init_cycles
+ tests/request/test_request.py::TestRequestWithoutRequest::test_chat_migrated
+ tests/request/test_request.py::TestRequestWithoutRequest::test_error_description
+ tests/request/test_request.py::TestRequestWithoutRequest::test_exceptions_in_do_request
+ tests/request/test_request.py::TestRequestWithoutRequest::test_illegal_json_response
+ tests/request/test_request.py::TestRequestWithoutRequest::test_replaced_unprintable_char
+ tests/request/test_request.py::TestRequestWithoutRequest::test_retrieve
+ tests/request/test_request.py::TestRequestWithoutRequest::test_retry_after
+ tests/request/test_request.py::TestRequestWithoutRequest::test_special_errors
+ tests/request/test_request.py::TestRequestWithoutRequest::test_timeout_propagation
+ tests/request/test_request.py::TestRequestWithoutRequest::test_unknown_request_params
+ tests/test_bot.py::TestBotWithoutRequest::test_copy_message
+ tests/test_bot.py::TestBotWithoutRequest::test_equality
+ tests/test_bot.py::TestBotWithoutRequest::test_get_me_and_properties
+ tests/test_bot.py::TestBotWithoutRequest::test_log_decorator
+ tests/test_forum.py::TestForumTopicCreatedWithoutRequest::test_equality
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_de_json
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_equality
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_expected_values
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_slot_behaviour
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_to_dict
+)
+
+distutils_enable_tests pytest
+
+# Run only the tests that don't require a connection
+python_test() {
+ epytest -m no_req
+}
+
+pkg_postinst() {
+ optfeature "using telegram.ext.JobQueue" dev-python/APScheduler
+}
diff --git a/dev-python/python-telegram-bot/python-telegram-bot-20.5.ebuild b/dev-python/python-telegram-bot/python-telegram-bot-20.5.ebuild
deleted file mode 100644
index 7a4637f122b6..000000000000
--- a/dev-python/python-telegram-bot/python-telegram-bot-20.5.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-inherit distutils-r1 optfeature
-
-DESCRIPTION="Python wrapper of telegram bots API"
-HOMEPAGE="https://docs.python-telegram-bot.org https://github.com/python-telegram-bot/python-telegram-bot"
-SRC_URI="https://github.com/python-telegram-bot/python-telegram-bot/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="LGPL-3"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-RDEPEND="
- >=dev-python/cachetools-5.3.0[${PYTHON_USEDEP}]
- >=dev-python/cryptography-39.0.1[${PYTHON_USEDEP}]
- >=dev-python/httpx-0.24.0[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
- dev-python/setuptools[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/beautifulsoup4[${PYTHON_USEDEP}]
- dev-python/flaky[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.2[${PYTHON_USEDEP}]
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${P}-no-internet-tests.patch"
-)
-
-distutils_enable_tests pytest
-
-# Run only the tests that don't require a connection
-python_test() {
- epytest -m no_req
-}
-
-python_prepare_all() {
- distutils-r1_python_prepare_all
-}
-
-pkg_postinst() {
- optfeature_header "Optional package dependencies:"
- optfeature "using telegram.ext.JobQueue" dev-python/APScheduler
-}
diff --git a/dev-python/python-telegram-bot/python-telegram-bot-20.6-r1.ebuild b/dev-python/python-telegram-bot/python-telegram-bot-20.6-r1.ebuild
new file mode 100644
index 000000000000..2d41c89cf44a
--- /dev/null
+++ b/dev-python/python-telegram-bot/python-telegram-bot-20.6-r1.ebuild
@@ -0,0 +1,150 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Python wrapper of telegram bots API"
+HOMEPAGE="https://docs.python-telegram-bot.org https://github.com/python-telegram-bot/python-telegram-bot"
+SRC_URI="https://github.com/python-telegram-bot/python-telegram-bot/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="
+ >=dev-python/cachetools-5.3.1[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-39.0.1[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.25.0[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.3.3[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.3.3[${PYTHON_USEDEP}]
+ )
+"
+
+# These tests require an internet connection
+EPYTEST_DESELECT=(
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_creation
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_de_json
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_expected_values
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_get_file_instance_method
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_send_with_animation
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_slot_behaviour
+ tests/_files/test_animation.py::TestAnimationWithoutRequest::test_to_dict
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_creation
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_de_json
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_equality
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_expected_values
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_get_file_instance_method
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_send_with_audio
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_slot_behaviour
+ tests/_files/test_audio.py::TestAudioWithoutRequest::test_to_dict
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_de_json
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_get_big_file_instance_method
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_get_small_file_instance_method
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_send_with_chat_photo
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_slot_behaviour
+ tests/_files/test_chatphoto.py::TestChatPhotoWithoutRequest::test_to_dict
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_creation
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_de_json
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_equality
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_expected_values
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_get_file_instance_method
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_send_with_document
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_slot_behaviour
+ tests/_files/test_document.py::TestDocumentWithoutRequest::test_to_dict
+ tests/_files/test_inputmedia.py::TestInputMediaAnimationWithoutRequest::test_with_animation
+ tests/_files/test_inputmedia.py::TestInputMediaAudioWithoutRequest::test_with_audio
+ tests/_files/test_inputmedia.py::TestInputMediaDocumentWithoutRequest::test_with_document
+ tests/_files/test_inputmedia.py::TestInputMediaPhotoWithoutRequest::test_with_photo
+ tests/_files/test_inputmedia.py::TestInputMediaVideoWithoutRequest::test_with_video
+ tests/_files/test_inputmedia.py::TestSendMediaGroupWithoutRequest::test_send_media_group_throws_error_with_group_caption_and_individual_captions
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_creation
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_de_json
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_equality
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_expected_values
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_get_file_instance_method
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_send_with_photosize
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_slot_behaviour
+ tests/_files/test_photo.py::TestPhotoWithoutRequest::test_to_dict
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_de_json
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_get_file_instance_method
+ tests/_files/test_sticker.py::TestStickerSetWithoutRequest::test_sticker_set_to_dict
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_creation
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_de_json
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_equality
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_expected_values
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_send_with_sticker
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_slot_behaviour
+ tests/_files/test_sticker.py::TestStickerWithoutRequest::test_to_dict
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_creation
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_equality
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_expected_values
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_get_file_instance_method
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_send_with_video
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_slot_behaviour
+ tests/_files/test_video.py::TestVideoWithoutRequest::test_to_dict
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_creation
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_equality
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_expected_values
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_get_file_instance_method
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_send_with_video_note
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_slot_behaviour
+ tests/_files/test_videonote.py::TestVideoNoteWithoutRequest::test_to_dict
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_creation
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_equality
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_expected_values
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_get_file_instance_method
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_send_with_voice
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_slot_behaviour
+ tests/_files/test_voice.py::TestVoiceWithoutRequest::test_to_dict
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_after_shutdown
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_exceptions
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_manual_timeouts
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_params_no_data
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_params_with_data
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_do_request_return_value
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_http_1_response
+ tests/request/test_request.py::TestHTTPXRequestWithoutRequest::test_multiple_init_cycles
+ tests/request/test_request.py::TestRequestWithoutRequest::test_chat_migrated
+ tests/request/test_request.py::TestRequestWithoutRequest::test_error_description
+ tests/request/test_request.py::TestRequestWithoutRequest::test_exceptions_in_do_request
+ tests/request/test_request.py::TestRequestWithoutRequest::test_illegal_json_response
+ tests/request/test_request.py::TestRequestWithoutRequest::test_replaced_unprintable_char
+ tests/request/test_request.py::TestRequestWithoutRequest::test_retrieve
+ tests/request/test_request.py::TestRequestWithoutRequest::test_retry_after
+ tests/request/test_request.py::TestRequestWithoutRequest::test_special_errors
+ tests/request/test_request.py::TestRequestWithoutRequest::test_timeout_propagation
+ tests/request/test_request.py::TestRequestWithoutRequest::test_unknown_request_params
+ tests/test_bot.py::TestBotWithoutRequest::test_copy_message
+ tests/test_bot.py::TestBotWithoutRequest::test_equality
+ tests/test_bot.py::TestBotWithoutRequest::test_get_me_and_properties
+ tests/test_bot.py::TestBotWithoutRequest::test_log_decorator
+ tests/test_forum.py::TestForumTopicCreatedWithoutRequest::test_equality
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_de_json
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_equality
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_expected_values
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_slot_behaviour
+ tests/test_forum.py::TestForumTopicWithoutRequest::test_to_dict
+)
+
+distutils_enable_tests pytest
+
+# Run only the tests that don't require a connection
+python_test() {
+ epytest -m no_req
+}
+
+pkg_postinst() {
+ optfeature "using telegram.ext.JobQueue" dev-python/APScheduler
+}
diff --git a/dev-python/python-telegram-bot/python-telegram-bot-20.6.ebuild b/dev-python/python-telegram-bot/python-telegram-bot-20.6.ebuild
deleted file mode 100644
index 13cf50165808..000000000000
--- a/dev-python/python-telegram-bot/python-telegram-bot-20.6.ebuild
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-inherit distutils-r1 optfeature
-
-DESCRIPTION="Python wrapper of telegram bots API"
-HOMEPAGE="https://docs.python-telegram-bot.org https://github.com/python-telegram-bot/python-telegram-bot"
-SRC_URI="https://github.com/python-telegram-bot/python-telegram-bot/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="LGPL-3"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-RDEPEND="
- >=dev-python/cachetools-5.3.1[${PYTHON_USEDEP}]
- >=dev-python/cryptography-39.0.1[${PYTHON_USEDEP}]
- >=dev-python/httpx-0.25.0[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.3.3[${PYTHON_USEDEP}]
- dev-python/setuptools[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/beautifulsoup4[${PYTHON_USEDEP}]
- dev-python/flaky[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- dev-python/pytz[${PYTHON_USEDEP}]
- >=dev-python/tornado-6.3.3[${PYTHON_USEDEP}]
- )
-"
-
-PATCHES=(
- "${FILESDIR}/${P}-no-internet-tests.patch"
-)
-
-S="${WORKDIR}/${PN}-${PV}"
-
-distutils_enable_tests pytest
-
-# Run only the tests that don't require a connection
-python_test() {
- epytest -m no_req
-}
-
-python_prepare_all() {
- distutils-r1_python_prepare_all
-}
-
-pkg_postinst() {
- optfeature_header "Optional package dependencies:"
- optfeature "using telegram.ext.JobQueue" dev-python/APScheduler
-}
diff --git a/dev-python/regex/Manifest b/dev-python/regex/Manifest
index e9f2167eb3fd..8da55fb8fefa 100644
--- a/dev-python/regex/Manifest
+++ b/dev-python/regex/Manifest
@@ -1,2 +1,3 @@
DIST regex-2023.12.25.tar.gz 394706 BLAKE2B 742abe3a3515b527465d81df8fd9404aaa6aa1545e3e6a8c4a87d72d41138caf7f63bceae8bf06b3576656a6b5577bfec51629a60fe837ad2f3a4cd60a08ac06 SHA512 ecc5916633e2acb8d8a0c5ccfdc1c612f673546c42271d5627aa92a163fa6c8fd5a30ed734a02c23fa64807aaf2f883fa51175b7f482888631f699e77d1c0e15
DIST regex-2024.4.16.tar.gz 394724 BLAKE2B 75df2f861116ebf37845abdb0883774ac53d7d61e4cdf18128c74b4c1d5a55b86bfd447616cdb8fc14239c0a5aeaa2c7e59cb0b2b365b57185d785a3728e6dce SHA512 15da80751f1a4b000e4ea59887963aec939fc6431a672391a7f882e05ff15934b89e191d19fd388b9dd6032d2ea44f8511c0ce238e5f1d8db102a89d1866f456
+DIST regex-2024.4.28.tar.gz 394810 BLAKE2B 6fa882219feb783c7340015769655e05257ddd17a6e34f830a60f319afca5face64de72511b0bef0820ace4f379ff5ad557bbdfef414cc0371136a79949a7e13 SHA512 3a05ea8f197d6924f6fd3db2609c1ca13f452f1bc598f8d6ec2ee45a0e5966655e93f039cc76e1cdc714856fa5d21e64aae8d83063ebafdd85e44c82e65f8c50
diff --git a/dev-python/regex/regex-2024.4.28.ebuild b/dev-python/regex/regex-2024.4.28.ebuild
new file mode 100644
index 000000000000..39e9de8e2592
--- /dev/null
+++ b/dev-python/regex/regex-2024.4.28.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+# pypy isn't supported upstream because of its UTF8 representation for strings
+# See https://github.com/mrabarnett/mrab-regex/issues/521#issuecomment-1936260187.
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Alternative regular expression module to replace re"
+HOMEPAGE="
+ https://github.com/mrabarnett/mrab-regex/
+ https://pypi.org/project/regex/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+IUSE="doc"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2021.4.4-pypy3-fix-test_empty_array.patch"
+ "${FILESDIR}/${PN}-2021.4.4-pypy3-fix-test_issue_18468.patch"
+)
+
+distutils_enable_tests unittest
+
+python_install_all() {
+ use doc && local HTML_DOCS=( docs/Features.html )
+ local DOCS=( README.rst docs/*.rst )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/time-machine/Manifest b/dev-python/time-machine/Manifest
index c04e351318ca..8c94468934a9 100644
--- a/dev-python/time-machine/Manifest
+++ b/dev-python/time-machine/Manifest
@@ -1,3 +1 @@
-DIST time-machine-2.13.0.gh.tar.gz 28747 BLAKE2B 88836d2b9ad34c8d256b576ab6b2bfe263232fb50d2e95f13049f84dbc838283811ebc54c5bb68493ef966e64777983ab6bcb7fafccda6dc74e00d3bb6a2108f SHA512 26a852d93633e037585ec8fcd563c86af8d977a87633dbeb66cf23c9ca49ca0ae536bdcdcdf809ee2ab423c197610c630d506bc3bf4f13c373d806cee2d8c598
-DIST time-machine-2.14.0.gh.tar.gz 29270 BLAKE2B 55050879fe221204f14c77a90190c2ef5232e182d281885d60686230365b9249f8e90ec80e7a842d43a2c52b72bf463cd59b4a22fdc8b0cd25c5ad5b0306fc98 SHA512 7bc9d6d53da68c18ccdae1af6282ea482a0758a4fda9acabe9fa39bfe217a57e65b8041ae4436b7cef2c0b39835f3aae9590515d200b9b2962bd0610370e8454
DIST time-machine-2.14.1.gh.tar.gz 29600 BLAKE2B b118e3a2f08f75cc6cd89181a9e533c89bc6e5312a520b2a854fb8aa7ac59f1570e48a85788261f781ef83f9864380318074724f6eadab9cda7a3374b2322e7d SHA512 42a127e2dc5a86e33896010e6d141fc9248fe685d3477ec71ec8a72315914cea99ae4a4d6623a59fd69505d935d2feadcfd831a7fff5617c3f98a93d48652ecf
diff --git a/dev-python/time-machine/files/time-machine-2.13.0-backport-pr400.patch b/dev-python/time-machine/files/time-machine-2.13.0-backport-pr400.patch
deleted file mode 100644
index b7fa55c2e267..000000000000
--- a/dev-python/time-machine/files/time-machine-2.13.0-backport-pr400.patch
+++ /dev/null
@@ -1,252 +0,0 @@
-https://bugs.gentoo.org/show_bug.cgi?id=912709
-https://github.com/adamchainz/time-machine/pull/400
-
-From b489a478193982c17cf7847d32cae2b53a904222 Mon Sep 17 00:00:00 2001
-From: matoro <matoro@users.noreply.github.com>
-Date: Thu, 9 Nov 2023 13:03:49 -0500
-Subject: [PATCH 1/2] Fix tests on platforms with low clock resolution
-
-On platforms without a high-resolution clock, such as Alpha and PA-RISC
-is is likely that two sequential calls to time.time() will return the
-same value if the execution time is not sufficient to allow one full
-clock resolution cycle to pass. This adds sleeps of one cycle to
-enforce that the minimum amount of time to guarantee a clock change has
-passed.
-
-On systems with high-resolution clocks, clock_getres() will return 1ns;
-in reality the sleep will take longer than 1ns to execute but should
-still be a negligible amount of time.
----
- tests/test_time_machine.py | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/tests/test_time_machine.py b/tests/test_time_machine.py
-index fe98fb7..7b5abbe 100644
---- a/tests/test_time_machine.py
-+++ b/tests/test_time_machine.py
-@@ -155,8 +155,10 @@ def test_time_clock_gettime_realtime():
- @py_have_clock_gettime
- def test_time_clock_gettime_monotonic_unaffected():
- start = time.clock_gettime(time.CLOCK_MONOTONIC)
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- with time_machine.travel(EPOCH + 180.0):
- frozen = time.clock_gettime(time.CLOCK_MONOTONIC)
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert isinstance(frozen, float)
- assert frozen > start
-
-@@ -169,6 +171,7 @@ def test_time_clock_gettime_monotonic_unaffected():
- def test_time_clock_gettime_ns_realtime():
- with time_machine.travel(EPOCH + 190.0):
- first = time.clock_gettime_ns(time.CLOCK_REALTIME)
-+ time.sleep(time.clock_getres(time.CLOCK_REALTIME))
- assert isinstance(first, int)
- assert first == int((EPOCH + 190.0) * NANOSECONDS_PER_SECOND)
- second = time.clock_gettime_ns(time.CLOCK_REALTIME)
-@@ -182,8 +185,10 @@ def test_time_clock_gettime_ns_realtime():
- @py_have_clock_gettime
- def test_time_clock_gettime_ns_monotonic_unaffected():
- start = time.clock_gettime_ns(time.CLOCK_MONOTONIC)
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- with time_machine.travel(EPOCH + 190.0):
- frozen = time.clock_gettime_ns(time.CLOCK_MONOTONIC)
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert isinstance(frozen, int)
- assert frozen > start
-
-@@ -279,6 +284,7 @@ def test_time_strftime_format_t():
- def test_time_time():
- with time_machine.travel(EPOCH):
- first = time.time()
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert isinstance(first, float)
- assert first == EPOCH
- second = time.time()
-@@ -300,6 +306,7 @@ def test_time_time():
- def test_time_time_windows():
- with time_machine.travel(EPOCH):
- first = time.time()
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert isinstance(first, float)
- assert first == windows_epoch_in_posix
-
-@@ -316,6 +323,7 @@ def test_time_time_no_tick():
- def test_time_time_ns():
- with time_machine.travel(EPOCH + 150.0):
- first = time.time_ns()
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert isinstance(first, int)
- assert first == int((EPOCH + 150.0) * NANOSECONDS_PER_SECOND)
- second = time.time_ns()
-@@ -561,6 +569,7 @@ def test_method_decorator(self):
- @time_machine.travel(EPOCH + 95.0)
- class UnitTestClassTests(TestCase):
- def test_class_decorator(self):
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert EPOCH + 95.0 < time.time() < EPOCH + 96.0
-
- @time_machine.travel(EPOCH + 25.0)
-@@ -578,6 +587,7 @@ def setUpClass(cls):
- cls.custom_setupclass_ran = True
-
- def test_class_decorator(self):
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert EPOCH + 95.0 < time.time() < EPOCH + 96.0
- assert self.custom_setupclass_ran
-
-@@ -639,6 +649,7 @@ def test_move_to_datetime():
- traveller.move_to(EPOCH_PLUS_ONE_YEAR_DATETIME)
-
- first = time.time()
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert first == EPOCH_PLUS_ONE_YEAR
-
- second = time.time()
-@@ -706,6 +717,7 @@ def test_move_to_datetime_change_tick_on():
- with time_machine.travel(EPOCH, tick=False) as traveller:
- traveller.move_to(EPOCH_PLUS_ONE_YEAR_DATETIME, tick=True)
- assert time.time() == EPOCH_PLUS_ONE_YEAR
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert time.time() > EPOCH_PLUS_ONE_YEAR
-
-
-@@ -756,6 +768,7 @@ def test_fixture_used_tick_false(time_machine):
- def test_fixture_used_tick_true(time_machine):
- time_machine.move_to(EPOCH, tick=True)
- original = time.time()
-+ time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
- assert original == EPOCH
- assert original < time.time() < EPOCH + 10.0
-
-
-From 9e84584325ec06eb997716b6a0f42e9ca6540994 Mon Sep 17 00:00:00 2001
-From: matoro <matoro@users.noreply.github.com>
-Date: Fri, 10 Nov 2023 11:06:23 -0500
-Subject: [PATCH 2/2] Wrap sleep calls in "sleep_one_cycle" function
-
----
- tests/test_time_machine.py | 30 +++++++++++++++++-------------
- 1 file changed, 17 insertions(+), 13 deletions(-)
-
-diff --git a/tests/test_time_machine.py b/tests/test_time_machine.py
-index 7b5abbe..163ec2b 100644
---- a/tests/test_time_machine.py
-+++ b/tests/test_time_machine.py
-@@ -38,6 +38,10 @@
- )
-
-
-+def sleep_one_cycle(clock: int) -> None:
-+ time.sleep(time.clock_getres(clock))
-+
-+
- @contextmanager
- def change_local_timezone(local_tz: str | None) -> typing.Iterator[None]:
- orig_tz = os.environ["TZ"]
-@@ -155,10 +159,10 @@ def test_time_clock_gettime_realtime():
- @py_have_clock_gettime
- def test_time_clock_gettime_monotonic_unaffected():
- start = time.clock_gettime(time.CLOCK_MONOTONIC)
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- with time_machine.travel(EPOCH + 180.0):
- frozen = time.clock_gettime(time.CLOCK_MONOTONIC)
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert isinstance(frozen, float)
- assert frozen > start
-
-@@ -171,7 +175,7 @@ def test_time_clock_gettime_monotonic_unaffected():
- def test_time_clock_gettime_ns_realtime():
- with time_machine.travel(EPOCH + 190.0):
- first = time.clock_gettime_ns(time.CLOCK_REALTIME)
-- time.sleep(time.clock_getres(time.CLOCK_REALTIME))
-+ sleep_one_cycle(time.CLOCK_REALTIME)
- assert isinstance(first, int)
- assert first == int((EPOCH + 190.0) * NANOSECONDS_PER_SECOND)
- second = time.clock_gettime_ns(time.CLOCK_REALTIME)
-@@ -185,10 +189,10 @@ def test_time_clock_gettime_ns_realtime():
- @py_have_clock_gettime
- def test_time_clock_gettime_ns_monotonic_unaffected():
- start = time.clock_gettime_ns(time.CLOCK_MONOTONIC)
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- with time_machine.travel(EPOCH + 190.0):
- frozen = time.clock_gettime_ns(time.CLOCK_MONOTONIC)
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert isinstance(frozen, int)
- assert frozen > start
-
-@@ -284,7 +288,7 @@ def test_time_strftime_format_t():
- def test_time_time():
- with time_machine.travel(EPOCH):
- first = time.time()
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert isinstance(first, float)
- assert first == EPOCH
- second = time.time()
-@@ -306,7 +310,7 @@ def test_time_time():
- def test_time_time_windows():
- with time_machine.travel(EPOCH):
- first = time.time()
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert isinstance(first, float)
- assert first == windows_epoch_in_posix
-
-@@ -323,7 +327,7 @@ def test_time_time_no_tick():
- def test_time_time_ns():
- with time_machine.travel(EPOCH + 150.0):
- first = time.time_ns()
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert isinstance(first, int)
- assert first == int((EPOCH + 150.0) * NANOSECONDS_PER_SECOND)
- second = time.time_ns()
-@@ -569,7 +573,7 @@ def test_method_decorator(self):
- @time_machine.travel(EPOCH + 95.0)
- class UnitTestClassTests(TestCase):
- def test_class_decorator(self):
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert EPOCH + 95.0 < time.time() < EPOCH + 96.0
-
- @time_machine.travel(EPOCH + 25.0)
-@@ -587,7 +591,7 @@ def setUpClass(cls):
- cls.custom_setupclass_ran = True
-
- def test_class_decorator(self):
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert EPOCH + 95.0 < time.time() < EPOCH + 96.0
- assert self.custom_setupclass_ran
-
-@@ -649,7 +653,7 @@ def test_move_to_datetime():
- traveller.move_to(EPOCH_PLUS_ONE_YEAR_DATETIME)
-
- first = time.time()
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert first == EPOCH_PLUS_ONE_YEAR
-
- second = time.time()
-@@ -717,7 +721,7 @@ def test_move_to_datetime_change_tick_on():
- with time_machine.travel(EPOCH, tick=False) as traveller:
- traveller.move_to(EPOCH_PLUS_ONE_YEAR_DATETIME, tick=True)
- assert time.time() == EPOCH_PLUS_ONE_YEAR
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert time.time() > EPOCH_PLUS_ONE_YEAR
-
-
-@@ -768,7 +772,7 @@ def test_fixture_used_tick_false(time_machine):
- def test_fixture_used_tick_true(time_machine):
- time_machine.move_to(EPOCH, tick=True)
- original = time.time()
-- time.sleep(time.clock_getres(time.CLOCK_MONOTONIC))
-+ sleep_one_cycle(time.CLOCK_MONOTONIC)
- assert original == EPOCH
- assert original < time.time() < EPOCH + 10.0
-
diff --git a/dev-python/time-machine/time-machine-2.13.0.ebuild b/dev-python/time-machine/time-machine-2.13.0.ebuild
deleted file mode 100644
index d5b72ed4d0a5..000000000000
--- a/dev-python/time-machine/time-machine-2.13.0.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2022-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-
-inherit distutils-r1
-
-DESCRIPTION="Travel through time in your tests"
-HOMEPAGE="
- https://github.com/adamchainz/time-machine/
- https://pypi.org/project/time-machine/
-"
-SRC_URI="
- https://github.com/adamchainz/time-machine/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-RDEPEND="
- dev-python/python-dateutil[${PYTHON_USEDEP}]
-"
-
-PATCHES=( "${FILESDIR}/${PN}-2.13.0-backport-pr400.patch" )
-
-distutils_enable_tests pytest
diff --git a/dev-python/time-machine/time-machine-2.14.0.ebuild b/dev-python/time-machine/time-machine-2.14.0.ebuild
deleted file mode 100644
index abf76968ddb5..000000000000
--- a/dev-python/time-machine/time-machine-2.14.0.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2022-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{8,9,10,11,12} )
-
-inherit distutils-r1
-
-DESCRIPTION="Travel through time in your tests"
-HOMEPAGE="
- https://github.com/adamchainz/time-machine/
- https://pypi.org/project/time-machine/
-"
-SRC_URI="
- https://github.com/adamchainz/time-machine/archive/${PV}.tar.gz
- -> ${P}.gh.tar.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
-
-RDEPEND="
- dev-python/python-dateutil[${PYTHON_USEDEP}]
-"
-
-distutils_enable_tests pytest
diff --git a/dev-python/time-machine/time-machine-2.14.1.ebuild b/dev-python/time-machine/time-machine-2.14.1.ebuild
index abf76968ddb5..c460c72c4c8a 100644
--- a/dev-python/time-machine/time-machine-2.14.1.ebuild
+++ b/dev-python/time-machine/time-machine-2.14.1.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86"
RDEPEND="
dev-python/python-dateutil[${PYTHON_USEDEP}]
diff --git a/dev-python/twisted/Manifest b/dev-python/twisted/Manifest
index 92a82f833ad9..437756ad44fa 100644
--- a/dev-python/twisted/Manifest
+++ b/dev-python/twisted/Manifest
@@ -1,4 +1,2 @@
-DIST twisted-23.10.0.tar.gz 3495627 BLAKE2B 3b5c2dc56686203cfe7c863211f0be34f49b26273af7b0f54a891851cf5f32096da880f35dd549b8ff82c6885fda2f644ef747fc9574e830da4fe2ddb588e70f SHA512 da6cc663005776fca716503ec53ae367576e9c89ec2b90a367e73afb1e63c51a24dfad39b9ed1edb597e77e1d805dcbd179cefc1685faddd4044efc8f6c82d5f
-DIST twisted-24.2.0rc1.tar.gz 3500738 BLAKE2B d286b8bbd8e3c9bef82bf3b6a3ea3714358f4447a2bd4b3e82a0f4be0bda89c9a0804f807592dd951b6bb4ff74076b4a35a13b98d9d99e4334a644fe668f7802 SHA512 6f8946e65ec6affce5cac79a6b6019a48ba6bb9c2eb42bc2a251a50bd33eb429dd6aec570ed51ce98c618cc220451a935f8e32c93281953ef4b2a9e658793b68
DIST twisted-24.3.0.tar.gz 3500456 BLAKE2B b2cebb2f3482dbeba250786b1977ddbb09e1a9a81f71ce5906efe8289b0e134a8b26c191c2262e8ee8ba3fccccea508c34145016b29ecf301541134dcea19e08 SHA512 c3dd227f5936ffa586a0b7447f5df4c2257dce0c0ba740373d82197a72029e7eeb0aef9789247dde73e2f24dd043f3b0b7d795f16e6e908583b054aad9b9eb6a
DIST twisted-regen-cache.gz 911 BLAKE2B ffd3fcda6c67ffe6fd3ef581c8d507548396b66ed0708e9a5c790095e579c0d5f0f71596acf05712989da2ddef2b8d437eca973bc4d80ef8a9fa852915f38305 SHA512 95a9b931c73017d16d1b5e6b41345dddffe62b6af1a8e93b5e40d06d3d15be17b0dd0181c767ffeeb791534d463764ef9e066fa6c2ee2ac4b53c86d1da8fce03
diff --git a/dev-python/twisted/twisted-23.10.0.ebuild b/dev-python/twisted/twisted-23.10.0.ebuild
deleted file mode 100644
index eff5867241b1..000000000000
--- a/dev-python/twisted/twisted-23.10.0.ebuild
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_TESTED=( python3_{8,9,10,11,12} pypy3 )
-PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
-PYTHON_REQ_USE="threads(+)"
-
-inherit distutils-r1 pypi virtualx
-
-DESCRIPTION="An asynchronous networking framework written in Python"
-HOMEPAGE="
- https://twisted.org/
- https://github.com/twisted/twisted/
- https://pypi.org/project/Twisted/
-"
-SRC_URI+="
- https://dev.gentoo.org/~mgorny/dist/twisted-regen-cache.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
-IUSE="conch http2 serial ssl test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/attrs-19.2.0[${PYTHON_USEDEP}]
- >=dev-python/automat-0.8.0[${PYTHON_USEDEP}]
- >=dev-python/constantly-15.1[${PYTHON_USEDEP}]
- >=dev-python/hyperlink-17.1.1[${PYTHON_USEDEP}]
- >=dev-python/incremental-22.10.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.2.0[${PYTHON_USEDEP}]
- >=dev-python/zope-interface-5[${PYTHON_USEDEP}]
- conch? (
- >=dev-python/appdirs-1.4.0[${PYTHON_USEDEP}]
- >=dev-python/bcrypt-3.0.0[${PYTHON_USEDEP}]
- >=dev-python/cryptography-3.3[${PYTHON_USEDEP}]
- dev-python/pyasn1[${PYTHON_USEDEP}]
- )
- http2? (
- <dev-python/h2-5.0[${PYTHON_USEDEP}]
- >=dev-python/h2-3.0.0[${PYTHON_USEDEP}]
- <dev-python/priority-2.0[${PYTHON_USEDEP}]
- >=dev-python/priority-1.1.0[${PYTHON_USEDEP}]
- )
- serial? (
- >=dev-python/pyserial-3.0[${PYTHON_USEDEP}]
- )
- ssl? (
- >=dev-python/pyopenssl-21.0.0[${PYTHON_USEDEP}]
- >=dev-python/service-identity-18.1.0[${PYTHON_USEDEP}]
- >=dev-python/idna-2.4[${PYTHON_USEDEP}]
- )
-"
-BDEPEND="
- >=dev-python/hatch-fancy-pypi-readme-22.5.0[${PYTHON_USEDEP}]
- >=dev-python/incremental-22.10.0[${PYTHON_USEDEP}]
- test? (
- ${RDEPEND}
- $(python_gen_cond_dep '
- >=dev-python/appdirs-1.4.0[${PYTHON_USEDEP}]
- >=dev-python/bcrypt-3.0.0[${PYTHON_USEDEP}]
- >=dev-python/constantly-15.1.0[${PYTHON_USEDEP}]
- <dev-python/cython-test-exception-raiser-2[${PYTHON_USEDEP}]
- >=dev-python/cython-test-exception-raiser-1.0.2[${PYTHON_USEDEP}]
- >=dev-python/idna-2.4[${PYTHON_USEDEP}]
- >=dev-python/hypothesis-6.56[${PYTHON_USEDEP}]
- dev-python/pyasn1[${PYTHON_USEDEP}]
- >=dev-python/pyhamcrest-2[${PYTHON_USEDEP}]
- >=dev-python/pyserial-3.0[${PYTHON_USEDEP}]
- virtual/openssh
- ssl? (
- >=dev-python/pyopenssl-21.0.0[${PYTHON_USEDEP}]
- >=dev-python/service-identity-18.1.0[${PYTHON_USEDEP}]
- )
- ' "${PYTHON_TESTED[@]}")
- )
-"
-
-python_prepare_all() {
- # upstream test for making releases; not very useful and requires
- # sphinx (including on py2)
- rm src/twisted/python/test/test_release.py || die
-
- # multicast tests fail within network-sandbox
- sed -e 's:test_joinLeave:_&:' \
- -e 's:test_loopback:_&:' \
- -e 's:test_multiListen:_&:' \
- -e 's:test_multicast:_&:' \
- -i src/twisted/test/test_udp.py || die
-
- distutils-r1_python_prepare_all
-}
-
-src_test() {
- # the test suite handles missing file & failing ioctl()s gracefully
- # but not permission errors from sandbox
- addwrite /dev/net/tun
- virtx distutils-r1_src_test
-}
-
-python_test() {
- if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
- einfo "Skipping tests on ${EPYTHON} (xfail)"
- return
- fi
-
- "${EPYTHON}" -m twisted.trial twisted ||
- die "Tests failed with ${EPYTHON}"
-}
-
-python_install() {
- distutils-r1_python_install
-
- # own the dropin.cache so we don't leave orphans
- > "${D}$(python_get_sitedir)"/twisted/plugins/dropin.cache || die
-
- python_doscript "${WORKDIR}"/twisted-regen-cache
-}
-
-python_install_all() {
- distutils-r1_python_install_all
-
- newconfd "${FILESDIR}/twistd.conf" twistd
- newinitd "${FILESDIR}/twistd.init" twistd
-}
-
-python_postinst() {
- twisted-regen-cache || die
-}
-
-pkg_postinst() {
- if [[ -z ${ROOT} ]]; then
- python_foreach_impl python_postinst
- fi
-}
-
-python_postrm() {
- rm -f "${ROOT}$(python_get_sitedir)/twisted/plugins/dropin.cache" || die
-}
-
-pkg_postrm() {
- # if we're removing the last version, remove the cache file
- if [[ ! ${REPLACING_VERSIONS} ]]; then
- python_foreach_impl python_postrm
- fi
-}
diff --git a/dev-python/twisted/twisted-24.2.0_rc1.ebuild b/dev-python/twisted/twisted-24.2.0_rc1.ebuild
deleted file mode 100644
index bb8156f8cacc..000000000000
--- a/dev-python/twisted/twisted-24.2.0_rc1.ebuild
+++ /dev/null
@@ -1,152 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_TESTED=( python3_{8,9,10,11,12} pypy3 )
-PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
-PYTHON_REQ_USE="threads(+)"
-
-inherit distutils-r1 pypi virtualx
-
-DESCRIPTION="An asynchronous networking framework written in Python"
-HOMEPAGE="
- https://twisted.org/
- https://github.com/twisted/twisted/
- https://pypi.org/project/Twisted/
-"
-SRC_URI+="
- https://dev.gentoo.org/~mgorny/dist/twisted-regen-cache.gz
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
-IUSE="conch http2 serial ssl test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/attrs-19.2.0[${PYTHON_USEDEP}]
- >=dev-python/automat-0.8.0[${PYTHON_USEDEP}]
- >=dev-python/constantly-15.1[${PYTHON_USEDEP}]
- >=dev-python/hyperlink-17.1.1[${PYTHON_USEDEP}]
- >=dev-python/incremental-22.10.0[${PYTHON_USEDEP}]
- >=dev-python/typing-extensions-4.2.0[${PYTHON_USEDEP}]
- >=dev-python/zope-interface-5[${PYTHON_USEDEP}]
- conch? (
- >=dev-python/appdirs-1.4.0[${PYTHON_USEDEP}]
- >=dev-python/bcrypt-3.0.0[${PYTHON_USEDEP}]
- >=dev-python/cryptography-3.3[${PYTHON_USEDEP}]
- dev-python/pyasn1[${PYTHON_USEDEP}]
- )
- http2? (
- <dev-python/h2-5.0[${PYTHON_USEDEP}]
- >=dev-python/h2-3.0.0[${PYTHON_USEDEP}]
- <dev-python/priority-2.0[${PYTHON_USEDEP}]
- >=dev-python/priority-1.1.0[${PYTHON_USEDEP}]
- )
- serial? (
- >=dev-python/pyserial-3.0[${PYTHON_USEDEP}]
- )
- ssl? (
- >=dev-python/pyopenssl-21.0.0[${PYTHON_USEDEP}]
- >=dev-python/service-identity-18.1.0[${PYTHON_USEDEP}]
- >=dev-python/idna-2.4[${PYTHON_USEDEP}]
- )
-"
-BDEPEND="
- >=dev-python/hatch-fancy-pypi-readme-22.5.0[${PYTHON_USEDEP}]
- >=dev-python/incremental-22.10.0[${PYTHON_USEDEP}]
- test? (
- ${RDEPEND}
- $(python_gen_cond_dep '
- >=dev-python/appdirs-1.4.0[${PYTHON_USEDEP}]
- >=dev-python/bcrypt-3.0.0[${PYTHON_USEDEP}]
- >=dev-python/constantly-15.1.0[${PYTHON_USEDEP}]
- <dev-python/cython-test-exception-raiser-2[${PYTHON_USEDEP}]
- >=dev-python/cython-test-exception-raiser-1.0.2[${PYTHON_USEDEP}]
- >=dev-python/idna-2.4[${PYTHON_USEDEP}]
- >=dev-python/hypothesis-6.56[${PYTHON_USEDEP}]
- dev-python/pyasn1[${PYTHON_USEDEP}]
- >=dev-python/pyhamcrest-2[${PYTHON_USEDEP}]
- >=dev-python/pyserial-3.0[${PYTHON_USEDEP}]
- virtual/openssh
- ssl? (
- >=dev-python/pyopenssl-21.0.0[${PYTHON_USEDEP}]
- >=dev-python/service-identity-18.1.0[${PYTHON_USEDEP}]
- )
- ' "${PYTHON_TESTED[@]}")
- )
-"
-
-python_prepare_all() {
- # upstream test for making releases; not very useful and requires
- # sphinx (including on py2)
- rm src/twisted/python/test/test_release.py || die
-
- # multicast tests fail within network-sandbox
- sed -e 's:test_joinLeave:_&:' \
- -e 's:test_loopback:_&:' \
- -e 's:test_multiListen:_&:' \
- -e 's:test_multicast:_&:' \
- -i src/twisted/test/test_udp.py || die
-
- distutils-r1_python_prepare_all
-}
-
-src_test() {
- # the test suite handles missing file & failing ioctl()s gracefully
- # but not permission errors from sandbox
- addwrite /dev/net/tun
- virtx distutils-r1_src_test
-}
-
-python_test() {
- if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
- einfo "Skipping tests on ${EPYTHON} (xfail)"
- return
- fi
-
- # breaks some tests by overriding empty environment
- local -x SANDBOX_ON=0
- "${EPYTHON}" -m twisted.trial twisted ||
- die "Tests failed with ${EPYTHON}"
-}
-
-python_install() {
- distutils-r1_python_install
-
- # own the dropin.cache so we don't leave orphans
- > "${D}$(python_get_sitedir)"/twisted/plugins/dropin.cache || die
-
- python_doscript "${WORKDIR}"/twisted-regen-cache
-}
-
-python_install_all() {
- distutils-r1_python_install_all
-
- newconfd "${FILESDIR}/twistd.conf" twistd
- newinitd "${FILESDIR}/twistd.init" twistd
-}
-
-python_postinst() {
- twisted-regen-cache || die
-}
-
-pkg_postinst() {
- if [[ -z ${ROOT} ]]; then
- python_foreach_impl python_postinst
- fi
-}
-
-python_postrm() {
- rm -f "${ROOT}$(python_get_sitedir)/twisted/plugins/dropin.cache" || die
-}
-
-pkg_postrm() {
- # if we're removing the last version, remove the cache file
- if [[ ! ${REPLACING_VERSIONS} ]]; then
- python_foreach_impl python_postrm
- fi
-}
diff --git a/dev-python/twisted/twisted-24.3.0.ebuild b/dev-python/twisted/twisted-24.3.0.ebuild
index 8c9891220d14..b7b426423dca 100644
--- a/dev-python/twisted/twisted-24.3.0.ebuild
+++ b/dev-python/twisted/twisted-24.3.0.ebuild
@@ -22,7 +22,7 @@ SRC_URI+="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ~ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~arm64-macos ~x64-macos"
IUSE="conch http2 serial ssl test"
RESTRICT="!test? ( test )"
diff --git a/dev-python/zenlib/Manifest b/dev-python/zenlib/Manifest
index 4490a77826d2..adb53ea80633 100644
--- a/dev-python/zenlib/Manifest
+++ b/dev-python/zenlib/Manifest
@@ -6,4 +6,4 @@ DIST zenlib-1.7.2.tar.gz 16853 BLAKE2B 9659723441c9e651e6a80a47565aeeb6bda67db04
DIST zenlib-1.7.3.tar.gz 16924 BLAKE2B 20bab075d9a09062e2d596238237a2684c206cc1606f7796a1ddf6421902a523731bcfad9c96b803be3d91ff6ee508bdb9553a0f90295aa3f56e64e87ba37f21 SHA512 f5f8ad560e74051e5daf7515b3777ff17e86d202f6c8958e476d22677a65454512db5a93f1281202fc058742da0f8fe0296339da68d5ce109ab93e33948eb79b
DIST zenlib-1.7.4.tar.gz 16949 BLAKE2B 6bc770d55207e3f532106b2511a3cd1c2161a7228e6be5161115f59d95213d6328da2347a9f19402c422651cdf1af3977c70828028c898f701218e50ef7217a9 SHA512 1b4d41da207cdc819c85a568a3f13555b7271bde066a7bf89ad11077ed42d5fd1b1227d1d789ed583e6b2aa2de4aae26a0da0be9ea6f59d0a262bdebae423104
DIST zenlib-2.0.0.tar.gz 16921 BLAKE2B a9bedfd8bd28e2f50bbc11dbab21ba6c0f35b60e4e1438b1ad7666ed3b8688a6b9c611f88d8fbf915f69ebddc5420315080a6a0a8ed2983d14125bb28d091749 SHA512 2e4fa3d299d8da79930ea3a0f948472d49fb430727f100bb6b9f9e28d4792a229d2dc33ecaabd20d9e790a783acecb1ccb00381b97dcc02f8c5353abef74fb31
-DIST zenlib-2.0.1.tar.gz 16943 BLAKE2B dc8b1e648f50a9e2e7413ddd7beee4d8fbe698c53dd00f9f4e81c12aceda56f01aa3a33e505926ae32bbd83acafd61e4427a2cdbed5bee801513b6c5bf1a7e3b SHA512 2390888667b3745e93cd591a76c0bb3445be8ace7c24d625e3f2a2e572ec6ab1fc9e2f1c642920a98740d726cf06f4e3cb602d629881806ac72d8b2c45045a67
+DIST zenlib-2.0.3.tar.gz 16963 BLAKE2B 8f99930e6d014268c216b45399f75c378abd114db270c40fcec0c4a460f8915b7338d51e83985612107bf623939bd8db050bac9e883b8a6f539783fd3ab57f71 SHA512 6e8bf2b199385095d5f2d2bc531dee409912e56d19712d9f458627f7dd14927dfc9d3845867e9e634417d76bdfe9783b5373965f746abf49e033875b853e6d3f
diff --git a/dev-python/zenlib/zenlib-2.0.1.ebuild b/dev-python/zenlib/zenlib-2.0.3.ebuild
index 3b19cd41c055..3b19cd41c055 100644
--- a/dev-python/zenlib/zenlib-2.0.1.ebuild
+++ b/dev-python/zenlib/zenlib-2.0.3.ebuild