Repository navigation
fix(comparison): keep shared VectorBT installation compatible with Plotly - #146
Merged
Merged
Conversation
(cherry picked from commit a949116)
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.
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 vectorbtraisedInvalidPropertyPath: 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
a949116d19b51cfc8ff4d296661f4fc924679fd0includes 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 atb9fb8c3dc9887e25d413da7322feb44ef89aba21becauseuv sync --lockedrequired a lock update.Commit
752a76d6e937531051848e9c3b71fd43078a4695regenerates 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 passuv 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 atfea8b23636f16c9b73bec9b676d105c539a213d4. 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.