Strawberry GraphQL

Python GraphQL library based on dataclasses.

Installation ( Quick Start )

The quick start method provides a server and CLI to get going quickly.
Install with:

pip install strawberry-graphql[debug-server]

Getting Started

Create a file called with the following code:

import strawberry

class User:
    name: str
    age: int

class Query:
    def user(self, info) -> User:
        return User(name="Patrick", age=100)

schema = strawberry.Schema(query=Query)

This will create a GraphQL schema defining a User type and a single query
field user that will return a hardcoded user.

To run the debug server run the following command:

strawberry server app

Open the debug server by clicking on the following link:

This will open GraphiQL where you can test the API.


Strawberry comes with a mypy plugin that enables statically type-checking your
GraphQL schema. To enable it, add the following lines to your mypy.ini

plugins = strawberry.ext.mypy_plugin

Django Integration

A Django view is provided for adding a GraphQL endpoint to your application.

  1. Add the app to your INSTALLED_APPS.
  1. Add the view to your file.
from strawberry.django.views import GraphQLView
from .schema import schema

urlpatterns = [
    path('graphql', GraphQLView.as_view(schema=schema)),


To support graphql Subscriptions over WebSockets you need to provide a WebSocket
enabled server. The debug server can be made to support WebSockets with these commands:

pip install strawberry-graphql[debug-server]
pip install uvicorn[standard]


We use poetry to manage dependencies, to
get started follow these steps:

git clone
cd strawberry
poetry install
poetry run pytest

This will install all the dependencies (including dev ones) and run the tests.

Pre commit

We have a configuration for
pre-commit, to add the hook run the
following command:

pre-commit install