@@ -168,15 +168,19 @@ init_method_opt!(new_opt_i64, Int64Type, i64);
168168init_method_opt ! ( new_opt_f32, Float32Type , f32 ) ;
169169init_method_opt ! ( new_opt_f64, Float64Type , f64 ) ;
170170
171+ fn convert_to_avs < ' a > ( values : & ' a Bound < ' a , PyAny > , strict : bool ) -> PyResult < Vec < AnyValue < ' a > > > {
172+ values
173+ . iter ( ) ?
174+ . map ( |v| py_object_to_any_value ( & ( v?) . as_borrowed ( ) , strict) )
175+ . collect ( )
176+ }
177+
171178#[ pymethods]
172179impl PySeries {
173180 #[ staticmethod]
174181 fn new_from_any_values ( name : & str , values : & Bound < PyAny > , strict : bool ) -> PyResult < Self > {
175- let any_values_result = values
176- . iter ( ) ?
177- . map ( |v| py_object_to_any_value ( & ( v?) . as_borrowed ( ) , strict) )
178- . collect :: < PyResult < Vec < AnyValue > > > ( ) ;
179- let result = any_values_result. and_then ( |avs| {
182+ let avs = convert_to_avs ( values, strict) ;
183+ let result = avs. and_then ( |avs| {
180184 let s = Series :: from_any_values ( name. into ( ) , avs. as_slice ( ) , strict) . map_err ( |e| {
181185 PyTypeError :: new_err ( format ! (
182186 "{e}\n \n Hint: Try setting `strict=False` to allow passing data with mixed types."
@@ -211,17 +215,13 @@ impl PySeries {
211215 dtype : Wrap < DataType > ,
212216 strict : bool ,
213217 ) -> PyResult < Self > {
214- let any_values = values
215- . iter ( ) ?
216- . map ( |v| py_object_to_any_value ( & ( v?) . as_borrowed ( ) , strict) )
217- . collect :: < PyResult < Vec < AnyValue > > > ( ) ?;
218- let s =
219- Series :: from_any_values_and_dtype ( name. into ( ) , any_values. as_slice ( ) , & dtype. 0 , strict)
220- . map_err ( |e| {
221- PyTypeError :: new_err ( format ! (
218+ let avs = convert_to_avs ( values, strict) ?;
219+ let s = Series :: from_any_values_and_dtype ( name. into ( ) , avs. as_slice ( ) , & dtype. 0 , strict)
220+ . map_err ( |e| {
221+ PyTypeError :: new_err ( format ! (
222222 "{e}\n \n Hint: Try setting `strict=False` to allow passing data with mixed types."
223223 ) )
224- } ) ?;
224+ } ) ?;
225225 Ok ( s. into ( ) )
226226 }
227227
0 commit comments