pythonnet / pythonnet/pythonnet

Allow decoders to decode Python types derived from primitives

Ouverte
#2,230 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
C#
Étoiles
5.5k
Forks
780
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Environment
  • Pythonnet version: 3.0.2
  • Python version: not relevant for this issue
  • Operating System: not relevant for this issue
  • .NET Runtime: not relevant for this issue
Details
  • We have used the preview version in the past and wrapped it so that we are able to update the package and change against interfaces for future releases. One part of it is converting numpy types. By default such types are not supported anymore in the release version and it seems to be recommended to use codecs instead. I registered a codec (same as pandanet) but PyObject.As<double>() does not convert PyType = <class 'numpy.int32'> with the help of the codec.
    By debugging it never hits the PyObjectConversions.TryDecode because double it is not equal to "object type" and not one of the "DecodableByUserTypes".

    TODO

to reproduce:

    import numpy as np
    numpyArray = np.array([1, 2])
// C# part
var value = numpyArray.GetItem(i)
var valueAsT = value.As<double>(); // fails

Whish:

  • solution to handle such a case i.e. by configuring hooks or use the existing codec approach to convert before it hits the usual ToPrimitive(...) function which fails.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par PyObject.As() et suivez le chemin via PyObjectConversions.TryDecode, les codecs enregistrés et ToPrimitive(...), en utilisant la reproduction avec numpy.int32 comme première vérification. Déterminez où les types primitifs Python dérivés devraient être acceptés et définissez l’achèvement comme la conversion réussie des valeurs du tableau présenté en double, sans modifier le comportement existant des codecs.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
csharp, numpy, python
Domaine
backend, devtools
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.