Tartiflette is a GraphQL Server implementation built with Python 3.6+.
Summary
- Motivation
- Status
- Usage
- Installation
- Tartiflette over HTTP
- Roadmaps
- How to contribute to the documentation?
- Known issues
- Badges
Read this blogpost about our motivations TL; DR We reached the limits of Graphene, we wanted to build something which met certain requirements:
- Offers a better developer experience that respects the Python mindset
- Uses SDL (Schema Definition Language)
- Uses asyncio as the sole execution engine
- Be 100% open source
The first milestone is behind us, we are now on the road to the milestone 2.
DNA
- Define the GraphQL schema with the brand new SDL (Schema Definition Language).
- Performance oriented: Performance is the core of our work.
- Simple is better than complex: Built with the Zen of Python in mind. No over-engineering.
Discover Tartiflette with our fabulous tutorial on https://tartiflette.io/docs/tutorial/getting-started
import asyncio
from tartiflette import Resolver, create_engine
@Resolver("Query.hello")
async def resolver_hello(parent, args, ctx, info):
return "hello " + args["name"]
async def run():
engine = await create_engine(
"""
type Query {
hello(name: String): String
}
"""
)
result = await engine.execute(
query='query { hello(name: "Chuck") }'
)
print(result)
# {'data': {'hello': 'hello Chuck'}}
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
More details on the API Documentation
Tartiflette is available on pypi.org.
pip install tartiflette
As Tartiflette based its Executor engine on libgraphqlparser. You'll need these following commands on your environment to use the library. cmake
MacOSX
brew install cmake
Ubuntu
apt-get install cmake
As Tartiflette based its Executor engine on libgraphqlparser. You'll need these following commands on your environment to use the library. cmake
, bison
and flex
.
MacOSX
brew install cmake flex bison
Ubuntu
apt-get install cmake flex bison
Make sure you have bison
in version 3
Note to Mac OS users: Make sure bison in your path is really Bison 3, look here for details. The
LIBGRAPHQLPARSER_DIR
environmental variable is available to specify where thelibgraphqlparser.so
file is located.
Discover our implementation of tartiflette over HTTP called tartiflette-aiohttp.
Overview
pip install tartiflette-aiohttp
from aiohttp import web
from tartiflette_aiohttp import register_graphql_handlers
sdl = """
type Query {
hello(name: String): String
}
"""
ctx = {
'user_service': user_service
}
web.run_app(
register_graphql_handlers(
app=web.Application(),
engine_sdl=sdl,
engine_schema_name="default",
executor_context=ctx,
executor_http_endpoint='/graphql',
executor_http_methods=['POST', 'GET']
)
)
As you may know, the documentation is hosted on https://tartiflette.io. This fabulous website is built thanks to another amazing tool, docusaurus.
The content of the documentation is hosted in this repository, to be as close as possible to the code. You will find everything you need/want in the folder /docs
.
We built a docker image for the documentation (tartiflette/tartiflette.io on docker hub), which allow us to provide you an easy way to launch the documentation locally, without installing a specific version of node.
prerequisite:
- Docker
- Docker Compose
- Make
make run-docs
Every change you will make in the /docs
folder will be automatically hot reloaded. 🎉