Skip to main content

Use Graphene v3 on Starlette

Project description

starlette-graphene3

A simple ASGI app for using Graphene v3 with Starlette / FastAPI.

Test codecov pypi package

It supports:

File uploading requires python-multipart to be installed.

Alternatives

Installation

pip3 install -U starlette-graphene3

Example

import asyncio

import graphene
from graphene_file_upload.scalars import Upload

from starlette.applications import Starlette
from starlette_graphene3 import GraphQLApp, make_graphiql_handler


class User(graphene.ObjectType):
    id = graphene.ID()
    name = graphene.String()


class Query(graphene.ObjectType):
    me = graphene.Field(User)

    def resolve_me(root, info):
        return {"id": "john", "name": "John"}


class FileUploadMutation(graphene.Mutation):
    class Arguments:
        file = Upload(required=True)

    ok = graphene.Boolean()

    def mutate(self, info, file, **kwargs):
        return FileUploadMutation(ok=True)


class Mutation(graphene.ObjectType):
    upload_file = FileUploadMutation.Field()


class Subscription(graphene.ObjectType):
    count = graphene.Int(upto=graphene.Int())

    async def subscribe_count(root, info, upto=3):
        for i in range(upto):
            yield i
            await asyncio.sleep(1)


app = Starlette()
schema = graphene.Schema(query=Query, mutation=Mutation, subscription=Subscription)

app.mount("/", GraphQLApp(schema, on_get=make_graphiql_handler()))  # Graphiql IDE

# app.mount("/", GraphQLApp(schema, on_get=make_playground_handler()))  # Playground IDE
# app.mount("/", GraphQLApp(schema)) # no IDE

GraphQLApp

GraphQLApp(schema, [options...])

class GraphQLApp:
    def __init__(
        self,
        schema: graphene.Schema,  # Requied
        *,
        # Optional keyword parameters
        on_get: Optional[
            Callable[[Request], Union[Response, Awaitable[Response]]]
        ] = None,  # optional HTTP handler for GET requests
        context_value: ContextValue = None,
        root_value: RootValue = None,
        middleware: Optional[Middleware] = None,
        error_formatter: Callable[[GraphQLError], Dict[str, Any]] = format_error,
        logger_name: Optional[str] = None,
        playground: bool = False,  # deprecating
        execution_context_class: Optional[Type[ExecutionContext]] = None,
    ):

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starlette-graphene3-0.6.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

starlette_graphene3-0.6.0-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file starlette-graphene3-0.6.0.tar.gz.

File metadata

  • Download URL: starlette-graphene3-0.6.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.12 Darwin/21.4.0

File hashes

Hashes for starlette-graphene3-0.6.0.tar.gz
Algorithm Hash digest
SHA256 cbe4ca397b24013d5b3161dd4144e9b3e836af0ef01a625bb6113946fc7d36d9
MD5 d40834f268f05bd237c3af4c41e20637
BLAKE2b-256 a93cf216ea04650e56de248bc6995ee87652e7002693198d8edc1076f650c29c

See more details on using hashes here.

File details

Details for the file starlette_graphene3-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for starlette_graphene3-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 193ff6e0900a3259ccf76b534cd84eaa2feefcaf92652b3b0f54fc784c80ce14
MD5 b7d84241c5d3d0ff53c6af9beaabce52
BLAKE2b-256 994064647d16f04ffdaf6cb502f73e2137c5f05cd3b0e521ade85a91aae4fe5d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page