diff --git a/devel/Makefile b/devel/Makefile index 6222fe53118f9..80c6a2f0d7d91 100644 --- a/devel/Makefile +++ b/devel/Makefile @@ -5708,6 +5708,7 @@ SUBDIR += py-stone SUBDIR += py-stopit SUBDIR += py-strategies + SUBDIR += py-strawberry-graphql SUBDIR += py-streamparse SUBDIR += py-strenum SUBDIR += py-strict-rfc3339 diff --git a/devel/py-strawberry-graphql/Makefile b/devel/py-strawberry-graphql/Makefile new file mode 100644 index 0000000000000..bd0321e51c389 --- /dev/null +++ b/devel/py-strawberry-graphql/Makefile @@ -0,0 +1,75 @@ +PORTNAME= strawberry-graphql +DISTVERSION= 0.224.1 +CATEGORIES= devel python +MASTER_SITES= PYPI +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} +DISTNAME= strawberry_graphql-${DISTVERSION} + +MAINTAINER= kai@FreeBSD.org +COMMENT= Library for creating GraphQL APIs +WWW= https://github.com/strawberry-graphql/strawberry + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}poetry-core>=0.12.0:devel/py-poetry-core@${PY_FLAVOR} +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dateutil>=2.7.0:devel/py-dateutil@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}graphql-core>=3.2.0:devel/py-graphql-core@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}typing-extensions>=4.5.0:devel/py-typing-extensions@${PY_FLAVOR} + +USES= python +USE_PYTHON= autoplist pep517 + +NO_ARCH= yes + +OPTIONS_DEFINE= AIOHTTP ASGI CHANNELS CLI DEBUG DEBUG-SERVER DJANGO \ + FASTAPI FLASK OPENTELEMETRY PYDANTIC + +AIOHTTP_DESC= Basic AIOHTTP integration +ASGI_DESC= Basic ASGI integration +CHANNELS_DESC= Support for Django Channels +CLI_DESC= Support for CLI commands +DEBUG-SERVER_DESC= Enable debug server +DEBUG_DESC= Generate verbose debug information +DJANGO_DESC= Basic Django integration +FASTAPI_DESC= Support for FastAPI in conjunction with GraphQLRouter +FLASK_DESC= Basic Flask integration +OPENTELEMETRY_DESC= Generate Open Telemetry compatible tracing information +PYDANTIC_DESC= Support for Pydantic models + +AIOHTTP_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiohttp>=3.7.4:www/py-aiohttp@${PY_FLAVOR} +ASGI_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}multipart>=0.0.7:devel/py-multipart@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}starlette>=0.18.0:www/py-starlette@${PY_FLAVOR} +CHANNELS_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}asgiref>=3.2:www/py-asgiref@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}channels>=3.0.5:www/py-channels@${PY_FLAVOR} +CLI_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libcst>=0.4.7:devel/py-libcst@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pygments>=2.3:textproc/py-pygments@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rich>=12.0.0:textproc/py-rich@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}typer>=0.7.0:devel/py-typer@${PY_FLAVOR} +DEBUG-SERVER_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libcst>=0.4.7:devel/py-libcst@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}multipart>=0.0.7:devel/py-multipart@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pygments>=2.3:textproc/py-pygments@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rich>=12.0.0:textproc/py-rich@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}starlette>=0.18.0:www/py-starlette@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}typer>=0.7.0:devel/py-typer@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}uvicorn>=0.11.6:www/py-uvicorn@${PY_FLAVOR} +DEBUG_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libcst>=0.4.7:devel/py-libcst@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rich>=12.0.0:textproc/py-rich@${PY_FLAVOR} +DJANGO_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}asgiref>=3.2:www/py-asgiref@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}django32>=3.2:www/py-django32@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytest-django>0:devel/py-pytest-django@${PY_FLAVOR} +FASTAPI_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}fastapi>=0.62.5:www/py-fastapi@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}multipart>=0.0.7:devel/py-multipart@${PY_FLAVOR} +FLASK_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}flask>=1.1:www/py-flask@${PY_FLAVOR} +OPENTELEMETRY_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}opentelemetry-api<2:devel/py-opentelemetry-api@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}opentelemetry-sdk<2:devel/py-opentelemetry-sdk@${PY_FLAVOR} +# NB: Switch to devel/py-pydantic once www/py-fastapi uses it +PYDANTIC_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pydantic2>1.6.1:devel/py-pydantic2@${PY_FLAVOR} + +.include + +.if ${PYTHON_REL} < 30900 +RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}astunparse>=1.6.3:devel/py-astunparse@${PY_FLAVOR} +.endif + +.include diff --git a/devel/py-strawberry-graphql/distinfo b/devel/py-strawberry-graphql/distinfo new file mode 100644 index 0000000000000..36d6c312311e6 --- /dev/null +++ b/devel/py-strawberry-graphql/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1711883910 +SHA256 (strawberry_graphql-0.224.1.tar.gz) = d1fec0c9896594d271b8932aa97b43db931b14107b96ee1fb3890396c85335fa +SIZE (strawberry_graphql-0.224.1.tar.gz) = 197944 diff --git a/devel/py-strawberry-graphql/files/patch-pyproject.toml b/devel/py-strawberry-graphql/files/patch-pyproject.toml new file mode 100644 index 0000000000000..b6623c4bd812d --- /dev/null +++ b/devel/py-strawberry-graphql/files/patch-pyproject.toml @@ -0,0 +1,15 @@ +Use the more lightweight build system "poetry-core". + +--- pyproject.toml.orig 2024-03-24 18:49:43 UTC ++++ pyproject.toml +@@ -30,8 +30,8 @@ include = ["strawberry/py.typed"] + "Sponsor on Open Collective" = "https://opencollective.com/strawberry-graphql" + + [build-system] +-requires = ["poetry>=0.12"] +-build-backend = "poetry.masonry.api" ++requires = ["poetry-core>=0.12"] ++build-backend = "poetry.core.masonry.api" + + [tool.poetry.dependencies] + python = "^3.8" diff --git a/devel/py-strawberry-graphql/pkg-descr b/devel/py-strawberry-graphql/pkg-descr new file mode 100644 index 0000000000000..ea25df49f06d9 --- /dev/null +++ b/devel/py-strawberry-graphql/pkg-descr @@ -0,0 +1,23 @@ +Strawberry is a developer friendly GraphQL library for Python, designed for +modern development. + +* Type hints: Leverages Python type hints to provide a great developer + experience while creating GraphQL Libraries. + +* Async Support: Supports async/await out of the box, allowing you to write + your resolvers in a non-blocking way. + +* Extensible: Has support for schema and field extensions, allowing you to + extend the schema with custom logic. + +* Generics: Supports generics, allowing you to create reusable types that can + be used in multiple places. + +* Federation: Supports Federation, allowing you to create a federated GraphQL + schema. + +* Dataloaders: Comes with support for dataloaders, allowing you to batch + multiple queries into a single one. + +* Integrations: Has support for multiple integrations, allowing you to use it + with your favorite web framework.