Skip to content

fix(tsfm): allowlist remaining transformers and tabular estimators - #638

Closed
ShuxinLin wants to merge 3 commits into
aafeedback_changes_tsfm_toolsfrom
fix/tsfm-allowlist-transformers
Closed

ShuxinLin wants to merge 3 commits into
aafeedback_changes_tsfm_toolsfrom
fix/tsfm-allowlist-transformers

Conversation

@ShuxinLin

@ShuxinLin ShuxinLin commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Follow-up to #633 (review comment on resolver.py:33). #633's 08e817b already allowlists the core forecasting transforms and adds RandomForestRegressor, GradientBoostingRegressor, Ridge and KMeans. This PR adds the remaining common estimators that worked before #633 and are still refused there:

  • run_tabular_recipe classification with anything other than RandomForestClassifier
  • regressors other than those three
  • Rocket / MiniRocketMultivariate tabular transforms, and a few more series transforms

Fix Details

substrate/resolver.py: add 15 exact paths to 08e817b's groups:

  • forecasting transforms: SqrtTransformer, ConditionalDeseasonalizer, HampelFilter, TrendForecaster (nested in Detrender/Imputer), RobustScaler (nested in TabularToSeriesAdaptor)
  • tabular transforms: Rocket, MiniRocketMultivariate
  • tabular estimators: ExtraTreesRegressor, LinearRegression, Lasso, KNeighborsRegressor, ExtraTreesClassifier, GradientBoostingClassifier, LogisticRegression, KNeighborsClassifier

None of the additions take a callable, a file path or a pickle. FunctionTransformer stays out. TSFreshFeatureExtractor stays out because tsfresh is not installed. (SummaryTransformer from 08e817b is fine: sktime checks summary_function against a fixed list before calling pandas.)

The branch merges the current #633 head. The conflict in ALLOWED_CLASSES was resolved as the union, keeping 08e817b's lines and grouping as they are.

Impact on Benchmarking

Related Issues

Verification Steps

  1. uv run pytest src/servers/tsfm/tests: 153 passed.
  2. New test_every_allowed_class_imports imports every ALLOWED_CLASSES path, which catches typos or sktime path drift. My earlier transform/regression tests were dropped because 08e817b adds equivalent ones.
  3. Manually: each added class succeeded end to end through run_recipe / run_tabular_recipe.

Checklist

  • I have added tests that prove my fix is effective.
  • My code follows the project's Ruff formatting and linting rules (no new findings in the changed lines).
  • I have signed off my commits (DCO).

The estimator allowlist had no sktime transformers and only one tabular
estimator, so the advertised recipe features always failed with
"... is not an allowed estimator class":

- forecasting `transforms` (e.g. ExponentTransformer, Detrender)
- tabular `sktime_class` transforms (e.g. Catch22, MiniRocket)
- `tsfm_regression` (no regressor was allowed)
- tabular classification/clustering other than RandomForestClassifier

Add the series/panel transformers, the trend forecasters and sklearn
scalers they nest, and common sklearn regressors, classifiers and KMeans.
None take a callable, file path or pickle. Tests cover a transformed
forecast, a Catch22 -> RandomForestRegressor regression, and that every
allowlisted path imports.

Signed-off-by: Shuxin Lin <linshuhsin@gmail.com>
Resolve the ALLOWED_CLASSES conflict with 08e817b as the union: keep that
commit's groups as-is and add the remaining transformers, scalers and
tabular estimators from this branch to the matching group.

Signed-off-by: Shuxin Lin <linshuhsin@gmail.com>
08e817b adds test_forecasting_transforms_still_run and
test_tabular_regression_still_runs; keep only the allowlist import check.

Signed-off-by: Shuxin Lin <linshuhsin@gmail.com>
@ShuxinLin ShuxinLin changed the title fix(tsfm): allowlist transformers and tabular estimators fix(tsfm): allowlist remaining transformers and tabular estimators Oct 15, 2026
@ShuxinLin ShuxinLin closed this Oct 15, 2026
@ShuxinLin
ShuxinLin deleted the fix/tsfm-allowlist-transformers branch October 15, 2026 02:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant