-
-
Notifications
You must be signed in to change notification settings - Fork 18.5k
TYPING: type hints for core.indexing #27527
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
simonjayhawkins
wants to merge
11
commits into
pandas-dev:master
from
simonjayhawkins:typing-core-indexing
Closed
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
8135214
TYPING: type hints for core.indexing
simonjayhawkins 06824a1
add Any types autogenerated by MonkeyType
simonjayhawkins d5ae393
Merge remote-tracking branch 'upstream/master' into typing-core-indexing
simonjayhawkins 79657d7
Merge remote-tracking branch 'upstream/master' into typing-core-indexing
simonjayhawkins e084af4
ndarray -> np.ndarray
simonjayhawkins f76132c
remove Any and cast
simonjayhawkins 450d68b
resolve merge conflicts
simonjayhawkins 7ea090e
add ignore to mypy errors from rebase
simonjayhawkins e19292d
add ignore for List concatenation problem
simonjayhawkins 6a4c26b
lint error
simonjayhawkins 3797992
Merge remote-tracking branch 'upstream/master' into typing-core-indexing
simonjayhawkins File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What error was this throwing? And one below. Sorry if missed in diff
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
axis needs to be int but is type Axis.
probably not yet got the return type for
self.obj._get_axis_number(axis)
L112. This is defined in another module so would rather keep additions to single modules for now.could add a cast, but that lets you lie to the type checker so can be more dangerous than ignoring for now.
not sure whether mypy will figure this out once more type hints are added.
as long as we keeping using
--warn-unused-ignores
we should know if these become redundant and can be removed. otherwise will probably need to add cast in the future.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How hard would it be to just type that return then? Understood in a different module but reason I ask is I think there is buggy axis behavior when using strings that mypy may detect for us if we don't ignore.
To illustrate, these go down different code paths though result is equivalent
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I accept that we probably have different motivations here.
my motivation is to clean up the io.formats code. there is a lot of code duplication there, and i believe buggy code there as well.
so my view is that to support the refactoring activity, it's better to get, say 80%, of each of the imports to formats typed, than to get 100% of just a few.
so i'd prefer "adding # type: ignore comments to silence errors you don’t want to fix now." https://mypy.readthedocs.io/en/latest/existing_code.html
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK sure. I'm just hesitant that
ignore
andAny
mean we won't ever review in earnest, but sounds like you have a plan here so that doesn't applyThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm sure that in time we will want to increase the strictness of the mypy checks. so hopefully this won't apply.
also, i'm using MonkeyType to annotate with the actual types passed and returned, rather than what we think they should be. This itself is quickly revealing refactoring/cleanup opportunities.
I guess we could categorize bugs into three categories for the purpose of adding type hints.
bugs introduced changing code just to appease the type checker. hence i would prefer ignore to cast, and cast to code changes.
bugs in the codebase. adding type hints is going to help enormously.
bugs that will be added in the future. Again here, i have the opinion that getting, say 80%, of the codebase done quickly is more likely to be a benefit than perfection on the parts that are done.