Registry / web-framework / ariadne

ariadne

JSON →
library1.1.0pypypi✓ verified 24d ago

Ariadne is a Python library for implementing GraphQL servers using a schema-first approach. It emphasizes a simple, extensible API for defining GraphQL schemas using Schema Definition Language (SDL) and connecting business logic with minimal boilerplate. It supports queries, mutations, subscriptions, custom scalars, and integrates with ASGI/WSGI frameworks like Django, FastAPI, Flask, and Starlette. The project maintains an active and frequent release cadence, with regular patch, minor, and occasional alpha releases, as seen with versions like 1.0.1 and subsequent 1.1.0a2.

pip install ariadne uvicorn
INSTALL
IMPORT
SIG · ARIADNE
A
ariadne
web-frameworkpythonv1.1.0
Install
2.6s avg
Import
533ms
Disk
24MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v1.1.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.562s · 25.7MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 2.6s · import 0.504s · 26MB
24MB installed
● package 24MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

gql
from ariadne import gql
Used to parse GraphQL Schema Definition Language (SDL) strings.
QueryType
from ariadne import QueryType
Used to define resolvers for queries.
make_executable_schema
from ariadne import make_executable_schema
Combines schema definitions and resolvers into a runnable GraphQL schema.
start_dev_server
from ariadne import start_dev_server
Provides a convenient development server with GraphiQL explorer. For production, integrate with ASGI/WSGI frameworks like FastAPI or Flask.

This quickstart sets up a basic Ariadne GraphQL server with a 'Person' type and a 'people' query. It defines the schema in SDL, creates a resolver for the 'people' field, and runs a development server with GraphiQL for interactive API exploration.

from ariadne import gql, QueryType, make_executable_schema, start_dev_server # Define GraphQL schema using Schema Definition Language (SDL) type_defs = gql(""" type Query { people: [Person!]! } type Person { firstName: String! lastName: String! } """) # Create a QueryType instance to define query resolvers query = QueryType() # Define the resolver for the 'people' field @query.field("people") def resolve_people(*_): return [ {"firstName": "John", "lastName": "Doe"}, {"firstName": "Jane", "lastName": "Smith"}, ] # Combine type definitions and resolvers into an executable schema schema = make_executable_schema(type_defs, query) # Run the development server if __name__ == "__main__": # Access the GraphQL endpoint and GraphiQL at http://127.0.0.1:8000 start_dev_server(schema, port=8000)
ariadne --version
Debug
Known issues
breakingVersion 1.0.0 introduced several breaking changes including the removal of deprecated `EnumType.bind_to_default_values`, Apollo tracing, OpenTracing, and `extend_federated_schema`. It also made base handler class names consistent and adjusted `convert_names_case` behavior.
fix
Consult the official migration guide (linked in GitHub release notes for 1.0.0) to update your codebase. Replace removed functionalities with their modern equivalents or adjust naming conventions.
affects: 1.0.0+
breakingIn version 0.29.0, deprecated utilities `FallbackResolvers` and `convert_kwargs_to_snake_case` were removed, along with legacy code paths for versions prior to 0.20.
fix
Migrate from `FallbackResolvers` to standard resolver patterns. If you relied on `convert_kwargs_to_snake_case` for automatic argument case conversion, you will need to implement this conversion manually in your resolvers or use other utility functions if available in newer versions.
affects: 0.29.0+
gotchaThe `errors` key in GraphQL responses is intended for technical errors (e.g., parsing, validation, execution issues), not for communicating application-level business logic errors (like permission denied or validation failures to end-users).
fix
For user-facing errors, define custom fields within your GraphQL types (e.g., `type Mutation { login(data: LoginInput): LoginPayload } type LoginPayload { user: User error: String }`) to return specific error messages as part of the data payload.
affects: All versions
Upgrade
Version history
1.1.0latest on PyPI · released Jun 15, 2026
Audit
Dependencies
PythonrequiredRequired runtime environment.
Agent activity
22 hits · last 30 days
node
18
Amazon
1
OpenAI (training)
1
Resources
ariadne — pip install ariadne · libregistry