Skip to main content

SelectDict

In bxl, Select = bxl.SelectDict | bxl.SelectConcat. bxl.SelectDict is a dict-like object that represents a select. One example of this type is python select({ You can: * Iterate over its keys (e.g., for key in select_dict.select_keys():). * Iterate over key-value pairs using select_dict.select_items() (e.g., for key, value in select_dict.select_items():). * Get the select entry with a string or a ProvidersLabel (e.g., select_dict.get_select_entry("root//constraints:a")). * Check its type using `isinstance(select_dict, bxl.SelectDict)``.

SelectDict.get_select_entry

def SelectDict.get_select_entry(
key: providers_label | str,
/,
)

Return the entry of the select for the given key. It accepts either a string or a ProvidersLabel.

Sample usage:

def _impl_select_dict(ctx):
node = ctx.lazy.unconfigured_target_node("root//:select_dict").resolve()
attr = node.get_attr("select_attr")
ctx.output.print(attr.get_select_entry("root//constraints:a"))
ctx.output.print(attr.get_select_entry("DEFAULT"))
# provider_label's type here is `ProvidersLabel`
ctx.output.print(attr.get_select_entry(provider_label))

SelectDict.select_items

def SelectDict.select_items(
) -> list[(providers_label | str, typing.Any)]

Return the key-value pairs of the select. The key is either a string (for DEFAULT) or a ProvidersLabel.

Sample usage:

def _impl_select_dict(ctx):
node = ctx.lazy.unconfigured_target_node("root//:select_dict").resolve()
attr = node.get_attr("select_attr")
for key, value in attr.select_items():
ctx.output.print(f"{key} -> {value}")

SelectDict.select_keys

def SelectDict.select_keys(
) -> list[providers_label | str]