@@ -123,6 +123,21 @@ def df_full():
123123 )
124124
125125
126+ @pytest .fixture (
127+ params = [
128+ datetime .datetime .now (datetime .timezone .utc ),
129+ datetime .datetime .now (datetime .timezone .min ),
130+ datetime .datetime .now (datetime .timezone .max ),
131+ datetime .datetime .strptime ("2019-01-04T16:41:24+0200" , "%Y-%m-%dT%H:%M:%S%z" ),
132+ datetime .datetime .strptime ("2019-01-04T16:41:24+0215" , "%Y-%m-%dT%H:%M:%S%z" ),
133+ datetime .datetime .strptime ("2019-01-04T16:41:24-0200" , "%Y-%m-%dT%H:%M:%S%z" ),
134+ datetime .datetime .strptime ("2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z" ),
135+ ]
136+ )
137+ def timezone_aware_date_list (request ):
138+ return request .param
139+
140+
126141def check_round_trip (
127142 df ,
128143 engine = None ,
@@ -712,6 +727,13 @@ def test_timestamp_nanoseconds(self, pa):
712727 df = pd .DataFrame ({"a" : pd .date_range ("2017-01-01" , freq = "1n" , periods = 10 )})
713728 check_round_trip (df , pa , write_kwargs = {"version" : "2.0" })
714729
730+ @td .skip_if_no ("pyarrow" , min_version = "0.14" )
731+ def test_timezone_aware_index (self , pa , timezone_aware_date_list ):
732+ idx = 5 * [timezone_aware_date_list ]
733+
734+ df = pd .DataFrame (index = idx )
735+ check_round_trip (df , pa , write_kwargs = {"version" : "2.0" })
736+
715737 @td .skip_if_no ("pyarrow" , min_version = "0.17" )
716738 def test_filter_row_groups (self , pa ):
717739 # https://github.com/pandas-dev/pandas/issues/26551
@@ -850,3 +872,12 @@ def test_empty_dataframe(self, fp):
850872 expected = df .copy ()
851873 expected .index .name = "index"
852874 check_round_trip (df , fp , expected = expected )
875+
876+ def test_timezone_aware_index (self , fp , timezone_aware_date_list ):
877+ idx = 5 * [timezone_aware_date_list ]
878+
879+ df = pd .DataFrame (index = idx , data = {"col" : 5 * [0 ]})
880+
881+ expected = df .copy ()
882+ expected .index .name = "index"
883+ check_round_trip (df , fp , expected = expected )
0 commit comments