@@ -712,6 +712,31 @@ def test_timestamp_nanoseconds(self, pa):
712712 df = pd .DataFrame ({"a" : pd .date_range ("2017-01-01" , freq = "1n" , periods = 10 )})
713713 check_round_trip (df , pa , write_kwargs = {"version" : "2.0" })
714714
715+ @td .skip_if_no ("pyarrow" , min_version = "0.14" )
716+ @pytest .mark .parametrize (
717+ "date_value" ,
718+ [
719+ datetime .datetime .now (datetime .timezone .utc ),
720+ datetime .datetime .strptime (
721+ "2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z"
722+ ),
723+ datetime .datetime .strptime (
724+ "2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z"
725+ ),
726+ datetime .datetime .strptime (
727+ "2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z"
728+ ),
729+ datetime .datetime .strptime (
730+ "2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z"
731+ ),
732+ ],
733+ )
734+ def test_timezone_aware_index (self , pa , date_value ):
735+ idx = 5 * [date_value ]
736+
737+ df = pd .DataFrame (index = idx )
738+ check_round_trip (df , pa , write_kwargs = {"version" : "2.0" })
739+
715740 @td .skip_if_no ("pyarrow" , min_version = "0.17" )
716741 def test_filter_row_groups (self , pa ):
717742 # https://github.com/pandas-dev/pandas/issues/26551
@@ -850,3 +875,30 @@ def test_empty_dataframe(self, fp):
850875 expected = df .copy ()
851876 expected .index .name = "index"
852877 check_round_trip (df , fp , expected = expected )
878+
879+ @pytest .mark .parametrize (
880+ "date_value" ,
881+ [
882+ datetime .datetime .now (datetime .timezone .utc ),
883+ datetime .datetime .strptime (
884+ "2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z"
885+ ),
886+ datetime .datetime .strptime (
887+ "2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z"
888+ ),
889+ datetime .datetime .strptime (
890+ "2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z"
891+ ),
892+ datetime .datetime .strptime (
893+ "2019-01-04T16:41:24-0215" , "%Y-%m-%dT%H:%M:%S%z"
894+ ),
895+ ],
896+ )
897+ def test_timezone_aware_index (self , fp , date_value ):
898+ idx = 5 * [date_value ]
899+
900+ df = pd .DataFrame (index = idx , data = {"col" : 5 * [0 ]})
901+
902+ expected = df .copy ()
903+ expected .index .name = "index"
904+ check_round_trip (df , fp , expected = expected )
0 commit comments