You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.5 KiB
77 lines
2.5 KiB
import dateutil.tz
|
|
import numpy as np
|
|
import pytest
|
|
|
|
from pandas import (
|
|
DatetimeIndex,
|
|
date_range,
|
|
to_datetime,
|
|
)
|
|
from pandas.core.arrays import datetimes
|
|
|
|
|
|
class TestDatetimeIndexIteration:
|
|
@pytest.mark.parametrize(
|
|
"tz", [None, "UTC", "US/Central", dateutil.tz.tzoffset(None, -28800)]
|
|
)
|
|
def test_iteration_preserves_nanoseconds(self, tz):
|
|
# GH#19603
|
|
index = DatetimeIndex(
|
|
["2018-02-08 15:00:00.168456358", "2018-02-08 15:00:00.168456359"], tz=tz
|
|
)
|
|
for i, ts in enumerate(index):
|
|
assert ts == index[i] # pylint: disable=unnecessary-list-index-lookup
|
|
|
|
def test_iter_readonly(self):
|
|
# GH#28055 ints_to_pydatetime with readonly array
|
|
arr = np.array([np.datetime64("2012-02-15T12:00:00.000000000")])
|
|
arr.setflags(write=False)
|
|
dti = to_datetime(arr)
|
|
list(dti)
|
|
|
|
def test_iteration_preserves_tz(self):
|
|
# see GH#8890
|
|
index = date_range("2012-01-01", periods=3, freq="h", tz="US/Eastern")
|
|
|
|
for i, ts in enumerate(index):
|
|
result = ts
|
|
expected = index[i] # pylint: disable=unnecessary-list-index-lookup
|
|
assert result == expected
|
|
|
|
def test_iteration_preserves_tz2(self):
|
|
index = date_range(
|
|
"2012-01-01", periods=3, freq="h", tz=dateutil.tz.tzoffset(None, -28800)
|
|
)
|
|
|
|
for i, ts in enumerate(index):
|
|
result = ts
|
|
expected = index[i] # pylint: disable=unnecessary-list-index-lookup
|
|
assert result._repr_base == expected._repr_base
|
|
assert result == expected
|
|
|
|
def test_iteration_preserves_tz3(self):
|
|
# GH#9100
|
|
index = DatetimeIndex(
|
|
["2014-12-01 03:32:39.987000-08:00", "2014-12-01 04:12:34.987000-08:00"]
|
|
)
|
|
for i, ts in enumerate(index):
|
|
result = ts
|
|
expected = index[i] # pylint: disable=unnecessary-list-index-lookup
|
|
assert result._repr_base == expected._repr_base
|
|
assert result == expected
|
|
|
|
@pytest.mark.parametrize("offset", [-5, -1, 0, 1])
|
|
def test_iteration_over_chunksize(self, offset, monkeypatch):
|
|
# GH#21012
|
|
chunksize = 5
|
|
index = date_range(
|
|
"2000-01-01 00:00:00", periods=chunksize - offset, freq="min"
|
|
)
|
|
num = 0
|
|
with monkeypatch.context() as m:
|
|
m.setattr(datetimes, "_ITER_CHUNKSIZE", chunksize)
|
|
for stamp in index:
|
|
assert index[num] == stamp
|
|
num += 1
|
|
assert num == len(index)
|