Table of Contents
Shortcuts

# Source code for mmseg.datasets.pipelines.compose

    import collections

    from mmcv.utils import build_from_cfg

    from ..builder import PIPELINES

    @PIPELINES.register_module()
    class Compose(object):
        """Compose multiple transforms sequentially.

        Args:
            transforms (Sequence[dict | callable]): Sequence of transform object or
                config dict to be composed.
        """

        def __init__(self, transforms):
            assert isinstance(transforms, collections.abc.Sequence)
            self.transforms = []
            for transform in transforms:
                if isinstance(transform, dict):
                    transform = build_from_cfg(transform, PIPELINES)
                    self.transforms.append(transform)
                elif callable(transform):
                    self.transforms.append(transform)
                else:
                    raise TypeError('transform must be callable or a dict')

        def __call__(self, data):
            """Call function to apply transforms sequentially.

            Args:
                data (dict): A result dict contains the data to transform.

            Returns:
               dict: Transformed data.
            """

            for t in self.transforms:
                data = t(data)
                if data is None:
                    return None
            return data

        def __repr__(self):
            format_string = self.__class__.__name__ + '('
            for t in self.transforms:
                format_string += '\n'
                format_string += f'    {t}'
            format_string += '\n)'
            return format_string