PyO3/pyo3

Review conversions and ensure consistency

Open

#3226 aperta il 11 giu 2023

Vedi su GitHub
 (4 commenti) (0 reazioni) (0 assegnatari)Rust (668 fork)batch import
Good First Issue

Metriche repository

Star
 (10.152 star)
Metriche merge PR
 (Merge medio 12g 19h) (64 PR mergiate in 30 g)

Descrizione

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).

Guida contributor