Skip to content
GraphQL Engine built with Python 3.6+ / asyncio
Python
Branch: master
Clone or download
abusi Merge pull request #293 from tartiflette/ISSUE-292
Bakes schema objects after extensions baking
Latest commit fa7020b Sep 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Move sonar analisys before pypi push Sep 12, 2019
bin chore(*): Refactoring of SDL and Tartiflette Apr 3, 2018
changelogs chore(setup): prepare v1.0.0rc2 Sep 15, 2019
docs doc(migration-guide): relative path link & add docusaurus metadata in… Sep 11, 2019
libgraphqlparser @ b5e381f Update libgraphqlparser Sep 9, 2019
tartiflette fix(schema): bake schema objects after extensions baking Sep 14, 2019
tests fix(test): fixing unit tests Sep 14, 2019
.coveragerc Correct some pylint, ignore some pylint Sep 28, 2018
.dockerignore chore(action): use github actions instead of travis Apr 4, 2019
.editorconfig doc: update from the new Engine API and plugin approach Jun 19, 2019
.gitignore chore(ci): add Travis as CI and Gazr Specification Sep 14, 2018
.gitmodules chore(libgraphqlparser): add tartiflette/libgraphqlparser submodule Jun 3, 2019
.isort.cfg chore(format): Add format on tests and import sorting everywhere Jan 15, 2019
CHANGELOG.md doc(v1): update of the documentation according to version 1 #1 Sep 9, 2019
CONTRIBUTORS.md chore(release): Prepare release 0.6.8 Mar 27, 2019
Dockerfile converted main.workflow to Actions V2 yml files Aug 20, 2019
LICENSE Initial commit Jan 26, 2018
MANIFEST.in refactor: refactoring query parsing & execution Sep 9, 2019
Makefile chore(Makefile): fix test versioning Sep 9, 2019
README.md Update readme.md Sep 9, 2019
docker-compose.yml chore(docker): update docker image path Jun 3, 2019
pylintrc feat(validators): Add query validation to DocumentNode Query parser Sep 9, 2019
setup.py chore(setup): prepare v1.0.0rc2 Sep 15, 2019
sonar-project.properties Only check tartiflette modules and respect pylintrc Sep 12, 2019

README.md

Tartiflette

Tartiflette is a GraphQL Server implementation built with Python 3.6+.

Summary

Motivation

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

Status

The first milestone is behind us, we are now on the road to the milestone 2.

DNA

Discover Tartiflette with our fabulous tutorial on https://tartiflette.io/docs/tutorial/getting-started

Usage

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

Installation

Tartiflette is available on pypi.org.

pip install tartiflette

Installation dependencies

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 verions 3

Tartiflette over HTTP

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']
    )
)

Roadmaps

How to contribute to the documentation?

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.

How to run the website locally?

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. 🎉

Known issues

You can’t perform that action at this time.