code: def expand_paths(paths=None, predicate=None, filters=None, parent_uuid=None):
      
      if not paths:
          paths = [Context().shell.current_path]
      else:
          paths = [Context().shell.current_path / res for res in paths]
  
      # use a dict to have unique paths
      # but keep them ordered
      result = OrderedDict()
      for res in parallel_map(_path_to_resources, paths,
                              kwargs={'predicate': predicate,
                                      'filters': filters,
                                      'parent_uuid': parent_uuid},
                              workers=50):
          for r in res:
              result[r.path] = r
  
      resources = list(result.values())
      if not resources:
          raise NotFound()
      return resources
docs: Return an unique list of resources or collections from a list of paths.
      Supports fq_name and wilcards resolution.
  
      >>> expand_paths(['virtual-network',
                        'floating-ip/2a0a54b4-a420-485e-8372-42f70a627ec9'])
      [Collection('virtual-network'),
       Resource('floating-ip', uuid='2a0a54b4-a420-485e-8372-42f70a627ec9')]
  
      :param paths: list of paths relative to the current path
                    that may contain wildcards (*, ?) or fq_names
      :type paths: [str]
      :param predicate: function to filter found resources
      :type predicate: f(resource) -> bool
      :param filters: list of filters for Collections
      :type filters: [(name, value), ...]
      :rtype: [Resource or Collection]
      :raises BadPath: path cannot be resolved