A `TaskRunner` for `CmdLineTask`\ s which calls the `Task`\ 's `run`
method on a `dataRef` rather than the `runDataRef` method.
Definition at line 498 of file cmdLineTask.py.
◆ __call__()
def lsst.pipe.base.cmdLineTask.TaskRunner.__call__ |
( |
|
self, |
|
|
|
args |
|
) |
| |
|
inherited |
Run the Task on a single target.
Parameters
----------
args
Arguments for Task.runDataRef()
Returns
-------
struct : `lsst.pipe.base.Struct`
Contains these fields if ``doReturnResults`` is `True`:
- ``dataRef``: the provided data reference.
- ``metadata``: task metadata after execution of run.
- ``result``: result returned by task run, or `None` if the task
fails.
- ``exitStatus``: 0 if the task completed successfully, 1
otherwise.
If ``doReturnResults`` is `False` the struct contains:
- ``exitStatus``: 0 if the task completed successfully, 1
otherwise.
Notes
-----
This default implementation assumes that the ``args`` is a tuple
containing a data reference and a dict of keyword arguments.
.. warning::
If you override this method and wish to return something when
``doReturnResults`` is `False`, then it must be picklable to
support multiprocessing and it should be small enough that pickling
and unpickling do not add excessive overhead.
Definition at line 380 of file cmdLineTask.py.
◆ getTargetList()
def lsst.pipe.base.cmdLineTask.TaskRunner.getTargetList |
( |
|
parsedCmd, |
|
|
** |
kwargs |
|
) |
| |
|
staticinherited |
Get a list of (dataRef, kwargs) for `TaskRunner.__call__`.
Parameters
----------
parsedCmd : `argparse.Namespace`
The parsed command object returned by
`lsst.pipe.base.argumentParser.ArgumentParser.parse_args`.
kwargs
Any additional keyword arguments. In the default `TaskRunner` this
is an empty dict, but having it simplifies overriding `TaskRunner`
for tasks whose runDataRef method takes additional arguments
(see case (1) below).
Notes
-----
The default implementation of `TaskRunner.getTargetList` and
`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.getTargetList` and possibly `TaskRunner.__call__`.
There are two cases.
**Case 1**
If your command-line task has a ``runDataRef`` method that takes one
data reference followed by additional arguments, then you need only
override `TaskRunner.getTargetList` to return the additional
arguments as an argument dict. To make this easier, your overridden
version of `~TaskRunner.getTargetList` may call
`TaskRunner.getTargetList` with 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:
.. code-block:: python
def getTargetList(parsedCmd):
return TaskRunner.getTargetList(
parsedCmd,
calExpList=parsedCmd.calexp.idList
)
It is equivalent to this slightly longer version:
.. code-block:: python
@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.getTargetList`
returns a list, each of whose elements is sent to
`TaskRunner.__call__`, which runs your task.
Definition at line 253 of file cmdLineTask.py.
◆ makeTask()
def lsst.pipe.base.cmdLineTask.TaskRunner.makeTask |
( |
|
self, |
|
|
|
parsedCmd = None , |
|
|
|
args = None |
|
) |
| |
|
inherited |
Create a Task instance.
Parameters
----------
parsedCmd
Parsed command-line options (used for extra task args by some task
runners).
args
Args tuple passed to `TaskRunner.__call__` (used for extra task
arguments by some task runners).
Notes
-----
``makeTask`` can be called with either the ``parsedCmd`` argument or
``args`` argument set to None, but it must construct identical Task
instances in either case.
Subclasses may ignore this method entirely if they reimplement both
`TaskRunner.precall` and `TaskRunner.__call__`.
Reimplemented in lsst.pipe.base.cmdLineTask.ButlerInitializedTaskRunner.
Definition at line 315 of file cmdLineTask.py.
◆ precall()
def lsst.pipe.base.cmdLineTask.TaskRunner.precall |
( |
|
self, |
|
|
|
parsedCmd |
|
) |
| |
|
inherited |
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.
Definition at line 349 of file cmdLineTask.py.
◆ prepareForMultiProcessing()
def lsst.pipe.base.cmdLineTask.TaskRunner.prepareForMultiProcessing |
( |
|
self | ) |
|
|
inherited |
Prepare this instance for multiprocessing
Optional non-picklable elements are removed.
This is only called if the task is run under multiprocessing.
Definition at line 193 of file cmdLineTask.py.
◆ run()
def lsst.pipe.base.cmdLineTask.TaskRunner.run |
( |
|
self, |
|
|
|
parsedCmd |
|
) |
| |
|
inherited |
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.precall` returns `False`). See `TaskRunner.__call__`
for details.
Notes
-----
The task is run under multiprocessing if `TaskRunner.numProcesses`
is more than 1; otherwise processing is serial.
Definition at line 202 of file cmdLineTask.py.
◆ runTask()
def lsst.pipe.base.cmdLineTask.LegacyTaskRunner.runTask |
( |
|
self, |
|
|
|
task, |
|
|
|
dataRef, |
|
|
|
kwargs |
|
) |
| |
◆ clobberConfig
lsst.pipe.base.cmdLineTask.TaskRunner.clobberConfig |
|
inherited |
◆ config
lsst.pipe.base.cmdLineTask.TaskRunner.config |
|
inherited |
◆ doBackup
lsst.pipe.base.cmdLineTask.TaskRunner.doBackup |
|
inherited |
◆ doRaise
lsst.pipe.base.cmdLineTask.TaskRunner.doRaise |
|
inherited |
◆ doReturnResults
lsst.pipe.base.cmdLineTask.TaskRunner.doReturnResults |
|
inherited |
◆ log
lsst.pipe.base.cmdLineTask.TaskRunner.log |
|
inherited |
◆ numProcesses
lsst.pipe.base.cmdLineTask.TaskRunner.numProcesses |
|
inherited |
◆ TaskClass
lsst.pipe.base.cmdLineTask.TaskRunner.TaskClass |
|
inherited |
◆ TIMEOUT
int lsst.pipe.base.cmdLineTask.TaskRunner.TIMEOUT = 3600*24*30 |
|
staticinherited |
◆ timeout
lsst.pipe.base.cmdLineTask.TaskRunner.timeout |
|
inherited |
The documentation for this class was generated from the following file: