Major release.
Breaking changes
- `symnum.array.SymbolicArray` no longer subclasses `sympy.tensor.array.dense_ndim_array.ImmutableDenseNDimArray`, instead wrapping an instance of this class and delegating some methods. Only a subset of previously inherited methods are now exposed.
- `symnum.codegen.FunctionExpression` no longer subclasses `sympy.core.expr.Expr` with updated handling no longer requiring this, and this avoiding exposing inherited methods which do not perform as expected for instances of class.
- `symnum.numpy.array` function now returns original array when passed a NumPy array of non-object datatype.
- `synnum.array.ScalarLike` now includes boolean types (in-built plus SymPy)
- `symnum.array.slice_iterator` no longer publicly exposed as part of API.
Bug fixes and enhancements
- Handling of zero-dimensional `SymbolicArray` instances improved, with several corner cases in methods previously causing errors fixed.
- Deprecated imports of generic types from `collections` instead of `collections.abc` fixed allowing usage with Python 3.10+.
- Use of deprecated `numpy.object` datatype replaced with in-built `object`, allowing usage with NumPy 1.24+.
- Type hints added to all publicly exposed functions and methods.
- Unit tests added for `symnum.numpy` and `symnum.array` modules.
- `symnum.numpy.concatenate` now handles `axis=None` case equivalently to NumPy.
Packaging and documentation improvement
- API documentation now built using Sphinx.
- Project metadata now stored in `pyproject.toml` file with `setup.py` script removed.