|
1 | 1 | from StringIO import StringIO
|
2 | 2 | from datetime import datetime as dt, timedelta as dtd
|
| 3 | +import io |
| 4 | +import itertools |
| 5 | +import string |
| 6 | + |
3 | 7 | from dateutil.rrule import rrule, DAILY
|
| 8 | +from mock import Mock, patch |
4 | 9 | from pandas import DataFrame, Series, DatetimeIndex, MultiIndex, read_csv, Panel, date_range, concat
|
| 10 | +from pandas.tseries.offsets import DateOffset |
5 | 11 | from pandas.util.testing import assert_frame_equal, assert_series_equal
|
6 |
| -import numpy as np |
7 | 12 | import pytest
|
8 |
| -import io |
9 |
| -import itertools |
10 |
| -from mock import Mock, patch |
11 |
| -import string |
12 | 13 |
|
13 |
| -from arctic.date import DateRange, mktz |
14 | 14 | from arctic._compression import decompress
|
| 15 | +from arctic.date import DateRange, mktz |
15 | 16 | from arctic.store._pandas_ndarray_store import PandasDataFrameStore, PandasSeriesStore, PandasStore
|
16 | 17 | from arctic.store.version_store import register_versioned_storage
|
17 |
| -from pandas.tseries.offsets import DateOffset |
| 18 | +import numpy as np |
| 19 | +from tests.util import read_str_as_pandas |
18 | 20 |
|
19 | 21 |
|
20 | 22 | register_versioned_storage(PandasDataFrameStore)
|
@@ -831,9 +833,21 @@ def test_data_info_cols(library):
|
831 | 833 | library.write('test_data', s)
|
832 | 834 | md = library.get_info('test_data')
|
833 | 835 | assert md == {'dtype': [('level_0', '<i8'), ('level_1', 'S2'), ('0', '<i8')],
|
834 |
| - 'col_names': {u'index': [u'level_0', u'level_1'], u'columns': [u'0']}, |
| 836 | + 'col_names': {u'index': [u'level_0', u'level_1'], u'columns': [u'0'], u'index_tz': [None, None]}, |
835 | 837 | 'type': u'pandasdf',
|
836 | 838 | 'handler': 'PandasDataFrameStore',
|
837 | 839 | 'rows': 3,
|
838 | 840 | 'segment_count': 1,
|
839 | 841 | 'size': 54}
|
| 842 | + |
| 843 | + |
| 844 | +def test_read_write_multiindex_store_keeps_timezone(library): |
| 845 | + """If I write a multi-index dataframe and reads it, the timezone of the index shouldn't change, right?""" |
| 846 | + hk, ny, ldn = mktz('Asia/Hong_Kong'), mktz('America/New_York'), mktz('Europe/London') |
| 847 | + row0 = [dt(2015, 1, 1, tzinfo=hk), dt(2015, 1, 1, tzinfo=ny), dt(2015, 1, 1, tzinfo=ldn), 0, 42] |
| 848 | + row1 = [dt(2015, 1, 2, tzinfo=hk), dt(2015, 1, 2, tzinfo=ny), dt(2015, 1, 2, tzinfo=ldn), 1, 43] |
| 849 | + df = DataFrame([row0, row1], columns=['dt_a', 'dt_b', 'dt_c', 'index_0', 'data']) |
| 850 | + df = df.set_index(['dt_a', 'dt_b', 'dt_c', 'index_0']) |
| 851 | + library.write('spam', df) |
| 852 | + assert list(library.read('spam').data.index[0]) == row0[:-1] |
| 853 | + assert list(library.read('spam').data.index[1]) == row1[:-1] |
0 commit comments