https://github.com/strawberry-graphql/strawberry
A GraphQL library for Python that leverages type annotations π
https://github.com/strawberry-graphql/strawberry
asgi asyncio django fastapi graphql graphql-library graphql-schema graphql-server hacktoberfest mypy python starlette strawberry
Last synced: 6 months ago
JSON representation
A GraphQL library for Python that leverages type annotations π
- Host: GitHub
- URL: https://github.com/strawberry-graphql/strawberry
- Owner: strawberry-graphql
- License: mit
- Created: 2018-12-21T08:56:55.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2025-05-13T15:20:23.000Z (6 months ago)
- Last Synced: 2025-05-13T16:38:51.247Z (6 months ago)
- Topics: asgi, asyncio, django, fastapi, graphql, graphql-library, graphql-schema, graphql-server, hacktoberfest, mypy, python, starlette, strawberry
- Language: Python
- Homepage: https://strawberry.rocks
- Size: 14.5 MB
- Stars: 4,257
- Watchers: 37
- Forks: 566
- Open Issues: 487
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-fastapi - Strawberry GraphQL - Python GraphQL library based on dataclasses. (Third-Party Extensions / Utils)
- awesome-list - strawberry - graphql | 1149 | (Python)
- awesome-fastapi - Strawberry GraphQL - Python GraphQL library based on dataclasses. (Third-Party Extensions / Utils)
- awesome-pydantic - Strawberry GraphQL - Python GraphQL library based on dataclasses. (Utilities)
- awesome-pydantic - Strawberry GraphQL - Python GraphQL library based on dataclasses. (Utilities)
- best-of-web-python - GitHub - 39% open Β· β±οΈ 25.09.2025): (GraphQL Utilities)
- awesomeLibrary - strawberry - A GraphQL library for Python that leverages type annotations π (θ―θ¨θ΅ζΊεΊ / python)
- awesome-starlette - Strawberry GraphQL - Python GraphQL library based on dataclasses, works well with Starlette/FastAPI. [Docs](https://strawberry.rocks/) (Extensions / API (REST, GraphQL...))
- awesome-starred - strawberry-graphql/strawberry - A GraphQL library for Python that leverages type annotations π (python)
README

# Strawberry GraphQL
> Python GraphQL library based on dataclasses
[](https://circleci.com/gh/strawberry-graphql/strawberry/tree/main)
[](https://discord.gg/ZkRTEJQ)
[](https://pypi.org/project/strawberry-graphql/)
## Installation ( Quick Start )
The quick start method provides a server and CLI to get going quickly. Install
with:
```shell
pip install "strawberry-graphql[debug-server]"
```
## Getting Started
Create a file called `app.py` with the following code:
```python
import strawberry
@strawberry.type
class User:
name: str
age: int
@strawberry.type
class Query:
@strawberry.field
def user(self) -> 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:
```shell
strawberry server app
```
Open the debug server by clicking on the following link:
[http://0.0.0.0:8000/graphql](http://0.0.0.0:8000/graphql)
This will open GraphiQL where you can test the API.
### Type-checking
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`
configuration:
```ini
[mypy]
plugins = strawberry.ext.mypy_plugin
```
[mypy]: http://www.mypy-lang.org/
### Django Integration
A Django view is provided for adding a GraphQL endpoint to your application.
1. Add the app to your `INSTALLED_APPS`.
```python
INSTALLED_APPS = [
..., # your other apps
"strawberry.django",
]
```
2. Add the view to your `urls.py` file.
```python
from strawberry.django.views import GraphQLView
from .schema import schema
urlpatterns = [
...,
path("graphql", GraphQLView.as_view(schema=schema)),
]
```
## WebSockets
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:
```shell
pip install 'strawberry-graphql[debug-server]'
pip install 'uvicorn[standard]'
```
## Examples
* [Various examples on how to use Strawberry](https://github.com/strawberry-graphql/examples)
* [Full stack example using Starlette, SQLAlchemy, Typescript codegen and Next.js](https://github.com/jokull/python-ts-graphql-demo)
* [Quart + Strawberry tutorial](https://github.com/rockyburt/Ketchup)
## Contributing
We use [poetry](https://github.com/sdispater/poetry) to manage dependencies, to
get started follow these steps:
```shell
git clone https://github.com/strawberry-graphql/strawberry
cd strawberry
poetry install --with integrations
poetry run pytest
```
For all further detail, check out the [Contributing Page](CONTRIBUTING.md)
### Pre commit
We have a configuration for
[pre-commit](https://github.com/pre-commit/pre-commit), to add the hook run the
following command:
```shell
pre-commit install
```
## Links
- Project homepage: https://strawberry.rocks
- Repository: https://github.com/strawberry-graphql/strawberry
- Issue tracker: https://github.com/strawberry-graphql/strawberry/issues
- In case of sensitive bugs like security vulnerabilities, please contact
patrick.arminio@gmail.com directly instead of using the issue tracker. We
value your effort to improve the security and privacy of this project!
## Licensing
The code in this project is licensed under MIT license. See [LICENSE](./LICENSE)
for more information.
