Skip to main content

Datamodel Code Generator

Project description

datamodel-code-generator

This generator creates pydantic mode from an openapi file.

Build Status PyPI version codecov

This project is an experimental phase.

Installation

To install datamodel-code-generator:

$ pip install datamodel-code-generator

Usage

The datamodel-codegen command:

usage: datamodel-codegen [-h] [--input INPUT] [--output OUTPUT]

optional arguments:
  -h, --help       show this help message and exit
  --input INPUT    Open API YAML file
  --output OUTPUT  Output file

Example

$ datamodel-codegen --input api.yaml --output model.py

api.yaml:

openapi: "3.0.0"
info:
  version: 1.0.0
  title: Swagger Petstore
  license:
    name: MIT
servers:
  - url: http://petstore.swagger.io/v1
paths:
  /pets:
    get:
      summary: List all pets
      operationId: listPets
      tags:
        - pets
      parameters:
        - name: limit
          in: query
          description: How many items to return at one time (max 100)
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: A paged array of pets
          headers:
            x-next:
              description: A link to the next page of responses
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pets"
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
                x-amazon-apigateway-integration:
                  uri:
                    Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${PythonVersionFunction.Arn}/invocations
                  passthroughBehavior: when_no_templates
                  httpMethod: POST
                  type: aws_proxy
    post:
      summary: Create a pet
      operationId: createPets
      tags:
        - pets
      responses:
        '201':
          description: Null response
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
                x-amazon-apigateway-integration:
                  uri:
                    Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${PythonVersionFunction.Arn}/invocations
                  passthroughBehavior: when_no_templates
                  httpMethod: POST
                  type: aws_proxy
  /pets/{petId}:
    get:
      summary: Info for a specific pet
      operationId: showPetById
      tags:
        - pets
      parameters:
        - name: petId
          in: path
          required: true
          description: The id of the pet to retrieve
          schema:
            type: string
      responses:
        '200':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pets"
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    x-amazon-apigateway-integration:
      uri:
        Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${PythonVersionFunction.Arn}/invocations
      passthroughBehavior: when_no_templates
      httpMethod: POST
      type: aws_proxy
components:
  schemas:
    Pet:
      required:
        - id
        - name
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        tag:
          type: string
    Pets:
      type: array
      items:
        $ref: "#/components/schemas/Pet"
    Error:
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
    apis:
      type: array
      items:
        type: object
        properties:
          apiKey:
            type: string
            description: To be used as a dataset parameter value
          apiVersionNumber:
            type: string
            description: To be used as a version parameter value
#          apiUrl:
#            type: string
#            format: uriref
#            description: "The URL describing the dataset's fields"
#          apiDocumentationUrl:
#            type: string
#            format: uriref
#            description: A URL to the API console for each API

model.py:

# generated by datamodel-codegen:
#   filename:  api.yaml
#   timestamp: 2019-07-23T14:23:18+00:00

from typing import List, Optional

from pydantic import BaseModel



class Pet(BaseModel):
    id: int
    name: str
    tag: Optional[str] = None


class Pets(BaseModel):
    __root__: List[Pet]


class Error(BaseModel):
    code: int
    message: str


class api(BaseModel):
    apiKey: Optional[str] = None
    apiVersionNumber: Optional[str] = None


class apis(BaseModel):
    __root__: List[api]

Development

Install the package in editable mode:

$ git clone git@github.com:koxudaxi/datamodel-code-generator.git
$ pip install -e datamodel-code-generator

PyPi

https://pypi.org/project/datamodel-code-generator

Source Code

https://github.com/koxudaxi/datamodel-code-generator

Documentation

https://koxudaxi.github.io/datamodel-code-generator

License

datamodel-code-generator is released under the MIT License. http://www.opensource.org/licenses/mit-license

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

datamodel-code-generator-0.0.3.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

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

datamodel_code_generator-0.0.3-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file datamodel-code-generator-0.0.3.tar.gz.

File metadata

  • Download URL: datamodel-code-generator-0.0.3.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.1

File hashes

Hashes for datamodel-code-generator-0.0.3.tar.gz
Algorithm Hash digest
SHA256 a051050682a49b1f8b50369f1de002f82e5871cb449b7e7d0e3ca612a98322a1
MD5 2f6f91ac3c4b7e2ea5eccde16d2cc90f
BLAKE2b-256 99f7290cc22448c2b04e84ac99ecae70fc5c57dd0a148a759e76072c0f6530b5

See more details on using hashes here.

File details

Details for the file datamodel_code_generator-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: datamodel_code_generator-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.1

File hashes

Hashes for datamodel_code_generator-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4e86c3dabd647720bff4cd35567d26510729a8f2db2e22842060e1eb8eaaad32
MD5 663945b62de110082215b84a0c0d3935
BLAKE2b-256 bb1ab0979ccbec8a9a52c91b68817591f1fd66a940addc6a556559fc1562db8d

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