Source code for banffprocessor.procedures.banff_procedures.verifyedits

import banff.exceptions
from banff import verifyed
from banff._log import log_levels

# Import must be absolute in order to ensure all modules reference the same global _c_handlers
import banffprocessor.processor_logger as plg
from banffprocessor.exceptions import BanffPackageExecutionError
from banffprocessor.metadata.models.verifyeditsspecs import Verifyeditsspecs
from banffprocessor.nls import _
from banffprocessor.procedures import factory
from banffprocessor.processor_data import ProcessorData

# Setup local log for processor module specifically
log_lcl = plg.get_processor_child_logger("verifyedits")

[docs] class VerifyEdits: """Implements the VerifyEdits Banff procedure as a `:class:banffprocessor.procedures.procedure_interface`."""
[docs] @classmethod def execute(cls, processor_data: ProcessorData) -> int: """Execute the banff.verifyedits call, and returns the results.""" # alias the param name to shorten references bp = processor_data job_step = bp.current_job_step verifyedit_specs: Verifyeditsspecs = bp.metaobjects.get_specs_obj(Verifyeditsspecs, job_step.specid) # Get the edit string proc_edits = None if(job_step.editgroupid): proc_edits = bp.metaobjects.get_edits_string(job_step.editgroupid) if(proc_edits is None): msg = _("VerifyEdits requires a set of edits to work but none were found for this job step.") log_lcl.exception(msg) raise BanffPackageExecutionError(msg) # Form our Banff call try: banff_call = verifyed( # Not supposed to provide these as False, only True or None accept_negative=job_step.acceptnegative, extremal=verifyedit_specs.extremal if verifyedit_specs else None, imply=verifyedit_specs.imply if verifyedit_specs else None, edits=proc_edits if proc_edits else None, # We want everything captured while an input param configures the handlers which indirectly filter. trace=log_levels.NOTSET, # Note that capture=None will supress console output in new version so use False or omit logger=log_lcl, _BP_c_log_handlers=plg.get_c_handlers(), ) except banff.exceptions.ProcedureCError as e: msg = _("An error occured during execution of this procedure.") log_lcl.exception(msg) return e.return_code # Get the return code from the exception return banff_call.rc
[docs] def register(factory: factory) -> None: """Register this procedure class in the Banff processor procedure factory.""" factory.register(["verifyedits", "verify_edits", "verifyed"], VerifyEdits)