`Plot::show()` panics when no opener binary exists, and silently no-ops when it fails
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 62/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- rust
- Ambito
- data-visualization
Direzione di ricerca
Inizia in plotly/src/plot.rs, nell’implementazione referenziata di Plot::show(), e ispeziona i rami Linux, macOS e Windows, comprese le definizioni degli errori vicino alle righe 57-65. Riproduci il caso Linux headless, quindi verifica che i binari opener mancanti e gli stati opener diversi da zero vengano segnalati ai chiamanti invece di causare un panic o di essere ignorati silenziosamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Plot::show() offers no way for a caller to handle a failed browser handoff.
Running it on a headless server causes a panic, but the panic message is misleading.
How to reproduce
use plotly::{Plot, Scatter};
fn main() {
let mut plot = Plot::new();
plot.add_trace(Scatter::new(vec![0, 1, 2], vec![0.0, 1.5, 3.0]));
plot.show();
}
Run on a headless Linux host with no xdg-open on PATH 👍
thread 'main' panicked at .../plotly-0.14.1/src/plot.rs:789:14:
Could not find default application for HTML files.
[...]
: Os { code: 2, kind: NotFound, message: "No such file or directory" }
Environment
- plotly 0.14.1
- rustc 1.98.0
- AlmaLinux 9.8
Expected
A library call should not abort the process over a missing external binary. The caller should have
some way to detect this and potentially fall back to write_html() or write_image() on its own or
show a clear error message.
Cause
There are two problems with it:
-
Missing binary panics:
.output()returnsErronly when the process cannot be
spawned, i.e.xdg-openis not onPATH..expect()turns that into a panic, and
show()returns(), so a caller has nothing to match on.
The resulting error message is very misleading here: https://github.com/plotly/plotly.rs/blob/00fe0512e9f924bd0fc2edfc6cc617a1604f4e0d/plotly/src/plot.rs#L57-L65 -
Return code of the xdg-open is ignored: If
xdg-openis installed but exits non-zero
(e.g. when no application is registered for HTML) it still returnsOk, carrying
the failure insideOutput::status, but status is never read.
- Lingua principale
- Rust
- Stelle
- 1.5k
- Fork
- 130
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di plotly/plotly.rs
-
Surface::surface_color has the wrong type: it should be a 2D numeric array, not Vec<Box<dyn Color>>Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
-
Support Plotly Express color sequencesForse già presa @iynehz l’ha presa 41 giorni fa. Apertaenhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
Tutte le issue di plotly/plotly.rs
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
riverqueue/river#1576 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
stadelmanma/fitparse-rs#64 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
zed-extensions/java#325 ·
-
Suggestion: full-band strip — mark the tuned frequency in magenta, with triangles on the edgesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
dividebysandwich/sdroxide#769 ·
I maintainer di solito rispondono entro 5 giorni