def __call__(self, parser, namespace, value, option_string=None):
pieces = value.split('-')
if not (0 < len(pieces) <= 3):
raise argparse.ArgumentError("wrong syntax in IntsRange with {}"
.format(value))
try:
if len(pieces) == 1:
self.result.append(int(pieces[0]))
elif len(pieces) == 2:
a, b = (int(x) for x in pieces)
self.result += list(range(a, b+1))
else:
a, b, c = (int(x) for x in pieces)
self.result += list(range(a, b+1, c))
self.result = sorted(set(self.result))
except ValueError as e:
raise argparse.ArgumentTypeError(value, "IntsRange requires integers")
setattr(namespace, self.dest, self.result)
#################### unit test
评论列表
文章目录