This release splits out the TACO binary into a separate package `tensora-taco`. This package is optional, making the TACO code generator optional. The native Tensora code generator is still included and used by default. TACO can be still be used as an alternative code generator if the `tensora[taco]` extra is installed.
Also, these other changes:
- The signature of `tensor_method` was changed so that the `output_format ` and `input_formats` were combined into one `formats` dictionary
- Renamed `PureTensorMethod` to `TensorMethod` to reflect the decision that mutable assignments will never be supported in Tensora
- Most of the attributes on `TensorMethod` were made private
- Cache on a parsed `Problem`, instead of on the string versions of assignments and formats
- Raise a nice exception on `TensorMethod` when trying to broadcast to target indexes because there is no way for the dimensions of those indexes to be known. Generating such kernels via the `tensora` CLI is still permitted.
- Raise a nice exception when a tensor and and index have the same name in an assignment
- Remove `Tensor.from_scalar`; you could always use `Tensora.from_lol`
- Do not cast the result of a vector inner product `a b` to a Python scalar; leave it as a scalar `Tensor`