# Copyright 2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 DISTUTILS_USE_PEP517=hatchling PYTHON_COMPAT=( python3_{11,12,13,14} ) inherit distutils-r1 pypi DESCRIPTION="The fast, Pythonic way to build MCP servers and clients." HOMEPAGE="https://github.com/PrefectHQ/fastmcp" LICENSE="Apache-2.0" SLOT="0" KEYWORDS="~amd64" RDEPEND=">=dev-python/authlib-1.6.11[${PYTHON_USEDEP}] >=dev-python/cyclopts-4.0.0[${PYTHON_USEDEP}] >=dev-python/exceptiongroup-1.2.2[${PYTHON_USEDEP}] >=dev-python/griffelib-2.0.0[${PYTHON_USEDEP}] >=dev-python/httpx-0.28.1[${PYTHON_USEDEP}] =dev-python/joserfc-1.1.0[${PYTHON_USEDEP}] >=dev-python/jsonref-1.1.0[${PYTHON_USEDEP}] >=dev-python/jsonschema-path-0.3.4[${PYTHON_USEDEP}] >=dev-python/mcp-1.24.0[${PYTHON_USEDEP}] =dev-python/openapi-pydantic-0.5.1[${PYTHON_USEDEP}] >=dev-python/opentelemetry-api-1.20.0[${PYTHON_USEDEP}] >=dev-python/packaging-24.0[${PYTHON_USEDEP}] >=dev-python/platformdirs-4.0.0[${PYTHON_USEDEP}] >=dev-python/py-key-value-aio-0.4.4[${PYTHON_USEDEP}] =dev-python/pydantic-2.11.7[${PYTHON_USEDEP}] >=dev-python/pydantic-settings-2.0.0[${PYTHON_USEDEP}] >=dev-python/pyperclip-1.9.0[${PYTHON_USEDEP}] >=dev-python/python-dotenv-1.1.0[${PYTHON_USEDEP}] >=dev-python/python-multipart-0.0.26[${PYTHON_USEDEP}] >=dev-python/pyyaml-6.0[${PYTHON_USEDEP}] =dev-python/rich-13.9.4[${PYTHON_USEDEP}] >=dev-python/starlette-1.0.1[${PYTHON_USEDEP}] >=dev-python/typing-extensions-4.0.0[${PYTHON_USEDEP}] >=dev-python/uncalled-for-0.2.0[${PYTHON_USEDEP}] >=dev-python/uvicorn-0.35[${PYTHON_USEDEP}] >=dev-python/watchfiles-1.0.0[${PYTHON_USEDEP}] >=dev-python/websockets-15.0.1[${PYTHON_USEDEP}]" BDEPEND="test? ( dev-python/dirty-equals[${PYTHON_USEDEP}] dev-python/fastapi[${PYTHON_USEDEP}] dev-python/inline-snapshot[${PYTHON_USEDEP}] dev-python/ipython[${PYTHON_USEDEP}] dev-python/opentelemetry-exporter-otlp-proto-grpc[${PYTHON_USEDEP}] dev-python/opentelemetry-sdk[${PYTHON_USEDEP}] dev-python/pdbpp[${PYTHON_USEDEP}] dev-python/psutil[${PYTHON_USEDEP}] dev-python/pyinstrument[${PYTHON_USEDEP}] dev-python/pyperclip[${PYTHON_USEDEP}] dev-python/pytest-asyncio[${PYTHON_USEDEP}] dev-python/pytest-cov[${PYTHON_USEDEP}] dev-python/pytest-env[${PYTHON_USEDEP}] dev-python/pytest-examples[${PYTHON_USEDEP}] dev-python/pytest-flakefinder[${PYTHON_USEDEP}] dev-python/pytest-httpx[${PYTHON_USEDEP}] dev-python/pytest-report[${PYTHON_USEDEP}] dev-python/pytest-retry[${PYTHON_USEDEP}] dev-python/pytest-timeout[${PYTHON_USEDEP}] dev-python/pytest-xdist[${PYTHON_USEDEP}] )" src_prepare() { # As of 3.x the top-level fastmcp distribution is an empty meta-package that # merely depends on fastmcp-slim; the actual module lives in fastmcp_slim/. # Build that project from the sdist root so tests/ stays in reach, treating # fastmcp_slim/ as a src-layout directory. cp fastmcp_slim/pyproject.toml pyproject.toml || die # uv-dynamic-versioning is not packaged. It only supplies the version and # the extras, and both are expressed statically here and in RDEPEND. sed -i \ -e 's/^dynamic = .*/version = "'"${PV}"'"/' \ -e 's/, "uv-dynamic-versioning>=0.7.0"//' \ -e 's|^packages = \["fastmcp"\]|packages = ["fastmcp_slim/fastmcp"]|' \ -e '/^\[tool\.hatch\.version\]/,/^$/d' \ -e '/^\[tool\.uv-dynamic-versioning\]/,/^$/d' \ -e '/^\[tool\.hatch\.metadata\.hooks\.uv-dynamic-versioning/,$d' \ pyproject.toml || die distutils-r1_src_prepare } EPYTEST_PLUGINS=( pytest-asyncio pytest-cov pytest-env pytest-examples pytest-flakefinder pytest-httpx pytest-report pytest-retry pytest-timeout pytest-xdist ) distutils_enable_tests pytest