importosfromfunctoolsimportlru_cachefromglobimportglobfromos.pathimportdirnameimportharpimportharp_appsEXTENSIONS=[".yml",".yaml",".toml"]# TODO this is clearly not the right place, and it's too static for the future, but let's keep it simple first.APP_NAMESPACES=["harp_apps","harp_contrib"]
[docs]@lru_cachedefget_examples_dirname(*,app=None):ifappisNone:returnos.path.dirname(os.path.abspath(__file__))fornamespaceinAPP_NAMESPACES:dirname=os.path.join(harp.ROOT_DIR,namespace,app,"examples")ifos.path.isdir(dirname):returndirnameraiseFileNotFoundError(f"Examples directory not found for app {app}.")
[docs]defguess_extension(basename):ifbasename.endswith(tuple(EXTENSIONS)):returnbasenameforextinEXTENSIONS:ifos.path.isfile(basename+ext):returnbasename+extraiseFileNotFoundError(f"Example not found (looked for {basename}.{{{','.join(map(lambdax:x.lstrip('.'),EXTENSIONS))}}})")