Get data about banners by their ids.

        Macros in banners' names and descriptions are not expanded.

        Parameters
        ----------
        *ids : str
           Banner ids.

        Returns
        -------
        an :class:`ApiQuery` of a list of :class:`Banner`

        Raises
        ------
        :class:`NotFound`
            If any of the provided ids is invalid.

def banner(self, *ids, _expand_macros=None):
        """Get data about banners by their ids.

        Macros in banners' names and descriptions are not expanded.

        Parameters
        ----------
        *ids : str
           Banner ids.

        Returns
        -------
        an :class:`ApiQuery` of a list of :class:`Banner`

        Raises
        ------
        :class:`NotFound`
            If any of the provided ids is invalid.
        """
        async def noop(s):
            return s

        _expand_macros = _expand_macros or noop

        @api_query('banner', banner=','.join(ids))
        async def result(_, root):
            banners = [await Banner(elem, _expand_macros)
                       for elem in root.find('BANNERS')]
            if not len(banners) == len(ids):
                raise NotFound('one of the banner ids provided is invalid')
            return banners
        return result(self)