88
99
1010class Table :
11- def __init__ (self , columns , rows = None , column_range = None ):
11+ def __init__ (
12+ self ,
13+ columns : t .Iterable ,
14+ rows : t .Optional [t .List ] = None ,
15+ column_range : t .Optional [range ] = None ,
16+ ) -> None :
1217 self .columns = tuple (columns )
1318 self .column_range = column_range
1419 self .reader = RowReader (self .columns , self .column_range )
@@ -25,31 +30,31 @@ def add_columns(self, *columns: str) -> None:
2530 )
2631 self .reader = RowReader (self .columns , self .column_range )
2732
28- def append (self , row ) :
33+ def append (self , row : t . List ) -> None :
2934 assert len (row ) == len (self .columns )
3035 self .rows .append (row )
3136
32- def pop (self ):
37+ def pop (self ) -> None :
3338 self .rows .pop ()
3439
35- def to_pylist (self ):
40+ def to_pylist (self ) -> t . List :
3641 return [dict (zip (self .columns , row )) for row in self .rows ]
3742
3843 @property
39- def width (self ):
44+ def width (self ) -> int :
4045 return len (self .columns )
4146
42- def __len__ (self ):
47+ def __len__ (self ) -> int :
4348 return len (self .rows )
4449
45- def __iter__ (self ):
50+ def __iter__ (self ) -> TableIter :
4651 return TableIter (self )
4752
48- def __getitem__ (self , index ) :
53+ def __getitem__ (self , index : int ) -> RowReader :
4954 self .reader .row = self .rows [index ]
5055 return self .reader
5156
52- def __repr__ (self ):
57+ def __repr__ (self ) -> str :
5358 columns = tuple (
5459 column
5560 for i , column in enumerate (self .columns )
@@ -71,29 +76,29 @@ def __repr__(self):
7176
7277
7378class TableIter :
74- def __init__ (self , table ) :
79+ def __init__ (self , table : Table ) -> None :
7580 self .table = table
7681 self .index = - 1
7782
78- def __iter__ (self ):
83+ def __iter__ (self ) -> TableIter :
7984 return self
8085
81- def __next__ (self ):
86+ def __next__ (self ) -> RowReader :
8287 self .index += 1
8388 if self .index < len (self .table ):
8489 return self .table [self .index ]
8590 raise StopIteration
8691
8792
8893class RangeReader :
89- def __init__ (self , table ) :
94+ def __init__ (self , table : Table ) -> None :
9095 self .table = table
9196 self .range = range (0 )
9297
93- def __len__ (self ):
98+ def __len__ (self ) -> int :
9499 return len (self .range )
95100
96- def __getitem__ (self , column ):
101+ def __getitem__ (self , column : str ):
97102 return (self .table [i ][column ] for i in self .range )
98103
99104
0 commit comments