PyO3/pyo3

Review conversions and ensure consistency

Open

#3,226 opened on Jun 11, 2023

View on GitHub
 (4 comments) (0 reactions) (0 assignees)Rust (668 forks)batch import
Good First Issue

Repository metrics

Stars
 (10,152 stars)
PR merge metrics
 (Avg merge 9d 18h) (51 merged PRs in 30d)

Description

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