Skip to content

TYP: Missing Return Annotations #47521

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
twoertwein opened this issue Jun 27, 2022 · 0 comments
Closed

TYP: Missing Return Annotations #47521

twoertwein opened this issue Jun 27, 2022 · 0 comments
Labels
Typing type annotations, mypy/pyright type checking

Comments

@twoertwein
Copy link
Member

twoertwein commented Jun 27, 2022

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Typing type annotations, mypy/pyright type checking
Projects
None yet
Development

No branches or pull requests

2 participants