8
8
import itertools
9
9
import os
10
10
import re
11
- from typing import TYPE_CHECKING , Any , Dict , List , Optional , Tuple , Type , Union
11
+ from typing import (
12
+ TYPE_CHECKING ,
13
+ Any ,
14
+ Dict ,
15
+ Hashable ,
16
+ List ,
17
+ Optional ,
18
+ Tuple ,
19
+ Type ,
20
+ Union ,
21
+ )
12
22
import warnings
13
23
14
24
import numpy as np
@@ -2781,13 +2791,16 @@ def read_array(
2781
2791
else :
2782
2792
return ret
2783
2793
2784
- def read_index (self , key : str , ** kwargs ) -> Index :
2794
+ def read_index (
2795
+ self , key : str , start : Optional [int ] = None , stop : Optional [int ] = None
2796
+ ) -> Index :
2785
2797
variety = _ensure_decoded (getattr (self .attrs , f"{ key } _variety" ))
2786
2798
2787
2799
if variety == "multi" :
2788
- return self .read_multi_index (key , ** kwargs )
2800
+ return self .read_multi_index (key , start = start , stop = stop )
2789
2801
elif variety == "regular" :
2790
- _ , index = self .read_index_node (getattr (self .group , key ), ** kwargs )
2802
+ node = getattr (self .group , key )
2803
+ _ , index = self .read_index_node (node , start = start , stop = stop )
2791
2804
return index
2792
2805
else : # pragma: no cover
2793
2806
raise TypeError (f"unrecognized index variety: { variety } " )
@@ -2840,20 +2853,23 @@ def write_multi_index(self, key: str, index: MultiIndex):
2840
2853
label_key = f"{ key } _label{ i } "
2841
2854
self .write_array (label_key , level_codes )
2842
2855
2843
- def read_multi_index (self , key : str , ** kwargs ) -> MultiIndex :
2856
+ def read_multi_index (
2857
+ self , key : str , start : Optional [int ] = None , stop : Optional [int ] = None
2858
+ ) -> MultiIndex :
2844
2859
nlevels = getattr (self .attrs , f"{ key } _nlevels" )
2845
2860
2846
2861
levels = []
2847
2862
codes = []
2848
2863
names = []
2849
2864
for i in range (nlevels ):
2850
2865
level_key = f"{ key } _level{ i } "
2851
- name , lev = self .read_index_node (getattr (self .group , level_key ), ** kwargs )
2866
+ node = getattr (self .group , level_key )
2867
+ name , lev = self .read_index_node (node , start = start , stop = stop )
2852
2868
levels .append (lev )
2853
2869
names .append (name )
2854
2870
2855
2871
label_key = f"{ key } _label{ i } "
2856
- level_codes = self .read_array (label_key , ** kwargs )
2872
+ level_codes = self .read_array (label_key , start = start , stop = stop )
2857
2873
codes .append (level_codes )
2858
2874
2859
2875
return MultiIndex (
@@ -3014,17 +3030,25 @@ class SeriesFixed(GenericFixed):
3014
3030
pandas_kind = "series"
3015
3031
attributes = ["name" ]
3016
3032
3033
+ name : Optional [Hashable ]
3034
+
3017
3035
@property
3018
3036
def shape (self ):
3019
3037
try :
3020
3038
return (len (self .group .values ),)
3021
3039
except (TypeError , AttributeError ):
3022
3040
return None
3023
3041
3024
- def read (self , ** kwargs ):
3025
- kwargs = self .validate_read (kwargs )
3026
- index = self .read_index ("index" , ** kwargs )
3027
- values = self .read_array ("values" , ** kwargs )
3042
+ def read (
3043
+ self ,
3044
+ where = None ,
3045
+ columns = None ,
3046
+ start : Optional [int ] = None ,
3047
+ stop : Optional [int ] = None ,
3048
+ ):
3049
+ self .validate_read ({"where" : where , "columns" : columns })
3050
+ index = self .read_index ("index" , start = start , stop = stop )
3051
+ values = self .read_array ("values" , start = start , stop = stop )
3028
3052
return Series (values , index = index , name = self .name )
3029
3053
3030
3054
def write (self , obj , ** kwargs ):
@@ -3038,6 +3062,8 @@ class BlockManagerFixed(GenericFixed):
3038
3062
attributes = ["ndim" , "nblocks" ]
3039
3063
is_shape_reversed = False
3040
3064
3065
+ nblocks : int
3066
+
3041
3067
@property
3042
3068
def shape (self ):
3043
3069
try :
@@ -3069,10 +3095,15 @@ def shape(self):
3069
3095
except AttributeError :
3070
3096
return None
3071
3097
3072
- def read (self , start = None , stop = None , ** kwargs ):
3098
+ def read (
3099
+ self ,
3100
+ where = None ,
3101
+ columns = None ,
3102
+ start : Optional [int ] = None ,
3103
+ stop : Optional [int ] = None ,
3104
+ ):
3073
3105
# start, stop applied to rows, so 0th axis only
3074
-
3075
- kwargs = self .validate_read (kwargs )
3106
+ self .validate_read ({"columns" : columns , "where" : where })
3076
3107
select_axis = self .obj_type ()._get_block_manager_axis (0 )
3077
3108
3078
3109
axes = []
@@ -4360,14 +4391,21 @@ def write(self, obj, data_columns=None, **kwargs):
4360
4391
obj .columns = [name ]
4361
4392
return super ().write (obj = obj , data_columns = obj .columns .tolist (), ** kwargs )
4362
4393
4363
- def read (self , columns = None , ** kwargs ):
4394
+ def read (
4395
+ self ,
4396
+ where = None ,
4397
+ columns = None ,
4398
+ start : Optional [int ] = None ,
4399
+ stop : Optional [int ] = None ,
4400
+ ):
4364
4401
4365
4402
is_multi_index = self .is_multi_index
4366
4403
if columns is not None and is_multi_index :
4404
+ assert isinstance (self .levels , list ) # needed for mypy
4367
4405
for n in self .levels :
4368
4406
if n not in columns :
4369
4407
columns .insert (0 , n )
4370
- s = super ().read (columns = columns , ** kwargs )
4408
+ s = super ().read (where = where , columns = columns , start = start , stop = stop )
4371
4409
if is_multi_index :
4372
4410
s .set_index (self .levels , inplace = True )
4373
4411
@@ -4468,9 +4506,15 @@ def write(self, obj, data_columns=None, **kwargs):
4468
4506
data_columns .insert (0 , n )
4469
4507
return super ().write (obj = obj , data_columns = data_columns , ** kwargs )
4470
4508
4471
- def read (self , ** kwargs ):
4509
+ def read (
4510
+ self ,
4511
+ where = None ,
4512
+ columns = None ,
4513
+ start : Optional [int ] = None ,
4514
+ stop : Optional [int ] = None ,
4515
+ ):
4472
4516
4473
- df = super ().read (** kwargs )
4517
+ df = super ().read (where = where , columns = columns , start = start , stop = stop )
4474
4518
df = df .set_index (self .levels )
4475
4519
4476
4520
# remove names for 'level_%d'
0 commit comments