Skip to content

Commit e61f5bf

Browse files
Revert to the v1.12.0 release.
1 parent da86e0d commit e61f5bf

14 files changed

+59
-101
lines changed

CHANGES.md

-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11

22
## Changelog
33

4-
### 1.13 (2015-11-24)
5-
6-
* Feature: add info member to VersionedItem.
7-
84
### 1.12 (2015-11-12)
95

106
* Bugfix: correct version detection for Pandas >= 0.18.

arctic/store/_base_store.py

-10
This file was deleted.

arctic/store/_ndarray_store.py

+15-10
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import pymongo
88
from pymongo.errors import OperationFailure, DuplicateKeyError
99

10-
from ._base_store import BaseStore
1110
from ..decorators import mongo_retry, dump_bad_documents
1211
from ..exceptions import UnhandledDtypeException
1312
from ._version_store_utils import checksum
@@ -37,7 +36,7 @@ def _promote(type1, type2):
3736
return np.dtype([(n, _promote(dtype1.fields[n][0], dtype2.fields.get(n, (None,))[0])) for n in dtype1.names])
3837

3938

40-
class NdarrayStore(BaseStore):
39+
class NdarrayStore(object):
4140
"""Chunked store for arbitrary ndarrays, supporting append.
4241
4342
for the simple example:
@@ -152,20 +151,26 @@ def _index_range(self, version, symbol, from_version=None, **kwargs):
152151
return from_index, None
153152

154153
def get_info(self, arctic_lib, version, symbol, **kwargs):
155-
ret = {}
156154
collection = arctic_lib.get_top_level_collection()
157-
ret['dtype'] = self._dtype(version['dtype'], version.get('dtype_metadata', {}))
158-
ret['length'] = int(version['up_to'])
155+
dtype = self._dtype(version['dtype'], version.get('dtype_metadata', {}))
156+
length = int(version['up_to'])
159157

160158
spec = {'symbol': symbol,
161159
'parent': version.get('base_version_id', version['_id']),
162-
'segment': {'$lt': ret['length']}}
160+
'segment': {'$lt': length}}
161+
162+
n_segments = collection.find(spec).count()
163+
164+
est_size = dtype.itemsize * length
165+
return """Handler: %s
166+
167+
dtype: %s
163168
164-
ret['n_segments'] = collection.find(spec).count()
169+
%d rows in %d segments
170+
Data size: %s bytes
165171
166-
ret['est_size'] = ret['dtype'].itemsize * ret['length']
167-
ret['handler'] = self.__class__.__name__
168-
return ret
172+
Version document:
173+
%s""" % (self.__class__.__name__, dtype, length, n_segments, est_size, pprint.pformat(version))
169174

170175
def read(self, arctic_lib, version, symbol, read_preference=None, **kwargs):
171176
index_range = self._index_range(version, symbol, **kwargs)

arctic/store/_pandas_ndarray_store.py

-6
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,6 @@ def read(self, arctic_lib, version, symbol, read_preference=None, date_range=Non
194194
if date_range:
195195
item = self._daterange(item, date_range)
196196
return item
197-
198-
def get_info(self, arctic_lib, version, symbol, **kwargs):
199-
ret = super(PandasStore, self).get_info(arctic_lib, version, symbol, **kwargs)
200-
ret['type'] = version['type']
201-
ret['col_names'] = version['dtype_metadata']
202-
return ret
203197

204198

205199
def _start_end(date_range, dts):

arctic/store/_pickle_store.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,24 @@
88
import pprint
99

1010
from arctic.store._version_store_utils import checksum, pickle_compat_load
11-
from ._base_store import BaseStore
1211

1312
_MAGIC_CHUNKED = '__chunked__'
1413
_CHUNK_SIZE = 15 * 1024 * 1024 # 15MB
1514
_MAX_BSON_ENCODE = 256 * 1024 # 256K - don't fill up the version document with encoded bson
1615

1716

18-
class PickleStore(BaseStore):
17+
class PickleStore(object):
1918

2019
@classmethod
2120
def initialize_library(cls, *args, **kwargs):
2221
pass
2322

2423
def get_info(self, arctic_lib, version, symbol, **kwargs):
25-
ret = {}
2624
if 'blob' in version:
2725
if version['blob'] != _MAGIC_CHUNKED:
2826
version['blob'] = "<Compressed pickle.....>"
2927

30-
ret['handler'] = self.__class__.__name__
31-
ret['type'] = 'blob'
32-
return ret
28+
return """Handler: %s\n\nVersion document:\n%s""" % (self.__class__.__name__, pprint.pformat(version))
3329

3430
def read(self, mongoose_lib, version, symbol, **kwargs):
3531
blob = version.get("blob")

arctic/store/audit.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def __init__(self, version_store, symbol, user, log, modify_timeseries=None, *ar
8484
versions = [x['version'] for x in self._version_store.list_versions(self._symbol, latest_only=True)]
8585
versions.append(0)
8686
self.base_ts = VersionedItem(symbol=self._symbol, library=None,
87-
version=versions[0], metadata=None, data=None, info=None)
87+
version=versions[0], metadata=None, data=None)
8888
except OperationFailure:
8989
#TODO: Current errors in mongo "Incorrect Number of Segments Returned"
9090
# This workaround should be removed once underlying problem is resolved.

arctic/store/version_store.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -352,19 +352,21 @@ def _show_info(self, symbol, as_of=None):
352352
"""
353353
print self._get_info(symbol, as_of)
354354

355-
def _get_info(self, symbol, as_of=None, version=None):
356-
if not version:
357-
version = self._read_metadata(symbol, as_of=as_of)
358-
handler = self._read_handler(version, symbol)
359-
return handler.get_info(self._arctic_lib, version, symbol)
355+
def _get_info(self, symbol, as_of=None):
356+
_version = self._read_metadata(symbol, as_of=as_of)
357+
handler = self._read_handler(_version, symbol)
358+
if hasattr(handler, "get_info"):
359+
return handler.get_info(self._arctic_lib, _version, symbol)
360+
else:
361+
return """Handler: %s\n\nVersion document:\n%s""" % (handler.__class__.__name__, pprint.pformat(_version))
360362

361363
def _do_read(self, symbol, version, from_version=None, **kwargs):
362364
handler = self._read_handler(version, symbol)
363365
data = handler.read(self._arctic_lib, version, symbol, from_version=from_version, **kwargs)
364366
if data is None:
365367
raise NoDataFoundException("No data found for %s in library %s" % (symbol, self._arctic_lib.get_name()))
366368
return VersionedItem(symbol=symbol, library=self._arctic_lib.get_name(), version=version['version'],
367-
metadata=version.pop('metadata', None), data=data, info=self._get_info(symbol, version=version))
369+
metadata=version.pop('metadata', None), data=data)
368370
_do_read_retry = mongo_retry(_do_read)
369371

370372
@mongo_retry
@@ -390,7 +392,7 @@ def read_metadata(self, symbol, as_of=None, allow_secondary=None):
390392
"""
391393
_version = self._read_metadata(symbol, as_of=as_of, read_preference=self._read_preference(allow_secondary))
392394
return VersionedItem(symbol=symbol, library=self._arctic_lib.get_name(), version=_version['version'],
393-
metadata=_version.pop('metadata', None), data=None, info=self._get_info(symbol, version=_version))
395+
metadata=_version.pop('metadata', None), data=None)
394396

395397
def _read_metadata(self, symbol, as_of=None, read_preference=None):
396398
if read_preference is None:
@@ -460,7 +462,7 @@ def append(self, symbol, data, metadata=None, prune_previous_version=True, upser
460462

461463
if len(data) == 0 and previous_version is not None:
462464
return VersionedItem(symbol=symbol, library=self._arctic_lib.get_name(), version=previous_version,
463-
metadata=version.pop('metadata', None), data=None, info=self._get_info(symbol, version=previous_version))
465+
metadata=version.pop('metadata', None), data=None)
464466

465467
if upsert and previous_version is None:
466468
return self.write(symbol=symbol, data=data, prune_previous_version=prune_previous_version, metadata=metadata)
@@ -511,7 +513,7 @@ def append(self, symbol, data, metadata=None, prune_previous_version=True, upser
511513
self._prune_previous_versions(symbol)
512514

513515
return VersionedItem(symbol=symbol, library=self._arctic_lib.get_name(), version=version['version'],
514-
metadata=version.pop('metadata', None), data=None, info=self._get_info(symbol, version=version))
516+
metadata=version.pop('metadata', None), data=None)
515517

516518
def _publish_change(self, symbol, version):
517519
if self._publish_changes:
@@ -569,7 +571,7 @@ def write(self, symbol, data, metadata=None, prune_previous_version=True, **kwar
569571
self._publish_change(symbol, version)
570572

571573
return VersionedItem(symbol=symbol, library=self._arctic_lib.get_name(), version=version['version'],
572-
metadata=version.pop('metadata', None), data=None, info=self._get_info(symbol, version=version))
574+
metadata=version.pop('metadata', None), data=None)
573575

574576
def _prune_previous_versions(self, symbol, keep_mins=120):
575577
"""

arctic/store/versioned_item.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
from collections import namedtuple
22

33

4-
class VersionedItem(namedtuple('VersionedItem', ['symbol', 'library', 'data', 'version', 'metadata', 'info'])):
4+
class VersionedItem(namedtuple('VersionedItem', ['symbol', 'library', 'data', 'version', 'metadata'])):
55
"""
66
Class representing a Versioned object in VersionStore.
77
"""
88
def metadata_dict(self):
9-
return {'symbol': self.symbol, 'library': self.library, 'version': self.version,
10-
'info': self.info}
9+
return {'symbol': self.symbol, 'library': self.library, 'version': self.version}
1110

1211
def __repr__(self):
1312
return str(self)
1413

1514
def __str__(self):
16-
return "VersionedItem(symbol=%s,library=%s,data=%s,version=%s,metadata=%s,info=%s" % \
17-
(self.symbol, self.library, type(self.data), self.version, self.metadata, self.info)
15+
return "VersionedItem(symbol=%s,library=%s,data=%s,version=%s,metadata=%s" % \
16+
(self.symbol, self.library, type(self.data), self.version, self.metadata)
1817

1918

2019
ChangedItem = namedtuple('ChangedItem', ['symbol', 'orig_version', 'new_version', 'changes'])

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def run_tests(self):
7575

7676
setup(
7777
name="arctic",
78-
version="1.14",
78+
version="1.14.0",
7979
author="Man AHL Technology",
8080
author_email="[email protected]",
8181
description=("AHL Research Versioned TimeSeries and Tick store"),

tests/integration/store/test_ndarray_store.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def test_save_read_big_2darray(library):
7979
def test_get_info_bson_object(library):
8080
ndarr = np.ones(1000)
8181
library.write('MYARR', ndarr)
82-
assert library._get_info('MYARR')['handler'] == 'NdarrayStore'
82+
assert library._get_info('MYARR').startswith('''Handler: NdarrayStore''')
8383

8484

8585
def test_save_read_ndarray_with_array_field(library):

tests/integration/store/test_pandas_store.py

+1-23
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import itertools
1010
from mock import Mock, patch
1111
import string
12-
from numpy import dtype as dtype
1312

1413
from arctic.date import DateRange, mktz
1514
from arctic._compression import decompress
@@ -212,6 +211,7 @@ def test_append_pandas_dataframe(library):
212211
def test_empty_dataframe_multindex(library):
213212
df = DataFrame({'a': [], 'b': [], 'c': []})
214213
df = df.groupby(['a', 'b']).sum()
214+
print df
215215
library.write('pandas', df)
216216
saved_df = library.read('pandas').data
217217
assert np.all(df.values == saved_df.values)
@@ -797,25 +797,3 @@ def test_daterange_fails_with_timezone_start(library):
797797
with pytest.raises(ValueError):
798798
library.read('MYARR', date_range=DateRange(start=dt(2015, 1, 1, tzinfo=mktz())))
799799

800-
def test_data_info_series(library):
801-
s = Series(data=[1, 2, 3], index=[4, 5, 6])
802-
library.write('pandas', s)
803-
md = library.read('pandas').info
804-
assert md == library.read_metadata('pandas').info
805-
assert md == {'dtype': dtype([('index', '<i8'), ('values', '<i8')]), 'length': 3, 'handler': 'PandasSeriesStore', 'est_size': 48, 'col_names': {u'index': [u'index'], u'columns': [u'values']}, 'n_segments': 1, 'type': u'pandasseries'}
806-
807-
808-
def test_data_info_df(library):
809-
s = DataFrame(data=[1, 2, 3], index=[4, 5, 6])
810-
library.write('pandas', s)
811-
md = library.read('pandas').info
812-
assert md == library.read_metadata('pandas').info
813-
assert md == {'dtype': dtype([('index', '<i8'), ('0', '<i8')]), 'length': 3, 'handler': 'PandasDataFrameStore', 'est_size': 48, 'col_names': {u'index': [u'index'], u'columns': [u'0']}, 'n_segments': 1, 'type': u'pandasdf'}
814-
815-
816-
def test_data_info_cols(library):
817-
i = MultiIndex.from_tuples([(1, "ab"), (2, "bb"), (3, "cb")])
818-
s = DataFrame(data=[100, 200, 300], index=i)
819-
library.write('test_data', s)
820-
md = library.read_metadata('test_data').info
821-
assert md == {'dtype': dtype([('level_0', '<i8'), ('level_1', 'S2'), ('0', '<i8')]), 'length': 3, 'handler': 'PandasDataFrameStore', 'est_size': 54, 'col_names': {u'index': [u'level_0', u'level_1'], u'columns': [u'0']}, 'n_segments': 1, 'type': u'pandasdf'}

tests/integration/store/test_pickle_store.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def test_save_read_bson_object(library):
3131
def test_get_info_bson_object(library):
3232
blob = {'foo': dt(2015, 1, 1), 'object': Arctic}
3333
library.write('BLOB', blob)
34-
assert library._get_info('BLOB')['handler'] == 'PickleStore'
34+
assert library._get_info('BLOB').startswith('Handler: PickleStore')
3535

3636

3737
def test_bson_large_object(library):

tests/unit/store/test_version_item.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ def test_versioned_item_str():
88
library="ONEMINUTE",
99
data=pd.DataFrame(),
1010
version=1.0,
11-
metadata={'metadata': 'foo'},
12-
info=None)
11+
metadata={'metadata': 'foo'})
1312

1413
expected = "VersionedItem(symbol=sym,library=ONEMINUTE," + \
15-
"data=<class 'pandas.core.frame.DataFrame'>,version=1.0,metadata={'metadata': 'foo'},info=None"
14+
"data=<class 'pandas.core.frame.DataFrame'>,version=1.0,metadata={'metadata': 'foo'}"
1615
assert str(item) == expected
1716
assert repr(item) == expected
1817

@@ -22,7 +21,6 @@ def test_versioned_item_str_handles_none():
2221
library=None,
2322
data=None,
2423
version=None,
25-
metadata=None,
26-
info=None)
24+
metadata=None)
2725

2826
assert str(item)

0 commit comments

Comments
 (0)