TaskMetadata¶
- class lsst.pipe.base.TaskMetadata(*, scalars: dict[str, typing.Union[typing.Annotated[float, Strict(strict=True)], typing.Annotated[int, Strict(strict=True)], typing.Annotated[bool, Strict(strict=True)], typing.Annotated[str, Strict(strict=True)]]] = None, arrays: dict[str, list[typing.Annotated[float, Strict(strict=True)]] | list[typing.Annotated[int, Strict(strict=True)]] | list[typing.Annotated[bool, Strict(strict=True)]] | list[typing.Annotated[str, Strict(strict=True)]]] = None, metadata: dict[str, lsst.pipe.base._task_metadata.TaskMetadata] = None)¶
Bases:
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.
Attributes Summary
Get the computed fields of this model instance.
Configuration for the model, should be a dictionary conforming to [
ConfigDict
][pydantic.config.ConfigDict].Get extra fields set during validation.
Metadata about the fields defined on the model, mapping of field names to [
FieldInfo
][pydantic.fields.FieldInfo].Returns the set of fields that have been explicitly set on this model instance.
Methods Summary
add
(name, value)Store a new value, adding to a list if one already exists.
construct
([_fields_set])copy
(*args, **kwargs)See
pydantic.BaseModel.copy
.dict
(*[, include, exclude, by_alias, ...])from_dict
(d)Create a TaskMetadata from a dictionary.
from_metadata
(ps)Create a TaskMetadata from a PropertySet-like object.
from_orm
(obj)get
(key[, default])Retrieve the item associated with the key or a default.
getArray
(key)Retrieve an item as a list even if it is a scalar.
getScalar
(key)Retrieve a scalar item even if the item is a list.
get_dict
(key)Return a possibly-hierarchical nested
dict
.items
()Yield the top-level keys and values.
json
(*[, include, exclude, by_alias, ...])keys
()Return the top-level keys.
model_construct
([_fields_set])Creates a new instance of the
Model
class with validated data.model_copy
(*args, **kwargs)See
pydantic.BaseModel.model_copy
.model_dump
(*args, **kwargs)See
pydantic.BaseModel.model_dump
.model_dump_json
(*args, **kwargs)See
pydantic.BaseModel.model_dump_json
.model_json_schema
(*args, **kwargs)See
pydantic.BaseModel.model_json_schema
.model_parametrized_name
(params)Compute the class name for parametrizations of generic classes.
model_post_init
(_BaseModel__context)Override this method to perform additional initialization after
__init__
andmodel_construct
.model_rebuild
(*[, force, raise_errors, ...])Try to rebuild the pydantic-core schema for the model.
model_validate
(obj, *[, strict, ...])Validate a pydantic model instance.
model_validate_json
(json_data, *[, strict, ...])Usage docs: https://docs.pydantic.dev/2.5/concepts/json/#json-parsing
model_validate_strings
(obj, *[, strict, context])Validate the given object contains string data against the Pydantic model.
names
()Return the hierarchical keys from the metadata.
paramNames
(topLevelOnly)Return hierarchical names.
parse_file
(path, *[, content_type, ...])parse_obj
(obj)parse_raw
(b, *[, content_type, encoding, ...])schema
([by_alias, ref_template])schema_json
(*[, by_alias, ref_template])set_dict
(key, value)Assign a possibly-hierarchical nested
dict
.to_dict
()Convert the class to a simple dictionary.
update_forward_refs
(**localns)validate
(value)Attributes Documentation
- model_computed_fields¶
Get the computed fields of this model instance.
- Returns:
A dictionary of computed field names and their corresponding
ComputedFieldInfo
objects.
- model_config: ClassVar[ConfigDict] = {'ser_json_inf_nan': 'constants'}¶
Configuration for the model, should be a dictionary conforming to [
ConfigDict
][pydantic.config.ConfigDict].
- model_extra¶
Get extra fields set during validation.
- Returns:
A dictionary of extra fields, or
None
ifconfig.extra
is not set to"allow"
.
- model_fields: ClassVar[dict[str, FieldInfo]] = {'arrays': FieldInfo(annotation=dict[str, Union[list[Annotated[float, Strict(strict=True)]], list[Annotated[int, Strict(strict=True)]], list[Annotated[bool, Strict(strict=True)]], list[Annotated[str, Strict(strict=True)]]]], required=False, default_factory=dict), 'metadata': FieldInfo(annotation=dict[str, TaskMetadata], required=False, default_factory=dict), 'scalars': FieldInfo(annotation=dict[str, Union[Annotated[float, Strict(strict=True)], Annotated[int, Strict(strict=True)], Annotated[bool, Strict(strict=True)], Annotated[str, Strict(strict=True)]]], required=False, default_factory=dict)}¶
Metadata about the fields defined on the model, mapping of field names to [
FieldInfo
][pydantic.fields.FieldInfo].This replaces
Model.__fields__
from Pydantic V1.
- model_fields_set¶
Returns the set of fields that have been explicitly set on this model instance.
- Returns:
- A set of strings representing the fields that have been set,
i.e. that were not filled from defaults.
Methods Documentation
- dict(*, include: IncEx = None, exclude: IncEx = None, by_alias: bool = False, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False) Dict[str, Any] ¶
- classmethod from_dict(d: Mapping[str, Any]) 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
.
- d
- Returns:
- meta
TaskMetadata
Newly-constructed metadata.
- meta
- classmethod from_metadata(ps: PropertySetLike) TaskMetadata ¶
Create a TaskMetadata from a PropertySet-like object.
- Parameters:
- ps
PropertySetLike
orTaskMetadata
A
PropertySet
-like object to be transformed to aTaskMetadata
. ATaskMetadata
can be copied using this class method.
- ps
- Returns:
- tm
TaskMetadata
Newly-constructed metadata.
- tm
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 ¶
- get(key: str, default: Any = None) Any ¶
Retrieve the item associated with the key or a default.
- Parameters:
- Returns:
- value
TaskMetadata
,float
,int
,bool
,str
A scalar value. If the key refers to an array, the final element is returned and not the array itself; this is consistent with
__getitem__
andPropertySet.get
, but notto_dict().get
.
- value
- get_dict(key: str) Mapping[str, str | float | int | bool | Mapping[str, str | float | int | bool | NestedMetadataDict]] ¶
Return a possibly-hierarchical nested
dict
.This implements the
GetDictMetadata
protocol for consistency withlsst.daf.base.PropertySet
andlsst.daf.base.PropertyList
. The returneddict
is guaranteed to be a deep copy, not a view.
- json(*, include: IncEx = None, exclude: IncEx = None, by_alias: bool = False, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = False, encoder: Callable[[Any], Any] | None = PydanticUndefined, models_as_dict: bool = PydanticUndefined, **dumps_kwargs: Any) str ¶
- classmethod model_construct(_fields_set: set[str] | None = None, **values: Any) Model ¶
Creates a new instance of the
Model
class with validated data.Creates a new model setting
__dict__
and__pydantic_fields_set__
from trusted or pre-validated data. Default values are respected, but no other validation is performed. Behaves as ifConfig.extra = 'allow'
was set since it adds all passed values- Args:
_fields_set: The set of field names accepted for the Model instance. values: Trusted or pre-validated data dictionary.
- Returns:
A new instance of the
Model
class with validated data.
- classmethod model_json_schema(*args: Any, **kwargs: Any) Any ¶
See
pydantic.BaseModel.model_json_schema
.
- classmethod model_parametrized_name(params: tuple[type[Any], ...]) str ¶
Compute the class name for parametrizations of generic classes.
This method can be overridden to achieve a custom naming scheme for generic BaseModels.
- Args:
- params: Tuple of types of the class. Given a generic class
Model
with 2 type variables and a concrete modelModel[str, int]
, the value(str, int)
would be passed toparams
.
- Returns:
String representing the new class where
params
are passed tocls
as type variables.- Raises:
TypeError: Raised when trying to generate concrete names for non-generic models.
- model_post_init(_BaseModel__context: Any) None ¶
Override this method to perform additional initialization after
__init__
andmodel_construct
. This is useful if you want to do some validation that requires the entire model to be initialized.
- classmethod model_rebuild(*, force: bool = False, raise_errors: bool = True, _parent_namespace_depth: int = 2, _types_namespace: dict[str, Any] | None = None) bool | None ¶
Try to rebuild the pydantic-core schema for the model.
This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.
- Args:
force: Whether to force the rebuilding of the model schema, defaults to
False
. raise_errors: Whether to raise errors, defaults toTrue
. _parent_namespace_depth: The depth level of the parent namespace, defaults to 2. _types_namespace: The types namespace, defaults toNone
.- Returns:
Returns
None
if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returnsTrue
if rebuilding was successful, otherwiseFalse
.
- classmethod model_validate(obj: Any, *, strict: bool | None = None, from_attributes: bool | None = None, context: dict[str, Any] | None = None) Model ¶
Validate a pydantic model instance.
- Args:
obj: The object to validate. strict: Whether to raise an exception on invalid fields. from_attributes: Whether to extract data from object attributes. context: Additional context to pass to the validator.
- Raises:
ValidationError: If the object could not be validated.
- Returns:
The validated model instance.
- classmethod model_validate_json(json_data: str | bytes | bytearray, *, strict: bool | None = None, context: dict[str, Any] | None = None) Model ¶
Usage docs: https://docs.pydantic.dev/2.5/concepts/json/#json-parsing
Validate the given JSON data against the Pydantic model.
- Args:
json_data: The JSON data to validate. strict: Whether to enforce types strictly. context: Extra variables to pass to the validator.
- Returns:
The validated Pydantic model.
- Raises:
ValueError: If
json_data
is not a JSON string.
- classmethod model_validate_strings(obj: Any, *, strict: bool | None = None, context: dict[str, Any] | None = None) Model ¶
Validate the given object contains string data against the Pydantic model.
- Args:
obj: The object contains string data to validate. strict: Whether to enforce types strictly. context: Extra variables to pass to the validator.
- Returns:
The validated Pydantic model.
- names() set[str] ¶
Return the hierarchical keys from the metadata.
- Returns:
- names
collections.abc.Set
A set of all keys, including those from the hierarchy and the top-level hierarchy.
- names
- paramNames(topLevelOnly: bool) set[str] ¶
Return hierarchical names.
- Parameters:
- topLevelOnly
bool
Control whether only top-level items are returned or items from the hierarchy.
- topLevelOnly
- Returns:
- classmethod parse_file(path: str | Path, *, content_type: str | None = None, encoding: str = 'utf8', proto: DeprecatedParseProtocol | None = None, allow_pickle: bool = False) Model ¶
- classmethod parse_obj(obj: Any) Model ¶
- classmethod parse_raw(b: str | bytes, *, content_type: str | None = None, encoding: str = 'utf8', proto: DeprecatedParseProtocol | None = None, allow_pickle: bool = False) Model ¶
- classmethod schema_json(*, by_alias: bool = True, ref_template: str = '#/$defs/{model}', **dumps_kwargs: Any) str ¶
- set_dict(key: str, value: Mapping[str, str | float | int | bool | Mapping[str, str | float | int | bool | NestedMetadataDict]]) None ¶
Assign a possibly-hierarchical nested
dict
.This implements the
SetDictMetadata
protocol for consistency withlsst.daf.base.PropertySet
andlsst.daf.base.PropertyList
.
- 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.
- d
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. UseTaskMetadata.from_dict()
to convert it back.
- classmethod validate(value: Any) Model ¶