code: def file_or_filename(input):
      
      if isinstance(input, string_types):
          # input was a filename: open as file
          yield smart_open(input)
      else:
          # input already a file-like object; just reset to the beginning
          input.seek(0)
          yield input
docs: Return a file-like object ready to be read from the beginning. `input` is either
      a filename (gz/bz2 also supported) or a file-like object supporting seek.