code: def get_hosts(self, pattern="all"):
          
  
          # process patterns
          if isinstance(pattern, list):
              pattern = ';'.join(pattern)
          patterns = pattern.replace(";",":").split(":")
          hosts = self._get_hosts(patterns)
  
          # exclude hosts not in a subset, if defined
          if self._subset:
              subset = self._get_hosts(self._subset)
              hosts.intersection_update(subset)
  
          # exclude hosts mentioned in any restriction (ex: failed hosts)
          if self._restriction is not None:
              hosts = [ h for h in hosts if h.name in self._restriction ]
          if self._also_restriction is not None:
              hosts = [ h for h in hosts if h.name in self._also_restriction ]
  
          return sorted(hosts, key=lambda x: x.name)
docs: find all host names matching a pattern string, taking into account any inventory restrictions or
          applied subsets.