Skip to content

Commit 7f13140

Browse files
authored
Forward default_value calls to the underlying schema for DefinitionRefValidator (#1573)
1 parent 4c02cbd commit 7f13140

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/validators/definitions.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,18 @@ impl Validator for DefinitionRefValidator {
9292
})
9393
}
9494

95+
fn default_value<'py>(
96+
&self,
97+
_py: Python<'py>,
98+
_outer_loc: Option<impl Into<crate::errors::LocItem>>,
99+
_state: &mut ValidationState<'_, 'py>,
100+
) -> ValResult<Option<PyObject>> {
101+
self.definition.read(|validator| {
102+
let validator = validator.unwrap();
103+
validator.default_value(_py, _outer_loc, _state)
104+
})
105+
}
106+
95107
fn validate_assignment<'py>(
96108
&self,
97109
py: Python<'py>,

tests/validators/test_definitions.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,17 @@ def test_definition_chain():
150150
),
151151
)
152152
assert v.validate_python('1') == 1
153+
154+
155+
def test_forwards_get_default_value():
156+
v = SchemaValidator(
157+
core_schema.definitions_schema(
158+
core_schema.definition_reference_schema('foo'),
159+
[core_schema.with_default_schema(core_schema.int_schema(), default=1, ref='foo')],
160+
)
161+
)
162+
163+
default = v.get_default_value()
164+
165+
assert default is not None
166+
assert default.value == 1

0 commit comments

Comments
 (0)