@@ -3185,7 +3185,6 @@ def __init__(self, *args, **kwargs):
3185
3185
self .metadata = []
3186
3186
self .info = dict ()
3187
3187
self .nan_rep = None
3188
- self .selection = None
3189
3188
3190
3189
@property
3191
3190
def table_type_short (self ) -> str :
@@ -3568,8 +3567,8 @@ def read_axes(self, where, **kwargs) -> bool:
3568
3567
return False
3569
3568
3570
3569
# create the selection
3571
- self . selection = Selection (self , where = where , ** kwargs )
3572
- values = self . selection .select ()
3570
+ selection = Selection (self , where = where , ** kwargs )
3571
+ values = selection .select ()
3573
3572
3574
3573
# convert the data
3575
3574
for a in self .axes :
@@ -3857,7 +3856,7 @@ def get_blk_items(mgr, blocks):
3857
3856
if validate :
3858
3857
self .validate (existing_table )
3859
3858
3860
- def process_axes (self , obj , columns = None ):
3859
+ def process_axes (self , obj , selection : "Selection" , columns = None ):
3861
3860
""" process axes filters """
3862
3861
3863
3862
# make a copy to avoid side effects
@@ -3866,6 +3865,7 @@ def process_axes(self, obj, columns=None):
3866
3865
3867
3866
# make sure to include levels if we have them
3868
3867
if columns is not None and self .is_multi_index :
3868
+ assert isinstance (self .levels , list ) # assured by is_multi_index
3869
3869
for n in self .levels :
3870
3870
if n not in columns :
3871
3871
columns .insert (0 , n )
@@ -3875,8 +3875,8 @@ def process_axes(self, obj, columns=None):
3875
3875
obj = _reindex_axis (obj , axis , labels , columns )
3876
3876
3877
3877
# apply the selection filters (but keep in the same order)
3878
- if self . selection .filter is not None :
3879
- for field , op , filt in self . selection .filter .format ():
3878
+ if selection .filter is not None :
3879
+ for field , op , filt in selection .filter .format ():
3880
3880
3881
3881
def process_filter (field , filt ):
3882
3882
@@ -3966,10 +3966,10 @@ def read_coordinates(
3966
3966
return False
3967
3967
3968
3968
# create the selection
3969
- self . selection = Selection (self , where = where , start = start , stop = stop )
3970
- coords = self . selection .select_coords ()
3971
- if self . selection .filter is not None :
3972
- for field , op , filt in self . selection .filter .format ():
3969
+ selection = Selection (self , where = where , start = start , stop = stop )
3970
+ coords = selection .select_coords ()
3971
+ if selection .filter is not None :
3972
+ for field , op , filt in selection .filter .format ():
3973
3973
data = self .read_column (
3974
3974
field , start = coords .min (), stop = coords .max () + 1
3975
3975
)
@@ -4245,8 +4245,8 @@ def delete(
4245
4245
4246
4246
# create the selection
4247
4247
table = self .table
4248
- self . selection = Selection (self , where , start = start , stop = stop )
4249
- values = self . selection .select_coords ()
4248
+ selection = Selection (self , where , start = start , stop = stop )
4249
+ values = selection .select_coords ()
4250
4250
4251
4251
# delete the rows in reverse order
4252
4252
sorted_series = Series (values ).sort_values ()
@@ -4349,8 +4349,9 @@ def read(self, where=None, columns=None, **kwargs):
4349
4349
else :
4350
4350
df = concat (frames , axis = 1 )
4351
4351
4352
+ selection = Selection (self , where = where , ** kwargs )
4352
4353
# apply the selection filters & axis orderings
4353
- df = self .process_axes (df , columns = columns )
4354
+ df = self .process_axes (df , selection = selection , columns = columns )
4354
4355
4355
4356
return df
4356
4357
0 commit comments