Skip to content

Commit 5c36aa1

Browse files
jbrockmendelWillAyd
authored andcommitted
TYPES: __len__, is_all_dates, inferred_type (#29475)
1 parent f4098c3 commit 5c36aa1

25 files changed

+42
-40
lines changed

pandas/_libs/hashtable_class_helper.pxi.in

+5-5
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ cdef class {{name}}Vector:
100100
PyMem_Free(self.data)
101101
self.data = NULL
102102

103-
def __len__(self):
103+
def __len__(self) -> int:
104104
return self.data.n
105105

106106
cpdef to_array(self):
@@ -168,7 +168,7 @@ cdef class StringVector:
168168
PyMem_Free(self.data)
169169
self.data = NULL
170170

171-
def __len__(self):
171+
def __len__(self) -> int:
172172
return self.data.n
173173

174174
def to_array(self):
@@ -212,7 +212,7 @@ cdef class ObjectVector:
212212
self.ao = np.empty(_INIT_VEC_CAP, dtype=object)
213213
self.data = <PyObject**>self.ao.data
214214

215-
def __len__(self):
215+
def __len__(self) -> int:
216216
return self.n
217217

218218
cdef inline append(self, object obj):
@@ -270,7 +270,7 @@ cdef class {{name}}HashTable(HashTable):
270270
size_hint = min(size_hint, _SIZE_HINT_LIMIT)
271271
kh_resize_{{dtype}}(self.table, size_hint)
272272

273-
def __len__(self):
273+
def __len__(self) -> int:
274274
return self.table.size
275275

276276
def __dealloc__(self):
@@ -897,7 +897,7 @@ cdef class PyObjectHashTable(HashTable):
897897
kh_destroy_pymap(self.table)
898898
self.table = NULL
899899

900-
def __len__(self):
900+
def __len__(self) -> int:
901901
return self.table.size
902902

903903
def __contains__(self, object key):

pandas/_libs/internals.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ cdef class BlockPlacement:
6666
def __repr__(self) -> str:
6767
return str(self)
6868

69-
def __len__(self):
69+
def __len__(self) -> int:
7070
cdef:
7171
slice s = self._ensure_has_slice()
7272
if s is not None:

pandas/core/arrays/categorical.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1940,7 +1940,7 @@ def take_nd(self, indexer, allow_fill=None, fill_value=None):
19401940

19411941
take = take_nd
19421942

1943-
def __len__(self):
1943+
def __len__(self) -> int:
19441944
"""
19451945
The length of this Categorical.
19461946
"""

pandas/core/arrays/datetimelike.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ def size(self) -> int:
396396
"""The number of elements in this array."""
397397
return np.prod(self.shape)
398398

399-
def __len__(self):
399+
def __len__(self) -> int:
400400
return len(self._data)
401401

402402
def __getitem__(self, key):

pandas/core/arrays/integer.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ def __setitem__(self, key, value):
469469
self._data[key] = value
470470
self._mask[key] = mask
471471

472-
def __len__(self):
472+
def __len__(self) -> int:
473473
return len(self._data)
474474

475475
@property

pandas/core/arrays/interval.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ def _validate(self):
489489
def __iter__(self):
490490
return iter(np.asarray(self))
491491

492-
def __len__(self):
492+
def __len__(self) -> int:
493493
return len(self.left)
494494

495495
def __getitem__(self, value):

pandas/core/computation/expr.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -837,7 +837,7 @@ def __call__(self):
837837
def __repr__(self) -> str:
838838
return printing.pprint_thing(self.terms)
839839

840-
def __len__(self):
840+
def __len__(self) -> int:
841841
return len(self.expr)
842842

843843
def parse(self):

pandas/core/frame.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ def itertuples(self, index=True, name="Pandas"):
10231023
# fallback to regular tuples
10241024
return zip(*arrays)
10251025

1026-
def __len__(self):
1026+
def __len__(self) -> int:
10271027
"""
10281028
Returns length of info axis, but here we use the index.
10291029
"""

pandas/core/generic.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1952,7 +1952,7 @@ def items(self):
19521952
def iteritems(self):
19531953
return self.items()
19541954

1955-
def __len__(self):
1955+
def __len__(self) -> int:
19561956
"""Returns length of info axis"""
19571957
return len(self._info_axis)
19581958

pandas/core/groupby/groupby.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ def __init__(
399399
# we accept no other args
400400
validate_kwargs("group", kwargs, {})
401401

402-
def __len__(self):
402+
def __len__(self) -> int:
403403
return len(self.groups)
404404

405405
def __repr__(self) -> str:

pandas/core/indexes/base.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -649,10 +649,12 @@ def _engine(self):
649649
# Array-Like Methods
650650

651651
# ndarray compat
652-
def __len__(self):
652+
def __len__(self) -> int:
653653
"""
654654
Return the length of the Index.
655655
"""
656+
# Assertion needed for mypy, see GH#29475
657+
assert self._data is not None
656658
return len(self._data)
657659

658660
def __array__(self, dtype=None):
@@ -1807,7 +1809,7 @@ def inferred_type(self):
18071809
return lib.infer_dtype(self, skipna=False)
18081810

18091811
@cache_readonly
1810-
def is_all_dates(self):
1812+
def is_all_dates(self) -> bool:
18111813
return is_datetime_array(ensure_object(self.values))
18121814

18131815
# --------------------------------------------------------------------

pandas/core/indexes/category.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ def _format_attrs(self):
366366
# --------------------------------------------------------------------
367367

368368
@property
369-
def inferred_type(self):
369+
def inferred_type(self) -> str:
370370
return "categorical"
371371

372372
@property

pandas/core/indexes/datetimes.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1235,13 +1235,13 @@ def is_type_compatible(self, typ):
12351235
return typ == self.inferred_type or typ == "datetime"
12361236

12371237
@property
1238-
def inferred_type(self):
1238+
def inferred_type(self) -> str:
12391239
# b/c datetime is represented as microseconds since the epoch, make
12401240
# sure we can't have ambiguous indexing
12411241
return "datetime64"
12421242

12431243
@property
1244-
def is_all_dates(self):
1244+
def is_all_dates(self) -> bool:
12451245
return True
12461246

12471247
def insert(self, loc, item):

pandas/core/indexes/interval.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ def itemsize(self):
468468
warnings.simplefilter("ignore")
469469
return self.left.itemsize + self.right.itemsize
470470

471-
def __len__(self):
471+
def __len__(self) -> int:
472472
return len(self.left)
473473

474474
@cache_readonly
@@ -524,7 +524,7 @@ def dtype(self):
524524
return self._data.dtype
525525

526526
@property
527-
def inferred_type(self):
527+
def inferred_type(self) -> str:
528528
"""Return a string of the type inferred from the values"""
529529
return "interval"
530530

@@ -1357,7 +1357,7 @@ def func(self, other, sort=sort):
13571357
return func
13581358

13591359
@property
1360-
def is_all_dates(self):
1360+
def is_all_dates(self) -> bool:
13611361
"""
13621362
This is False even when left/right contain datetime-like objects,
13631363
as the check is done on the Interval itself

pandas/core/indexes/multi.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1217,7 +1217,7 @@ def format(
12171217

12181218
# --------------------------------------------------------------------
12191219

1220-
def __len__(self):
1220+
def __len__(self) -> int:
12211221
return len(self.codes[0])
12221222

12231223
def _get_names(self):
@@ -1322,7 +1322,7 @@ def _constructor(self):
13221322
return MultiIndex.from_tuples
13231323

13241324
@cache_readonly
1325-
def inferred_type(self):
1325+
def inferred_type(self) -> str:
13261326
return "mixed"
13271327

13281328
def _get_level_number(self, level):
@@ -1791,7 +1791,7 @@ def to_flat_index(self):
17911791
return Index(self.values, tupleize_cols=False)
17921792

17931793
@property
1794-
def is_all_dates(self):
1794+
def is_all_dates(self) -> bool:
17951795
return False
17961796

17971797
def is_lexsorted(self):

pandas/core/indexes/numeric.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ def _concat_same_dtype(self, indexes, name):
134134
return result.rename(name)
135135

136136
@property
137-
def is_all_dates(self):
137+
def is_all_dates(self) -> bool:
138138
"""
139139
Checks that all the labels are datetime objects.
140140
"""
@@ -228,7 +228,7 @@ class Int64Index(IntegerIndex):
228228
_default_dtype = np.int64
229229

230230
@property
231-
def inferred_type(self):
231+
def inferred_type(self) -> str:
232232
"""Always 'integer' for ``Int64Index``"""
233233
return "integer"
234234

@@ -283,7 +283,7 @@ class UInt64Index(IntegerIndex):
283283
_default_dtype = np.uint64
284284

285285
@property
286-
def inferred_type(self):
286+
def inferred_type(self) -> str:
287287
"""Always 'integer' for ``UInt64Index``"""
288288
return "integer"
289289

@@ -356,7 +356,7 @@ class Float64Index(NumericIndex):
356356
_default_dtype = np.float64
357357

358358
@property
359-
def inferred_type(self):
359+
def inferred_type(self) -> str:
360360
"""Always 'floating' for ``Float64Index``"""
361361
return "floating"
362362

pandas/core/indexes/period.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,7 @@ def searchsorted(self, value, side="left", sorter=None):
574574
return self._ndarray_values.searchsorted(value, side=side, sorter=sorter)
575575

576576
@property
577-
def is_all_dates(self):
577+
def is_all_dates(self) -> bool:
578578
return True
579579

580580
@property
@@ -591,7 +591,7 @@ def is_full(self):
591591
return ((values[1:] - values[:-1]) < 2).all()
592592

593593
@property
594-
def inferred_type(self):
594+
def inferred_type(self) -> str:
595595
# b/c data is represented as ints make sure we can't have ambiguous
596596
# indexing
597597
return "period"

pandas/core/indexes/range.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,7 @@ def _concat_same_dtype(self, indexes, name):
698698
# In this case return an empty range index.
699699
return RangeIndex(0, 0).rename(name)
700700

701-
def __len__(self):
701+
def __len__(self) -> int:
702702
"""
703703
return the length of the RangeIndex
704704
"""

pandas/core/indexes/timedeltas.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -602,11 +602,11 @@ def is_type_compatible(self, typ):
602602
return typ == self.inferred_type or typ == "timedelta"
603603

604604
@property
605-
def inferred_type(self):
605+
def inferred_type(self) -> str:
606606
return "timedelta64"
607607

608608
@property
609-
def is_all_dates(self):
609+
def is_all_dates(self) -> bool:
610610
return True
611611

612612
def insert(self, loc, item):

pandas/core/internals/blocks.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ def __repr__(self) -> str:
288288

289289
return result
290290

291-
def __len__(self):
291+
def __len__(self) -> int:
292292
return len(self.values)
293293

294294
def __getstate__(self):

pandas/core/internals/managers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ def _post_setstate(self):
319319
self._known_consolidated = False
320320
self._rebuild_blknos_and_blklocs()
321321

322-
def __len__(self):
322+
def __len__(self) -> int:
323323
return len(self.items)
324324

325325
def __repr__(self) -> str:

pandas/core/series.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ def put(self, *args, **kwargs):
712712
)
713713
self._values.put(*args, **kwargs)
714714

715-
def __len__(self):
715+
def __len__(self) -> int:
716716
"""
717717
Return the length of the Series.
718718
"""

pandas/io/pytables.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ def __contains__(self, key):
540540
return True
541541
return False
542542

543-
def __len__(self):
543+
def __len__(self) -> int:
544544
return len(self.groups())
545545

546546
def __repr__(self) -> str:

pandas/tests/reshape/test_concat.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1879,7 +1879,7 @@ def test_concat_iterables(self):
18791879
tm.assert_frame_equal(concat(deque((df1, df2)), ignore_index=True), expected)
18801880

18811881
class CustomIterator1:
1882-
def __len__(self):
1882+
def __len__(self) -> int:
18831883
return 2
18841884

18851885
def __getitem__(self, index):

scripts/validate_docstrings.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ def __init__(self, name):
250250
self.clean_doc = pydoc.getdoc(obj)
251251
self.doc = NumpyDocString(self.clean_doc)
252252

253-
def __len__(self):
253+
def __len__(self) -> int:
254254
return len(self.raw_doc)
255255

256256
@staticmethod

0 commit comments

Comments
 (0)