Task¶
- class lsst.pipe.base.Task(config: Config | None = None, *, name: str | None = None, parentTask: Task | None = None, log: logging.Logger | lsst.utils.logging.LsstLogAdapter | None = None)¶
- Bases: - object- Base class for data processing tasks. - See Overview of the task framework to learn what tasks are, and Creating a task for more information about writing tasks. - Parameters:
- configTask.ConfigClassinstance, optional
- Configuration for this task (an instance of Task.ConfigClass, which is a task-specific subclass of - lsst.pex.config.Config, or- None. If- None:- If parentTask specified then defaults to parentTask.config.<name> 
- If parentTask is None then defaults to self.ConfigClass() 
 
- namestr, optional
- Brief name of task, or - None; if- Nonethen defaults to- Task._DefaultName.
- parentTaskTask-type, optional
- The parent task of this subtask, if any. 
- loglogging.Loggeror subclass, optional
- Log whose name is used as a log name prefix, or - Nonefor no prefix. Ignored if is parentTask specified, in which case- parentTask.log‘s name is used as a prefix. The task’s log name is- prefix + "." + nameif a prefix exists, else- name. The task’s log is then a child logger of- parentTask.log(if- parentTaskspecified), or a child logger of the log from the argument (if- logis not- None).
 
- config
- Raises:
 - Notes - The constructor must use keyword parameters for everything other than the - configparameter which can be positional or use keyword form.- Useful attributes include: - log: an- logging.Loggeror subclass.
- config: task-specific configuration; an instance of- ConfigClass(see below).
- metadata: a- TaskMetadatafor collecting task-specific metadata, e.g. data quality and performance metrics. This is data that is only meant to be persisted, never to be used by the task.
 - Use a - lsst.pipe.base.PipelineTasksubclass to perform I/O with a Butler.- Subclasses must also have an attribute - ConfigClassthat is a subclass of- lsst.pex.config.Configwhich configures the task. Subclasses should also have an attribute- _DefaultName: the default name if there is no parent task.- _DefaultNameis required for subclasses of- PipeLineTaskand recommended for subclasses of Task because it simplifies construction (e.g. for unit tests).- Methods Summary - Empty (clear) the metadata for this Task and all sub-Tasks. - Get metadata for all tasks. - Get the task name as a hierarchical name including parent task names. - getName()- Get the name of the task. - Get a dictionary of all tasks as a shallow copy. - makeField(doc)- Make a - lsst.pex.config.ConfigurableFieldfor this task.- makeSubtask(name, **keyArgs)- Create a subtask as a new instance as the - nameattribute of this task.- timer(name[, logLevel])- Context manager to log performance data for an arbitrary block of code. - Methods Documentation - getFullMetadata() TaskMetadata¶
- Get metadata for all tasks. - Returns:
- metadataTaskMetadata
- The keys are the full task name. Values are metadata for the top-level task and all subtasks, sub-subtasks, etc. 
 
- metadata
 - Notes - The returned metadata includes timing information (if - @timer.timeMethodis used) and any metadata set by the task. The name of each item consists of the full task name with- .replaced by- :, followed by- .and the name of the item, e.g.:- topLevelTaskName:subtaskName:subsubtaskName.itemName - using - :in the full task name disambiguates the rare situation that a task has a subtask and a metadata item with the same name.
 - getFullName() str¶
- Get the task name as a hierarchical name including parent task names. - Returns:
- fullNamestr
- The full name consists of the name of the parent task and each subtask separated by periods. For example: - The full name of top-level task “top” is simply “top”. 
- The full name of subtask “sub” of top-level task “top” is “top.sub”. 
- The full name of subtask “sub2” of subtask “sub” of top-level task “top” is “top.sub.sub2”. 
 
 
- fullName
 
 - getName() str¶
- Get the name of the task. - Returns:
- taskNamestr
- Name of the task. 
 
- taskName
 - See also - getFullName
- Get the full name of the task. 
 
 - getTaskDict() dict[str, weakref.ReferenceType[lsst.pipe.base.task.Task]]¶
- Get a dictionary of all tasks as a shallow copy. - Returns:
- taskDictdict
- Dictionary containing full task name: task object for the top-level task and all subtasks, sub-subtasks, etc. 
 
- taskDict
 
 - classmethod makeField(doc: str) ConfigurableField¶
- Make a - lsst.pex.config.ConfigurableFieldfor this task.- Parameters:
- docstr
- Help text for the field. 
 
- doc
- Returns:
- configurableFieldlsst.pex.config.ConfigurableField
- A - ConfigurableFieldfor this task.
 
- configurableField
 - Examples - Provides a convenient way to specify this task is a subtask of another task. - Here is an example of use: - class OtherTaskConfig(lsst.pex.config.Config): aSubtask = ATaskClass.makeField("brief description of task") 
 - makeSubtask(name: str, **keyArgs: Any) None¶
- Create a subtask as a new instance as the - nameattribute of this task.- Parameters:
- namestr
- Brief name of the subtask. 
- **keyArgs
- Extra keyword arguments used to construct the task. The following arguments are automatically provided and cannot be overridden: - config.
- parentTask.
 
 
- name
 - Notes - The subtask must be defined by - Task.config.name, an instance of- ConfigurableFieldor- RegistryField.