From 9c7236ec01d33e11397a63edf852e6a0086fd286 Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Wed, 24 Aug 2022 14:53:55 +0200 Subject: [PATCH 1/5] create module init param checks --- feature_engine/_check_input_parameters/__init__.py | 0 .../check_input_dictionary.py} | 0 feature_engine/imputation/arbitrary_number.py | 2 +- feature_engine/outliers/artbitrary.py | 2 +- tests/test_parameter_checks.py | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 feature_engine/_check_input_parameters/__init__.py rename feature_engine/{parameter_checks.py => _check_input_parameters/check_input_dictionary.py} (100%) diff --git a/feature_engine/_check_input_parameters/__init__.py b/feature_engine/_check_input_parameters/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/feature_engine/parameter_checks.py b/feature_engine/_check_input_parameters/check_input_dictionary.py similarity index 100% rename from feature_engine/parameter_checks.py rename to feature_engine/_check_input_parameters/check_input_dictionary.py diff --git a/feature_engine/imputation/arbitrary_number.py b/feature_engine/imputation/arbitrary_number.py index 0107a4414..5e5595fb5 100644 --- a/feature_engine/imputation/arbitrary_number.py +++ b/feature_engine/imputation/arbitrary_number.py @@ -23,7 +23,7 @@ ) from feature_engine.dataframe_checks import check_X from feature_engine.imputation.base_imputer import BaseImputer -from feature_engine.parameter_checks import _check_numerical_dict +from feature_engine._check_input_parameters.check_input_dictionary import _check_numerical_dict @Substitution( diff --git a/feature_engine/outliers/artbitrary.py b/feature_engine/outliers/artbitrary.py index 96b0e303c..09491c831 100644 --- a/feature_engine/outliers/artbitrary.py +++ b/feature_engine/outliers/artbitrary.py @@ -26,7 +26,7 @@ check_X, ) from feature_engine.outliers.base_outlier import BaseOutlier -from feature_engine.parameter_checks import _check_numerical_dict +from feature_engine._check_input_parameters.check_input_dictionary import _check_numerical_dict from feature_engine.tags import _return_tags diff --git a/tests/test_parameter_checks.py b/tests/test_parameter_checks.py index e8e878b75..d7513282d 100644 --- a/tests/test_parameter_checks.py +++ b/tests/test_parameter_checks.py @@ -1,6 +1,6 @@ import pytest -from feature_engine.parameter_checks import _check_numerical_dict +from feature_engine._check_input_parameters.check_input_dictionary import _check_numerical_dict @pytest.mark.parametrize("input_dict", [{"a": 1, "b": "c"}, {1: 1, 2: "c"}]) From 40228efceb37c42ab82f79d140af71f428294a6d Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Wed, 24 Aug 2022 15:23:51 +0200 Subject: [PATCH 2/5] refactor creation module --- .../check_init_input_params.py | 15 +++++++++ .../check_input_dictionary.py | 12 ++++--- feature_engine/_docstrings/methods.py | 5 +++ feature_engine/creation/base_creation.py | 21 ++++-------- feature_engine/creation/cyclical_features.py | 32 +++++++++---------- feature_engine/creation/math_features.py | 3 +- feature_engine/creation/relative_features.py | 3 +- feature_engine/imputation/arbitrary_number.py | 6 ++-- feature_engine/outliers/artbitrary.py | 8 +++-- tests/test_creation/test_cyclical_features.py | 2 +- tests/test_parameter_checks.py | 8 +++-- 11 files changed, 68 insertions(+), 47 deletions(-) create mode 100644 feature_engine/_check_input_parameters/check_init_input_params.py diff --git a/feature_engine/_check_input_parameters/check_init_input_params.py b/feature_engine/_check_input_parameters/check_init_input_params.py new file mode 100644 index 000000000..a4012d8a6 --- /dev/null +++ b/feature_engine/_check_input_parameters/check_init_input_params.py @@ -0,0 +1,15 @@ + +def check_param_missing_values(missing_values): + if missing_values not in ["raise", "ignore"]: + raise ValueError( + "missing_values takes only values 'raise' or 'ignore'. " + f"Got {missing_values} instead." + ) + + +def check_param_drop_original(drop_original): + if not isinstance(drop_original, bool): + raise TypeError( + "drop_original takes only boolean values True and False. " + f"Got {drop_original} instead." + ) diff --git a/feature_engine/_check_input_parameters/check_input_dictionary.py b/feature_engine/_check_input_parameters/check_input_dictionary.py index 3c4573f8b..d76c3395e 100644 --- a/feature_engine/_check_input_parameters/check_input_dictionary.py +++ b/feature_engine/_check_input_parameters/check_input_dictionary.py @@ -1,7 +1,7 @@ from typing import Optional -def _check_numerical_dict(dict_: Optional[dict]) -> Optional[dict]: +def check_numerical_dict(dict_: Optional[dict]) -> Optional[dict]: """ Checks if all values in dictionary are integers and floats. Can take None as argument. @@ -21,9 +21,13 @@ def _check_numerical_dict(dict_: Optional[dict]) -> Optional[dict]: if isinstance(dict_, dict): if not all([isinstance(x, (float, int)) for x in dict_.values()]): - raise ValueError("All values in the dictionary must be integer or float") + raise ValueError( + "All values in the dictionary must be integer or float. " + f"Got {dict_} instead." + ) elif dict_ is not None: - raise TypeError("The parameter can only take a dictionary or None") - + raise TypeError( + f"The parameter can only take a dictionary or None. Got {dict_} instead." + ) return None diff --git a/feature_engine/_docstrings/methods.py b/feature_engine/_docstrings/methods.py index 97c99e409..4e214a8d6 100644 --- a/feature_engine/_docstrings/methods.py +++ b/feature_engine/_docstrings/methods.py @@ -41,3 +41,8 @@ _transform_encoders_docstring = """transform: Encode the categories to numbers. """.rstrip() + +# used in creation module +_transform_creation_docstring = """transform: + Create new features. + """.rstrip() diff --git a/feature_engine/creation/base_creation.py b/feature_engine/creation/base_creation.py index 3611c1fc6..8dc28db01 100644 --- a/feature_engine/creation/base_creation.py +++ b/feature_engine/creation/base_creation.py @@ -4,6 +4,10 @@ from sklearn.base import BaseEstimator, TransformerMixin from sklearn.utils.validation import check_is_fitted +from feature_engine._check_input_parameters.check_init_input_params import ( + check_param_missing_values, + check_param_drop_original, +) from feature_engine._variable_handling.variable_type_selection import ( _find_or_check_numerical_variables, ) @@ -19,27 +23,14 @@ class BaseCreation(BaseEstimator, TransformerMixin): """Shared set-up, checks and methods across creation transformers.""" - _transform_docstring = """transform: - Create new features. - """.rstrip() - def __init__( self, missing_values: str = "raise", drop_original: bool = False, ) -> None: - if missing_values not in ["raise", "ignore"]: - raise ValueError( - "missing_values takes only values 'raise' or 'ignore'. " - f"Got {missing_values} instead." - ) - - if not isinstance(drop_original, bool): - raise TypeError( - "drop_original takes only boolean values True and False. " - f"Got {drop_original} instead." - ) + check_param_missing_values(missing_values) + check_param_drop_original(drop_original) self.missing_values = missing_values self.drop_original = drop_original diff --git a/feature_engine/creation/cyclical_features.py b/feature_engine/creation/cyclical_features.py index 1b48bf6a7..bd709228b 100644 --- a/feature_engine/creation/cyclical_features.py +++ b/feature_engine/creation/cyclical_features.py @@ -4,6 +4,13 @@ import pandas as pd from sklearn.utils.validation import check_is_fitted + +from feature_engine._check_input_parameters.check_init_input_params import ( + check_param_drop_original, +) +from feature_engine._check_input_parameters.check_input_dictionary import ( + check_numerical_dict, +) from feature_engine._base_transformers.base_numerical import BaseNumericalTransformer from feature_engine._base_transformers.mixins import FitFromDictMixin from feature_engine._docstrings.fit_attributes import ( @@ -15,7 +22,10 @@ _drop_original_docstring, _variables_numerical_docstring, ) -from feature_engine._docstrings.methods import _fit_transform_docstring +from feature_engine._docstrings.methods import ( + _fit_transform_docstring, + _transform_creation_docstring, +) from feature_engine._docstrings.substitute import Substitution from feature_engine._variable_handling.init_parameter_checks import ( _check_init_parameter_variables, @@ -29,6 +39,7 @@ feature_names_in_=_feature_names_in_docstring, n_features_in_=_n_features_in_docstring, fit_transform=_fit_transform_docstring, + transform=_transform_creation_docstring, ) class CyclicalFeatures(BaseNumericalTransformer, FitFromDictMixin): """ @@ -77,8 +88,7 @@ class CyclicalFeatures(BaseNumericalTransformer, FitFromDictMixin): {fit_transform} - transform: - Adds new features. + {transform} References ---------- @@ -94,20 +104,8 @@ def __init__( drop_original: Optional[bool] = False, ) -> None: - if max_values: - if not isinstance(max_values, dict) or not all( - isinstance(var, (int, float)) for var in list(max_values.values()) - ): - raise TypeError( - "max_values takes a dictionary where the values are numerical. " - f"Got {max_values} instead." - ) - - if not isinstance(drop_original, bool): - raise TypeError( - "drop_original takes only boolean values True and False. " - f"Got {drop_original} instead." - ) + check_numerical_dict(max_values) + check_param_drop_original(drop_original) self.variables = _check_init_parameter_variables(variables) self.max_values = max_values diff --git a/feature_engine/creation/math_features.py b/feature_engine/creation/math_features.py index ce0b750a1..136b6d468 100644 --- a/feature_engine/creation/math_features.py +++ b/feature_engine/creation/math_features.py @@ -14,6 +14,7 @@ from feature_engine._docstrings.methods import ( _fit_not_learn_docstring, _fit_transform_docstring, + _transform_creation_docstring, ) from feature_engine._docstrings.substitute import Substitution from feature_engine.creation.base_creation import BaseCreation @@ -25,7 +26,7 @@ feature_names_in_=_feature_names_in_docstring, n_features_in_=_n_features_in_docstring, fit=_fit_not_learn_docstring, - transform=BaseCreation._transform_docstring, + transform=_transform_creation_docstring, fit_transform=_fit_transform_docstring, ) class MathFeatures(BaseCreation): diff --git a/feature_engine/creation/relative_features.py b/feature_engine/creation/relative_features.py index 6cd602db9..3096e5875 100644 --- a/feature_engine/creation/relative_features.py +++ b/feature_engine/creation/relative_features.py @@ -15,6 +15,7 @@ from feature_engine._docstrings.methods import ( _fit_not_learn_docstring, _fit_transform_docstring, + _transform_creation_docstring, ) from feature_engine._docstrings.substitute import Substitution from feature_engine._variable_handling.variable_type_selection import ( @@ -41,7 +42,7 @@ feature_names_in_=_feature_names_in_docstring, n_features_in_=_n_features_in_docstring, fit=_fit_not_learn_docstring, - transform=BaseCreation._transform_docstring, + transform=_transform_creation_docstring, fit_transform=_fit_transform_docstring, ) class RelativeFeatures(BaseCreation): diff --git a/feature_engine/imputation/arbitrary_number.py b/feature_engine/imputation/arbitrary_number.py index 5e5595fb5..70645a9bc 100644 --- a/feature_engine/imputation/arbitrary_number.py +++ b/feature_engine/imputation/arbitrary_number.py @@ -23,7 +23,9 @@ ) from feature_engine.dataframe_checks import check_X from feature_engine.imputation.base_imputer import BaseImputer -from feature_engine._check_input_parameters.check_input_dictionary import _check_numerical_dict +from feature_engine._check_input_parameters.check_input_dictionary import ( + check_numerical_dict, +) @Substitution( @@ -99,7 +101,7 @@ def __init__( else: raise ValueError("arbitrary_number must be numeric of type int or float") - _check_numerical_dict(imputer_dict) + check_numerical_dict(imputer_dict) self.variables = _check_init_parameter_variables(variables) diff --git a/feature_engine/outliers/artbitrary.py b/feature_engine/outliers/artbitrary.py index 09491c831..913df8c33 100644 --- a/feature_engine/outliers/artbitrary.py +++ b/feature_engine/outliers/artbitrary.py @@ -26,7 +26,9 @@ check_X, ) from feature_engine.outliers.base_outlier import BaseOutlier -from feature_engine._check_input_parameters.check_input_dictionary import _check_numerical_dict +from feature_engine._check_input_parameters.check_input_dictionary import ( + check_numerical_dict, +) from feature_engine.tags import _return_tags @@ -102,8 +104,8 @@ def __init__( if missing_values not in ["raise", "ignore"]: raise ValueError("missing_values takes only values 'raise' or 'ignore'") - _check_numerical_dict(max_capping_dict) - _check_numerical_dict(min_capping_dict) + check_numerical_dict(max_capping_dict) + check_numerical_dict(min_capping_dict) self.max_capping_dict = max_capping_dict self.min_capping_dict = min_capping_dict diff --git a/tests/test_creation/test_cyclical_features.py b/tests/test_creation/test_cyclical_features.py index 60343d644..f61204a59 100644 --- a/tests/test_creation/test_cyclical_features.py +++ b/tests/test_creation/test_cyclical_features.py @@ -158,7 +158,7 @@ def test_raises_error_when_init_parameters_not_permitted(df_cyclical): # when max_values is not a dictionary CyclicalFeatures(max_values=("dayi", 31)) - with pytest.raises(TypeError): + with pytest.raises(ValueError): # when max_values values are not integers or string CyclicalFeatures(max_values={"day": "31"}) diff --git a/tests/test_parameter_checks.py b/tests/test_parameter_checks.py index d7513282d..84aab8c1c 100644 --- a/tests/test_parameter_checks.py +++ b/tests/test_parameter_checks.py @@ -1,15 +1,17 @@ import pytest -from feature_engine._check_input_parameters.check_input_dictionary import _check_numerical_dict +from feature_engine._check_input_parameters.check_input_dictionary import ( + check_numerical_dict, +) @pytest.mark.parametrize("input_dict", [{"a": 1, "b": "c"}, {1: 1, 2: "c"}]) def test_not_numerical_dict(input_dict): with pytest.raises(ValueError): - _check_numerical_dict(input_dict) + check_numerical_dict(input_dict) @pytest.mark.parametrize("input_dict", [[1, 2, 3], (1, 2, 3), "hola", 5]) def test_input_type(input_dict): with pytest.raises(TypeError): - _check_numerical_dict(input_dict) + check_numerical_dict(input_dict) From 4d473e03ae45627de7e4acd8cf1007d0ca6cd01a Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Wed, 24 Aug 2022 15:28:53 +0200 Subject: [PATCH 3/5] sort imports --- feature_engine/creation/base_creation.py | 19 ++++------ feature_engine/creation/cyclical_features.py | 35 +++++++------------ feature_engine/creation/math_features.py | 16 +++------ feature_engine/creation/relative_features.py | 23 +++++------- feature_engine/imputation/arbitrary_number.py | 27 ++++++-------- feature_engine/outliers/artbitrary.py | 32 +++++++---------- 6 files changed, 55 insertions(+), 97 deletions(-) diff --git a/feature_engine/creation/base_creation.py b/feature_engine/creation/base_creation.py index 8dc28db01..e3870bfb7 100644 --- a/feature_engine/creation/base_creation.py +++ b/feature_engine/creation/base_creation.py @@ -5,18 +5,13 @@ from sklearn.utils.validation import check_is_fitted from feature_engine._check_input_parameters.check_init_input_params import ( - check_param_missing_values, - check_param_drop_original, -) -from feature_engine._variable_handling.variable_type_selection import ( - _find_or_check_numerical_variables, -) -from feature_engine.dataframe_checks import ( - _check_contains_inf, - _check_contains_na, - _check_X_matches_training_df, - check_X, -) + check_param_drop_original, check_param_missing_values) +from feature_engine._variable_handling.variable_type_selection import \ + _find_or_check_numerical_variables +from feature_engine.dataframe_checks import (_check_contains_inf, + _check_contains_na, + _check_X_matches_training_df, + check_X) from feature_engine.tags import _return_tags diff --git a/feature_engine/creation/cyclical_features.py b/feature_engine/creation/cyclical_features.py index bd709228b..a96dac448 100644 --- a/feature_engine/creation/cyclical_features.py +++ b/feature_engine/creation/cyclical_features.py @@ -4,32 +4,23 @@ import pandas as pd from sklearn.utils.validation import check_is_fitted - -from feature_engine._check_input_parameters.check_init_input_params import ( - check_param_drop_original, -) -from feature_engine._check_input_parameters.check_input_dictionary import ( - check_numerical_dict, -) -from feature_engine._base_transformers.base_numerical import BaseNumericalTransformer +from feature_engine._base_transformers.base_numerical import \ + BaseNumericalTransformer from feature_engine._base_transformers.mixins import FitFromDictMixin +from feature_engine._check_input_parameters.check_init_input_params import \ + check_param_drop_original +from feature_engine._check_input_parameters.check_input_dictionary import \ + check_numerical_dict from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, - _n_features_in_docstring, - _variables_attribute_docstring, -) + _feature_names_in_docstring, _n_features_in_docstring, + _variables_attribute_docstring) from feature_engine._docstrings.init_parameters import ( - _drop_original_docstring, - _variables_numerical_docstring, -) -from feature_engine._docstrings.methods import ( - _fit_transform_docstring, - _transform_creation_docstring, -) + _drop_original_docstring, _variables_numerical_docstring) +from feature_engine._docstrings.methods import (_fit_transform_docstring, + _transform_creation_docstring) from feature_engine._docstrings.substitute import Substitution -from feature_engine._variable_handling.init_parameter_checks import ( - _check_init_parameter_variables, -) +from feature_engine._variable_handling.init_parameter_checks import \ + _check_init_parameter_variables @Substitution( diff --git a/feature_engine/creation/math_features.py b/feature_engine/creation/math_features.py index 136b6d468..ac73e44d9 100644 --- a/feature_engine/creation/math_features.py +++ b/feature_engine/creation/math_features.py @@ -4,18 +4,12 @@ from sklearn.utils.validation import check_is_fitted from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, - _n_features_in_docstring, -) + _feature_names_in_docstring, _n_features_in_docstring) from feature_engine._docstrings.init_parameters import ( - _drop_original_docstring, - _missing_values_docstring, -) -from feature_engine._docstrings.methods import ( - _fit_not_learn_docstring, - _fit_transform_docstring, - _transform_creation_docstring, -) + _drop_original_docstring, _missing_values_docstring) +from feature_engine._docstrings.methods import (_fit_not_learn_docstring, + _fit_transform_docstring, + _transform_creation_docstring) from feature_engine._docstrings.substitute import Substitution from feature_engine.creation.base_creation import BaseCreation diff --git a/feature_engine/creation/relative_features.py b/feature_engine/creation/relative_features.py index 3096e5875..ee5875516 100644 --- a/feature_engine/creation/relative_features.py +++ b/feature_engine/creation/relative_features.py @@ -4,23 +4,16 @@ from sklearn.utils.validation import check_is_fitted from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, - _n_features_in_docstring, -) + _feature_names_in_docstring, _n_features_in_docstring) from feature_engine._docstrings.init_parameters import ( - _drop_original_docstring, - _missing_values_docstring, - _variables_numerical_docstring, -) -from feature_engine._docstrings.methods import ( - _fit_not_learn_docstring, - _fit_transform_docstring, - _transform_creation_docstring, -) + _drop_original_docstring, _missing_values_docstring, + _variables_numerical_docstring) +from feature_engine._docstrings.methods import (_fit_not_learn_docstring, + _fit_transform_docstring, + _transform_creation_docstring) from feature_engine._docstrings.substitute import Substitution -from feature_engine._variable_handling.variable_type_selection import ( - _find_or_check_numerical_variables, -) +from feature_engine._variable_handling.variable_type_selection import \ + _find_or_check_numerical_variables from feature_engine.creation.base_creation import BaseCreation _PERMITTED_FUNCTIONS = [ diff --git a/feature_engine/imputation/arbitrary_number.py b/feature_engine/imputation/arbitrary_number.py index 70645a9bc..e9b29b12d 100644 --- a/feature_engine/imputation/arbitrary_number.py +++ b/feature_engine/imputation/arbitrary_number.py @@ -5,27 +5,20 @@ import pandas as pd +from feature_engine._check_input_parameters.check_input_dictionary import \ + check_numerical_dict from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, - _n_features_in_docstring, - _variables_attribute_docstring, -) -from feature_engine._docstrings.methods import ( - _fit_not_learn_docstring, - _fit_transform_docstring, -) + _feature_names_in_docstring, _n_features_in_docstring, + _variables_attribute_docstring) +from feature_engine._docstrings.methods import (_fit_not_learn_docstring, + _fit_transform_docstring) from feature_engine._docstrings.substitute import Substitution -from feature_engine._variable_handling.init_parameter_checks import ( - _check_init_parameter_variables, -) -from feature_engine._variable_handling.variable_type_selection import ( - _find_or_check_numerical_variables, -) +from feature_engine._variable_handling.init_parameter_checks import \ + _check_init_parameter_variables +from feature_engine._variable_handling.variable_type_selection import \ + _find_or_check_numerical_variables from feature_engine.dataframe_checks import check_X from feature_engine.imputation.base_imputer import BaseImputer -from feature_engine._check_input_parameters.check_input_dictionary import ( - check_numerical_dict, -) @Substitution( diff --git a/feature_engine/outliers/artbitrary.py b/feature_engine/outliers/artbitrary.py index 913df8c33..27e81be9f 100644 --- a/feature_engine/outliers/artbitrary.py +++ b/feature_engine/outliers/artbitrary.py @@ -6,29 +6,21 @@ import pandas as pd +from feature_engine._check_input_parameters.check_input_dictionary import \ + check_numerical_dict from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, - _n_features_in_docstring, - _variables_attribute_docstring, -) -from feature_engine._docstrings.init_parameters import _missing_values_docstring -from feature_engine._docstrings.methods import ( - _fit_not_learn_docstring, - _fit_transform_docstring, -) + _feature_names_in_docstring, _n_features_in_docstring, + _variables_attribute_docstring) +from feature_engine._docstrings.init_parameters import \ + _missing_values_docstring +from feature_engine._docstrings.methods import (_fit_not_learn_docstring, + _fit_transform_docstring) from feature_engine._docstrings.substitute import Substitution -from feature_engine._variable_handling.variable_type_selection import ( - _find_or_check_numerical_variables, -) -from feature_engine.dataframe_checks import ( - _check_contains_inf, - _check_contains_na, - check_X, -) +from feature_engine._variable_handling.variable_type_selection import \ + _find_or_check_numerical_variables +from feature_engine.dataframe_checks import (_check_contains_inf, + _check_contains_na, check_X) from feature_engine.outliers.base_outlier import BaseOutlier -from feature_engine._check_input_parameters.check_input_dictionary import ( - check_numerical_dict, -) from feature_engine.tags import _return_tags From e8417b630481f65d0aa04bc82539e4e1b8315683 Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Wed, 24 Aug 2022 15:31:54 +0200 Subject: [PATCH 4/5] fix code style after sorting import --- feature_engine/creation/base_creation.py | 19 +++++++---- feature_engine/creation/cyclical_features.py | 34 ++++++++++++------- feature_engine/creation/math_features.py | 16 ++++++--- feature_engine/creation/relative_features.py | 23 ++++++++----- feature_engine/imputation/arbitrary_number.py | 27 +++++++++------ feature_engine/outliers/artbitrary.py | 32 ++++++++++------- 6 files changed, 96 insertions(+), 55 deletions(-) diff --git a/feature_engine/creation/base_creation.py b/feature_engine/creation/base_creation.py index e3870bfb7..a0447b3a5 100644 --- a/feature_engine/creation/base_creation.py +++ b/feature_engine/creation/base_creation.py @@ -5,13 +5,18 @@ from sklearn.utils.validation import check_is_fitted from feature_engine._check_input_parameters.check_init_input_params import ( - check_param_drop_original, check_param_missing_values) -from feature_engine._variable_handling.variable_type_selection import \ - _find_or_check_numerical_variables -from feature_engine.dataframe_checks import (_check_contains_inf, - _check_contains_na, - _check_X_matches_training_df, - check_X) + check_param_drop_original, + check_param_missing_values, +) +from feature_engine._variable_handling.variable_type_selection import ( + _find_or_check_numerical_variables, +) +from feature_engine.dataframe_checks import ( + _check_contains_inf, + _check_contains_na, + _check_X_matches_training_df, + check_X, +) from feature_engine.tags import _return_tags diff --git a/feature_engine/creation/cyclical_features.py b/feature_engine/creation/cyclical_features.py index a96dac448..d61af505b 100644 --- a/feature_engine/creation/cyclical_features.py +++ b/feature_engine/creation/cyclical_features.py @@ -4,23 +4,31 @@ import pandas as pd from sklearn.utils.validation import check_is_fitted -from feature_engine._base_transformers.base_numerical import \ - BaseNumericalTransformer +from feature_engine._base_transformers.base_numerical import BaseNumericalTransformer from feature_engine._base_transformers.mixins import FitFromDictMixin -from feature_engine._check_input_parameters.check_init_input_params import \ - check_param_drop_original -from feature_engine._check_input_parameters.check_input_dictionary import \ - check_numerical_dict +from feature_engine._check_input_parameters.check_init_input_params import ( + check_param_drop_original, +) +from feature_engine._check_input_parameters.check_input_dictionary import ( + check_numerical_dict, +) from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, _n_features_in_docstring, - _variables_attribute_docstring) + _feature_names_in_docstring, + _n_features_in_docstring, + _variables_attribute_docstring, +) from feature_engine._docstrings.init_parameters import ( - _drop_original_docstring, _variables_numerical_docstring) -from feature_engine._docstrings.methods import (_fit_transform_docstring, - _transform_creation_docstring) + _drop_original_docstring, + _variables_numerical_docstring, +) +from feature_engine._docstrings.methods import ( + _fit_transform_docstring, + _transform_creation_docstring, +) from feature_engine._docstrings.substitute import Substitution -from feature_engine._variable_handling.init_parameter_checks import \ - _check_init_parameter_variables +from feature_engine._variable_handling.init_parameter_checks import ( + _check_init_parameter_variables, +) @Substitution( diff --git a/feature_engine/creation/math_features.py b/feature_engine/creation/math_features.py index ac73e44d9..136b6d468 100644 --- a/feature_engine/creation/math_features.py +++ b/feature_engine/creation/math_features.py @@ -4,12 +4,18 @@ from sklearn.utils.validation import check_is_fitted from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, _n_features_in_docstring) + _feature_names_in_docstring, + _n_features_in_docstring, +) from feature_engine._docstrings.init_parameters import ( - _drop_original_docstring, _missing_values_docstring) -from feature_engine._docstrings.methods import (_fit_not_learn_docstring, - _fit_transform_docstring, - _transform_creation_docstring) + _drop_original_docstring, + _missing_values_docstring, +) +from feature_engine._docstrings.methods import ( + _fit_not_learn_docstring, + _fit_transform_docstring, + _transform_creation_docstring, +) from feature_engine._docstrings.substitute import Substitution from feature_engine.creation.base_creation import BaseCreation diff --git a/feature_engine/creation/relative_features.py b/feature_engine/creation/relative_features.py index ee5875516..3096e5875 100644 --- a/feature_engine/creation/relative_features.py +++ b/feature_engine/creation/relative_features.py @@ -4,16 +4,23 @@ from sklearn.utils.validation import check_is_fitted from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, _n_features_in_docstring) + _feature_names_in_docstring, + _n_features_in_docstring, +) from feature_engine._docstrings.init_parameters import ( - _drop_original_docstring, _missing_values_docstring, - _variables_numerical_docstring) -from feature_engine._docstrings.methods import (_fit_not_learn_docstring, - _fit_transform_docstring, - _transform_creation_docstring) + _drop_original_docstring, + _missing_values_docstring, + _variables_numerical_docstring, +) +from feature_engine._docstrings.methods import ( + _fit_not_learn_docstring, + _fit_transform_docstring, + _transform_creation_docstring, +) from feature_engine._docstrings.substitute import Substitution -from feature_engine._variable_handling.variable_type_selection import \ - _find_or_check_numerical_variables +from feature_engine._variable_handling.variable_type_selection import ( + _find_or_check_numerical_variables, +) from feature_engine.creation.base_creation import BaseCreation _PERMITTED_FUNCTIONS = [ diff --git a/feature_engine/imputation/arbitrary_number.py b/feature_engine/imputation/arbitrary_number.py index e9b29b12d..6f7f5b998 100644 --- a/feature_engine/imputation/arbitrary_number.py +++ b/feature_engine/imputation/arbitrary_number.py @@ -5,18 +5,25 @@ import pandas as pd -from feature_engine._check_input_parameters.check_input_dictionary import \ - check_numerical_dict +from feature_engine._check_input_parameters.check_input_dictionary import ( + check_numerical_dict, +) from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, _n_features_in_docstring, - _variables_attribute_docstring) -from feature_engine._docstrings.methods import (_fit_not_learn_docstring, - _fit_transform_docstring) + _feature_names_in_docstring, + _n_features_in_docstring, + _variables_attribute_docstring, +) +from feature_engine._docstrings.methods import ( + _fit_not_learn_docstring, + _fit_transform_docstring, +) from feature_engine._docstrings.substitute import Substitution -from feature_engine._variable_handling.init_parameter_checks import \ - _check_init_parameter_variables -from feature_engine._variable_handling.variable_type_selection import \ - _find_or_check_numerical_variables +from feature_engine._variable_handling.init_parameter_checks import ( + _check_init_parameter_variables, +) +from feature_engine._variable_handling.variable_type_selection import ( + _find_or_check_numerical_variables, +) from feature_engine.dataframe_checks import check_X from feature_engine.imputation.base_imputer import BaseImputer diff --git a/feature_engine/outliers/artbitrary.py b/feature_engine/outliers/artbitrary.py index 27e81be9f..8848f57dd 100644 --- a/feature_engine/outliers/artbitrary.py +++ b/feature_engine/outliers/artbitrary.py @@ -6,20 +6,28 @@ import pandas as pd -from feature_engine._check_input_parameters.check_input_dictionary import \ - check_numerical_dict +from feature_engine._check_input_parameters.check_input_dictionary import ( + check_numerical_dict, +) from feature_engine._docstrings.fit_attributes import ( - _feature_names_in_docstring, _n_features_in_docstring, - _variables_attribute_docstring) -from feature_engine._docstrings.init_parameters import \ - _missing_values_docstring -from feature_engine._docstrings.methods import (_fit_not_learn_docstring, - _fit_transform_docstring) + _feature_names_in_docstring, + _n_features_in_docstring, + _variables_attribute_docstring, +) +from feature_engine._docstrings.init_parameters import _missing_values_docstring +from feature_engine._docstrings.methods import ( + _fit_not_learn_docstring, + _fit_transform_docstring, +) from feature_engine._docstrings.substitute import Substitution -from feature_engine._variable_handling.variable_type_selection import \ - _find_or_check_numerical_variables -from feature_engine.dataframe_checks import (_check_contains_inf, - _check_contains_na, check_X) +from feature_engine._variable_handling.variable_type_selection import ( + _find_or_check_numerical_variables, +) +from feature_engine.dataframe_checks import ( + _check_contains_inf, + _check_contains_na, + check_X, +) from feature_engine.outliers.base_outlier import BaseOutlier from feature_engine.tags import _return_tags From abd6c9b1ba138daade2b014e31757e79dcd3fcce Mon Sep 17 00:00:00 2001 From: Soledad Galli Date: Wed, 24 Aug 2022 15:51:09 +0200 Subject: [PATCH 5/5] add leading underscore --- .../_check_input_parameters/check_init_input_params.py | 4 ++-- .../_check_input_parameters/check_input_dictionary.py | 2 +- feature_engine/creation/base_creation.py | 8 ++++---- feature_engine/creation/cyclical_features.py | 8 ++++---- feature_engine/imputation/arbitrary_number.py | 4 ++-- feature_engine/outliers/artbitrary.py | 6 +++--- tests/test_parameter_checks.py | 6 +++--- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/feature_engine/_check_input_parameters/check_init_input_params.py b/feature_engine/_check_input_parameters/check_init_input_params.py index a4012d8a6..00054da2c 100644 --- a/feature_engine/_check_input_parameters/check_init_input_params.py +++ b/feature_engine/_check_input_parameters/check_init_input_params.py @@ -1,5 +1,5 @@ -def check_param_missing_values(missing_values): +def _check_param_missing_values(missing_values): if missing_values not in ["raise", "ignore"]: raise ValueError( "missing_values takes only values 'raise' or 'ignore'. " @@ -7,7 +7,7 @@ def check_param_missing_values(missing_values): ) -def check_param_drop_original(drop_original): +def _check_param_drop_original(drop_original): if not isinstance(drop_original, bool): raise TypeError( "drop_original takes only boolean values True and False. " diff --git a/feature_engine/_check_input_parameters/check_input_dictionary.py b/feature_engine/_check_input_parameters/check_input_dictionary.py index d76c3395e..a9a0df9d8 100644 --- a/feature_engine/_check_input_parameters/check_input_dictionary.py +++ b/feature_engine/_check_input_parameters/check_input_dictionary.py @@ -1,7 +1,7 @@ from typing import Optional -def check_numerical_dict(dict_: Optional[dict]) -> Optional[dict]: +def _check_numerical_dict(dict_: Optional[dict]) -> Optional[dict]: """ Checks if all values in dictionary are integers and floats. Can take None as argument. diff --git a/feature_engine/creation/base_creation.py b/feature_engine/creation/base_creation.py index a0447b3a5..3dab2cf16 100644 --- a/feature_engine/creation/base_creation.py +++ b/feature_engine/creation/base_creation.py @@ -5,8 +5,8 @@ from sklearn.utils.validation import check_is_fitted from feature_engine._check_input_parameters.check_init_input_params import ( - check_param_drop_original, - check_param_missing_values, + _check_param_drop_original, + _check_param_missing_values, ) from feature_engine._variable_handling.variable_type_selection import ( _find_or_check_numerical_variables, @@ -29,8 +29,8 @@ def __init__( drop_original: bool = False, ) -> None: - check_param_missing_values(missing_values) - check_param_drop_original(drop_original) + _check_param_missing_values(missing_values) + _check_param_drop_original(drop_original) self.missing_values = missing_values self.drop_original = drop_original diff --git a/feature_engine/creation/cyclical_features.py b/feature_engine/creation/cyclical_features.py index d61af505b..da33d0996 100644 --- a/feature_engine/creation/cyclical_features.py +++ b/feature_engine/creation/cyclical_features.py @@ -7,10 +7,10 @@ from feature_engine._base_transformers.base_numerical import BaseNumericalTransformer from feature_engine._base_transformers.mixins import FitFromDictMixin from feature_engine._check_input_parameters.check_init_input_params import ( - check_param_drop_original, + _check_param_drop_original, ) from feature_engine._check_input_parameters.check_input_dictionary import ( - check_numerical_dict, + _check_numerical_dict, ) from feature_engine._docstrings.fit_attributes import ( _feature_names_in_docstring, @@ -103,8 +103,8 @@ def __init__( drop_original: Optional[bool] = False, ) -> None: - check_numerical_dict(max_values) - check_param_drop_original(drop_original) + _check_numerical_dict(max_values) + _check_param_drop_original(drop_original) self.variables = _check_init_parameter_variables(variables) self.max_values = max_values diff --git a/feature_engine/imputation/arbitrary_number.py b/feature_engine/imputation/arbitrary_number.py index 6f7f5b998..fa2e56e1b 100644 --- a/feature_engine/imputation/arbitrary_number.py +++ b/feature_engine/imputation/arbitrary_number.py @@ -6,7 +6,7 @@ import pandas as pd from feature_engine._check_input_parameters.check_input_dictionary import ( - check_numerical_dict, + _check_numerical_dict, ) from feature_engine._docstrings.fit_attributes import ( _feature_names_in_docstring, @@ -101,7 +101,7 @@ def __init__( else: raise ValueError("arbitrary_number must be numeric of type int or float") - check_numerical_dict(imputer_dict) + _check_numerical_dict(imputer_dict) self.variables = _check_init_parameter_variables(variables) diff --git a/feature_engine/outliers/artbitrary.py b/feature_engine/outliers/artbitrary.py index 8848f57dd..76ff468a2 100644 --- a/feature_engine/outliers/artbitrary.py +++ b/feature_engine/outliers/artbitrary.py @@ -7,7 +7,7 @@ import pandas as pd from feature_engine._check_input_parameters.check_input_dictionary import ( - check_numerical_dict, + _check_numerical_dict, ) from feature_engine._docstrings.fit_attributes import ( _feature_names_in_docstring, @@ -104,8 +104,8 @@ def __init__( if missing_values not in ["raise", "ignore"]: raise ValueError("missing_values takes only values 'raise' or 'ignore'") - check_numerical_dict(max_capping_dict) - check_numerical_dict(min_capping_dict) + _check_numerical_dict(max_capping_dict) + _check_numerical_dict(min_capping_dict) self.max_capping_dict = max_capping_dict self.min_capping_dict = min_capping_dict diff --git a/tests/test_parameter_checks.py b/tests/test_parameter_checks.py index 84aab8c1c..49b306586 100644 --- a/tests/test_parameter_checks.py +++ b/tests/test_parameter_checks.py @@ -1,17 +1,17 @@ import pytest from feature_engine._check_input_parameters.check_input_dictionary import ( - check_numerical_dict, + _check_numerical_dict, ) @pytest.mark.parametrize("input_dict", [{"a": 1, "b": "c"}, {1: 1, 2: "c"}]) def test_not_numerical_dict(input_dict): with pytest.raises(ValueError): - check_numerical_dict(input_dict) + _check_numerical_dict(input_dict) @pytest.mark.parametrize("input_dict", [[1, 2, 3], (1, 2, 3), "hola", 5]) def test_input_type(input_dict): with pytest.raises(TypeError): - check_numerical_dict(input_dict) + _check_numerical_dict(input_dict)