code: def backup_name(filename):
      
      location = path_expand(filename)
      n = 0
      found = True
      backup = None
      while found:
          n += 1
          backup = "{0}.bak.{1}".format(location, n)
          found = os.path.isfile(backup)
      return backup
docs: :param filename: given a filename creates a backup name of the form
                       filename.bak.1. If the filename already exists
                       the number will be increased as  much as needed so
                       the file does not exist in the given location.
                       The filename can consists a path and is expanded
                       with ~ and environment variables.
      :type filename: string
      :rtype: string