cool-easter-32542
09/11/2023, 3:47 PMinstall_from_resolve and requirements are set fails with:
11:42:18.55 [ERROR] 1 Exception encountered:
Engine traceback:
in select
..
in pants.core.goals.fix.fix
`fix` goal
Traceback (most recent call last):
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 626, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/core/goals/fix.py", line 348, in fix
return await _do_fix(
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/core/goals/fix.py", line 323, in _do_fix
all_results = await MultiGet(
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 361, in MultiGet
return await _MultiGet(tuple(__arg0))
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 168, in __await__
result = yield self.gets
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 626, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/core/goals/fix.py", line 384, in fix_batch
result = await Get( # noqa: PNT30: this is inherently sequential
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 118, in __await__
result = yield self
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 626, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/backend/python/lint/ruff/rules.py", line 85, in ruff_fix
result = await Get(
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 118, in __await__
result = yield self
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 626, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/backend/python/lint/ruff/rules.py", line 59, in run_ruff
ruff_pex, config_files = await MultiGet(ruff_pex_get, config_files_get)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 512, in MultiGet
return await _MultiGet((__arg0, __arg1))
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 168, in __await__
result = yield self.gets
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 626, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/backend/python/util_rules/pex.py", line 1040, in create_venv_pex
venv_pex_result = await Get(BuildPexResult, PexRequest, seeded_venv_request)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 118, in __await__
result = yield self
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/engine/internals/selectors.py", line 626, in native_engine_generator_send
res = rule.send(arg) if err is None else rule.throw(throw or err)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/backend/python/util_rules/pex.py", line 691, in build_pex
requirements_setup = await _setup_pex_requirements(request, python_setup)
File "/Users/dan.moran/Library/Caches/nce/50b60c9f29c54578592fd2b4725722435f65d43cb21e6e2732268b6d5050a09a/bindings/venvs/2.17.0/lib/python3.9/site-packages/pants/backend/python/util_rules/pex.py", line 585, in _setup_pex_requirements
assert loaded_lockfile.is_pex_native
AssertionError
Pants version
2.17.0
OS
MacOS
Additional info
I'm experimenting with non-pex lockfiles in the first place because we recently conceded to our dependency graph and disabled requirement subsetting - leading us to wonder if we could go back to constraint files and have Dependabot Just Work.
In a scenario where PANTS_PYTHON_RUN_AGAINST_ENTIRE_LOCKFILE=True is set, it feels like the optimal thing would be to assume/require that the requested tool is present in the targeted lockfile (shameless plug for #18532). Then you don't have to worry about subsetting anywhere in the setup.
pantsbuild/pants