diff options
Diffstat (limited to 'dev-python/cloudflare/cloudflare-5.1.0.ebuild')
| -rw-r--r-- | dev-python/cloudflare/cloudflare-5.1.0.ebuild | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/dev-python/cloudflare/cloudflare-5.1.0.ebuild b/dev-python/cloudflare/cloudflare-5.1.0.ebuild new file mode 100644 index 000000000000..d691a5ced040 --- /dev/null +++ b/dev-python/cloudflare/cloudflare-5.1.0.ebuild @@ -0,0 +1,94 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..14} ) +DISTUTILS_USE_PEP517="hatchling" +inherit distutils-r1 eapi9-ver +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 + RESTRICT="test" +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/${MYPV}/${MYPN}-${MYPV}-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="" +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? ( + >=dev-python/httpx-aiohttp-0.1.9[${PYTHON_USEDEP}] + >=net-libs/nodejs-18.20.1 + dev-python/time-machine[${PYTHON_USEDEP}] + dev-python/dirty-equals[${PYTHON_USEDEP}] + ${RDEPEND} +)" +EPYTEST_PLUGINS=( pytest-xdist pytest-asyncio respx ) +distutils_enable_tests pytest +RESTRICT+=" !test? ( test )" +DOCS="docs/migration-guides/v5.0.0-migration-guide.md" + +src_unpack() { + unpack "${P}.gh.tar.gz" + use test && cd "${S}" && unpack "cloudflare-python-${MYPV}-prism.tar.gz" +} + +python_test() { + # these 2 tests fail in our sandbox for some reason + local EPYTEST_DESELECT=( + tests/test_client.py::TestCloudflare::test_validate_headers + tests/test_client.py::TestAsyncCloudflare::test_validate_headers ) + 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 +} + +pkg_postinst() { + if ver_replacing -lt "5.0.0_beta1"; then + elog "Cloudflare 5 has several breaking changes" + elog "See /usr/share/doc/${P}/docs/v5-migration-guide.md" + elog "It also includes a new optional dependency on httpx-aiohttp" + elog "Check the README for details" + fi +} |
