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

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)