16
16
import pytest
17
17
18
18
import bigframes .series
19
- from tests .system .utils import assert_series_equal
19
+ from tests .system .utils import assert_series_equal , skip_legacy_pandas
20
20
21
21
DATETIME_COL_NAMES = [("datetime_col" ,), ("timestamp_col" ,)]
22
+ DATE_COLUMNS = [
23
+ ("datetime_col" ,),
24
+ ("timestamp_col" ,),
25
+ ("date_col" ,),
26
+ ]
22
27
23
28
24
29
@pytest .mark .parametrize (
25
30
("col_name" ,),
26
- DATETIME_COL_NAMES ,
31
+ DATE_COLUMNS ,
27
32
)
28
- def test_day (scalars_dfs , col_name ):
29
- if pd .__version__ .startswith ("1." ):
30
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
33
+ @skip_legacy_pandas
34
+ def test_dt_day (scalars_dfs , col_name ):
31
35
scalars_df , scalars_pandas_df = scalars_dfs
32
36
bf_series : bigframes .series .Series = scalars_df [col_name ]
33
37
bf_result = bf_series .dt .day .to_pandas ()
@@ -43,9 +47,8 @@ def test_day(scalars_dfs, col_name):
43
47
("col_name" ,),
44
48
DATETIME_COL_NAMES ,
45
49
)
46
- def test_date (scalars_dfs , col_name ):
47
- if pd .__version__ .startswith ("1." ):
48
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
50
+ @skip_legacy_pandas
51
+ def test_dt_date (scalars_dfs , col_name ):
49
52
scalars_df , scalars_pandas_df = scalars_dfs
50
53
bf_series : bigframes .series .Series = scalars_df [col_name ]
51
54
bf_result = bf_series .dt .date .to_pandas ()
@@ -59,11 +62,10 @@ def test_date(scalars_dfs, col_name):
59
62
60
63
@pytest .mark .parametrize (
61
64
("col_name" ,),
62
- DATETIME_COL_NAMES ,
65
+ DATE_COLUMNS ,
63
66
)
64
- def test_dayofweek (scalars_dfs , col_name ):
65
- if pd .__version__ .startswith ("1." ):
66
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
67
+ @skip_legacy_pandas
68
+ def test_dt_dayofweek (scalars_dfs , col_name ):
67
69
scalars_df , scalars_pandas_df = scalars_dfs
68
70
bf_series : bigframes .series .Series = scalars_df [col_name ]
69
71
bf_result = bf_series .dt .dayofweek .to_pandas ()
@@ -76,9 +78,8 @@ def test_dayofweek(scalars_dfs, col_name):
76
78
("col_name" ,),
77
79
DATETIME_COL_NAMES ,
78
80
)
79
- def test_hour (scalars_dfs , col_name ):
80
- if pd .__version__ .startswith ("1." ):
81
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
81
+ @skip_legacy_pandas
82
+ def test_dt_hour (scalars_dfs , col_name ):
82
83
scalars_df , scalars_pandas_df = scalars_dfs
83
84
bf_series : bigframes .series .Series = scalars_df [col_name ]
84
85
bf_result = bf_series .dt .hour .to_pandas ()
@@ -94,9 +95,8 @@ def test_hour(scalars_dfs, col_name):
94
95
("col_name" ,),
95
96
DATETIME_COL_NAMES ,
96
97
)
97
- def test_minute (scalars_dfs , col_name ):
98
- if pd .__version__ .startswith ("1." ):
99
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
98
+ @skip_legacy_pandas
99
+ def test_dt_minute (scalars_dfs , col_name ):
100
100
scalars_df , scalars_pandas_df = scalars_dfs
101
101
bf_series : bigframes .series .Series = scalars_df [col_name ]
102
102
bf_result = bf_series .dt .minute .to_pandas ()
@@ -110,11 +110,10 @@ def test_minute(scalars_dfs, col_name):
110
110
111
111
@pytest .mark .parametrize (
112
112
("col_name" ,),
113
- DATETIME_COL_NAMES ,
113
+ DATE_COLUMNS ,
114
114
)
115
- def test_month (scalars_dfs , col_name ):
116
- if pd .__version__ .startswith ("1." ):
117
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
115
+ @skip_legacy_pandas
116
+ def test_dt_month (scalars_dfs , col_name ):
118
117
scalars_df , scalars_pandas_df = scalars_dfs
119
118
bf_series : bigframes .series .Series = scalars_df [col_name ]
120
119
bf_result = bf_series .dt .month .to_pandas ()
@@ -128,11 +127,10 @@ def test_month(scalars_dfs, col_name):
128
127
129
128
@pytest .mark .parametrize (
130
129
("col_name" ,),
131
- DATETIME_COL_NAMES ,
130
+ DATE_COLUMNS ,
132
131
)
133
- def test_quarter (scalars_dfs , col_name ):
134
- if pd .__version__ .startswith ("1." ):
135
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
132
+ @skip_legacy_pandas
133
+ def test_dt_quarter (scalars_dfs , col_name ):
136
134
scalars_df , scalars_pandas_df = scalars_dfs
137
135
bf_series : bigframes .series .Series = scalars_df [col_name ]
138
136
bf_result = bf_series .dt .quarter .to_pandas ()
@@ -148,9 +146,8 @@ def test_quarter(scalars_dfs, col_name):
148
146
("col_name" ,),
149
147
DATETIME_COL_NAMES ,
150
148
)
151
- def test_second (scalars_dfs , col_name ):
152
- if pd .__version__ .startswith ("1." ):
153
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
149
+ @skip_legacy_pandas
150
+ def test_dt_second (scalars_dfs , col_name ):
154
151
scalars_df , scalars_pandas_df = scalars_dfs
155
152
bf_series : bigframes .series .Series = scalars_df [col_name ]
156
153
bf_result = bf_series .dt .second .to_pandas ()
@@ -166,9 +163,8 @@ def test_second(scalars_dfs, col_name):
166
163
("col_name" ,),
167
164
DATETIME_COL_NAMES ,
168
165
)
169
- def test_time (scalars_dfs , col_name ):
170
- if pd .__version__ .startswith ("1." ):
171
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
166
+ @skip_legacy_pandas
167
+ def test_dt_time (scalars_dfs , col_name ):
172
168
scalars_df , scalars_pandas_df = scalars_dfs
173
169
bf_series : bigframes .series .Series = scalars_df [col_name ]
174
170
bf_result = bf_series .dt .time .to_pandas ()
@@ -182,11 +178,10 @@ def test_time(scalars_dfs, col_name):
182
178
183
179
@pytest .mark .parametrize (
184
180
("col_name" ,),
185
- DATETIME_COL_NAMES ,
181
+ DATE_COLUMNS ,
186
182
)
187
- def test_year (scalars_dfs , col_name ):
188
- if pd .__version__ .startswith ("1." ):
189
- pytest .skip ("Pyarrow datetime objects not support in pandas 1.x." )
183
+ @skip_legacy_pandas
184
+ def test_dt_year (scalars_dfs , col_name ):
190
185
scalars_df , scalars_pandas_df = scalars_dfs
191
186
bf_series : bigframes .series .Series = scalars_df [col_name ]
192
187
bf_result = bf_series .dt .year .to_pandas ()
@@ -196,3 +191,31 @@ def test_year(scalars_dfs, col_name):
196
191
pd_result .astype (pd .Int64Dtype ()),
197
192
bf_result ,
198
193
)
194
+
195
+
196
+ @pytest .mark .parametrize (
197
+ ("col_name" ,),
198
+ DATETIME_COL_NAMES ,
199
+ )
200
+ @skip_legacy_pandas
201
+ def test_dt_tz (scalars_dfs , col_name ):
202
+ scalars_df , scalars_pandas_df = scalars_dfs
203
+ bf_series : bigframes .series .Series = scalars_df [col_name ]
204
+ bf_result = bf_series .dt .tz
205
+ pd_result = scalars_pandas_df [col_name ].dt .tz
206
+
207
+ assert bf_result == pd_result
208
+
209
+
210
+ @pytest .mark .parametrize (
211
+ ("col_name" ,),
212
+ DATETIME_COL_NAMES ,
213
+ )
214
+ @skip_legacy_pandas
215
+ def test_dt_unit (scalars_dfs , col_name ):
216
+ scalars_df , scalars_pandas_df = scalars_dfs
217
+ bf_series : bigframes .series .Series = scalars_df [col_name ]
218
+ bf_result = bf_series .dt .unit
219
+ pd_result = scalars_pandas_df [col_name ].dt .unit
220
+
221
+ assert bf_result == pd_result
0 commit comments