Skip to content

Commit de423bc

Browse files
jbrockmendelproost
authored andcommitted
REF: pytables remove need for set_atom (pandas-dev#30143)
1 parent 322a39e commit de423bc

File tree

1 file changed

+17
-31
lines changed

1 file changed

+17
-31
lines changed

pandas/io/pytables.py

+17-31
Original file line numberDiff line numberDiff line change
@@ -1895,6 +1895,7 @@ def __init__(
18951895
freq=None,
18961896
tz=None,
18971897
index_name=None,
1898+
ordered=None,
18981899
table=None,
18991900
meta=None,
19001901
metadata=None,
@@ -1913,6 +1914,7 @@ def __init__(
19131914
self.freq = freq
19141915
self.tz = tz
19151916
self.index_name = index_name
1917+
self.ordered = ordered
19161918
self.table = table
19171919
self.meta = meta
19181920
self.metadata = metadata
@@ -2200,6 +2202,8 @@ def __init__(
22002202
typ=None,
22012203
cname=None,
22022204
pos=None,
2205+
tz=None,
2206+
ordered=None,
22032207
table=None,
22042208
meta=None,
22052209
metadata=None,
@@ -2211,6 +2215,8 @@ def __init__(
22112215
typ=typ,
22122216
pos=pos,
22132217
cname=cname,
2218+
tz=tz,
2219+
ordered=ordered,
22142220
table=table,
22152221
meta=meta,
22162222
metadata=metadata,
@@ -2270,15 +2276,6 @@ def take_data(self):
22702276
self.data, data = None, self.data
22712277
return data
22722278

2273-
def set_atom(self, block):
2274-
""" create and setup my atom from the block b """
2275-
2276-
# short-cut certain block types
2277-
if block.is_categorical:
2278-
self.set_atom_categorical(block)
2279-
elif block.is_datetimetz:
2280-
self.set_atom_datetime64tz(block)
2281-
22822279
@classmethod
22832280
def _get_atom(cls, values: Union[np.ndarray, ABCExtensionArray]) -> "Col":
22842281
"""
@@ -2331,31 +2328,10 @@ def get_atom_coltype(cls, kind: str) -> Type["Col"]:
23312328
def get_atom_data(cls, shape, kind: str) -> "Col":
23322329
return cls.get_atom_coltype(kind=kind)(shape=shape[0])
23332330

2334-
def set_atom_categorical(self, block):
2335-
# currently only supports a 1-D categorical
2336-
# in a 1-D block
2337-
2338-
values = block.values
2339-
2340-
if values.ndim > 1:
2341-
raise NotImplementedError("only support 1-d categoricals")
2342-
2343-
# write the codes; must be in a block shape
2344-
self.ordered = values.ordered
2345-
2346-
# write the categories
2347-
self.meta = "category"
2348-
self.metadata = np.array(values.categories, copy=False).ravel()
2349-
23502331
@classmethod
23512332
def get_atom_datetime64(cls, shape):
23522333
return _tables().Int64Col(shape=shape[0])
23532334

2354-
def set_atom_datetime64tz(self, block):
2355-
2356-
# store a converted timezone
2357-
self.tz = _get_tz(block.values.tz)
2358-
23592335
@classmethod
23602336
def get_atom_timedelta64(cls, shape):
23612337
return _tables().Int64Col(shape=shape[0])
@@ -3880,6 +3856,13 @@ def get_blk_items(mgr, blocks):
38803856

38813857
typ = klass._get_atom(data_converted)
38823858
kind = _dtype_to_kind(data_converted.dtype.name)
3859+
tz = _get_tz(data_converted.tz) if hasattr(data_converted, "tz") else None
3860+
3861+
meta = metadata = ordered = None
3862+
if is_categorical_dtype(data_converted):
3863+
ordered = data_converted.ordered
3864+
meta = "category"
3865+
metadata = np.array(data_converted.categories, copy=False).ravel()
38833866

38843867
col = klass(
38853868
name=adj_name,
@@ -3888,8 +3871,11 @@ def get_blk_items(mgr, blocks):
38883871
typ=typ,
38893872
pos=j,
38903873
kind=kind,
3874+
tz=tz,
3875+
ordered=ordered,
3876+
meta=meta,
3877+
metadata=metadata,
38913878
)
3892-
col.set_atom(block=b)
38933879
col.set_data(data_converted)
38943880
col.update_info(self.info)
38953881

0 commit comments

Comments
 (0)