deps: bump webdriver-downloader to 0.17.0#428
Open
jqnatividad wants to merge 18 commits into
Open
Conversation
Replaces the three vendored plotly.min.js copies (plotly, plotly_static, docs/book) with v3.7.0 and bumps the pinned CDN version strings in plot.rs, the jupyter notebook template, plotly_static template, and the book header. Closes plotly#419 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Align the example CDN references with the newly bundled 3.7.0. The wasm-yew examples were pinned at 2.14.0, and multiple_plots_example used plotly-latest.min.js, which the CDN freezes at v1.58.5 (2021) — a 1.x runtime against a library that now emits 3.x JSON. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The scatter_geo, scatter_map, and scatter_mapbox modules each defined a byte-identical Selection/SelectionMarker pair. Move the single definition to crate::common and re-export it from each module (pub use) so the public paths plotly::traces::scatter_geo::Selection etc. keep resolving — no serialized-output change, all existing trace tests pass unchanged. This is the shared building block for backfilling selected/unselected styling onto the older cartesian traces. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bring the older trace types up to plotly.js 3.7.0 parity on the common "universal" attributes that the newer traces already expose: - legendrank, legendwidth, uirevision on Scatter, Bar, BoxPlot, Violin, Histogram, HeatMap, Contour, Candlestick, Ohlc, Scatter3D, Surface, ScatterPolar (Scatter3D already had legendrank). - uirevision only on Sunburst, Treemap, Table (these do not participate in the legend, so legendrank/legendwidth do not apply). - offsetgroup/alignmentgroup on Scatter (Bar/BoxPlot/Violin/Histogram already had them). All fields are additive Option<T> with serde renames; existing tests pass unchanged. Contour uses a hand-written builder (no FieldSetter derive), so its fields, Default impl, and setters were added by hand. Added focused rename-guard tests for Scatter and Contour. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add plotly.js interaction/layering attributes to the cartesian traces that lacked them, reusing the shared common::Selection struct: - selected, unselected, selectedpoints on Scatter, Bar, BoxPlot, Histogram. - selectedpoints only on Candlestick and Ohlc (finance traces expose the selection array but not selected/unselected marker styling). - zorder on Scatter, Bar, BoxPlot, Histogram, HeatMap, Contour, Candlestick, Ohlc (SVG draw order; Violin already had it). Additive Option<T> fields with serde renames. Contour (hand-written builder) got its field, Default entry, and setter by hand. Extended the Scatter and Contour rename-guard tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a PeriodAlignment enum to common and the plotly.js period-positioning attributes to the cartesian traces that support them: - xperiod/xperiod0/xperiodalignment and yperiod/yperiod0/yperiodalignment on Scatter, Bar, BoxPlot, HeatMap, Contour. - x-period only on Candlestick and Ohlc (x is the date axis for finance traces; they have no y-period). Histogram is intentionally excluded (it bins raw data via xbins and has no period attributes). Additive Option<T> fields; Contour's hand-written builder got fields, Default entries, and setters by hand. Extended the Scatter rename-guard test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Expose plotly.js scatter fill styling beyond a solid fillcolor: - fillpattern reuses the existing common::Pattern struct. - fillgradient uses a new common::FillGradient struct (type/start/stop/ colorscale), distinct from the marker-oriented common::Gradient. Additive Option<T> fields on Scatter; extended the rename-guard test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
These hierarchy/table traces lack a `showlegend` attribute but DO expose `legendrank`, `legendwidth`, `legend`, and `legendgrouptitle` in the plotly.js 3.7.0 schema, so they participate in the legend. The initial backfill wrongly gated legend participation on `showlegend` presence and gave them `uirevision` only. Verified against the authoritative plotly.js 3.7.0 plot-schema.json. Adds rename-guard tests for the three traces.
… uirevision (plotly#422) Add three new trace types and the layout-level uirevision attribute, with field names verified against the plotly.js v3.7.0 plot-schema.json. - Indicator: KPI number/delta/gauge displays (Gauge, Delta, Number config) - Histogram2d: 2D histogram heatmap (histfunc/histnorm/nbinsx/nbinsy/xbins/ ybins), reusing histogram's Bins/HistFunc/HistNorm and heat_map's Smoothing - Icicle: hierarchical icicle chart (sibling of Treemap/Sunburst) - layout.uirevision: preserve UI state (zoom/pan/selection) across re-renders, complementing the trace-level uirevision added in plotly#421 Includes PlotType variants, re-exports, exact-JSON round-trip tests, doctests, and CHANGELOG entries. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the minimal GaugeAxis (range + a few ticks) with the complete set of 27 attributes plotly.js exposes on indicator.gauge.axis: tick mode/placement (tickmode/nticks/tick0/dtick/tickvals/ticktext), tick styling (ticks/ticklen/tickwidth/tickcolor/tickangle/tickfont), label controls (showticklabels/tickprefix/ticksuffix + their ArrayShow flags), exponent and number formatting (showexponent/exponentformat/minexponent/separatethousands/ tickformat/tickformatstops/ticklabelstep), and labelalias. Reuses existing enums (common::TickMode/ExponentFormat/TickFormatStop, layout::ArrayShow/TicksDirection) rather than layout::Axis, which carries ~70 attributes (grid lines, spikes, range sliders, subplot anchoring) that a gauge axis does not support and would silently serialize as ignored JSON. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
histogram2d `z` is a data_array ("aggregation data") aligned 1:1 with the
`x`/`y` samples and aggregated per bin via `hist_func` — not a pre-binned 2D
matrix like `heatmap.z`. Reword the struct and `new_xyz` docs accordingly
(directing pre-computed matrices to `HeatMap`), and replace the matrix
round-trip test with an aligned 1D aggregation example using `hist_func(Sum)`.
Addresses roborev review job 3598.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gauge.axis.ticks accepts "outside", "inside", or "" (disabled). TicksDirection only covers inside/outside, so "no ticks" was inexpressible. Switch to common::Ticks (Outside/Inside/None -> "outside"/"inside"/"") and add a test that Ticks::None serializes to "". Addresses roborev review job 3599 (the tickmode finding in that review was a false positive: the v3.7.0 schema lists gauge.axis.tickmode as ["auto","linear","array"], so TickMode::Auto is valid). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add typed scatter-plot-matrix (splom) and parallel-categories (parcats)
traces following the established trace-struct recipe.
- Splom<V>: SplomDimension/SplomAxis/SplomDiagonal sub-structs,
showupperhalf/showlowerhalf controls, reuses common Marker.
- Parcats<V>: ParcatsDimension/ParcatsLine sub-structs, counts weighting,
and ParcatsLineShape/ParcatsArrangement/ParcatsHoverOn/ParcatsSortPaths
enums. arrangement includes the runtime-supported "fixed" value.
- Register PlotType::{Splom, Parcats} (serialize to "splom"/"parcats"),
re-export modules + traces from traces/mod.rs and lib.rs.
- All attributes verified against bundled plotly.js 3.7.0 schema.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Addresses roborev finding: Parcats.hover_info reused common::HoverInfo, which cannot express parcats' valid values (count/probability) and offers x/y/z/text/name that parcats ignores. Add ParcatsHoverInfo (count, probability, count+probability, all, none, skip) matching the plotly.js parcats hoverinfo flaglist. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bumps the plotly_static build dependency from 0.16 to 0.17.0. 0.17.0 clears the unmaintained rustls-pemfile advisory (RUSTSEC-2025-0134) and updates its dependency tree to current majors (reqwest 0.13, fantoccini 0.22, thiserror 2, nix 0.31, which 8, zip 8). The 0.17.0 breaking change only widens the public error enums to expose dependency types; build.rs propagates errors generically and never matches on those variants, so no source changes are needed. Verified both driver paths compile (--features chromedriver / geckodriver) and rustls-pemfile no longer appears in the dependency tree. Closes plotly#427 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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
Bumps the
plotly_staticbuild dependencywebdriver-downloaderfrom0.16to0.17.0.webdriver-downloader0.17.0 clears RUSTSEC-2025-0134 (the unmaintainedrustls-pemfilecrate) and updates its dependency tree to current majors:reqwest0.13,fantoccini0.22,thiserror2,nix0.31,which8,zip8.Closes #427.
Note
Stacked on #425 — merge that first. Until #425 lands, this PR's diff carries #425's commits; once it merges, this shrinks to just the dependency bump (
plotly_static/Cargo.toml+CHANGELOG.md).Why no
build.rschanges are neededplotly_static/build.rsuses only the stable/additive subset of the API —ChromedriverInfo::new/GeckodriverInfo::new, theWebdriverDownloadInfotrait methods,WebdriverDownloadError, and theos_specific::*browser-path helpers — all still present in 0.17.0.The 0.17.0 "breaking" change only widens the public error enums to expose dependency types (
zip::result::ZipError,reqwest::Error,which::Error).build.rsnever matches on those variants — it propagates errors with?,{:?}, and.context(e)— so the change is invisible to it. Default feature remainsnative-tls, unchanged from 0.16.Verification
Both driver paths are behind mutually-exclusive
#[cfg]features, so each was built explicitly (a bare build compiles none of thewebdriver-downloadercall sites):🤖 Generated with Claude Code