예제 #1
0
def UsageString(component, trace=None, verbose=False):
    """Returns a string showing how to use the component as a Fire command."""
    if trace:
        command = trace.GetCommand()
    else:
        command = None

    if command:
        command += ' '
    else:
        command = ''

    if inspect.isroutine(component) or inspect.isclass(component):
        spec = inspectutils.GetFullArgSpec(component)
        return _UsageStringFromFullArgSpec(command, spec)

    if isinstance(component, (list, tuple)):
        length = len(component)
        if length == 0:
            return command
        if length == 1:
            return command + '[0]'
        return command + '[0..{cap}]'.format(cap=length - 1)

    completions = completion.Completions(component, verbose)
    if command:
        completions = [''] + completions
    return '\n'.join(command + end for end in completions)
예제 #2
0
    def testFnCompletions(self):
        def example(one, two, three):
            return one, two, three

        completions = completion.Completions(example)
        self.assertIn('--one', completions)
        self.assertIn('--two', completions)
        self.assertIn('--three', completions)
예제 #3
0
 def testGeneratorCompletions(self):
   def generator():
     x = 0
     while True:
       yield x
       x += 1
   completions = completion.Completions(generator())
   self.assertEqual(completions, [])
예제 #4
0
 def testNonStringDictCompletions(self):
     completions = completion.Completions({
         10: 'green',
         3.14: 'yellow',
         ('t1', 't2'): 'pink',
     })
     self.assertIn('10', completions)
     self.assertIn('3.14', completions)
     self.assertIn("('t1', 't2')", completions)
     self.assertNotIn('green', completions)
     self.assertNotIn('yellow', completions)
     self.assertNotIn('pink', completions)
예제 #5
0
 def testNonStringDictCompletions(self):
     completions = completion.Completions({
         10: "green",
         3.14: "yellow",
         ("t1", "t2"): "pink",
     })
     self.assertIn("10", completions)
     self.assertIn("3.14", completions)
     self.assertIn("('t1', 't2')", completions)
     self.assertNotIn("green", completions)
     self.assertNotIn("yellow", completions)
     self.assertNotIn("pink", completions)
예제 #6
0
 def testDictCompletionsVerbose(self):
     colors = {
         'red': 'green',
         'blue': 'yellow',
         '_rainbow': True,
     }
     completions = completion.Completions(colors, verbose=True)
     self.assertIn('red', completions)
     self.assertIn('blue', completions)
     self.assertNotIn('green', completions)
     self.assertNotIn('yellow', completions)
     self.assertIn('_rainbow', completions)
     self.assertNotIn('True', completions)
     self.assertNotIn(True, completions)
예제 #7
0
 def testDictCompletionsVerbose(self):
     colors = {
         "red": "green",
         "blue": "yellow",
         "_rainbow": True,
     }
     completions = completion.Completions(colors, verbose=True)
     self.assertIn("red", completions)
     self.assertIn("blue", completions)
     self.assertNotIn("green", completions)
     self.assertNotIn("yellow", completions)
     self.assertIn("_rainbow", completions)
     self.assertNotIn("True", completions)
     self.assertNotIn(True, completions)
예제 #8
0
def UsageString(component, trace=None, verbose=False):
  """Returns a string showing how to use the component as a Fire command."""
  command = trace.GetCommand() + ' ' if trace else ''

  if inspect.isroutine(component) or inspect.isclass(component):
    args, varargs, keywords, defaults = inspectutils.GetArgSpec(component)
    return _UsageStringFromFnDetails(command, args, varargs, keywords, defaults)

  elif isinstance(component, (list, tuple)):
    length = len(component)
    if length == 0:
      return command
    elif length == 1:
      return command + '[0]'
    else:
      return command + '[0..{cap}]'.format(cap=length - 1)

  else:
    completions = completion.Completions(component, verbose)
    if command:
      completions = [''] + completions
    return '\n'.join(command + end for end in completions)
예제 #9
0
 def testDeepDictCompletions(self):
     deepdict = {'level1': {'level2': {'level3': {'level4': {}}}}}
     completions = completion.Completions(deepdict)
     self.assertIn('level1', completions)
     self.assertNotIn('level2', completions)
예제 #10
0
 def testListCompletions(self):
     completions = completion.Completions(['red', 'green', 'blue'])
     self.assertIn('0', completions)
     self.assertIn('1', completions)
     self.assertIn('2', completions)
     self.assertNotIn('3', completions)
예제 #11
0
 def testMethodCompletions(self):
     completions = completion.Completions(tc.NoDefaults().double)
     self.assertNotIn('--self', completions)
     self.assertIn('--count', completions)
예제 #12
0
 def testObjectCompletions(self):
     completions = completion.Completions(tc.NoDefaults())
     self.assertIn('double', completions)
     self.assertIn('triple', completions)
예제 #13
0
 def testClassCompletions(self):
     completions = completion.Completions(tc.NoDefaults)
     self.assertEqual(completions, [])
예제 #14
0
 def testListCompletions(self):
     completions = completion.Completions(["red", "green", "blue"])
     self.assertIn("0", completions)
     self.assertIn("1", completions)
     self.assertIn("2", completions)
     self.assertNotIn("3", completions)
예제 #15
0
 def testDeepDictCompletions(self):
     deepdict = {"level1": {"level2": {"level3": {"level4": {}}}}}
     completions = completion.Completions(deepdict)
     self.assertIn("level1", completions)
     self.assertNotIn("level2", completions)