summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2026-03-28 07:14:12 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2026-03-28 07:14:12 +0000
commit092c8f0bee28da7e426bd12abf9919b8459ef84f (patch)
treeca07b70dd2ff9d2c074672ecba68f6994d31ab84 /dev-python
parentb2887c7ab46ed23ad0f71c82db7c9444661c69fc (diff)
downloadbaldeagleos-repo-092c8f0bee28da7e426bd12abf9919b8459ef84f.tar.gz
baldeagleos-repo-092c8f0bee28da7e426bd12abf9919b8459ef84f.tar.xz
baldeagleos-repo-092c8f0bee28da7e426bd12abf9919b8459ef84f.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/agent-client-protocol/Manifest1
-rw-r--r--dev-python/agent-client-protocol/agent-client-protocol-0.8.1.ebuild26
-rw-r--r--dev-python/agent-client-protocol/metadata.xml10
-rw-r--r--dev-python/html5lib/Manifest1
-rw-r--r--dev-python/html5lib/files/html5lib-1.1-pytest6.patch149
-rw-r--r--dev-python/html5lib/html5lib-1.1-r2.ebuild49
-rw-r--r--dev-python/html5lib/html5lib-1.2_pre20240221.ebuild5
-rw-r--r--dev-python/httpx-aiohttp/Manifest2
-rw-r--r--dev-python/httpx-aiohttp/httpx-aiohttp-0.1.12.ebuild37
-rw-r--r--dev-python/httpx-aiohttp/metadata.xml10
-rw-r--r--dev-python/makefun/makefun-1.16.0.ebuild10
-rw-r--r--dev-python/openapi-pydantic/Manifest1
-rw-r--r--dev-python/openapi-pydantic/metadata.xml10
-rw-r--r--dev-python/openapi-pydantic/openapi-pydantic-0.5.1.ebuild32
-rw-r--r--dev-python/pytest-textual-snapshot/Manifest1
-rw-r--r--dev-python/pytest-textual-snapshot/files/pytest-textual-snapshot-1.1.0-syrupy-5-compat.patch29
-rw-r--r--dev-python/pytest-textual-snapshot/metadata.xml10
-rw-r--r--dev-python/pytest-textual-snapshot/pytest-textual-snapshot-1.1.0.ebuild44
-rw-r--r--dev-python/syrupy/syrupy-5.1.0.ebuild9
-rw-r--r--dev-python/textual-autocomplete/Manifest1
-rw-r--r--dev-python/textual-autocomplete/metadata.xml10
-rw-r--r--dev-python/textual-autocomplete/textual-autocomplete-4.0.6.ebuild38
-rw-r--r--dev-python/textual-dev/Manifest1
-rw-r--r--dev-python/textual-dev/textual-dev-1.7.0.ebuild37
-rw-r--r--dev-python/textual-dev/textual-dev-1.8.0.ebuild13
-rw-r--r--dev-python/textual-serve/Manifest1
-rw-r--r--dev-python/textual-serve/textual-serve-1.1.2.ebuild25
-rw-r--r--dev-python/textual-serve/textual-serve-1.1.3.ebuild2
-rw-r--r--dev-python/textual/Manifest1
-rw-r--r--dev-python/textual/textual-8.1.1-r1.ebuild99
-rw-r--r--dev-python/textual/textual-8.2.0.ebuild107
31 files changed, 452 insertions, 319 deletions
diff --git a/dev-python/agent-client-protocol/Manifest b/dev-python/agent-client-protocol/Manifest
new file mode 100644
index 000000000000..241b1f875100
--- /dev/null
+++ b/dev-python/agent-client-protocol/Manifest
@@ -0,0 +1 @@
+DIST agent_client_protocol-0.8.1.tar.gz 68866 BLAKE2B c0b81def28c8893d5104fea047e11fb4220ce907d07e404246cb2cb63254c5e49196e9e64a33b980b342925a4e9b21b530e1fdd2981f7e6a15f2f9a31ea096b4 SHA512 fa101c204b550cd6af5196da5d1d2a19e68f5e88a9ff632b957c7bfa830e8cba58c5fe02eabd7fdf5b1624934b283de912d21d245760ae7741e0fa80c8aa603a
diff --git a/dev-python/agent-client-protocol/agent-client-protocol-0.8.1.ebuild b/dev-python/agent-client-protocol/agent-client-protocol-0.8.1.ebuild
new file mode 100644
index 000000000000..5bf97d5686a2
--- /dev/null
+++ b/dev-python/agent-client-protocol/agent-client-protocol-0.8.1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Client protocol specification for agent interactions"
+HOMEPAGE="
+ https://github.com/agentclientprotocol/python-sdk
+ https://pypi.org/project/agent-client-protocol/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/pydantic-2.0.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( pytest-asyncio )
+distutils_enable_tests pytest
diff --git a/dev-python/agent-client-protocol/metadata.xml b/dev-python/agent-client-protocol/metadata.xml
new file mode 100644
index 000000000000..a2cf3f904da1
--- /dev/null
+++ b/dev-python/agent-client-protocol/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>falbrechtskirchinger@gmail.com</email>
+ <name>Florian Albrechtskirchinger</name>
+ </maintainer>
+
+ <origin>gentoo-guru-overlay</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/html5lib/Manifest b/dev-python/html5lib/Manifest
index 7fcd259d6576..2aa2e3aabd91 100644
--- a/dev-python/html5lib/Manifest
+++ b/dev-python/html5lib/Manifest
@@ -1,3 +1,2 @@
-DIST html5lib-1.1.tar.gz 272215 BLAKE2B 11a4fc3fb84bf8bab4af5da1de30b0892a9eb454505716b3db391187053c9aac159b1c82ae787896592b8fc850363bba9313b9d7fc617150771c3bfa1aeadefb SHA512 af7c29591007fded99be6c38e3d0ae5a4ac32d71d26046a615918ae732cb1c1ecbf754f47ceca1a53726c3843f3ecea7af87a7362281b45ff3af495815818626
DIST html5lib-python-fd4f032bc090d44fb11a84b352dad7cbee0a4745.gh.tar.gz 259834 BLAKE2B cf55f9fed5d7fea54966e8add3a4d1db1cbd85f5a771e38f359494b53a9b45c0d5031f561d1e57b02f8b6061bca102a2fea4997da5c05841cf30a81adbeb8742 SHA512 3965f2c5b55a805d6d6b86866315a6f776d5237ac189a70d3d33e713c744b30c471424365e400af3f3bd23348070e598f138629f5d35568954aeb9c067e84860
DIST html5lib-tests-9b4a29c943b3c905e46b26569bae16de8b373516.gh.tar.gz 141487 BLAKE2B 4a2c0769f9e76c5e093af130427b7cf5407a11bd80670ca00013cb15a8da0f3c58cb2ea5ff526d299d9ddfbdab4a5ae9bcb6d388d4c709a573aba9d031e8b81f SHA512 8be9d913a48a498717f3931eafe64f53e5810c01451bbbbbdf80cef51e3274a3c8af523388e55c72762842b416ec5853213102998673c030229029bcfc954fce
diff --git a/dev-python/html5lib/files/html5lib-1.1-pytest6.patch b/dev-python/html5lib/files/html5lib-1.1-pytest6.patch
deleted file mode 100644
index d8df5f2cf2f6..000000000000
--- a/dev-python/html5lib/files/html5lib-1.1-pytest6.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-# https://github.com/html5lib/html5lib-python/pull/506
-# https://bugs.gentoo.org/754144
-
-and part of 4a87368b71090f1432df6302f178c4babfcec93f
-
-diff --git a/html5lib/tests/conftest.py b/html5lib/tests/conftest.py
-index dad167c5..fffeb50c 100644
---- a/html5lib/tests/conftest.py
-+++ b/html5lib/tests/conftest.py
-@@ -99,10 +99,19 @@ def pytest_collect_file(path, parent):
-
- if _tree_construction in dir_and_parents:
- if path.ext == ".dat":
-- return TreeConstructionFile(path, parent)
-+ return TreeConstructionFile.from_parent(parent, fspath=path)
- elif _tokenizer in dir_and_parents:
- if path.ext == ".test":
-- return TokenizerFile(path, parent)
-+ return TokenizerFile.from_parent(parent, fspath=path)
- elif _sanitizer_testdata in dir_and_parents:
- if path.ext == ".dat":
-- return SanitizerFile(path, parent)
-+ return SanitizerFile.from_parent(parent, fspath=path)
-+
-+
-+# Tiny wrapper to allow .from_parent constructors on older pytest for PY27
-+if not hasattr(pytest.Item.__base__, "from_parent"):
-+ @classmethod
-+ def from_parent(cls, parent, **kwargs):
-+ return cls(parent=parent, **kwargs)
-+
-+ pytest.Item.__base__.from_parent = from_parent
-diff --git a/html5lib/tests/sanitizer.py b/html5lib/tests/sanitizer.py
-index bb483421..16e53868 100644
---- a/html5lib/tests/sanitizer.py
-+++ b/html5lib/tests/sanitizer.py
-@@ -13,7 +13,7 @@ def collect(self):
- with codecs.open(str(self.fspath), "r", encoding="utf-8") as fp:
- tests = json.load(fp)
- for i, test in enumerate(tests):
-- yield SanitizerTest(str(i), self, test=test)
-+ yield SanitizerTest.from_parent(self, name=str(i), test=test)
-
-
- class SanitizerTest(pytest.Item):
-diff --git a/html5lib/tests/tokenizer.py b/html5lib/tests/tokenizer.py
-index 47264cc3..cc9897a4 100644
---- a/html5lib/tests/tokenizer.py
-+++ b/html5lib/tests/tokenizer.py
-@@ -192,7 +192,7 @@ def collect(self):
- tests = json.load(fp)
- if 'tests' in tests:
- for i, test in enumerate(tests['tests']):
-- yield TokenizerTestCollector(str(i), self, testdata=test)
-+ yield TokenizerTestCollector.from_parent(self, name=str(i), testdata=test)
-
-
- class TokenizerTestCollector(pytest.Collector):
-@@ -207,10 +207,10 @@ def __init__(self, name, parent=None, config=None, session=None, testdata=None):
- def collect(self):
- for initialState in self.testdata["initialStates"]:
- initialState = capitalize(initialState)
-- item = TokenizerTest(initialState,
-- self,
-- self.testdata,
-- initialState)
-+ item = TokenizerTest.from_parent(self,
-+ name=initialState,
-+ test=self.testdata,
-+ initialState=initialState)
- if self.testdata["input"] is None:
- item.add_marker(pytest.mark.skipif(True, reason="Relies on lone surrogates"))
- yield item
-diff --git a/html5lib/tests/tree_construction.py b/html5lib/tests/tree_construction.py
-index 1ef6e725..fb0657bf 100644
---- a/html5lib/tests/tree_construction.py
-+++ b/html5lib/tests/tree_construction.py
-@@ -26,7 +26,7 @@ class TreeConstructionFile(pytest.File):
- def collect(self):
- tests = TestData(str(self.fspath), "data")
- for i, test in enumerate(tests):
-- yield TreeConstructionTest(str(i), self, testdata=test)
-+ yield TreeConstructionTest.from_parent(self, name=str(i), testdata=test)
-
-
- class TreeConstructionTest(pytest.Collector):
-@@ -48,11 +48,11 @@ def _getParserTests(self, treeName, treeAPIs):
- nodeid = "%s::parser::namespaced" % treeName
- else:
- nodeid = "%s::parser::void-namespace" % treeName
-- item = ParserTest(nodeid,
-- self,
-- self.testdata,
-- treeAPIs["builder"] if treeAPIs is not None else None,
-- namespaceHTMLElements)
-+ item = ParserTest.from_parent(self,
-+ name=nodeid,
-+ test=self.testdata,
-+ treeClass=treeAPIs["builder"] if treeAPIs is not None else None,
-+ namespaceHTMLElements=namespaceHTMLElements)
- item.add_marker(getattr(pytest.mark, treeName))
- item.add_marker(pytest.mark.parser)
- if namespaceHTMLElements:
-@@ -61,10 +61,10 @@ def _getParserTests(self, treeName, treeAPIs):
-
- def _getTreeWalkerTests(self, treeName, treeAPIs):
- nodeid = "%s::treewalker" % treeName
-- item = TreeWalkerTest(nodeid,
-- self,
-- self.testdata,
-- treeAPIs)
-+ item = TreeWalkerTest.from_parent(self,
-+ name=nodeid,
-+ test=self.testdata,
-+ treeAPIs=treeAPIs)
- item.add_marker(getattr(pytest.mark, treeName))
- item.add_marker(pytest.mark.treewalker)
- yield item
-
-diff --git a/html5lib/tests/tokenizer.py b/html5lib/tests/tokenizer.py
-index cc9897a..b49d2e6 100644
---- a/html5lib/tests/tokenizer.py
-+++ b/html5lib/tests/tokenizer.py
-@@ -246,7 +246,9 @@ class TokenizerTest(pytest.Item):
- def repr_failure(self, excinfo):
- traceback = excinfo.traceback
- ntraceback = traceback.cut(path=__file__)
-- excinfo.traceback = ntraceback.filter()
-+ pytest_ver = getattr(pytest, "version_tuple", ())
-+ filter_args = (excinfo,) if pytest_ver >= (7, 4, 0) else ()
-+ excinfo.traceback = ntraceback.filter(*filter_args)
-
- return excinfo.getrepr(funcargs=True,
- showlocals=False,
-diff --git a/html5lib/tests/tree_construction.py b/html5lib/tests/tree_construction.py
-index fb0657b..363b48c 100644
---- a/html5lib/tests/tree_construction.py
-+++ b/html5lib/tests/tree_construction.py
-@@ -135,7 +135,9 @@ class ParserTest(pytest.Item):
- def repr_failure(self, excinfo):
- traceback = excinfo.traceback
- ntraceback = traceback.cut(path=__file__)
-- excinfo.traceback = ntraceback.filter()
-+ pytest_ver = getattr(pytest, "version_tuple", ())
-+ filter_args = (excinfo,) if pytest_ver >= (7, 4, 0) else ()
-+ excinfo.traceback = ntraceback.filter(*filter_args)
-
- return excinfo.getrepr(funcargs=True,
- showlocals=False,
diff --git a/dev-python/html5lib/html5lib-1.1-r2.ebuild b/dev-python/html5lib/html5lib-1.1-r2.ebuild
deleted file mode 100644
index 7b87b8d32501..000000000000
--- a/dev-python/html5lib/html5lib-1.1-r2.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{10..14} )
-PYTHON_REQ_USE="xml(+)"
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="HTML parser based on the HTML5 specification"
-HOMEPAGE="
- https://github.com/html5lib/html5lib-python/
- https://html5lib.readthedocs.io/
- https://pypi.org/project/html5lib/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos"
-
-PATCHES=(
- "${FILESDIR}"/${P}-pytest6.patch
-)
-
-RDEPEND="
- >=dev-python/six-1.9[${PYTHON_USEDEP}]
- dev-python/webencodings[${PYTHON_USEDEP}]
-"
-BDEPEND="
- test? (
- dev-python/pytest-expect[${PYTHON_USEDEP}]
- )
-"
-
-distutils_enable_tests pytest
-
-src_prepare() {
- distutils-r1_src_prepare
-
- sed -e 's:from mock:from unittest.mock:' \
- -i html5lib/tests/test_meta.py || die
-}
-
-python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p pytest_expect
-}
diff --git a/dev-python/html5lib/html5lib-1.2_pre20240221.ebuild b/dev-python/html5lib/html5lib-1.2_pre20240221.ebuild
index b2cbe27bffac..9936be8ee623 100644
--- a/dev-python/html5lib/html5lib-1.2_pre20240221.ebuild
+++ b/dev-python/html5lib/html5lib-1.2_pre20240221.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -39,6 +39,9 @@ RDEPEND="
>=dev-python/six-1.9[${PYTHON_USEDEP}]
>=dev-python/webencodings-0.5.1[${PYTHON_USEDEP}]
"
+BDEPEND="
+ dev-python/pkg-resources[${PYTHON_USEDEP}]
+"
PATCHES=(
"${FILESDIR}"/${PN}-1.2_pre20240221-py314.patch
diff --git a/dev-python/httpx-aiohttp/Manifest b/dev-python/httpx-aiohttp/Manifest
new file mode 100644
index 000000000000..18f409fb3669
--- /dev/null
+++ b/dev-python/httpx-aiohttp/Manifest
@@ -0,0 +1,2 @@
+DIST httpx_aiohttp-0.1.12.tar.gz 275945 BLAKE2B e863b249e794e42af1b08172bc99a4df5f528370e7a4410d7e444db1877c0ad138e66e09b8c5d9b742c039e80cce99cd6e5a673fce6fe3c0fae9223380e5b163 SHA512 312892e45390e2a3cdc52454406ae607aa8aa28ba93d8bdabc94259390d644193800c60bde0a19828b2b0c65689a9ffe1733750d3a1c1ec0f73f6d1a60637c14
+DIST httpx_aiohttp-0.1.12.tar.gz.provenance 9445 BLAKE2B cb844a825e21370ade9adfb1a3b41c853a1cba188d7febd93e8abeb88b2ad6588a1f7836b2c7b764d2d829839fff609bfc2874f4653d3ca5901f12cc81e4f4c6 SHA512 5f261dde7883cbfdb491a4137bacbb442337faab37b0772fd32d8bac73e28e519679ad04a6faf3dd1681277470f94ea605336af05f0de6adfdd6f9a44e04b8ed
diff --git a/dev-python/httpx-aiohttp/httpx-aiohttp-0.1.12.ebuild b/dev-python/httpx-aiohttp/httpx-aiohttp-0.1.12.ebuild
new file mode 100644
index 000000000000..ce5653421bb2
--- /dev/null
+++ b/dev-python/httpx-aiohttp/httpx-aiohttp-0.1.12.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYPI_VERIFY_REPO=https://github.com/karpetrosyan/httpx-aiohttp
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Aiohttp transport for HTTPX"
+HOMEPAGE="
+ https://github.com/karpetrosyan/httpx-aiohttp
+ https://pypi.org/project/httpx-aiohttp/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+ROPERTIES="test_network"
+RESTRICT="test"
+
+RDEPEND="
+ >=dev-python/aiohttp-3.10.0[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.27.0[${PYTHON_USEDEP}]
+"
+
+BDEPEND="
+ dev-python/hatch-fancy-pypi-readme[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=( anyio pytest-asyncio trio )
+EPYTEST_IGNORE=(
+ scripts/httpx_test.py
+)
+distutils_enable_tests pytest
diff --git a/dev-python/httpx-aiohttp/metadata.xml b/dev-python/httpx-aiohttp/metadata.xml
new file mode 100644
index 000000000000..a2cf3f904da1
--- /dev/null
+++ b/dev-python/httpx-aiohttp/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>falbrechtskirchinger@gmail.com</email>
+ <name>Florian Albrechtskirchinger</name>
+ </maintainer>
+
+ <origin>gentoo-guru-overlay</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/makefun/makefun-1.16.0.ebuild b/dev-python/makefun/makefun-1.16.0.ebuild
index ddb7a770c90c..3d4f78fb97b9 100644
--- a/dev-python/makefun/makefun-1.16.0.ebuild
+++ b/dev-python/makefun/makefun-1.16.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2025 Gentoo Authors
+# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -19,15 +19,13 @@ SLOT="0"
KEYWORDS="amd64 arm64 ~ppc64 ~riscv x86"
BDEPEND="
+ dev-python/pkg-resources[${PYTHON_USEDEP}]
dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- dev-python/pytest-asyncio[${PYTHON_USEDEP}]
- )
"
+EPYTEST_PLUGINS=( pytest-asyncio )
distutils_enable_tests pytest
python_test() {
- local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
- epytest -p asyncio --asyncio-mode=auto
+ epytest --asyncio-mode=auto
}
diff --git a/dev-python/openapi-pydantic/Manifest b/dev-python/openapi-pydantic/Manifest
new file mode 100644
index 000000000000..13564f986efd
--- /dev/null
+++ b/dev-python/openapi-pydantic/Manifest
@@ -0,0 +1 @@
+DIST openapi-pydantic-0.5.1.gh.tar.gz 105945 BLAKE2B a27f19d7326030a7f4c699e5d4fa9a2d8702cc8081b2730c13dcddddbba1b5e8a24d0a58008ea28d48297f78f46ce07ccbf085077737364113cc18f6279e5d84 SHA512 908804e44df48028317b63e51ae8817d8be1d332217425e8b9ccb1798aa743b8d74dd8126fc20ad8f601eb65d1a8fcd03fc036a49ef96a6346a1a7cb1c916d75
diff --git a/dev-python/openapi-pydantic/metadata.xml b/dev-python/openapi-pydantic/metadata.xml
new file mode 100644
index 000000000000..a2cf3f904da1
--- /dev/null
+++ b/dev-python/openapi-pydantic/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>falbrechtskirchinger@gmail.com</email>
+ <name>Florian Albrechtskirchinger</name>
+ </maintainer>
+
+ <origin>gentoo-guru-overlay</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/openapi-pydantic/openapi-pydantic-0.5.1.ebuild b/dev-python/openapi-pydantic/openapi-pydantic-0.5.1.ebuild
new file mode 100644
index 000000000000..8eab1ddb24cd
--- /dev/null
+++ b/dev-python/openapi-pydantic/openapi-pydantic-0.5.1.ebuild
@@ -0,0 +1,32 @@
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Modern, type-safe OpenAPI schemas in Python using Pydantic 1.8+ and 2.x"
+HOMEPAGE="
+ https://github.com/mike-oakley/openapi-pydantic
+ https://pypi.org/project/openapi-pydantic/
+"
+SRC_URI="
+ https://github.com/mike-oakley/openapi-pydantic/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/pydantic-1.8[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/openapi-spec-validator-0.7.0[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
diff --git a/dev-python/pytest-textual-snapshot/Manifest b/dev-python/pytest-textual-snapshot/Manifest
new file mode 100644
index 000000000000..3715cd71b835
--- /dev/null
+++ b/dev-python/pytest-textual-snapshot/Manifest
@@ -0,0 +1 @@
+DIST pytest_textual_snapshot-1.1.0.tar.gz 11391 BLAKE2B fc82f23e6e1eebd093694eba8fc419269dc88c9466dc601501ce346f4749f517d506aea977a3887f9cdf3cd60c87a845cea74eb7eb35d03607af22a8fa7890af SHA512 df667fc68b69ebe92ad669621203be0f89d0ec25c0a203b12a732cc56bd7a366f9ea24496bf9d3abceafa524cde506e7025deeb3d92f61d9e278ed56f8cf979e
diff --git a/dev-python/pytest-textual-snapshot/files/pytest-textual-snapshot-1.1.0-syrupy-5-compat.patch b/dev-python/pytest-textual-snapshot/files/pytest-textual-snapshot-1.1.0-syrupy-5-compat.patch
new file mode 100644
index 000000000000..52966c959094
--- /dev/null
+++ b/dev-python/pytest-textual-snapshot/files/pytest-textual-snapshot-1.1.0-syrupy-5-compat.patch
@@ -0,0 +1,29 @@
+diff --git a/pytest_textual_snapshot.py b/pytest_textual_snapshot.py
+index 44c5fd4..902a002 100644
+--- a/pytest_textual_snapshot.py
++++ b/pytest_textual_snapshot.py
+@@ -31,12 +31,12 @@ if TYPE_CHECKING:
+
+
+ class SVGImageExtension(SingleFileSnapshotExtension):
+- _file_extension = "svg"
++ file_extension = "svg"
+ _write_mode = WriteMode.TEXT
+
+- def _read_snapshot_data_from_location(self, *args, **kwargs) -> Optional["SerializableData"]:
++ def read_snapshot_data_from_location(self, *args, **kwargs) -> Optional["SerializableData"]:
+ """Normalize SVG data right after they are loaded from persistent storage."""
+- data = super()._read_snapshot_data_from_location(*args, **kwargs)
++ data = super().read_snapshot_data_from_location(*args, **kwargs)
+ if data is not None:
+ data = normalize_svg(data)
+ return data
+@@ -305,6 +305,8 @@ def retrieve_svg_diffs(
+ pass_count = 0
+
+ n = 0
++ if not Path(tempdir.name).exists():
++ return diffs, pass_count
+ for data_path in Path(tempdir.name).iterdir():
+ (
+ passed,
diff --git a/dev-python/pytest-textual-snapshot/metadata.xml b/dev-python/pytest-textual-snapshot/metadata.xml
new file mode 100644
index 000000000000..a2cf3f904da1
--- /dev/null
+++ b/dev-python/pytest-textual-snapshot/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>falbrechtskirchinger@gmail.com</email>
+ <name>Florian Albrechtskirchinger</name>
+ </maintainer>
+
+ <origin>gentoo-guru-overlay</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/pytest-textual-snapshot/pytest-textual-snapshot-1.1.0.ebuild b/dev-python/pytest-textual-snapshot/pytest-textual-snapshot-1.1.0.ebuild
new file mode 100644
index 000000000000..0b00939442a9
--- /dev/null
+++ b/dev-python/pytest-textual-snapshot/pytest-textual-snapshot-1.1.0.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Snapshot testing for Textual apps"
+HOMEPAGE="
+ https://github.com/Textualize/pytest-textual-snapshot
+ https://pypi.org/project/pytest-textual-snapshot/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/jinja2-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8.0.0[${PYTHON_USEDEP}]
+ >=dev-python/rich-12.0.0[${PYTHON_USEDEP}]
+ >=dev-python/syrupy-5.0.0[${PYTHON_USEDEP}]
+ >=dev-python/textual-0.28.0[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-1.1.0-syrupy-5-compat.patch"
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # Convert to proper Python package
+ mkdir pytest_textual_snapshot || die
+
+ mv pytest_textual_snapshot.py pytest_textual_snapshot/__init__.py || die
+ mv resources pytest_textual_snapshot/ || die
+
+ sed -i 's|"resources/\*\*/\*"|"pytest_textual_snapshot/resources/\*\*/\*"|' \
+ pyproject.toml || die
+}
diff --git a/dev-python/syrupy/syrupy-5.1.0.ebuild b/dev-python/syrupy/syrupy-5.1.0.ebuild
index f78afde6e80b..09ed5d6cf396 100644
--- a/dev-python/syrupy/syrupy-5.1.0.ebuild
+++ b/dev-python/syrupy/syrupy-5.1.0.ebuild
@@ -28,5 +28,12 @@ BDEPEND="
"
EPYTEST_PLUGINS=( pytest-xdist )
-EPYTEST_PLUGIN_AUTOLOAD=1
distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # Inject required plugins; autoloading can break (e.g., with pytest-relaxed)
+ sed -i 's/\([a-zA-Z0-9_]\+\)\.runpytest(/\1.runpytest("-p", "syrupy", "-p", "xdist", /' \
+ tests/integration/test_*.py || die
+}
diff --git a/dev-python/textual-autocomplete/Manifest b/dev-python/textual-autocomplete/Manifest
new file mode 100644
index 000000000000..00414f21b576
--- /dev/null
+++ b/dev-python/textual-autocomplete/Manifest
@@ -0,0 +1 @@
+DIST textual_autocomplete-4.0.6.tar.gz 97967 BLAKE2B 0e518b1fe64d93e4da47ff49d434a0d2bf9f6288120320d90339755d681c6d824f589a65386f4ff1367195532c4a2b2b5492c3c786c8e2279e23f0b9d3d85d1e SHA512 1559df6c72538a001ff227eddf9f37614b22bd2fdb4d160de7d14878b6cfc7dfbdf26ebd4ec54e4bafb1ef4d971c59e970690f5be9d5500ab788689b308b9278
diff --git a/dev-python/textual-autocomplete/metadata.xml b/dev-python/textual-autocomplete/metadata.xml
new file mode 100644
index 000000000000..a2cf3f904da1
--- /dev/null
+++ b/dev-python/textual-autocomplete/metadata.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>falbrechtskirchinger@gmail.com</email>
+ <name>Florian Albrechtskirchinger</name>
+ </maintainer>
+
+ <origin>gentoo-guru-overlay</origin>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/textual-autocomplete/textual-autocomplete-4.0.6.ebuild b/dev-python/textual-autocomplete/textual-autocomplete-4.0.6.ebuild
new file mode 100644
index 000000000000..9e18ff56ad36
--- /dev/null
+++ b/dev-python/textual-autocomplete/textual-autocomplete-4.0.6.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Easily add autocomplete dropdowns to your Textual apps"
+HOMEPAGE="
+ https://github.com/darrenburns/textual-autocomplete
+ https://pypi.org/project/textual-autocomplete/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/textual-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=(
+ pytest-{asyncio,textual-snapshot}
+ syrupy
+)
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Tests fail but appear visually indistinguishable in snapshot_report.html (v4.0.6)
+ # A closer look reveals differing CSS class names
+ # TODO Investigate root cause
+ tests/snapshots/test_cursor_tracking.py::test_dropdown_tracks_input_cursor_and_cursor_prefix_as_search_string
+ tests/snapshots/test_cursor_tracking.py::test_dropdown_tracks_input_cursor_on_click_and_cursor_prefix_search_string
+)
diff --git a/dev-python/textual-dev/Manifest b/dev-python/textual-dev/Manifest
index 5f2a130a961b..28031114efd5 100644
--- a/dev-python/textual-dev/Manifest
+++ b/dev-python/textual-dev/Manifest
@@ -1,2 +1 @@
-DIST textual-dev-1.7.0.gh.tar.gz 73285 BLAKE2B 1798c09904063cb79ee965be02a5a801693e629376073ed14426ff5ba4712eea299e7fa42322c7eaadce47726d06c4bb9599060ad8a58dd94b55c95c76fd3381 SHA512 a3c2e14a3305620bfedc5a3d5f39844b107881ac2cbd39657f9e60f442e4dafbb8da5cb9d605e7033c1ad5e1766ae5a0c8de5c95127cc90ae4ded19dcc5cc2a3
DIST textual-dev-1.8.0.gh.tar.gz 77325 BLAKE2B be5710d1267cb095dcd86ccbb6ffab1ba4d3c1b5ed7569a7e268199791336c716a388702224568bc729e3f2b88a02d8de1f7e8cd61c332d128a56465cc57831c SHA512 e508922362cc2bd5f7bc275e80cd1bbed74516caa13a5aa1a3f236067a735f3c7d3ab168d4587348a57db6b6845ac1d9bd23b2f3e17d43c96d8b190e3950bc75
diff --git a/dev-python/textual-dev/textual-dev-1.7.0.ebuild b/dev-python/textual-dev/textual-dev-1.7.0.ebuild
deleted file mode 100644
index 6f0c87bb44df..000000000000
--- a/dev-python/textual-dev/textual-dev-1.7.0.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=poetry
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Modern Text User Interface framework"
-HOMEPAGE="https://github.com/Textualize/textual-dev https://pypi.org/project/textual-dev/"
-SRC_URI="https://github.com/Textualize/textual-dev/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- >=dev-python/textual-0.86.2[${PYTHON_USEDEP}]
- >=dev-python/textual-serve-1.0.3[${PYTHON_USEDEP}]
- >=dev-python/aiohttp-3.8.1[${PYTHON_USEDEP}]
- >=dev-python/click-8.1.2[${PYTHON_USEDEP}]
- >=dev-python/msgpack-1.0.3[${PYTHON_USEDEP}]
- =dev-python/typing-extensions-4*[${PYTHON_USEDEP}]
-"
-
-BDEPEND="
- test? (
- dev-python/pytest-aiohttp[${PYTHON_USEDEP}]
- =dev-python/time-machine-2*[${PYTHON_USEDEP}]
- )
-"
-
-DEPEND="${RDEPEND}"
-
-distutils_enable_tests pytest
diff --git a/dev-python/textual-dev/textual-dev-1.8.0.ebuild b/dev-python/textual-dev/textual-dev-1.8.0.ebuild
index 6f0c87bb44df..eae3142e6ebd 100644
--- a/dev-python/textual-dev/textual-dev-1.8.0.ebuild
+++ b/dev-python/textual-dev/textual-dev-1.8.0.ebuild
@@ -14,7 +14,7 @@ SRC_URI="https://github.com/Textualize/textual-dev/archive/refs/tags/v${PV}.tar.
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="~amd64 ~arm64"
RDEPEND="
>=dev-python/textual-0.86.2[${PYTHON_USEDEP}]
@@ -25,13 +25,10 @@ RDEPEND="
=dev-python/typing-extensions-4*[${PYTHON_USEDEP}]
"
-BDEPEND="
- test? (
- dev-python/pytest-aiohttp[${PYTHON_USEDEP}]
- =dev-python/time-machine-2*[${PYTHON_USEDEP}]
- )
-"
-
DEPEND="${RDEPEND}"
+EPYTEST_PLUGINS=(
+ pytest-{asyncio,aiohttp}
+ time-machine
+)
distutils_enable_tests pytest
diff --git a/dev-python/textual-serve/Manifest b/dev-python/textual-serve/Manifest
index 0e4ee825d973..17a563258332 100644
--- a/dev-python/textual-serve/Manifest
+++ b/dev-python/textual-serve/Manifest
@@ -1,2 +1 @@
-DIST textual-serve-1.1.2.gh.tar.gz 450004 BLAKE2B 9b13e350bd5fdbcdca0fbd6084863c5de77ee08540068b09edb53ac47cd3b5079f9d9ab391424da01e4c76351af9e209d5e6dd8166fef62dcbff83bc1bb983be SHA512 d933cdd5aca3fe1e4f3bc8b5156b1f75d0ce3107184422fcd110a1bd9f4d0163e4f40e09452ae55dd688f5d3f14ef58425d46232a6dfea01bce27759995a9cf6
DIST textual_serve-1.1.3.tar.gz 448340 BLAKE2B c9d5c112b413b87c5c1351b991611493ce515c6ae34802c50d17cefe4b6288b8590867c9149b84315e4bc88844761fbe6f04a32dbd09db79cd68e2c17760432e SHA512 c19aec097ade1075bf2cb9ce53f07d63e09e48ec11b80a8d311da035c37ea533609a46d62f2d7c741f3197a2bab14d85585d2e443e5293a459ec0654b7033115
diff --git a/dev-python/textual-serve/textual-serve-1.1.2.ebuild b/dev-python/textual-serve/textual-serve-1.1.2.ebuild
deleted file mode 100644
index 837da9b87959..000000000000
--- a/dev-python/textual-serve/textual-serve-1.1.2.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=hatchling
-PYTHON_COMPAT=( python3_{10..14} )
-
-inherit distutils-r1
-
-DESCRIPTION="Serve Textual apps locally"
-HOMEPAGE="https://github.com/Textualize/textual-serve https://pypi.org/project/textual-serve/"
-SRC_URI="https://github.com/Textualize/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-
-RDEPEND="
- >=dev-python/aiohttp-3.9.5[${PYTHON_USEDEP}]
- >=dev-python/jinja2-3.1.4[${PYTHON_USEDEP}]
- >=dev-python/textual-0.66.0[${PYTHON_USEDEP}]
- dev-python/rich[${PYTHON_USEDEP}]
-"
-DEPEND="${RDEPEND}"
diff --git a/dev-python/textual-serve/textual-serve-1.1.3.ebuild b/dev-python/textual-serve/textual-serve-1.1.3.ebuild
index c916dedb323d..56a8658f3695 100644
--- a/dev-python/textual-serve/textual-serve-1.1.3.ebuild
+++ b/dev-python/textual-serve/textual-serve-1.1.3.ebuild
@@ -13,7 +13,7 @@ HOMEPAGE="https://github.com/Textualize/textual-serve https://pypi.org/project/t
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="~amd64 ~arm64"
RDEPEND="
>=dev-python/aiohttp-3.9.5[${PYTHON_USEDEP}]
diff --git a/dev-python/textual/Manifest b/dev-python/textual/Manifest
index 58bf629c66d5..6e28453ebf54 100644
--- a/dev-python/textual/Manifest
+++ b/dev-python/textual/Manifest
@@ -1 +1,2 @@
DIST textual-8.1.1.gh.tar.gz 30212024 BLAKE2B 897e3d4714aebaaacfed5a84e298a400c3f13224a74d64e958cb9eda1fd368d3ec00b8b6f350e2d229a68299a9007f893979e86f4b09b4ae2e1c39975e46f26e SHA512 335457e9f9b8e44e73e1d7103f9ffb8dd92adc10be906004066659ac5209069bfdb673f78473c21a251a5d891943d56b26b0544fd7365e5d72d4f3d220c73518
+DIST textual-8.2.0.gh.tar.gz 30216630 BLAKE2B 5b68a3c21b93ceac315a38062cf4d3b85d9b36a906fc80684cf6b9645ca7ce02d7216784a8047e502154634375e398ee17918fc4841d29acf88231808c7a152d SHA512 8f4f7f2066fa4baa4dbe84cd0ba73150910423436d1d4cc2536c6bcd8c1f45c826cbc0e567b5497099738b4f35b3790199f4c24e4c2bf17572501661ef3e9488
diff --git a/dev-python/textual/textual-8.1.1-r1.ebuild b/dev-python/textual/textual-8.1.1-r1.ebuild
index cc91ad786d51..416ea220e6aa 100644
--- a/dev-python/textual/textual-8.1.1-r1.ebuild
+++ b/dev-python/textual/textual-8.1.1-r1.ebuild
@@ -18,7 +18,7 @@ SRC_URI="https://github.com/Textualize/textual/archive/refs/tags/v${PV}.tar.gz -
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="~amd64 ~arm64"
RDEPEND="
>=dev-python/markdown-it-py-2.1.0[${PYTHON_USEDEP}]
@@ -29,58 +29,79 @@ RDEPEND="
<dev-python/typing-extensions-5[${PYTHON_USEDEP}]
"
+declare -A SYNTAX_LANGS=(
+ ["bash"]="Bash"
+ ["c"]="C"
+ # TODO Missing keyword for ~arm64 in ::gentoo
+ #["cmake"]="CMake"
+ ["cpp"]="C++"
+ ["html"]="HTML"
+ ["javascript"]="JavaScript"
+ ["json"]="JSON"
+ ["lua"]="Lua"
+ # TODO No Python bindings in ::gentoo
+ #["markdown"]="Markdown"
+ ["python"]="Python"
+ # TODO Missing keyword for ~arm64 in ::gentoo
+ #["ruby"]="Ruby"
+ ["rust"]="Rust"
+ # TODO Many other (common) languages are neither in ::gentoo nor ::guru
+)
+
BDEPEND="
test? (
dev-python/httpx[${PYTHON_USEDEP}]
- =dev-python/textual-dev-1.7*[${PYTHON_USEDEP}]
+ =dev-python/textual-dev-1.8*[${PYTHON_USEDEP}]
+ $(printf " dev-libs/tree-sitter-%s[python,${PYTHON_USEDEP}]" "${!SYNTAX_LANGS[@]}")
)
"
DOCS+=( {CHANGELOG,README}.md )
-EPYTEST_PLUGINS=( pytest-asyncio )
+EPYTEST_PLUGINS=(
+ syrupy
+ pytest-{asyncio,textual-snapshot}
+)
EPYTEST_XDIST=1
-EPYTEST_DESELECT=(
- # Those tests ask to press keys
- tests/snapshot_tests/test_snapshots.py
- tests/test_xterm_parser.py::test_escape_sequence_resulting_in_multiple_keypresses
+distutils_enable_tests pytest
- # Need a package that should be optional
- tests/text_area/test_languages.py
+EPYTEST_DESELECT=(
+ # Require unavailable tree-sitter-*[python] grammar packages (v8.1.1)
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[markdown]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[toml]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[yaml]"
+ "tests/text_area/test_languages.py::test_setting_builtin_language_via_constructor" # markdown
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[css]"
+ "tests/text_area/test_languages.py::test_setting_builtin_language_via_attribute" # markdown
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[go]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[regex]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[sql]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[java]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[xml]"
- # Xdist fails thoses
- tests/test_focus.py::test_focus_next_and_previous
- tests/test_focus.py::test_focus_next_wrap_around
- tests/test_focus.py::test_focus_previous_wrap_around
- tests/test_focus.py::test_wrap_around_selector
- tests/test_focus.py::test_no_focus_empty_selector
- tests/test_focus.py::test_focus_next_and_previous_with_type_selector
- tests/test_focus.py::test_focus_next_and_previous_with_str_selector
- tests/test_focus.py::test_focus_next_and_previous_with_str_selector_without_self
- tests/test_focus.py::test_focus_chain
- tests/test_focus.py::test_allow_focus
- tests/test_focus.py::test_focus_next_and_previous_with_type_selector_without_self
+ # These tests do not render correctly per visual inspection of snapshot_report.html (v8.1.1)
+ # TODO Investigate/ask upstream
+ "tests/snapshot_tests/test_snapshots.py::test_richlog_width"
+ "tests/snapshot_tests/test_snapshots.py::test_richlog_min_width"
+ "tests/snapshot_tests/test_snapshots.py::test_richlog_deferred_render_expand"
+ "tests/snapshot_tests/test_snapshots.py::test_welcome"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_wrapping_and_folding"
- # Needs a fixture that does not exist
- tests/test_progress_bar.py::test_progress_bar_width_1fr
+ # Likely missed in this PR: (v8.1.1)
+ # https://github.com/Textualize/textual/pull/6410#issuecomment-4135017177
+ "tests/test_arrange.py::test_arrange_dock_left"
)
-distutils_enable_tests pytest
-
-# python_test() {
-# if [[ ${EPYTHON} == python3.13 ]]; then
-# EPYTEST_DESELECT+=(
-# # See https://github.com/Textualize/textual/issues/5327
-# "tests/text_area"
-# # Some tests just do not work under python3.13 (more than half of those in this file)
-# tests/test_focus.py
-# )
-# epytest -m 'not syntax' tests
-# else
-# epytest tests
-# fi
-# }
+python_test() {
+ # Tests use @pytest.mark.xdist_group
+ epytest --dist loadgroup
+}
pkg_postinst() {
- optfeature "bindings for python" dev-python/tree-sitter
+ optfeature_header "Install additional packages for syntax highlighting:"
+
+ local lang
+ for lang in "${!SYNTAX_LANGS[@]}"; do
+ optfeature "${SYNTAX_LANGS[${lang}]}" "dev-libs/tree-sitter-${lang}[python]"
+ done
}
diff --git a/dev-python/textual/textual-8.2.0.ebuild b/dev-python/textual/textual-8.2.0.ebuild
new file mode 100644
index 000000000000..416ea220e6aa
--- /dev/null
+++ b/dev-python/textual/textual-8.2.0.ebuild
@@ -0,0 +1,107 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{10..14} )
+
+inherit distutils-r1 optfeature
+
+DESCRIPTION="Modern Text User Interface framework"
+HOMEPAGE="
+ https://textual.textualize.io/
+ https://github.com/Textualize/textual
+ https://pypi.org/project/textual/
+"
+SRC_URI="https://github.com/Textualize/textual/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+ >=dev-python/markdown-it-py-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.6.0[${PYTHON_USEDEP}]
+ <dev-python/platformdirs-5[${PYTHON_USEDEP}]
+ >=dev-python/rich-14.2.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.4.0[${PYTHON_USEDEP}]
+ <dev-python/typing-extensions-5[${PYTHON_USEDEP}]
+"
+
+declare -A SYNTAX_LANGS=(
+ ["bash"]="Bash"
+ ["c"]="C"
+ # TODO Missing keyword for ~arm64 in ::gentoo
+ #["cmake"]="CMake"
+ ["cpp"]="C++"
+ ["html"]="HTML"
+ ["javascript"]="JavaScript"
+ ["json"]="JSON"
+ ["lua"]="Lua"
+ # TODO No Python bindings in ::gentoo
+ #["markdown"]="Markdown"
+ ["python"]="Python"
+ # TODO Missing keyword for ~arm64 in ::gentoo
+ #["ruby"]="Ruby"
+ ["rust"]="Rust"
+ # TODO Many other (common) languages are neither in ::gentoo nor ::guru
+)
+
+BDEPEND="
+ test? (
+ dev-python/httpx[${PYTHON_USEDEP}]
+ =dev-python/textual-dev-1.8*[${PYTHON_USEDEP}]
+ $(printf " dev-libs/tree-sitter-%s[python,${PYTHON_USEDEP}]" "${!SYNTAX_LANGS[@]}")
+ )
+"
+
+DOCS+=( {CHANGELOG,README}.md )
+
+EPYTEST_PLUGINS=(
+ syrupy
+ pytest-{asyncio,textual-snapshot}
+)
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Require unavailable tree-sitter-*[python] grammar packages (v8.1.1)
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[markdown]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[toml]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[yaml]"
+ "tests/text_area/test_languages.py::test_setting_builtin_language_via_constructor" # markdown
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[css]"
+ "tests/text_area/test_languages.py::test_setting_builtin_language_via_attribute" # markdown
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[go]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[regex]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[sql]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[java]"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_language_rendering[xml]"
+
+ # These tests do not render correctly per visual inspection of snapshot_report.html (v8.1.1)
+ # TODO Investigate/ask upstream
+ "tests/snapshot_tests/test_snapshots.py::test_richlog_width"
+ "tests/snapshot_tests/test_snapshots.py::test_richlog_min_width"
+ "tests/snapshot_tests/test_snapshots.py::test_richlog_deferred_render_expand"
+ "tests/snapshot_tests/test_snapshots.py::test_welcome"
+ "tests/snapshot_tests/test_snapshots.py::test_text_area_wrapping_and_folding"
+
+ # Likely missed in this PR: (v8.1.1)
+ # https://github.com/Textualize/textual/pull/6410#issuecomment-4135017177
+ "tests/test_arrange.py::test_arrange_dock_left"
+)
+
+python_test() {
+ # Tests use @pytest.mark.xdist_group
+ epytest --dist loadgroup
+}
+
+pkg_postinst() {
+ optfeature_header "Install additional packages for syntax highlighting:"
+
+ local lang
+ for lang in "${!SYNTAX_LANGS[@]}"; do
+ optfeature "${SYNTAX_LANGS[${lang}]}" "dev-libs/tree-sitter-${lang}[python]"
+ done
+}