aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Knoblich <kai@FreeBSD.org>2024-03-31 14:14:43 +0000
committerKai Knoblich <kai@FreeBSD.org>2024-03-31 14:34:36 +0000
commit30b5dea292c9429fbe34ebe7477b5a193867bf0c (patch)
tree2878bb9410eb81dcd5bba862b7a3350db1ff4512
parent5dae1d056a2291ca9ffdeb7d43a9192da5eff4d2 (diff)
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
-rw-r--r--devel/Makefile1
-rw-r--r--devel/py-strawberry-graphql/Makefile75
-rw-r--r--devel/py-strawberry-graphql/distinfo3
-rw-r--r--devel/py-strawberry-graphql/files/patch-pyproject.toml15
-rw-r--r--devel/py-strawberry-graphql/pkg-descr23
5 files changed, 117 insertions, 0 deletions
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.