import datetime import numpy as np import pytest from pandas import ( DataFrame, DatetimeIndex, Series, _testing as tm, date_range, period_range, ) from pandas.tests.io.pytables.common import ensure_clean_store pytestmark = pytest.mark.single_cpu @pytest.mark.parametrize("unit", ["us", "ns"]) def test_store_datetime_fractional_secs(setup_path, unit): dt = datetime.datetime(2012, 1, 2, 3, 4, 5, 123456) dti = DatetimeIndex([dt], dtype=f"M8[{unit}]") series = Series([0], index=dti) with ensure_clean_store(setup_path) as store: store["a"] = series assert store["a"].index[0] == dt @pytest.mark.filterwarnings(r"ignore:PeriodDtype\[B\] is deprecated:FutureWarning") def test_tseries_indices_series(setup_path): with ensure_clean_store(setup_path) as store: idx = date_range("2020-01-01", periods=10) ser = Series(np.random.default_rng(2).standard_normal(len(idx)), idx) store["a"] = ser result = store["a"] tm.assert_series_equal(result, ser) assert result.index.freq == ser.index.freq tm.assert_class_equal(result.index, ser.index, obj="series index") idx = period_range("2020-01-01", periods=10, freq="D") ser = Series(np.random.default_rng(2).standard_normal(len(idx)), idx) store["a"] = ser result = store["a"] tm.assert_series_equal(result, ser) assert result.index.freq == ser.index.freq tm.assert_class_equal(result.index, ser.index, obj="series index") @pytest.mark.filterwarnings(r"ignore:PeriodDtype\[B\] is deprecated:FutureWarning") def test_tseries_indices_frame(setup_path): with ensure_clean_store(setup_path) as store: idx = date_range("2020-01-01", periods=10) df = DataFrame( np.random.default_rng(2).standard_normal((len(idx), 3)), index=idx ) store["a"] = df result = store["a"] tm.assert_frame_equal(result, df) assert result.index.freq == df.index.freq tm.assert_class_equal(result.index, df.index, obj="dataframe index") idx = period_range("2020-01-01", periods=10, freq="D") df = DataFrame(np.random.default_rng(2).standard_normal((len(idx), 3)), idx) store["a"] = df result = store["a"] tm.assert_frame_equal(result, df) assert result.index.freq == df.index.freq tm.assert_class_equal(result.index, df.index, obj="dataframe index")