chart_me.data_validation_strategy

Defines ValidateColumnStrategy Prototal & Defines a Default Implementation

The Protocol specifies 1 method - validate_column. The default implementation leverage module level Custom Exceptions

Typical usage example:

for c in cols:

#will raise an error if insufficient ValidateColumnStrategyDefault.validate_column_strategy(df, c).validate_column() # noqa: E501

Exceptions

ColumnAllNullError

Implementation of error if column is all nulls

ColumnDoesNotExistsError

Implementation to track if column not found in pandas

ColumnTooManyNullsError

Implementation of error if columns has too many nulls

Classes

ValidateColumnStrategy

Protocol Definition for ValidateColumnStrategy

ValidateColumnStrategyDefault

Default implentation of ValidateColumnStrategy

Module Contents

exception chart_me.data_validation_strategy.ColumnAllNullError[source]

Bases: Exception

Implementation of error if column is all nulls

exception chart_me.data_validation_strategy.ColumnDoesNotExistsError[source]

Bases: Exception

Implementation to track if column not found in pandas

exception chart_me.data_validation_strategy.ColumnTooManyNullsError(null_rate, message='Null Rate below Threshold')[source]

Bases: Exception

Implementation of error if columns has too many nulls

__str__()[source]

Override string representations

class chart_me.data_validation_strategy.ValidateColumnStrategy[source]

Bases: Protocol

Protocol Definition for ValidateColumnStrategy

validate_column() bool[source]

Only required method

class chart_me.data_validation_strategy.ValidateColumnStrategyDefault(df: pandas.DataFrame, col: str, *, override_null_rate: float = 0.95)[source]

Default implentation of ValidateColumnStrategy

Class is leverage to evaluate whether column selected is viable for charting

null_rate

A decimal indicating what percent of null entries in column is ok

null_rate: float = 0.95
validate_column() bool[source]

Logic the evaluate column

Returns:

True or Raises an Error #TODO think of better strategy

Raises: