<#22455 ResolveError when targets have local !excl...
# github-notifications
c
#22455 ResolveError when targets have local !exclusions and no target is named after the directory Issue created by cburroughs Describe the bug In cases where there there is a local ! exclusion, and no target matches the "default" dir-name target (no
dirname:dirname
) like so:
Copy code
python_source(
    name='foo', # no error if this is 'resolve'
    source='foo.py')


python_source(
    name='bar',
    source='bar.py',
    dependencies=['!./foo.py'] # no error if this line is removed
)
pantsbuild/example-python@ec833b2 Then
peek
,
--changed-dependents=transitive
, and visibility rules, all throw ResolveErrors.
Copy code
$ PANTS_SOURCE=/home/ecsb/src/o/2alt-pants pants --print-stacktrace lint --changed-since=origin/main --changed-dependents=transitive
Pantsd has been turned off via Env.
Exception caught: (pants.engine.internals.scheduler.ExecutionError)
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/bin/pants_loader.py", line 133, in <module>
    main()
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/bin/pants_loader.py", line 129, in main
    PantsLoader.main()
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/bin/pants_loader.py", line 125, in main
    cls.run_default_entrypoint()
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/bin/pants_loader.py", line 106, in run_default_entrypoint
    exit_code = runner.run(start_time)
                ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/bin/pants_runner.py", line 150, in run
    runner = LocalPantsRunner.create(
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/bin/local_pants_runner.py", line 152, in create
    specs = calculate_specs(
            ^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/init/specs_calculator.py", line 105, in calculate_specs
    (changed_addresses,) = session.product_request(
                           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/scheduler.py", line 601, in product_request
    return self.execute(request)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/scheduler.py", line 542, in execute
    self._raise_on_error([t for _, t in throws])
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/scheduler.py", line 526, in _raise_on_error
    raise ExecutionError(

Exception message: 1 Exception encountered:

Engine traceback:
  in root
    ..
  in pants.vcs.changed.find_changed_owners
    ..

Traceback (most recent call last):
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/vcs/changed.py", line 79, in find_changed_owners
    dependents = await find_dependents(
                 ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/rules.py", line 71, in wrapper
    return await call
           ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 78, in __await__
    result = yield self
             ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/backend/project_info/dependents.py", line 45, in map_addresses_to_dependents
    dependencies_per_target = await concurrently(
                              ^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 363, in MultiGet
    return await _MultiGet(tuple(__arg0))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 170, in __await__
    result = yield self.gets
             ^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/rules.py", line 71, in wrapper
    return await call
           ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 78, in __await__
    result = yield self
             ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/graph.py", line 1700, in resolve_dependencies
    await _fill_parameters(
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/graph.py", line 1589, in _fill_parameters
    parametrizations = await concurrently(
                       ^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 363, in MultiGet
    return await _MultiGet(tuple(__arg0))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 170, in __await__
    result = yield self.gets
             ^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/rules.py", line 71, in wrapper
    return await call
           ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 78, in __await__
    result = yield self
             ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/graph.py", line 443, in resolve_target_parametrizations
    adaptor_and_type = await _determine_target_adaptor_and_type(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/rules.py", line 71, in wrapper
    return await call
           ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 78, in __await__
    result = yield self
             ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/graph.py", line 182, in _determine_target_adaptor_and_type
    target_adaptor = await find_target_adaptor(
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/rules.py", line 71, in wrapper
    return await call
           ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 78, in __await__
    result = yield self
             ^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/build_files.py", line 543, in find_target_adaptor
    target_adaptor = _get_target_adaptor(address, address_family, request.description_of_origin)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/build_files.py", line 524, in _get_target_adaptor
    raise ResolveError.did_you_mean(
pants.build_graph.address.ResolveError: The address helloworld/resolve:resolve from the `dependencies` field of the target helloworld/resolve:bar does not exist.

The target name ':resolve' is not defined in the directory helloworld/resolve. Did you mean one of these target names?

  * :bar
  * :foo
``` $ PANTS_SOURCE=/home/ecsb/src/o/2alt-pants pants --print-stacktrace peek helloworld/resolve:bar Pantsd has been turned off via Env. 142601.64 [ERROR] 1 Exception encountered: Engine traceback: in root .. in pants.backend.project_info.peek.peek
peek
goal Traceback (most recent call last): File "/home/ecsb/src/o/2alt-pants/src/python/pants/backend/project_info/peek.py", line 428, in peek tds = await get_target_data(targets, **implicitly()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/rules.py", line 71, in wrapper return await call ^^^^^^^^^^ File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 78, in await result = yield self ^^^^^^^^^^ File "/home/ecsb/src/o/2alt-pants/src/python/pants/backend/project_info/peek.py", line 307, in get_target_data dependencies_per_target = await concurrently( ^^^^^^^^^^^^^^^^^^^ File "/home/ecsb/src/o/2alt-pants/src/python/pants/engine/internals/selectors.py", line 363, in MultiGet return await _MultiGet(tuple(__arg0)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/ecsb/src/o/2alt-pants… pantsbuild/pants