Skip to content

Commit

Permalink
Add docs for UnconfiguredTargetSet/ConfiguredTargetSet
Browse files Browse the repository at this point in the history
Summary: Add docs for UnconfiguredTargetSet/ConfiguredTargetSet

Reviewed By: scottcao

Differential Revision: D68848317

fbshipit-source-id: 7f9f34f059d4a2b030ce1449c65b299009045617
  • Loading branch information
Nero5023 authored and facebook-github-bot committed Jan 30, 2025
1 parent 7eb44e7 commit 390d7e2
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 0 deletions.
53 changes: 53 additions & 0 deletions app/buck2_bxl/src/bxl/starlark_defs/targetset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ use buck2_query::query::syntax::simple::eval::set::TargetSet;
use derive_more::Display;
use dupe::Dupe;
use starlark::any::ProvidesStaticType;
use starlark::environment::Methods;
use starlark::environment::MethodsBuilder;
use starlark::environment::MethodsStatic;
use starlark::starlark_module;
use starlark::typing::Ty;
use starlark::values::starlark_value;
use starlark::values::type_repr::StarlarkTypeRepr;
Expand Down Expand Up @@ -89,6 +93,11 @@ impl<'v, Node: NodeLike> AllocValue<'v> for StarlarkTargetSet<Node> {
impl<'v, Node: NodeLike> StarlarkValue<'v> for StarlarkTargetSet<Node> {
type Canonical = Self;

fn get_methods() -> Option<&'static Methods> {
static RES: MethodsStatic = MethodsStatic::new();
RES.methods(starlark_target_set_methods)
}

fn iterate_collect(&self, heap: &'v Heap) -> starlark::Result<Vec<Value<'v>>> {
Ok(self.iter(heap).collect())
}
Expand Down Expand Up @@ -163,3 +172,47 @@ impl<Node: NodeLike> StarlarkTargetSet<Node> {
ValueLike::downcast_ref::<Self>(x)
}
}

/// A set-like object for managing buck2 target nodes.
/// It can be either `ConfiguredTargetSet` or `UnConfiguredTargetSet` where contains either [`ConfiguredTargetNode`](../ConfiguredTargetNode) or [`UnconfiguredTargetNode`](../UnconfiguredTargetNode) respectively.
///
/// It provides common set operations for target nodes.
/// It supports iteration, indexing, addition (union), subtraction (difference), equality comparison, and intersection operations.
///
/// Operations:
/// * `+` : Union of two TargetSets
/// * `-` : Difference between two TargetSets
/// * `==` : Equality comparison
/// * `&` : Intersection of two TargetSets
/// * `[]` : Index access
/// * `len()`: Number of targets in set
/// * `iter()`: Iteration over targets
/// * constructor: [`bxl.ctarget_set()`](../#ctarget_set) for `ConfiguredTargetSet` and [`bxl.utarget_set()`](../#utarget_set) for `UnconfiguredTargetSet`
///
/// Example:
/// ```python
/// # Combine sets
/// all_targets = targets1 + targets2 # Union
///
/// # Remove targets
/// remaining = targets1 - targets2 # Difference
///
/// # Check if sets are equal
/// if targets1 == targets2:
/// print("Sets contain same targets")
///
/// # Iterate through targets
/// for target in targets1:
/// print(target)
///
/// # Get target by index
/// first_target = targets1[0]
///
/// # Get number of targets
/// count = len(targets1)
///
/// # Intersection of sets
/// common = targets1 & targets2
/// ```
#[starlark_module]
fn starlark_target_set_methods(builder: &mut MethodsBuilder) {}
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# This file is @generated, regenerate by re-running test with `-- --env BUCK2_UPDATE_GOLDEN=1` appended to the test command

# ConfiguredTargetSet
# Combine sets
# Remove targets
# Check if sets are equal
# Iterate through targets
# Get number of targets
# Intersection of sets
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# This file is @generated, regenerate by re-running test with `-- --env BUCK2_UPDATE_GOLDEN=1` appended to the test command

# UnconfiguredTargetSet
# Combine sets
# Remove targets
# Check if sets are equal
# Iterate through targets
# Get number of targets
# Intersection of sets

0 comments on commit 390d7e2

Please sign in to comment.