Creating getters and setters for `ndarray` fields of structs
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Domaine
- api, backend-api-design
Piste de recherche
Commencez par reproduire l’exemple Rust avec rust-numpy v0.22.0, puis lisez les discussions liées 357 et 393 et comparez l’implémentation de conversion de smallvec de PyO3. Le travail serait considéré comme terminé lorsqu’une approche documentée et approuvée pour exposer automatiquement les champs de structure ndarray via des getters et des setters aura été définie, y compris le comportement de conversion requis.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
I tried to write Python bindings for a struct containing ndarray type fields, but it does not compile: (rust-numpy v0.22.0)
use pyo3::prelude::*;
use pyo3::{pymodule, Bound, PyResult};
use numpy::ndarray::Array2;
#[pyclass(get_all, set_all)]
#[derive(Debug, Clone)]
pub struct Foo {
vec: Array2<f64>,
}
#[pymodule]
fn my_module(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_class::<Foo>()?;
Ok(())
}
I read the existing discussions (this and this) and they suggests writing getters and setters manually for each field, which is unsatisfactory.
This currently greatly limits the ability to make existing APIs that contain ndarrays available to Python: We can only use free functions but not structs or classmethods.
Why is this limitation ? Could it be solved by simply implementing the IntoPy<Py<PyAny>> and FromPyObject traits for ndarray ?
I see that this is done for smallvec's and having smallvec's as fields just works as expected.
Note also that this feature is present in C++'s pybind11 (the getters return a read-only array).
I would greatly appreciate the ability to bind ndarray fields and automatically provide getters and setters in Python. This would allow to fully bind an existing Rust API to Python.
Thanks a lot!
- Langage dominant
- Rust
- Étoiles
- 1.4k
- Forks
- 141
- Merge moyen
- 20 h 27 min
- PR mergées (30 j)
- 3
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de PyO3/rust-numpy
-
Make borrow-state tests portable to 32-bit targetsPeut-être pris @heiserhorn l’a pris il y a 60 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
PyO3/rust-numpy#565 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 58/100
PyO3/rust-numpy#563 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 56/100
PyO3/rust-numpy#557 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
PyO3/rust-numpy#547 · 2 commentaires ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 20/100
PyO3/rust-numpy#535 ·
Toutes les issues de PyO3/rust-numpy
Issues similaires
-
area:config area:security bug good first issue platform:linux platform:windows priority:medium
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
rtk-ai/rtk#4651 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
documentation P2
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
vllm-project/agentic-api#463 ·
Les mainteneurs répondent en général sous 2 jours
-
bug good first issue priority:high
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Konfirm-xyz/konfirm-contracts#163 ·
Les mainteneurs répondent en général sous 1 jour
-
GL backend reports vendor id 0 for AMD GPUs on Windows (GL_VENDOR is "ATI Technologies Inc.")Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour