==============================
Distribution operations are now all one-dimensional. One pass per dimension.
ADDED:
* New `report_on_error` decorator to get more understandable error output.
* New helper functions: `format_repr_kwargs`, `init_dependencies`,
`declare_dependencies`, `check_dependencies`.
* New intermediate distribution baseclasses:
`ItemDistribution`, `LowerUpperDistribution`, `MeanCovarianceDistribution`,
`OperatorDistribution`, `ShiftScaleDistribution`.
* New basic distribution: `InverseGamma`.
* New error type of error `UnsupportedFeatureError` to differentiate illegal
operations (covered by `StochasticallyDependentError`) and unsupported
features.
* Lots of new tests.
CHANGED:
* Lots and lots of positional `idx` arguments everywhere to indicate the
dimensions worked on. Except for `_mom` which is kept as is.
* Adding consistent baseclass naming convention:
`Copula{->Distribution}`, `Mul->Multiply`, `Neg->Negative`,
`DistributionCore->SimpleDistribution`.
* `Qoi_Dist` will no longer returns a numpy array in the multivariate case.
This is because `Distribution` no play will as a numpy object type.
* Changes to cache system:
* Cache content changed from `Dict[Distribution, ndarray]` to
`Dict[Distribution, Tuple[ndarray, ndarray]]` to store both inputs and
outputs for each calculations.
* backend function `_value` replaced with `_cache` for consistency.
* Backend interface `_get_value` replaced with `_get_cache_1` and
`_get_cache_2`. For former is new, the latter is a renaming.
* `Iid` is changed from being a function wrapper to a subclass wrapper,
allowing once again `isinstance(dist, Iid)`.
REMOVED:
* Deprecating topological soring in `J`, as this is now handled by the
evaluation order.
* Old function interfaces `add, mul, neg, trunk, trunc, pow`.
* Comparison operators `<`, `<=`, `>` and `=>` for distributions. These were
used as syntactic sugar referencing `chaospy.Trunc`. This to support `==`
operator.