Create a new index class with the given info

        This allow to avoid creating a new class when only few changes are
        to be made

        Parameters
        ----------
        kwargs: dict
            prefix: str
                The string part to use in the collection, before the normal suffix.
                For example `foo` to filter on `myfiled__foo__eq=`
                This prefix will also be used by the indexes to store the data at
                a different place than the same index without prefix.
            transform: callable
                A function that will transform the value to be used as the reference
                for the index, before the call to `normalize_value`.
                If can be extraction of a date, or any computation.
                The filter in the collection will then have to use a transformed value,
                for example `birth_date__year=1976` if the transform take a date and
                transform it to a year.
            handle_uniqueness: bool
                To make the index handle or not the uniqueness
            key: str
                To override the key used by the index. Two indexes for the same field of
                the same type must not have the same key or data will be saved at the same place.
                Note that the default key is None for `EqualIndex`, `text-range` for
                `TextRangeIndex` and `number-range` for `NumberRangeIndex`
            name: str
                The name of the new multi-index class. If not set, it will be the same
                as the current class

        Returns
        -------
        type
            A new class based on `cls`, with the new attributes set

def configure(cls, **kwargs):
        """Create a new index class with the given info

        This allow to avoid creating a new class when only few changes are
        to be made

        Parameters
        ----------
        kwargs: dict
            prefix: str
                The string part to use in the collection, before the normal suffix.
                For example `foo` to filter on `myfiled__foo__eq=`
                This prefix will also be used by the indexes to store the data at
                a different place than the same index without prefix.
            transform: callable
                A function that will transform the value to be used as the reference
                for the index, before the call to `normalize_value`.
                If can be extraction of a date, or any computation.
                The filter in the collection will then have to use a transformed value,
                for example `birth_date__year=1976` if the transform take a date and
                transform it to a year.
            handle_uniqueness: bool
                To make the index handle or not the uniqueness
            key: str
                To override the key used by the index. Two indexes for the same field of
                the same type must not have the same key or data will be saved at the same place.
                Note that the default key is None for `EqualIndex`, `text-range` for
                `TextRangeIndex` and `number-range` for `NumberRangeIndex`
            name: str
                The name of the new multi-index class. If not set, it will be the same
                as the current class

        Returns
        -------
        type
            A new class based on `cls`, with the new attributes set

        """

        attrs = {}
        for key in ('prefix', 'handle_uniqueness', 'key'):
            if key in kwargs:
                attrs[key] = kwargs.pop(key)

        if 'transform' in kwargs:
            attrs['transform'] = staticmethod(kwargs.pop('transform'))

        name = kwargs.pop('name', None)

        if kwargs:
            raise TypeError('%s.configure only accepts these named arguments: %s' % (
                cls.__name__,
                ', '.join(('prefix', 'transform', 'handle_uniqueness', 'key', 'name')),
            ))

        return type((str if PY3 else oldstr)(name or cls.__name__), (cls, ), attrs)