NamedValueSet

class lsst.daf.butler.NamedValueSet(elements: Iterable[K] = ())

Bases: lsst.daf.butler.NameMappingSetView, lsst.daf.butler.NamedValueMutableSet

Custom mutable set class.

A custom mutable set class that requires elements to have a .name attribute, which can then be used as keys in dict-like lookup.

Names and elements can both be used with the in and del operators, remove, and discard. Names (but not elements) can be used with []-based element retrieval (not assignment) and the get method.

Parameters:
elements : iterable

Iterable over elements to include in the set.

Raises:
AttributeError

Raised if one or more elements do not have a .name attribute.

Notes

Iteration order is guaranteed to be the same as insertion order (with the same general behavior as dict ordering). Like dicts, sets with the same elements will compare as equal even if their iterator order is not the same.

Attributes Summary

names Return set of names associated with the keys, in the same order.

Methods Summary

add(element) Add an element to the set.
asMapping() Return a mapping view with names as keys.
clear() This is slow (creates N new iterators!) but effective.
copy() Return a new NamedValueSet with the same elements.
discard(element, K]) Remove an element from the set if it exists.
freeze() Disable all mutators.
get(key, K_co], default, None] = None) Return the element with the given name.
isdisjoint(other) Return True if two sets have a null intersection.
issubset(other)
issuperset(other)
pop(*args) Remove and return an element from the set.
remove(element, K]) Remove an element from the set.
update(elements) Add multiple new elements to the set.

Attributes Documentation

names

Return set of names associated with the keys, in the same order.

(AbstractSet [ str ]).

Methods Documentation

add(element: K) → None

Add an element to the set.

Raises:
AttributeError

Raised if the element does not have a .name attribute.

asMapping() → Mapping[str, K_co]

Return a mapping view with names as keys.

Returns:
dict : Mapping

A dictionary-like view with values() == self.

clear() → None

This is slow (creates N new iterators!) but effective.

copy() → lsst.daf.butler.core.named.NamedValueSet[K]

Return a new NamedValueSet with the same elements.

discard(element: Union[str, K]) → Any

Remove an element from the set if it exists.

Does nothing if no matching element is present.

Parameters:
element : object or str

Element to remove or the string name thereof. Assumed to be an element if it has a .name attribute.

freeze() → lsst.daf.butler.core.named.NamedValueAbstractSet[K]

Disable all mutators.

Effectively transforming self into an immutable set.

Returns:
self : NamedValueAbstractSet

While self is modified in-place, it is also returned with a type annotation that reflects its new, frozen state; assigning it to a new variable (and considering any previous references invalidated) should allow for more accurate static type checking.

get(key: Union[str, K_co], default: Optional[Any, None] = None) → Any

Return the element with the given name.

Returns default if no such element is present.

isdisjoint(other)

Return True if two sets have a null intersection.

issubset(other: AbstractSet[K]) → bool
issuperset(other: AbstractSet[K]) → bool
pop(*args) → K

Remove and return an element from the set.

Parameters:
name : str, optional

Name of the element to remove and return. Must be passed positionally. If not provided, an arbitrary element is removed and returned.

Raises:
KeyError

Raised if name is provided but default is not, and no matching element exists.

remove(element: Union[str, K]) → Any

Remove an element from the set.

Parameters:
element : object or str

Element to remove or the string name thereof. Assumed to be an element if it has a .name attribute.

Raises:
KeyError

Raised if an element with the given name does not exist.

update(elements: Iterable[K]) → None

Add multiple new elements to the set.

Parameters:
elements : Iterable

Elements to add.