| load("@rules_shell//shell:sh_test.bzl", "sh_test") | |
| load("//python:py_binary.bzl", "py_binary") | |
| load("//python:py_library.bzl", "py_library") | |
| load("//python:py_test.bzl", "py_test") | |
| load("//python/private:bzlmod_enabled.bzl", "BZLMOD_ENABLED") # buildifier: disable=bzl-visibility | |
| load("//python/zipapp:py_zipapp_binary.bzl", "py_zipapp_binary") | |
| load("//tests/support:support.bzl", "SUPPORTS_BOOTSTRAP_SCRIPT") | |
| py_binary( | |
| name = "venv_bin", | |
| srcs = ["main.py"], | |
| config_settings = { | |
| "//python/config_settings:venvs_site_packages": "yes", | |
| } | select({ | |
| "@platforms//os:windows": {}, | |
| "//conditions:default": { | |
| "//python/config_settings:bootstrap_impl": "script", | |
| }, | |
| }), | |
| main = "main.py", | |
| # Pyrefly's bazel-check validator rejects explicit import paths with '.' components from :bin_deps. | |
| tags = ["no-pyrefly"], | |
| deps = [":bin_deps"], | |
| ) | |
| py_zipapp_binary( | |
| name = "venv_zipapp", | |
| binary = ":venv_bin", | |
| ) | |
| py_test( | |
| name = "venv_zipapp_test", | |
| srcs = ["venv_zipapp_test.py"], | |
| data = [":venv_zipapp"], | |
| env = { | |
| "BZLMOD_ENABLED": str(int(BZLMOD_ENABLED)), | |
| "TEST_ZIPAPP": "$(location :venv_zipapp)", | |
| }, | |
| ) | |
| # Create the app with a supported level of compression | |
| py_zipapp_binary( | |
| name = "venv_zipapp_compressed", | |
| binary = ":venv_bin", | |
| compression = "4", | |
| ) | |
| py_test( | |
| name = "venv_zipapp_compressed_test", | |
| srcs = ["venv_zipapp_test.py"], | |
| data = [":venv_zipapp_compressed"], | |
| env = { | |
| "BZLMOD_ENABLED": str(int(BZLMOD_ENABLED)), | |
| "COMPRESSED": "1", | |
| "TEST_ZIPAPP": "$(location :venv_zipapp_compressed)", | |
| }, | |
| main = "venv_zipapp_test.py", | |
| ) | |
| py_binary( | |
| name = "system_python_bin", | |
| srcs = ["main.py"], | |
| config_settings = { | |
| "//python/config_settings:bootstrap_impl": "system_python", | |
| "//python/config_settings:venvs_site_packages": "no", | |
| }, | |
| main = "main.py", | |
| # Pyrefly's bazel-check validator rejects explicit import paths with '.' components from :bin_deps. | |
| tags = ["no-pyrefly"], | |
| deps = [":bin_deps"], | |
| ) | |
| py_zipapp_binary( | |
| name = "system_python_zipapp", | |
| binary = ":system_python_bin", | |
| ) | |
| py_test( | |
| name = "system_python_zipapp_test", | |
| srcs = ["system_python_zipapp_test.py"], | |
| data = [":system_python_zipapp"], | |
| env = { | |
| "TEST_ZIPAPP": "$(location :system_python_zipapp)", | |
| }, | |
| ) | |
| sh_test( | |
| name = "system_python_zipapp_external_bootstrap_test", | |
| srcs = ["system_python_zipapp_external_bootstrap_test.sh"], | |
| data = [ | |
| ":system_python_zipapp", | |
| "//python:current_py_toolchain", | |
| ], | |
| env = { | |
| "PYTHON": "$(PYTHON3_ROOTPATH)", | |
| "ZIPAPP": "$(location :system_python_zipapp)", | |
| }, | |
| toolchains = ["//python:current_py_toolchain"], | |
| ) | |
| py_library( | |
| name = "bin_deps", | |
| deps = [ | |
| ":pkgdep", | |
| ":some_dep", | |
| ], | |
| ) | |
| py_library( | |
| name = "some_dep", | |
| srcs = ["some_dep.py"], | |
| experimental_venvs_site_packages = "//python/config_settings:venvs_site_packages", | |
| imports = ["."], | |
| # Pyrefly's bazel-check validator rejects explicit import paths with '.' components. | |
| tags = ["no-pyrefly"], | |
| ) | |
| py_library( | |
| name = "pkgdep", | |
| srcs = glob(["site-packages/**"]), | |
| experimental_venvs_site_packages = "//python/config_settings:venvs_site_packages", | |
| imports = ["site-packages"], | |
| ) | |
| py_binary( | |
| name = "signals_bin", | |
| srcs = ["signals_main.py"], | |
| config_settings = { | |
| "//python/config_settings:bootstrap_impl": "script", | |
| }, | |
| main = "signals_main.py", | |
| target_compatible_with = SUPPORTS_BOOTSTRAP_SCRIPT, | |
| ) | |
| py_zipapp_binary( | |
| name = "signals_zipapp", | |
| binary = ":signals_bin", | |
| target_compatible_with = SUPPORTS_BOOTSTRAP_SCRIPT, | |
| ) | |
| py_test( | |
| name = "zipapp_signals_test", | |
| srcs = ["zipapp_signals_test.py"], | |
| data = [":signals_zipapp"], | |
| env = { | |
| "TEST_ZIPAPP": "$(location :signals_zipapp)", | |
| }, | |
| target_compatible_with = SUPPORTS_BOOTSTRAP_SCRIPT, | |
| ) |