Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions spec/draft/API_specification/manipulation_functions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ Objects in API
:template: method.rst

broadcast_arrays
broadcast_shapes
broadcast_to
concat
expand_dims
Expand Down
28 changes: 28 additions & 0 deletions src/array_api_stubs/_draft/manipulation_functions.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
__all__ = [
"broadcast_arrays",
"broadcast_shapes",
"broadcast_to",
"concat",
"expand_dims",
Expand Down Expand Up @@ -35,6 +36,33 @@ def broadcast_arrays(*arrays: array) -> List[array]:
"""


def broadcast_shapes(*shapes: Tuple[int, ...]) -> Tuple[int, ...]:
Comment thread
kgryte marked this conversation as resolved.
Outdated
"""
Broadcasts one or more shapes against one another.

Parameters
----------
shapes: Tuple[int, ...]
Comment thread
kgryte marked this conversation as resolved.
Outdated
an arbitrary number of to-be broadcasted shapes.

Returns
-------
out: Tuple[int, ...]
Comment thread
kgryte marked this conversation as resolved.
Outdated
a single broadcasted shape obtained by applying broadcasting rules (see :ref:`broadcasting`) to each of the input shapes against one another.

Raises
------
ValueError
If provided shapes which are not broadcast compatible (see :ref:`broadcasting`), a ``ValueError`` **should** be raised.

Notes
-----

- If not provided one or more arguments, the function **must** return an empty tuple.
- Array libraries which build computation graphs (e.g., ndonnx and Dask) commonly support shapes having dimensions of unknown size. If a shape contains a value other than an integer (e.g., ``None`` for a dimension of unknown size), array-conforming libraries **must** propagate such values (e.g., if a shape contains a dimension size of ``None``, the returned broadcasted shape **must** also have a corresponding dimension having a size equal to ``None``).
Comment thread
kgryte marked this conversation as resolved.
Outdated
"""


def broadcast_to(x: array, /, shape: Tuple[int, ...]) -> array:
"""
Broadcasts an array to a specified shape.
Expand Down