Scroll to navigation

DATAMODEL-CODEGEN(1) User Commands DATAMODEL-CODEGEN(1)

NAME

datamodel-codegen - pydantic code generator from OpenAPI and more

DESCRIPTION

usage:

datamodel-codegen [options]

Generate Python data models from schema definitions or structured data

OPTIONS

Custom imports for output (delimited list input). For example "datetime.date,datetime.datetime"
List of modules with custom formatter (delimited list input).
Set headers in HTTP requests to the remote host. (example: "Authorization: Basic dXNlcjpwYXNz")
Disable verification of the remote host's TLS certificate
Set query parameters in HTTP requests to the remote host. (example: "ref=branch")
Input file/directory (default: stdin)
Input file type (default: auto)
Output file (default: stdout)
Output model type (default: pydantic.BaseModel)
Input file URL. `--input` is ignored when `--url` is used

Typing customization:

Base Class (default: pydantic.BaseModel)
Parse enum field as literal. all: all enum field type are Literal. one: field type is Literal when an enum has only one possible value
Use field constraints and not con* annotations
Set enum members as default values for enum field
Use strict types
Use typing.Annotated for Field(). Also, `--fieldconstraints` option will be enabled.
Use generic container types for type hinting (typing.Sequence, typing.Mapping). If `--use-standardcollections` option is set, then import from collections.abc instead of typing
Use the Non{Positive,Negative}{FloatInt} types instead of the corresponding con* constrained types.
Use one literal as default value for one literal field
Use standard collections for type hinting (list, dict)
Define Enum class as subclass with field type when enum has type (int, float, bytes, str)
Use | operator for Union type (PEP 604).
define field type as `set` when the field attribute has `uniqueItems`

Field customization:

Capitalize field names on enum
Set field name when enum value is empty (default: `_`)
Add extra keys to field parameters
Add extra keys with `x-` prefix to field parameters. The extra keys are stripped of the `x-` prefix.
Add all keys to field parameters
Force optional for required fields
Do not add a field alias. E.g., if --snake-case-field is used along with a base class, which has an alias_generator
Set delimiter to convert to snake case. This option only can be used with --snake-case-field (default: `_` )
Remove field name prefix if it has a special meaning e.g. underscores
Change camel-case field name to snake-case
Set field name prefix when first character can't be used as Python field name (default: `field`)
Strip default None on fields
Union mode for only pydantic v2 field
Use default value even if a field is required
Use `default=` instead of a positional argument for Fields that have default values.
Use schema description to populate field docstring

Model customization:

Allow to pass extra fields, if this flag is not passed, extra fields are forbidden.
Allow population by field name
Set class name of root model
Models generated with a root-type field will be merged into the models using that root-type model
Disable appending `Item` suffix to model name in an array
Disable timestamp on file headers
Enable faux immutability
Enable package version on file headers
Keep generated models' order
Defined models as keyword only (for example dataclass(kw_only=True)).
Choose Datetime class between AwareDatetime, NaiveDatetime or datetime. Each output model has its default mapping (for example pydantic: datetime, dataclass: str, ...)
Reuse models on the field when a module has the model with the same content
target python version (default: 3.8)
treat dotted module names as modules
import exact types instead of modules, for example: "from .foo import Bar" instead of "from . import foo" with "foo.Bar"
use pendulum instead of datetime
Use schema description to populate class docstring
use titles as class names of models

Template customization:

Alias mapping file
Custom file header
Custom file header file path
A file with kwargs for custom formatters.
Custom template directory
The encoding of input and output (default: utf-8)
Extra template data
Model generated with double quotes. Single quotes or your black config skip_string_normalization value will be used without this option.
Wrap string literal by using black `experimentalstring-processing` option (require black 20.8b0 or later)

OpenAPI-only options:

Scopes of OpenAPI model generation (default: schemas)
Treat default field as a non-nullable field (Only OpenAPI)
use operation id of OpenAPI as class names of models
Deprecated: Enable validation (Only OpenAPI). this option is deprecated. it will be removed in future releases

General options:

show debug message (require "debug". `$ pip install 'datamodel-code-generator[debug]'`)
disable warnings
disable colorized output
show version
show this help message and exit
January 2025 datamodel-codegen 0.26.4-2