From 78c369c9c3c39c2ebcc6e2ec3329f8d0ec36c913 Mon Sep 17 00:00:00 2001 From: Vaibhav Vishal Date: Tue, 2 Apr 2019 00:26:43 +0530 Subject: [PATCH 1/6] Remove [mypy-pandas.compat.numpy.function] from mypy.ini --- mypy.ini | 3 --- 1 file changed, 3 deletions(-) diff --git a/mypy.ini b/mypy.ini index 49fce2e4047f7..a463207b24924 100644 --- a/mypy.ini +++ b/mypy.ini @@ -11,9 +11,6 @@ ignore_errors=True [mypy-pandas.compat] ignore_errors=True -[mypy-pandas.compat.numpy.function] -ignore_errors=True - [mypy-pandas.compat.pickle_compat] ignore_errors=True From b02dfaf161c6bdc8800139d42c5573959fcbcae6 Mon Sep 17 00:00:00 2001 From: Vaibhav Vishal Date: Tue, 2 Apr 2019 19:52:48 +0530 Subject: [PATCH 2/6] type varibales as indicated by mypy and few others Fix type errors as indicated by mypy + type sme other variables that cought my eye --- pandas/compat/numpy/function.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/pandas/compat/numpy/function.py b/pandas/compat/numpy/function.py index 0ce0f1da483f1..ab1774219ba2f 100644 --- a/pandas/compat/numpy/function.py +++ b/pandas/compat/numpy/function.py @@ -18,6 +18,7 @@ easier to adjust to future upstream changes in the analogous numpy signatures. """ from collections import OrderedDict +from typing import Dict, Union from numpy import ndarray @@ -101,7 +102,8 @@ def validate_argmax_with_skipna(skipna, args, kwargs): return skipna -ARGSORT_DEFAULTS = OrderedDict() +ARGSORT_DEFAULTS = OrderedDict() \ + # type: OrderedDict[str, Union[int, str, None]] ARGSORT_DEFAULTS['axis'] = -1 ARGSORT_DEFAULTS['kind'] = 'quicksort' ARGSORT_DEFAULTS['order'] = None @@ -110,7 +112,8 @@ def validate_argmax_with_skipna(skipna, args, kwargs): # two different signatures of argsort, this second validation # for when the `kind` param is supported -ARGSORT_DEFAULTS_KIND = OrderedDict() +ARGSORT_DEFAULTS_KIND = OrderedDict() \ + # type: OrderedDict[str, Union[int, None]] ARGSORT_DEFAULTS_KIND['axis'] = -1 ARGSORT_DEFAULTS_KIND['order'] = None validate_argsort_kind = CompatValidator(ARGSORT_DEFAULTS_KIND, fname='argsort', @@ -134,7 +137,7 @@ def validate_argsort_with_ascending(ascending, args, kwargs): return ascending -CLIP_DEFAULTS = dict(out=None) +CLIP_DEFAULTS = dict(out=None) # type Dict[str, None] validate_clip = CompatValidator(CLIP_DEFAULTS, fname='clip', method='both', max_fname_arg_count=3) @@ -155,13 +158,13 @@ def validate_clip_with_axis(axis, args, kwargs): return axis -COMPRESS_DEFAULTS = OrderedDict() +COMPRESS_DEFAULTS = OrderedDict() # type: OrderedDict[str, None] COMPRESS_DEFAULTS['axis'] = None COMPRESS_DEFAULTS['out'] = None validate_compress = CompatValidator(COMPRESS_DEFAULTS, fname='compress', method='both', max_fname_arg_count=1) -CUM_FUNC_DEFAULTS = OrderedDict() +CUM_FUNC_DEFAULTS = OrderedDict() # type: OrderedDict[str, None] CUM_FUNC_DEFAULTS['dtype'] = None CUM_FUNC_DEFAULTS['out'] = None validate_cum_func = CompatValidator(CUM_FUNC_DEFAULTS, method='both', @@ -185,7 +188,7 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): return skipna -ALLANY_DEFAULTS = OrderedDict() +ALLANY_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[None, bool]] ALLANY_DEFAULTS['dtype'] = None ALLANY_DEFAULTS['out'] = None ALLANY_DEFAULTS['keepdims'] = False @@ -203,26 +206,26 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): validate_max = CompatValidator(MINMAX_DEFAULTS, fname='max', method='both', max_fname_arg_count=1) -RESHAPE_DEFAULTS = dict(order='C') +RESHAPE_DEFAULTS = dict(order='C') # type: Dict[str, str] validate_reshape = CompatValidator(RESHAPE_DEFAULTS, fname='reshape', method='both', max_fname_arg_count=1) -REPEAT_DEFAULTS = dict(axis=None) +REPEAT_DEFAULTS = dict(axis=None) # type: Dict[str, None] validate_repeat = CompatValidator(REPEAT_DEFAULTS, fname='repeat', method='both', max_fname_arg_count=1) -ROUND_DEFAULTS = dict(out=None) +ROUND_DEFAULTS = dict(out=None) # type: Dict[str, None] validate_round = CompatValidator(ROUND_DEFAULTS, fname='round', method='both', max_fname_arg_count=1) -SORT_DEFAULTS = OrderedDict() +SORT_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[int, str, None]] SORT_DEFAULTS['axis'] = -1 SORT_DEFAULTS['kind'] = 'quicksort' SORT_DEFAULTS['order'] = None validate_sort = CompatValidator(SORT_DEFAULTS, fname='sort', method='kwargs') -STAT_FUNC_DEFAULTS = OrderedDict() +STAT_FUNC_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[None, bool]] STAT_FUNC_DEFAULTS['dtype'] = None STAT_FUNC_DEFAULTS['out'] = None @@ -247,14 +250,15 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): validate_median = CompatValidator(MEDIAN_DEFAULTS, fname='median', method='both', max_fname_arg_count=1) -STAT_DDOF_FUNC_DEFAULTS = OrderedDict() +STAT_DDOF_FUNC_DEFAULTS = OrderedDict() \ + # type: OrderedDict[str, Union[None, bool]] STAT_DDOF_FUNC_DEFAULTS['dtype'] = None STAT_DDOF_FUNC_DEFAULTS['out'] = None STAT_DDOF_FUNC_DEFAULTS['keepdims'] = False validate_stat_ddof_func = CompatValidator(STAT_DDOF_FUNC_DEFAULTS, method='kwargs') -TAKE_DEFAULTS = OrderedDict() +TAKE_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[None, str]] TAKE_DEFAULTS['out'] = None TAKE_DEFAULTS['mode'] = 'raise' validate_take = CompatValidator(TAKE_DEFAULTS, fname='take', From 768603f5592587da0fcfc7f38066d13116c82567 Mon Sep 17 00:00:00 2001 From: Vaibhav Vishal Date: Tue, 2 Apr 2019 21:44:16 +0530 Subject: [PATCH 3/6] use Optional instead of Union --- pandas/compat/numpy/function.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pandas/compat/numpy/function.py b/pandas/compat/numpy/function.py index ab1774219ba2f..738ce7b777194 100644 --- a/pandas/compat/numpy/function.py +++ b/pandas/compat/numpy/function.py @@ -18,7 +18,7 @@ easier to adjust to future upstream changes in the analogous numpy signatures. """ from collections import OrderedDict -from typing import Dict, Union +from typing import Dict, Optional from numpy import ndarray @@ -103,7 +103,7 @@ def validate_argmax_with_skipna(skipna, args, kwargs): ARGSORT_DEFAULTS = OrderedDict() \ - # type: OrderedDict[str, Union[int, str, None]] + # type: OrderedDict[str, Optional[int, str]] ARGSORT_DEFAULTS['axis'] = -1 ARGSORT_DEFAULTS['kind'] = 'quicksort' ARGSORT_DEFAULTS['order'] = None @@ -113,7 +113,7 @@ def validate_argmax_with_skipna(skipna, args, kwargs): # two different signatures of argsort, this second validation # for when the `kind` param is supported ARGSORT_DEFAULTS_KIND = OrderedDict() \ - # type: OrderedDict[str, Union[int, None]] + # type: OrderedDict[str, Optional[int]] ARGSORT_DEFAULTS_KIND['axis'] = -1 ARGSORT_DEFAULTS_KIND['order'] = None validate_argsort_kind = CompatValidator(ARGSORT_DEFAULTS_KIND, fname='argsort', @@ -188,7 +188,7 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): return skipna -ALLANY_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[None, bool]] +ALLANY_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[bool]] ALLANY_DEFAULTS['dtype'] = None ALLANY_DEFAULTS['out'] = None ALLANY_DEFAULTS['keepdims'] = False @@ -218,14 +218,14 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): validate_round = CompatValidator(ROUND_DEFAULTS, fname='round', method='both', max_fname_arg_count=1) -SORT_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[int, str, None]] +SORT_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[int, str]] SORT_DEFAULTS['axis'] = -1 SORT_DEFAULTS['kind'] = 'quicksort' SORT_DEFAULTS['order'] = None validate_sort = CompatValidator(SORT_DEFAULTS, fname='sort', method='kwargs') -STAT_FUNC_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[None, bool]] +STAT_FUNC_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[None]] STAT_FUNC_DEFAULTS['dtype'] = None STAT_FUNC_DEFAULTS['out'] = None @@ -251,14 +251,14 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): method='both', max_fname_arg_count=1) STAT_DDOF_FUNC_DEFAULTS = OrderedDict() \ - # type: OrderedDict[str, Union[None, bool]] + # type: OrderedDict[str, Optional[bool]] STAT_DDOF_FUNC_DEFAULTS['dtype'] = None STAT_DDOF_FUNC_DEFAULTS['out'] = None STAT_DDOF_FUNC_DEFAULTS['keepdims'] = False validate_stat_ddof_func = CompatValidator(STAT_DDOF_FUNC_DEFAULTS, method='kwargs') -TAKE_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[None, str]] +TAKE_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[str]] TAKE_DEFAULTS['out'] = None TAKE_DEFAULTS['mode'] = 'raise' validate_take = CompatValidator(TAKE_DEFAULTS, fname='take', From ed43adeddea4763f05124cb557c3551a1c40e36e Mon Sep 17 00:00:00 2001 From: Vaibhav Vishal Date: Wed, 3 Apr 2019 18:31:16 +0530 Subject: [PATCH 4/6] WIP --- pandas/compat/numpy/function.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/pandas/compat/numpy/function.py b/pandas/compat/numpy/function.py index 738ce7b777194..fbd5fb405c2d9 100644 --- a/pandas/compat/numpy/function.py +++ b/pandas/compat/numpy/function.py @@ -18,7 +18,7 @@ easier to adjust to future upstream changes in the analogous numpy signatures. """ from collections import OrderedDict -from typing import Dict, Optional +from typing import Any, Dict, Optional, Union from numpy import ndarray @@ -27,6 +27,8 @@ from pandas.util._validators import ( validate_args, validate_args_and_kwargs, validate_kwargs) +from typing_extensions import Final + class CompatValidator(object): @@ -103,7 +105,7 @@ def validate_argmax_with_skipna(skipna, args, kwargs): ARGSORT_DEFAULTS = OrderedDict() \ - # type: OrderedDict[str, Optional[int, str]] + # type: OrderedDict[str, Union[int, str, None]] ARGSORT_DEFAULTS['axis'] = -1 ARGSORT_DEFAULTS['kind'] = 'quicksort' ARGSORT_DEFAULTS['order'] = None @@ -137,7 +139,7 @@ def validate_argsort_with_ascending(ascending, args, kwargs): return ascending -CLIP_DEFAULTS = dict(out=None) # type Dict[str, None] +CLIP_DEFAULTS = dict(out=None) # type Final[Dict[str, Any]] validate_clip = CompatValidator(CLIP_DEFAULTS, fname='clip', method='both', max_fname_arg_count=3) @@ -158,13 +160,13 @@ def validate_clip_with_axis(axis, args, kwargs): return axis -COMPRESS_DEFAULTS = OrderedDict() # type: OrderedDict[str, None] +COMPRESS_DEFAULTS = OrderedDict() # type: OrderedDict[str, Any] COMPRESS_DEFAULTS['axis'] = None COMPRESS_DEFAULTS['out'] = None validate_compress = CompatValidator(COMPRESS_DEFAULTS, fname='compress', method='both', max_fname_arg_count=1) -CUM_FUNC_DEFAULTS = OrderedDict() # type: OrderedDict[str, None] +CUM_FUNC_DEFAULTS = OrderedDict() # type: OrderedDict[str, Any] CUM_FUNC_DEFAULTS['dtype'] = None CUM_FUNC_DEFAULTS['out'] = None validate_cum_func = CompatValidator(CUM_FUNC_DEFAULTS, method='both', @@ -206,26 +208,26 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): validate_max = CompatValidator(MINMAX_DEFAULTS, fname='max', method='both', max_fname_arg_count=1) -RESHAPE_DEFAULTS = dict(order='C') # type: Dict[str, str] +RESHAPE_DEFAULTS = dict(order='C') # type: Final[Dict[str, str]] validate_reshape = CompatValidator(RESHAPE_DEFAULTS, fname='reshape', method='both', max_fname_arg_count=1) -REPEAT_DEFAULTS = dict(axis=None) # type: Dict[str, None] +REPEAT_DEFAULTS = dict(axis=None) # type: Final[Dict[str, Any]] validate_repeat = CompatValidator(REPEAT_DEFAULTS, fname='repeat', method='both', max_fname_arg_count=1) -ROUND_DEFAULTS = dict(out=None) # type: Dict[str, None] +ROUND_DEFAULTS = dict(out=None) # type: Final[Dict[str, Any]] validate_round = CompatValidator(ROUND_DEFAULTS, fname='round', method='both', max_fname_arg_count=1) -SORT_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[int, str]] +SORT_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[int, str, None]] SORT_DEFAULTS['axis'] = -1 SORT_DEFAULTS['kind'] = 'quicksort' SORT_DEFAULTS['order'] = None validate_sort = CompatValidator(SORT_DEFAULTS, fname='sort', method='kwargs') -STAT_FUNC_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[None]] +STAT_FUNC_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[Any]] STAT_FUNC_DEFAULTS['dtype'] = None STAT_FUNC_DEFAULTS['out'] = None From d2908dbf274669dc35c805d7b19e5257c2299e7d Mon Sep 17 00:00:00 2001 From: Vaibhav Vishal Date: Wed, 24 Apr 2019 15:59:48 +0530 Subject: [PATCH 5/6] use optional when applicable --- pandas/compat/numpy/function.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/compat/numpy/function.py b/pandas/compat/numpy/function.py index ebe3367e9658b..8d87cecb98003 100644 --- a/pandas/compat/numpy/function.py +++ b/pandas/compat/numpy/function.py @@ -105,7 +105,7 @@ def validate_argmax_with_skipna(skipna, args, kwargs): ARGSORT_DEFAULTS = OrderedDict() \ - # type: OrderedDict[str, Union[int, str, None]] + # type: OrderedDict[str, Optional[Union[int, str]]] ARGSORT_DEFAULTS['axis'] = -1 ARGSORT_DEFAULTS['kind'] = 'quicksort' ARGSORT_DEFAULTS['order'] = None @@ -220,7 +220,7 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): validate_round = CompatValidator(ROUND_DEFAULTS, fname='round', method='both', max_fname_arg_count=1) -SORT_DEFAULTS = OrderedDict() # type: OrderedDict[str, Union[int, str, None]] +SORT_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[Union[int, str]]] SORT_DEFAULTS['axis'] = -1 SORT_DEFAULTS['kind'] = 'quicksort' SORT_DEFAULTS['order'] = None From 8540435799151d891c77d2011e8a765769d98535 Mon Sep 17 00:00:00 2001 From: Vaibhav Vishal Date: Wed, 24 Apr 2019 16:04:59 +0530 Subject: [PATCH 6/6] remove Final and make pep8 happy --- pandas/compat/numpy/function.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pandas/compat/numpy/function.py b/pandas/compat/numpy/function.py index 8d87cecb98003..f5f018ae23a4b 100644 --- a/pandas/compat/numpy/function.py +++ b/pandas/compat/numpy/function.py @@ -27,8 +27,6 @@ from pandas.util._validators import ( validate_args, validate_args_and_kwargs, validate_kwargs) -from typing_extensions import Final - class CompatValidator: @@ -139,7 +137,7 @@ def validate_argsort_with_ascending(ascending, args, kwargs): return ascending -CLIP_DEFAULTS = dict(out=None) # type Final[Dict[str, Any]] +CLIP_DEFAULTS = dict(out=None) # type Dict[str, Any] validate_clip = CompatValidator(CLIP_DEFAULTS, fname='clip', method='both', max_fname_arg_count=3) @@ -208,19 +206,20 @@ def validate_cum_func_with_skipna(skipna, args, kwargs, name): validate_max = CompatValidator(MINMAX_DEFAULTS, fname='max', method='both', max_fname_arg_count=1) -RESHAPE_DEFAULTS = dict(order='C') # type: Final[Dict[str, str]] +RESHAPE_DEFAULTS = dict(order='C') # type: Dict[str, str] validate_reshape = CompatValidator(RESHAPE_DEFAULTS, fname='reshape', method='both', max_fname_arg_count=1) -REPEAT_DEFAULTS = dict(axis=None) # type: Final[Dict[str, Any]] +REPEAT_DEFAULTS = dict(axis=None) # type: Dict[str, Any] validate_repeat = CompatValidator(REPEAT_DEFAULTS, fname='repeat', method='both', max_fname_arg_count=1) -ROUND_DEFAULTS = dict(out=None) # type: Final[Dict[str, Any]] +ROUND_DEFAULTS = dict(out=None) # type: Dict[str, Any] validate_round = CompatValidator(ROUND_DEFAULTS, fname='round', method='both', max_fname_arg_count=1) -SORT_DEFAULTS = OrderedDict() # type: OrderedDict[str, Optional[Union[int, str]]] +SORT_DEFAULTS = OrderedDict() \ + # type: OrderedDict[str, Optional[Union[int, str]]] SORT_DEFAULTS['axis'] = -1 SORT_DEFAULTS['kind'] = 'quicksort' SORT_DEFAULTS['order'] = None