Skip to content

Commit 143985a

Browse files
committed
wip
1 parent 11de0d2 commit 143985a

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

pandas/io/pytables.py

+28-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
import itertools
1212
import warnings
1313
import os
14-
14+
from six import string_types
15+
from tables.exceptions import NoSuchNodeError
1516
import numpy as np
1617
from pandas import (Series, TimeSeries, DataFrame, Panel, Panel4D, Index,
1718
MultiIndex, Int64Index, Timestamp)
@@ -1478,6 +1479,7 @@ def infer(self, handler):
14781479
"""infer this column from the table: create and return a new object"""
14791480
table = handler.table
14801481
new_self = self.copy()
1482+
new_self._handle = handler._handle
14811483
new_self.set_table(table)
14821484
new_self.get_attr()
14831485
new_self.read_metadata(handler)
@@ -1557,6 +1559,7 @@ def validate_names(self):
15571559
pass
15581560

15591561
def validate_and_set(self, handler, append, **kwargs):
1562+
self._handle = handler._handle
15601563
self.set_table(handler.table)
15611564
self.validate_col()
15621565
self.validate_attr(append)
@@ -2094,14 +2097,22 @@ def convert(self, values, nan_rep, encoding):
20942097
def get_attr(self):
20952098
""" get the data for this colummn """
20962099
self.values = getattr(self.attrs, self.kind_attr, None)
2100+
if self.values is None:
2101+
try:
2102+
self.values = self._handle.get_node(self.attrs._v_node._v_parent,
2103+
self.kind_attr)[:].tolist()
2104+
except NoSuchNodeError:
2105+
pass
20972106
self.dtype = getattr(self.attrs, self.dtype_attr, None)
20982107
self.meta = getattr(self.attrs, self.meta_attr, None)
20992108
self.set_kind()
21002109

21012110
def set_attr(self):
21022111
""" set the data for this colummn """
2103-
import pdb;pdb.set_trace()
2104-
setattr(self.attrs, self.kind_attr, self.values)
2112+
#setattr(self.attrs, self.kind_attr, self.values)
2113+
self._handle.create_carray(self.attrs._v_node._v_parent,
2114+
self.kind_attr,
2115+
obj=np.array(self.values))
21052116
setattr(self.attrs, self.meta_attr, self.meta)
21062117
if self.dtype is not None:
21072118
setattr(self.attrs, self.dtype_attr, self.dtype)
@@ -3063,9 +3074,21 @@ def set_info(self):
30633074
self.attrs.info = self.info
30643075

30653076
def set_non_index_axes(self):
3077+
replacement = []
30663078
for dim, flds in self.non_index_axes:
30673079
name = "non_index_axes_%d" % dim
3068-
self._handle.create_carray(self.attrs._v_node._v_pathname, name, obj=np.array(flds))
3080+
self._handle.create_carray(self.attrs._v_node, name, obj=np.array(flds))
3081+
replacement.append((dim, name))
3082+
self.attrs.non_index_axes = replacement
3083+
3084+
def get_non_index_axes(self):
3085+
non_index_axes = getattr(self.attrs, 'non_index_axes', [])
3086+
new = []
3087+
for dim, flds in non_index_axes:
3088+
if isinstance(flds, string_types):
3089+
flds = self._handle.get_node(self.attrs._v_node, flds)[:].tolist()
3090+
new.append((dim, flds))
3091+
return new
30693092

30703093
def set_attrs(self):
30713094
""" set our table type & indexables """
@@ -3084,8 +3107,7 @@ def set_attrs(self):
30843107

30853108
def get_attrs(self):
30863109
""" retrieve our attributes """
3087-
self.non_index_axes = getattr(
3088-
self.attrs, 'non_index_axes', None) or []
3110+
self.non_index_axes = self.get_non_index_axes()
30893111
self.data_columns = getattr(
30903112
self.attrs, 'data_columns', None) or []
30913113
self.info = getattr(

0 commit comments

Comments
 (0)