@@ -50,7 +50,7 @@ class AttributeConflictWarning(Warning): pass
50
50
class PerformanceWarning (Warning ): pass
51
51
performance_doc = """
52
52
your performance may suffer as PyTables will pickle object types that it cannot map
53
- directly to c-types [inferred_type->%s,key->%s]
53
+ directly to c-types [inferred_type->%s,key->%s] [items->%s]
54
54
"""
55
55
56
56
# map object types
@@ -1861,7 +1861,7 @@ def write_array_empty(self, key, value):
1861
1861
getattr (self .group , key )._v_attrs .value_type = str (value .dtype )
1862
1862
getattr (self .group , key )._v_attrs .shape = value .shape
1863
1863
1864
- def write_array (self , key , value ):
1864
+ def write_array (self , key , value , items = None ):
1865
1865
if key in self .group :
1866
1866
self ._handle .removeNode (self .group , key )
1867
1867
@@ -1904,7 +1904,11 @@ def write_array(self, key, value):
1904
1904
elif inferred_type == 'string' :
1905
1905
pass
1906
1906
else :
1907
- ws = performance_doc % (inferred_type ,key )
1907
+ try :
1908
+ items = list (items )
1909
+ except :
1910
+ pass
1911
+ ws = performance_doc % (inferred_type ,key ,items )
1908
1912
warnings .warn (ws , PerformanceWarning )
1909
1913
1910
1914
vlarr = self ._handle .createVLArray (self .group , key ,
@@ -2115,7 +2119,7 @@ def write(self, obj, **kwargs):
2115
2119
for i in range (nblocks ):
2116
2120
blk = data .blocks [i ]
2117
2121
# I have no idea why, but writing values before items fixed #2299
2118
- self .write_array ('block%d_values' % i , blk .values )
2122
+ self .write_array ('block%d_values' % i , blk .values , items = blk . items )
2119
2123
self .write_index ('block%d_items' % i , blk .items )
2120
2124
2121
2125
class FrameStorer (BlockManagerStorer ):
0 commit comments