Skip to content

feat(tabpfn): add TabPFN-3 support (v0.0.33) - #375

Merged
AzulGarza merged 2 commits into
mainfrom
feat/tabpfn-3
Sep 14, 2026
Merged

AzulGarza merged 2 commits into
mainfrom
feat/tabpfn-3

Conversation

@AzulGarza

Copy link
Copy Markdown
Member

Summary

  • Add TabPFN-3 support via foundationforecast>=0.1.6 (now on PyPI), keeping TabPFN-2 as the default checkpoint through model_path
  • Re-export TABPFN_V2_MODEL / TABPFN_V3_MODEL, update mock conftest, and add LOCAL integration tests for v2/v3 (point, quantiles, level)
  • Add TabPFN family notebook, model hub updates, CI TABPFN_TOKEN + checkpoint cache, and v0.0.33 changelog

Test plan

  • uv lock --upgrade-package foundationforecast resolves 0.1.6 from PyPI
  • pytest tests/models/foundation/test_tabpfn.py -m models (unit tests pass; integration tests skip without TABPFN_TOKEN)
  • CI green on all Python versions
  • Merge and tag v0.0.33 after review

Made with Cursor

AzulGarza and others added 2 commits September 14, 2026 12:59
Integrate foundationforecast 0.1.6 TabPFN-3 via model_path, update mock
conftest, add LOCAL integration tests, TabPFN family notebook, CI token/cache,
and release checklist. Uses a temporary git source until 0.1.6 is on PyPI.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove temporary git source now that TabPFN-3 is published, refresh the lock
file, align TabPFN tests with the released API, and drop the release checklist.

Co-authored-by: Cursor <cursoragent@cursor.com>
Copilot AI lite review requested due to automatic review settings September 14, 2026 20:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Two moderate test-coverage issues and an unregistered pytest marker remain.

Pull request overview

Adds TabPFN-3 support in v0.0.33 while retaining TabPFN-2 as the default checkpoint.

Changes:

  • Updates dependencies and exposes TabPFN v2/v3 constants.
  • Adds mocked, unit, and LOCAL integration tests.
  • Updates documentation, examples, changelogs, and CI caching/token configuration.
File summaries
File Summary
uv.lock Locks updated forecasting dependencies.
timecopilot/models/foundation/tabpfn.py Exposes TabPFN v2/v3 model constants.
tests/models/foundation/test_tabpfn.py Adds TabPFN tests. Moderate findings remain around silently skipping invalid-token V3 tests and hiding supported-version dependency failures; the models marker is also unregistered.
tests/models/conftest.py Adds a mocked TabPFN predictor.
pyproject.toml Updates dependencies and package version.
mkdocs.yml Updates documentation navigation.
docs/model-hub.md Documents TabPFN versions and licensing.
docs/examples/index.md Lists the TabPFN notebook.
docs/changelogs/v0.0.33.md Documents the release changes.
docs/changelogs/index.md Links the new changelog.
.github/workflows/ci.yaml Configures token injection and checkpoint caching.
Review details

Suppressed comments (3)

tests/models/foundation/test_tabpfn.py:95

  • These V3 integration tests treat any TabPFNLicenseError as a skip even though _require_tabpfn_token() has already confirmed that a token is present. A CI run with an invalid or unaccepted token can therefore skip every V3 case and still pass, so the advertised V3 coverage is not gating; make this configuration error fail CI or provide an explicitly configured opt-out instead of silently skipping it.
    except TabPFNLicenseError as exc:
        if model.model_path == TABPFN_V3_MODEL:
            pytest.skip(
                "TabPFN-3 license not accepted; accept at https://ux.priorlabs.ai"
            )

tests/models/foundation/test_tabpfn.py:10

  • tabpfn_time_series is a mandatory dependency of foundationforecast on the supported Python 3.10–3.12 interpreters, so importorskip would silently hide a broken installation and skip this entire test module. Restrict the module-level skip to Python >=3.13 and let missing dependencies fail on supported versions.
pytest.importorskip("tabpfn_time_series", reason="TabPFN requires Python < 3.13")

tests/models/foundation/test_tabpfn.py:24

  • The new models mark is not registered in [tool.pytest.ini_options].markers, so the documented pytest ... -m models command emits PytestUnknownMarkWarning. Register the marker in pyproject.toml (or remove the mark) so this test selector is supported by the repository configuration.
pytestmark = pytest.mark.models
  • Files reviewed: 10/12 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@AzulGarza
AzulGarza merged commit f69f080 into main Sep 14, 2026
11 checks passed
@AzulGarza
AzulGarza deleted the feat/tabpfn-3 branch September 14, 2026 21:52
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.

2 participants