Skip to content

TYP: narrow type bounds on extract_array #46942

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

Merged
merged 1 commit into from
May 25, 2022

Conversation

iasoon
Copy link
Contributor

@iasoon iasoon commented May 4, 2022

xref #37715

Narrowing the type bound allows resolving some ignored mypy errors.
The other modified code is needed because extract_array no longer returns Any, causing more strict type checking in the calling methods.

@@ -329,7 +337,8 @@ def array(
if dtype is None:
inferred_dtype = lib.infer_dtype(data, skipna=True)
if inferred_dtype == "period":
return PeriodArray._from_sequence(data, copy=copy)
period_data = cast(Union[Sequence[Optional[Period]], AnyArrayLike], data)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't mind a mypy ignore instead of the cast

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you prefer the ignore? I personally think the cast is more semantically correct, since we checked the type using lib.infer_dtype. This pattern also seems to be used in different parts of the codebase already, too ( example).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no strong opinion (slightly in favor of ignore, unless it creates many follow up ignores) @simonjayhawkins has a better overview when to use casts I am/was a bit too liberal using them :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we have checks for redundant casts and also unused ignores so if, in general, the typing issue is likely to be fixed in the future then either are OK (but I personally prefer an ignore since we traditionally add the mypy error as a comment, so when looking at the code, the error message is perhaps more helpful than a cast)

In this case, where the issue is that a type if not correctly narrowed by a condition then I am equally happy with a cast adjacent to the condition.

@iasoon iasoon force-pushed the typing/extract_array branch from dfe1d6f to 28f5759 Compare May 5, 2022 08:23
@twoertwein twoertwein added the Typing type annotations, mypy/pyright type checking label May 6, 2022
@iasoon iasoon force-pushed the typing/extract_array branch from 28f5759 to ac1fb20 Compare May 8, 2022 09:44
@jreback jreback added this to the 1.5 milestone May 12, 2022
@jreback
Copy link
Contributor

jreback commented May 12, 2022

@twoertwein @simonjayhawkins good here?

@mroeschke mroeschke merged commit 43a4bad into pandas-dev:main May 25, 2022
@mroeschke
Copy link
Member

Thanks @iasoon. #46942 (comment) can be followed up with in a subsequent PR if needed

yehoshuadimarsky pushed a commit to yehoshuadimarsky/pandas that referenced this pull request Jul 13, 2022
@simonjayhawkins
Copy link
Member

Thanks @iasoon. #46942 (comment) can be followed up with in a subsequent PR if needed

not needed. Thanks @iasoon

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

Successfully merging this pull request may close these issues.

5 participants