Refactor code structure for improved readability and maintainability
This commit is contained in:
parent
389d72a136
commit
aa4c067ea8
1685 changed files with 393439 additions and 71932 deletions
|
|
@ -0,0 +1 @@
|
|||
pip
|
||||
|
|
@ -0,0 +1,592 @@
|
|||
Metadata-Version: 2.4
|
||||
Name: datamodel-code-generator
|
||||
Version: 0.30.2
|
||||
Summary: Datamodel Code Generator
|
||||
Project-URL: Homepage, https://github.com/koxudaxi/datamodel-code-generator
|
||||
Project-URL: Source, https://github.com/koxudaxi/datamodel-code-generator
|
||||
Author-email: Koudai Aono <koxudaxi@gmail.com>
|
||||
License-Expression: MIT
|
||||
License-File: LICENSE
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Natural Language :: English
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Requires-Python: >=3.9
|
||||
Requires-Dist: argcomplete<4,>=2.10.1
|
||||
Requires-Dist: black>=19.10b0
|
||||
Requires-Dist: genson<2,>=1.2.1
|
||||
Requires-Dist: inflect<8,>=4.1
|
||||
Requires-Dist: isort<7,>=4.3.21
|
||||
Requires-Dist: jinja2<4,>=2.10.1
|
||||
Requires-Dist: packaging
|
||||
Requires-Dist: pydantic>=1.5
|
||||
Requires-Dist: pyyaml>=6.0.1
|
||||
Requires-Dist: tomli<3,>=2.2.1; python_version <= '3.11'
|
||||
Provides-Extra: all
|
||||
Requires-Dist: graphql-core>=3.2.3; extra == 'all'
|
||||
Requires-Dist: httpx>=0.24.1; extra == 'all'
|
||||
Requires-Dist: openapi-spec-validator<0.7,>=0.2.8; extra == 'all'
|
||||
Requires-Dist: prance>=0.18.2; extra == 'all'
|
||||
Requires-Dist: pysnooper<2,>=0.4.1; extra == 'all'
|
||||
Requires-Dist: ruff>=0.9.10; extra == 'all'
|
||||
Provides-Extra: debug
|
||||
Requires-Dist: pysnooper<2,>=0.4.1; extra == 'debug'
|
||||
Provides-Extra: graphql
|
||||
Requires-Dist: graphql-core>=3.2.3; extra == 'graphql'
|
||||
Provides-Extra: http
|
||||
Requires-Dist: httpx>=0.24.1; extra == 'http'
|
||||
Provides-Extra: ruff
|
||||
Requires-Dist: ruff>=0.9.10; extra == 'ruff'
|
||||
Provides-Extra: validation
|
||||
Requires-Dist: openapi-spec-validator<0.7,>=0.2.8; extra == 'validation'
|
||||
Requires-Dist: prance>=0.18.2; extra == 'validation'
|
||||
Description-Content-Type: text/markdown
|
||||
|
||||
# datamodel-code-generator
|
||||
|
||||
This code generator creates [pydantic v1 and v2](https://docs.pydantic.dev/) model, [dataclasses.dataclass](https://docs.python.org/3/library/dataclasses.html), [typing.TypedDict](https://docs.python.org/3/library/typing.html#typing.TypedDict)
|
||||
and [msgspec.Struct](https://github.com/jcrist/msgspec) from an openapi file and others.
|
||||
|
||||
[](https://pypi.python.org/pypi/datamodel-code-generator)
|
||||
[](https://anaconda.org/conda-forge/datamodel-code-generator)
|
||||
[](https://pepy.tech/project/datamodel-code-generator)
|
||||
[](https://pypi.python.org/pypi/datamodel-code-generator)
|
||||
[](https://codecov.io/gh/koxudaxi/datamodel-code-generator)
|
||||

|
||||
[](https://github.com/astral-sh/ruff)
|
||||
[](https://pydantic.dev)
|
||||
[](https://pydantic.dev)
|
||||
|
||||
## Help
|
||||
See [documentation](https://koxudaxi.github.io/datamodel-code-generator) for more details.
|
||||
|
||||
## Quick Installation
|
||||
|
||||
To install `datamodel-code-generator`:
|
||||
```bash
|
||||
$ pip install datamodel-code-generator
|
||||
```
|
||||
|
||||
## Simple Usage
|
||||
You can generate models from a local file.
|
||||
```bash
|
||||
$ datamodel-codegen --input api.yaml --output model.py
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>api.yaml</summary>
|
||||
|
||||
```yaml
|
||||
openapi: "3.0.0"
|
||||
info:
|
||||
version: 1.0.0
|
||||
title: Swagger Petstore
|
||||
license:
|
||||
name: MIT
|
||||
servers:
|
||||
- url: http://petstore.swagger.io/v1
|
||||
paths:
|
||||
/pets:
|
||||
get:
|
||||
summary: List all pets
|
||||
operationId: listPets
|
||||
tags:
|
||||
- pets
|
||||
parameters:
|
||||
- name: limit
|
||||
in: query
|
||||
description: How many items to return at one time (max 100)
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
format: int32
|
||||
responses:
|
||||
'200':
|
||||
description: A paged array of pets
|
||||
headers:
|
||||
x-next:
|
||||
description: A link to the next page of responses
|
||||
schema:
|
||||
type: string
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Pets"
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
x-amazon-apigateway-integration:
|
||||
uri:
|
||||
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${PythonVersionFunction.Arn}/invocations
|
||||
passthroughBehavior: when_no_templates
|
||||
httpMethod: POST
|
||||
type: aws_proxy
|
||||
post:
|
||||
summary: Create a pet
|
||||
operationId: createPets
|
||||
tags:
|
||||
- pets
|
||||
responses:
|
||||
'201':
|
||||
description: Null response
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
x-amazon-apigateway-integration:
|
||||
uri:
|
||||
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${PythonVersionFunction.Arn}/invocations
|
||||
passthroughBehavior: when_no_templates
|
||||
httpMethod: POST
|
||||
type: aws_proxy
|
||||
/pets/{petId}:
|
||||
get:
|
||||
summary: Info for a specific pet
|
||||
operationId: showPetById
|
||||
tags:
|
||||
- pets
|
||||
parameters:
|
||||
- name: petId
|
||||
in: path
|
||||
required: true
|
||||
description: The id of the pet to retrieve
|
||||
schema:
|
||||
type: string
|
||||
responses:
|
||||
'200':
|
||||
description: Expected response to a valid request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Pets"
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
x-amazon-apigateway-integration:
|
||||
uri:
|
||||
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${PythonVersionFunction.Arn}/invocations
|
||||
passthroughBehavior: when_no_templates
|
||||
httpMethod: POST
|
||||
type: aws_proxy
|
||||
components:
|
||||
schemas:
|
||||
Pet:
|
||||
required:
|
||||
- id
|
||||
- name
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
format: int64
|
||||
name:
|
||||
type: string
|
||||
tag:
|
||||
type: string
|
||||
Pets:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/Pet"
|
||||
Error:
|
||||
required:
|
||||
- code
|
||||
- message
|
||||
properties:
|
||||
code:
|
||||
type: integer
|
||||
format: int32
|
||||
message:
|
||||
type: string
|
||||
apis:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
apiKey:
|
||||
type: string
|
||||
description: To be used as a dataset parameter value
|
||||
apiVersionNumber:
|
||||
type: string
|
||||
description: To be used as a version parameter value
|
||||
apiUrl:
|
||||
type: string
|
||||
format: uri
|
||||
description: "The URL describing the dataset's fields"
|
||||
apiDocumentationUrl:
|
||||
type: string
|
||||
format: uri
|
||||
description: A URL to the API console for each API
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>model.py</summary>
|
||||
|
||||
```python
|
||||
# generated by datamodel-codegen:
|
||||
# filename: api.yaml
|
||||
# timestamp: 2020-06-02T05:28:24+00:00
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import AnyUrl, BaseModel, Field
|
||||
|
||||
|
||||
class Pet(BaseModel):
|
||||
id: int
|
||||
name: str
|
||||
tag: Optional[str] = None
|
||||
|
||||
|
||||
class Pets(BaseModel):
|
||||
__root__: List[Pet]
|
||||
|
||||
|
||||
class Error(BaseModel):
|
||||
code: int
|
||||
message: str
|
||||
|
||||
|
||||
class Api(BaseModel):
|
||||
apiKey: Optional[str] = Field(
|
||||
None, description='To be used as a dataset parameter value'
|
||||
)
|
||||
apiVersionNumber: Optional[str] = Field(
|
||||
None, description='To be used as a version parameter value'
|
||||
)
|
||||
apiUrl: Optional[AnyUrl] = Field(
|
||||
None, description="The URL describing the dataset's fields"
|
||||
)
|
||||
apiDocumentationUrl: Optional[AnyUrl] = Field(
|
||||
None, description='A URL to the API console for each API'
|
||||
)
|
||||
|
||||
|
||||
class Apis(BaseModel):
|
||||
__root__: List[Api]
|
||||
```
|
||||
</details>
|
||||
|
||||
## Supported input types
|
||||
- OpenAPI 3 (YAML/JSON, [OpenAPI Data Type](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#data-types));
|
||||
- JSON Schema ([JSON Schema Core](http://json-schema.org/draft/2019-09/json-schema-validation.html)/[JSON Schema Validation](http://json-schema.org/draft/2019-09/json-schema-validation.html));
|
||||
- JSON/YAML/CSV Data (it will be converted to JSON Schema);
|
||||
- Python dictionary (it will be converted to JSON Schema);
|
||||
- GraphQL schema ([GraphQL Schemas and Types](https://graphql.org/learn/schema/));
|
||||
|
||||
## Supported output types
|
||||
- [pydantic](https://docs.pydantic.dev/1.10/).BaseModel;
|
||||
- [pydantic_v2](https://docs.pydantic.dev/2.0/).BaseModel;
|
||||
- [dataclasses.dataclass](https://docs.python.org/3/library/dataclasses.html);
|
||||
- [typing.TypedDict](https://docs.python.org/3/library/typing.html#typing.TypedDict);
|
||||
- [msgspec.Struct](https://github.com/jcrist/msgspec);
|
||||
- Custom type from your [jinja2](https://jinja.palletsprojects.com/en/3.1.x/) template;
|
||||
|
||||
## Sponsors
|
||||
<table>
|
||||
<tr>
|
||||
<td valign="top" align="center">
|
||||
<a href="https://github.com/JetBrainsOfficial">
|
||||
<img src="https://avatars.githubusercontent.com/u/60931315?s=100&v=4" alt="JetBrains Logo" style="width: 100px;">
|
||||
<p>JetBrains</p>
|
||||
</a>
|
||||
</td>
|
||||
<td valign="top" align="center">
|
||||
<a href="https://github.com/astral-sh">
|
||||
<img src="https://avatars.githubusercontent.com/u/115962839?s=200&v=4" alt="Astral Logo" style="width: 100px;">
|
||||
<p>Astral</p>
|
||||
</a>
|
||||
</td>
|
||||
<td valign="top" align="center">
|
||||
<a href="https://github.com/DataDog">
|
||||
<img src="https://avatars.githubusercontent.com/u/365230?s=200&v=4" alt="Datadog, Inc. Logo" style="width: 100px;">
|
||||
<p>Datadog, Inc.</p>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Projects that use datamodel-code-generator
|
||||
|
||||
These OSS projects use datamodel-code-generator to generate many models.
|
||||
See the following linked projects for real world examples and inspiration.
|
||||
|
||||
- [airbytehq/airbyte](https://github.com/airbytehq/airbyte)
|
||||
- *[Generate Python, Java/Kotlin, and Typescript protocol models](https://github.com/airbytehq/airbyte-protocol/tree/main/protocol-models/bin)*
|
||||
- [apache/iceberg](https://github.com/apache/iceberg)
|
||||
- *[Generate Python code](https://github.com/apache/iceberg/blob/d2e1094ee0cc6239d43f63ba5114272f59d605d2/open-api/README.md?plain=1#L39)*
|
||||
*[`make generate`](https://github.com/apache/iceberg/blob/d2e1094ee0cc6239d43f63ba5114272f59d605d2/open-api/Makefile#L24-L34)*
|
||||
- [argoproj-labs/hera](https://github.com/argoproj-labs/hera)
|
||||
- *[`Makefile`](https://github.com/argoproj-labs/hera/blob/c8cbf0c7a676de57469ca3d6aeacde7a5e84f8b7/Makefile#L53-L62)*
|
||||
- [awslabs/aws-lambda-powertools-python](https://github.com/awslabs/aws-lambda-powertools-python)
|
||||
- *Recommended for [advanced-use-cases](https://awslabs.github.io/aws-lambda-powertools-python/2.6.0/utilities/parser/#advanced-use-cases) in the official documentation*
|
||||
- [cloudcoil/cloudcoil](https://github.com/cloudcoil/cloudcoil)
|
||||
- *[Cloudcoil - Model generation](https://github.com/cloudcoil/cloudcoil#%EF%B8%8F-model-generation)
|
||||
- [DataDog/integrations-core](https://github.com/DataDog/integrations-core)
|
||||
- *[Config models](https://github.com/DataDog/integrations-core/blob/master/docs/developer/meta/config-models.md)*
|
||||
- [hashintel/hash](https://github.com/hashintel/hash)
|
||||
- *[`codegen.sh`](https://github.com/hashintel/hash/blob/9762b1a1937e14f6b387677e4c7fe4a5f3d4a1e1/libs/%40local/hash-graph-client/python/scripts/codegen.sh#L21-L39)*
|
||||
- [IBM/compliance-trestle](https://github.com/IBM/compliance-trestle)
|
||||
- *[Building the models from the OSCAL schemas.](https://github.com/IBM/compliance-trestle/blob/develop/docs/contributing/website.md#building-the-models-from-the-oscal-schemas)*
|
||||
- [Netflix/consoleme](https://github.com/Netflix/consoleme)
|
||||
- *[How do I generate models from the Swagger specification?](https://github.com/Netflix/consoleme/blob/master/docs/gitbook/faq.md#how-do-i-generate-models-from-the-swagger-specification)*
|
||||
- [Nike-Inc/brickflow](https://github.com/Nike-Inc/brickflow)
|
||||
- *[Code generate tools](https://github.com/Nike-Inc/brickflow/blob/e3245bf638588867b831820a6675ada76b2010bf/tools/README.md?plain=1#L8)[`./tools/gen-bundle.sh`](https://github.com/Nike-Inc/brickflow/blob/e3245bf638588867b831820a6675ada76b2010bf/tools/gen-bundle.sh#L15-L22)*
|
||||
- [open-metadata/OpenMetadata](https://github.com/open-metadata/OpenMetadata)
|
||||
- *[Makefile](https://github.com/open-metadata/OpenMetadata/blob/main/Makefile)*
|
||||
- [PostHog/posthog](https://github.com/PostHog/posthog)
|
||||
- *[Generate models via `npm run`](https://github.com/PostHog/posthog/blob/e1a55b9cb38d01225224bebf8f0c1e28faa22399/package.json#L41)*
|
||||
- [SeldonIO/MLServer](https://github.com/SeldonIO/MLServer)
|
||||
- *[generate-types.sh](https://github.com/SeldonIO/MLServer/blob/master/hack/generate-types.sh)*
|
||||
|
||||
## Installation
|
||||
|
||||
To install `datamodel-code-generator`:
|
||||
```bash
|
||||
$ pip install datamodel-code-generator
|
||||
```
|
||||
|
||||
### `http` extra option
|
||||
If you want to resolve `$ref` for remote files then you should specify `http` extra option.
|
||||
```bash
|
||||
$ pip install 'datamodel-code-generator[http]'
|
||||
```
|
||||
|
||||
### `graphql` extra option
|
||||
|
||||
If you want to generate data model from a GraphQL schema then you should specify `graphql` extra option.
|
||||
```bash
|
||||
$ pip install 'datamodel-code-generator[graphql]'
|
||||
```
|
||||
|
||||
### Docker Image
|
||||
The docker image is in [Docker Hub](https://hub.docker.com/r/koxudaxi/datamodel-code-generator)
|
||||
```bash
|
||||
$ docker pull koxudaxi/datamodel-code-generator
|
||||
```
|
||||
|
||||
## Advanced Uses
|
||||
You can generate models from a URL.
|
||||
```bash
|
||||
$ datamodel-codegen --url https://<INPUT FILE URL> --output model.py
|
||||
```
|
||||
This method needs the [http extra option](#http-extra-option)
|
||||
|
||||
|
||||
## All Command Options
|
||||
|
||||
The `datamodel-codegen` command:
|
||||
|
||||
<!-- start command help -->
|
||||
```bash
|
||||
usage:
|
||||
datamodel-codegen [options]
|
||||
|
||||
Generate Python data models from schema definitions or structured data
|
||||
|
||||
Options:
|
||||
--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).
|
||||
--formatters {black,isort,ruff-check,ruff-format} [{black,isort,ruff-check,ruff-format} ...]
|
||||
Formatters for output (default: [black, isort])
|
||||
--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
|
||||
|
||||
Typing customization:
|
||||
--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, `--field-constraints` option
|
||||
will be enabled.
|
||||
--use-generic-container-types
|
||||
Use generic container types for type hinting (typing.Sequence,
|
||||
typing.Mapping). If `--use-standard-collections` 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`
|
||||
|
||||
Field customization:
|
||||
--capitalise-enum-members, --capitalize-enum-members
|
||||
Capitalize field names on enum
|
||||
--empty-enum-field-name EMPTY_ENUM_FIELD_NAME
|
||||
Set field name when enum value is empty (default: `_`)
|
||||
--field-extra-keys FIELD_EXTRA_KEYS [FIELD_EXTRA_KEYS ...]
|
||||
Add extra keys to field parameters
|
||||
--field-extra-keys-without-x-prefix FIELD_EXTRA_KEYS_WITHOUT_X_PREFIX [FIELD_EXTRA_KEYS_WITHOUT_X_PREFIX ...]
|
||||
Add extra keys with `x-` prefix to field parameters. The extra keys
|
||||
are stripped of the `x-` prefix.
|
||||
--field-include-all-keys
|
||||
Add all keys to field parameters
|
||||
--force-optional Force optional for required fields
|
||||
--no-alias Do not add a field alias. E.g., if --snake-case-field is used along
|
||||
with a base class, which has an alias_generator
|
||||
--original-field-name-delimiter ORIGINAL_FIELD_NAME_DELIMITER
|
||||
Set delimiter to convert to snake case. This option only can be used
|
||||
with --snake-case-field (default: `_` )
|
||||
--remove-special-field-name-prefix
|
||||
Remove field name prefix if it has a special meaning e.g.
|
||||
underscores
|
||||
--snake-case-field Change camel-case field name to snake-case
|
||||
--special-field-name-prefix SPECIAL_FIELD_NAME_PREFIX
|
||||
Set field name prefix when first character can''t be used as Python
|
||||
field name (default: `field`)
|
||||
--strip-default-none Strip default None on fields
|
||||
--union-mode {smart,left_to_right}
|
||||
Union mode for only pydantic v2 field
|
||||
--use-default Use default value even if a field is required
|
||||
--use-default-kwarg Use `default=` instead of a positional argument for Fields that have
|
||||
default values.
|
||||
--use-field-description
|
||||
Use schema description to populate field docstring
|
||||
|
||||
Model customization:
|
||||
--allow-extra-fields Allow passing 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
|
||||
--frozen-dataclasses Generate frozen dataclasses (dataclass(frozen=True)). Only applies
|
||||
to dataclass output.
|
||||
--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, ...)
|
||||
--parent-scoped-naming
|
||||
Set name of models defined inline from the parent model
|
||||
--reuse-model Reuse models on the field when a module has the model with the same
|
||||
content
|
||||
--target-python-version {3.9,3.10,3.11,3.12,3.13}
|
||||
target python version
|
||||
--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
|
||||
|
||||
Template customization:
|
||||
--aliases ALIASES Alias mapping file
|
||||
--custom-file-header CUSTOM_FILE_HEADER
|
||||
Custom file header
|
||||
--custom-file-header-path CUSTOM_FILE_HEADER_PATH
|
||||
Custom file header file path
|
||||
--custom-formatters-kwargs CUSTOM_FORMATTERS_KWARGS
|
||||
A file with kwargs for custom formatters.
|
||||
--custom-template-dir CUSTOM_TEMPLATE_DIR
|
||||
Custom template directory
|
||||
--encoding ENCODING The encoding of input and output (default: utf-8)
|
||||
--extra-template-data EXTRA_TEMPLATE_DATA
|
||||
Extra template data
|
||||
--use-double-quotes Model generated with double quotes. Single quotes or your black
|
||||
config skip_string_normalization value will be used without this
|
||||
option.
|
||||
--wrap-string-literal
|
||||
Wrap string literal by using black `experimental-string-processing`
|
||||
option (require black 20.8b0 or later)
|
||||
|
||||
OpenAPI-only options:
|
||||
--openapi-scopes {schemas,paths,tags,parameters} [{schemas,paths,tags,parameters} ...]
|
||||
Scopes of OpenAPI model generation (default: schemas)
|
||||
--strict-nullable Treat default field as a non-nullable field (Only OpenAPI)
|
||||
--use-operation-id-as-name
|
||||
use operation id of OpenAPI as class names of models
|
||||
--validation Deprecated: Enable validation (Only OpenAPI). this option is
|
||||
deprecated. it will be removed in future releases
|
||||
|
||||
General options:
|
||||
--debug show debug message (require "debug". `$ pip install ''datamodel-code-
|
||||
generator[debug]''`)
|
||||
--disable-warnings disable warnings
|
||||
--no-color disable colorized output
|
||||
--version show version
|
||||
-h, --help show this help message and exit
|
||||
```
|
||||
<!-- end command help -->
|
||||
|
||||
## Related projects
|
||||
### fastapi-code-generator
|
||||
This code generator creates [FastAPI](https://github.com/tiangolo/fastapi) app from an openapi file.
|
||||
|
||||
[https://github.com/koxudaxi/fastapi-code-generator](https://github.com/koxudaxi/fastapi-code-generator)
|
||||
|
||||
### pydantic-pycharm-plugin
|
||||
[A JetBrains PyCharm plugin](https://plugins.jetbrains.com/plugin/12861-pydantic) for [`pydantic`](https://github.com/samuelcolvin/pydantic).
|
||||
|
||||
[https://github.com/koxudaxi/pydantic-pycharm-plugin](https://github.com/koxudaxi/pydantic-pycharm-plugin)
|
||||
|
||||
## PyPi
|
||||
|
||||
[https://pypi.org/project/datamodel-code-generator](https://pypi.org/project/datamodel-code-generator)
|
||||
|
||||
## Contributing
|
||||
|
||||
See `docs/development-contributing.md` for how to get started!
|
||||
|
||||
## License
|
||||
|
||||
datamodel-code-generator is released under the MIT License. http://www.opensource.org/licenses/mit-license
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
../../Scripts/datamodel-codegen.exe,sha256=pwHubgtsRQwCZEBFc_vt4OAf5Etny-iJUVmRBvRWeaU,106417
|
||||
datamodel_code_generator-0.30.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
datamodel_code_generator-0.30.2.dist-info/METADATA,sha256=AXlPlc6b1QyG1ylx4pUj6NZqLI-P59K3QZw4e2vSjlY,25430
|
||||
datamodel_code_generator-0.30.2.dist-info/RECORD,,
|
||||
datamodel_code_generator-0.30.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
datamodel_code_generator-0.30.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
||||
datamodel_code_generator-0.30.2.dist-info/entry_points.txt,sha256=cJVcHiEViQMANaoM5C1xR5hzmyCqH6hHHMpV8W00in8,77
|
||||
datamodel_code_generator-0.30.2.dist-info/licenses/LICENSE,sha256=K54Lwc6_jduycsy8oFFjQEeSSuEiqvVIjCGIXOMnuTQ,1068
|
||||
datamodel_code_generator/__init__.py,sha256=h0yxjBBK7_RJdAqUVimMfSqsq0tXqH_nzcNZRgL3Yrs,20530
|
||||
datamodel_code_generator/__main__.py,sha256=Sl3ch890tr6J8voedlz8nyCq2QYLZDtibFa3o2SfQ_k,22703
|
||||
datamodel_code_generator/__pycache__/__init__.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/__main__.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/arguments.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/format.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/http.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/imports.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/pydantic_patch.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/reference.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/types.cpython-310.pyc,,
|
||||
datamodel_code_generator/__pycache__/util.cpython-310.pyc,,
|
||||
datamodel_code_generator/arguments.py,sha256=T8iPrqTq9MJLJyi4PHB3_JQC2PgfLpYNmXpDFZWsXAs,16838
|
||||
datamodel_code_generator/format.py,sha256=ZlnTCAl1H4og685smvCBSzexgpYbZtyYLIrt7lwUNcY,8934
|
||||
datamodel_code_generator/http.py,sha256=LE94GC7I9D8lWIg_YAGWedfy0XNxOXTmiYKuNMTwouo,887
|
||||
datamodel_code_generator/imports.py,sha256=Nq83WbEGCegntg3WX4VbKfzAIs84alZ7IrYyNPrlUbc,5517
|
||||
datamodel_code_generator/model/__init__.py,sha256=pJlJ1juQ-Gv17ZKXy6OAfJSSoOAmYQ7QCbdneu1BENU,3594
|
||||
datamodel_code_generator/model/__pycache__/__init__.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/base.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/dataclass.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/enum.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/imports.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/msgspec.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/rootmodel.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/scalar.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/typed_dict.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/types.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/__pycache__/union.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/base.py,sha256=ZQ3Xy4Fs_I8M01tk1ps0EhWJM9vR-n7umPkz5NmHTjw,15050
|
||||
datamodel_code_generator/model/dataclass.py,sha256=8Z02XY3S6byNe9Pb46LisE5opQcvpx8FVvPjUrlAacE,6309
|
||||
datamodel_code_generator/model/enum.py,sha256=yriQslY1hag_Qk-Xv3vl_LkPnbmMZ3iRTAGiiyMN0Io,4003
|
||||
datamodel_code_generator/model/imports.py,sha256=PTc09UzIBSsa5yAPoieb6hCGIohU2T1Y7igNy_pYarg,820
|
||||
datamodel_code_generator/model/msgspec.py,sha256=qL2DIEwBfpn-vd8p8KEmUViMUce6RgI4Ql-drOmPR7M,11845
|
||||
datamodel_code_generator/model/pydantic/__init__.py,sha256=CtyzSriGEYGp1yfHapjD5lrS2vkSNe8AqKSYO-XaRWc,1095
|
||||
datamodel_code_generator/model/pydantic/__pycache__/__init__.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic/__pycache__/base_model.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic/__pycache__/custom_root_type.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic/__pycache__/dataclass.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic/__pycache__/imports.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic/__pycache__/types.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic/base_model.py,sha256=qlGTxWYPS3XsHYwrRKjJDHvCixAxpWMEXTPtyAVXb6g,12182
|
||||
datamodel_code_generator/model/pydantic/custom_root_type.py,sha256=VJpEAmGFe3TzMKrR5YvR7PJ3pfGHcYytO1zhQrWyoWg,299
|
||||
datamodel_code_generator/model/pydantic/dataclass.py,sha256=jgjkqQk71CQP4RbTcPGSEOQDNqjTQnzFavvl5LjWTBw,455
|
||||
datamodel_code_generator/model/pydantic/imports.py,sha256=nWPiLgDeYNPHcAs8M-gaUUZg1daQRHdBPpjYuX3b5u4,2225
|
||||
datamodel_code_generator/model/pydantic/types.py,sha256=ttTiDsQ6FV3h4C_NTEhvPUmUpeqxBNQt-DJJFpKZS8s,13356
|
||||
datamodel_code_generator/model/pydantic_v2/__init__.py,sha256=6liTgL3VeH4ohYXkRoiCSafEc0nHxgbnYO3Rl2iQDx8,1290
|
||||
datamodel_code_generator/model/pydantic_v2/__pycache__/__init__.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic_v2/__pycache__/base_model.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic_v2/__pycache__/imports.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic_v2/__pycache__/root_model.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic_v2/__pycache__/types.cpython-310.pyc,,
|
||||
datamodel_code_generator/model/pydantic_v2/base_model.py,sha256=J_DxR6Auw0L-zHn0F5l9K8XtSmfEvDT26Bj-VZxihiE,8353
|
||||
datamodel_code_generator/model/pydantic_v2/imports.py,sha256=K3XD2kF9YCKmo5_7b2ipV5bGUrjz0avS-SiyDMVIpF0,299
|
||||
datamodel_code_generator/model/pydantic_v2/root_model.py,sha256=H4rwtg56N65-I3QHlPvlNhDcSPV0m56KSAgfGmxYXAQ,888
|
||||
datamodel_code_generator/model/pydantic_v2/types.py,sha256=apEuIhCBa15WdwGA0R9cqjpiH8mTLgAgu02CjcU4Css,2064
|
||||
datamodel_code_generator/model/rootmodel.py,sha256=pY8G2SPjkafzfJ1L9P5sNdp8qe45UclpUYN86guRB3M,202
|
||||
datamodel_code_generator/model/scalar.py,sha256=xfONEK30eYJ2mSL9PK9zXqEG5-xApYMI_gmKOn5qhK4,2664
|
||||
datamodel_code_generator/model/template/Enum.jinja2,sha256=k9lB8iQUsB94bPi8e3xJEd0AGk2ciWL-pSZuGY5kNPQ,378
|
||||
datamodel_code_generator/model/template/Scalar.jinja2,sha256=Ss22-mYG3Vez-pbqmW2zFzwxGVhXkbQcAVTMV7POpg8,104
|
||||
datamodel_code_generator/model/template/TypedDict.jinja2,sha256=J_Pe_CiuvTOb-EUCExXPaeTEFzn2keyrKB0wglZ8HgA,135
|
||||
datamodel_code_generator/model/template/TypedDictClass.jinja2,sha256=URwp5__WyR8G21Hoyc17aMzoast-NppXnXe19VFi5wQ,377
|
||||
datamodel_code_generator/model/template/TypedDictFunction.jinja2,sha256=KjSij5_w4ow4a12SR3orYOndmXGkIvJBBUN735bQ6G0,321
|
||||
datamodel_code_generator/model/template/Union.jinja2,sha256=sq7o--2ESUSfIL4kCfgnr5ZXPFa_VeioqbATTY-N-5I,258
|
||||
datamodel_code_generator/model/template/dataclass.jinja2,sha256=c3gs1ZwDEwLpmZ2PpOEWjHjfdl6kPP64xm18mt9lZMk,1007
|
||||
datamodel_code_generator/model/template/msgspec.jinja2,sha256=qMuFOH6SFFh558wImdI6uIjG4Mtam3J_ox8Hmgqkv0g,1174
|
||||
datamodel_code_generator/model/template/pydantic/BaseModel.jinja2,sha256=sYZa-47YAXqZrd5cYKVnPrsbDvLkHEJOUd7M0nAosP8,1084
|
||||
datamodel_code_generator/model/template/pydantic/BaseModel_root.jinja2,sha256=WDdTXYNTrkIw-B4OvPVxOaETTknLs0zdNuq_iDQ2Bcw,1000
|
||||
datamodel_code_generator/model/template/pydantic/Config.jinja2,sha256=Ik028qdqQhDfEP207TCbwVv2b5Do1-nRNDPKzBHKzwM,135
|
||||
datamodel_code_generator/model/template/pydantic/dataclass.jinja2,sha256=hM4OZTVhtOokqlPNSdh5drhBXfQLPvbyO88jipSPr5Y,629
|
||||
datamodel_code_generator/model/template/pydantic_v2/BaseModel.jinja2,sha256=i1Wg9W20c4UGUkGJUf2rjuRNO52zLbktndfYupgJA78,1442
|
||||
datamodel_code_generator/model/template/pydantic_v2/ConfigDict.jinja2,sha256=xHvBYrh__32O1xRCSl6_u5zbyYIjB8a5k8fZiTo0spY,149
|
||||
datamodel_code_generator/model/template/pydantic_v2/RootModel.jinja2,sha256=XQBlML7Hm5hN6_AExENNvVc_yxNWijcIfTTbbmegCpE,1223
|
||||
datamodel_code_generator/model/template/root.jinja2,sha256=3OTtibxLcGA-FMdR0QDCJUJQgf_kRW0OafeCTPFSFFo,162
|
||||
datamodel_code_generator/model/typed_dict.py,sha256=FJi_fEZWuFe3nvidfl-jqr9PMRFTvfusoEFQkx1BqHI,4685
|
||||
datamodel_code_generator/model/types.py,sha256=ZyEwi76EBI5RS5JfoNUoRHmjOAZDup8oNFvQQDizfwQ,3502
|
||||
datamodel_code_generator/model/union.py,sha256=zwq1ayGFW3KbI4SxPCcdZcrM7X4Px25IdujDedtwgOw,1929
|
||||
datamodel_code_generator/parser/__init__.py,sha256=3XtFcDPocaetfjmWFqj_CubqNCDipb7vXZHsYKdJXXU,851
|
||||
datamodel_code_generator/parser/__pycache__/__init__.cpython-310.pyc,,
|
||||
datamodel_code_generator/parser/__pycache__/base.cpython-310.pyc,,
|
||||
datamodel_code_generator/parser/__pycache__/graphql.cpython-310.pyc,,
|
||||
datamodel_code_generator/parser/__pycache__/jsonschema.cpython-310.pyc,,
|
||||
datamodel_code_generator/parser/__pycache__/openapi.cpython-310.pyc,,
|
||||
datamodel_code_generator/parser/base.py,sha256=2rNtyo9Gcu4lSihbQKtawL6W7KD4keM2CR1KHgnrNso,62794
|
||||
datamodel_code_generator/parser/graphql.py,sha256=w4rnPXxQWGluG9dKlfv9XG1sv8T7HJOq9wySd-EsfDs,23250
|
||||
datamodel_code_generator/parser/jsonschema.py,sha256=cjxYs2vQ2aka5YpqagDkNhyhvBwNXz7YOrdsJz7bVeQ,71034
|
||||
datamodel_code_generator/parser/openapi.py,sha256=oY_qOngrxr4fHk9b6YUNI2IQCWkUeAJ9-CvTCTym8WM,27527
|
||||
datamodel_code_generator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
datamodel_code_generator/pydantic_patch.py,sha256=co1IUDvZqQ-xEZ3C9gbV-BVm2Cin1vfyZNr2Dr0LdHY,718
|
||||
datamodel_code_generator/reference.py,sha256=OobfjN5hWaKzv4ECdCPc9Q3ODkoG93B4qaKlzDEcDrY,26748
|
||||
datamodel_code_generator/types.py,sha256=1g4RZZ1e5oC4EHaNyyDmsIfF4o1WAjQ2KaLjwc9mYss,21883
|
||||
datamodel_code_generator/util.py,sha256=mZW8-6CbFe6T4IY5OM9Av6cH-0VknQGe2eIKjTM6Jzo,2729
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Wheel-Version: 1.0
|
||||
Generator: hatchling 1.27.0
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[console_scripts]
|
||||
datamodel-codegen = datamodel_code_generator.__main__:main
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019 Koudai Aono
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
Loading…
Add table
Add a link
Reference in a new issue