A specialized data structure that supports efficient merge operations and has a defined traversal order. Commonly used for accumulating data from transitive dependencies in rules and aspects. For more information see here.

Depsets are not implemented as hash sets and do not support fast membership tests. If you need a general set datatype, you can simulate one using a dictionary where all keys map to None.

Depsets are immutable. They can be created using their constructor function and merged or augmented using the + operator.

The order parameter determines the kind of traversal that is done to convert the depset to an iterable. There are four possible values:

  • "default" (formerly "stable"): Order is unspecified (but deterministic).
  • "postorder" (formerly "compile"): A left-to-right post-ordering. Precisely, this recursively traverses all children leftmost-first, then the direct elements leftmost-first.
  • "preorder" (formerly "naive_link"): A left-to-right pre-ordering. Precisely, this traverses the direct elements leftmost-first, then recursively traverses the children leftmost-first.
  • "topological" (formerly "link"): A topological ordering from the root down to the leaves. There is no left-to-right guarantee.

Two depsets may only be merged (via + or the union() method) if either both depsets have the same order, or one of them has "default" order. In the latter case the resulting depset's order will be the same as the left operand's.

Depsets may contain duplicate values but these will be suppressed when iterating (using to_list()). Duplicates may interfere with the ordering semantics.

The function set() is a deprecated alias for depset(). Please update legacy code and use only depset().



list depset.to_list()

Returns a frozen list of the elements, without duplicates, in the depset's traversal order.


depset depset.union(new_elements)

(Deprecated) Returns a new depset that is the merge of the given depset and new_elements. This is the same as the + operator.


Parameter Description

The elements to be added.