code: def get_dump_names(self, names, dumps=None):
          
          # Default value for dumps argument is an empty set (setting directly
          # as a python argument would result as a shared value between
          # instances)
          if dumps is None:
              dumps = set([])
  
          # Add name to the dumps and find its dependancies
          for item in names:
              if item not in self:
                  if not self.silent_key_error:
                      raise KeyError("Dump name '{0}' is unknowed".format(item))
                  else:
                      continue
  
              dumps.add(item)
  
              # Add dependancies names to the dumps
              deps = self.__getitem__(item).get('dependancies', [])
              dumps.update(deps)
  
          # Avoid maximum recursion when we allready find all dependancies
          if names == dumps:
              return dumps
  
          # Seems we don't have finded other dependancies yet, recurse to do it
          return self.get_dump_names(dumps.copy(), dumps)
docs: Find and return all dump names required (by dependancies) for a given
          dump names list
  
          Beware, the returned name list does not respect order, you should only
          use it when walking throught the "original" dict builded by OrderedDict