From c0d29b4eee6141b38d9d21579734f2035180bfc0 Mon Sep 17 00:00:00 2001 From: Jan Cap Date: Sat, 16 Dec 2023 20:04:42 +0100 Subject: [PATCH] feat: add summary algs support for VariableDescription --- .../model/summary_algorithms.py | 85 +++++++++---------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/src/ydata_profiling/model/summary_algorithms.py b/src/ydata_profiling/model/summary_algorithms.py index cd4b5743e..998eba1d1 100644 --- a/src/ydata_profiling/model/summary_algorithms.py +++ b/src/ydata_profiling/model/summary_algorithms.py @@ -7,6 +7,7 @@ from scipy.stats import chisquare from ydata_profiling.config import Settings +from ydata_profiling.model.var_description.default import VarDescription T = TypeVar("T") @@ -58,13 +59,18 @@ def chi_square( def series_hashable( - fn: Callable[[Settings, pd.Series, dict], Tuple[Settings, pd.Series, dict]] -) -> Callable[[Settings, pd.Series, dict], Tuple[Settings, pd.Series, dict]]: + fn: Callable[ + [Settings, pd.Series, VarDescription], + Tuple[Settings, pd.Series, VarDescription], + ] +) -> Callable[ + [Settings, pd.Series, VarDescription], Tuple[Settings, pd.Series, VarDescription] +]: @functools.wraps(fn) def inner( - config: Settings, series: pd.Series, summary: dict - ) -> Tuple[Settings, pd.Series, dict]: - if not summary["hashable"]: + config: Settings, series: pd.Series, summary: VarDescription + ) -> Tuple[Settings, pd.Series, VarDescription]: + if not summary.hashable: return config, series, summary return fn(config, series, summary) @@ -72,14 +78,19 @@ def inner( def series_handle_nulls( - fn: Callable[[Settings, pd.Series, dict], Tuple[Settings, pd.Series, dict]] -) -> Callable[[Settings, pd.Series, dict], Tuple[Settings, pd.Series, dict]]: + fn: Callable[ + [Settings, pd.Series, VarDescription], + Tuple[Settings, pd.Series, VarDescription], + ] +) -> Callable[ + [Settings, pd.Series, VarDescription], Tuple[Settings, pd.Series, VarDescription] +]: """Decorator for nullable series""" @functools.wraps(fn) def inner( - config: Settings, series: pd.Series, summary: dict - ) -> Tuple[Settings, pd.Series, dict]: + config: Settings, series: pd.Series, summary: VarDescription + ) -> Tuple[Settings, pd.Series, VarDescription]: if series.hasnans: series = series.dropna() @@ -99,92 +110,78 @@ def named_aggregate_summary(series: pd.Series, key: str) -> dict: return summary -@multimethod -def describe_counts( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: - raise NotImplementedError() - - @multimethod def describe_supported( config: Settings, series: Any, series_description: dict -) -> Tuple[Settings, Any, dict]: - raise NotImplementedError() - - -@multimethod -def describe_generic( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_numeric_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_text_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict, Any]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_date_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_categorical_1d( - config: Settings, series: pd.Series, summary: dict -) -> Tuple[Settings, pd.Series, dict]: + config: Settings, series: pd.Series, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_url_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_file_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_path_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_image_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_boolean_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError() @multimethod def describe_timeseries_1d( - config: Settings, series: Any, summary: dict -) -> Tuple[Settings, Any, dict]: + config: Settings, series: Any, summary: VarDescription +) -> Tuple[Settings, Any, VarDescription]: raise NotImplementedError()