@@ -112,15 +112,21 @@ impl TypeSerializer for UnionSerializer {
112
112
for comb_serializer in & self . choices {
113
113
match comb_serializer. json_key ( key, & new_extra) {
114
114
Ok ( v) => return Ok ( v) ,
115
- Err ( err) => extra. warnings . custom_warning ( err. to_string ( ) ) ,
115
+ Err ( err) => match err. is_instance_of :: < PydanticSerializationUnexpectedValue > ( key. py ( ) ) {
116
+ true => ( ) ,
117
+ false => extra. warnings . custom_warning ( err. to_string ( ) ) ,
118
+ } ,
116
119
}
117
120
}
118
121
if self . retry_with_lax_check ( ) {
119
122
new_extra. check = SerCheck :: Lax ;
120
123
for comb_serializer in & self . choices {
121
124
match comb_serializer. json_key ( key, & new_extra) {
122
125
Ok ( v) => return Ok ( v) ,
123
- Err ( err) => extra. warnings . custom_warning ( err. to_string ( ) ) ,
126
+ Err ( err) => match err. is_instance_of :: < PydanticSerializationUnexpectedValue > ( key. py ( ) ) {
127
+ true => ( ) ,
128
+ false => extra. warnings . custom_warning ( err. to_string ( ) ) ,
129
+ } ,
124
130
}
125
131
}
126
132
}
@@ -144,15 +150,21 @@ impl TypeSerializer for UnionSerializer {
144
150
for comb_serializer in & self . choices {
145
151
match comb_serializer. to_python ( value, include, exclude, & new_extra) {
146
152
Ok ( v) => return infer_serialize ( v. bind ( py) , serializer, None , None , extra) ,
147
- Err ( err) => extra. warnings . custom_warning ( err. to_string ( ) ) ,
153
+ Err ( err) => match err. is_instance_of :: < PydanticSerializationUnexpectedValue > ( value. py ( ) ) {
154
+ true => ( ) ,
155
+ false => extra. warnings . custom_warning ( err. to_string ( ) ) ,
156
+ } ,
148
157
}
149
158
}
150
159
if self . retry_with_lax_check ( ) {
151
160
new_extra. check = SerCheck :: Lax ;
152
161
for comb_serializer in & self . choices {
153
162
match comb_serializer. to_python ( value, include, exclude, & new_extra) {
154
163
Ok ( v) => return infer_serialize ( v. bind ( py) , serializer, None , None , extra) ,
155
- Err ( err) => extra. warnings . custom_warning ( err. to_string ( ) ) ,
164
+ Err ( err) => match err. is_instance_of :: < PydanticSerializationUnexpectedValue > ( value. py ( ) ) {
165
+ true => ( ) ,
166
+ false => extra. warnings . custom_warning ( err. to_string ( ) ) ,
167
+ } ,
156
168
}
157
169
}
158
170
}
0 commit comments