Skip to content

Commit

Permalink
devel/py-strawberry-graphql: New port
Browse files Browse the repository at this point in the history
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
  • Loading branch information
knobix committed Mar 31, 2024
1 parent 5dae1d0 commit 30b5dea
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 0 deletions.
1 change: 1 addition & 0 deletions devel/Makefile
Expand Up @@ -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
Expand Down
75 changes: 75 additions & 0 deletions 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>
3 changes: 3 additions & 0 deletions 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
15 changes: 15 additions & 0 deletions 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"
23 changes: 23 additions & 0 deletions 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.

0 comments on commit 30b5dea

Please sign in to comment.