fix(venv): include pth files at the root of the site-packages folder (#3340)
Before this PR we would not include `pth` files at the root of the
`site-packages` folder, but we would include if they are further down
the tree.
Fixes #3339
Fixes #2071
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7782454..aebcfcc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -105,6 +105,9 @@
* (venvs) {obj}`--venvs_site_packages=yes` works for packages that dynamically
link to shared libraries
([#3228](https://github.com/bazel-contrib/rules_python/issues/3228)).
+* (venvs) {obj}`--venvs_site_packages=yes` includes `pth` files at the root of the
+ site-packages folder
+ ([#3339](https://github.com/bazel-contrib/rules_python/issues/3339)).
* (uv) {obj}`//python/uv:lock.bzl%lock` now works with a local platform
runtime.
* (toolchains) WORKSPACE builds now correctly register musl and freethreaded
diff --git a/python/private/common.bzl b/python/private/common.bzl
index 33b175c..ddeea6e 100644
--- a/python/private/common.bzl
+++ b/python/private/common.bzl
@@ -36,6 +36,7 @@
"dylib", # Python C modules, Mac specific
"py",
"pyc",
+ "pth", # import 'pth' files
"pyi",
"so", # Python C modules, usually Linux
]
diff --git a/python/private/venv_runfiles.bzl b/python/private/venv_runfiles.bzl
index 9bdacf8..05dc296 100644
--- a/python/private/venv_runfiles.bzl
+++ b/python/private/venv_runfiles.bzl
@@ -290,9 +290,10 @@
entry = VenvSymlinkEntry(
kind = VenvSymlinkKind.LIB,
link_to_path = paths.join(runfiles_dir_name, site_packages_root, filename),
+ link_to_file = src,
package = package,
version = version_str,
- venv_path = filename,
+ venv_path = path,
files = depset([src]),
)
venv_symlinks.append(entry)
diff --git a/tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl b/tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl
index 31c720a..db2f21c 100644
--- a/tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl
+++ b/tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl
@@ -271,6 +271,9 @@
"site-packages/foo.libs/libx.so",
"site-packages/foo/a.py",
"site-packages/foo/b.so",
+ "site-packages/root.pth",
+ "site-packages/root.py",
+ "site-packages/root.so",
],
)
analysis_test(
@@ -314,6 +317,9 @@
"bar/y.so": srcs[2],
"foo": "_main/tests/venv_site_packages_libs/app_files_building/site-packages/foo",
"foo.libs/libx.so": srcs[3],
+ "root.pth": srcs[-3],
+ "root.py": srcs[-2],
+ "root.so": srcs[-1],
}
env.expect.that_dict(actual[VenvSymlinkKind.LIB]).contains_exactly(expected_libs)