cool-easter-32542
05/06/2025, 3:38 PM#subdirectory= (ref: https://pip.pypa.io/en/stable/topics/vcs-support/#url-fragments)
Pants version
2.26.0
OS
MacOS, Linux
Additional info
Here's a minimal repro:
set -e
# Generate BUILD
cat << 'EOF' > BUILD
python_requirements(
source="requirements.txt"
)
EOF
# Generate requirements.txt
cat << 'EOF' > requirements.txt
opentelemetry-resource-detector-container@ git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@v0.53b1#subdirectory=resource/opentelemetry-resource-detector-container
EOF
# Generate pants.toml
cat << 'EOF' > pants.toml
[GLOBAL]
pants_version = "2.26.0"
backend_packages = ["pants.backend.python"]
[python]
enable_resolves = true
interpreter_constraints = ["==3.12.*"]
resolves = { python-default = "python-default.lock" }
EOF
pants generate-lockfiles
Upon inspecting the sandbox for generate lockfiles, pex is invoked with:
$'opentelemetry-resource-detector-container@ git+<https://github.com/open-telemetry/opentelemetry-python-contrib.git@v0.53b1>'
(Note the missing "#subdirectory=...`)
When using Pants 2.25.0, pants generate-lockfiles succeeds. Similarly, when I inspect the sandbox, pex is invoked correctly:
$'opentelemetry-resource-detector-container@ git+<https://github.com/open-telemetry/opentelemetry-python-contrib.git@v0.53b1#subdirectory=resource/opentelemetry-resource-detector-container>'
Workaround
In my case, it seems that using:
python_requirement(
requirements=[
"opentelemetry-resource-detector-container@ git+<https://github.com/open-telemetry/opentelemetry-python-contrib.git@v0.53b1#subdirectory=resource/opentelemetry-resource-detector-container>"
]
does work as expected.
pantsbuild/pants