@@ -193,3 +193,39 @@ def add_positive_sentence(row):
193193 transformed_dataset = dataset .transform (add_positive_sentence )
194194
195195 assert transformed_dataset .df .iloc [0 ].text == "testing. I love this!"
196+
197+
198+ def test_slicing_function_multiple_instances ():
199+ @slicing_function (name = "slice cell level" , cell_level = True )
200+ def filter_cell_level_by (amount : int , min_value : int ) -> bool :
201+ return amount >= min_value
202+
203+ df = pd .DataFrame ({"quantity" : [1 , 2 , 3 , 5 , 7 , 11 , 13 ]})
204+ dataset = Dataset (df , cat_columns = [])
205+
206+ min_five = filter_cell_level_by (min_value = 5 )
207+ min_six = filter_cell_level_by (min_value = 6 )
208+
209+ dataset_greater_equals_five = dataset .slice (min_five , column_name = "quantity" )
210+ dataset_greater_equals_six = dataset .slice (min_six , column_name = "quantity" )
211+
212+ assert list (dataset_greater_equals_five .df ["quantity" ]) == [5 , 7 , 11 , 13 ]
213+ assert list (dataset_greater_equals_six .df ["quantity" ]) == [7 , 11 , 13 ]
214+
215+
216+ def test_transformation_multiple_instances ():
217+ @transformation_function (cell_level = True )
218+ def column_level_divide (nb : float , amount : int ) -> float :
219+ return nb / amount
220+
221+ df = pd .DataFrame ({"quantity" : [100 , 200 , 300 ]})
222+ dataset = Dataset (df , cat_columns = [])
223+
224+ divide_by_ten = column_level_divide (amount = 10 )
225+ divide_by_a_hundred = column_level_divide (amount = 100 )
226+
227+ dataset_by_ten = dataset .transform (divide_by_ten , column_name = "quantity" )
228+ dataset_by_a_hundred = dataset .transform (divide_by_a_hundred , column_name = "quantity" )
229+
230+ assert list (dataset_by_ten .df ["quantity" ]) == [10 , 20 , 30 ]
231+ assert list (dataset_by_a_hundred .df ["quantity" ]) == [1 , 2 , 3 ]
0 commit comments