docs: def _update_rs_from_primary(
          sds,
          replica_set_name,
          server_description,
          max_set_version,
          max_election_id):
      """Update topology description from a primary's ismaster response.
  
      Pass in a dict of ServerDescriptions, current replica set name, the
      ServerDescription we are processing, and the TopologyDescription's
      max_set_version and max_election_id if any.
  
      Returns (new topology type, new replica_set_name, new max_set_version,
      new max_election_id).
      """
      if replica_set_name is None:
          replica_set_name = server_description.replica_set_name
  
      elif replica_set_name != server_description.replica_set_name:
          # We found a primary but it doesn't have the replica_set_name
          # provided by the user.
          sds.pop(server_description.address)
          return (_check_has_primary(sds),
                  replica_set_name,
                  max_set_version,
                  max_election_id)
  
      max_election_tuple = max_set_version, max_election_id
      if None not in server_description.election_tuple:
          if (None not in max_election_tuple and
                  max_election_tuple > server_description.election_tuple):
  
              # Stale primary, set to type Unknown.
              address = server_description.address
              sds[address] = ServerDescription(address)
              return (_check_has_primary(sds),
                      replica_set_name,
                      max_set_version,
                      max_election_id)
  
          max_election_id = server_description.election_id
  
      if (server_description.set_version is not None and
          (max_set_version is None or
              server_description.set_version > max_set_version)):
  
          max_set_version = server_description.set_version
  
      # We've heard from the primary. Is it the same primary as before?
      for server in sds.values():
          if (server.server_type is SERVER_TYPE.RSPrimary
                  and server.address != server_description.address):
  
              # Reset old primary's type to Unknown.
              sds[server.address] = ServerDescription(server.address)
  
              # There can be only one prior primary.
              break
  
      # Discover new hosts from this primary's response.
      for new_address in server_description.all_hosts:
          if new_address not in sds:
              sds[new_address] = ServerDescription(new_address)
  
      # Remove hosts not in the response.
      for addr in set(sds) - server_description.all_hosts:
          sds.pop(addr)
  
      # If the host list differs from the seed list, we may not have a primary
      # after all.
      return (_check_has_primary(sds),
              replica_set_name,
              max_set_version,
              max_election_id)