datamodel-codegen - pydantic code generator from OpenAPI and
more
- datamodel-codegen [options]
Generate Python data models from schema definitions or structured
data
- --additional-imports
ADDITIONAL_IMPORTS
- Custom imports for output (delimited list input). For example
"datetime.date,datetime.datetime"
- --custom-formatters
CUSTOM_FORMATTERS
- List of modules with custom formatter (delimited list input).
- --http-headers
HTTP_HEADER [HTTP_HEADER ...]
- Set headers in HTTP requests to the remote host. (example:
"Authorization: Basic dXNlcjpwYXNz")
- --http-ignore-tls
- Disable verification of the remote host's TLS certificate
- --http-query-parameters
HTTP_QUERY_PARAMETERS [HTTP_QUERY_PARAMETERS ...]
- Set query parameters in HTTP requests to the remote host. (example:
"ref=branch")
- --input
INPUT
- Input file/directory (default: stdin)
- --input-file-type
{auto,openapi,jsonschema,json,yaml,dict,csv,graphql}
- Input file type (default: auto)
- --output
OUTPUT
- Output file (default: stdout)
- --output-model-type
{pydantic.BaseModel,pydantic_v2.BaseModel,dataclasses.dataclass,typing.TypedDict,msgspec.Struct}
- Output model type (default: pydantic.BaseModel)
- --url URL
- Input file URL. `--input` is ignored when `--url` is used
- --base-class
BASE_CLASS
- Base Class (default: pydantic.BaseModel)
- --enum-field-as-literal
{all,one}
- 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
- --field-constraints
- Use field constraints and not con* annotations
- --set-default-enum-member
- Set enum members as default values for enum field
- --strict-types
{str,bytes,int,float,bool} [{str,bytes,int,float,bool} ...]
- Use strict types
- --use-annotated
- Use typing.Annotated for Field(). Also, `--fieldconstraints` option will
be enabled.
- --use-generic-container-types
- 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-non-positive-negative-number-constrained-types
- Use the Non{Positive,Negative}{FloatInt} types instead of the
corresponding con* constrained types.
- --use-one-literal-as-default
- Use one literal as default value for one literal field
- --use-standard-collections
- Use standard collections for type hinting (list, dict)
- --use-subclass-enum
- Define Enum class as subclass with field type when enum has type (int,
float, bytes, str)
- --use-union-operator
- Use | operator for Union type (PEP 604).
- --use-unique-items-as-set
- define field type as `set` when the field attribute has `uniqueItems`
- --allow-extra-fields
- Allow to pass extra fields, if this flag is not passed, extra fields are
forbidden.
- --allow-population-by-field-name
- Allow population by field name
- --class-name
CLASS_NAME
- Set class name of root model
- --collapse-root-models
- Models generated with a root-type field will be merged into the models
using that root-type model
- --disable-appending-item-suffix
- Disable appending `Item` suffix to model name in an array
- --disable-timestamp
- Disable timestamp on file headers
- --enable-faux-immutability
- Enable faux immutability
- --enable-version-header
- Enable package version on file headers
- --keep-model-order
- Keep generated models' order
- --keyword-only
- Defined models as keyword only (for example dataclass(kw_only=True)).
- --output-datetime-class
{datetime,AwareDatetime,NaiveDatetime}
- Choose Datetime class between AwareDatetime, NaiveDatetime or datetime.
Each output model has its default mapping (for example pydantic: datetime,
dataclass: str, ...)
- --reuse-model
- Reuse models on the field when a module has the model with the same
content
- --target-python-version
{3.6,3.7,3.8,3.9,3.10,3.11,3.12,3.13}
- target python version (default: 3.8)
- --treat-dot-as-module
- treat dotted module names as modules
- --use-exact-imports
- import exact types instead of modules, for example: "from .foo import
Bar" instead of "from . import foo" with
"foo.Bar"
- --use-pendulum
- use pendulum instead of datetime
- --use-schema-description
- Use schema description to populate class docstring
- --use-title-as-name
- use titles as class names of models