core[patch]: exclude special pydantic init params (#25084)

This commit is contained in:
Bagatur 2024-08-05 16:32:51 -07:00 committed by GitHub
parent 63ddf0afb4
commit e572521f2a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 7 deletions

View File

@ -1664,6 +1664,10 @@ def _get_all_basemodel_annotations(
if isinstance(cls, type):
annotations: Dict[str, Type] = {}
for name, param in inspect.signature(cls).parameters.items():
# Exclude hidden init args added by pydantic Config. For example if
# BaseModel(extra="allow") then "extra_data" will part of init sig.
if (fields := getattr(cls, "__fields__", {})) and name not in fields:
continue
annotations[name] = param.annotation
orig_bases: Tuple = getattr(cls, "__orig_bases__", tuple())
# cls has subscript: cls = FooBar[int]

View File

@ -1751,11 +1751,11 @@ def test__get_all_basemodel_annotations_v2(use_v1_namespace: bool) -> None:
if use_v1_namespace:
class ModelA(BaseModel, Generic[A]):
class ModelA(BaseModel, Generic[A], extra="allow"):
a: A
else:
class ModelA(BaseModelProper, Generic[A]): # type: ignore[no-redef]
class ModelA(BaseModelProper, Generic[A], extra="allow"): # type: ignore[no-redef]
a: A
class ModelB(ModelA[str]):
@ -1812,7 +1812,7 @@ def test__get_all_basemodel_annotations_v2(use_v1_namespace: bool) -> None:
def test__get_all_basemodel_annotations_v1() -> None:
A = TypeVar("A")
class ModelA(BaseModel, Generic[A]):
class ModelA(BaseModel, Generic[A], extra="allow"):
a: A
class ModelB(ModelA[str]):

View File

@ -285,10 +285,7 @@ class ChatModelIntegrationTests(ChatModelTests):
assert isinstance(chunk, dict) # for mypy
assert set(chunk.keys()) == {"setup", "punchline"}
def test_tool_message_histories_string_content(
self,
model: BaseChatModel,
) -> None:
def test_tool_message_histories_string_content(self, model: BaseChatModel) -> None:
"""
Test that message histories are compatible with string tool contents
(e.g. OpenAI).