Skip to main content

GraphQL Request Executor for python

Project description

![Tartiflette](docs/github-landing.png)

**Tartiflette** is a GraphQL Server implementation built with **Python 3.5+**.

**Tartiflette is under heavy development. [Feel free to join us to build Tartiflette](./docs/CONTRIBUTING.md).**

The engine **IS NOT** ready to use, feel free to take a look at **[our roadmap for v1](#roadmap---road-to-v1)**.

**DNA**

* Define the **GraphQL schema** with the brand new [SDL _(Schema Definition Language)_](https://github.com/facebook/graphql/blob/master/spec/Section%203%20--%20Type%20System.md).
* **Performance oriented:** Performance is the core of our work.
* **Simple is better than complex:** Built with [the Zen of Python](https://www.python.org/dev/peps/pep-0020/#id3) in mind. No over-engineering.

## Installation

As this lib depends on libgraphqlparser (in submodule in this repository) (See [here](https://github.com/graphql/libgraphqlparser) for more details), you'll need to build and install this libgraphqlparser binary on your system before using this.

Running `python setup.py develop` will take care of the lib compilation for your checkouted repository.
If you don't want to checkout the code `pip install tartiflette` will also compile the lib for you.

In the two cases, you'll need `cmake`, `bison` and `flex` to be installed on your system.

## Roadmap - Road to v1

Following on our experience in managing GraphQL APIs in production **for more than a year**, we've decided to build a brand new GraphQL Engine.

[Know more about the API.](docs/API.md)

Here are the subjects we are working on:

### Communication and documentation

* [x] Define Open Source guidelines (Contributing, Code of conduct, Issue Template, PR Template).
* [ ] (API) Describe the API that will be used by the Tartiflette users.
* [x] (API) [Engine constructor](https://github.com/dailymotion/tartiflette/blob/master/docs/API.md#engine-initialization) - _[#19](https://github.com/dailymotion/tartiflette/issues/19)_.
* [ ] (API) How to declare custom directives in the Engine Constructor.
* [ ] (API) How to declare middleware on a resolver.
* [ ] (API) Executor.
* [x] (API) Resolver - _[#19](https://github.com/dailymotion/tartiflette/issues/19)_.
* [x] (API) Resolver - `Info` parameter - _[#19](https://github.com/dailymotion/tartiflette/issues/19)_.
* [ ] (Website) Landing page for https://tartiflette.io
* [ ] (Website) Expose documentation on https://tartiflette.io
### Query Parser

* [x] Build communication interface between [libgraphqlparser](https://github.com/graphql/libgraphqlparser) & Tartiflette through [CFFI](https://cffi.readthedocs.io).
* [x] Build a `Parser` which parses a GraphQL Query and creates a list of Asynchronous Tasks.
* [x] Build an `Executor` which executes the Asynchronous Tasks list created by the `Parser`.

### Executor

* [x] Bind the Types specified in the SDL to the `Executor`.
* [x] Typing [resolver outputs](https://github.com/dailymotion/tartiflette/blob/master/tartiflette/parser/visitor.py#L191) - _[#17](https://github.com/dailymotion/tartiflette/issues/17)_
* [x] Error management
* [ ] Abstract and Compound Types: Unions, Interfaces, …
* [ ] NodeDefinition: Check that the [Type exists](https://github.com/dailymotion/tartiflette/blob/master/tartiflette/parser/nodes/definition.py#L26)
* [ ] (Directive) Integrate the directive's execution in the Executor.
* [ ] Integrate the middleware in the Executor.

### SDL - Schema Definition Language

* [x] Build a `Parser` which parse the [Schema Definition Language](https://github.com/facebook/graphql/blob/master/spec/Section%202%20--%20Language.md) and created the associated schema and types as Python objects.
* [ ] Think about custom Scalar API
* [x] (Introspection) Implement the `__type` Field. - _[#15](https://github.com/dailymotion/tartiflette/issues/15)_
* [x] (Introspection) Implement the `__schema`Field. - _[#16](https://github.com/dailymotion/tartiflette/issues/16)_
* [ ] (Directive) Append directive informations _(from SDL)_ as metadata on Fields / Types.
* [ ] (Directive) Implement the declaration of the custom directives into the Engine constructor.
* [ ] (Directive) Implement @deprecated

### Continuous integration

* [ ] Run Code Quality checks + Tests
* [x] Automatize the integration of `libgraphqlparser`
* [ ] Build & Publish artifact to pypi

## Roadmap - Milestone #2

* [ ] Implement **[Apollo Cache Control](https://github.com/apollographql/apollo-cache-control)**
* [ ] Implement dynamic introspection based on directive
* [ ] Think about `subscriptions`


Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tartiflette-0.1.0.tar.gz (229.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tartiflette-0.1.0-py3-none-any.whl (154.2 kB view details)

Uploaded Python 3

File details

Details for the file tartiflette-0.1.0.tar.gz.

File metadata

  • Download URL: tartiflette-0.1.0.tar.gz
  • Upload date:
  • Size: 229.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.10.0 setuptools/40.3.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.5

File hashes

Hashes for tartiflette-0.1.0.tar.gz
Algorithm Hash digest
SHA256 89da6d67383247bbc95873064673710591da765fa8ffc4670df5b4e3c94a6799
MD5 2ed9348169c10df4f4215b89240e8eef
BLAKE2b-256 b790c4d803d56a9c524dd02620bb5d5729a8ce2e809410800a0a59368c945d82

See more details on using hashes here.

File details

Details for the file tartiflette-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: tartiflette-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 154.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.10.0 setuptools/40.3.0 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/3.6.5

File hashes

Hashes for tartiflette-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4e729492928e08e11da5c42d2064778609e6fb31552abafafab5545e4c700ea2
MD5 5088a085ff7d9189076bb47ea733c037
BLAKE2b-256 d9d63279401d6ee41d32508ddd57feb0c44d332d26d195050a55b15be212b494

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page