git: 30b5dea292c9 - main - devel/py-strawberry-graphql: New port

From: Kai Knoblich <kai_at_FreeBSD.org>
Date: Sun, 31 Mar 2024 14:37:38 UTC
The branch main has been updated by kai:

URL: https://cgit.FreeBSD.org/ports/commit/?id=30b5dea292c9429fbe34ebe7477b5a193867bf0c

commit 30b5dea292c9429fbe34ebe7477b5a193867bf0c
Author:     Kai Knoblich <kai@FreeBSD.org>
AuthorDate: 2024-03-31 14:14:43 +0000
Commit:     Kai Knoblich <kai@FreeBSD.org>
CommitDate: 2024-03-31 14:34:36 +0000

    devel/py-strawberry-graphql: New port
    
    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.
    
    https://github.com/strawberry-graphql/strawberry
---
 devel/Makefile                                     |  1 +
 devel/py-strawberry-graphql/Makefile               | 75 ++++++++++++++++++++++
 devel/py-strawberry-graphql/distinfo               |  3 +
 .../files/patch-pyproject.toml                     | 15 +++++
 devel/py-strawberry-graphql/pkg-descr              | 23 +++++++
 5 files changed, 117 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 6222fe53118f..80c6a2f0d7d9 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 000000000000..bd0321e51c38
--- /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 <bsd.port.pre.mk>
+
+.if ${PYTHON_REL} < 30900
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}astunparse>=1.6.3:devel/py-astunparse@${PY_FLAVOR}
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/devel/py-strawberry-graphql/distinfo b/devel/py-strawberry-graphql/distinfo
new file mode 100644
index 000000000000..36d6c312311e
--- /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 000000000000..b6623c4bd812
--- /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 000000000000..ea25df49f06d
--- /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.