/graphql-codegen-pydantic

Generate pydantic types from any graphql schema

Primary LanguageTypeScriptMIT LicenseMIT

Pydantic type generation for graphql

graphql-codegen-pydantic is a plugin for graphql-codegen that generates pydantic types from any graphql schema

Example

type Book {
  title: String
  author: Author
}

type Author {
  name: String
  books: [Book]
}

becomes

from typing import Optional, List
from pydantic import BaseModel


class Author(BaseModel):
    name: Optional[str]
    books: Optional[List[Optional['Book']]]


class Book(BaseModel):
    title: Optional[str]
    author: Optional['Author']

Warning

graphql-codegen-pydantic is currently still very experimental and is not ready for production use

Installation

  1. Set up graphql-codegen
  2. Install graphql-codegen-pydantic
yarn add graphql-codegen-pydantic -D
  1. Add python file to codegen.yml
schema: http://localhost:3000/graphql
generates:
  ./src/schema.py:
    plugins:
      - pydantic

Limitations

Currently very limited

  1. No configuration supported
  2. No comments included in generated code
  3. No support for documents
  4. No resolver support for eg graphene or ariadne
  5. Properties converted to snake_case