code: def copy_file(source_file, destination_file, soft_link=False):
      
      if not os.path.exists(source_file):
          raise IOError("No such file: %s" % source_file)
      mkdir_for_file(destination_file)
      if os.path.exists(destination_file):
          os.remove(destination_file)
  
      if os.name == 'posix' and soft_link:
          try:
              os.symlink(source_file, destination_file)
          except:
              shutil.copy(source_file, destination_file)
      else:
          try:
              shutil.copy(source_file, destination_file)
          except Exception:
              raise
docs: :param source_file: str of the full path to the source file
      :param destination_file: str of the full path to the destination file
      :param soft_link: bool if True will soft link if possible
      :return: None