parameters: (self, node, funcs)
docstring: append argument that describes which formals are actually filled in
docstring_summary: append argument that describes which formals are actually filled in
docstring_tokens: append argument that describes which formals are actually filled in
function: def add_args_arg(self, node, funcs):
          ''' append argument that describes which formals are actually filled in '''
          if self.library_func(funcs, 'datetime', 'time', 'replace') or \
                  self.library_func(funcs, 'datetime', 'datetime', 'replace'):
              formals = funcs[0].formals[1:]  # skip self
              formal_pos = dict((v, k) for k, v in enumerate(formals))
              positions = []
  
              for i, arg in enumerate(node.args):
                  if isinstance(arg, Keyword):
                      positions.append(formal_pos[arg.name])
                  else:
                      positions.append(i)
  
              if positions:
                  self.append(str(reduce(lambda a, b: a | b, ((1 << x) for x in positions))) + ', ')
              else:
                  self.append('0, ')
function_tokens: def add_args_arg ( self , node , funcs ) : if self . library_func ( funcs , 'datetime' , 'time' , 'replace' ) or self . library_func ( funcs , 'datetime' , 'datetime' , 'replace' ) : formals = funcs [ 0 ] . formals [ 1 : ] # skip self formal_pos = dict ( ( v , k ) for k , v in enumerate ( formals ) ) positions = [ ] for i , arg in enumerate ( node . args ) : if isinstance ( arg , Keyword ) : positions . append ( formal_pos [ arg . name ] ) else : positions . append ( i ) if positions : self . append ( str ( reduce ( lambda a , b : a | b , ( ( 1 << x ) for x in positions ) ) ) + ', ' ) else : self . append ( '0, ' )