@@ -1919,6 +1919,10 @@ def set_version(self):
1919
1919
def pandas_type (self ):
1920
1920
return _ensure_decoded (getattr (self .group ._v_attrs , 'pandas_type' , None ))
1921
1921
1922
+ @property
1923
+ def format_type (self ):
1924
+ return 'fixed'
1925
+
1922
1926
def __unicode__ (self ):
1923
1927
""" return a pretty representation of myself """
1924
1928
self .infer_axes ()
@@ -2146,7 +2150,8 @@ def write_index(self, key, index):
2146
2150
self .write_sparse_intindex (key , index )
2147
2151
else :
2148
2152
setattr (self .attrs , '%s_variety' % key , 'regular' )
2149
- converted = _convert_index (index , self .encoding ).set_name ('index' )
2153
+ converted = _convert_index (index , self .encoding ,
2154
+ self .format_type ).set_name ('index' )
2150
2155
self .write_array (key , converted .values )
2151
2156
node = getattr (self .group , key )
2152
2157
node ._v_attrs .kind = converted .kind
@@ -2192,7 +2197,8 @@ def write_multi_index(self, key, index):
2192
2197
index .names )):
2193
2198
# write the level
2194
2199
level_key = '%s_level%d' % (key , i )
2195
- conv_level = _convert_index (lev , self .encoding ).set_name (level_key )
2200
+ conv_level = _convert_index (lev , self .encoding ,
2201
+ self .format_type ).set_name (level_key )
2196
2202
self .write_array (level_key , conv_level .values )
2197
2203
node = getattr (self .group , level_key )
2198
2204
node ._v_attrs .kind = conv_level .kind
@@ -2609,6 +2615,10 @@ def __init__(self, *args, **kwargs):
2609
2615
def table_type_short (self ):
2610
2616
return self .table_type .split ('_' )[0 ]
2611
2617
2618
+ @property
2619
+ def format_type (self ):
2620
+ return 'table'
2621
+
2612
2622
def __unicode__ (self ):
2613
2623
""" return a pretty representatgion of myself """
2614
2624
self .infer_axes ()
@@ -2991,7 +3001,7 @@ def create_axes(self, axes, obj, validate=True, nan_rep=None,
2991
3001
if i in axes :
2992
3002
name = obj ._AXIS_NAMES [i ]
2993
3003
index_axes_map [i ] = _convert_index (
2994
- a , self .encoding ).set_name (name ).set_axis (i )
3004
+ a , self .encoding , self . format_type ).set_name (name ).set_axis (i )
2995
3005
else :
2996
3006
2997
3007
# we might be able to change the axes on the appending data if
@@ -3823,7 +3833,7 @@ def _get_info(info, name):
3823
3833
idx = info [name ] = dict ()
3824
3834
return idx
3825
3835
3826
- def _convert_index (index , encoding = None ):
3836
+ def _convert_index (index , encoding = None , format_type = None ):
3827
3837
index_name = getattr (index , 'name' , None )
3828
3838
3829
3839
if isinstance (index , DatetimeIndex ):
@@ -3870,9 +3880,13 @@ def _convert_index(index, encoding=None):
3870
3880
converted , 'string' , _tables ().StringCol (itemsize ), itemsize = itemsize ,
3871
3881
index_name = index_name )
3872
3882
elif inferred_type == 'unicode' :
3873
- atom = _tables ().ObjectAtom ()
3874
- return IndexCol (np .asarray (values , dtype = 'O' ), 'object' , atom ,
3875
- index_name = index_name )
3883
+ if format_type == 'fixed' :
3884
+ atom = _tables ().ObjectAtom ()
3885
+ return IndexCol (np .asarray (values , dtype = 'O' ), 'object' , atom ,
3886
+ index_name = index_name )
3887
+ raise TypeError (
3888
+ "[unicode] is not supported as a in index type for [{0}] formats" .format (format_type ))
3889
+
3876
3890
elif inferred_type == 'integer' :
3877
3891
# take a guess for now, hope the values fit
3878
3892
atom = _tables ().Int64Col ()
0 commit comments