Skip to content

Presets

Presets are immutable named groups of CLI options. A preset name never changes behavior; new recommendations are published as new dated preset names.

Every preset name includes its Python target, so generated Python syntax is pinned without an extra --target-python-version argument. Choose the preset name instead of adding a separate target option to normal preset commands; if an explicit target is already present in CLI or pyproject configuration, it must match the preset name.

See also: CLI Reference, --preset, --target-python-version, --output-model-type, --profile, --generate-pyproject-config, --generate-cli-command, pyproject.toml configuration, and CI/CD integration.

Usage

Use a preset by passing its immutable name:

datamodel-codegen \
  --input schema.json \
  --input-file-type jsonschema \
  --output-model-type pydantic_v2.BaseModel \
  --preset standard-py312-20261027 \
  --output model.py

Use standard-py312-20261027 for the project-recommended modern Python 3.12 baseline. Use practical-py312-20261027 when you also want schema-authored names, model reuse, and schema descriptions embedded in the generated code.

To choose options on top of a preset for your schema, add --recommend-options to the command (experimental); see Option recommendations.

Presets dated 20260909 or later select builtin to avoid running external formatters. For project-wide Ruff consistency, use the preset with --formatters ruff-check ruff-format. Keep --formatters black isort to preserve existing Black/isort output. Earlier dated presets are unchanged. Black and isort remain required installation dependencies.

The 20261015 presets keep the 20260909 options and add Python 3.15 targets.

The 20261017 presets keep the 20261015 options and add --enum-field-as-literal all for stdlib dataclass and TypedDict output. These models keep raw JSON values without conversion, so enums render as Literal values instead of enum classes. Options of an output model scope take precedence over the options for all output model types.

The 20261027 presets keep the 20261017 options and add --use-single-value-enum-as-const: an enum of one value, and an enum that admits the const beside it, render as that const's Literal value instead of an enum class, and one-value enum branches of a oneOf or anyOf merge into one enum. They also add --openapi-as-definitions paths-bodies ref-components: request and response bodies of the OpenAPI paths and webhooks scopes, and components written as a $ref to a recursive schema with sibling keywords, get the model a definitions entry of the same schema gets, --omit-redundant-constraints: a constraint that a zero-bound class or a const or enum Literal already enforces is not written again, and --use-site-models-for-constrained-refs: an allOf whose other parts add constraints, an enum or a type to a referenced schema gets its own model of the values all parts admit instead of the referenced type.

Override Preset Options

Preset options are defaults, not locks. Explicit options override preset-supplied values.

datamodel-codegen \
  --input schema.json \
  --preset standard-py312-20261027 \
  --no-snake-case-field \
  --no-use-annotated \
  --enum-field-as-literal none

Use documented --no-* options for boolean settings that support negation. For value options, pass the replacement value explicitly, such as --enum-field-as-literal none. A list option replaces the whole list a preset sets, such as --openapi-as-definitions paths-bodies; in pyproject.toml an empty list, such as openapi-as-definitions = [], turns off every value the preset sets.

Add Options On Top

You can add any normal CLI option to a preset command. This is the recommended way to start from a preset and make a project-specific choice:

datamodel-codegen \
  --input schema.json \
  --preset standard-py312-20261027 \
  --extra-fields forbid \
  --use-title-as-name \
  --output model.py

Use Presets With Profiles

Presets can live in [tool.datamodel-codegen] or in a named profile. Profiles are useful when one repository generates several model sets:

pyproject.toml
[tool.datamodel-codegen]
output-model-type = "pydantic_v2.BaseModel"
preset = "standard-py312-20261027"

[tool.datamodel-codegen.profiles.api]
input = "schemas/api.json"
output = "src/models/api.py"
preset = "practical-py312-20261027"
extra-fields = "forbid"

[tool.datamodel-codegen.profiles.events]
input = "schemas/events.json"
output = "src/models/events.py"
use-title-as-name = true
datamodel-codegen --profile api
datamodel-codegen --profile events

If --preset is passed on the CLI, it overrides pyproject preset settings and pyproject options unless the same option is also explicit on the CLI. If preset is configured in pyproject.toml, pyproject/profile options and CLI options override preset-supplied values.

Export Configuration

To convert a working preset command into pyproject.toml, use --generate-pyproject-config:

datamodel-codegen \
  --input schema.json \
  --output model.py \
  --output-model-type pydantic_v2.BaseModel \
  --preset practical-py312-20261027 \
  --extra-fields forbid \
  --generate-pyproject-config

To inspect the effective CLI command for an existing pyproject profile, use --generate-cli-command:

datamodel-codegen --profile api --generate-cli-command

Use --ignore-pyproject when you want to test a preset command without loading project configuration.

Built-in Presets

Target Matrix

Python target Standard preset Practical preset
3.10 standard-py310-20261027 practical-py310-20261027
3.11 standard-py311-20261027 practical-py311-20261027
3.12 standard-py312-20261027 practical-py312-20261027
3.13 standard-py313-20261027 practical-py313-20261027
3.14 standard-py314-20261027 practical-py314-20261027
3.15 standard-py315-20261027 practical-py315-20261027

Each preset name includes its Python target. Do not add --target-python-version just to use a preset; only expanded configuration without --preset needs a separate target option.

Preset Reference

standard-py310-20260619

Recommended modern Python 3.10 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-frozen-field = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.

standard-py311-20260619

Recommended modern Python 3.11 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.

standard-py312-20260619

Recommended modern Python 3.12 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.

standard-py313-20260619

Recommended modern Python 3.13 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.

standard-py314-20260619

Recommended modern Python 3.14 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.

practical-py310-20260619

Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py310-20260619 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py311-20260619

Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py311-20260619 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py312-20260619

Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py312-20260619 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py313-20260619

Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py313-20260619 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py314-20260619

Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py314-20260619 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
set-default-enum-member = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --set-default-enum-member --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --set-default-enum-member, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, enum-member defaults, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

standard-py310-20260826

Recommended modern Python 3.10 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-frozen-field = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.

standard-py311-20260826

Recommended modern Python 3.11 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.

standard-py312-20260826

Recommended modern Python 3.12 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.

standard-py313-20260826

Recommended modern Python 3.13 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.

standard-py314-20260826

Recommended modern Python 3.14 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.

practical-py310-20260826

Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py310-20260826 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py311-20260826

Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py311-20260826 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py312-20260826

Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py312-20260826 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py313-20260826

Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py313-20260826 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py314-20260826

Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py314-20260826 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

standard-py310-20260909

Recommended modern Python 3.10 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-frozen-field = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py311-20260909

Recommended modern Python 3.11 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py312-20260909

Recommended modern Python 3.12 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py313-20260909

Recommended modern Python 3.13 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py314-20260909

Recommended modern Python 3.14 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

practical-py310-20260909

Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py310-20260909 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py311-20260909

Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py311-20260909 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py312-20260909

Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py312-20260909 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py313-20260909

Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py313-20260909 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py314-20260909

Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py314-20260909 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

standard-py310-20261015

Recommended modern Python 3.10 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-frozen-field = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py311-20261015

Recommended modern Python 3.11 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py312-20261015

Recommended modern Python 3.12 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py313-20261015

Recommended modern Python 3.13 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py314-20261015

Recommended modern Python 3.14 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py315-20261015

Recommended modern Python 3.15 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.15

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.15. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.15"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.15 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

practical-py310-20261015

Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py310-20261015 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py311-20261015

Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py311-20261015 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py312-20261015

Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py312-20261015 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py313-20261015

Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py313-20261015 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py314-20261015

Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py314-20261015 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py315-20261015

Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py315-20261015 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.15

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.15. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.15"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.15 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases.
TypedDict output --use-standard-primitive-types, --use-frozen-field Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

standard-py310-20261017

Recommended modern Python 3.10 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-frozen-field = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-frozen-field --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py311-20261017

Recommended modern Python 3.11 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py312-20261017

Recommended modern Python 3.12 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py313-20261017

Recommended modern Python 3.13 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py314-20261017

Recommended modern Python 3.14 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

standard-py315-20261017

Recommended modern Python 3.15 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.15

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.15. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
snake-case-field = true
strict-nullable = true
target-python-version = "3.15"
use-annotated = true
use-frozen-field = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --output model.py --output-model-type pydantic_v2.BaseModel --snake-case-field --strict-nullable --target-python-version 3.15 --use-annotated --use-frozen-field --use-specialized-enum --use-standard-collections --use-subclass-enum --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.

practical-py310-20261017

Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py310-20261017 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.10"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.10 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py311-20261017

Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py311-20261017 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.11"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.11 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py312-20261017

Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py312-20261017 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.12"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.12 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py313-20261017

Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py313-20261017 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.13"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.13 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py314-20261017

Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py314-20261017 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.14"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.14 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py315-20261017

Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py315-20261017 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.15

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.15. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
collapse-reuse-models = true
collapse-root-models = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
naming-strategy = "primary-first"
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
reuse-model = true
snake-case-field = true
strict-nullable = true
target-python-version = "3.15"
use-annotated = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-line-docstring = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-fixed-items = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --collapse-reuse-models --collapse-root-models --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --formatters builtin --input schema.json --input-file-type jsonschema --naming-strategy primary-first --output model.py --output-model-type pydantic_v2.BaseModel --reuse-model --snake-case-field --strict-nullable --target-python-version 3.15 --use-annotated --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-line-docstring --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-fixed-items --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

standard-py310-20261027

Recommended modern Python 3.10 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.10. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.10"
use-annotated = true
use-decimal-in-field-forms = true
use-frozen-field = true
use-single-dict-for-object-maps = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-standard-collections = true
use-subclass-enum = true
use-tuple-for-closed-arrays = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.

standard-py311-20261027

Recommended modern Python 3.11 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.11. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.11"
use-annotated = true
use-decimal-in-field-forms = true
use-frozen-field = true
use-single-dict-for-object-maps = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-tuple-for-closed-arrays = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.

standard-py312-20261027

Recommended modern Python 3.12 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.12. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.12"
use-annotated = true
use-decimal-in-field-forms = true
use-frozen-field = true
use-single-dict-for-object-maps = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-tuple-for-closed-arrays = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.

standard-py313-20261027

Recommended modern Python 3.13 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.13. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.13"
use-annotated = true
use-decimal-in-field-forms = true
use-frozen-field = true
use-single-dict-for-object-maps = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-tuple-for-closed-arrays = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.

standard-py314-20261027

Recommended modern Python 3.14 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.14. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.14"
use-annotated = true
use-decimal-in-field-forms = true
use-frozen-field = true
use-single-dict-for-object-maps = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-tuple-for-closed-arrays = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.

standard-py315-20261027

Recommended modern Python 3.15 output for new projects.

This immutable preset enables the project-recommended Python output style for new code targeting Python 3.15. It is output-model aware and keeps stdlib dataclass and TypedDict keys compatible with their input names.

  • Requires separate target Python version: no
  • Target Python version: 3.15

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.15. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.15"
use-annotated = true
use-decimal-in-field-forms = true
use-frozen-field = true
use-single-dict-for-object-maps = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-tuple-for-closed-arrays = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --use-annotated --use-decimal-in-field-forms --use-frozen-field --use-single-dict-for-object-maps --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-tuple-for-closed-arrays --use-typed-map-values-beside-other-types --use-union-operator
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.

practical-py310-20261027

Standard Python 3.10 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py310-20261027 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.10

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.10. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-reuse-models = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
naming-strategy = "primary-first"
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
reuse-model = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.10"
use-annotated = true
use-decimal-in-field-forms = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-dict-for-object-maps = true
use-single-line-docstring = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-closed-arrays = true
use-tuple-for-fixed-items = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.10 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py311-20261027

Standard Python 3.11 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py311-20261027 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.11

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.11. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-reuse-models = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
naming-strategy = "primary-first"
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
reuse-model = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.11"
use-annotated = true
use-decimal-in-field-forms = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-dict-for-object-maps = true
use-single-line-docstring = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-closed-arrays = true
use-tuple-for-fixed-items = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.11 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py312-20261027

Standard Python 3.12 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py312-20261027 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.12

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.12. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-reuse-models = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
naming-strategy = "primary-first"
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
reuse-model = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.12"
use-annotated = true
use-decimal-in-field-forms = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-dict-for-object-maps = true
use-single-line-docstring = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-closed-arrays = true
use-tuple-for-fixed-items = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.12 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py313-20261027

Standard Python 3.13 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py313-20261027 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.13

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.13. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-reuse-models = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
naming-strategy = "primary-first"
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
reuse-model = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.13"
use-annotated = true
use-decimal-in-field-forms = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-dict-for-object-maps = true
use-single-line-docstring = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-closed-arrays = true
use-tuple-for-fixed-items = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.13 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py314-20261027

Standard Python 3.14 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py314-20261027 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.14

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.14. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-reuse-models = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
naming-strategy = "primary-first"
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
reuse-model = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.14"
use-annotated = true
use-decimal-in-field-forms = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-dict-for-object-maps = true
use-single-line-docstring = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-closed-arrays = true
use-tuple-for-fixed-items = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.14 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.

practical-py315-20261027

Standard Python 3.15 output plus practical naming, deduplication, and schema documentation.

This immutable preset extends standard-py315-20261027 with options that make generated models easier to read and use in real projects. It favors schema-authored names, model reuse, and embedded schema documentation over the most conservative output-shape stability.

  • Requires separate target Python version: no
  • Target Python version: 3.15

Included Options

These snippets show the equivalent expanded configuration without --preset for JSON Schema input, Pydantic v2 BaseModel output, and Python 3.15. Replace the input and output paths for your project.

[tool.datamodel-codegen]
allow-population-by-field-name = true
check-pattern-maps-strictly = true
collapse-reuse-models = true
collapse-root-models = true
collapse-shared-parent-wrappers = true
dedupe-request-response-variants = true
deserialize-default-values = ["decimal", "enum"]
disable-timestamp = true
enum-field-as-literal = "one"
filter-literal-values = true
formatters = ["builtin"]
input = "schema.json"
input-file-type = "jsonschema"
intersect-allof-keywords = true
keep-enum-member-values = true
keep-field-defaults-off-branch-roots = true
naming-strategy = "primary-first"
omit-redundant-constraints = true
omit-redundant-reference-null = true
openapi-as-definitions = ["paths-bodies", "ref-components"]
order-constructor-fields-by = ["final-names", "written-defaults"]
output = "model.py"
output-model-type = "pydantic_v2.BaseModel"
pin-aliases-with-alias-generator = true
read-const-beside-enum = true
read-nullable-beside-type-list = true
read-unevaluated-properties = true
reuse-model = true
snake-case-field = true
strict-nullable = true
tag-msgspec-by-payload-name = true
target-python-version = "3.15"
use-annotated = true
use-decimal-in-field-forms = true
use-default-kwarg = true
use-field-description = true
use-field-description-example = true
use-frozen-field = true
use-object-type = true
use-schema-description = true
use-single-dict-for-object-maps = true
use-single-line-docstring = true
use-single-value-enum-as-const = true
use-site-models-for-constrained-refs = true
use-specialized-enum = true
use-standard-collections = true
use-subclass-enum = true
use-title-as-name = true
use-tuple-for-closed-arrays = true
use-tuple-for-fixed-items = true
use-typed-map-values-beside-other-types = true
use-union-operator = true
use-unique-items-as-set = true
datamodel-codegen --allow-population-by-field-name --check-pattern-maps-strictly --collapse-reuse-models --collapse-root-models --collapse-shared-parent-wrappers --dedupe-request-response-variants --deserialize-default-values decimal enum --disable-timestamp --enum-field-as-literal one --filter-literal-values --formatters builtin --input schema.json --input-file-type jsonschema --intersect-allof-keywords --keep-enum-member-values --keep-field-defaults-off-branch-roots --naming-strategy primary-first --omit-redundant-constraints --omit-redundant-reference-null --openapi-as-definitions paths-bodies ref-components --order-constructor-fields-by final-names written-defaults --output model.py --output-model-type pydantic_v2.BaseModel --pin-aliases-with-alias-generator --read-const-beside-enum --read-nullable-beside-type-list --read-unevaluated-properties --reuse-model --snake-case-field --strict-nullable --tag-msgspec-by-payload-name --target-python-version 3.15 --use-annotated --use-decimal-in-field-forms --use-default-kwarg --use-field-description --use-field-description-example --use-frozen-field --use-object-type --use-schema-description --use-single-dict-for-object-maps --use-single-line-docstring --use-single-value-enum-as-const --use-site-models-for-constrained-refs --use-specialized-enum --use-standard-collections --use-subclass-enum --use-title-as-name --use-tuple-for-closed-arrays --use-tuple-for-fixed-items --use-typed-map-values-beside-other-types --use-union-operator --use-unique-items-as-set
Scope Options Notes
All output model types --use-standard-collections, --use-union-operator, --use-annotated, --enum-field-as-literal one, --use-subclass-enum, --collapse-root-models, --strict-nullable, --disable-timestamp Use built-in collection syntax, PEP 604 unions, Annotated constraints, single-value enum Literals, typed enum subclasses, inline root wrappers, schema-accurate nullability, and reproducible file headers.
Python 3.11+ targets --use-specialized-enum Use StrEnum or IntEnum only when the selected target Python version supports it.
Pydantic v2 BaseModel and dataclass output --snake-case-field, --allow-population-by-field-name, --use-frozen-field Generate Pythonic field names while preserving input aliases and readOnly immutability metadata.
msgspec Struct output --snake-case-field, --use-standard-primitive-types Generate Pythonic field names with aliases and stdlib primitive types for schema formats.
stdlib dataclass output --use-standard-primitive-types, --enum-field-as-literal all Use stdlib primitive types without renaming input keys because dataclasses do not carry aliases. Stdlib dataclasses keep raw JSON values without conversion, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
TypedDict output --use-standard-primitive-types, --use-frozen-field, --enum-field-as-literal all Use stdlib primitive types and ReadOnly metadata without renaming dictionary keys. TypedDict holds raw JSON values, so enums render as Literal values instead of enum classes; this overrides --enum-field-as-literal one from All output model types.
Serialized defaults --deserialize-default-values decimal enum Deserialize compatible serialized Decimal and enum defaults into generated Python values while preserving defaults that cannot be converted safely.
Built-in formatting --formatters builtin Format generated models without running an external formatter. For projects using Ruff, override with --formatters ruff-check ruff-format. To preserve Black/isort formatting, override with --formatters black isort.
Enums read as their const --use-single-value-enum-as-const Read an enum of one value, and an enum that admits the const beside it, as that const, so it renders as a Literal value instead of an enum class; one-value enum branches of a oneOf or anyOf merge into one enum.
OpenAPI schemas modeled as definitions --openapi-as-definitions paths-bodies ref-components Give the request and response bodies of the OpenAPI paths and webhooks scopes the model a schema definition of the same body gets, so an object body with a type array such as [object, null] is a model instead of an inline type, and give an OpenAPI component written as a $ref to a recursive schema with sibling keywords the root model a definitions entry of the same schema gets, instead of no model.
Site models for constrained references --use-site-models-for-constrained-refs Give an allOf of $ref members whose other parts add constraints, an enum or a type its own model of the values all parts admit, instead of the referenced type, which leaves the added assertions out; an allOf of enum references gets the enum of the members they share.
Redundant constraints omitted --omit-redundant-constraints Do not write a constraint again beside a type that already enforces it: the bound of a zero-bound class such as NonNegativeInt, and the length and number constraints a const or enum Literal meets by its values, which also keeps such a const branch inline instead of a root model.
Const read beside an enum --read-const-beside-enum Read a const beside an enum as JSON Schema does: a value is typed by the const that narrows the enum, and an enum that admits its const is read as that const.
Literal values filtered --filter-literal-values Keep only the values of a const or enum that meet the length, pattern, bound and multipleOf constraints beside them.
allOf keywords intersected --intersect-allof-keywords Combine the keywords of every part of an allOf, a $ref with sibling keywords and an inherited property override as JSON Schema validates them: the tightest bounds and the values every part admits.
Nullable beside a type list --read-nullable-beside-type-list Write the null that nullable: true declares beside a type list with an object into the root model of that schema under strict nullable output.
Field defaults kept off branch roots --keep-field-defaults-off-branch-roots Leave the default of a property off the root models extracted from the branches of its anyOf or oneOf.
Tuples for closed arrays --use-tuple-for-closed-arrays Generate tuple types for positional arrays that no other item can follow, so that each position keeps its own type.
One dict for object maps --use-single-dict-for-object-maps Type an object map whose keys patternProperties or propertyNames constrain as one dict of the values of every key class.
Stricter pattern-map checks --check-pattern-maps-strictly Under --generate-schema-validators, count every key that a pattern admits, check declared keys against the patterns that match them, and keep the propertyNames keys and the other types of a type array of an object without properties.
Typed map values beside other types --use-typed-map-values-beside-other-types Under --use-typed-nullable-map-values, also type the map values of a type array that lists object beside other types, such as [object, string].
Enum member values kept --keep-enum-member-values Write an enum as a plain Enum where its IntEnum, StrEnum or (T, Enum) base would change a member value, such as 2.5 beside integer members.
Unevaluated properties read --read-unevaluated-properties Read a schema-valued unevaluatedProperties as additionalProperties where no applicator evaluates the object in place.
Aliases pinned beside an alias generator --pin-aliases-with-alias-generator Write the generated alias on every field of a pydantic dataclass whose config names an alias generator, for pydantic versions older than 2.8.
msgspec tags by payload name --tag-msgspec-by-payload-name Tag the structs of a discriminated union with the property name the document carries instead of the Python name it resolves to.
Constructor fields ordered by final names and written defaults --order-constructor-fields-by final-names written-defaults Order the constructor fields of dataclass and msgspec models after every field has its final name, and the fields of msgspec and Pydantic dataclass models by the defaults they write.
Request and response variants deduplicated --dedupe-request-response-variants Decide Request and Response variants from the schema graph and build each inline model once.
Redundant reference null omitted --omit-redundant-reference-null Do not write None again where a field references a model that holds null itself.
Decimal in field forms --use-decimal-in-field-forms Under --use-decimal-for-multiple-of, write Decimal for a number with multipleOf in the field forms too, and make it strict under --strict-types float.
Shared parent wrappers collapsed --collapse-shared-parent-wrappers Under the parent name strategy, collapse a wrapper in every model that references it instead of keeping it for the models after the first.
Practical model structure and names --reuse-model, --collapse-reuse-models, --use-title-as-name, --naming-strategy primary-first Deduplicate identical models without empty inheritance wrappers, prefer schema titles for class names, and keep primary definitions ahead of inline duplicate names.
Practical typing and defaults --use-default-kwarg, --use-object-type, --use-tuple-for-fixed-items, --use-unique-items-as-set, --use-single-line-docstring Render defaults explicitly, prefer object for unconstrained values, preserve fixed and unique arrays, and keep short docstrings concise.
Schema documentation --use-schema-description, --use-field-description, --use-field-description-example Preserve schema and field descriptions, including examples, in generated model documentation.