Skip to content

Commit 9ba93ba

Browse files
authored
REF: misplaced to_datetime, date_range tests (#32920)
1 parent f78b1cc commit 9ba93ba

File tree

3 files changed

+72
-71
lines changed

3 files changed

+72
-71
lines changed

pandas/tests/indexes/datetimes/test_date_range.py

+55
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import pytz
1010
from pytz import timezone
1111

12+
from pandas._libs.tslibs import timezones
1213
from pandas.errors import OutOfBoundsDatetime
1314
import pandas.util._test_decorators as td
1415

@@ -662,6 +663,60 @@ def test_negative_non_tick_frequency_descending_dates(self, tz_aware_fixture):
662663
tm.assert_index_equal(result, expected)
663664

664665

666+
class TestDateRangeTZ:
667+
"""Tests for date_range with timezones"""
668+
669+
def test_hongkong_tz_convert(self):
670+
# GH#1673 smoke test
671+
dr = date_range("2012-01-01", "2012-01-10", freq="D", tz="Hongkong")
672+
673+
# it works!
674+
dr.hour
675+
676+
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
677+
def test_date_range_span_dst_transition(self, tzstr):
678+
# GH#1778
679+
680+
# Standard -> Daylight Savings Time
681+
dr = date_range("03/06/2012 00:00", periods=200, freq="W-FRI", tz="US/Eastern")
682+
683+
assert (dr.hour == 0).all()
684+
685+
dr = date_range("2012-11-02", periods=10, tz=tzstr)
686+
result = dr.hour
687+
expected = pd.Index([0] * 10)
688+
tm.assert_index_equal(result, expected)
689+
690+
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
691+
def test_date_range_timezone_str_argument(self, tzstr):
692+
tz = timezones.maybe_get_tz(tzstr)
693+
result = date_range("1/1/2000", periods=10, tz=tzstr)
694+
expected = date_range("1/1/2000", periods=10, tz=tz)
695+
696+
tm.assert_index_equal(result, expected)
697+
698+
def test_date_range_with_fixedoffset_noname(self):
699+
from pandas.tests.indexes.datetimes.test_timezones import fixed_off_no_name
700+
701+
off = fixed_off_no_name
702+
start = datetime(2012, 3, 11, 5, 0, 0, tzinfo=off)
703+
end = datetime(2012, 6, 11, 5, 0, 0, tzinfo=off)
704+
rng = date_range(start=start, end=end)
705+
assert off == rng.tz
706+
707+
idx = pd.Index([start, end])
708+
assert off == idx.tz
709+
710+
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
711+
def test_date_range_with_tz(self, tzstr):
712+
stamp = Timestamp("3/11/2012 05:00", tz=tzstr)
713+
assert stamp.hour == 5
714+
715+
rng = date_range("3/11/2012 04:00", periods=10, freq="H", tz=tzstr)
716+
717+
assert stamp == rng[1]
718+
719+
665720
class TestGenRangeGeneration:
666721
def test_generate(self):
667722
rng1 = list(generate_range(START, END, offset=BDay()))

pandas/tests/indexes/datetimes/test_timezones.py

-71
Original file line numberDiff line numberDiff line change
@@ -1161,74 +1161,3 @@ def test_iteration_preserves_nanoseconds(self, tz):
11611161
)
11621162
for i, ts in enumerate(index):
11631163
assert ts == index[i]
1164-
1165-
1166-
class TestDateRange:
1167-
"""Tests for date_range with timezones"""
1168-
1169-
def test_hongkong_tz_convert(self):
1170-
# GH#1673 smoke test
1171-
dr = date_range("2012-01-01", "2012-01-10", freq="D", tz="Hongkong")
1172-
1173-
# it works!
1174-
dr.hour
1175-
1176-
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
1177-
def test_date_range_span_dst_transition(self, tzstr):
1178-
# GH#1778
1179-
1180-
# Standard -> Daylight Savings Time
1181-
dr = date_range("03/06/2012 00:00", periods=200, freq="W-FRI", tz="US/Eastern")
1182-
1183-
assert (dr.hour == 0).all()
1184-
1185-
dr = date_range("2012-11-02", periods=10, tz=tzstr)
1186-
result = dr.hour
1187-
expected = Index([0] * 10)
1188-
tm.assert_index_equal(result, expected)
1189-
1190-
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
1191-
def test_date_range_timezone_str_argument(self, tzstr):
1192-
tz = timezones.maybe_get_tz(tzstr)
1193-
result = date_range("1/1/2000", periods=10, tz=tzstr)
1194-
expected = date_range("1/1/2000", periods=10, tz=tz)
1195-
1196-
tm.assert_index_equal(result, expected)
1197-
1198-
def test_date_range_with_fixedoffset_noname(self):
1199-
off = fixed_off_no_name
1200-
start = datetime(2012, 3, 11, 5, 0, 0, tzinfo=off)
1201-
end = datetime(2012, 6, 11, 5, 0, 0, tzinfo=off)
1202-
rng = date_range(start=start, end=end)
1203-
assert off == rng.tz
1204-
1205-
idx = Index([start, end])
1206-
assert off == idx.tz
1207-
1208-
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
1209-
def test_date_range_with_tz(self, tzstr):
1210-
stamp = Timestamp("3/11/2012 05:00", tz=tzstr)
1211-
assert stamp.hour == 5
1212-
1213-
rng = date_range("3/11/2012 04:00", periods=10, freq="H", tz=tzstr)
1214-
1215-
assert stamp == rng[1]
1216-
1217-
1218-
class TestToDatetime:
1219-
"""Tests for the to_datetime constructor with timezones"""
1220-
1221-
def test_to_datetime_utc(self):
1222-
arr = np.array([dateutil.parser.parse("2012-06-13T01:39:00Z")], dtype=object)
1223-
1224-
result = to_datetime(arr, utc=True)
1225-
assert result.tz is pytz.utc
1226-
1227-
def test_to_datetime_fixed_offset(self):
1228-
dates = [
1229-
datetime(2000, 1, 1, tzinfo=fixed_off),
1230-
datetime(2000, 1, 2, tzinfo=fixed_off),
1231-
datetime(2000, 1, 3, tzinfo=fixed_off),
1232-
]
1233-
result = to_datetime(dates)
1234-
assert result.tz == fixed_off

pandas/tests/tools/test_to_datetime.py

+17
Original file line numberDiff line numberDiff line change
@@ -1056,6 +1056,23 @@ def test_to_datetime_with_format_out_of_bounds(self, dt_str):
10561056
with pytest.raises(OutOfBoundsDatetime):
10571057
pd.to_datetime(dt_str, format="%Y%m%d")
10581058

1059+
def test_to_datetime_utc(self):
1060+
arr = np.array([parse("2012-06-13T01:39:00Z")], dtype=object)
1061+
1062+
result = to_datetime(arr, utc=True)
1063+
assert result.tz is pytz.utc
1064+
1065+
def test_to_datetime_fixed_offset(self):
1066+
from pandas.tests.indexes.datetimes.test_timezones import fixed_off
1067+
1068+
dates = [
1069+
datetime(2000, 1, 1, tzinfo=fixed_off),
1070+
datetime(2000, 1, 2, tzinfo=fixed_off),
1071+
datetime(2000, 1, 3, tzinfo=fixed_off),
1072+
]
1073+
result = to_datetime(dates)
1074+
assert result.tz == fixed_off
1075+
10591076

10601077
class TestToDatetimeUnit:
10611078
@pytest.mark.parametrize("cache", [True, False])

0 commit comments

Comments
 (0)