def inheritmetadata(From,To,creates='../System/MetaData/'): FromPath = opmetadatapath(From) if IsDotPath(From) else metadatapath(From) ToPath = opmetadatapath(To) if IsDotPath(To) else metadatapath(To) X = ConsolidateSources(FromPath,extensions=['Associated','Attached','Inherited']) F = open(ToPath + '/InheritedMetaData.pickle','wb') pickle.dump(X,F) F.close() ProcessMetaData(ToPath,objname=To)
def GenerateAutomaticMetaData(objname,forced=False,use=100): metapath = opmetadatapath(objname) if IsDotPath(objname) else metadatapath(objname) if IsDotPath(objname): path = '../' + '/'.join(objname.split('.')[:-1]) + '.py' objectname = objname.split('.')[-1] else: path = objname objectname ='' if forced or not PathExists(metapath) or os.path.getmtime(metapath) <= FindMtime(path,objectname=objectname,Simple=False): if IsDir(objname): if objname[-1] != '/': objname += '/' if is_hsv_dir(objname): pass else: D = {} L = [objname + ll for ll in listdir(objname) if not ll.startswith('.')] for l in L: D.update(GenerateAutomaticMetaData(l,forced=forced)) LL = set(L).intersection(D.keys()) D[objname] = IntegrateDirMetaData([D[l] for l in LL]) return D else: if IsPythonFile(objname) or IsDotPath(objname): d = StoredDocstring(objname) if d: return {objname:{'description':d,'signature': 'python'}} elif objname.endswith(('.csv','.tsv')): if IsFile(objname): try: x = tabularmetadata(objname,use=use) except: x = DEFAULT_GenerateAutomaticMetaData(objname) print 'Failed to tabular metadata for', objname print_exc() else: x['signature'] = 'tabular' return {objname : x} return {} else: try: return {objname:pickle.load(open(metapath+'/AutomaticMetaData.pickle','r'))} except: return GenerateAutomaticMetaData(objname,forced=True)