New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix Generic Dataclass Fields Mutation Bug (when using TypeAdapter) #7435
Conversation
Deploying with Cloudflare Pages
|
pydantic/_internal/_core_utils.py
Outdated
@@ -65,7 +65,7 @@ def get_type_ref(type_: type[Any], args_override: tuple[type[Any], ...] | None = | |||
when creating generic models without needing to create a concrete class. | |||
""" | |||
origin = type_ | |||
args = args_override or () | |||
args = type_.__args__ if isinstance(type_, _GenericAlias) else (args_override or ()) # type: ignore |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dmontagu, could you please explain why we changed this line?
I understand the value of the deepcopy
on the model's fields in _generate_schema.py
, but I don't quite understand the purpose of this line here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just noticed this misbehavior — right now, it's not producing a type ref that reflects the generic parameters like it is supposed to. In particular, this means that in principle you could get two different schemas with the same ref but that should have different parameters. I don't know why that doesn't seem to be affecting the validation behavior, but I do think this is an improvement either way.
Change Summary
Related issue number
fix #7430
Checklist