Closes #5404: ArkoudaExtensionArray._cmp_method #5405
Merged
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.
Summary
This PR implements the pandas
ExtensionArraycomparison protocol forArkoudaArrayby adding a fully-typed_cmp_methodimplementation andexpanding comparison test coverage.
This resolves issues where operations such as:
would fail due to missing or incorrectly scoped helper methods.
Changes
1. Implement
_cmp_method_cmp_methodto conform to pandasExtensionArrayAPI.ArkoudaArray | NotImplementedType._binary_opto reuse normalization and broadcastinglogic.
pydoclint.2. Harden
_coerce_other_for_binoptuple[Any, str].3. Add Comparison Test Coverage
New tests added to
tests/pandas/extension/arkouda_array_extension.py:_cmp_methodmatches dunder operatorsValueErrorerrors)
pd.array(..., dtype="ak_int64") > scalarintegration testThese tests prevent regression of the original failure mode
(
AttributeError: 'ArkoudaArray' object has no attribute '_coerce_other_for_binop').Why This Matters
issues).
Validation
flake8passes (including pydoclint rules).pd.array(..., dtype="ak_int64") > scalar.Closes #5404: ArkoudaExtensionArray._cmp_method