python typing模块_Python typing.UnionMeta方法代码示例

# 需要导入模块: import typing [as 别名]

# 或者: from typing import UnionMeta [as 别名]

def _get_param_value(self, param):

"""Get the converted value for an inspect.Parameter."""

value = getattr(self.namespace, param.name)

typ = self._get_type(param)

if isinstance(typ, tuple):

raise TypeError("{}: Legacy tuple type annotation!".format(

self.name))

if hasattr(typing, 'UnionMeta'):

# Python 3.5.2

# pylint: disable=no-member,useless-suppression

is_union = isinstance(

typ, typing.UnionMeta) # type: ignore[attr-defined]

else:

is_union = getattr(typ, '__origin__', None) is typing.Union

if is_union:

# this is... slightly evil, I know

try:

types = list(typ.__args__)

except AttributeError:

# Python 3.5.2

types = list(typ.__union_params__)

# pylint: enable=no-member,useless-suppression

if param.default is not inspect.Parameter.empty:

types.append(type(param.default))

choices = self.get_arg_info(param).choices

value = argparser.multitype_conv(param, types, value,

str_choices=choices)

elif typ is str:

choices = self.get_arg_info(param).choices

value = argparser.type_conv(param, typ, value, str_choices=choices)

elif typ is bool: # no type conversion for flags

assert isinstance(value, bool)

elif typ is None:

pass

else:

value = argparser.type_conv(param, typ, value)

return value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值