[Question] [Feature Request] __matmul__, Internal Type Hinting
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- python
- Domain
- api, developer-experience
Research direction
Start by reviewing the Python bindings around arrayfire.Array, set_backend(), clibrary.get(), and af.get_devicr_info(), then inspect how existing public methods are exposed and tested. Clarify whether the project wants matmul, runtime wrappers, and static type hints before changing anything. Done means an agreed scope with consistent typing and verified behavior for the selected public API.
Written by the indexing model from the issue text.
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).
- Dominant language
- Python
- Stars
- 422
- Forks
- 63
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from arrayfire/arrayfire-python
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
arrayfire/arrayfire-python#270 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
arrayfire/arrayfire-python#269 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 38/100
arrayfire/arrayfire-python#268 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
arrayfire/arrayfire-python#267 · 1 comment · 1 reaction ·
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
arrayfire/arrayfire-python#266 ·
All issues in arrayfire/arrayfire-python
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
EleutherAI/lm-evaluation-harness#4207 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ClickHouse/clickhouse-connect#1057 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
open-telemetry/sig-end-user#406 ·
-
bug ci good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100