def DemoJilaOrLocal(demoName, localPath): """ Looks for the demo dir in the default (jila-hosted) space. If nothing is found, looks in the paths specified by localpath (where it puts input and output directories according to its name) Args: demoName: see GetDemoInOut localPath: equivalent of baseDir in GetDemoInOut. Where we put the input and Output directories for the unit test if JILA can't be found. Returns: tuple of <inputDir>,<outputDir> """ inDir, outDir = GetDemoInOut(demoName, raiseOnError=False) if (not pGenUtil.dirExists(inDir)): print("Warning: Couldn't connect to JILA's Network. Using local data.") # get "sanitary paths" which as OS-indepdent (in theory..) localPath = pGenUtil.ensureEnds(localPath, "/") inDir = pGenUtil.getSanitaryPath(localPath) outDir = pGenUtil.getSanitaryPath(localPath + "Output" + demoName + "/") pGenUtil.ensureDirExists(outDir) if (not pGenUtil.dirExists(inDir)): # whoops... raise IOError("Demo Directory {:s} not found anywhere.".\ format(inDir)) return inDir, outDir
def GetDemoInOut(demoName, baseDir=DemoDir(), raiseOnError=True): """ Returns the demo input and output directories, given a path baseDir and name demoName. Recquires files to exist at "<baseDir><demoName>". If encountering an error (e.g. permissions, something isn't mounted), raises an error. Args: demoName: The name of the demo. Assumed to be the subdir under "basedir" we want to use baseDir: the base directory. Input and output directories are "<baseDir><demoName>Input/" and "<baseDir><demoName>Output/", resp. raiseOnError : if true, raises an error on an OS. otherwise, just prints a warning that something went wrong. Returns: tuple of <inputDir>,<outputDir> """ fullBase = baseDir + demoName inputV = pGenUtil.getSanitaryPath(fullBase + "/Input/") outputV = pGenUtil.getSanitaryPath(fullBase + "/Output/") try: pGenUtil.ensureDirExists(inputV) pGenUtil.ensureDirExists(outputV) except OSError as e: if (raiseOnError): raise (e) print("Warning, couldn't open demo directories based in " + fullBase + ". Most likely, not connected to JILA network") return inputV, outputV