def _aprint2(self, *values, **kwargs):
        """
        ANSI formatting-aware print().

        This method is a version of print() (function) that understands
        additional ansi control parameters.

        :param value:
            The values to print, same as with ``print()``
        :param sep:
            Separator between values, same as with ``print()``
        :param end:
            Terminator of the line, same as with ``print()``
        :param file:
            File to print to, same as with ``print()``
        :param flush:
            Flag that controls stream flush behavior, same as with ``print()``
        :param fg:
            Foreground color, same as with :meth:`__call__()`.
        :param bg:
            Background color, same as with :meth:`__call__()`.
        :param style:
            Text style, same as with :meth:`__call__()`.
        :param reset:
            Flag that controls if ANSI attributes are reset at the end, same as
            with :meth:`__call__()`.
        :param sgr:
            Additonal (custom) Set Graphics Rendition directives, same as with
            :meth:`__call__()`.

        .. note::
            This implementation is intended for Python 2
        """
        sep = kwargs.pop(str('sep'), ' ')
        end = kwargs.pop(str('end'), '\n')
        file = kwargs.pop(str('file'), None) or sys.stdout
        flush = kwargs.pop(str('flush'), False)
        fg = kwargs.pop(str('fg'), None)
        bg = kwargs.pop(str('bg'), None)
        style = kwargs.pop(str('style'), None)
        reset = kwargs.pop(str('reset'), True)
        sgr = kwargs
        text = sep.join(str(value) for value in values)
        text = self(text, fg, bg, style, reset, **sgr)
        print(text, end=end, file=file)
        if flush:
            file.flush()