Source code for sarracenia.flowcb.nodupe



import logging

from sarracenia.flowcb import FlowCB

logger = logging.getLogger(__name__)


[docs] class NoDupe(FlowCB): """ duplicate suppression family of modules. invoked with: callback sarracenia.flowcb.nodupe.disk or: callback sarracenia.flowcb.nodupe.redis with default being loaded depdending on the presence of a nodupe_driver "redis" setting (defaults to disk.) """ def deriveKey(self, msg) -> str: key=None if ('nodupe_override' in msg) and ('key' in msg['nodupe_override']): key = msg['nodupe_override']['key'] elif 'fileOp' in msg : if 'link' in msg['fileOp']: key = msg['fileOp']['link'] elif 'directory' in msg['fileOp']: if 'remove' not in msg['fileOp']: key = msg['relPath'] elif ('identity' in msg) and not (msg['identity']['method'] in ['cod']): key = msg['identity']['method'] + ',' + msg['identity']['value'].replace('\n', '') if not key: if 'mtime' in msg: t = msg['mtime'] else: t = msg['pubTime'] if 'size' in msg: key = f"{msg['relPath']},{t},{msg['size']}" else: key = f"{msg['relPath']},{t}" return key