-
-
Notifications
You must be signed in to change notification settings - Fork 18.7k
#25790 Updating type hints to Python3 syntax in pandas/core/array #25829
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
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
a0b8c4c
#25790 Updated type hints to Python3 style in files outside core/arrays/
gwrome 46cc909
#25790 Added TypeVar to hint in core/indexes/base.py
gwrome 7acb89a
Fixed reference to types.Tuple that should have been to typing.Tuple
gwrome d9c53ab
Fixed import sort
gwrome e73fe18
#25802 Updated type hints to python3 syntax (array files)
gwrome 545d38d
Removed instance variable type hint for 3.5 compatibility
gwrome abc09fa
Cleaned up array/ type hints
gwrome c37ef88
#25790 Updating type hints to Python3 syntax in pandas/core/array
gwrome ea9c2b3
#25790 Updating type hints to Python3 syntax in pandas/core/array
gwrome 20b63e4
Remove conditional import
gwrome cf774d7
Change forward refs to ABCs
gwrome 50db810
Merge branch 'master' into update-array-type-hints-python3
gwrome 92490a8
Merge branch 'master' into array-type-hints-python3
gwrome 441f4bd
Change forward refs to ABCs
gwrome 33db1ee
Change remaining forward refs to ABCs
gwrome 23aba8a
type to Type
gwrome 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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,7 +17,8 @@ | |
|
||
from pandas.core.dtypes.common import is_list_like | ||
from pandas.core.dtypes.dtypes import ExtensionDtype | ||
from pandas.core.dtypes.generic import ABCIndexClass, ABCSeries | ||
from pandas.core.dtypes.generic import ( | ||
ABCExtensionArray, ABCIndexClass, ABCSeries) | ||
from pandas.core.dtypes.missing import isna | ||
|
||
from pandas.core import ops | ||
|
@@ -214,8 +215,7 @@ def __getitem__(self, item): | |
""" | ||
raise AbstractMethodError(self) | ||
|
||
def __setitem__(self, key, value): | ||
# type: (Union[int, np.ndarray], Any) -> None | ||
def __setitem__(self, key: Union[int, np.ndarray], value: Any) -> None: | ||
""" | ||
Set one or more values inplace. | ||
|
||
|
@@ -262,8 +262,7 @@ def __setitem__(self, key, value): | |
type(self), '__setitem__') | ||
) | ||
|
||
def __len__(self): | ||
# type: () -> int | ||
def __len__(self) -> int: | ||
""" | ||
Length of this array | ||
|
||
|
@@ -287,32 +286,28 @@ def __iter__(self): | |
# Required attributes | ||
# ------------------------------------------------------------------------ | ||
@property | ||
def dtype(self): | ||
# type: () -> ExtensionDtype | ||
def dtype(self) -> ExtensionDtype: | ||
""" | ||
An instance of 'ExtensionDtype'. | ||
""" | ||
raise AbstractMethodError(self) | ||
|
||
@property | ||
def shape(self): | ||
# type: () -> Tuple[int, ...] | ||
def shape(self) -> Tuple[int, ...]: | ||
""" | ||
Return a tuple of the array dimensions. | ||
""" | ||
return (len(self),) | ||
|
||
@property | ||
def ndim(self): | ||
# type: () -> int | ||
def ndim(self) -> int: | ||
""" | ||
Extension Arrays are only allowed to be 1-dimensional. | ||
""" | ||
return 1 | ||
|
||
@property | ||
def nbytes(self): | ||
# type: () -> int | ||
def nbytes(self) -> int: | ||
""" | ||
The number of bytes needed to store this object in memory. | ||
""" | ||
|
@@ -343,8 +338,7 @@ def astype(self, dtype, copy=True): | |
""" | ||
return np.array(self, dtype=dtype, copy=copy) | ||
|
||
def isna(self): | ||
# type: () -> Union[ExtensionArray, np.ndarray] | ||
def isna(self) -> Union[ABCExtensionArray, np.ndarray]: | ||
""" | ||
A 1-D array indicating if each value is missing. | ||
|
||
|
@@ -366,8 +360,7 @@ def isna(self): | |
""" | ||
raise AbstractMethodError(self) | ||
|
||
def _values_for_argsort(self): | ||
# type: () -> np.ndarray | ||
def _values_for_argsort(self) -> np.ndarray: | ||
""" | ||
Return values for sorting. | ||
|
||
|
@@ -482,8 +475,11 @@ def dropna(self): | |
""" | ||
return self[~self.isna()] | ||
|
||
def shift(self, periods=1, fill_value=None): | ||
# type: (int, object) -> ExtensionArray | ||
def shift( | ||
self, | ||
periods: int = 1, | ||
fill_value: object = None, | ||
) -> ABCExtensionArray: | ||
""" | ||
Shift values by desired number. | ||
|
||
|
@@ -598,8 +594,7 @@ def searchsorted(self, value, side="left", sorter=None): | |
arr = self.astype(object) | ||
return arr.searchsorted(value, side=side, sorter=sorter) | ||
|
||
def _values_for_factorize(self): | ||
# type: () -> Tuple[np.ndarray, Any] | ||
def _values_for_factorize(self) -> Tuple[np.ndarray, Any]: | ||
""" | ||
Return an array and missing value suitable for factorization. | ||
|
||
|
@@ -623,8 +618,10 @@ def _values_for_factorize(self): | |
""" | ||
return self.astype(object), np.nan | ||
|
||
def factorize(self, na_sentinel=-1): | ||
# type: (int) -> Tuple[np.ndarray, ExtensionArray] | ||
def factorize( | ||
self, | ||
na_sentinel: int = -1, | ||
) -> Tuple[np.ndarray, ABCExtensionArray]: | ||
""" | ||
Encode the extension array as an enumerated type. | ||
|
||
|
@@ -726,8 +723,12 @@ def repeat(self, repeats, axis=None): | |
# Indexing methods | ||
# ------------------------------------------------------------------------ | ||
|
||
def take(self, indices, allow_fill=False, fill_value=None): | ||
# type: (Sequence[int], bool, Optional[Any]) -> ExtensionArray | ||
def take( | ||
self, | ||
indices: Sequence[int], | ||
allow_fill: bool = False, | ||
fill_value: Any = None | ||
) -> ABCExtensionArray: | ||
""" | ||
Take elements from an array. | ||
|
||
|
@@ -816,8 +817,7 @@ def take(self, indices, allow_fill=False, fill_value=None): | |
# pandas.api.extensions.take | ||
raise AbstractMethodError(self) | ||
|
||
def copy(self, deep=False): | ||
# type: (bool) -> ExtensionArray | ||
def copy(self, deep: bool = False) -> ABCExtensionArray: | ||
""" | ||
Return a copy of the array. | ||
|
||
|
@@ -853,8 +853,10 @@ def __repr__(self): | |
length=len(self), | ||
dtype=self.dtype) | ||
|
||
def _formatter(self, boxed=False): | ||
# type: (bool) -> Callable[[Any], Optional[str]] | ||
def _formatter( | ||
self, | ||
boxed: bool = False, | ||
) -> Callable[[Any], Optional[str]]: | ||
"""Formatting function for scalar values. | ||
|
||
This is used in the default '__repr__'. The returned formatting | ||
|
@@ -881,8 +883,7 @@ def _formatter(self, boxed=False): | |
return str | ||
return repr | ||
|
||
def _formatting_values(self): | ||
# type: () -> np.ndarray | ||
def _formatting_values(self) -> np.ndarray: | ||
# At the moment, this has to be an array since we use result.dtype | ||
""" | ||
An array of values to be printed in, e.g. the Series repr | ||
|
@@ -898,8 +899,10 @@ def _formatting_values(self): | |
# ------------------------------------------------------------------------ | ||
|
||
@classmethod | ||
def _concat_same_type(cls, to_concat): | ||
# type: (Sequence[ExtensionArray]) -> ExtensionArray | ||
def _concat_same_type( | ||
cls, | ||
to_concat: Sequence[ABCExtensionArray] | ||
) -> ABCExtensionArray: | ||
""" | ||
Concatenate multiple array | ||
|
||
|
@@ -921,8 +924,7 @@ def _concat_same_type(cls, to_concat): | |
_can_hold_na = True | ||
|
||
@property | ||
def _ndarray_values(self): | ||
# type: () -> np.ndarray | ||
def _ndarray_values(self) -> np.ndarray: | ||
""" | ||
Internal pandas method for lossy conversion to a NumPy ndarray. | ||
|
||
|
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
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
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
Oops, something went wrong.
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.
so this is a the first stab at ArrayLike (e.g. to put into pandas.typing)
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.
Seems like a reasonable place to start.
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.
these are ok here for now, mainly adding things that we should add
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.
Agreed this would be great @gwrome do you mind opening up an issue as a follow up?
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.
No problem. I should be able to do that this weekend.