Metadata-Version: 2.1
Name: schemagen
Version: 1.0.5
Summary: A Command line tool for generating Python GraphQL implementations(with Graphene) from GraphQL schema files
Home-page: https://github.com/GoZaddy/SchemaGen
Author: Faruq Yusuff
Author-email: faruqyusuff437@gmail.com
License: MIT
Description: # SchemaGen
        Schema Gen is a simple CLI tool that generates Python GraphQL implementations(using Graphene) from a Graphql Schema file.
        
        # Installation
        ```shell
        pip install schemagen
        ```
        
        # Usage
        Here's the content of a sample input file(we will call it *test.graphql*)
        ```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:
        ```shell
        schemagen parse test.graphql -o test.py
        ```
        As a Python Package:
        
        ```python
        from schemagen import SchemaGen
        
        gen = SchemaGen(
          input_file='test.graphql',
          output_file='test.py'
        )
        
        # parse input file
        gen()
        ```
        
        Output(*test.py*):
        ```python
        # 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:
          ```shell
          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:
          ```graphql
            type User {
                id: ID!
                username: String
                avatar_url: Url
            }
          
            scalar Url    
          ```
          The correct version of the above code is:
            ```graphql
            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:
          ```graphql
          enum UserType {
            Example
          }
          
          type User{
            name: String
            type: UserType
          }
          ```
          will throw an error.
          
          Do this instead:
          ```graphql
          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!
          
        
        
        
Keywords: graphql parser codegen
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Intended Audience :: Developers
Requires-Python: >=3.6
Description-Content-Type: text/markdown
