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)
"""

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions