PyO3/pyo3

Review conversions and ensure consistency

Aberta

#3.226 aberto em 11 de jun. de 2023

 (4 comentários) (0 reação) (0 responsável)Rust (668 forks)batch import
Good First Issue

Métricas do repositório

Stars
 (10.152 estrelas)
Métricas de merge de PR
 (Mesclagem média 9d 18h) (51 fundiu PRs em 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).

Guia do colaborador