@@ -2326,7 +2326,7 @@ def set_kind(self):
2326
2326
if self .typ is None :
2327
2327
self .typ = getattr (self .description , self .cname , None )
2328
2328
2329
- def set_atom (self , block , itemsize : int , data_converted , use_str : bool ):
2329
+ def set_atom (self , block , data_converted , use_str : bool ):
2330
2330
""" create and setup my atom from the block b """
2331
2331
2332
2332
# short-cut certain block types
@@ -2342,18 +2342,19 @@ def set_atom(self, block, itemsize: int, data_converted, use_str: bool):
2342
2342
self .set_atom_complex (block )
2343
2343
2344
2344
elif use_str :
2345
- self .set_atom_string (itemsize , data_converted )
2345
+ self .set_atom_string (data_converted )
2346
2346
else :
2347
2347
# set as a data block
2348
2348
self .set_atom_data (block )
2349
2349
2350
2350
def get_atom_string (self , shape , itemsize ):
2351
2351
return _tables ().StringCol (itemsize = itemsize , shape = shape [0 ])
2352
2352
2353
- def set_atom_string (self , itemsize : int , data_converted : np .ndarray ):
2353
+ def set_atom_string (self , data_converted : np .ndarray ):
2354
+ itemsize = data_converted .dtype .itemsize
2354
2355
self .kind = "string"
2355
2356
self .typ = self .get_atom_string (data_converted .shape , itemsize )
2356
- self .set_data (data_converted . astype ( f"|S { itemsize } " , copy = False ) )
2357
+ self .set_data (data_converted )
2357
2358
2358
2359
def get_atom_coltype (self , kind = None ):
2359
2360
""" return the PyTables column class for this column """
@@ -3904,7 +3905,7 @@ def get_blk_items(mgr, blocks):
3904
3905
existing_col = None
3905
3906
3906
3907
new_name = name or f"values_block_{ i } "
3907
- itemsize , data_converted , use_str = _maybe_convert_for_string_atom (
3908
+ data_converted , use_str = _maybe_convert_for_string_atom (
3908
3909
new_name ,
3909
3910
b ,
3910
3911
existing_col = existing_col ,
@@ -3916,12 +3917,7 @@ def get_blk_items(mgr, blocks):
3916
3917
3917
3918
col = klass .create_for_block (i = i , name = new_name , version = self .version )
3918
3919
col .values = list (b_items )
3919
- col .set_atom (
3920
- block = b ,
3921
- itemsize = itemsize ,
3922
- data_converted = data_converted ,
3923
- use_str = use_str ,
3924
- )
3920
+ col .set_atom (block = b , data_converted = data_converted , use_str = use_str )
3925
3921
col .update_info (self .info )
3926
3922
col .set_pos (j )
3927
3923
@@ -4793,7 +4789,7 @@ def _maybe_convert_for_string_atom(
4793
4789
use_str = False
4794
4790
4795
4791
if not block .is_object :
4796
- return block .dtype . itemsize , block . values , use_str
4792
+ return block .values , use_str
4797
4793
4798
4794
dtype_name = block .dtype .name
4799
4795
inferred_type = lib .infer_dtype (block .values , skipna = False )
@@ -4808,7 +4804,7 @@ def _maybe_convert_for_string_atom(
4808
4804
)
4809
4805
4810
4806
elif not (inferred_type == "string" or dtype_name == "object" ):
4811
- return block .dtype . itemsize , block . values , use_str
4807
+ return block .values , use_str
4812
4808
4813
4809
use_str = True
4814
4810
@@ -4852,7 +4848,8 @@ def _maybe_convert_for_string_atom(
4852
4848
if eci > itemsize :
4853
4849
itemsize = eci
4854
4850
4855
- return itemsize , data_converted , use_str
4851
+ data_converted = data_converted .astype (f"|S{ itemsize } " , copy = False )
4852
+ return data_converted , use_str
4856
4853
4857
4854
4858
4855
def _convert_string_array (data , encoding , errors , itemsize = None ):
0 commit comments