#!/usr/bin/env python import abc class FileProcessor: DEFAULT_NUMBER_OF_RETRIES = 0 DEFAULT_RETRY_WAIT_PERIOD_IN_SECONDS = 60 def __init__(self): self.configDict = {} @abc.abstractmethod def processFile(self, fileInfo): return NotImplemented def replaceTemplates(self, inputString, fileInfo): experimentName = fileInfo.get('experimentName', '') outputString = inputString.replace('EXPERIMENT_NAME', experimentName) return outputString def checkUploadFilesForProcessing(self, filePathsDict, uploadInfo): return {} def configure(self): # Use this method for processor configuration pass def setConfigKeyValue(self, key, value): self.configDict[key] = value def getConfigKeyValue(self, key): return self.configDict.get(key) def setNumberOfRetries(self, nRetries): self.configDict['numberOfRetries'] = nRetries def getNumberOfRetries(self): return self.configDict.get('numberOfRetries', self.DEFAULT_NUMBER_OF_RETRIES) def setRetryWaitPeriodInSeconds(self, waitPeriod): self.configDict['retryWaitPeriodInSeconds'] = waitPeriod def getRetryWaitPeriodInSeconds(self): return self.configDict.get('retryWaitPeriodInSeconds', self.DEFAULT_RETRY_WAIT_PERIOD_IN_SECONDS)