PyO3/pyo3

Review conversions and ensure consistency

Offen

#3.226 geöffnet am 11.06.2023

 (4 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Rust (668 Forks)batch import
Good First Issue

Repository-Metriken

Stars
 (10.152 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 9T 18h) (51 gemergte PRs in 30 T)

Beschreibung

Continued from https://github.com/PyO3/pyo3/pull/3197#discussion_r1225910628

We would like to ensure that we're consistent in how conversions from Python objects to Rust objects select for what's allowed.

I think the right approach would be to do something like https://github.com/PyO3/pyo3/blob/main/guide/src/conversions/tables.md where for each Rust type we state what Python types will convert to it (i.e. FromPyObject), and what Python type(s) it will convert back into (i.e. IntoPy<PyObject>).

That information does live on that page, but perhaps it can benefit from being rearranged.

In general we seem to be preferring conversions which are allow the user to be a bit loose with typing (e.g. string for IP address). So I think we should ensure we stick to this philosophy everywhere (e.g. maybe we should accept int for bool, or even all truthy types)?

We may also wish to consider a "strict" mode where only the exact Python type can be input (e.g. Python bool <-> Rust bool).

Contributor Guide