fix(parsing): parse extra field types

This commit is contained in:
stainless-app[bot] 2025-07-23 02:01:57 +00:00
parent 646b99cd24
commit 0a269c0379
3 changed files with 52 additions and 3 deletions

View file

@ -1,5 +1,5 @@
import json
from typing import Any, Dict, List, Union, Optional, cast
from typing import TYPE_CHECKING, Any, Dict, List, Union, Optional, cast
from datetime import datetime, timezone
from typing_extensions import Literal, Annotated, TypeAliasType
@ -934,3 +934,30 @@ def test_nested_discriminated_union() -> None:
)
assert isinstance(model, Type1)
assert isinstance(model.value, InnerType2)
@pytest.mark.skipif(not PYDANTIC_V2, reason="this is only supported in pydantic v2 for now")
def test_extra_properties() -> None:
class Item(BaseModel):
prop: int
class Model(BaseModel):
__pydantic_extra__: Dict[str, Item] = Field(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
other: str
if TYPE_CHECKING:
def __getattr__(self, attr: str) -> Item: ...
model = construct_type(
type_=Model,
value={
"a": {"prop": 1},
"other": "foo",
},
)
assert isinstance(model, Model)
assert model.a.prop == 1
assert isinstance(model.a, Item)
assert model.other == "foo"