feat: Implement raw=True mode for high-performance figure construction#5515
Open
AlonSpivack wants to merge 2 commits intoplotly:mainfrom
Open
feat: Implement raw=True mode for high-performance figure construction#5515AlonSpivack wants to merge 2 commits intoplotly:mainfrom
AlonSpivack wants to merge 2 commits intoplotly:mainfrom
Conversation
Add _as_dict=True parameter to trace constructors and go.Figure for ~4-6x faster figure construction when validation is not needed. Fast paths added for: - BasePlotlyType.__new__ / BaseTraceType.__new__ - BaseFigure.__init__, .data, .layout, .add_traces, .update_layout - BaseFigure._add_annotation_like, ._process_multiple_axis_spanning_shapes
Author
|
Implementation for #5514. |
efab3a2 to
0b37698
Compare
Author
|
Update: Renamed PR title and description to finalize raw=True API (formerly _as_dict). |
- Implements in BaseFigure and trace constructors - Adds global config - Optimizes , , - Adds comprehensive tests in
cc3fd8b to
9edfae9
Compare
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.
Description
This PR implements the
raw=Trueparameter forgo.Figure, trace constructors, and validation-heavy methods like add_traces, update_layout, and shape additions. It also introduces a global configuration flagplotly.config.rawto enable this mode by default.When
raw=Trueis active (either via parameter or global config):Usage
1. Global Configuration (Recommended)
Ideally suited for production environments where performance is critical:
2. Per-Object Configuration
You can also enable it for specific objects without changing global application state:
Benchmarks
Run the following script to reproduce:
Benchmark Script (bench_raw.py)
This enables extremely high-performance generation of Plotly figures for large datasets or high-throughput applications.
Limitations (Trade-offs for Performance)
In raw mode, the following features are unavailable because they rely on the validation engine:
xaxis_title="X"are not expanded to nested dicts. Use explicit nesting:xaxis={"title": {"text": "X"}}.xaxis="x2", yaxis="y2").layout.title = "X"works (JS support), but settinglayout.xaxis.title = "X"fails (JS expects object). Uselayout.xaxis.title = {"text": "X"}.Issues
Closes #5514