From 24c1d924ea2c8cdbb04429a34248297bc4b9c744 Mon Sep 17 00:00:00 2001 From: Richard Levasseur Date: Sat, 29 Aug 2026 15:58:46 -0700 Subject: [PATCH] refactor: move tools/private/zipapp to tools/zipapp The `//tools/private` package is reserved for developer tools used to maintain `rules_python`. The zipapp tools support rule execution and belong under `//tools/` alongside tools like `launcher`. Move `tools/private/zipapp` to `tools/zipapp`, update internal rule attributes, adjust test imports and dependencies, update distribution filegroups, and document the scope of `//tools/private`. --- python/private/py_executable.bzl | 2 +- python/private/zipapp/py_zipapp_rule.bzl | 6 +++--- tests/tools/zipapp/BUILD.bazel | 6 +++--- tests/tools/zipapp/exe_zip_maker_test.py | 2 +- tests/tools/zipapp/zip_main_maker_test.py | 2 +- tests/tools/zipapp/zipper_test.py | 2 +- tools/BUILD.bazel | 1 + tools/private/BUILD.bazel | 4 +--- tools/private/README.md | 9 +++++++++ tools/{private => }/zipapp/BUILD.bazel | 0 tools/{private => }/zipapp/exe_zip_maker.py | 0 tools/{private => }/zipapp/zip_main_maker.py | 0 tools/{private => }/zipapp/zipper.py | 0 13 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 tools/private/README.md rename tools/{private => }/zipapp/BUILD.bazel (100%) rename tools/{private => }/zipapp/exe_zip_maker.py (100%) rename tools/{private => }/zipapp/zip_main_maker.py (100%) rename tools/{private => }/zipapp/zipper.py (100%) diff --git a/python/private/py_executable.bzl b/python/private/py_executable.bzl index 368a785686..d6f01193ea 100644 --- a/python/private/py_executable.bzl +++ b/python/private/py_executable.bzl @@ -227,7 +227,7 @@ accepting arbitrary Python versions. ), "_exe_zip_maker": lambda: attrb.Label( cfg = "exec", - default = "//tools/private/zipapp:exe_zip_maker", + default = "//tools/zipapp:exe_zip_maker", ), "_launcher": lambda: attrb.Label( cfg = "target", diff --git a/python/private/zipapp/py_zipapp_rule.bzl b/python/private/zipapp/py_zipapp_rule.bzl index 7e11b06b1b..b664c1f628 100644 --- a/python/private/zipapp/py_zipapp_rule.bzl +++ b/python/private/zipapp/py_zipapp_rule.bzl @@ -362,7 +362,7 @@ Whether the output should be an executable zip file. ), "_exe_zip_maker": attr.label( cfg = "exec", - default = "//tools/private/zipapp:exe_zip_maker", + default = "//tools/zipapp:exe_zip_maker", ), "_launcher": attr.label( cfg = "target", @@ -378,7 +378,7 @@ Whether the output should be an executable zip file. ), "_zip_main_maker": attr.label( cfg = "exec", - default = "//tools/private/zipapp:zip_main_maker", + default = "//tools/zipapp:zip_main_maker", ), "_zip_shell_template": attr.label( default = ":zip_shell_template", @@ -386,7 +386,7 @@ Whether the output should be an executable zip file. ), "_zipper": attr.label( cfg = "exec", - default = "//tools/private/zipapp:zipper", + default = "//tools/zipapp:zipper", ), } | ({ "_windows_launcher_maker": attr.label( diff --git a/tests/tools/zipapp/BUILD.bazel b/tests/tools/zipapp/BUILD.bazel index 97c8096ce9..7943e4065f 100644 --- a/tests/tools/zipapp/BUILD.bazel +++ b/tests/tools/zipapp/BUILD.bazel @@ -5,19 +5,19 @@ pytest_test( name = "zipper_test", srcs = ["zipper_test.py"], target_compatible_with = SUPPORTS_BZLMOD, - deps = ["//tools/private/zipapp:zipper_lib"], + deps = ["//tools/zipapp:zipper_lib"], ) pytest_test( name = "exe_zip_maker_test", srcs = ["exe_zip_maker_test.py"], target_compatible_with = SUPPORTS_BZLMOD, - deps = ["//tools/private/zipapp:exe_zip_maker_lib"], + deps = ["//tools/zipapp:exe_zip_maker_lib"], ) pytest_test( name = "zip_main_maker_test", srcs = ["zip_main_maker_test.py"], target_compatible_with = SUPPORTS_BZLMOD, - deps = ["//tools/private/zipapp:zip_main_maker_lib"], + deps = ["//tools/zipapp:zip_main_maker_lib"], ) diff --git a/tests/tools/zipapp/exe_zip_maker_test.py b/tests/tools/zipapp/exe_zip_maker_test.py index 97df258e92..625701400b 100644 --- a/tests/tools/zipapp/exe_zip_maker_test.py +++ b/tests/tools/zipapp/exe_zip_maker_test.py @@ -1,7 +1,7 @@ import hashlib import stat -from tools.private.zipapp import exe_zip_maker +from tools.zipapp import exe_zip_maker def test_create_exe_zip(tmp_path): diff --git a/tests/tools/zipapp/zip_main_maker_test.py b/tests/tools/zipapp/zip_main_maker_test.py index 5c7f57c590..c27ff88e33 100644 --- a/tests/tools/zipapp/zip_main_maker_test.py +++ b/tests/tools/zipapp/zip_main_maker_test.py @@ -1,7 +1,7 @@ import hashlib import os -from tools.private.zipapp import zip_main_maker +from tools.zipapp import zip_main_maker def test_creates_zip_main(tmp_path, monkeypatch): diff --git a/tests/tools/zipapp/zipper_test.py b/tests/tools/zipapp/zipper_test.py index bbd85b6536..e4f25c5e21 100644 --- a/tests/tools/zipapp/zipper_test.py +++ b/tests/tools/zipapp/zipper_test.py @@ -2,7 +2,7 @@ import shutil import zipfile -from tools.private.zipapp import zipper +from tools.zipapp import zipper def symlink_target_path(p): diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel index 7829b33318..aa75c66193 100644 --- a/tools/BUILD.bazel +++ b/tools/BUILD.bazel @@ -33,6 +33,7 @@ filegroup( "//tools/precompiler:distribution", "//tools/private:distribution", "//tools/publish:distribution", + "//tools/zipapp:distribution", ], visibility = ["//:__pkg__"], ) diff --git a/tools/private/BUILD.bazel b/tools/private/BUILD.bazel index ae6951c245..b395b2c541 100644 --- a/tools/private/BUILD.bazel +++ b/tools/private/BUILD.bazel @@ -6,9 +6,7 @@ package( filegroup( name = "distribution", - srcs = glob(["**"]) + [ - "//tools/private/zipapp:distribution", - ], + srcs = glob(["**"]), ) bzl_library( diff --git a/tools/private/README.md b/tools/private/README.md new file mode 100644 index 0000000000..19b174e35c --- /dev/null +++ b/tools/private/README.md @@ -0,0 +1,9 @@ +# Developer Tools (`//tools/private`) + +This directory contains development-only tools used for maintaining and +developing `rules_python` itself (such as release management, dependency +updating, review bots, and repository maintenance scripts). + +Supporting tools for rules (e.g. `launcher`, `precompiler`, `zipapp`, +`publish`, `wheelmaker`) belong as their own top-level directories under +`//tools/`. diff --git a/tools/private/zipapp/BUILD.bazel b/tools/zipapp/BUILD.bazel similarity index 100% rename from tools/private/zipapp/BUILD.bazel rename to tools/zipapp/BUILD.bazel diff --git a/tools/private/zipapp/exe_zip_maker.py b/tools/zipapp/exe_zip_maker.py similarity index 100% rename from tools/private/zipapp/exe_zip_maker.py rename to tools/zipapp/exe_zip_maker.py diff --git a/tools/private/zipapp/zip_main_maker.py b/tools/zipapp/zip_main_maker.py similarity index 100% rename from tools/private/zipapp/zip_main_maker.py rename to tools/zipapp/zip_main_maker.py diff --git a/tools/private/zipapp/zipper.py b/tools/zipapp/zipper.py similarity index 100% rename from tools/private/zipapp/zipper.py rename to tools/zipapp/zipper.py