68 |
68 |
self, name)
|
69 |
69 |
assert name.startswith('-'), msg
|
70 |
70 |
|
71 |
|
self.default = default if (default or self.arity) else False
|
|
71 |
self.default = default or None
|
72 |
72 |
|
73 |
73 |
@property
|
74 |
74 |
def value(self):
|
... | ... | |
176 |
176 |
:value: true if set, false otherwise
|
177 |
177 |
"""
|
178 |
178 |
|
179 |
|
def __init__(self, help='', parsed_name=None, default=False):
|
|
179 |
def __init__(self, help='', parsed_name=None, default=None):
|
180 |
180 |
super(FlagArgument, self).__init__(0, help, parsed_name, default)
|
181 |
181 |
|
182 |
182 |
|
... | ... | |
322 |
322 |
class RepeatableArgument(Argument):
|
323 |
323 |
"""A value argument that can be repeated"""
|
324 |
324 |
|
325 |
|
def __init__(self, help='', parsed_name=None, default=[]):
|
|
325 |
def __init__(self, help='', parsed_name=None, default=None):
|
326 |
326 |
super(RepeatableArgument, self).__init__(
|
327 |
327 |
-1, help, parsed_name, default)
|
328 |
328 |
|
|
329 |
@property
|
|
330 |
def value(self):
|
|
331 |
return getattr(self, '_value', [])
|
|
332 |
|
|
333 |
@value.setter
|
|
334 |
def value(self, newvalue):
|
|
335 |
self._value = newvalue
|
|
336 |
|
329 |
337 |
|
330 |
338 |
class KeyValueArgument(Argument):
|
331 |
339 |
"""A Key=Value Argument that can be repeated
|
... | ... | |
333 |
341 |
:syntax: --<arg> key1=value1 --<arg> key2=value2 ...
|
334 |
342 |
"""
|
335 |
343 |
|
336 |
|
def __init__(self, help='', parsed_name=None, default=[]):
|
|
344 |
def __init__(self, help='', parsed_name=None, default=None):
|
337 |
345 |
super(KeyValueArgument, self).__init__(-1, help, parsed_name, default)
|
338 |
346 |
|
339 |
347 |
@property
|
... | ... | |
341 |
349 |
"""
|
342 |
350 |
:returns: (dict) {key1: val1, key2: val2, ...}
|
343 |
351 |
"""
|
344 |
|
return super(KeyValueArgument, self).value
|
|
352 |
return getattr(self, '_value', {})
|
345 |
353 |
|
346 |
354 |
@value.setter
|
347 |
355 |
def value(self, keyvalue_pairs):
|
348 |
356 |
"""
|
349 |
357 |
:param keyvalue_pairs: (str) ['key1=val1', 'key2=val2', ...]
|
350 |
358 |
"""
|
351 |
|
self._value = getattr(self, '_value', self.value) or {}
|
352 |
|
try:
|
353 |
|
for pair in keyvalue_pairs:
|
354 |
|
key, sep, val = pair.partition('=')
|
355 |
|
assert sep, ' %s misses a "=" (usage: key1=val1 )\n' % (pair)
|
356 |
|
self._value[key] = val
|
357 |
|
except Exception as e:
|
358 |
|
raiseCLIError(e, 'KeyValueArgument Syntax Error')
|
|
359 |
if keyvalue_pairs:
|
|
360 |
self._value = self.value
|
|
361 |
try:
|
|
362 |
for pair in keyvalue_pairs:
|
|
363 |
key, sep, val = pair.partition('=')
|
|
364 |
assert sep, ' %s misses a "=" (usage: key1=val1 )\n' % (
|
|
365 |
pair)
|
|
366 |
self._value[key] = val
|
|
367 |
except Exception as e:
|
|
368 |
raiseCLIError(e, 'KeyValueArgument Syntax Error')
|
359 |
369 |
|
360 |
370 |
|
361 |
371 |
class ProgressBarArgument(FlagArgument):
|
... | ... | |
484 |
494 |
@staticmethod
|
485 |
495 |
def required2str(required, arguments, tab=''):
|
486 |
496 |
if isinstance(required, list):
|
487 |
|
return ' %sat least one:\n%s' % (tab, ''.join(
|
|
497 |
return ' %sat least one of the following:\n%s' % (tab, ''.join(
|
488 |
498 |
[ArgumentParseManager.required2str(
|
489 |
499 |
r, arguments, tab + ' ') for r in required]))
|
490 |
500 |
elif isinstance(required, tuple):
|
491 |
|
return ' %sall:\n%s' % (tab, ''.join(
|
|
501 |
return ' %sall of the following:\n%s' % (tab, ''.join(
|
492 |
502 |
[ArgumentParseManager.required2str(
|
493 |
503 |
r, arguments, tab + ' ') for r in required]))
|
494 |
504 |
else:
|