docstr: Return unique pool.
  
  Returns a filtered version of the agent pool where each agent is
  only listed a maximum of one time.
  
  :return:
      a dictionary mapping world_types to agent pools
docstr_tok: ["Return","unique","pool",".","Returns","a","filtered","version","of","the","agent","pool","where","each","agent","is","only","listed","a","maximum","of","one","time",".",":","return",":","a","dictionary","mapping","world_types","to","agent","pools"]
code: def _get_unique_pool(self):
      """
      Return unique pool.
  
      Returns a filtered version of the agent pool where each agent is
      only listed a maximum of one time.
  
      :return:
          a dictionary mapping world_types to agent pools
      """
      valid_pools = {}
      for world_type, agent_pool in self.agent_pool.items():
          eligibility_function = utils.get_eligibility_fn(
              self.world_module, world_type
          )
          if eligibility_function is not None:
              valid_pools[world_type] = [
                  w for w in agent_pool if eligibility_function(w)
              ]
          else:
              valid_pools[world_type] = self.agent_pool[world_type]
      return valid_pools
  
imports: from abc import ABC, abstractmethod
  from asyncio import Future
  import copy
  import sys
  import logging
  import datetime
  import threading
  import time
  import traceback
  from typing import Dict, Any, Optional, List, Callable
  from parlai.chat_service.core.agents import ChatServiceAgent
  import parlai.chat_service.utils.logging
  import parlai.chat_service.utils.misc
  import parlai.chat_service.utils.server
  from parlai.chat_service.core.world_runner import ChatServiceWorldRunner
  from parlai.core.opt import Opt
label_desc: Use image node_id 10 for calling the ChatServiceManager obj's underlying member method code with example usage: obj._get_unique_pool() and returns: valid_pools