Skip to content

Commit 6d746d8

Browse files
committed
rename exclude_if by serialization_exclude_if
1 parent eb2e412 commit 6d746d8

File tree

9 files changed

+39
-29
lines changed

9 files changed

+39
-29
lines changed

python/pydantic_core/core_schema.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2980,7 +2980,7 @@ def model_field(
29802980
validation_alias: str | list[str | int] | list[list[str | int]] | None = None,
29812981
serialization_alias: str | None = None,
29822982
serialization_exclude: bool | None = None,
2983-
exclude_if: Callable[[Any], bool] | None = None,
2983+
serialization_exclude_if: Callable[[Any], bool] | None = None,
29842984
frozen: bool | None = None,
29852985
metadata: dict[str, Any] | None = None,
29862986
) -> ModelField:
@@ -2998,7 +2998,7 @@ def model_field(
29982998
validation_alias: The alias(es) to use to find the field in the validation data
29992999
serialization_alias: The alias to use as a key when serializing
30003000
serialization_exclude: Whether to exclude the field when serializing
3001-
exclude_if: Callable that determines whether to exclude a field during serialization based on its value.
3001+
serialization_exclude_if: A Callable that determines whether to exclude a field during serialization based on its value.
30023002
frozen: Whether the field is frozen
30033003
metadata: Any other information you want to include with the schema, not used by pydantic-core
30043004
"""
@@ -3008,7 +3008,7 @@ def model_field(
30083008
validation_alias=validation_alias,
30093009
serialization_alias=serialization_alias,
30103010
serialization_exclude=serialization_exclude,
3011-
exclude_if=exclude_if,
3011+
serialization_exclude_if=serialization_exclude_if,
30123012
frozen=frozen,
30133013
metadata=metadata,
30143014
)

src/serializers/fields.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub(super) struct SerField {
2929
pub serializer: Option<CombinedSerializer>,
3030
pub required: bool,
3131
pub serialize_by_alias: Option<bool>,
32-
pub exclude_if: Option<Py<PyAny>>,
32+
pub serialization_exclude_if: Option<Py<PyAny>>,
3333
}
3434

3535
impl_py_gc_traverse!(SerField { serializer });
@@ -42,7 +42,7 @@ impl SerField {
4242
serializer: Option<CombinedSerializer>,
4343
required: bool,
4444
serialize_by_alias: Option<bool>,
45-
exclude_if: Option<Py<PyAny>>,
45+
serialization_exclude_if: Option<Py<PyAny>>,
4646
) -> Self {
4747
let alias_py = alias.as_ref().map(|alias| PyString::new(py, alias.as_str()).into());
4848
Self {
@@ -52,7 +52,7 @@ impl SerField {
5252
serializer,
5353
required,
5454
serialize_by_alias,
55-
exclude_if,
55+
serialization_exclude_if,
5656
}
5757
}
5858

@@ -75,7 +75,7 @@ impl SerField {
7575
}
7676
}
7777

78-
fn exclude_if(exclude_if_callable: &Option<Py<PyAny>>, value: &Bound<'_, PyAny>) -> PyResult<bool> {
78+
fn serialization_exclude_if(exclude_if_callable: &Option<Py<PyAny>>, value: &Bound<'_, PyAny>) -> PyResult<bool> {
7979
if let Some(exclude_if_callable) = exclude_if_callable {
8080
let py = value.py();
8181
let result = exclude_if_callable.call1(py, (value,))?;
@@ -194,7 +194,7 @@ impl GeneralFieldsSerializer {
194194
if exclude_default(&value, &field_extra, serializer)? {
195195
continue;
196196
}
197-
if exclude_if(&field.exclude_if, &value)? {
197+
if serialization_exclude_if(&field.serialization_exclude_if, &value)? {
198198
continue;
199199
}
200200
let value =
@@ -275,7 +275,7 @@ impl GeneralFieldsSerializer {
275275
if exclude_default(&value, &field_extra, serializer).map_err(py_err_se_err)? {
276276
continue;
277277
}
278-
if exclude_if(&field.exclude_if, &value).map_err(py_err_se_err)? {
278+
if serialization_exclude_if(&field.serialization_exclude_if, &value).map_err(py_err_se_err)? {
279279
continue;
280280
}
281281
let s = PydanticSerializer::new(

src/serializers/type_serializers/dataclass.rs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,25 +46,35 @@ impl BuildSerializer for DataclassArgsBuilder {
4646
let key_py: Py<PyString> = PyString::new(py, &name).into();
4747
if !field_info.get_as(intern!(py, "init_only"))?.unwrap_or(false) {
4848
if field_info.get_as(intern!(py, "serialization_exclude"))? == Some(true) {
49-
fields.insert(name, SerField::new(py, key_py, None, None, true, None));
49+
fields.insert(
50+
name,
51+
SerField::new(py, key_py, None, None, true, serialize_by_alias, None),
52+
);
5053
} else {
5154
let schema = field_info.get_as_req(intern!(py, "schema"))?;
5255
let serializer = CombinedSerializer::build(&schema, config, definitions)
5356
.map_err(|e| py_schema_error_type!("Field `{}`:\n {}", index, e))?;
5457

5558
let alias = field_info.get_as(intern!(py, "serialization_alias"))?;
56-
let exclude_if: Option<Py<PyAny>> = field_info.get_as(intern!(py, "exclude_if"))?;
59+
let serialization_exclude_if: Option<Py<PyAny>> = field_info.get_as(intern!(py, "serialization_exclude_if"))?;
5760
fields.insert(
5861
name,
59-
SerField::new(py, key_py, alias, Some(serializer), true, exclude_if),
62+
SerField::new(
63+
py,
64+
key_py,
65+
alias,
66+
Some(serializer),
67+
true,
68+
serialize_by_alias,
69+
serialization_exclude_if,
70+
),
6071
);
6172
}
62-
};
63-
64-
let computed_fields = ComputedFields::new(schema, config, definitions)?;
65-
66-
Ok(GeneralFieldsSerializer::new(fields, fields_mode, None, computed_fields).into())
73+
}
6774
}
75+
let computed_fields = ComputedFields::new(schema, config, definitions)?;
76+
77+
Ok(GeneralFieldsSerializer::new(fields, fields_mode, None, computed_fields).into())
6878
}
6979
}
7080

src/serializers/type_serializers/model.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ impl BuildSerializer for ModelFieldsBuilder {
6363
);
6464
} else {
6565
let alias: Option<String> = field_info.get_as(intern!(py, "serialization_alias"))?;
66-
let exclude_if: Option<Py<PyAny>> = field_info.get_as(intern!(py, "exclude_if"))?;
66+
let serialization_exclude_if: Option<Py<PyAny>> = field_info.get_as(intern!(py, "serialization_exclude_if"))?;
6767
let schema = field_info.get_as_req(intern!(py, "schema"))?;
6868
let serializer = CombinedSerializer::build(&schema, config, definitions)
6969
.map_err(|e| py_schema_error_type!("Field `{}`:\n {}", key, e))?;
@@ -77,7 +77,7 @@ impl BuildSerializer for ModelFieldsBuilder {
7777
Some(serializer),
7878
true,
7979
serialize_by_alias,
80-
exclude_if,
80+
serialization_exclude_if,
8181
),
8282
);
8383
}

src/serializers/type_serializers/typed_dict.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ impl BuildSerializer for TypedDictBuilder {
6060
);
6161
} else {
6262
let alias: Option<String> = field_info.get_as(intern!(py, "serialization_alias"))?;
63-
let exclude_if: Option<Py<PyAny>> = field_info.get_as(intern!(py, "exclude_if"))?;
63+
let serialization_exclude_if: Option<Py<PyAny>> = field_info.get_as(intern!(py, "serialization_exclude_if"))?;
6464
let schema = field_info.get_as_req(intern!(py, "schema"))?;
6565
let serializer = CombinedSerializer::build(&schema, config, definitions)
6666
.map_err(|e| py_schema_error_type!("Field `{}`:\n {}", key, e))?;
@@ -73,7 +73,7 @@ impl BuildSerializer for TypedDictBuilder {
7373
Some(serializer),
7474
required,
7575
serialize_by_alias,
76-
exclude_if,
76+
serialization_exclude_if,
7777
),
7878
);
7979
}

tests/serializers/test_dataclasses.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def test_serialization_exclude():
5454
core_schema.dataclass_args_schema(
5555
'Foo',
5656
[
57-
core_schema.dataclass_field(name='a', schema=core_schema.str_schema(), exclude_if=lambda x: x == 'bye'),
57+
core_schema.dataclass_field(name='a', schema=core_schema.str_schema(), serialization_exclude_if=lambda x: x == 'bye'),
5858
core_schema.dataclass_field(name='b', schema=core_schema.bytes_schema(), serialization_exclude=True),
5959
],
6060
),

tests/serializers/test_functions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ def __init__(self, **kwargs):
518518
core_schema.typed_dict_schema(
519519
{
520520
'a': core_schema.typed_dict_field(
521-
core_schema.any_schema(), exclude_if=lambda x: isinstance(x, int) and x >= 2
521+
core_schema.any_schema(), serialization_exclude_if=lambda x: isinstance(x, int) and x >= 2
522522
),
523523
'b': core_schema.typed_dict_field(core_schema.any_schema()),
524524
'c': core_schema.typed_dict_field(core_schema.any_schema(), serialization_exclude=True),
@@ -569,7 +569,7 @@ def __init__(self, **kwargs):
569569
MyModel,
570570
core_schema.typed_dict_schema(
571571
{
572-
'a': core_schema.typed_dict_field(core_schema.any_schema(), exclude_if=lambda x: x == 100),
572+
'a': core_schema.typed_dict_field(core_schema.any_schema(), serialization_exclude_if=lambda x: x == 100),
573573
'b': core_schema.typed_dict_field(core_schema.any_schema()),
574574
'c': core_schema.typed_dict_field(core_schema.any_schema(), serialization_exclude=True),
575575
}

tests/serializers/test_model.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,10 @@ def test_exclude_if():
209209
BasicModel,
210210
core_schema.model_fields_schema(
211211
{
212-
'a': core_schema.model_field(core_schema.int_schema(), exclude_if=lambda x: x > 1),
213-
'b': core_schema.model_field(core_schema.str_schema(), exclude_if=lambda x: 'foo' in x),
212+
'a': core_schema.model_field(core_schema.int_schema(), serialization_exclude_if=lambda x: x > 1),
213+
'b': core_schema.model_field(core_schema.str_schema(), serialization_exclude_if=lambda x: 'foo' in x),
214214
'c': core_schema.model_field(
215-
core_schema.str_schema(), serialization_exclude=True, exclude_if=lambda x: 'foo' in x
215+
core_schema.str_schema(), serialization_exclude=True, serialization_exclude_if=lambda x: 'foo' in x
216216
),
217217
}
218218
),

tests/serializers/test_typed_dict.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ def test_include_exclude_schema():
9393
'0': core_schema.typed_dict_field(core_schema.int_schema(), serialization_exclude=True),
9494
'1': core_schema.typed_dict_field(core_schema.int_schema()),
9595
'2': core_schema.typed_dict_field(
96-
core_schema.int_schema(), serialization_exclude=True, exclude_if=lambda x: x < 0
96+
core_schema.int_schema(), serialization_exclude=True, serialization_exclude_if=lambda x: x < 0
9797
),
9898
'3': core_schema.typed_dict_field(
99-
core_schema.int_schema(), serialization_exclude=False, exclude_if=lambda x: x < 0
99+
core_schema.int_schema(), serialization_exclude=False, serialization_exclude_if=lambda x: x < 0
100100
),
101101
}
102102
)

0 commit comments

Comments
 (0)