@@ -2334,26 +2334,14 @@ def set_kind(self):
2334
2334
if self .typ is None :
2335
2335
self .typ = getattr (self .description , self .cname , None )
2336
2336
2337
- def set_atom (self , block , data_converted , use_str : bool ):
2337
+ def set_atom (self , block ):
2338
2338
""" create and setup my atom from the block b """
2339
2339
2340
2340
# short-cut certain block types
2341
2341
if block .is_categorical :
2342
2342
self .set_atom_categorical (block )
2343
2343
elif block .is_datetimetz :
2344
2344
self .set_atom_datetime64tz (block )
2345
- elif block .is_datetime :
2346
- self .set_atom_datetime64 (block )
2347
- elif block .is_timedelta :
2348
- self .set_atom_timedelta64 (block )
2349
- elif block .is_complex :
2350
- self .set_atom_complex (block )
2351
-
2352
- elif use_str :
2353
- self .set_atom_string (data_converted )
2354
- else :
2355
- # set as a data block
2356
- self .set_atom_data (block )
2357
2345
2358
2346
@classmethod
2359
2347
def _get_atom (cls , values : Union [np .ndarray , ABCExtensionArray ]) -> "Col" :
@@ -2391,10 +2379,6 @@ def _get_atom(cls, values: Union[np.ndarray, ABCExtensionArray]) -> "Col":
2391
2379
def get_atom_string (cls , shape , itemsize ):
2392
2380
return _tables ().StringCol (itemsize = itemsize , shape = shape [0 ])
2393
2381
2394
- def set_atom_string (self , data_converted : np .ndarray ):
2395
- self .kind = "string"
2396
- self .set_data (data_converted )
2397
-
2398
2382
@classmethod
2399
2383
def get_atom_coltype (cls , kind : str ) -> Type ["Col" ]:
2400
2384
""" return the PyTables column class for this column """
@@ -2411,60 +2395,35 @@ def get_atom_coltype(cls, kind: str) -> Type["Col"]:
2411
2395
def get_atom_data (cls , shape , kind : str ) -> "Col" :
2412
2396
return cls .get_atom_coltype (kind = kind )(shape = shape [0 ])
2413
2397
2414
- def set_atom_complex (self , block ):
2415
- self .kind = block .dtype .name
2416
- self .set_data (block .values )
2417
-
2418
- def set_atom_data (self , block ):
2419
- self .kind = block .dtype .name
2420
- self .set_data (block .values )
2421
-
2422
2398
def set_atom_categorical (self , block ):
2423
2399
# currently only supports a 1-D categorical
2424
2400
# in a 1-D block
2425
2401
2426
2402
values = block .values
2427
- codes = values .codes
2428
2403
2429
2404
if values .ndim > 1 :
2430
2405
raise NotImplementedError ("only support 1-d categoricals" )
2431
2406
2432
- assert codes .dtype .name .startswith ("int" ), codes .dtype .name
2433
-
2434
2407
# write the codes; must be in a block shape
2435
2408
self .ordered = values .ordered
2436
- self .set_data (block .values )
2437
2409
2438
2410
# write the categories
2439
2411
self .meta = "category"
2440
- self .metadata = np .array (block .values .categories , copy = False ).ravel ()
2441
- assert self .kind == "integer" , self .kind
2442
- assert self .dtype == codes .dtype .name , codes .dtype .name
2412
+ self .metadata = np .array (values .categories , copy = False ).ravel ()
2443
2413
2444
2414
@classmethod
2445
2415
def get_atom_datetime64 (cls , shape ):
2446
2416
return _tables ().Int64Col (shape = shape [0 ])
2447
2417
2448
- def set_atom_datetime64 (self , block ):
2449
- self .kind = "datetime64"
2450
- self .set_data (block .values )
2451
-
2452
2418
def set_atom_datetime64tz (self , block ):
2453
2419
2454
2420
# store a converted timezone
2455
2421
self .tz = _get_tz (block .values .tz )
2456
2422
2457
- self .kind = "datetime64"
2458
- self .set_data (block .values )
2459
-
2460
2423
@classmethod
2461
2424
def get_atom_timedelta64 (cls , shape ):
2462
2425
return _tables ().Int64Col (shape = shape [0 ])
2463
2426
2464
- def set_atom_timedelta64 (self , block ):
2465
- self .kind = "timedelta64"
2466
- self .set_data (block .values )
2467
-
2468
2427
@property
2469
2428
def shape (self ):
2470
2429
return getattr (self .data , "shape" , None )
@@ -3946,7 +3905,7 @@ def get_blk_items(mgr, blocks):
3946
3905
existing_col = None
3947
3906
3948
3907
new_name = name or f"values_block_{ i } "
3949
- data_converted , use_str = _maybe_convert_for_string_atom (
3908
+ data_converted = _maybe_convert_for_string_atom (
3950
3909
new_name ,
3951
3910
b ,
3952
3911
existing_col = existing_col ,
@@ -3961,7 +3920,8 @@ def get_blk_items(mgr, blocks):
3961
3920
col = klass .create_for_block (i = i , name = new_name , version = self .version )
3962
3921
col .values = list (b_items )
3963
3922
col .typ = typ
3964
- col .set_atom (block = b , data_converted = data_converted , use_str = use_str )
3923
+ col .set_atom (block = b )
3924
+ col .set_data (data_converted )
3965
3925
col .update_info (self .info )
3966
3926
col .set_pos (j )
3967
3927
@@ -4830,10 +4790,9 @@ def _unconvert_index(data, kind: str, encoding=None, errors="strict"):
4830
4790
def _maybe_convert_for_string_atom (
4831
4791
name : str , block , existing_col , min_itemsize , nan_rep , encoding , errors
4832
4792
):
4833
- use_str = False
4834
4793
4835
4794
if not block .is_object :
4836
- return block .values , use_str
4795
+ return block .values
4837
4796
4838
4797
dtype_name = block .dtype .name
4839
4798
inferred_type = lib .infer_dtype (block .values , skipna = False )
@@ -4848,9 +4807,7 @@ def _maybe_convert_for_string_atom(
4848
4807
)
4849
4808
4850
4809
elif not (inferred_type == "string" or dtype_name == "object" ):
4851
- return block .values , use_str
4852
-
4853
- use_str = True
4810
+ return block .values
4854
4811
4855
4812
block = block .fillna (nan_rep , downcast = False )
4856
4813
if isinstance (block , list ):
@@ -4893,7 +4850,7 @@ def _maybe_convert_for_string_atom(
4893
4850
itemsize = eci
4894
4851
4895
4852
data_converted = data_converted .astype (f"|S{ itemsize } " , copy = False )
4896
- return data_converted , use_str
4853
+ return data_converted
4897
4854
4898
4855
4899
4856
def _convert_string_array (data , encoding , errors , itemsize = None ):
0 commit comments