- 
                Notifications
    
You must be signed in to change notification settings  - Fork 52
 
Description
This is a tracking issue for tasks related to the 2023 revision of the array API specification. The issue is comprised of 3 parts: general todos, new APIs, and issues needing triage.
TODO
- 
Add page discussing delayed evaluation
 - 
Clarify out-of-bounds behavior in
take - 
Clarify minimum rank upper bound
 - 
Clarify sum description when
dtype=None - 
Resolve choice of conjugation in complex inner product
 - 
Clarify broadcasting in linalg functions that accept an axis
 - 
Fix descriptions for constants in rendered specification
 - 
Clarify index array in
unique_all - 
[ ] Add note clarifying__imatmul__broadcast behavior- ref: Should implementing 
__imatmul__really be enforced? #509 - Update: moved to 2024
 
 - ref: Should implementing 
 - 
[ ] Add section indicating it's okay to duck type objects (finfo, constants)- ref: finfo should not require float type for the result fields #405 (comment)
 - Update: moved to 2024
 
 - 
DLPack related
- Anything more to discuss regarding DLPack and readonly/immutable arrays? (priority: high)
 - Anything more to say for forcing back to host? (priority: high; include as part of DLPack discussion?)
 
 
New APIs
- 
copysign
- task size: XS
- IEEE 754
 - risk: TensorFlow does not implement
 
 - priority: low
 - ref: Add 
copysignfunction to the standard #593 - PR: Add support for 
copysignto the specification #693 
 - task size: XS
 - 
[ ] cbrt- task size: XS
- IEEE 754
 - risk: need PyTorch to implement
 
 - priority: low
 - ref: RFC: add 
cbrt#590 - Update: PyTorch still does not have a dedicated 
cbrtAPI. We can revisit in 2024. 
 - task size: XS
 - 
[ ] exp2- task size: XS
- IEEE 754
 - risk: MXNet does not implement
 
 - priority: low
 - ref: RFC: add 
exp2function to the standard #591 - Update: this is low priority and should be revisited in 2024.
 
 - task size: XS
 - 
hypot
- task size: XS
- IEEE 754
 - risk: none (implemented across all major libraries)
 
 - priority: medium
 - ref: Add support for computing the hypotenuse via 
hypot#544 - PR: Add 
hypotspecification for computing the square root of the sum of squares #703 
 - task size: XS
 - 
[ ] copy (for copying data)- task size: S
- risk: could become M depending on community feedback; need to ensure library alignment
 
 - priority: ???
 - ref: RFC: add 
copy#495 - decisions:
- name: copy vs clone
 
 - Update: this is low priority and not clear whether it's needed.
 
 - task size: S
 - 
moveaxis
- task size: S
 - priority: medium
- no simple equivalent
 
 - ref: Adding 
moveaxis&swapaxes#483 - PR: Add specification for moving array axes to new positions #656
 
 - 
searchsorted
- task size: S
 - priority: medium
 - ref: RFC: add 
searchsortedto the specification #688 - PR: Add 
searchsortedto the specification #699 
 - 
[ ] angle- task size: S
- complex number dtypes
 - risk: MXNet does not implement
 
 - priority: low
 - ref: RFC: add 
anglefor computing the argument of a complex number #595 - Update: this is low priority and should be revisited in 2024.
 
 - task size: S
 - 
[ ] Hermitian transpose- task size: S
 - priority: low
- convenience function
 
 - ref: RFC: add Hermitian transpose function #555
 - Update: this is low enough priority that this can be bumped to the 2024 revision.
 
 - 
Inspection API namespace
- task size: M
 - priority: high
 - ref: RFC: add a unified inspection API namespace #640
 - PR: Add Array API inspection utilities #689
 
 - 
clip
- task size: M
- bikeshed
 
 - priority: medium
 - ref: Add 
clip#482 - decisions:
- type promotion
 - kwarg names
 - kwarg value types
 
 - PR: Add 
clipto the specification #715 
 - task size: M
 - 
cumulative sum
- task size: M
- bikeshed and alignment
 
 - priority: medium
 - ref: Add support for computing the cumulative sum to the standard #597
 - decisions:
- name
 - optional argument for initial value
 
 - PR: Add specification for computing the cumulative sum #653
 
 - task size: M
 - 
[ ] cumulative prod- task size: M
- bikeshed and alignment
 
 - priority: low
 - ref: RFC: add support for computing the cumulative product to the standard #598
 - decisions:
- name
 - optional argument for initial value
 
 - Update: this is low enough priority that it can wait until the 2024 specification revision.
 
 - task size: M
 - 
[ ] topk- task size: M
 - priority: medium
 - ref: RFC: add topk and / or argpartition #629
 - decisions:
- name
 
 - PR: feat: add API specification for returning the 
klargest elements #722 - Update: moved to 2024 to allow for further R&D.
 
 - 
repeat/tile
- task size: M
- risk: potential to become L; need to ensure community alignment
 
 - priority: medium
- xarray adoption
 
 - ref: Common APIs across array libraries (1 year later) #187 (comment)
 - ref: RFC: add support for repeating each element of an array #654
 - ref: RFC: add support for creating a new array by tiling a provided array #655
 - PR: Add 
repeatto the specification #690 - PR: Add support for tiling an array to the specification #692
 
 - task size: M
 - 
[ ] nan-reductions- task size: L
- risk: requires NumPy buy-in
 
 - priority: high
 - ref: RFC: add support for 
nan*reductions #621 - decisions:
- API design
 - engagement with NumPy community
 
 - Update: this requires additional discussion and consensus and should be moved to the 2024 revision.
 
 - task size: L
 - 
[ ] logsumexp- task size: L
- risk: requires NumPy buy-in (would duplicate behavior present in SciPy)
 
 - priority: medium
 - ref: RFC: add 
logsumexp#596 - requires addition to NumPy
 - Update:
- this API was also mentioned as a candidate for inclusion in the special functions extension: RFC: special function extension #725
 
 
 - task size: L
 
Triage
- 
Specification maintenance tasks
 - 
LU factorization
 - 
Anything more to say regarding libraries negotiating that they understand NumPy arrays?
 - 
Anything more to discuss for run-time version of API (static typing)?
 - 
Make dtypes obey Python hashing rules?
- ref: RFC: require that dtypes obey Python hashing rules #582
 - requires changes to NumPy
 
 - 
Specify that
__getitem__and__setitem__acceptsSupportsIndex - 
Special cases for +/-0 around branch cuts
 - 
Add batch support to
linalg.outer- ref: RFC: 
linalg.outersupport batches of vectors #242 - awaiting PyTorch and updates to NumPy
 
 - ref: RFC: 
 - 
Support for closeness comparison
 - 
Enforcing shape to accommodate data-dependent (unknown) dimensionality
 - 
Adding spec guidance regarding exceptions to positional-only arguments