<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_app( default_name: str = None, parser: argparse.ArgumentParser = None, raw_args: List[str] = None ) -> web.Application: """ Creates and configures an Aiohttp application. Args: default_name (str, optional):
 Default value for the --name commandline argument. This value is required if `parser` is not provided. This value will be ignored if `parser` is provided. parser (argparse.ArgumentParser, optional):
 Application-specific parser. If not provided, the return value of `create_parser()` will be used. raw_args (list of str, optional):
 Explicit commandline arguments. Defaults to sys.argv[1:] Returns: web.Application: A configured Aiohttp Application object. This Application must be furnished, and is not yet running. """


    if parser is None:
        assert default_name, 'Default service name is required'
        parser = create_parser(default_name)

    args = parser.parse_args(raw_args)
    _init_logging(args)

    LOGGER.info(f'Creating [{args.name}] application')
    app = web.Application()
    app['config'] = vars(args)
    return app