commit: cc7b80402e92be374d1d44deb70f3b719b461059 Author: Kyle Elbert <kcelbert <AT> gmail <DOT> com> AuthorDate: Tue Jan 21 06:02:45 2025 +0000 Commit: Kyle Elbert <kcelbert <AT> gmail <DOT> com> CommitDate: Tue Jan 21 06:02:52 2025 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=cc7b8040
dev-python/cloudflare: add 4.0.0 Bug: https://bugs.gentoo.org/948477 Signed-off-by: Kyle Elbert <kcelbert <AT> gmail.com> dev-python/cloudflare/Manifest | 2 + dev-python/cloudflare/cloudflare-4.0.0.ebuild | 100 ++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/dev-python/cloudflare/Manifest b/dev-python/cloudflare/Manifest index 2a7fa2788..f6b85cb49 100644 --- a/dev-python/cloudflare/Manifest +++ b/dev-python/cloudflare/Manifest @@ -1 +1,3 @@ DIST cloudflare-2.19.4.gh.tar.gz 151397 BLAKE2B c91c95f52314c5177d823ef8f827ea2f76f6cc703260449aea12d54c1b77d061feca15d4bb845f84cfb4fd80789e5064e54d7530daf546d54d17054b9e0b4fda SHA512 8ae11e73760c57b610abfe5e2c8fdc83c2e0b9e07340884925ec9ac3bf5b40b4edf39b2b8ce7330538369d7573146a2ddac195efb0efb4ff657f75fdacb31aed +DIST cloudflare-4.0.0.gh.tar.gz 1715334 BLAKE2B 3ec5ace00c173caec36e75001a7f0fb08e3747902cfbd45a29958c7d4a124b93b24c431ed0967d2100056de7b3063625379723512aee4be7a03dfeb2c4bdbc5a SHA512 ac156af42cadfd1c63568df485c816de0b3720af18ec12b25cb88e06476e817707a29de91bfce8da3b7f7b4e690b6c33aa6c38bc2b485901e81e032dae0d0109 +DIST cloudflare-python-4.0.0-prism.tar.gz 10687934 BLAKE2B d8696ec3f20d56e8ed5578d96ff41e4b90faf8d440b734b76d7217b8127f1c428e523f75f266cd9a677a3501b961844107afb03b2ec06f9940aadbf369a3567e SHA512 0d622922f26f9a6749858f226ff8ac5baee613a771e9cbe16787932304b5c1654c1a6d928ce7fe4734bc0710f3357160dcbe441f9238ae8c33cde02435e169e8 diff --git a/dev-python/cloudflare/cloudflare-4.0.0.ebuild b/dev-python/cloudflare/cloudflare-4.0.0.ebuild new file mode 100644 index 000000000..013ddf060 --- /dev/null +++ b/dev-python/cloudflare/cloudflare-4.0.0.ebuild @@ -0,0 +1,100 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..12} ) +DISTUTILS_USE_PEP517="hatchling" +inherit distutils-r1 +DESCRIPTION="Python wrapper for the Cloudflare v4 API" +HOMEPAGE="https://pypi.org/project/cloudflare/" +if [ "${PV}" == 9999 ]; then + EGIT_REPO_URI="https://github.com/cloudflare/cloudflare-python" + inherit git-r3 +else + MYPV=$(ver_rs 3 -) + MYPV=${MYPV/beta/beta.} + MYPN="cloudflare-python" + SRC_URI="https://github.com/cloudflare/cloudflare-python/archive/refs/tags/v${MYPV}.tar.gz -> ${P}.gh.tar.gz + test? ( https://github.com/Phoenix591/${MYPN}/releases/download/${PV}/${MYPN}-${PV}-prism.tar.gz )" + #Prism archive generated by workflow + # https://github.com/Phoenix591/cloudflare-python/blob/master/.github/workflows/test-tar.yml + S="${WORKDIR}/${MYPN}-${MYPV}" + KEYWORDS="~amd64 ~arm64" +fi +LICENSE="MIT test? ( ISC Apache-2.0 MIT BSD CC0-1.0 0BSD )" +# nodejs module and deps used to test +SLOT="0" +RDEPEND=" ${DEPEND} + >=dev-python/httpx-0.23.0[${PYTHON_USEDEP}] + >=dev-python/pydantic-2.9.2[${PYTHON_USEDEP}] + >=dev-python/typing-extensions-4.7.0[${PYTHON_USEDEP}] + >=dev-python/anyio-4.3.0[${PYTHON_USEDEP}] + >=dev-python/distro-1.7.0[${PYTHON_USEDEP}] + >=dev-python/sniffio-1.3.1[${PYTHON_USEDEP}] + " + +BDEPEND="test? ( + >=net-libs/nodejs-18.20.1 + dev-python/pytest-asyncio[${PYTHON_USEDEP}] + dev-python/time-machine[${PYTHON_USEDEP}] + dev-python/dirty-equals[${PYTHON_USEDEP}] + dev-python/respx[${PYTHON_USEDEP}] + ${RDEPEND} +)" + +distutils_enable_tests pytest +RESTRICT+=" !test? ( test )" + +src_unpack() { + unpack "${P}.gh.tar.gz" + use test && cd "${S}" && unpack "cloudflare-python-${PV}-prism.tar.gz" +} + +#python_prepare_all() { +# # don't install tests or examples +# sed -i -e "s/'cli4', 'examples'/'cli4'/" \ +# -e "s#'CloudFlare/tests',##" \ +# setup.py || die +# sed -i -e "/def test_ips7_should_fail():/[email protected](reason='Now fails upstream')" \ +# -e "2s/^/import pytest/" \ +# CloudFlare/tests/test_cloudflare_calls.py || die +# distutils-r1_python_prepare_all +#} + +python_test() { + # these 2 tests fail in an ebuild environment for some reason + # help appreciated + local EPYTEST_DESELECT=( + tests/test_client.py::TestCloudflare::test_validate_headers + tests/test_client.py::TestAsyncCloudflare::test_validate_headers ) + #intermittently fail for unknown reasons, passed along to upstream + EPYTEST_DESELECT+=( + tests/test_client.py::TestAsyncCloudflare::test_copy_build_request + tests/test_client.py::TestCloudflare::test_copy_build_request ) + epytest +} + +src_test() { + start_mock + distutils-r1_src_test + stop_mock +} +start_mock() { +# Run prism mock api server, this is what needs nodejs + node --no-warnings node_modules/@stainless-api/prism-cli/dist/index.js mock \ + "cloudflare-spec.yml" >prism.log || die "Failed starting prism" & + echo $! >"${T}/mock.pid" || die + # Wait for server to come online + echo -n "Waiting for mockserver" + while ! grep -q "✖ fatal\|Prism is listening" "prism.log" ; do + echo -n "." || die + sleep 0.5 + done + if grep -q "✖ fatal" prism.log; then + die "Prism mock server failed" + fi +} +stop_mock() { + kill $(cat "${T}/mock.pid") || die +}
