[Question] [Feature Request] __matmul__, Internal Type Hinting
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- python
- Domaine
- api, developer-experience
Piste de recherche
Commencez par examiner les bindings Python autour de arrayfire.Array, set_backend(), clibrary.get() et af.get_devicr_info(), puis inspectez la manière dont les méthodes publiques existantes sont exposées et testées. Déterminez si le projet souhaite matmul, des wrappers d’exécution et des annotations de types statiques avant de modifier quoi que ce soit. Le travail est considéré comme terminé lorsqu’un périmètre convenu est défini, avec un typage cohérent et un comportement vérifié pour l’API publique sélectionnée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
I wanted to add support for @ operation in python. The __matmult__ operation, that's how it's overloaded, in the arrayfire.Array class.
It's a simple monkey patch on user code. But it'd be nice if it was official.
I went to my local source code and added it, but I wanted to start learning the internal more and maybe do some contribution. Just wondering if it's not redundant or unwanted.
I saw that the internal Python types aren't hinted properly.
The set_backend() takes a string, but that's primitive obsession. It should take a string litteral list.
from typing import Literal
backend: Literal["cuda", "opencl", "cpu"]
Or it should take an Enum.
And other functions.
or clibrary.get() returns a None. That's just due to Lazy Loading.
But a Typed Python interface could exist. Some wrapper python class might be needed so that the type of the exposed code is visible.
All of this would help learning by simply using the autocomplete features of the IDE or text editor.
I hope each backend offers at least some common interface. It should, as the goal of arrayfire is hardware agnostism.
So, every method should be discoverable by the linter at "code editing" time. Just put _ and __ if it's really private.
So get().af wouldn't cause false linting errors.
Anyway, I might get into it if I have time. It seems like a nice contribution, and a nitpick of mine.
the typing package nd TYPE/CHECKING, and simple wrappers are quite powerful.
However, I know that you might not want to expose internal details at all, and so might have purposly not the type hinting of everything. But it's also possible that doing so is just a tedious boilerplate. I'd be fine with doing said tedious boilerplate to make it easier to use and understand.
So, if it's by choice that there isn't any type hinting and wrapper, then I won't do it. But If it's something you'd be interested in, I might do some work on it.
Also there was a bug with af.get_devicr_info(), it seems to give the default device, not active device. Tested it with my cpu graphics card and amd graphics card on arch linux. I'll edit this section once I'm back on my PC. (Away right now).
- Langage dominant
- Python
- Étoiles
- 422
- Forks
- 63
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
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 arrayfire/arrayfire-python
-
Unwrap phase function Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
arrayfire/arrayfire-python#270 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
arrayfire/arrayfire-python#269 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
arrayfire/arrayfire-python#268 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
arrayfire/arrayfire-python#267 · 1 commentaire · 1 réaction ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
arrayfire/arrayfire-python#266 ·
Toutes les issues de arrayfire/arrayfire-python
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
learningequality/ricecooker#747 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
run-llama/llama_index#23199 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
KhronosGroup/glTF-Blender-IO#2769 ·