2020-10-15 18:20:00 +00:00
|
|
|
<!-- Generated with Stardoc: http://skydoc.bazel.build -->
|
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
Skylib module containing common hash-set algorithms.
|
|
|
|
|
|
|
|
An empty set can be created using: `sets.make()`, or it can be created with some starting values
|
|
|
|
if you pass it an sequence: `sets.make([1, 2, 3])`. This returns a struct containing all of the
|
|
|
|
values as keys in a dictionary - this means that all passed in values must be hashable. The
|
|
|
|
values in the set can be retrieved using `sets.to_list(my_set)`.
|
|
|
|
|
|
|
|
An arbitrary object can be tested whether it is a set generated by `sets.make()` or not with the
|
|
|
|
`types.is_set()` method in types.bzl.
|
|
|
|
|
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.make"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.make
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.make(<a href="#sets.make-elements">elements</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Creates a new set.
|
|
|
|
|
|
|
|
All elements must be hashable.
|
|
|
|
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.make-elements"></a>elements | Optional sequence to construct the set out of. | <code>None</code> |
|
|
|
|
|
|
|
|
**RETURNS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
A set containing the passed in values.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.copy"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.copy
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.copy(<a href="#sets.copy-s">s</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Creates a new set from another set.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.copy-s"></a>s | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
A new set containing the same elements as `s`.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.to_list"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.to_list
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.to_list(<a href="#sets.to_list-s">s</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Creates a list from the values in the set.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.to_list-s"></a>s | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
A list of values inserted into the set.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.insert"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.insert
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.insert(<a href="#sets.insert-s">s</a>, <a href="#sets.insert-e">e</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Inserts an element into the set.
|
|
|
|
|
2019-05-01 17:38:59 +00:00
|
|
|
Element must be hashable. This mutates the original set.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.insert-s"></a>s | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
| <a id="sets.insert-e"></a>e | The element to be inserted. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
The set `s` with `e` included.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.contains"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.contains
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.contains(<a href="#sets.contains-a">a</a>, <a href="#sets.contains-e">e</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Checks for the existence of an element in a set.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.contains-a"></a>a | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
| <a id="sets.contains-e"></a>e | The element to look for. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
True if the element exists in the set, False if the element does not.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.is_equal"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.is_equal
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.is_equal(<a href="#sets.is_equal-a">a</a>, <a href="#sets.is_equal-b">b</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns whether two sets are equal.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.is_equal-a"></a>a | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
| <a id="sets.is_equal-b"></a>b | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
True if `a` is equal to `b`, False otherwise.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.is_subset"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.is_subset
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.is_subset(<a href="#sets.is_subset-a">a</a>, <a href="#sets.is_subset-b">b</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns whether `a` is a subset of `b`.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.is_subset-a"></a>a | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
| <a id="sets.is_subset-b"></a>b | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
True if `a` is a subset of `b`, False otherwise.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.disjoint"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.disjoint
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.disjoint(<a href="#sets.disjoint-a">a</a>, <a href="#sets.disjoint-b">b</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns whether two sets are disjoint.
|
|
|
|
|
|
|
|
Two sets are disjoint if they have no elements in common.
|
|
|
|
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.disjoint-a"></a>a | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
| <a id="sets.disjoint-b"></a>b | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
|
|
|
|
|
|
|
True if `a` and `b` are disjoint, False otherwise.
|
2020-10-15 18:20:00 +00:00
|
|
|
|
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.intersection"></a>
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
## sets.intersection
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.intersection(<a href="#sets.intersection-a">a</a>, <a href="#sets.intersection-b">b</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns the intersection of two sets.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.intersection-a"></a>a | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
| <a id="sets.intersection-b"></a>b | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
|
|
|
|
|
|
|
A set containing the elements that are in both `a` and `b`.
|
2020-10-15 18:20:00 +00:00
|
|
|
|
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.union"></a>
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
## sets.union
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.union(<a href="#sets.union-args">args</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns the union of several sets.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.union-args"></a>args | An arbitrary number of sets. | none |
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
**RETURNS**
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
The set union of all sets in `*args`.
|
|
|
|
|
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.difference"></a>
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
## sets.difference
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.difference(<a href="#sets.difference-a">a</a>, <a href="#sets.difference-b">b</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns the elements in `a` that are not in `b`.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.difference-a"></a>a | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
| <a id="sets.difference-b"></a>b | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
|
|
|
|
|
|
|
A set containing the elements that are in `a` but not in `b`.
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.length"></a>
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
## sets.length
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.length(<a href="#sets.length-s">s</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns the number of elements in a set.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.length-s"></a>s | A set, as returned by <code>sets.make()</code>. | none |
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
**RETURNS**
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
An integer representing the number of elements in the set.
|
|
|
|
|
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.remove"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.remove
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.remove(<a href="#sets.remove-s">s</a>, <a href="#sets.remove-e">e</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Removes an element from the set.
|
|
|
|
|
2019-05-01 17:38:59 +00:00
|
|
|
Element must be hashable. This mutates the original set.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.remove-s"></a>s | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
| <a id="sets.remove-e"></a>e | The element to be removed. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
|
|
|
|
|
|
|
The set `s` with `e` removed.
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.repr"></a>
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
## sets.repr
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.repr(<a href="#sets.repr-s">s</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns a string value representing the set.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.repr-s"></a>s | A set, as returned by <code>sets.make()</code>. | none |
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
**RETURNS**
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2021-10-27 13:13:59 +00:00
|
|
|
A string representing the set.
|
|
|
|
|
|
|
|
|
2022-08-30 18:57:34 +00:00
|
|
|
<a id="sets.str"></a>
|
2020-10-15 18:20:00 +00:00
|
|
|
|
2019-02-28 22:43:57 +00:00
|
|
|
## sets.str
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
sets.str(<a href="#sets.str-s">s</a>)
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
Returns a string value representing the set.
|
|
|
|
|
2020-10-15 18:20:00 +00:00
|
|
|
**PARAMETERS**
|
|
|
|
|
|
|
|
|
|
|
|
| Name | Description | Default Value |
|
2021-10-27 13:13:59 +00:00
|
|
|
| :------------- | :------------- | :------------- |
|
|
|
|
| <a id="sets.str-s"></a>s | A set, as returned by <code>sets.make()</code>. | none |
|
|
|
|
|
|
|
|
**RETURNS**
|
|
|
|
|
|
|
|
A string representing the set.
|
2019-02-28 22:43:57 +00:00
|
|
|
|
|
|
|
|