adventurous-rain-63973
09/23/2024, 8:33 PM!! exclude transitive addresses. Therefore, these have a conflict in transitive_targets() (https://github.com/pantsbuild/pants/blob/4d96bccba3078497697337e67c09d4b77fa53067/src/python/pants/engine/internals/graph.py#L838) because they do not bring parametrization elements in their addresses.
Where would be the best place to add these? I cannot find a way to resolve parametrization for those at that point of the code.curved-television-6568
09/24/2024, 10:00 AMdiff --git a/src/python/pants/engine/addresses.py b/src/python/pants/engine/addresses.py
index 4a0255cb4d..a6a4f2d53a 100644
--- a/src/python/pants/engine/addresses.py
+++ b/src/python/pants/engine/addresses.py
@@ -16,6 +16,7 @@ from pants.build_graph.address import MaybeAddress as MaybeAddress # noqa: F401
from pants.build_graph.address import ResolveError
from pants.engine.collection import Collection
from pants.util.strutil import bullet_list
+from pants.util.frozendict import FrozenDict
def assert_single_address(addresses: Sequence[Address]) -> None:
@@ -62,6 +63,7 @@ class UnparsedAddressInputs:
relative_to: str | None
description_of_origin: str
skip_invalid_addresses: bool
+ parameters: FrozenDict[str, str] | None
def __init__(
self,
@@ -77,3 +79,11 @@ class UnparsedAddressInputs:
)
object.__setattr__(self, "description_of_origin", description_of_origin)
object.__setattr__(self, "skip_invalid_addresses", skip_invalid_addresses)
+ object.__setattr__(
+ self,
+ "parameters",
+ (
+ FrozenDict(owning_address.parameters)
+ if owning_address and owning_address.parameters else None
+ )
+ )
diff --git a/src/python/pants/engine/internals/graph.py b/src/python/pants/engine/internals/graph.py
index c1246e6e15..c96074311a 100644
--- a/src/python/pants/engine/internals/graph.py
+++ b/src/python/pants/engine/internals/graph.py
@@ -833,6 +833,7 @@ async def transitive_targets(
for t in targets:
unparsed = t.get(Dependencies).unevaluated_transitive_excludes
if unparsed.values:
+ <http://logger.info|logger.info>(f"TRANS EXCLUDES for {t.address}: {unparsed}")
unevaluated_transitive_excludes.append(unparsed)
transitive_exclude_addresses = []
@@ -1707,16 +1707,24 @@ async def resolve_unparsed_address_inputs(
return Addresses(valid_addresses)
addresses = await MultiGet(Get(Address, AddressInput, ai) for ai in address_inputs)
+ if request.parameters:
+ addresses = [addr.parametrize(dict(request.parameters)) for addr in addresses]
+ <http://logger.info|logger.info>(f"ADDRESSES: {addresses}")
# Validate that the addresses exist. We do this eagerly here because
# `Addresses -> UnexpandedTargets` does not preserve the `description_of_origin`, so it would
# be too late, per <https://github.com/pantsbuild/pants/issues/15858>.
- await MultiGet(
- Get(
- WrappedTarget,
- WrappedTargetRequest(addr, description_of_origin=request.description_of_origin),
+ try:
+ await MultiGet(
+ Get(
+ WrappedTarget,
+ WrappedTargetRequest(addr, description_of_origin=request.description_of_origin),
+ )
+ for addr in addresses
)
- for addr in addresses
- )
+ except ResolveError as e:
+ logger.error(f"RESOLVE ERROR: {e}")
+ raise
+
return Addresses(addresses)adventurous-rain-63973
09/24/2024, 10:08 AMPANT_SOURCE , it conflicts with some plugins we created.
I wonder, would it be possible to replace that rule with a plugin? I know it's a core rule, but maybe it's possible to replace it in its union_membership?adventurous-rain-63973
09/25/2024, 8:06 AMadventurous-rain-63973
09/25/2024, 10:30 AMcomplete_platformscurved-television-6568
09/25/2024, 10:32 AM[...] we can't always assume that the parameters for the target applies also to its dependencies [...]
adventurous-rain-63973
09/25/2024, 10:33 AMadventurous-rain-63973
09/25/2024, 10:33 AMdependencies onlycurved-television-6568
09/25/2024, 10:34 AMcurved-television-6568
09/25/2024, 10:35 AMresolve, but not anything else..?adventurous-rain-63973
09/25/2024, 10:36 AMdependencies here) except for transitive excludes.curved-television-6568
09/25/2024, 10:39 AMadventurous-rain-63973
09/25/2024, 10:39 AMcurved-television-6568
09/25/2024, 10:40 AMadventurous-rain-63973
09/25/2024, 10:40 AMadventurous-rain-63973
09/25/2024, 10:42 AMadventurous-rain-63973
09/25/2024, 10:43 AMif request.parameters:
addresses = tuple(addr.parametrize(dict(request.parameters)) for addr in addresses)adventurous-rain-63973
09/25/2024, 10:44 AMtransitive_targets(curved-television-6568
09/25/2024, 10:45 AMadventurous-rain-63973
09/25/2024, 10:45 AM