@@ -17,7 +17,7 @@ pip install 'datamodel-code-generator[http]'
1717When the ` output ` parameter is omitted (or set to ` None ` ), ` generate() ` returns the generated code directly as a string:
1818
1919``` python
20- from datamodel_code_generator import InputFileType, generate, DataModelType
20+ from datamodel_code_generator import InputFileType, generate, GenerateConfig, DataModelType
2121
2222json_schema: str = """ {
2323 "type": "object",
@@ -30,12 +30,12 @@ json_schema: str = """{
3030 }
3131}"""
3232
33- result = generate(
34- json_schema,
33+ config = GenerateConfig(
3534 input_file_type = InputFileType.JsonSchema,
3635 input_filename = " example.json" ,
3736 output_model_type = DataModelType.PydanticV2BaseModel,
3837)
38+ result = generate(json_schema, config = config)
3939print (result)
4040```
4141
@@ -44,13 +44,16 @@ print(result)
4444When the schema generates multiple modules, ` generate() ` returns a ` GeneratedModules ` dictionary mapping module path tuples to generated code:
4545
4646``` python
47- from datamodel_code_generator import InputFileType, generate, GeneratedModules
47+ from datamodel_code_generator import InputFileType, generate, GenerateConfig, GeneratedModules
48+
49+ # Your OpenAPI specification (string, Path, or dict)
50+ openapi_spec: str = " ..." # Replace with your actual OpenAPI spec
4851
4952# Schema that generates multiple modules (e.g., with $ref to other files)
50- result: str | GeneratedModules = generate(
51- openapi_spec,
53+ config = GenerateConfig(
5254 input_file_type = InputFileType.OpenAPI,
5355)
56+ result: str | GeneratedModules = generate(openapi_spec, config = config)
5457
5558if isinstance (result, dict ):
5659 for module_path, content in result.items():
@@ -63,13 +66,12 @@ else:
6366
6467### 📝 Writing to Files
6568
66- To write generated code to the file system, provide a ` Path ` to the ` output ` parameter:
69+ To write generated code to the file system, provide a ` Path ` to the ` output ` parameter in the config :
6770
6871``` python
6972from pathlib import Path
7073from tempfile import TemporaryDirectory
71- from datamodel_code_generator import InputFileType, generate
72- from datamodel_code_generator import DataModelType
74+ from datamodel_code_generator import InputFileType, generate, GenerateConfig, DataModelType
7375
7476json_schema: str = """ {
7577 "type": "object",
@@ -85,14 +87,14 @@ json_schema: str = """{
8587with TemporaryDirectory() as temporary_directory_name:
8688 temporary_directory = Path(temporary_directory_name)
8789 output = Path(temporary_directory / ' model.py' )
88- generate(
89- json_schema,
90+ config = GenerateConfig(
9091 input_file_type = InputFileType.JsonSchema,
9192 input_filename = " example.json" ,
9293 output = output,
9394 # set up the output model types
9495 output_model_type = DataModelType.PydanticV2BaseModel,
9596 )
97+ generate(json_schema, config = config)
9698 model: str = output.read_text()
9799print (model)
98100```
@@ -127,10 +129,13 @@ class Model(BaseModel):
127129
128130## 🔧 Using the Parser Directly
129131
130- You can also call the parser directly for more control:
132+ You can also call the parser directly for more control. Parser classes also support the ` config ` parameter similar to ` generate() ` .
133+
134+ ### Using ` config ` Parameter (Recommended)
131135
132136``` python
133137from datamodel_code_generator import DataModelType, PythonVersion
138+ from datamodel_code_generator.config import JSONSchemaParserConfig
134139from datamodel_code_generator.model import get_data_model_types
135140from datamodel_code_generator.parser.jsonschema import JsonSchemaParser
136141
@@ -145,6 +150,39 @@ json_schema: str = """{
145150 }
146151}"""
147152
153+ data_model_types = get_data_model_types(
154+ DataModelType.PydanticV2BaseModel,
155+ target_python_version = PythonVersion.PY_311
156+ )
157+ config = JSONSchemaParserConfig(
158+ data_model_type = data_model_types.data_model,
159+ data_model_root_type = data_model_types.root_model,
160+ data_model_field_type = data_model_types.field_model,
161+ data_type_manager_type = data_model_types.data_type_manager,
162+ dump_resolve_reference_action = data_model_types.dump_resolve_reference_action,
163+ )
164+ parser = JsonSchemaParser(json_schema, config = config)
165+ result = parser.parse()
166+ print (result)
167+ ```
168+
169+ ### Using Keyword Arguments (Backward Compatible)
170+
171+ ``` python
172+ from datamodel_code_generator import DataModelType, PythonVersion
173+ from datamodel_code_generator.model import get_data_model_types
174+ from datamodel_code_generator.parser.jsonschema import JsonSchemaParser
175+
176+ json_schema: str = """ {
177+ "type": "object",
178+ "properties": {
179+ "number": {"type": "number"},
180+ "street_name": {"type": "string"},
181+ "street_type": {"type": "string",
182+ "enum": ["Street", "Avenue", "Boulevard"]
183+ }
184+ }
185+ }"""
148186
149187data_model_types = get_data_model_types(
150188 DataModelType.PydanticV2BaseModel,
@@ -162,6 +200,18 @@ result = parser.parse()
162200print (result)
163201```
164202
203+ ### Available Parser Config Classes
204+
205+ Each parser type has its own config class:
206+
207+ | Parser | Config Class |
208+ | --------| -------------|
209+ | ` JsonSchemaParser ` | ` JSONSchemaParserConfig ` |
210+ | ` OpenAPIParser ` | ` OpenAPIParserConfig ` |
211+ | ` GraphQLParser ` | ` GraphQLParserConfig ` |
212+
213+ All config classes inherit from ` ParserConfig ` and include additional parser-specific options.
214+
165215** ✨ Output:**
166216``` python
167217from __future__ import annotations
0 commit comments