Skip to content

Commit 1d774f3

Browse files
author
hugo
committed
fixed some bugs around backwards compatability, and reverted a few of @quasiben's changes
which were necessary due to the bugs - coerce start/stop to ints, sometimes we were passing series of length 1 int there - quoting strings for pandas expressions
1 parent 6d444ee commit 1d774f3

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

arraymanagement/nodes/__init__.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,18 +155,25 @@ def descendants(self, ignore_groups=False):
155155
return descendants
156156

157157
def store_select(pandas_store, key, where=None, **kwargs):
158-
if isinstance(where, list):
158+
159+
if "0.12" not in pd.__version__ and isinstance(where, list):
159160
where = [parse_back_compat(x) for x in where]
161+
# we used to accidentally pass series into start/stop
162+
if 'start' in kwargs:
163+
kwargs['start'] = int(kwargs['start'])
164+
if 'stop' in kwargs:
165+
kwargs['stop'] = int(kwargs['stop'])
160166
return pandas_store.select(key, where=where, **kwargs)
161167

162168
"""From pandas
163169
"""
164-
import warnings
165-
from pandas.computation.pytables import Expr
166-
from pandas.compat import string_types
167-
from datetime import datetime, timedelta
168-
import numpy as np
169170
def parse_back_compat(w, op=None, value=None):
171+
import warnings
172+
from pandas.computation.pytables import Expr
173+
from pandas.compat import string_types
174+
from datetime import datetime, timedelta
175+
import numpy as np
176+
170177
""" allow backward compatibility for passed arguments """
171178

172179
if isinstance(w, dict):
@@ -201,7 +208,7 @@ def parse_back_compat(w, op=None, value=None):
201208

202209
# stringify with quotes these values
203210
def convert(v):
204-
if isinstance(v, (datetime,np.datetime64,timedelta,np.timedelta64)) or hasattr(v, 'timetuple'):
211+
if isinstance(v, (basestring, datetime,np.datetime64,timedelta,np.timedelta64)) or hasattr(v, 'timetuple'):
205212
return "'{0}'".format(str(v))
206213
return v
207214

arraymanagement/nodes/sqlcaching.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,9 @@ def _single_select(self, **kwargs):
272272
self.cache_data(query_params)
273273
cache_info = self.cache_info(query_params)
274274
start_row, end_row = cache_info
275+
#convert these series to ints
276+
start_row = start_row[0]
277+
end_row = end_row[0]
275278
if not where:
276279
where = None
277280
result = store_select(self.store, self.localpath,
@@ -371,10 +374,8 @@ def select(self, query_filter, where=None):
371374
cache_info = self.cache_info(query_filter)
372375

373376
start_row, end_row = cache_info
374-
375-
#removed start_row, end_row
376-
result = store_select(self.store, self.localpath, where=where)
377-
# start=start_row, stop=end_row)
377+
result = store_select(self.store, self.localpath, where=where,
378+
start=start_row, stop=end_row)
378379
return result
379380

380381
def cache_query(self, query_filter):
@@ -409,7 +410,7 @@ def cache_info(self, query_filter):
409410
try:
410411
#rewriting where statement for 0.13 pandas style
411412
result = store_select(self.store, 'cache_spec',
412-
where='hashval=="{}"'.format(hashval))
413+
where=[('hashval', hashval)])
413414
except KeyError:
414415
return None
415416
if result is None:

0 commit comments

Comments
 (0)