Skip to content

fix(comparison): keep shared VectorBT installation compatible with Plotly - #146

Merged
stefan-jansen merged 5 commits into
mainfrom
codex/comparison-plotly-compatibility
Oct 15, 2026
Merged

stefan-jansen merged 5 commits into
mainfrom
codex/comparison-plotly-compatibility

Conversation

@stefan-jansen

@stefan-jansen stefan-jansen commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Owning issue

Closes #144

Outcome

Keep the shared comparison group on Plotly below 7 for Python below 3.15. VectorBT 1.0.0, selected because Pyfolio requires pandas below 3, cannot import Plotly 7. A VectorBT 1.1.1 upgrade is not compatible with that shared pandas constraint.

Check the actual shared comparison/viz installation in the existing Ubuntu Python 3.12 compatibility job and retain its native contract XML. The separately pinned public-parity jobs stay isolated.

Base/fix evidence

On main 3fc7d74d9b0d582b89914ace0bfb74edb337327a, the declared locked comparison+viz installation resolved VectorBT 1.0.0 and Plotly 7.0.0. import vectorbt raised InvalidPropertyPath: scattermapbox. The actual native contract command failed its three VectorBT cases; the six Backtrader/Zipline cases passed.

The focused dependency repair passed all nine native contracts. Twelve Python/platform resolution contexts preserve other resolved package versions and leave the Python 3.15 graph unchanged. The corrected CI placement passed thirteen release/support contracts and all hooks at e407d69fae0072c7361ac333233e1f29c758af82.

The qualified integration tree at a949116d19b51cfc8ff4d296661f4fc924679fd0 includes the same extra constraint, passed its complete local suite and package/doc checks, and passed a hash-locked comparison+viz pip-audit scan with no known vulnerabilities. That is integration evidence; the selected focused PR head still needs all applicable hosted checks before merge.

Locked framework builds

The new root optional-dependency metadata initially invalidated the six isolated framework locks. The real public command validation/build_framework_env.py --framework lean --environment-root <scratch> failed at b9fb8c3dc9887e25d413da7322feb44ef89aba21 because uv sync --locked required a lock update.

Commit 752a76d6e937531051848e9c3b71fd43078a4695 regenerates those locks with uv. Each isolated diff is exactly one metadata entry for the new optional constraint. Every package version and source identity stays unchanged. All six locks pass uv lock --check; the same real LEAN builder now succeeds and verifies the frozen CLI and Docker engine image. The 22 environment-builder/release/support tests and all hooks pass.

At this selected head on merged main 3bef08e8c4f5750bc76ce5695510012af3615e58, twelve actual Python/platform resolution contexts preserve every other package version; all three Python 3.15 dependency trees are byte-identical. The root comparison environment and implementation retain the 22 passing native/release/support checks at fea8b23636f16c9b73bec9b676d105c539a213d4. No completed timing pairs were rerun.

Installed-wheel check

A fresh Python 3.12 consumer environment outside the checkout installed the built wheel with [comparison,viz] using the public dependency resolver. Imports of VectorBT 1.0.0, Plotly 6.9.0, Backtrader 1.9.78.123 and Zipline 3.1.1 passed. A real Backtest Engine order and a separate VectorBT portfolio each reached their independently expected final equity of 101 from initial cash 100. This is an installation and API check, not a new framework parity or timing claim.

Compatibility

The visualization extra alone retains its existing range. This bounds Plotly only when selecting the legacy comparison group below Python 3.15. The Python minimum remains 3.12 and no new stable Python 3.15 support is claimed.

AI assistance

Codex reproduced the actual install/import and native contract failures, produced the dependency and CI repair, inspected the diff and ran the recorded checks. No independent human review or universal framework parity claim is asserted.

Release publication and deployment remain separate user decisions.

Copilot AI balanced review requested due to automatic review settings October 15, 2026 16:12

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@stefan-jansen
stefan-jansen merged commit 132c349 into main Oct 15, 2026
43 checks passed
@stefan-jansen
stefan-jansen deleted the codex/comparison-plotly-compatibility branch October 15, 2026 16:22
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.

Comparison extra fails to import VectorBT with Plotly 7

2 participants