- **New** Added functionality for user extension of scikit-criteria with
decorators for creating aggregation and transformation models using
functions.
python
>>> from skcriteria.extend import mkagg, mktransformer
>>>
>>> mkagg
>>> def MyAgg(**kwargs):
>>> Implementation of the aggregation function
>>>
>>> mkagg(foo=1)
>>> def MyAggWithHyperparam(**kwargs):
>>> Implementation of the aggregation function with
>>> hyperparameter 'foo'
>>>
>>> mktransformer
>>> def MyTransformer(**kwargs):
>>> Implementation of the transformation function
>>>
>>> mktransformer(bar=2)
>>> def MyTransformerWithHyperparam(**kwargs):
>>> Implementation of the transformation function with
>>> hyperparameter 'bar'
These decorators enable the creation of aggregation and transformation
classes based on provided functions, allowing users to
define decision-making models with less flexibility than traditional
inheritance-based models.
For more information check the tutorial [Extending Aggregation and Transformation Functions](https://scikit-criteria.quatrope.org/en/latest/tutorial/extend.html)
- **New Module:** Introduced the `skcriteria.testing` module, exposing utility functions for for comparing objects created in Scikit-Criteria in a testing environment. These functions facilitate the comparison of instances of the `DecisionMatrix`, `ResultABC`, and `RanksComparator` classes.
The assertion functions utilize pandas and numpy testing utilities for comparing matrices, series, and other attributes.
Check the [Reference](https://scikit-criteria.quatrope.org/en/latest/api/testing.html) for more information.
- **New** The API of the agg, pipeline, preprocessing, and extend modules has
been cleaned up to prevent autocompletion with imports from other modules.
The imported modules are still present, but they are excluded when attempting
to autocomplete. This functionality is achieved thanks to the context manager
`skcriteria.utils.cmanagers.hidden()`.
- **New** All methods (agg and transformers) has a new `get_method_name`
instance method.
- **Drop** Drop support for Python 3.8