Skip to content

TYP: Missing Return Annotations #47521

Closed
Closed
@twoertwein

Description

@twoertwein

Many functions have no return annotations. Missing return annotations of public functions can easily be identified by running pyright (in an active python environment)

pyright --createstub pandas
grep -R "# -> " typings/pandas/

Many of these cases are easy to annotate (return annotations inferred by pyright are usually correct). When the suggested return annotation includes Any, Unknown, or a Union (|), it is usually more difficult to find a suitable type annotation.

The most difficult part is probably setting the python environment up and installing pyright. After adding new type annotations, delete the folder typings/pandas and run mypy&pyright: pre-commit run --hook-stage manual --all-files (or mypy ; pyright ; pyright --skipunannotated -p pyright_reportGeneralTypeIssues.json)

Note: functions that pyright deems public are not necessarily public https://pandas.pydata.org/docs/reference/index.html

Number of missing return annotations per file

typings/pandas/__init__.pyi:1
typings/pandas/_version.pyi:8
typings/pandas/conftest.pyi:8
typings/pandas/_config/config.pyi:3
typings/pandas/_testing/__init__.pyi:4
typings/pandas/_testing/_io.pyi:2
typings/pandas/_testing/_random.pyi:1
typings/pandas/_testing/_warnings.pyi:2
typings/pandas/_testing/compat.pyi:2
typings/pandas/_testing/contexts.pyi:1
typings/pandas/compat/numpy/function.pyi:7
typings/pandas/compat/_optional.pyi:1
typings/pandas/compat/pickle_compat.pyi:6
typings/pandas/core/arrays/sparse/accessor.pyi:1
typings/pandas/core/arrays/sparse/array.pyi:11
typings/pandas/core/arrays/sparse/dtype.pyi:3
typings/pandas/core/arrays/base.pyi:1
typings/pandas/core/arrays/string_.pyi:2
typings/pandas/core/arrays/masked.pyi:8
typings/pandas/core/arrays/arrow/_arrow_utils.pyi:2
typings/pandas/core/arrays/arrow/array.pyi:1
typings/pandas/core/arrays/arrow/dtype.pyi:3
typings/pandas/core/arrays/numpy_.pyi:1
typings/pandas/core/arrays/string_arrow.pyi:2
typings/pandas/core/arrays/interval.pyi:6
typings/pandas/core/arrays/datetimes.pyi:7
typings/pandas/core/arrays/categorical.pyi:7
typings/pandas/core/arrays/_mixins.pyi:2
typings/pandas/core/arrays/datetimelike.pyi:11
typings/pandas/core/arrays/timedeltas.pyi:7
typings/pandas/core/arrays/period.pyi:3
typings/pandas/core/computation/expressions.pyi:1
typings/pandas/core/computation/eval.pyi:1
typings/pandas/core/computation/expr.pyi:17
typings/pandas/core/computation/ops.pyi:8
typings/pandas/core/computation/common.pyi:1
typings/pandas/core/computation/pytables.pyi:20
typings/pandas/core/computation/align.pyi:1
typings/pandas/core/reshape/concat.pyi:1
typings/pandas/core/reshape/reshape.pyi:1
typings/pandas/core/reshape/tile.pyi:2
typings/pandas/core/dtypes/dtypes.pyi:4
typings/pandas/core/dtypes/missing.pyi:2
typings/pandas/core/dtypes/inference.pyi:1
typings/pandas/core/dtypes/generic.pyi:1
typings/pandas/core/dtypes/cast.pyi:2
typings/pandas/core/dtypes/concat.pyi:1
typings/pandas/core/frame.pyi:7
typings/pandas/core/generic.pyi:17
typings/pandas/core/groupby/generic.pyi:4
typings/pandas/core/groupby/groupby.pyi:26
typings/pandas/core/groupby/grouper.pyi:3
typings/pandas/core/groupby/ops.pyi:5
typings/pandas/core/indexes/base.pyi:18
typings/pandas/core/indexes/datetimes.pyi:1
typings/pandas/core/indexes/interval.pyi:2
typings/pandas/core/indexes/period.pyi:1
typings/pandas/core/indexes/multi.pyi:10
typings/pandas/core/indexes/frozen.pyi:4
typings/pandas/core/indexes/range.pyi:4
typings/pandas/core/indexes/category.pyi:1
typings/pandas/core/indexes/accessors.pyi:4
typings/pandas/core/indexes/datetimelike.pyi:2
typings/pandas/core/internals/__init__.pyi:1
typings/pandas/core/internals/construction.pyi:2
typings/pandas/core/internals/blocks.pyi:8
typings/pandas/core/internals/array_manager.pyi:7
typings/pandas/core/internals/managers.pyi:13
typings/pandas/core/resample.pyi:4
typings/pandas/core/series.pyi:10
typings/pandas/core/window/rolling.pyi:37
typings/pandas/core/window/common.pyi:2
typings/pandas/core/window/numba_.pyi:5
typings/pandas/core/window/ewm.pyi:13
typings/pandas/core/window/expanding.pyi:16
typings/pandas/core/window/online.pyi:1
typings/pandas/core/nanops.pyi:2
typings/pandas/core/algorithms.pyi:5
typings/pandas/core/construction.pyi:1
typings/pandas/core/flags.pyi:1
typings/pandas/core/indexing.pyi:5
typings/pandas/core/tools/datetimes.pyi:1
typings/pandas/core/tools/times.pyi:1
typings/pandas/core/arraylike.pyi:26
typings/pandas/core/missing.pyi:2
typings/pandas/core/ops/__init__.pyi:6
typings/pandas/core/ops/invalid.pyi:1
typings/pandas/core/ops/array_ops.pyi:5
typings/pandas/core/ops/mask_ops.pyi:3
typings/pandas/core/array_algos/masked_reductions.pyi:5
typings/pandas/core/array_algos/putmask.pyi:1
typings/pandas/core/indexers/utils.pyi:1
typings/pandas/core/common.pyi:9
typings/pandas/core/base.pyi:7
typings/pandas/core/sorting.pyi:2
typings/pandas/core/accessor.pyi:4
typings/pandas/core/roperator.pyi:3
typings/pandas/core/strings/accessor.pyi:48
typings/pandas/core/apply.pyi:8
typings/pandas/core/exchange/dataframe_protocol.pyi:1
typings/pandas/core/exchange/dataframe.pyi:1
typings/pandas/core/exchange/from_dataframe.pyi:1
typings/pandas/core/exchange/column.pyi:5
typings/pandas/core/exchange/buffer.pyi:1
typings/pandas/core/_numba/executor.pyi:1
typings/pandas/io/json/_normalize.pyi:1
typings/pandas/io/formats/excel.pyi:1
typings/pandas/io/formats/style.pyi:1
typings/pandas/io/formats/style_render.pyi:1
typings/pandas/io/pytables.pyi:52
typings/pandas/io/sql.pyi:3
typings/pandas/io/pickle.pyi:1
typings/pandas/io/clipboards.pyi:1
typings/pandas/io/common.pyi:3
typings/pandas/io/excel/_base.pyi:11
typings/pandas/io/clipboard/__init__.pyi:15
typings/pandas/plotting/_core.pyi:5
typings/pandas/plotting/_misc.pyi:1
typings/pandas/util/__init__.pyi:1
typings/pandas/util/_test_decorators.pyi:5

Metadata

Metadata

Assignees

No one assigned

    Labels

    Typingtype annotations, mypy/pyright type checking

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions