def is_stream(raise_ex: bool = False, summary: bool = True,
                  **items: Any) -> ValidationReturn:
        """
        Tests if the given key-value pairs (items) are all streams. Basically checks if the item
        provides a read(...) method.
        Per default this function yields whether ``True`` or ``False`` depending on the fact if all
        items withstand the validation or not. Per default the validation / evaluation is
        short-circuit and will return as soon an item evaluates to ``False``.

        When ``raise_ex`` is set to ``True`` the function will raise a meaningful error message
        after the first item evaluates to ``False`` (short-circuit).

        When ``summary`` is set to ``False`` a dictionary is returned containing the individual
        evaluation result of each item (non short-circuit).

        Examples:

            >>> class MyStream():
            ...     def read(self):
            ...         pass
            >>> Validator.is_stream(stream=MyStream())
            True
            >>> Validator.is_stream(nonstream='abc')
            False
            >>> Validator.is_stream(stream=MyStream(), nonstream='abc', summary=True)
            False
            >>> (Validator.is_stream(stream=MyStream(), nonstream='abc', summary=False)
            ... == {'stream': True, 'nonstream': False})
            True
            >>> Validator.is_stream(nonstream='abc', raise_ex=True)
            Traceback (most recent call last):
                ...
            ValueError: 'nonstream' is not a stream

        Args:

            raise_ex (bool, optional): If set to ``True`` an exception is raised if at least one
            item is validated to ``False`` (works short-circuit and will abort the validation when
            the first item is evaluated to ``False``).

            summary (bool, optional): If set to ``False`` instead of returning just a single
            ``bool`` the validation will return a dictionary containing the individual evaluation
            result of each item.

        Returns:
            (boolean or dictionary): ``True`` when the value was successfully validated; ``False``
                otherwise.
            If ``summary`` is set to ``False`` a dictionary containing the individual evaluation
            result of each item will be returned.
            If ``raise_ex`` is set to True, instead of returning False a meaningful error will be
            raised.

        """
        return Validator.__test_all(
            condition=lambda _, val: getattr(val, 'read', None) is not None,
            formatter=lambda name, _: "'{varname}' is not a stream".format(varname=name),
            raise_ex=raise_ex,
            summary=summary,
            **items
        )