From 0af44378a23a0b6a8377a688a526f74b84c0d689 Mon Sep 17 00:00:00 2001 From: Amin Alaee Date: Wed, 5 Apr 2023 15:02:52 +0200 Subject: [PATCH 1/2] Make Validator::complete required --- src/validators/any.rs | 4 ++++ src/validators/bool.rs | 4 ++++ src/validators/bytes.rs | 8 ++++++++ src/validators/callable.rs | 4 ++++ src/validators/dataclass.rs | 4 ++++ src/validators/date.rs | 4 ++++ src/validators/datetime.rs | 4 ++++ src/validators/float.rs | 8 ++++++++ src/validators/function.rs | 4 ++++ src/validators/int.rs | 8 ++++++++ src/validators/is_instance.rs | 4 ++++ src/validators/is_subclass.rs | 4 ++++ src/validators/literal.rs | 20 ++++++++++++++++++++ src/validators/mod.rs | 4 +--- src/validators/none.rs | 4 ++++ src/validators/string.rs | 8 ++++++++ src/validators/time.rs | 4 ++++ src/validators/timedelta.rs | 4 ++++ src/validators/url.rs | 8 ++++++++ 19 files changed, 109 insertions(+), 3 deletions(-) diff --git a/src/validators/any.rs b/src/validators/any.rs index ca2a5e787..02bb4218f 100644 --- a/src/validators/any.rs +++ b/src/validators/any.rs @@ -39,4 +39,8 @@ impl Validator for AnyValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } diff --git a/src/validators/bool.rs b/src/validators/bool.rs index e32bee21a..51fcadce5 100644 --- a/src/validators/bool.rs +++ b/src/validators/bool.rs @@ -45,4 +45,8 @@ impl Validator for BoolValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } diff --git a/src/validators/bytes.rs b/src/validators/bytes.rs index 485ac3850..53abcc25b 100644 --- a/src/validators/bytes.rs +++ b/src/validators/bytes.rs @@ -52,6 +52,10 @@ impl Validator for BytesValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] @@ -90,6 +94,10 @@ impl Validator for BytesConstrainedValidator { fn get_name(&self) -> &str { "constrained-bytes" } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } impl BytesConstrainedValidator { diff --git a/src/validators/callable.rs b/src/validators/callable.rs index 64c8e5bb7..d0b4252c4 100644 --- a/src/validators/callable.rs +++ b/src/validators/callable.rs @@ -40,4 +40,8 @@ impl Validator for CallableValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } diff --git a/src/validators/dataclass.rs b/src/validators/dataclass.rs index 61a05c4e5..28b1d9fba 100644 --- a/src/validators/dataclass.rs +++ b/src/validators/dataclass.rs @@ -513,6 +513,10 @@ impl Validator for DataclassValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + self.validator.complete(_build_context) + } } impl DataclassValidator { diff --git a/src/validators/date.rs b/src/validators/date.rs index 022b68e1a..97ca12c57 100644 --- a/src/validators/date.rs +++ b/src/validators/date.rs @@ -101,6 +101,10 @@ impl Validator for DateValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } /// In lax mode, if the input is not a date, we try parsing the input as a datetime, then check it is an diff --git a/src/validators/datetime.rs b/src/validators/datetime.rs index bc63bbcd5..3e6bcf566 100644 --- a/src/validators/datetime.rs +++ b/src/validators/datetime.rs @@ -105,6 +105,10 @@ impl Validator for DateTimeValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] diff --git a/src/validators/float.rs b/src/validators/float.rs index f51944f66..97ce9313f 100644 --- a/src/validators/float.rs +++ b/src/validators/float.rs @@ -78,6 +78,10 @@ impl Validator for FloatValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] @@ -141,6 +145,10 @@ impl Validator for ConstrainedFloatValidator { fn get_name(&self) -> &str { "constrained-float" } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } impl BuildValidator for ConstrainedFloatValidator { diff --git a/src/validators/function.rs b/src/validators/function.rs index e7b43d0e3..ff9af3135 100644 --- a/src/validators/function.rs +++ b/src/validators/function.rs @@ -203,6 +203,10 @@ impl Validator for FunctionPlainValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] diff --git a/src/validators/int.rs b/src/validators/int.rs index fbe0a777e..c48b4b183 100644 --- a/src/validators/int.rs +++ b/src/validators/int.rs @@ -54,6 +54,10 @@ impl Validator for IntValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] @@ -112,6 +116,10 @@ impl Validator for ConstrainedIntValidator { fn get_name(&self) -> &str { "constrained-int" } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } impl ConstrainedIntValidator { diff --git a/src/validators/is_instance.rs b/src/validators/is_instance.rs index 763ad0dfc..cc2f4f505 100644 --- a/src/validators/is_instance.rs +++ b/src/validators/is_instance.rs @@ -93,4 +93,8 @@ impl Validator for IsInstanceValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } diff --git a/src/validators/is_subclass.rs b/src/validators/is_subclass.rs index 940a7d982..49b4de093 100644 --- a/src/validators/is_subclass.rs +++ b/src/validators/is_subclass.rs @@ -64,4 +64,8 @@ impl Validator for IsSubclassValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } diff --git a/src/validators/literal.rs b/src/validators/literal.rs index 51b8e43eb..0a5d128c9 100644 --- a/src/validators/literal.rs +++ b/src/validators/literal.rs @@ -91,6 +91,10 @@ impl Validator for LiteralSingleStringValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] @@ -133,6 +137,10 @@ impl Validator for LiteralSingleIntValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] @@ -188,6 +196,10 @@ impl Validator for LiteralMultipleStringsValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] @@ -243,6 +255,10 @@ impl Validator for LiteralMultipleIntsValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } #[derive(Debug, Clone)] @@ -325,6 +341,10 @@ impl Validator for LiteralGeneralValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } pub fn expected_repr_name(mut repr_args: Vec, base_name: &'static str) -> (String, String) { diff --git a/src/validators/mod.rs b/src/validators/mod.rs index 8305a52c4..c78c477d9 100644 --- a/src/validators/mod.rs +++ b/src/validators/mod.rs @@ -642,7 +642,5 @@ pub trait Validator: Send + Sync + Clone + Debug { /// this method must be implemented for any validator which holds references to other validators, /// it is used by `DefinitionRefValidator` to set its name - fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { - Ok(()) - } + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()>; } diff --git a/src/validators/none.rs b/src/validators/none.rs index 15aa9e7c6..1720b47ea 100644 --- a/src/validators/none.rs +++ b/src/validators/none.rs @@ -40,4 +40,8 @@ impl Validator for NoneValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } diff --git a/src/validators/string.rs b/src/validators/string.rs index e42b67955..5ebd08ce0 100644 --- a/src/validators/string.rs +++ b/src/validators/string.rs @@ -51,6 +51,10 @@ impl Validator for StrValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } /// Any new properties set here must be reflected in `has_constraints_set` @@ -118,6 +122,10 @@ impl Validator for StrConstrainedValidator { fn get_name(&self) -> &str { "constrained-str" } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } impl StrConstrainedValidator { diff --git a/src/validators/time.rs b/src/validators/time.rs index f84c7f01d..e535c381f 100644 --- a/src/validators/time.rs +++ b/src/validators/time.rs @@ -93,6 +93,10 @@ impl Validator for TimeValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } fn convert_pytime(schema: &PyDict, field: &PyString) -> PyResult> { diff --git a/src/validators/timedelta.rs b/src/validators/timedelta.rs index 6ac8f408a..362328523 100644 --- a/src/validators/timedelta.rs +++ b/src/validators/timedelta.rs @@ -92,6 +92,10 @@ impl Validator for TimeDeltaValidator { fn get_name(&self) -> &str { Self::EXPECTED_TYPE } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } fn py_timedelta_as_timedelta(schema: &PyDict, field: &PyString) -> PyResult> { diff --git a/src/validators/url.rs b/src/validators/url.rs index a9269748a..c82699ade 100644 --- a/src/validators/url.rs +++ b/src/validators/url.rs @@ -89,6 +89,10 @@ impl Validator for UrlValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } impl UrlValidator { @@ -205,6 +209,10 @@ impl Validator for MultiHostUrlValidator { fn get_name(&self) -> &str { &self.name } + + fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { + Ok(()) + } } impl MultiHostUrlValidator { From 1a71733e4942e7cd139604d4f2a53adfa2da038a Mon Sep 17 00:00:00 2001 From: Amin Alaee Date: Wed, 5 Apr 2023 18:46:22 +0200 Subject: [PATCH 2/2] improve naming --- src/validators/dataclass.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/validators/dataclass.rs b/src/validators/dataclass.rs index 28b1d9fba..81bd8dd4c 100644 --- a/src/validators/dataclass.rs +++ b/src/validators/dataclass.rs @@ -514,8 +514,8 @@ impl Validator for DataclassValidator { &self.name } - fn complete(&mut self, _build_context: &BuildContext) -> PyResult<()> { - self.validator.complete(_build_context) + fn complete(&mut self, build_context: &BuildContext) -> PyResult<()> { + self.validator.complete(build_context) } }