Skip to content

Improve docs for elwise/op test utilities #126

Open
@honno

Description

@honno

test_operators_and_elementwise_functions.py is the most complicated part of the test suite. That inherent complexity should be mitigated as much as possible via good docs. I wrote some broader docs in the file, but think docstrings similiar to the one seen in ph.assert_dtype() would be well-suited for the *_assert_against_refimpl() utilities.

def assert_dtype(
func_name: str,
in_dtype: Union[DataType, Sequence[DataType]],
out_dtype: DataType,
expected: Optional[DataType] = None,
*,
repr_name: str = "out.dtype",
):
"""
Assert the output dtype is as expected.
If expected=None, we infer the expected dtype as in_dtype, to test
out_dtype, e.g.
>>> x = xp.arange(5, dtype=xp.uint8)
>>> out = xp.abs(x)
>>> assert_dtype('abs', x.dtype, out.dtype)
is equivalent to
>>> assert out.dtype == xp.uint8
Or for multiple input dtypes, the expected dtype is inferred from their
resulting type promotion, e.g.
>>> x1 = xp.arange(5, dtype=xp.uint8)
>>> x2 = xp.arange(5, dtype=xp.uint16)
>>> out = xp.add(x1, x2)
>>> assert_dtype('add', [x1.dtype, x2.dtype], out.dtype)
is equivalent to
>>> assert out.dtype == xp.uint16
We can also specify the expected dtype ourselves, e.g.
>>> x = xp.arange(5, dtype=xp.int8)
>>> out = xp.sum(x)
>>> default_int = xp.asarray(0).dtype
>>> assert_dtype('sum', x, out.dtype, default_int)
"""

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Improve docs for elwise/op test utilities · Issue #126 · data-apis/array-api-tests