parameters: (*args)
docstring: Yield all arguments passed to the function in the same order in which
      they were passed. If an argument itself is iterable then iterate over its
      values.
  
          >>> list(value_chain(1, 2, 3, [4, 5, 6]))
          [1, 2, 3, 4, 5, 6]
  
      Binary and text strings are not considered iterable and are emitted
      as-is:
  
          >>> list(value_chain('12', '34', ['56', '78']))
          ['12', '34', '56', '78']
  
  
      Multiple levels of nesting are not flattened.
docstring_summary: Yield all arguments passed to the function in the same order in which
      they were passed. If an argument itself is iterable then iterate over its
      values.
docstring_tokens: Yield all arguments passed to the function in the same order in which they were passed . If an argument itself is iterable then iterate over its values .
function: def value_chain(*args):
      """Yield all arguments passed to the function in the same order in which
      they were passed. If an argument itself is iterable then iterate over its
      values.
  
          >>> list(value_chain(1, 2, 3, [4, 5, 6]))
          [1, 2, 3, 4, 5, 6]
  
      Binary and text strings are not considered iterable and are emitted
      as-is:
  
          >>> list(value_chain('12', '34', ['56', '78']))
          ['12', '34', '56', '78']
  
  
      Multiple levels of nesting are not flattened.
  
      """
      for value in args:
          if isinstance(value, (str, bytes)):
              yield value
              continue
          try:
              yield from value
          except TypeError:
              yield value
function_tokens: def value_chain ( * args ) : for value in args : if isinstance ( value , ( str , bytes ) ) : yield value continue try : yield from value except TypeError : yield value