ButlerInitializedTaskRunner¶
- 
class lsst.pipe.base.ButlerInitializedTaskRunner(TaskClass, parsedCmd, doReturnResults=False)¶
- Bases: - lsst.pipe.base.TaskRunner- A - TaskRunnerfor- CmdLineTasks that require a- butlerkeyword argument to be passed to their constructor.- Attributes Summary - TIMEOUT- Methods Summary - __call__(args)- Run the Task on a single target. - getTargetList(parsedCmd, **kwargs)- Get a list of (dataRef, kwargs) for - TaskRunner.__call__.- makeTask([parsedCmd, args])- A variant of the base version that passes a butler argument to the task’s constructor. - precall(parsedCmd)- Hook for code that should run exactly once, before multiprocessing. - prepareForMultiProcessing()- Prepare this instance for multiprocessing - run(parsedCmd)- Run the task on all targets. - runTask(task, dataRef, kwargs)- Make the actual call to - runDataReffor this task.- Attributes Documentation - 
TIMEOUT= 2592000¶
 - Methods Documentation - 
__call__(args)¶
- Run the Task on a single target. - Parameters: - args
- Arguments for Task.runDataRef() 
 - Returns: - struct : lsst.pipe.base.Struct
- Contains these fields if - doReturnResultsis- True:- dataRef: the provided data reference.
- metadata: task metadata after execution of run.
- result: result returned by task run, or- Noneif the task fails.
- exitStatus: 0 if the task completed successfully, 1 otherwise.
 - If - doReturnResultsis- Falsethe struct contains:- exitStatus: 0 if the task completed successfully, 1 otherwise.
 
 - Notes - This default implementation assumes that the - argsis a tuple containing a data reference and a dict of keyword arguments.- Warning - If you override this method and wish to return something when - doReturnResultsis- False, then it must be picklable to support multiprocessing and it should be small enough that pickling and unpickling do not add excessive overhead.
 - 
static getTargetList(parsedCmd, **kwargs)¶
- Get a list of (dataRef, kwargs) for - TaskRunner.__call__.- Parameters: - parsedCmd : argparse.Namespace
- The parsed command object returned by - lsst.pipe.base.ArgumentParser.parse_args.
- kwargs
- Any additional keyword arguments. In the default - TaskRunnerthis is an empty dict, but having it simplifies overriding- TaskRunnerfor tasks whose runDataRef method takes additional arguments (see case (1) below).
 - Notes - The default implementation of - TaskRunner.getTargetListand- TaskRunner.__call__works for any command-line task whose runDataRef method takes exactly one argument: a data reference. Otherwise you must provide a variant of TaskRunner that overrides- TaskRunner.getTargetListand possibly- TaskRunner.__call__. There are two cases.- Case 1 - If your command-line task has a - runDataRefmethod that takes one data reference followed by additional arguments, then you need only override- TaskRunner.getTargetListto return the additional arguments as an argument dict. To make this easier, your overridden version of- getTargetListmay call- TaskRunner.getTargetListwith the extra arguments as keyword arguments. For example, the following adds an argument dict containing a single key: “calExpList”, whose value is the list of data IDs for the calexp ID argument:- def getTargetList(parsedCmd): return TaskRunner.getTargetList( parsedCmd, calExpList=parsedCmd.calexp.idList ) - It is equivalent to this slightly longer version: - @staticmethod def getTargetList(parsedCmd): argDict = dict(calExpList=parsedCmd.calexp.idList) return [(dataId, argDict) for dataId in parsedCmd.id.idList] - Case 2 - If your task does not meet condition (1) then you must override both TaskRunner.getTargetList and - TaskRunner.__call__. You may do this however you see fit, so long as- TaskRunner.getTargetListreturns a list, each of whose elements is sent to- TaskRunner.__call__, which runs your task.
- parsedCmd : 
 - 
makeTask(parsedCmd=None, args=None)¶
- A variant of the base version that passes a butler argument to the task’s constructor. - Parameters: - parsedCmd : argparse.Namespace
- Parsed command-line options, as returned by the - ArgumentParser; if specified then args is ignored.
- args
- Other arguments; if - parsedCmdis- Nonethen this must be specified.
 - Raises: - RuntimeError
- Raised if - parsedCmdand- argsare both- None.
 
- parsedCmd : 
 - 
precall(parsedCmd)¶
- Hook for code that should run exactly once, before multiprocessing. - Notes - Must return True if - TaskRunner.__call__should subsequently be called.- Warning - Implementations must take care to ensure that no unpicklable attributes are added to the TaskRunner itself, for compatibility with multiprocessing. - The default implementation writes package versions, schemas and configs, or compares them to existing files on disk if present. 
 - 
prepareForMultiProcessing()¶
- Prepare this instance for multiprocessing - Optional non-picklable elements are removed. - This is only called if the task is run under multiprocessing. 
 - 
run(parsedCmd)¶
- Run the task on all targets. - Parameters: - parsedCmd : argparse.Namespace
- Parsed command - argparse.Namespace.
 - Returns: - resultList : list
- A list of results returned by - TaskRunner.__call__, or an empty list if- TaskRunner.__call__is not called (e.g. if- TaskRunner.precallreturns- False). See- TaskRunner.__call__for details.
 - Notes - The task is run under multiprocessing if - TaskRunner.numProcessesis more than 1; otherwise processing is serial.
- parsedCmd : 
 - 
runTask(task, dataRef, kwargs)¶
- Make the actual call to - runDataReffor this task.- Parameters: - task : lsst.pipe.base.CmdLineTaskclass
- The class of the task to run. 
- dataRef
- Butler data reference that contains the data the task will process. 
- kwargs
- Any additional keyword arguments. See - TaskRunner.getTargetListabove.
 - Notes - The default implementation of - TaskRunner.runTaskworks for any command-line task which has a runDataRef method that takes a data reference and an optional set of additional keyword arguments. This method returns the results generated by the task’s- runDataRefmethod.
- task : 
 
-