Skip to content

Code Generation

The datamodel-code-generator project is a library and command-line utility to generate pydantic models from just about any data source, including:

  • OpenAPI 3 (YAML/JSON)
  • JSON Schema
  • JSON/YAML Data (which will converted to JSON Schema)

Whenever you find yourself with any data convertible JSON but without pydantic models, this tool will allow you to generate type-safe model hierarchies on demand.


pip install datamodel-code-generator


In this case, datamodel-code-generator creates pydantic models from a JSON Schema file.

datamodel-codegen  --input person.json --input-file-type jsonschema --output


  "$id": "person.json",
  "$schema": "",
  "title": "Person",
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "description": "The person's first name."
    "last_name": {
      "type": "string",
      "description": "The person's last name."
    "age": {
      "description": "Age in years.",
      "type": "integer",
      "minimum": 0
    "pets": {
      "type": "array",
      "items": [
          "$ref": "#/definitions/Pet"
    "comment": {
      "type": "null"
  "required": [
  "definitions": {
    "Pet": {
      "properties": {
        "name": {
          "type": "string"
        "age": {
          "type": "integer"

# generated by datamodel-codegen:
#   filename:  person.json
#   timestamp: 2020-05-19T15:07:31+00:00
from __future__ import annotations
from typing import Any, List, Optional
from pydantic import BaseModel, Field, conint

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

class Person(BaseModel):
    first_name: str = Field(..., description="The person's first name.")
    last_name: str = Field(..., description="The person's last name.")
    age: Optional[conint(ge=0)] = Field(None, description='Age in years.')
    pets: Optional[List[Pet]] = None
    comment: Optional[Any] = None

(This script is complete, it should run "as is")

More information can be found on the official documentation