parser.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:SoS 作者: vatlab 项目源码 文件源码
def extract_option_from_arg_list(options, optname, default_value):
    if not options:
        return default_value, options
    try:
        args = list(ast.iter_fields(ast.parse(f"f({options})", mode='eval')))[0][1].keywords
        for idx,field in enumerate(args):
            if field.arg == optname:
                try:
                    value = eval(compile(ast.Expression(body=field.value), filename="<ast>", mode="eval"))
                    new_options = ','.join([x for x in options.split(',') if not x.strip().startswith(optname)])
                    return value, new_options.strip()
                except:
                    raise ValueError(f"A constant value is expected for option {optname}: {options} provided.")
        return default_value, options
    except SyntaxError as e:
        raise ValueError(f"Expect a list of keyword arguments: {options} provided")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号