@@ -70,6 +70,9 @@ def _datetime64_index(self, recarr):
70
70
return name
71
71
return None
72
72
73
+ def read_options (self ):
74
+ return ['date_range' ]
75
+
73
76
def _index_range (self , version , symbol , date_range = None , ** kwargs ):
74
77
""" Given a version, read the segment_index and return the chunks associated
75
78
with the date_range. As the segment index is (id -> last datetime)
@@ -143,8 +146,12 @@ class PandasSeriesStore(PandasStore):
143
146
TYPE = 'pandasseries'
144
147
SERIALIZER = SeriesSerializer ()
145
148
149
+ @staticmethod
150
+ def can_write_type (data ):
151
+ return isinstance (data , Series )
152
+
146
153
def can_write (self , version , symbol , data ):
147
- if isinstance (data , Series ):
154
+ if self . can_write_type (data ):
148
155
if data .dtype == np .object_ or data .index .dtype == np .object_ :
149
156
return self .SERIALIZER .can_convert_to_records_without_objects (data , symbol )
150
157
return True
@@ -158,6 +165,9 @@ def append(self, arctic_lib, version, symbol, item, previous_version, **kwargs):
158
165
item , md = self .SERIALIZER .serialize (item )
159
166
super (PandasSeriesStore , self ).append (arctic_lib , version , symbol , item , previous_version , dtype = md , ** kwargs )
160
167
168
+ def read_options (self ):
169
+ return super (PandasSeriesStore , self ).read_options ()
170
+
161
171
def read (self , arctic_lib , version , symbol , ** kwargs ):
162
172
item = super (PandasSeriesStore , self ).read (arctic_lib , version , symbol , ** kwargs )
163
173
return self .SERIALIZER .deserialize (item )
@@ -167,8 +177,12 @@ class PandasDataFrameStore(PandasStore):
167
177
TYPE = 'pandasdf'
168
178
SERIALIZER = DataFrameSerializer ()
169
179
180
+ @staticmethod
181
+ def can_write_type (data ):
182
+ return isinstance (data , DataFrame )
183
+
170
184
def can_write (self , version , symbol , data ):
171
- if isinstance (data , DataFrame ):
185
+ if self . can_write_type (data ):
172
186
if np .any (data .dtypes .values == 'object' ):
173
187
return self .SERIALIZER .can_convert_to_records_without_objects (data , symbol )
174
188
return True
@@ -186,12 +200,19 @@ def read(self, arctic_lib, version, symbol, **kwargs):
186
200
item = super (PandasDataFrameStore , self ).read (arctic_lib , version , symbol , ** kwargs )
187
201
return self .SERIALIZER .deserialize (item )
188
202
203
+ def read_options (self ):
204
+ return super (PandasDataFrameStore , self ).read_options ()
205
+
189
206
190
207
class PandasPanelStore (PandasDataFrameStore ):
191
208
TYPE = 'pandaspan'
192
209
210
+ @staticmethod
211
+ def can_write_type (data ):
212
+ return isinstance (data , Panel )
213
+
193
214
def can_write (self , version , symbol , data ):
194
- if isinstance (data , Panel ):
215
+ if self . can_write_type (data ):
195
216
frame = data .to_frame (filter_observations = False )
196
217
if np .any (frame .dtypes .values == 'object' ):
197
218
return self .SERIALIZER .can_convert_to_records_without_objects (frame , symbol )
@@ -220,5 +241,8 @@ def read(self, arctic_lib, version, symbol, **kwargs):
220
241
return item .iloc [:, 0 ].unstack ().to_panel ()
221
242
return item .to_panel ()
222
243
244
+ def read_options (self ):
245
+ return super (PandasPanelStore , self ).read_options ()
246
+
223
247
def append (self , arctic_lib , version , symbol , item , previous_version , ** kwargs ):
224
248
raise ValueError ('Appending not supported for pandas.Panel' )
0 commit comments