diff --git a/.bcr/patches/remove_dev_deps.patch b/.bcr/patches/remove_dev_deps.patch index 3d6f30ce..2981dd0f 100644 --- a/.bcr/patches/remove_dev_deps.patch +++ b/.bcr/patches/remove_dev_deps.patch @@ -1,5 +1,5 @@ ---- a/MODULE.bazel 2025-11-22 20:51:10 -+++ b/MODULE.bazel 2025-11-22 20:51:10 +--- a/MODULE.bazel 2025-12-01 13:53:51 ++++ b/MODULE.bazel 2025-12-01 13:53:51 @@ -39,558 +39,4 @@ # HACK: In prod the includer's patch inserts the use_repo for multitool. This @@ -373,7 +373,7 @@ -bazel_dep(name = "xz", version = "5.4.5.bcr.5") -bazel_dep(name = "zstd", version = "1.5.7") -bazel_dep(name = "bzip2", version = "1.0.8.bcr.2") --bazel_dep(name = "rules_rs", version = "0.0.7") +-bazel_dep(name = "rules_rs", version = "0.0.16") - -crate = use_extension( - "@rules_rs//rs:extensions.bzl", @@ -464,7 +464,7 @@ -######################################## -# from bazel/include/telemetry.MODULE.bazel -# tools_telemetry --bazel_dep(name = "aspect_tools_telemetry", version = "0.2.8") +-bazel_dep(name = "aspect_tools_telemetry", version = "0.3.2") - -tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry") -use_repo(tel, "aspect_tools_telemetry_report") diff --git a/MODULE.bazel b/MODULE.bazel index f7382609..ee926840 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -408,7 +408,7 @@ register_toolchains("@rust_toolchains//:all") bazel_dep(name = "xz", version = "5.4.5.bcr.5") bazel_dep(name = "zstd", version = "1.5.7") bazel_dep(name = "bzip2", version = "1.0.8.bcr.2") -bazel_dep(name = "rules_rs", version = "0.0.7") +bazel_dep(name = "rules_rs", version = "0.0.16") crate = use_extension( "@rules_rs//rs:extensions.bzl", @@ -499,7 +499,7 @@ register_toolchains("@bsd_tar_toolchains//:all") ######################################## # from bazel/include/telemetry.MODULE.bazel # tools_telemetry -bazel_dep(name = "aspect_tools_telemetry", version = "0.2.8") +bazel_dep(name = "aspect_tools_telemetry", version = "0.3.2") tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry") use_repo(tel, "aspect_tools_telemetry_report") diff --git a/bazel/include/cargo.MODULE.bazel b/bazel/include/cargo.MODULE.bazel index 44b8908b..d5591196 100644 --- a/bazel/include/cargo.MODULE.bazel +++ b/bazel/include/cargo.MODULE.bazel @@ -4,7 +4,7 @@ bazel_dep(name = "xz", version = "5.4.5.bcr.5") bazel_dep(name = "zstd", version = "1.5.7") bazel_dep(name = "bzip2", version = "1.0.8.bcr.2") -bazel_dep(name = "rules_rs", version = "0.0.7") +bazel_dep(name = "rules_rs", version = "0.0.16") crate = use_extension( "@rules_rs//rs:extensions.bzl", diff --git a/bazel/include/telemetry.MODULE.bazel b/bazel/include/telemetry.MODULE.bazel index 02e07b2d..9dfc7083 100644 --- a/bazel/include/telemetry.MODULE.bazel +++ b/bazel/include/telemetry.MODULE.bazel @@ -1,5 +1,5 @@ # tools_telemetry -bazel_dep(name = "aspect_tools_telemetry", version = "0.2.8") +bazel_dep(name = "aspect_tools_telemetry", version = "0.3.2") tel = use_extension("@aspect_tools_telemetry//:extension.bzl", "telemetry") use_repo(tel, "aspect_tools_telemetry_report") diff --git a/py/private/py_venv/py_venv.bzl b/py/private/py_venv/py_venv.bzl index 0f3788da..d7ab49e8 100644 --- a/py/private/py_venv/py_venv.bzl +++ b/py/private/py_venv/py_venv.bzl @@ -28,6 +28,18 @@ def _interpreter_flags(ctx): return args +# Forked from bazel-lib to avoid keeping `ctx` alive to execution phase +def _to_rlocation_path(workspace_name, file): + if file.short_path.startswith("../"): + return file.short_path[3:] + else: + return workspace_name + "/" + file.short_path + +def _interpreter_path(workspace_name, py_toolchain): + return ( + _to_rlocation_path(workspace_name, py_toolchain.python) if py_toolchain.runfiles_interpreter else py_toolchain.python.path + ) + # FIXME: This is derived directly from the py_binary.bzl rule and should really # be a layer on top of it if we can figure out flowing the data around. This is # PoC quality. @@ -96,47 +108,63 @@ def _py_venv_base_impl(ctx): venv_name = ".{}".format(ctx.attr.name) venv_dir = ctx.actions.declare_directory(venv_name) + workspace_name = ctx.workspace_name + + args = ctx.actions.args() + args.add_all([venv_dir], expand_directories = False, format_each = "--location=%s") + args.add(py_shim.bin.bin, format = "--venv-shim=%s") + + # Post-bzlmod we need to record the current repository in case the + # user tries to consume a `py_venv_binary` across repo boundaries + # which could cause repo mapping to become relevant. + args.add( + ctx.label.repo_name or workspace_name, + format = "--repo=%s", + ) + args.add_all( + [py_toolchain], + map_each = lambda py_toolchain: _interpreter_path(workspace_name, py_toolchain), + format_each = "--python=%s", + allow_closure = True, + ) + args.add(site_packages_pth_file, format = "--pth-file=%s") + args.add(env_file, format = "--env-file=%s") + args.add_all([ctx.bin_dir], expand_directories = False, format_each = "--bin-dir=%s") + args.add(ctx.attr.package_collisions, format = "--collision-strategy=%s") + args.add(venv_name, format = "--venv-name=%s") + args.add(ctx.attr.mode, format = "--mode=%s") + args.add( + "{}.{}".format( + py_toolchain.interpreter_version_info.major, + py_toolchain.interpreter_version_info.minor, + ), + format = "--version=%s", + ) + args.add( + "true" if ctx.attr.include_system_site_packages else "false", + format = "--include-system-site-packages=%s", + ) + args.add( + "true" if ctx.attr.include_system_site_packages else "false", + format = "--include-user-site-packages=%s", + ) + + if ctx.attr.debug: + args.add("--debug") ctx.actions.run( executable = venv_tool, - arguments = [ - "--location=" + venv_dir.path, - "--venv-shim=" + py_shim.bin.bin.path, - # Post-bzlmod we need to record the current repository in case the - # user tries to consume a `py_venv_binary` across repo boundaries - # which could cause repo mapping to become relevant. - "--repo=" + (ctx.label.repo_name or ctx.workspace_name), - "--python=" + (to_rlocation_path(ctx, py_toolchain.python) if py_toolchain.runfiles_interpreter else py_toolchain.python.path), - "--pth-file=" + site_packages_pth_file.path, - "--env-file=" + env_file.path, - "--bin-dir=" + ctx.bin_dir.path, - "--collision-strategy=" + ctx.attr.package_collisions, - "--venv-name=" + venv_name, - "--mode=" + ctx.attr.mode, - "--version={}.{}".format( - py_toolchain.interpreter_version_info.major, - py_toolchain.interpreter_version_info.minor, - ), - "--include-system-site-packages=" + ({ - True: "true", - False: "false", - }[ctx.attr.include_system_site_packages]), - "--include-user-site-packages=" + ({ - True: "true", - False: "false", - }[ctx.attr.include_system_site_packages]), - ] + (["--debug"] if ctx.attr.debug else []), + arguments = [args], inputs = rfs.merge_all([ - ctx.runfiles(files = [ - site_packages_pth_file, - env_file, - venv_tool, - ] + py_toolchain.files.to_list()), + ctx.runfiles(files = [site_packages_pth_file, env_file, venv_tool]), py_shim.default_info.default_runfiles, ]).files, outputs = [ venv_dir, ], + execution_requirements = { + "supports-path-mapping": "1", + }, # TODO: Is this right? The venv toolchain isn't quite in the right # configuration (target not exec) so we have to use a different source # of the target, but it is (logically) the venv toolchain. @@ -144,9 +172,10 @@ def _py_venv_base_impl(ctx): ) return venv_dir, rfs.merge_all([ - ctx.runfiles(files = [ - venv_dir, - ] + py_toolchain.files.to_list()), + ctx.runfiles( + files = [venv_dir], + transitive_files = py_toolchain.files, + ), ctx.attr._runfiles_lib[DefaultInfo].default_runfiles, ]) diff --git a/py/tests/py_venv_image_layer/my_app_amd64_layers_listing.yaml b/py/tests/py_venv_image_layer/my_app_amd64_layers_listing.yaml index 469cf47e..6b0f138f 100644 --- a/py/tests/py_venv_image_layer/my_app_amd64_layers_listing.yaml +++ b/py/tests/py_venv_image_layer/my_app_amd64_layers_listing.yaml @@ -2469,32 +2469,9 @@ files: - -rwxr-xr-x 0 0 0 6181 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/+uv+whl_install__pypi__default__colorama/install/lib/python3.9/site-packages/colorama/win32.py - -rwxr-xr-x 0 0 0 7134 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/+uv+whl_install__pypi__default__colorama/install/lib/python3.9/site-packages/colorama/winterm.py - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/ - - -rwxr-xr-x 0 0 0 250 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/_aspect.pth + - -rwxr-xr-x 0 0 0 523 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/_aspect.pth - -rwxr-xr-x 0 0 0 19 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/_virtualenv.pth - -rwxr-xr-x 0 0 0 4342 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/_virtualenv.py - - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/ - - -rwxr-xr-x 0 0 0 14 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/INSTALLER - - -rwxr-xr-x 0 0 0 17158 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/METADATA - - -rwxr-xr-x 0 0 0 1549 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/RECORD - - -rwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/REQUESTED - - -rwxr-xr-x 0 0 0 105 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/WHEEL - - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/licenses/ - - -rwxr-xr-x 0 0 0 1491 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt - - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/ - - -rwxr-xr-x 0 0 0 266 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/__init__.py - - -rwxr-xr-x 0 0 0 2522 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/ansi.py - - -rwxr-xr-x 0 0 0 11128 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/ansitowin32.py - - -rwxr-xr-x 0 0 0 3325 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/initialise.py - - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/ - - -rwxr-xr-x 0 0 0 75 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/__init__.py - - -rwxr-xr-x 0 0 0 2839 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/ansi_test.py - - -rwxr-xr-x 0 0 0 10678 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/ansitowin32_test.py - - -rwxr-xr-x 0 0 0 6741 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/initialise_test.py - - -rwxr-xr-x 0 0 0 1866 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/isatty_test.py - - -rwxr-xr-x 0 0 0 1079 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/utils.py - - -rwxr-xr-x 0 0 0 3709 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/winterm_test.py - - -rwxr-xr-x 0 0 0 6181 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/win32.py - - -rwxr-xr-x 0 0 0 7134 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/winterm.py --- layer: 2 files: diff --git a/py/tests/py_venv_image_layer/my_app_arm64_layers_listing.yaml b/py/tests/py_venv_image_layer/my_app_arm64_layers_listing.yaml index 90e9c70d..29157c17 100644 --- a/py/tests/py_venv_image_layer/my_app_arm64_layers_listing.yaml +++ b/py/tests/py_venv_image_layer/my_app_arm64_layers_listing.yaml @@ -2450,32 +2450,9 @@ files: - -rwxr-xr-x 0 0 0 6181 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/+uv+whl_install__pypi__default__colorama/install/lib/python3.9/site-packages/colorama/win32.py - -rwxr-xr-x 0 0 0 7134 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/+uv+whl_install__pypi__default__colorama/install/lib/python3.9/site-packages/colorama/winterm.py - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/ - - -rwxr-xr-x 0 0 0 250 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/_aspect.pth + - -rwxr-xr-x 0 0 0 523 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/_aspect.pth - -rwxr-xr-x 0 0 0 19 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/_virtualenv.pth - -rwxr-xr-x 0 0 0 4342 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/_virtualenv.py - - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/ - - -rwxr-xr-x 0 0 0 14 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/INSTALLER - - -rwxr-xr-x 0 0 0 17158 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/METADATA - - -rwxr-xr-x 0 0 0 1549 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/RECORD - - -rwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/REQUESTED - - -rwxr-xr-x 0 0 0 105 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/WHEEL - - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/licenses/ - - -rwxr-xr-x 0 0 0 1491 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt - - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/ - - -rwxr-xr-x 0 0 0 266 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/__init__.py - - -rwxr-xr-x 0 0 0 2522 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/ansi.py - - -rwxr-xr-x 0 0 0 11128 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/ansitowin32.py - - -rwxr-xr-x 0 0 0 3325 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/initialise.py - - drwxr-xr-x 0 0 0 0 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/ - - -rwxr-xr-x 0 0 0 75 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/__init__.py - - -rwxr-xr-x 0 0 0 2839 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/ansi_test.py - - -rwxr-xr-x 0 0 0 10678 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/ansitowin32_test.py - - -rwxr-xr-x 0 0 0 6741 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/initialise_test.py - - -rwxr-xr-x 0 0 0 1866 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/isatty_test.py - - -rwxr-xr-x 0 0 0 1079 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/utils.py - - -rwxr-xr-x 0 0 0 3709 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/tests/winterm_test.py - - -rwxr-xr-x 0 0 0 6181 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/win32.py - - -rwxr-xr-x 0 0 0 7134 Jan 1 2023 ./py/tests/py_venv_image_layer/my_app_bin.runfiles/_main/py/tests/py_venv_image_layer/.my_app_bin/lib/python3.9/site-packages/colorama/winterm.py --- layer: 2 files: