|
2 | 2 |
|
3 | 3 | from __future__ import annotations |
4 | 4 |
|
| 5 | +from typing import TYPE_CHECKING |
| 6 | + |
5 | 7 | from griffe import Extensions, temporary_visited_package |
6 | 8 |
|
7 | 9 | from griffe_pydantic.extension import PydanticExtension |
8 | 10 |
|
| 11 | +if TYPE_CHECKING: |
| 12 | + from mkdocstrings_handlers.python.handler import PythonHandler |
| 13 | + |
| 14 | + |
9 | 15 | code = """ |
10 | 16 | from pydantic import field_validator, ConfigDict, BaseModel, Field |
11 | 17 |
|
@@ -80,7 +86,37 @@ def test_imported_models() -> None: |
80 | 86 | "__init__.py": "from ._private import MyModel\n\n__all__ = ['MyModel']", |
81 | 87 | "_private.py": "from pydantic import BaseModel\n\nclass MyModel(BaseModel):\n field1: str\n '''Some field.'''\n", |
82 | 88 | }, |
83 | | - extensions=Extensions(PydanticExtension(schema=True)), |
| 89 | + extensions=Extensions(PydanticExtension(schema=False)), |
84 | 90 | ) as package: |
85 | 91 | assert package["MyModel"].labels == {"pydantic-model"} |
86 | 92 | assert package["MyModel.field1"].labels == {"pydantic-field"} |
| 93 | + |
| 94 | + |
| 95 | +def test_rendering_model_config_using_configdict(python_handler: PythonHandler) -> None: |
| 96 | + """Test the extension with model config using ConfigDict.""" |
| 97 | + code = """ |
| 98 | + from pydantic import BaseModel, ConfigDict, Field |
| 99 | +
|
| 100 | + class Model(BaseModel): |
| 101 | + usage: str | None = Field( |
| 102 | + None, |
| 103 | + description="Some description.", |
| 104 | + example="Some example.", |
| 105 | + ) |
| 106 | + model_config = ConfigDict( |
| 107 | + json_schema_extra={ |
| 108 | + "example": { |
| 109 | + "usage": "Some usage.", |
| 110 | + "limitations": "Some limitations.", |
| 111 | + "billing": "Some value.", |
| 112 | + "notice_period": "Some value.", |
| 113 | + } |
| 114 | + } |
| 115 | + ) |
| 116 | + """ |
| 117 | + with temporary_visited_package( |
| 118 | + "package", |
| 119 | + modules={"__init__.py": code}, |
| 120 | + extensions=Extensions(PydanticExtension(schema=False)), |
| 121 | + ) as package: |
| 122 | + python_handler.render(package["Model"], {}) # Assert no errors. |
0 commit comments