TaskMetadata

class lsst.pipe.base.TaskMetadata

Bases: pydantic.main.BaseModel

Dict-like object for storing task metadata.

Metadata can be stored at two levels: single task or task plus subtasks. The later is called full metadata of a task and has a form

topLevelTaskName:subtaskName:subsubtaskName.itemName

Metadata item key of a task (itemName above) must not contain , which serves as a separator in full metadata keys and turns the value into sub-dictionary. Arbitrary hierarchies are supported.

Deprecated methods are for compatibility with the predecessor containers.

Attributes Summary

copy Duplicate a model, optionally choose which fields to include, exclude and change.
dict Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
json Generate a JSON representation of the model, include and exclude arguments as per dict().

Methods Summary

add(name, value) Store a new value, adding to a list if one already exists.
construct(_fields_set, **values) Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data.
from_dict(d, Any]) Create a TaskMetadata from a dictionary.
from_metadata(ps) Create a TaskMetadata from a PropertySet-like object.
from_orm(obj)
getArray(key) Retrieve an item as a list even if it is a scalar.
getAsDouble(key) Return the value cast to a float.
getScalar(key) Retrieve a scalar item even if the item is a list.
items() Yield the top-level keys and values.
keys() Return the top-level keys.
names(topLevelOnly) Return the hierarchical keys from the metadata.
paramNames(topLevelOnly) Return hierarchical names.
parse_file(path, pathlib.Path], *, …)
parse_obj(obj)
parse_raw(b, bytes], *, content_type, …)
remove(key) Remove the item without raising if absent.
schema(by_alias, ref_template)
schema_json(*, by_alias, ref_template, …)
set(key, item) Set the value of the supplied key.
to_dict() Convert the class to a simple dictionary.
update_forward_refs(**localns) Try to update ForwardRefs on fields based on this Model, globalns and localns.
validate(value)

Attributes Documentation

copy

Duplicate a model, optionally choose which fields to include, exclude and change.

Parameters:
  • include – fields to include in new model
  • exclude – fields to exclude from new model, as with values this takes precedence over include
  • update – values to change/add in the new model. Note: the data is not validated before creating the new model: you should trust this data
  • deep – set to True to make a deep copy of the model
Returns:

new model instance

dict

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

json

Generate a JSON representation of the model, include and exclude arguments as per dict().

encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().

Methods Documentation

add(name, value)

Store a new value, adding to a list if one already exists.

Parameters:
name : str

Name of the metadata property.

value

Metadata property value.

classmethod construct(_fields_set: Optional[SetStr] = None, **values) → Model

Creates a new model setting __dict__ and __fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as if Config.extra = 'allow' was set since it adds all passed values

classmethod from_dict(d: Mapping[str, Any]) → lsst.pipe.base._task_metadata.TaskMetadata

Create a TaskMetadata from a dictionary.

Parameters:
d : Mapping

Mapping to convert. Can be hierarchical. Any dictionaries in the hierarchy are converted to TaskMetadata.

Returns:
meta : TaskMetadata

Newly-constructed metadata.

classmethod from_metadata(ps: lsst.pipe.base._task_metadata.PropertySetLike) → lsst.pipe.base._task_metadata.TaskMetadata

Create a TaskMetadata from a PropertySet-like object.

Parameters:
ps : PropertySetLike or TaskMetadata

A PropertySet-like object to be transformed to a TaskMetadata. A TaskMetadata can be copied using this class method.

Returns:
tm : TaskMetadata

Newly-constructed metadata.

Notes

Items stored in single-element arrays in the supplied object will be converted to scalars in the newly-created object.

classmethod from_orm(obj: Any) → Model
getArray(key)

Retrieve an item as a list even if it is a scalar.

Parameters:
key : str

Item to retrieve.

Returns:
values : list of any

A list containing the value or values associated with this item.

Raises:
KeyError

Raised if the item is not found.

getAsDouble(key)

Return the value cast to a float.

Parameters:
key : str

Item to return. Can be dot-separated hierarchical.

Returns:
value : float

The value cast to a float.

Raises:
KeyError

Raised if the item is not found.

.. deprecated:: v24

Cast the return value to float explicitly. Will be removed after v25.

getScalar(key)

Retrieve a scalar item even if the item is a list.

Parameters:
key : str

Item to retrieve.

Returns:
value : Any

Either the value associated with the key or, if the key corresponds to a list, the last item in the list.

Raises:
KeyError

Raised if the item is not found.

items()

Yield the top-level keys and values.

keys()

Return the top-level keys.

names(topLevelOnly: bool = True)

Return the hierarchical keys from the metadata.

Parameters:
topLevelOnly : bool

If true, return top-level keys, otherwise full metadata item keys.

Returns:
names : collection.abc.Set

A set of top-level keys or full metadata item keys, including the top-level keys.

Notes

Should never be called in new code with topLevelOnly set to True – this is equivalent to asking for the keys and is the default when iterating through the task metadata. In this case a deprecation message will be issued and the ability will raise an exception in a future release.

When topLevelOnly is False all keys, including those from the hierarchy and the top-level hierarchy, are returned.

paramNames(topLevelOnly)

Return hierarchical names.

Parameters:
topLevelOnly : bool

Control whether only top-level items are returned or items from the hierarchy.

Returns:
paramNames : set of str

If topLevelOnly is True, returns any keys that are not part of a hierarchy. If False also returns fully-qualified names from the hierarchy. Keys associated with the top of a hierarchy are never returned.

classmethod parse_file(path: Union[str, pathlib.Path], *, content_type: unicode = None, encoding: unicode = 'utf8', proto: pydantic.parse.Protocol = None, allow_pickle: bool = False) → Model
classmethod parse_obj(obj: Any) → Model
classmethod parse_raw(b: Union[str, bytes], *, content_type: unicode = None, encoding: unicode = 'utf8', proto: pydantic.parse.Protocol = None, allow_pickle: bool = False) → Model
remove(key)

Remove the item without raising if absent.

Deprecated since version v24: Use standard del dict syntax. Will be removed after v25.

classmethod schema(by_alias: bool = True, ref_template: unicode = '#/definitions/{model}') → DictStrAny
classmethod schema_json(*, by_alias: bool = True, ref_template: unicode = '#/definitions/{model}', **dumps_kwargs) → unicode
set(key, item)

Set the value of the supplied key.

Deprecated since version v24: Use standard assignment syntax. Will be removed after v25.

to_dict() → Dict[str, Any]

Convert the class to a simple dictionary.

Returns:
d : dict

Simple dictionary that can contain scalar values, array values or other dictionary values.

Notes

Unlike dict(), this method hides the model layout and combines scalars, arrays, and other metadata in the same dictionary. Can be used when a simple dictionary is needed. Use TaskMetadata.from_dict() to convert it back.

classmethod update_forward_refs(**localns) → None

Try to update ForwardRefs on fields based on this Model, globalns and localns.

classmethod validate(value: Any) → Model