Closes #5230: ArkoudaExtensionArray arithmetic #5231
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Enable pandas arithmetic dispatch for Arkouda ExtensionArray
Summary
This PR implements the pandas
ExtensionArrayarithmetic hook (_arith_method) forArkoudaExtensionArray, enabling elementwise arithmetic operations (e.g.+,-,*)between Arkouda-backed arrays and with scalars.
Motivation
Pandas does not automatically dispatch Python operators (
__add__, etc.) forExtensionArrays. Instead, arithmetic is routed through
_arith_method. Without thishook, expressions like:
raise
TypeError.Implementing
_arith_methodis required for:Series/DataFramearithmeticWhat’s in this PR
Core functionality
_arith_methodtoArkoudaExtensionArrayNotImplementedfor unsupported operand types_from_dataconstructor helper for mypy-safe instance creation_dataattribute for static typingTyping & correctness
typing_extensions.Selffor precise self-type returnsNotImplementedType(not the value) in return annotationsTests
NotImplementedpropagationTypeErrorbehavior for unsupported operandsargsort/ NaN placement tests remain unchanged and passingDesign notes
before calling into the ExtensionArray.
operations.
operator overloading.
Example
Reviewer notes
_from_datahelper is intentionally minimal and centralizes EA construction.hasattr(other, "_data")) is used instead of concrete EA imports toavoid circular dependencies.
modified.
Closes #5230: ArkoudaExtensionArray arithmetic