A Command line tool for generating Python GraphQL implementations(with Graphene) from GraphQL schema files
Project description
SchemaGen
Schema Gen is a simple CLI tool that generates Python GraphQL implementations(using Graphene) from a Graphql Schema file.
Installation
pip install schemagen
Usage
Here's the content of a sample input file(we will call it test.graphql)
type User {
id: ID!
username: String
first_name: String
last_name: String
full_name: String
name: String
name: String
}
Now let's use SchemaGen to generate python code from it.
As a CLI tool:
schemagen parse test.graphql -o test.py
As a Python Package:
from schemagen import SchemaGen
gen = SchemaGen(
input_file='test.graphql',
output_file='test.py'
)
# parse input file
gen()
Output(test.py):
# This file was generated by CodegenTool
from graphene import *
class User(ObjectType):
id = Field(ID, required=True)
username = Field(String)
first_name = Field(String)
last_name = Field(String)
full_name = Field(String)
name = Field(String)
Notes
Here are some things you should know about using SchemaGen:
-
SchemaGen is not guaranteed to catch errors in your GraphQL schema file.
SchemaGen will only catch a very small percentage of errors that might occur in defining a GraphQL schema. It is the developer's responsibility to ensure the GraphQL schema file is error-free.
-
SchemaGen will not install the graphene package on your local machine however it will import it in the generated python file.
You can easily install the package by running:
pip install graphene
-
GraphQL type declarations in your schema file must be ordered.
Because of the way Python and SchemaGen works, you cannot use a GraphQL type before declaring it. For example, the following graphql schema definition would be invalid because we are using the Url scalar in our User type before declaring it:
type User { id: ID! username: String avatar_url: Url } scalar Url
The correct version of the above code is:
scalar Url type User { id: ID! username: String avatar_url: Url }
-
Using a GraphQL SDL keyword as an object field name in your schema will throw an error.
For example, doing this:
enum UserType { Example } type User{ name: String type: UserType }
will throw an error.
Do this instead:
enum UserType { Example } type User{ name: String user_type: UserType }
I plan to fix the last two issues stated above in the future. Pull requests are welcome!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file schemagen-1.0.5.tar.gz
.
File metadata
- Download URL: schemagen-1.0.5.tar.gz
- Upload date:
- Size: 39.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 438a5f9fd5e8798667b43594e9ff9004bcd748ad953dc1eabb70a9cff460d7ea |
|
MD5 | cc29c0d3526fc5e421224c1f23e0c227 |
|
BLAKE2b-256 | ecc2222d5b5acba48aa503868936254101058c14d6d58359582cfd449e09bc73 |
File details
Details for the file schemagen-1.0.5-py3-none-any.whl
.
File metadata
- Download URL: schemagen-1.0.5-py3-none-any.whl
- Upload date:
- Size: 40.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df4044e86ae51f0bd3e73121e309ce1bbc91d403641a37ba8cf10cb403579180 |
|
MD5 | 95e57ea97c703d46e2695ba63969bee4 |
|
BLAKE2b-256 | 606bac349aac023498f52187607b1d8848264db2b5ed0a3122bc41254de9cfa2 |