123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594 |
- from __future__ import annotations
- from typing import Any
- import numpy as np
- import pytest
- c16 = np.complex128(1)
- f8 = np.float64(1)
- i8 = np.int64(1)
- u8 = np.uint64(1)
- c8 = np.complex64(1)
- f4 = np.float32(1)
- i4 = np.int32(1)
- u4 = np.uint32(1)
- dt = np.datetime64(1, "D")
- td = np.timedelta64(1, "D")
- b_ = np.bool_(1)
- b = bool(1)
- c = complex(1)
- f = float(1)
- i = int(1)
- class Object:
- def __array__(self) -> np.ndarray[Any, np.dtype[np.object_]]:
- ret = np.empty((), dtype=object)
- ret[()] = self
- return ret
- def __sub__(self, value: Any) -> Object:
- return self
- def __rsub__(self, value: Any) -> Object:
- return self
- def __floordiv__(self, value: Any) -> Object:
- return self
- def __rfloordiv__(self, value: Any) -> Object:
- return self
- def __mul__(self, value: Any) -> Object:
- return self
- def __rmul__(self, value: Any) -> Object:
- return self
- def __pow__(self, value: Any) -> Object:
- return self
- def __rpow__(self, value: Any) -> Object:
- return self
- AR_b: np.ndarray[Any, np.dtype[np.bool_]] = np.array([True])
- AR_u: np.ndarray[Any, np.dtype[np.uint32]] = np.array([1], dtype=np.uint32)
- AR_i: np.ndarray[Any, np.dtype[np.int64]] = np.array([1])
- AR_f: np.ndarray[Any, np.dtype[np.float64]] = np.array([1.0])
- AR_c: np.ndarray[Any, np.dtype[np.complex128]] = np.array([1j])
- AR_m: np.ndarray[Any, np.dtype[np.timedelta64]] = np.array([np.timedelta64(1, "D")])
- AR_M: np.ndarray[Any, np.dtype[np.datetime64]] = np.array([np.datetime64(1, "D")])
- AR_O: np.ndarray[Any, np.dtype[np.object_]] = np.array([Object()])
- AR_LIKE_b = [True]
- AR_LIKE_u = [np.uint32(1)]
- AR_LIKE_i = [1]
- AR_LIKE_f = [1.0]
- AR_LIKE_c = [1j]
- AR_LIKE_m = [np.timedelta64(1, "D")]
- AR_LIKE_M = [np.datetime64(1, "D")]
- AR_LIKE_O = [Object()]
- # Array subtractions
- AR_b - AR_LIKE_u
- AR_b - AR_LIKE_i
- AR_b - AR_LIKE_f
- AR_b - AR_LIKE_c
- AR_b - AR_LIKE_m
- AR_b - AR_LIKE_O
- AR_LIKE_u - AR_b
- AR_LIKE_i - AR_b
- AR_LIKE_f - AR_b
- AR_LIKE_c - AR_b
- AR_LIKE_m - AR_b
- AR_LIKE_M - AR_b
- AR_LIKE_O - AR_b
- AR_u - AR_LIKE_b
- AR_u - AR_LIKE_u
- AR_u - AR_LIKE_i
- AR_u - AR_LIKE_f
- AR_u - AR_LIKE_c
- AR_u - AR_LIKE_m
- AR_u - AR_LIKE_O
- AR_LIKE_b - AR_u
- AR_LIKE_u - AR_u
- AR_LIKE_i - AR_u
- AR_LIKE_f - AR_u
- AR_LIKE_c - AR_u
- AR_LIKE_m - AR_u
- AR_LIKE_M - AR_u
- AR_LIKE_O - AR_u
- AR_i - AR_LIKE_b
- AR_i - AR_LIKE_u
- AR_i - AR_LIKE_i
- AR_i - AR_LIKE_f
- AR_i - AR_LIKE_c
- AR_i - AR_LIKE_m
- AR_i - AR_LIKE_O
- AR_LIKE_b - AR_i
- AR_LIKE_u - AR_i
- AR_LIKE_i - AR_i
- AR_LIKE_f - AR_i
- AR_LIKE_c - AR_i
- AR_LIKE_m - AR_i
- AR_LIKE_M - AR_i
- AR_LIKE_O - AR_i
- AR_f - AR_LIKE_b
- AR_f - AR_LIKE_u
- AR_f - AR_LIKE_i
- AR_f - AR_LIKE_f
- AR_f - AR_LIKE_c
- AR_f - AR_LIKE_O
- AR_LIKE_b - AR_f
- AR_LIKE_u - AR_f
- AR_LIKE_i - AR_f
- AR_LIKE_f - AR_f
- AR_LIKE_c - AR_f
- AR_LIKE_O - AR_f
- AR_c - AR_LIKE_b
- AR_c - AR_LIKE_u
- AR_c - AR_LIKE_i
- AR_c - AR_LIKE_f
- AR_c - AR_LIKE_c
- AR_c - AR_LIKE_O
- AR_LIKE_b - AR_c
- AR_LIKE_u - AR_c
- AR_LIKE_i - AR_c
- AR_LIKE_f - AR_c
- AR_LIKE_c - AR_c
- AR_LIKE_O - AR_c
- AR_m - AR_LIKE_b
- AR_m - AR_LIKE_u
- AR_m - AR_LIKE_i
- AR_m - AR_LIKE_m
- AR_LIKE_b - AR_m
- AR_LIKE_u - AR_m
- AR_LIKE_i - AR_m
- AR_LIKE_m - AR_m
- AR_LIKE_M - AR_m
- AR_M - AR_LIKE_b
- AR_M - AR_LIKE_u
- AR_M - AR_LIKE_i
- AR_M - AR_LIKE_m
- AR_M - AR_LIKE_M
- AR_LIKE_M - AR_M
- AR_O - AR_LIKE_b
- AR_O - AR_LIKE_u
- AR_O - AR_LIKE_i
- AR_O - AR_LIKE_f
- AR_O - AR_LIKE_c
- AR_O - AR_LIKE_O
- AR_LIKE_b - AR_O
- AR_LIKE_u - AR_O
- AR_LIKE_i - AR_O
- AR_LIKE_f - AR_O
- AR_LIKE_c - AR_O
- AR_LIKE_O - AR_O
- AR_u += AR_b
- AR_u += AR_u
- AR_u += 1 # Allowed during runtime as long as the object is 0D and >=0
- # Array floor division
- AR_b // AR_LIKE_b
- AR_b // AR_LIKE_u
- AR_b // AR_LIKE_i
- AR_b // AR_LIKE_f
- AR_b // AR_LIKE_O
- AR_LIKE_b // AR_b
- AR_LIKE_u // AR_b
- AR_LIKE_i // AR_b
- AR_LIKE_f // AR_b
- AR_LIKE_O // AR_b
- AR_u // AR_LIKE_b
- AR_u // AR_LIKE_u
- AR_u // AR_LIKE_i
- AR_u // AR_LIKE_f
- AR_u // AR_LIKE_O
- AR_LIKE_b // AR_u
- AR_LIKE_u // AR_u
- AR_LIKE_i // AR_u
- AR_LIKE_f // AR_u
- AR_LIKE_m // AR_u
- AR_LIKE_O // AR_u
- AR_i // AR_LIKE_b
- AR_i // AR_LIKE_u
- AR_i // AR_LIKE_i
- AR_i // AR_LIKE_f
- AR_i // AR_LIKE_O
- AR_LIKE_b // AR_i
- AR_LIKE_u // AR_i
- AR_LIKE_i // AR_i
- AR_LIKE_f // AR_i
- AR_LIKE_m // AR_i
- AR_LIKE_O // AR_i
- AR_f // AR_LIKE_b
- AR_f // AR_LIKE_u
- AR_f // AR_LIKE_i
- AR_f // AR_LIKE_f
- AR_f // AR_LIKE_O
- AR_LIKE_b // AR_f
- AR_LIKE_u // AR_f
- AR_LIKE_i // AR_f
- AR_LIKE_f // AR_f
- AR_LIKE_m // AR_f
- AR_LIKE_O // AR_f
- AR_m // AR_LIKE_u
- AR_m // AR_LIKE_i
- AR_m // AR_LIKE_f
- AR_m // AR_LIKE_m
- AR_LIKE_m // AR_m
- AR_O // AR_LIKE_b
- AR_O // AR_LIKE_u
- AR_O // AR_LIKE_i
- AR_O // AR_LIKE_f
- AR_O // AR_LIKE_O
- AR_LIKE_b // AR_O
- AR_LIKE_u // AR_O
- AR_LIKE_i // AR_O
- AR_LIKE_f // AR_O
- AR_LIKE_O // AR_O
- # Inplace multiplication
- AR_b *= AR_LIKE_b
- AR_u *= AR_LIKE_b
- AR_u *= AR_LIKE_u
- AR_i *= AR_LIKE_b
- AR_i *= AR_LIKE_u
- AR_i *= AR_LIKE_i
- AR_f *= AR_LIKE_b
- AR_f *= AR_LIKE_u
- AR_f *= AR_LIKE_i
- AR_f *= AR_LIKE_f
- AR_c *= AR_LIKE_b
- AR_c *= AR_LIKE_u
- AR_c *= AR_LIKE_i
- AR_c *= AR_LIKE_f
- AR_c *= AR_LIKE_c
- AR_m *= AR_LIKE_b
- AR_m *= AR_LIKE_u
- AR_m *= AR_LIKE_i
- AR_m *= AR_LIKE_f
- AR_O *= AR_LIKE_b
- AR_O *= AR_LIKE_u
- AR_O *= AR_LIKE_i
- AR_O *= AR_LIKE_f
- AR_O *= AR_LIKE_c
- AR_O *= AR_LIKE_O
- # Inplace power
- AR_u **= AR_LIKE_b
- AR_u **= AR_LIKE_u
- AR_i **= AR_LIKE_b
- AR_i **= AR_LIKE_u
- AR_i **= AR_LIKE_i
- AR_f **= AR_LIKE_b
- AR_f **= AR_LIKE_u
- AR_f **= AR_LIKE_i
- AR_f **= AR_LIKE_f
- AR_c **= AR_LIKE_b
- AR_c **= AR_LIKE_u
- AR_c **= AR_LIKE_i
- AR_c **= AR_LIKE_f
- AR_c **= AR_LIKE_c
- AR_O **= AR_LIKE_b
- AR_O **= AR_LIKE_u
- AR_O **= AR_LIKE_i
- AR_O **= AR_LIKE_f
- AR_O **= AR_LIKE_c
- AR_O **= AR_LIKE_O
- # unary ops
- -c16
- -c8
- -f8
- -f4
- -i8
- -i4
- with pytest.warns(RuntimeWarning):
- -u8
- -u4
- -td
- -AR_f
- +c16
- +c8
- +f8
- +f4
- +i8
- +i4
- +u8
- +u4
- +td
- +AR_f
- abs(c16)
- abs(c8)
- abs(f8)
- abs(f4)
- abs(i8)
- abs(i4)
- abs(u8)
- abs(u4)
- abs(td)
- abs(b_)
- abs(AR_f)
- # Time structures
- dt + td
- dt + i
- dt + i4
- dt + i8
- dt - dt
- dt - i
- dt - i4
- dt - i8
- td + td
- td + i
- td + i4
- td + i8
- td - td
- td - i
- td - i4
- td - i8
- td / f
- td / f4
- td / f8
- td / td
- td // td
- td % td
- # boolean
- b_ / b
- b_ / b_
- b_ / i
- b_ / i8
- b_ / i4
- b_ / u8
- b_ / u4
- b_ / f
- b_ / f8
- b_ / f4
- b_ / c
- b_ / c16
- b_ / c8
- b / b_
- b_ / b_
- i / b_
- i8 / b_
- i4 / b_
- u8 / b_
- u4 / b_
- f / b_
- f8 / b_
- f4 / b_
- c / b_
- c16 / b_
- c8 / b_
- # Complex
- c16 + c16
- c16 + f8
- c16 + i8
- c16 + c8
- c16 + f4
- c16 + i4
- c16 + b_
- c16 + b
- c16 + c
- c16 + f
- c16 + i
- c16 + AR_f
- c16 + c16
- f8 + c16
- i8 + c16
- c8 + c16
- f4 + c16
- i4 + c16
- b_ + c16
- b + c16
- c + c16
- f + c16
- i + c16
- AR_f + c16
- c8 + c16
- c8 + f8
- c8 + i8
- c8 + c8
- c8 + f4
- c8 + i4
- c8 + b_
- c8 + b
- c8 + c
- c8 + f
- c8 + i
- c8 + AR_f
- c16 + c8
- f8 + c8
- i8 + c8
- c8 + c8
- f4 + c8
- i4 + c8
- b_ + c8
- b + c8
- c + c8
- f + c8
- i + c8
- AR_f + c8
- # Float
- f8 + f8
- f8 + i8
- f8 + f4
- f8 + i4
- f8 + b_
- f8 + b
- f8 + c
- f8 + f
- f8 + i
- f8 + AR_f
- f8 + f8
- i8 + f8
- f4 + f8
- i4 + f8
- b_ + f8
- b + f8
- c + f8
- f + f8
- i + f8
- AR_f + f8
- f4 + f8
- f4 + i8
- f4 + f4
- f4 + i4
- f4 + b_
- f4 + b
- f4 + c
- f4 + f
- f4 + i
- f4 + AR_f
- f8 + f4
- i8 + f4
- f4 + f4
- i4 + f4
- b_ + f4
- b + f4
- c + f4
- f + f4
- i + f4
- AR_f + f4
- # Int
- i8 + i8
- i8 + u8
- i8 + i4
- i8 + u4
- i8 + b_
- i8 + b
- i8 + c
- i8 + f
- i8 + i
- i8 + AR_f
- u8 + u8
- u8 + i4
- u8 + u4
- u8 + b_
- u8 + b
- u8 + c
- u8 + f
- u8 + i
- u8 + AR_f
- i8 + i8
- u8 + i8
- i4 + i8
- u4 + i8
- b_ + i8
- b + i8
- c + i8
- f + i8
- i + i8
- AR_f + i8
- u8 + u8
- i4 + u8
- u4 + u8
- b_ + u8
- b + u8
- c + u8
- f + u8
- i + u8
- AR_f + u8
- i4 + i8
- i4 + i4
- i4 + i
- i4 + b_
- i4 + b
- i4 + AR_f
- u4 + i8
- u4 + i4
- u4 + u8
- u4 + u4
- u4 + i
- u4 + b_
- u4 + b
- u4 + AR_f
- i8 + i4
- i4 + i4
- i + i4
- b_ + i4
- b + i4
- AR_f + i4
- i8 + u4
- i4 + u4
- u8 + u4
- u4 + u4
- b_ + u4
- b + u4
- i + u4
- AR_f + u4
|