def _describe_application(self, application, **options):
        described_namespace = options.get('namespace')
        description = ApplicationDescription(application, described_namespace)

        raw_text = options.get('raw_text')
        if raw_text:
            width = self._get_column_width(description.get_commands().values())

            for command in description.get_commands().values():
                self._write_text('%-*s %s' % (width, command.get_name(), command.get_description()), **options)
                self._write_text('\n')
        else:
            help = application.get_help()
            if help:
                self._write_text('%s\n\n' % help, **options)

            self._write_text('<comment>Usage:</comment>\n', **options)
            self._write_text('  command [options] [arguments]\n\n', **options)

            self._describe_input_definition(
                InputDefinition(
                    application.get_definition().get_options()
                ),
                **options
            )

            self._write_text('\n')
            self._write_text('\n')

            width = self._get_column_width(description.get_commands().values())

            if described_namespace:
                self._write_text(
                    '<comment>Available commands for the "%s" namespace:</comment>'
                    % described_namespace,
                    **options
                )
            else:
                self._write_text('<comment>Available commands:</comment>', **options)

            # add commands by namespace
            for namespace in description.get_namespaces().values():
                if not described_namespace and namespace['id'] != ApplicationDescription.GLOBAL_NAMESPACE:
                    self._write_text('\n')
                    self._write_text(' <comment>%s</comment>' % namespace['id'], **options)

                for name in namespace['commands']:
                    self._write_text('\n')
                    spacing_width = width - len(name)
                    self._write_text(
                        '  <info>%s</info>%s%s'
                        % (name, ' ' * spacing_width, description.get_command(name).get_description()),
                        **options
                    )

        self._write_text('\n')
Class decorator for subclasses of ``unittest.TestCase``.
dataset/ETHPy150Open sdispater/cleo/cleo/descriptors/text_descriptor.py/TextDescriptor._describe_application--crossover with--dataset/ETHPy150Open numba/numba/numba/testing/ddt.py/ddt