mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
c24d33e5f1
* Generate docs exampels for Python 3.10 and above Code quality is not great and main intent here is to show the result. * Fix docs build on 3.9 * Build docs on 3.10 * What's Python 3.1? * Create temp dir if not exists * Refactor and improve imlementetion * Keep runtime typing in examples * Revert unrelated formatting changes * Add changes file * Allow specifying requirements in examples * Pin autoflake and pyupgrade * Add docs/build to Makefile lint/format/mypy * ignore_missing_imports for ansi2html and devtools * Add .tmp-projections to .gitignore * Remove dont-upgrade now when Pattern is supported * Update postponed evaluation examples Co-authored-by: Samuel Colvin <s@muelcolvin.com>
77 lines
1.7 KiB
Markdown
77 lines
1.7 KiB
Markdown
The [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-generator/) project is a library and command-line utility to generate pydantic models from just about any data source, including:
|
|
|
|
* OpenAPI 3 (YAML/JSON)
|
|
* JSON Schema
|
|
* JSON/YAML Data (which will converted to JSON Schema)
|
|
|
|
Whenever you find yourself with any data convertible JSON but without pydantic models, this tool will allow you to generate type-safe model hierarchies on demand.
|
|
|
|
## Installation
|
|
```bash
|
|
pip install datamodel-code-generator
|
|
```
|
|
|
|
## Example
|
|
In this case, datamodel-code-generator creates pydantic models from a JSON Schema file.
|
|
```bash
|
|
datamodel-codegen --input person.json --input-file-type jsonschema --output model.py
|
|
```
|
|
|
|
person.json:
|
|
```json
|
|
{
|
|
"$id": "person.json",
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "Person",
|
|
"type": "object",
|
|
"properties": {
|
|
"first_name": {
|
|
"type": "string",
|
|
"description": "The person's first name."
|
|
},
|
|
"last_name": {
|
|
"type": "string",
|
|
"description": "The person's last name."
|
|
},
|
|
"age": {
|
|
"description": "Age in years.",
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"pets": {
|
|
"type": "array",
|
|
"items": [
|
|
{
|
|
"$ref": "#/definitions/Pet"
|
|
}
|
|
]
|
|
},
|
|
"comment": {
|
|
"type": "null"
|
|
}
|
|
},
|
|
"required": [
|
|
"first_name",
|
|
"last_name"
|
|
],
|
|
"definitions": {
|
|
"Pet": {
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"age": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
model.py:
|
|
{!.tmp_examples/generate_models_person_model.md!}
|
|
|
|
More information can be found on the
|
|
[official documentation](https://koxudaxi.github.io/datamodel-code-generator/)
|