|
11 | 11 | import pytest |
12 | 12 | from inline_snapshot import snapshot |
13 | 13 |
|
| 14 | +import datamodel_code_generator |
14 | 15 | from datamodel_code_generator import ( |
15 | 16 | AllExportsScope, |
16 | 17 | DataModelType, |
|
28 | 29 | from datamodel_code_generator.format import CodeFormatter, PythonVersion |
29 | 30 | from datamodel_code_generator.model.pydantic_v2 import UnionMode |
30 | 31 | from datamodel_code_generator.parser.openapi import OpenAPIParser |
| 32 | +from datamodel_code_generator.util import is_pydantic_v2 |
31 | 33 | from tests.conftest import assert_output, create_assert_file_content, freeze_time |
32 | 34 | from tests.main.conftest import ( |
33 | 35 | DATA_PATH, |
@@ -2307,3 +2309,34 @@ def test_use_annotated_no_warning_pydantic_v1(output_file: Path) -> None: |
2307 | 2309 | extra_args=["--output-model-type", "pydantic.BaseModel"], |
2308 | 2310 | ) |
2309 | 2311 | assert not any("--use-annotated will be enabled" in str(warning.message) for warning in w) |
| 2312 | + |
| 2313 | + |
| 2314 | +@pytest.mark.skipif(not is_pydantic_v2(), reason="GenerateConfig requires Pydantic v2") |
| 2315 | +def test_import_generate_config_from_top_level() -> None: |
| 2316 | + """Test that GenerateConfig can be imported from top-level module.""" |
| 2317 | + from datamodel_code_generator import GenerateConfig as TopLevelGenerateConfig |
| 2318 | + |
| 2319 | + assert TopLevelGenerateConfig is not None |
| 2320 | + assert TopLevelGenerateConfig is GenerateConfig |
| 2321 | + |
| 2322 | + |
| 2323 | +@pytest.mark.skipif(not is_pydantic_v2(), reason="GenerateConfig requires Pydantic v2") |
| 2324 | +def test_generate_with_imported_config_from_top_level() -> None: |
| 2325 | + """Test generate() with GenerateConfig imported from top-level.""" |
| 2326 | + config = datamodel_code_generator.GenerateConfig(class_name="TestModel") |
| 2327 | + result = generate('{"type": "object"}', config=config) |
| 2328 | + assert result is not None |
| 2329 | + assert "class TestModel" in result |
| 2330 | + |
| 2331 | + |
| 2332 | +@pytest.mark.skipif(not is_pydantic_v2(), reason="GenerateConfig requires Pydantic v2") |
| 2333 | +def test_all_exports_includes_generate_config() -> None: |
| 2334 | + """Test that __all__ includes GenerateConfig in Pydantic v2.""" |
| 2335 | + assert "GenerateConfig" in datamodel_code_generator.__all__ |
| 2336 | + |
| 2337 | + |
| 2338 | +@pytest.mark.skipif(is_pydantic_v2(), reason="Test for Pydantic v1 only") |
| 2339 | +def test_import_generate_config_fails_on_v1() -> None: |
| 2340 | + """GenerateConfig should not be importable from top-level in Pydantic v1.""" |
| 2341 | + with pytest.raises(ImportError, match="only available in Pydantic v2"): |
| 2342 | + _ = datamodel_code_generator.GenerateConfig |
0 commit comments