[Question] [Feature Request] __matmul__, Internal Type Hinting

オープン
#271 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
python

調査の方向性

まず arrayfire.Array、set_backend()、clibrary.get()、af.get_devicr_info() 周辺の Python バインディングを確認し、その後、既存の公開メソッドがどのように公開され、テストされているかを調べます。何かを変更する前に、プロジェクトが matmul、ランタイムラッパー、静的型ヒントを求めているかを明確にします。選択した公開 API について、合意されたスコープ、整合性のある型付け、検証済みの動作が揃えば完了です。

索引モデルが issue の本文から書いたものです。

説明

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).

主要言語
Python
スター
422
フォーク
63
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

arrayfire/arrayfire-python のほかの issue

arrayfire/arrayfire-python の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。