Skip to content

feat: HasX attributes #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 36 commits into
base: main
Choose a base branch
from
Draft

Conversation

nstarman
Copy link
Collaborator

@nstarman nstarman commented Jul 1, 2025

Requires #32. I'll rebase when that's in.

nstarman and others added 30 commits June 22, 2025 11:59
Signed-off-by: Nathaniel Starkman <[email protected]>
Support unary minus operator.

Signed-off-by: Nathaniel Starkman <[email protected]>
Support addition operator for array classes.

Signed-off-by: Nathaniel Starkman <[email protected]>
Support subtraction operator for array classes

Signed-off-by: Nathaniel Starkman <[email protected]>
Support multiplication operator for array classes

Signed-off-by: Nathaniel Starkman <[email protected]>
Support true division operator for array classes
Support floor division operator for array classes
Support modulo operator for array classes
Support power operator for array classes
Support in-place addition operator for array classes
Support in-place subtraction operator for array classes
Support in-place multiplication operator for array classes
Support in-place true division operator for array classes
Support in-place floor division operator for array classes
Support in-place power operator for array classes
Support in-place modulo operator for array classes
Support right addition operator for array classes

Signed-off-by: Nathaniel Starkman <[email protected]>
Support right subtraction operator for array classes
Support right multiplication operator for array classes
Support right division operator for array classes

Signed-off-by: Nathaniel Starkman <[email protected]>
Support right floor division operator for array classes
Support right power operator for array classes
Support right modulo operator for array classes

Signed-off-by: Nathaniel Starkman <[email protected]>
Signed-off-by: Nathaniel Starkman <[email protected]>
@nstarman
Copy link
Collaborator Author

nstarman commented Jul 1, 2025

@jorenham @NeilGirdhar @lucascolley this doesn't resolve the current discussion re a DTypeT typevar or a DType protocol, but does mean Arrays can now understand any typevar or protocol we want to add.

Copy link
Member

@jorenham jorenham left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the Has* protocols. Optype will cover the CanArray* ones I think. There might be some that can't be expressed because Self can't be passed as generic type argument, but I suppose we can deal with it when needed.

One nit is that ... are not needed when there's a docstring, which already counts as an expression or statement or something.

@nstarman
Copy link
Collaborator Author

nstarman commented Jul 2, 2025

I like the Has* protocols. Optype will cover the CanArray* ones I think. There might be some that can't be expressed because Self can't be passed as generic type argument, but I suppose we can deal with it when needed.

What do we do about docstrings?

One nit is that ... are not needed when there's a docstring, which already counts as an expression or statement or something.

Yes, my pylint is complaining. But IMO empty methods should have ... to distinguish them from ones that aren't empty. Helps in understanding inheritance with a Protocol.

@jorenham
Copy link
Member

jorenham commented Jul 2, 2025

What do we do about docstrings?

Hmm good question. Maybe a numpy-esque add_docstring function?

@jorenham
Copy link
Member

jorenham commented Jul 2, 2025

Yes, my pylint is complaining. But IMO empty methods should have ... to distinguish them from ones that aren't empty. Helps in understanding inheritance with a Protocol.

Yea I guess there's something to be said for that. It just looks a bit weird to me to see a ... occupy a line on its own (but that might have something to do with me spending most of my breathing time looking at stubs).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants