diff --git a/dev-python/pydocket/Manifest b/dev-python/pydocket/Manifest index fd75a97b6b..fed6e67250 100644 --- a/dev-python/pydocket/Manifest +++ b/dev-python/pydocket/Manifest @@ -1 +1,2 @@ DIST pydocket-0.21.1.tar.gz 399652 BLAKE2B f9ab6e069368fd1939b323d7e12fe9be954af0920ca12058b3dad12dabab48abe6f6227bbf34fe9f24adca1dd6274ac9866b8f9b62da8a2ad971708687dcba68 SHA512 350dbd2003db4dc3525ba6c2e6150857061d3fb0cdc46a3fce6f3fcfe61f0056f456a4d549efba3ef4c5d6070a8c4ad6af3327ef2173de10dc866a52e0089f5d +DIST pydocket-0.22.0.tar.gz 407557 BLAKE2B f451435dfe9c76090e2d2af37321747d79e3b7b5869370a92cd09735cfa1490b0eb140890834715c445ecc67a85085d7148416c6ab51681671f58b31e4dd52d2 SHA512 49f8acfbce87ac90114463d40dcf5f6dffd76e350eef87f185d643eca3edddfc3b2b49ad444b6e737454968c8648def0577df9fbf2059e69e2f706689f234bc3 diff --git a/dev-python/pydocket/pydocket-0.22.0.ebuild b/dev-python/pydocket/pydocket-0.22.0.ebuild new file mode 100644 index 0000000000..3f00d8740c --- /dev/null +++ b/dev-python/pydocket/pydocket-0.22.0.ebuild @@ -0,0 +1,91 @@ +# Copyright 2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=hatchling +PYTHON_COMPAT=( python3_{12..14} ) + +inherit distutils-r1 optfeature pypi + +DESCRIPTION="A distributed background task system for Python functions" +HOMEPAGE=" + https://docket.lol/ + https://github.com/chrisguidry/docket + https://pypi.org/project/pydocket/ +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm64" + +RDEPEND=" + >=dev-python/burner-redis-0.1.7[${PYTHON_USEDEP}] + >=dev-python/cloudpickle-3.1.1[${PYTHON_USEDEP}] + >=dev-python/cronsim-2.6[${PYTHON_USEDEP}] + >=dev-python/opentelemetry-api-1.33.0[${PYTHON_USEDEP}] + >=dev-python/prometheus-client-0.21.1[${PYTHON_USEDEP}] + >=dev-python/py-key-value-aio-0.3.0[${PYTHON_USEDEP}] + >=dev-python/python-json-logger-2.0.7[${PYTHON_USEDEP}] + >=dev-python/redis-5[${PYTHON_USEDEP}] + >=dev-python/rich-13.9.4[${PYTHON_USEDEP}] + >=dev-python/typer-0.15.1[${PYTHON_USEDEP}] + >=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}] + >=dev-python/uncalled-for-0.3.2[${PYTHON_USEDEP}] +" + +EPYTEST_PLUGINS=( pytest-{asyncio,timeout} ) +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +EPYTEST_DESELECT=( + # requires dev-python/opentelemetry-exporter-prometheus + tests/instrumentation/test_export.py::test_exports_metrics_as_prometheus_metrics + + # fails with xdist + tests/instrumentation/test_tracing.py::test_admission_blocked_span_has_ok_status +) + +src_prepare() { + distutils-r1_src_prepare + + # no coverage + sed -i \ + -e '/--cov/d' \ + -e '/--numprocesses/d' \ + -e '/--maxprocesses/d' \ + pyproject.toml || die + rm tests/sitecustomize.py || die + + # mock various Docker types to avoid dev-python/docker dependency + cat - tests/_container.py <<- 'EOF' > tests/_container.py.tmp || die + class _DockerErrors: + ImageNotFound = Exception + class _Docker: + errors = _DockerErrors + docker = _Docker() + DockerClient = object + Container = object + EOF + mv tests/_container.py{.tmp,} || die + + sed -i \ + -e '/import docker\.errors/d' \ + -e '/from docker/d' \ + tests/_container.py || die + + sed -i \ + -e '/from docker import DockerClient/d' \ + -e '/from docker\.models\.containers import Container/d' \ + -e '/from tests\._container import (/a \ Container, DockerClient,' \ + tests/conftest.py || die +} + +python_test() { + local -x REDIS_VERSION="memory" + epytest +} + +pkg_postinst() { + optfeature "metrics" dev-python/opentelemetry-sdk +}