Implements an ergonomic and intuitive hierarchy of Operation subclasses. Among these is the Ufunc base class, which permits MyGrad's operations to easily match the interface of numpy's many ufuncs.
Ultimately, this PR will will enable MyGrad to leverage the interfaces __array_ufunc__ and __array_function__. Additionally, it makes it much easier for MyGrad to support specifying out, where, and dtype on a large majority of its operations.
Implements an ergonomic and intuitive hierarchy of
Operation
subclasses. Among these is theUfunc
base class, which permits MyGrad's operations to easily match the interface of numpy's many ufuncs.Ultimately, this PR will will enable MyGrad to leverage the interfaces
__array_ufunc__
and__array_function__
. Additionally, it makes it much easier for MyGrad to support specifyingout
,where
, anddtype
on a large majority of its operations.