diff --git a/datamodel_code_generator/__init__.py b/datamodel_code_generator/__init__.py index cceaa9583..814d03db6 100644 --- a/datamodel_code_generator/__init__.py +++ b/datamodel_code_generator/__init__.py @@ -224,7 +224,7 @@ def generate( output: Optional[Path] = None, output_model_type: DataModelType = DataModelType.PydanticBaseModel, target_python_version: PythonVersion = PythonVersion.PY_37, - base_class: str = DEFAULT_BASE_CLASS, + base_class: str = '', additional_imports: Optional[List[str]] = None, custom_template_dir: Optional[Path] = None, extra_template_data: Optional[DefaultDict[str, Dict[str, Any]]] = None, diff --git a/tests/data/expected/main/main_generate_non_pydantic_output/output.py b/tests/data/expected/main/main_generate_non_pydantic_output/output.py new file mode 100644 index 000000000..85f240c9c --- /dev/null +++ b/tests/data/expected/main/main_generate_non_pydantic_output/output.py @@ -0,0 +1,12 @@ +# generated by datamodel-codegen: +# filename: simple_string.json +# timestamp: 2019-07-26T00:00:00+00:00 + +from __future__ import annotations + +from dataclasses import dataclass + + +@dataclass +class Model: + s: str diff --git a/tests/data/jsonschema/simple_string.json b/tests/data/jsonschema/simple_string.json new file mode 100644 index 000000000..54b5014aa --- /dev/null +++ b/tests/data/jsonschema/simple_string.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "type": "object", + "properties": {"s": {"type": ["string"]}}, + "required": ["s"] +} diff --git a/tests/test_main.py b/tests/test_main.py index 7c3a5a3c5..c2d9427fe 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -12,7 +12,13 @@ from freezegun import freeze_time from packaging import version -from datamodel_code_generator import InputFileType, chdir, generate, inferred_message +from datamodel_code_generator import ( + DataModelType, + InputFileType, + chdir, + generate, + inferred_message, +) from datamodel_code_generator.__main__ import Exit, main try: @@ -2694,6 +2700,26 @@ def test_main_generate(): ) +@freeze_time('2019-07-26') +def test_main_generate_non_pydantic_output(): + """ + See https://github.com/koxudaxi/datamodel-code-generator/issues/1452. + """ + with TemporaryDirectory() as output_dir: + output_file: Path = Path(output_dir) / 'output.py' + input_ = (JSON_SCHEMA_DATA_PATH / 'simple_string.json').relative_to(Path.cwd()) + assert not input_.is_absolute() + generate( + input_=input_, + input_file_type=InputFileType.JsonSchema, + output=output_file, + output_model_type=DataModelType.DataclassesDataclass, + ) + + file = EXPECTED_MAIN_PATH / 'main_generate_non_pydantic_output' / 'output.py' + assert output_file.read_text() == file.read_text() + + @freeze_time('2019-07-26') def test_main_generate_from_directory(): with TemporaryDirectory() as output_dir: