Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
e23edff
bump: version 1.8.0 → 2.0.0rc1
mkumar73 Jun 21, 2026
84940bb
docs(release): update workflow and clarify dep-update step
mkumar73 Jun 21, 2026
4991e9d
docs(release): minor wording fix
mkumar73 Jun 21, 2026
4b57052
build(deps): bump aiohttp, bleach, tornado to patch security advisories
mkumar73 Jun 21, 2026
0b8b825
docs: add section landing pages and fix broken index links
mkumar73 Jun 21, 2026
a30c65b
fix(sklearn_compat): cast pandas category columns to object in ensure…
mkumar73 Jun 22, 2026
76285e4
fix(training): register custom torchmetrics via nn.ModuleDict so stat…
mkumar73 Jun 22, 2026
321589c
docs: fix TabularDataset kwargs and invalid numerical_preprocessing v…
mkumar73 Jun 22, 2026
3524082
build: declare optional structlog/mlflow/tensorboard deps for extras
mkumar73 Jun 22, 2026
c698782
refactor(core): centralize optional-dependency
mkumar73 Jun 22, 2026
7311524
build: migrate extras to [project.optional-dependencies] with version…
mkumar73 Jun 22, 2026
7000679
refactor(models): drop legacy flat-kwargs constructor
mkumar73 Jun 22, 2026
8c46f3d
docs: add PreTab ref, reorder sections, add v1 vs v2 migration guidance
mkumar73 Jun 22, 2026
6e57f8f
docs(license): update copyright holder to OpenTabular
mkumar73 Jun 22, 2026
b6f10fc
build: refine package description
mkumar73 Jun 22, 2026
24ab6f1
fix(sklearn_compat): satisfy pandas typing in ensure_dataframe
mkumar73 Jun 22, 2026
7ee02b1
feat(hardware): add print_hardware_info for CPU/CUDA/MPS detection
mkumar73 Jun 22, 2026
4427bff
docs: update overview add when-to-use table
mkumar73 Jun 22, 2026
75341a0
docs: revise quickstart and faq answers
mkumar73 Jun 22, 2026
52771cf
docs: refine faq dataloader and gpu guidance
mkumar73 Jun 22, 2026
611a7e7
build(docs): clean docs build
mkumar73 Jun 22, 2026
ed5dcaf
docs(core_concepts): fix cmd output and update install instructions
mkumar73 Jun 22, 2026
8721c53
docs(developer_guide): refine developer guide
mkumar73 Jun 22, 2026
751f545
docs(faq): fix broken homepage cross reference
mkumar73 Jun 22, 2026
deaea3b
bump: version 2.0.0rc1 → 2.0.0rc2
mkumar73 Jun 22, 2026
3646886
ci: guard PyPI publish with RC tags
mkumar73 Jun 22, 2026
48b62bb
docs(model_zoo): refine model documentation
mkumar73 Jun 23, 2026
6c1eaab
docs: tango docstring update
mkumar73 Jun 23, 2026
8f97685
docs(model-zoo): update building block section
mkumar73 Jun 23, 2026
88214ad
docs(model_zoo): update model documentation
mkumar73 Jun 23, 2026
7a6733b
chore: rerun tutorial notebooks
mkumar73 Jun 23, 2026
c9b6ea7
docs(getting_started): add v1 to v2 migration guide
mkumar73 Jun 24, 2026
36b4622
build(audit): ignore non-actionable CVE advisories
mkumar73 Jun 24, 2026
6a81024
bump: version 2.0.0rc2 → 2.0.0
mkumar73 Jun 24, 2026
93b366e
docs: update migration guide
mkumar73 Jun 24, 2026
6aed82f
docs(changelog): merge rc1/rc2 entries into v2.0.0
mkumar73 Jun 24, 2026
441b1f2
docs(changelog): drop trivial tooling entries from v2.0.0
mkumar73 Jun 24, 2026
0becce8
test: stabilize experimental and observability tests
mkumar73 Jun 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/publish-pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ jobs:
publish:
runs-on: ubuntu-latest
environment: pypi-publish
# The "v*.*.*" trigger also matches RC tags (e.g. v2.0.0rc2), so guard
# against publishing pre-releases to real PyPI. RC tags are handled by
# publish-testpypi.yml instead.
if: ${{ !contains(github.ref_name, 'rc') }}

steps:
- name: Checkout code
Expand Down
127 changes: 127 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,133 @@ Going forward, this file is updated automatically by `cz bump` on each release.

---

## v2.0.0 (2026-06-24)

### BREAKING CHANGE

- internal package layout, configuration objects, and import
paths have changed. See the migration guide for details.

### Feat

- DeepTab v2 API with split-config design (#400)
- **config**: warn on misplaced config slots
- **training**: add unregister_optimizer, unregister_scheduler with built-in protection
- **inspection**: expose public read-only task_model property
- **models**: thread observability_config through all estimators
- **core**: add ObservabilityConfig
- **models**: expose ObservabilityConfig on base estimator constructor
- **models**: add observability mixin wiring ObservabilityConfig to base estimators
- **models**: integrate ObservabilityConfig into fit mixin
- **training**: rewrite configure_optimizers, add contrastive pretraining fixes, and cleanup
- introduce IDataModule/ITaskModel protocols and default factories, wire into SklearnBase
- **configs**: add optimizer/scheduler fields to TrainerConfig and InferenceModel support
- **training**: wire optimizer/scheduler registry into LightningModule and extend losses
- **training**: add optimizer/scheduler registry with all torch.optim classes
- **api**: export exception and warning types from deeptab and deeptab.core
- **configs,models**: add **post_init** validation using typed exceptions
- **core**: add exception hierarchy and message factories
- **models**: wire evaluate() in lss_base, regressor_base, and classifier_base to new deeptab.metrics registry
- **metrics**: add deeptab metrics ABC, regression, classification, lss
- add tweedie, inflated poissons, log normal etc. distribution
- light weight inference wrapper
- **serialization**: warn when save/load path lacks .deeptab extension
- **inspection**: add profile() method for pre-training dry-run diagnostics
- **training**: add class-imbalance loss registry and weighted sampling
- **core**: add set_seed/seed_context reproducibility helpers
- **core**: add sklearn_compat module and update serialization/core exports
- add rich model artifact serialization metadata
- model inspection api added
- **data**: add optional TabularBatch return mode
- **data**: add stratified splitting for classification and schema property
- **data**: add FeatureSchema and TabularBatch typed containers
- **configs**: add SplitConfig for train/validation splitting parameters
- **root**: expose configs, data, distributions, metrics, models in top-level **init**
- **models**: add \_docstring helper to centralize generate_docstring for all models
- **models**: expose stable classes in **all** and add **getattr** shim for experimental
- **models**: add split base classes for classifier, regressor, and LSS task variants
- **configs**: add configs/core.py with shared base configuration definitions
- **configs**: add configs/experimental sub module for ModernNCA, Tangos, Trompt
- **configs**: add configs sub module with per-model config modules
- **hpo**: add hpo module with get_search_space mapper
- **metrics**: add metrics module stubs for classification, regression, distributional
- **distributions**: add distributions module with 12 distribution classes
- **data**: add data module with MambularDataModule, MambularDataset, batch, schema, split
- **training**: add training module with lightning module, losses, optimizers, schedulers
- **core**: add core module with BaseModel, registry, embeddings, pooling, serialization
- **architectures**: add experimental sub-package with ModernNCA, Tangos, Trompt
- **architectures**: add architectures module with all stable model definitions
- **nn**: add nn module with blocks, normalization, and initialization
- **config**: split config into trainer, model and preprocessing config
- **sklearn_parent**: implement split-config path in SklearnBase.**init**, get_params, set_params
- **models**: add split config **init** to all Classifier and Regressor wrappers
- **base_models**: replace DefaultXXConfig with XXConfig in all base model constructors
- **configs**: add \*Config for all architectures
- **configs**: add ENODEConfig architecture only config
- **hardware**: add print_hardware_info for CPU/CUDA/MPS detection

### Fix

- **sklearn_compat**: satisfy pandas typing in ensure_dataframe
- **training**: register custom torchmetrics via nn.ModuleDict so state moves to device
- **sklearn_compat**: cast pandas category columns to object in ensure_dataframe
- **modernnca**: support LSS prediction and add experimental model tests
- **models**: adapt child class to use class var, update docstring example
- **transformer**: use batch_first attention to prevent cross-sample leakage
- **hpo**: rebuild model per trial and map activation names to modules
- save default artificats to <run_dir>/artifacts/model.deeptab
- **base**: add **sklearn_is_fitted**, use check_is_fitted
- **sklearn_compat**: raise ValueError for 1D array input in ensure_dataframe
- **exceptions**: inherit EmptyDataError and ColumnCountError from ValueError for sklearn compat
- add seed to DataLoader/sampler generators
- data validation for parameters
- **models**: read optimizer_type and preprocessor live from config in \_build_model
- **test**: add typed error, fix preprocessing config
- **architectures,distributions**: replace ValueError with typed exceptions
- **docs**: remove dead cross-reference links and fix tables
- **training**: apply distribution parameter transform before passing predictions to metrics
- use r2 metric for regresion as default
- use getattr for task_model access in InspectionMixin
- enable side bar navigation for api reference
- **tests**: update flat-kwarg error assertions to match native TypeError message
- **tests**: update config lookup to search configs.models and configs.experimental
- training parameter added
- modernca config and model update
- **lss**: use getattr fallback for lr/weight_decay in SklearnBaseLSS.fit()

### Refactor

- **models**: drop legacy flat-kwargs constructor
- **core**: centralize optional-dependency
- replace SplitConfig with TrainerConfig.stratify and refresh docs
- **models**: adopt declarative class variable estimator pattern
- **hpo**: rename mapper.py to search_space.py and fix lss_base error
- **core**: update inspection and serialization for \_ attribute rename
- **models**: prefix non-constructor attributes with \_ for sklearn compliance
- extract \_FitMixin, \_PredictMixin, \_SerializationMixin, \_HyperparameterMixin, \_ObservabilityMixin from SklearnBase
- **configs**: remove legacy BaseConfig class
- **distributions**: separate dist classes, add registry
- consolidate save/load into core.serialization helpers
- **models**: update base classifier/regressor/lss model internals
- **data**: update datamodule and dataset internals
- **models**: update imports to use TabularDataModule
- **data**: rename to TabularDataset/TabularDataModule and move task-specific label logic to DataModule
- **models**: replace \*\*kwargs with explicit signatures in stable model constructors
- **hpo**: add missing exports to hpo/**init**.py
- **models**: update training and hpo imports to go through package boundaries
- **architectures**: update core imports to go through package boundary
- **architectures**: add lazy **getattr** boundary with TYPE_CHECKING guards
- **nn**: expose public API via nn/**init**.py boundary
- **training**: expose public API via training/**init**.py boundary
- **core**: expose public API via core/**init**.py boundary
- **architectures**: update config imports to use configs/models/ and configs/experimental/
- **models**: update config imports to use configs/models/, configs/experimental/, and configs/core
- **configs**: update **init** to import from core, models/, and experimental/
- **configs**: remove deprecated flat config files superseded by models/ and experimental/
- **models**: update import paths in experimental ModernNCA, Tangos, Trompt modules
- **models**: update import paths in ndtf, node, resnet, saint, tabm, tabr, tabtransformer, tabularnn
- **modules**: remove legacy arch_utils, base_models, data_utils, utils

## v1.8.0 (2026-05-24)

### Feat
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2024 BASF
Copyright (c) 2024 OpenTabular

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
## Why DeepTab?

- **Familiar interface.** A scikit-learn `fit`/`predict`/`evaluate` API that drops into existing pipelines, including `GridSearchCV`.
- **Automatic preprocessing.** Feature-type detection, encoding, scaling, and missing-value handling are built in.
- **Automatic preprocessing.** Feature-type detection, encoding, scaling, and missing-value handling are powered by [PreTab](https://github.com/OpenTabular/PreTab) and applied for you.
- **One model, three tasks.** Every architecture ships as a classifier, a regressor, and a distributional (`LSS`) variant for uncertainty quantification.
- **A broad model zoo.** 15 stable architectures plus experimental models, all behind the same interface, with [selection guidance](https://deeptab.readthedocs.io/en/latest/model_zoo/index.html).
- **Built for real data.** Mixed feature types, class imbalance, GPU acceleration, and early stopping work out of the box.
Expand Down
2 changes: 2 additions & 0 deletions deeptab/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
NotFittedError,
PerformanceWarning,
)
from .core.hardware import print_hardware_info
from .core.inference import InferenceModel
from .core.reproducibility import seed_context, set_seed

Expand All @@ -25,6 +26,7 @@
"distributions",
"metrics",
"models",
"print_hardware_info",
"seed_context",
"set_seed",
]
4 changes: 2 additions & 2 deletions deeptab/configs/experimental/tangos_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ class TangosConfig(BaseModelConfig):
skip_connections : bool, default=False
Whether to use skip connections in the TANGOS.
lamda1 : float, default=0.5
Weight on the task-specific orthogonality regularisation term.
Weight on the specialization regularisation term (multiplies ``spec_loss``).
lamda2 : float, default=0.1
Weight on the cross-task specialisation regularisation term.
Weight on the orthogonalization regularisation term (multiplies ``orth_loss``).
subsample : float, default=0.5
Fraction of features subsampled for regularisation estimation.
"""
Expand Down
2 changes: 2 additions & 0 deletions deeptab/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
NotFittedError,
PerformanceWarning,
)
from .hardware import print_hardware_info
from .inference import InferenceModel
from .inspection import ImportanceGetter, InspectionMixin, get_feature_dimensions
from .registry import MODEL_REGISTRY, ModelInfo
Expand Down Expand Up @@ -67,6 +68,7 @@
"get_feature_dimensions",
"load_state_dict",
"make_random_batches",
"print_hardware_info",
"restore_loaded_metadata",
"save_state_dict",
"seed_context",
Expand Down
Loading
Loading