MetadataQuery#
- class lsst.verify.MetadataQuery(terms=None)#
Bases:
JsonSerializationMixinQuery of
lsst.verify.Job.metametadata.Parameters#
- terms
dict, optional A mapping of key-value query terms. In the default query mode, the user-provided job metadata must have all these terms, and matching values, to pass the query.
Examples#
A MetadataQuery returns
Trueif all key-value terms found inMetadataQuery.termsare equal to key-value metadata items.>>> metadata = {'filter': 'r', 'camera': 'MegaCam'}
An example of a query with a conflicting term:
>>> query1 = MetadataQuery({'filter': 'r', 'camera': 'SDSS'}) >>> query1(metadata) False
A query with matching terms (albeit, a subset of the metadata):
>>> query2 = MetadataQuery({'filter': 'r'}) >>> query2(metadata) True
A query that overconstrains the available metadata:
>>> query3 = MetadataQuery({'filter': 'r', 'camera': 'MegaCam', ... 'photometric': True}) >>> query3(metadata) False
The
arg_driven=Truemode reverses the matching logic so that all terms in the user-provided metadata must be in the MetadataQuery:>>> query3(metadata, arg_driven=True) True >>> query2(metadata, arg_driven=True) False
Attributes Summary
Methods Summary
__call__(metadata[, arg_driven])Determine if a metadata set matches the query terms.
Attributes Documentation
- json#
A JSON-serializable dict.
Keys are metadata keys. Values are the associated metadata values of the query term.
- terms = None#
Term mapping (
dict). Metadata must have all keys and corresponding values.
Methods Documentation
- __call__(metadata, arg_driven=False)#
Determine if a metadata set matches the query terms.
Parameters#
- metadata
dictorlsst.verify.Metadata Metadata mapping. Typically this is a job’s
lsst.verify.Job.meta.- arg_driven
bool, optional If
False(default),metadatamatches theMetadataQueryifmetadatahas all the terms defined inMetadataQuery, and those terms match. Ifmetadatahas more terms thanMetadataQuery, it can still match.If
True, the orientation of the matching is reversed. Nowmetadatamatches theMetadataQueryifMetadataQueryhas all the terms defined inmetadataand those terms match. IfMetadataQueryhas more terms thanmetadata, it can still match.
Returns#
- match
bool Trueif the metadata matches the query terms;Falseotherwise.
- metadata
- terms