feat(tabpfn): add TabPFN-3 support (v0.0.33) - #375
Merged
Merged
Conversation
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>
Contributor
There was a problem hiding this comment.
🔵 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
TabPFNLicenseErroras 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_seriesis a mandatory dependency offoundationforecaston the supported Python 3.10–3.12 interpreters, soimportorskipwould 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
modelsmark is not registered in[tool.pytest.ini_options].markers, so the documentedpytest ... -m modelscommand emitsPytestUnknownMarkWarning. Register the marker inpyproject.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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
foundationforecast>=0.1.6(now on PyPI), keeping TabPFN-2 as the default checkpoint throughmodel_pathTABPFN_V2_MODEL/TABPFN_V3_MODEL, update mock conftest, and add LOCAL integration tests for v2/v3 (point, quantiles, level)TABPFN_TOKEN+ checkpoint cache, and v0.0.33 changelogTest plan
uv lock --upgrade-package foundationforecastresolves0.1.6from PyPIpytest tests/models/foundation/test_tabpfn.py -m models(unit tests pass; integration tests skip withoutTABPFN_TOKEN)v0.0.33after reviewMade with Cursor