API: preprocessing.cleaning
skyulf.preprocessing.cleaning
Cleaning nodes (Text / InvalidValue / ValueReplacement / AliasReplacement).
Each Applier dispatches on engine via apply_dual_engine so per-engine
logic lives in small _apply_polars / _apply_pandas static helpers.
Per-operation work is further split into module-level helpers (_trim_*,
_case_*, _remove_special_*, _regex_*, _invalid_rule_*) plus
small dispatch dicts so individual methods stay at CCN ≤ 8.