@@ -867,11 +867,29 @@ def test_generic_ext_type_equality():
867867 assert not period_type == period_type3
868868
869869
870- def test_generic_ext_type_pickling ():
870+ def test_generic_ext_type_pickling (registered_period_type ):
871871 # GH-36038
872- period_type = PeriodType ('D' )
873- period_type_pickled = pickle .loads (pickle .dumps (period_type ))
874- assert period_type == period_type_pickled
872+ for proto in range (0 , pickle .HIGHEST_PROTOCOL + 1 ):
873+ period_type , _ = registered_period_type
874+ ser = pickle .dumps (period_type , protocol = proto )
875+ period_type_pickled = pickle .loads (ser )
876+ assert period_type == period_type_pickled
877+
878+
879+ def test_generic_ext_array_pickling (registered_period_type ):
880+ for proto in range (0 , pickle .HIGHEST_PROTOCOL + 1 ):
881+ period_type , _ = registered_period_type
882+ storage = pa .array ([1 , 2 , 3 , 4 ], pa .int64 ())
883+ arr = pa .ExtensionArray .from_storage (period_type , storage )
884+ ser = pickle .dumps (arr , protocol = proto )
885+ del storage , arr
886+ arr = pickle .loads (ser )
887+ arr .validate ()
888+ assert isinstance (arr , pa .ExtensionArray )
889+ assert arr .type == period_type
890+ assert arr .type .storage_type == pa .int64 ()
891+ assert arr .storage .type == pa .int64 ()
892+ assert arr .storage .to_pylist () == [1 , 2 , 3 , 4 ]
875893
876894
877895def test_generic_ext_type_register (registered_period_type ):
0 commit comments