@@ -4,6 +4,7 @@ use pyo3::prelude::*;
4
4
use pyo3:: types:: { PyBytes , PyDict , PyFrozenSet , PyList , PySet , PyString , PyTuple } ;
5
5
6
6
use crate :: errors:: { ValError , ValLineError , ValResult } ;
7
+ use crate :: recursion_guard:: RecursionGuard ;
7
8
use crate :: validators:: { CombinedValidator , Extra , Validator } ;
8
9
9
10
use super :: parse_json:: { JsonArray , JsonObject } ;
@@ -41,11 +42,12 @@ macro_rules! build_validate_to_vec {
41
42
validator: & ' s CombinedValidator ,
42
43
extra: & Extra ,
43
44
slots: & ' a [ CombinedValidator ] ,
45
+ recursion_guard: & ' s mut RecursionGuard ,
44
46
) -> ValResult <' a, Vec <PyObject >> {
45
47
let mut output: Vec <PyObject > = Vec :: with_capacity( length) ;
46
48
let mut errors: Vec <ValLineError > = Vec :: new( ) ;
47
49
for ( index, item) in sequence. iter( ) . enumerate( ) {
48
- match validator. validate( py, item, extra, slots) {
50
+ match validator. validate( py, item, extra, slots, recursion_guard ) {
49
51
Ok ( item) => output. push( item) ,
50
52
Err ( ValError :: LineErrors ( line_errors) ) => {
51
53
errors. extend(
@@ -90,13 +92,22 @@ impl<'a> GenericSequence<'a> {
90
92
validator : & ' s CombinedValidator ,
91
93
extra : & Extra ,
92
94
slots : & ' a [ CombinedValidator ] ,
95
+ recursion_guard : & ' s mut RecursionGuard ,
93
96
) -> ValResult < ' a , Vec < PyObject > > {
94
97
match self {
95
- Self :: List ( sequence) => validate_to_vec_list ( py, sequence, length, validator, extra, slots) ,
96
- Self :: Tuple ( sequence) => validate_to_vec_tuple ( py, sequence, length, validator, extra, slots) ,
97
- Self :: Set ( sequence) => validate_to_vec_set ( py, sequence, length, validator, extra, slots) ,
98
- Self :: FrozenSet ( sequence) => validate_to_vec_frozenset ( py, sequence, length, validator, extra, slots) ,
99
- Self :: JsonArray ( sequence) => validate_to_vec_jsonarray ( py, sequence, length, validator, extra, slots) ,
98
+ Self :: List ( sequence) => {
99
+ validate_to_vec_list ( py, sequence, length, validator, extra, slots, recursion_guard)
100
+ }
101
+ Self :: Tuple ( sequence) => {
102
+ validate_to_vec_tuple ( py, sequence, length, validator, extra, slots, recursion_guard)
103
+ }
104
+ Self :: Set ( sequence) => validate_to_vec_set ( py, sequence, length, validator, extra, slots, recursion_guard) ,
105
+ Self :: FrozenSet ( sequence) => {
106
+ validate_to_vec_frozenset ( py, sequence, length, validator, extra, slots, recursion_guard)
107
+ }
108
+ Self :: JsonArray ( sequence) => {
109
+ validate_to_vec_jsonarray ( py, sequence, length, validator, extra, slots, recursion_guard)
110
+ }
100
111
}
101
112
}
102
113
}
0 commit comments