|
10 | 10 | from mock import Mock, patch
|
11 | 11 | import string
|
12 | 12 |
|
13 |
| -from arctic.date import DateRange |
| 13 | +from arctic.date import DateRange, mktz |
14 | 14 | from arctic._compression import decompress
|
15 | 15 | from arctic.store._pandas_ndarray_store import PandasDataFrameStore, PandasSeriesStore, PandasStore
|
16 | 16 | from arctic.store.version_store import register_versioned_storage
|
@@ -603,7 +603,7 @@ def test_not_unique(library):
|
603 | 603 | ts2 = library.read('ts').data
|
604 | 604 | assert_frame_equal(ts, ts2)
|
605 | 605 |
|
606 |
| - |
| 606 | + |
607 | 607 | def test_daterange_end(library):
|
608 | 608 | df = DataFrame(index=date_range(dt(2001, 1, 1), freq='S', periods=30 * 1024),
|
609 | 609 | data=np.tile(np.arange(30 * 1024), 100).reshape((-1, 100)))
|
@@ -663,6 +663,9 @@ def test_daterange_large_DataFrame(library):
|
663 | 663 | # last row
|
664 | 664 | result = library.read('MYARR', date_range=DateRange(df.index[-1], df.index[-1])).data
|
665 | 665 | assert_frame_equal(df[df.index[-1]:df.index[-1]], result, check_names=False)
|
| 666 | + # beyond last row |
| 667 | + result = library.read('MYARR', date_range=DateRange(df.index[-1], df.index[-1] + dtd(days=1))).data |
| 668 | + assert_frame_equal(df[df.index[-1]:df.index[-1]], result, check_names=False) |
666 | 669 | # somewhere in time
|
667 | 670 | result = library.read('MYARR', date_range=DateRange(dt(2020, 1, 1), dt(2031, 9, 1))).data
|
668 | 671 | assert_frame_equal(df[dt(2020, 1, 1):dt(2031, 9, 1)], result, check_names=False)
|
@@ -715,7 +718,7 @@ def test_daterange(library, df, assert_equal):
|
715 | 718 | assert len(library.read('MYARR', date_range=DateRange(dt(1950, 1, 1), dt(1951, 1, 1))).data) == 0
|
716 | 719 | assert len(library.read('MYARR', date_range=DateRange(dt(2091, 1, 1), dt(2091, 1, 1))).data) == 0
|
717 | 720 |
|
718 |
| - |
| 721 | + |
719 | 722 | def test_daterange_append(library):
|
720 | 723 | df = DataFrame(index=date_range(dt(2001, 1, 1), freq='S', periods=30 * 1024),
|
721 | 724 | data=np.tile(np.arange(30 * 1024), 100).reshape((-1, 100)))
|
@@ -745,3 +748,52 @@ def test_daterange_append(library):
|
745 | 748 | library.read('MYARR', date_range=DateRange(start=df.index[50], end=rows1.index[-2])).data)
|
746 | 749 |
|
747 | 750 |
|
| 751 | +def assert_range_slice(library, expected, date_range, **kwargs): |
| 752 | + assert_equals = assert_series_equal if isinstance(expected, Series) else assert_frame_equal |
| 753 | + assert_equals(expected, library.read('MYARR', date_range=date_range).data, **kwargs) |
| 754 | + |
| 755 | + |
| 756 | +def test_daterange_single_chunk(library): |
| 757 | + df = read_csv(StringIO("""2015-08-10 00:00:00,200005,1.0 |
| 758 | + 2015-08-10 00:00:00,200012,2.0 |
| 759 | + 2015-08-10 00:00:00,200016,3.0 |
| 760 | + 2015-08-11 00:00:00,200005,1.0 |
| 761 | + 2015-08-11 00:00:00,200012,2,0 |
| 762 | + 2015-08-11 00:00:00,200016,3.0"""), parse_dates=[0], |
| 763 | + names=['date', 'security_id', 'value']).set_index(['date', 'security_id']) |
| 764 | + library.write('MYARR', df) |
| 765 | + assert_range_slice(library, df[dt(2015, 8, 11):], DateRange(dt(2015, 8, 11), dt(2015, 8, 11))) |
| 766 | + |
| 767 | + |
| 768 | +def test_daterange_when_end_beyond_chunk_index(library): |
| 769 | + df = read_csv(StringIO("""2015-08-10 00:00:00,200005,1.0 |
| 770 | + 2015-08-10 00:00:00,200012,2.0 |
| 771 | + 2015-08-10 00:00:00,200016,3.0 |
| 772 | + 2015-08-11 00:00:00,200005,1.0 |
| 773 | + 2015-08-11 00:00:00,200012,2,0 |
| 774 | + 2015-08-11 00:00:00,200016,3.0"""), parse_dates=[0], |
| 775 | + names=['date', 'security_id', 'value']).set_index(['date', 'security_id']) |
| 776 | + library.write('MYARR', df) |
| 777 | + assert_range_slice(library, df[dt(2015, 8, 11):], DateRange(dt(2015, 8, 11), dt(2015, 8, 12))) |
| 778 | + |
| 779 | + |
| 780 | +def test_daterange_when_end_beyond_chunk_index_no_start(library): |
| 781 | + df = read_csv(StringIO("""2015-08-10 00:00:00,200005,1.0 |
| 782 | + 2015-08-10 00:00:00,200012,2.0 |
| 783 | + 2015-08-10 00:00:00,200016,3.0 |
| 784 | + 2015-08-11 00:00:00,200005,1.0 |
| 785 | + 2015-08-11 00:00:00,200012,2,0 |
| 786 | + 2015-08-11 00:00:00,200016,3.0"""), parse_dates=[0], |
| 787 | + names=['date', 'security_id', 'value']).set_index(['date', 'security_id']) |
| 788 | + library.write('MYARR', df) |
| 789 | + assert_range_slice(library, df, DateRange(end=dt(2015, 8, 12))) |
| 790 | + |
| 791 | + |
| 792 | +def test_daterange_fails_with_timezone_start(library): |
| 793 | + df = read_csv(StringIO("""2015-08-10 00:00:00,200005,1.0 |
| 794 | + 2015-08-11 00:00:00,200016,3.0"""), parse_dates=[0], |
| 795 | + names=['date', 'security_id', 'value']).set_index(['date', 'security_id']) |
| 796 | + library.write('MYARR', df) |
| 797 | + with pytest.raises(ValueError): |
| 798 | + library.read('MYARR', date_range=DateRange(start=dt(2015, 1, 1, tzinfo=mktz()))) |
| 799 | + |
0 commit comments