def resolve(*path): x = expand(*path) for f in x: try: return Yaml.filename(f) except: continue
def _resolve_extensions(data): extensions = set() datas = [data] while True: extension = data.get('inherit') if not extension: break extension = Yaml.filename(extension) if extension in extensions: raise Exception('Infinite circular extension for %s' % extension) try: data = CommandFile.load('score', extension) except Exception as e: raise Exception("Couldn't find extension for %s: %s" % (extension, str(e))) if len(data) > 1: LOGGER.error("More than one element in extension %s", extension) data = data[0] datas.append(data) extensions.add(extension) result = {} for data in reversed(datas): result.update(data) if extensions: del result['inherit'] return result