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. ## sets.make
sets.make(elements)Creates a new set. All elements must be hashable. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | elements | Optional sequence to construct the set out of. |
None
|
**RETURNS**
A set containing the passed in values.
## sets.copy
sets.copy(s)Creates a new set from another set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by
sets.make()
. | none |
**RETURNS**
A new set containing the same elements as `s`.
## sets.to_list
sets.to_list(s)Creates a list from the values in the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by
sets.make()
. | none |
**RETURNS**
A list of values inserted into the set.
## sets.insert
sets.insert(s, e)Inserts an element into the set. Element must be hashable. This mutates the original set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by
sets.make()
. | none |
| e | The element to be inserted. | none |
**RETURNS**
The set `s` with `e` included.
## sets.contains
sets.contains(a, e)Checks for the existence of an element in a set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by
sets.make()
. | none |
| e | The element to look for. | none |
**RETURNS**
True if the element exists in the set, False if the element does not.
## sets.is_equal
sets.is_equal(a, b)Returns whether two sets are equal. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by
sets.make()
. | none |
| b | A set, as returned by sets.make()
. | none |
**RETURNS**
True if `a` is equal to `b`, False otherwise.
## sets.is_subset
sets.is_subset(a, b)Returns whether `a` is a subset of `b`. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by
sets.make()
. | none |
| b | A set, as returned by sets.make()
. | none |
**RETURNS**
True if `a` is a subset of `b`, False otherwise.
## sets.disjoint
sets.disjoint(a, b)Returns whether two sets are disjoint. Two sets are disjoint if they have no elements in common. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by
sets.make()
. | none |
| b | A set, as returned by sets.make()
. | none |
**RETURNS**
True if `a` and `b` are disjoint, False otherwise.
## sets.intersection
sets.intersection(a, b)Returns the intersection of two sets. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by
sets.make()
. | none |
| b | A set, as returned by sets.make()
. | none |
**RETURNS**
A set containing the elements that are in both `a` and `b`.
## sets.union
sets.union(args)Returns the union of several sets. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | args | An arbitrary number of sets. | none | **RETURNS** The set union of all sets in `*args`. ## sets.difference
sets.difference(a, b)Returns the elements in `a` that are not in `b`. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | a | A set, as returned by
sets.make()
. | none |
| b | A set, as returned by sets.make()
. | none |
**RETURNS**
A set containing the elements that are in `a` but not in `b`.
## sets.length
sets.length(s)Returns the number of elements in a set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by
sets.make()
. | none |
**RETURNS**
An integer representing the number of elements in the set.
## sets.remove
sets.remove(s, e)Removes an element from the set. Element must be hashable. This mutates the original set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by
sets.make()
. | none |
| e | The element to be removed. | none |
**RETURNS**
The set `s` with `e` removed.
## sets.repr
sets.repr(s)Returns a string value representing the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by
sets.make()
. | none |
**RETURNS**
A string representing the set.
## sets.str
sets.str(s)Returns a string value representing the set. **PARAMETERS** | Name | Description | Default Value | | :------------- | :------------- | :------------- | | s | A set, as returned by
sets.make()
. | none |
**RETURNS**
A string representing the set.