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