def METHOD_NAME(self, manifest: AppManifest, argv: Optional[List[str]] = None) -> Namespace:
    args_schema = manifest.args_schema or {}
    parser = NoExitArgumentParser(description=manifest.description)
    def str_to_type(type_str: Optional[str]) -> Optional[Type[Any]]:
        if type_str is None:
            return None
        supported_types = {"bool", "str", "int", "float", "complex"}
        if type_str not in supported_types:
            raise ValueError(f"Unsupported type: {type_str}")
        return locate(type_str)  # type: ignore
    for arg_name, arg_info in args_schema.items():
        kwargs = {}
        for flag in ["help", "action", "default", "type", "nargs", "required"]:
            if flag in arg_info:
                if flag == "type":
                    kwargs[flag] = str_to_type(arg_info[flag])
                else:
                    kwargs[flag] = arg_info[flag]
        parser.add_argument(f"--{arg_name}", **kwargs)  # type: ignore
    return parser.parse_args(argv)