From 240f34d4414e324e40a90cb6e928dd41041421e9 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Wed, 22 Jan 2025 13:52:16 +0000 Subject: [PATCH 01/16] refactor: remove `@ape//:*` targets BREAKING CHANGE `@ape//:*` targets have been removed. The aliases pointed at `@ape//ape/toolchain/info:*` targets which is a more descriptive target. Use those. --- BUILD.bazel | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index c9cacb6f..223489e2 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -18,13 +18,3 @@ package_info( name = "package_info", visibility = ["//:__subpackages__"], ) - -[ - alias( - name = binary, - actual = "//ape/toolchain/info:{}".format(binary), - deprecation = "The `@ape//:{0}` target is deprecated in favour of the more explicit `@ape//toolchain/info:{0}` and will be removed in a subsequent version.".format(binary), - tags = ["manual"], - ) - for binary in BINARIES -] -- GitLab From b3ace36d27a3f9a3f934de7b145a57afb25a9978 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Wed, 22 Jan 2025 13:58:53 +0000 Subject: [PATCH 02/16] fix(ape_assimilate): add `ppc64` support According to `@platforms` `ppc` is equal to `ppc64` as they have `ppc32` to denote 32bit. --- ape/assimilate/rule.bzl | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ape/assimilate/rule.bzl b/ape/assimilate/rule.bzl index b5e8916b..c8ed0d61 100644 --- a/ape/assimilate/rule.bzl +++ b/ape/assimilate/rule.bzl @@ -35,7 +35,10 @@ ATTRS = { providers = [platform_common.ConstraintValueInfo], default = "@platforms//cpu:x86_64", ), - # TODO: add `ppc64`: https://github.com/bazelbuild/platforms/issues/96 + "_ppc64": attr.label( + providers = [platform_common.ConstraintValueInfo], + default = "@platforms//cpu:ppc", + ), } def implementation(ctx): @@ -71,6 +74,7 @@ def _assimilate(ctx, executable): macos = ctx.attr._macos[platform_common.ConstraintValueInfo] arm64 = ctx.attr._arm64[platform_common.ConstraintValueInfo] amd64 = ctx.attr._amd64[platform_common.ConstraintValueInfo] + ppc64 = ctx.attr._ppc64[platform_common.ConstraintValueInfo] args = ctx.actions.args() args.add(ctx.file._assimilate) @@ -86,11 +90,12 @@ def _assimilate(ctx, executable): args.add("-e") # ELF # Executable CPU - # TODO: add `ppc64` (`-p`) if ctx.target_platform_has_constraint(amd64): args.add("-x") # amd64 elif ctx.target_platform_has_constraint(arm64): args.add("-a") # arm64 + elif ctx.target_platform_has_constraint(ppc64): + args.add("-p") # ppc64 else: fail("Unknown assimilation CPU.") -- GitLab From de6d33571413d6c932c4d021a526eb8925d8014e Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Wed, 22 Jan 2025 15:14:44 +0000 Subject: [PATCH 03/16] test: only disable APE launcher test on Windows --- ape/toolchain/ape/BUILD.bazel | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ape/toolchain/ape/BUILD.bazel b/ape/toolchain/ape/BUILD.bazel index 7b6f836a..dede826d 100644 --- a/ape/toolchain/ape/BUILD.bazel +++ b/ape/toolchain/ape/BUILD.bazel @@ -50,8 +50,9 @@ toolchain_test( stderr = "@toolchain_utils//toolchain/test:non-empty", stdout = "@toolchain_utils//toolchain/test:empty", # TODO: make `ape.pe` work like an actual launcher - target_compatible_with = [ - "@toolchain_utils//toolchain/constraint/os:linux", - ], + target_compatible_with = select({ + "@platforms//os:windows": ["@platforms//:incompatible"], + "//conditions:default": [], + }), toolchains = [":resolved"], ) -- GitLab From 2a3b317f3926965c9eaaa48b1c8d4d387b271163 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 24 Jan 2025 09:15:13 +0000 Subject: [PATCH 04/16] feat(entrypoint): add `binary` alias back to the original downloaded APE binary --- MODULE.bazel.lock | 2611 +++++++++++++++++++++++++++++++ ape/entrypoint/BUILD.tmpl.bazel | 11 +- ape/entrypoint/repository.bzl | 1 + e2e/MODULE.bazel.lock | 2611 +++++++++++++++++++++++++++++++ 4 files changed, 5233 insertions(+), 1 deletion(-) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 2f6bb9a3..60c533db 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -163,6 +163,123 @@ "recordedRepoMappingEntries": [] } }, + "@@pybind11_bazel+//:python_configure.bzl%extension": { + "general": { + "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", + "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", + "recordedFileInputs": { + "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" + }, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_python": { + "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", + "attributes": {} + }, + "pybind11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@pybind11_bazel+//:pybind11.BUILD", + "strip_prefix": "pybind11-2.11.1", + "urls": [ + "https://github.com/pybind/pybind11/archive/v2.11.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", + "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { "general": { "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", @@ -248,6 +365,2500 @@ ] ] } + }, + "@@rules_python+//python/private/pypi:pip.bzl%pip_internal": { + "general": { + "bzlTransitiveDigest": "+zEWYyNfKsf13xNoIs5u4bH4EEgN37u2T/f35J7yWKI=", + "usagesDigest": "OLoIStnzNObNalKEMRq99FqenhPGLFZ5utVLV4sz7OI=", + "recordedFileInputs": { + "@@rules_python+//tools/publish/requirements_darwin.txt": "2994136eab7e57b083c3de76faf46f70fad130bc8e7360a7fed2b288b69e79dc", + "@@rules_python+//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", + "@@rules_python+//tools/publish/requirements_windows.txt": "7673adc71dc1a81d3661b90924d7a7c0fc998cd508b3cb4174337cef3f2de556" + }, + "recordedDirentsInputs": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null + }, + "generatedRepoSpecs": { + "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "backports.tarfile-1.2.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", + "urls": [ + "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "backports_tarfile-1.2.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", + "urls": [ + "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "certifi-2024.8.30-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "urls": [ + "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_certifi_sdist_bec941d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "certifi-2024.8.30.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", + "urls": [ + "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "urls": [ + "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", + "urls": [ + "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "urls": [ + "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "urls": [ + "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "urls": [ + "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", + "urls": [ + "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_sdist_1c39c601": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cffi-1.17.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "urls": [ + "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "urls": [ + "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "urls": [ + "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "urls": [ + "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "urls": [ + "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", + "urls": [ + "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "urls": [ + "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "urls": [ + "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "urls": [ + "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", + "urls": [ + "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "urls": [ + "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "urls": [ + "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "urls": [ + "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "urls": [ + "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "charset_normalizer-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "urls": [ + "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", + "urls": [ + "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", + "urls": [ + "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", + "urls": [ + "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", + "urls": [ + "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", + "urls": [ + "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", + "urls": [ + "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_sdist_315b9001": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cryptography-43.0.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", + "urls": [ + "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "docutils-0.21.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", + "urls": [ + "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "docutils-0.21.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", + "urls": [ + "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "idna-3.10-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", + "urls": [ + "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_idna_sdist_12f65c9b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "idna-3.10.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "urls": [ + "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "importlib_metadata-8.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", + "urls": [ + "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "importlib_metadata-8.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", + "urls": [ + "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.classes-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", + "urls": [ + "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco.classes-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", + "urls": [ + "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.context-6.0.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", + "urls": [ + "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_context-6.0.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", + "urls": [ + "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.functools-4.1.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", + "urls": [ + "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_functools-4.1.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", + "urls": [ + "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "jeepney-0.8.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", + "urls": [ + "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jeepney-0.8.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", + "urls": [ + "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "keyring-25.4.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", + "urls": [ + "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "keyring-25.4.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", + "urls": [ + "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "markdown_it_py-3.0.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "urls": [ + "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "markdown-it-py-3.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", + "urls": [ + "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "mdurl-0.1.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", + "urls": [ + "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "mdurl-0.1.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", + "urls": [ + "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "more_itertools-10.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", + "urls": [ + "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "more-itertools-10.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", + "urls": [ + "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", + "urls": [ + "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", + "urls": [ + "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", + "urls": [ + "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", + "urls": [ + "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", + "urls": [ + "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "34c03fa78e328c691f982b7c03d4423bdfd7da69cd707fe572f544cf74ac23ad", + "urls": [ + "https://files.pythonhosted.org/packages/ab/a7/375afcc710dbe2d64cfbd69e31f82f3e423d43737258af01f6a56d844085/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", + "urls": [ + "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", + "urls": [ + "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", + "urls": [ + "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", + "urls": [ + "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", + "urls": [ + "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", + "urls": [ + "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_sdist_94a16692": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "nh3-0.2.18.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", + "urls": [ + "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pkginfo-1.10.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", + "urls": [ + "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pkginfo-1.10.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", + "urls": [ + "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "pycparser-2.22-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", + "urls": [ + "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pycparser-2.22.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "urls": [ + "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pygments-2.18.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", + "urls": [ + "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pygments_sdist_786ff802": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pygments-2.18.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "urls": [ + "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", + "urls": [ + "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pywin32-ctypes-0.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", + "urls": [ + "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "readme_renderer-44.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", + "urls": [ + "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "readme_renderer-44.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", + "urls": [ + "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests-2.32.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", + "urls": [ + "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_sdist_55365417": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-2.32.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "urls": [ + "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", + "urls": [ + "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-toolbelt-1.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", + "urls": [ + "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", + "urls": [ + "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rfc3986-2.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", + "urls": [ + "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rich_py3_none_any_9836f509": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rich-13.9.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.3", + "sha256": "9836f5096eb2172c9e77df411c1b009bace4193d6a481d534fea75ebba758283", + "urls": [ + "https://files.pythonhosted.org/packages/9a/e2/10e9819cf4a20bd8ea2f5dabafc2e6bf4a78d6a0965daeb60a4b34d1c11f/rich-13.9.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rich_sdist_bc1e01b8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rich-13.9.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.3", + "sha256": "bc1e01b899537598cf02579d2b9f4a415104d3fc439313a7a2c165d76557a08e", + "urls": [ + "https://files.pythonhosted.org/packages/d9/e9/cf9ef5245d835065e6673781dbd4b8911d352fb770d56cf0879cf11b7ee1/rich-13.9.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "SecretStorage-3.3.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", + "urls": [ + "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "SecretStorage-3.3.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", + "urls": [ + "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "twine-5.1.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", + "urls": [ + "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_twine_sdist_9aa08251": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "twine-5.1.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", + "urls": [ + "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "urllib3-2.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "urls": [ + "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "urllib3-2.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", + "urls": [ + "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "zipp-3.20.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", + "urls": [ + "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "zipp-3.20.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", + "urls": [ + "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" + ] + } + }, + "rules_python_publish_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_python_publish_deps", + "extra_hub_aliases": {}, + "whl_map": { + "backports_tarfile": "[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\",\"version\":\"3.11\"},{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\",\"version\":\"3.11\"}]", + "certifi": "[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\",\"version\":\"3.11\"},{\"filename\":\"certifi-2024.8.30.tar.gz\",\"repo\":\"rules_python_publish_deps_311_certifi_sdist_bec941d2\",\"version\":\"3.11\"}]", + "cffi": "[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_cffi_sdist_1c39c601\",\"version\":\"3.11\"}]", + "charset_normalizer": "[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\",\"version\":\"3.11\"}]", + "cryptography": "[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_cryptography_sdist_315b9001\",\"version\":\"3.11\"}]", + "docutils": "[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\",\"version\":\"3.11\"},{\"filename\":\"docutils-0.21.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\",\"version\":\"3.11\"}]", + "idna": "[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\",\"version\":\"3.11\"},{\"filename\":\"idna-3.10.tar.gz\",\"repo\":\"rules_python_publish_deps_311_idna_sdist_12f65c9b\",\"version\":\"3.11\"}]", + "importlib_metadata": "[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\",\"version\":\"3.11\"},{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\",\"version\":\"3.11\"}]", + "jaraco_classes": "[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\",\"version\":\"3.11\"},{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\",\"version\":\"3.11\"}]", + "jaraco_context": "[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\",\"version\":\"3.11\"},{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\",\"version\":\"3.11\"}]", + "jaraco_functools": "[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\",\"version\":\"3.11\"},{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\",\"version\":\"3.11\"}]", + "jeepney": "[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\",\"version\":\"3.11\"},{\"filename\":\"jeepney-0.8.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\",\"version\":\"3.11\"}]", + "keyring": "[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\",\"version\":\"3.11\"},{\"filename\":\"keyring-25.4.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\",\"version\":\"3.11\"}]", + "markdown_it_py": "[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\",\"version\":\"3.11\"},{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\",\"version\":\"3.11\"}]", + "mdurl": "[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\",\"version\":\"3.11\"},{\"filename\":\"mdurl-0.1.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\",\"version\":\"3.11\"}]", + "more_itertools": "[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\",\"version\":\"3.11\"},{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\",\"version\":\"3.11\"}]", + "nh3": "[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18.tar.gz\",\"repo\":\"rules_python_publish_deps_311_nh3_sdist_94a16692\",\"version\":\"3.11\"}]", + "pkginfo": "[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\",\"version\":\"3.11\"},{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\",\"version\":\"3.11\"}]", + "pycparser": "[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\",\"version\":\"3.11\"},{\"filename\":\"pycparser-2.22.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\",\"version\":\"3.11\"}]", + "pygments": "[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\",\"version\":\"3.11\"},{\"filename\":\"pygments-2.18.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pygments_sdist_786ff802\",\"version\":\"3.11\"}]", + "pywin32_ctypes": "[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\",\"version\":\"3.11\"},{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\",\"version\":\"3.11\"}]", + "readme_renderer": "[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\",\"version\":\"3.11\"},{\"filename\":\"readme_renderer-44.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\",\"version\":\"3.11\"}]", + "requests": "[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\",\"version\":\"3.11\"},{\"filename\":\"requests-2.32.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_requests_sdist_55365417\",\"version\":\"3.11\"}]", + "requests_toolbelt": "[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\",\"version\":\"3.11\"},{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\",\"version\":\"3.11\"}]", + "rfc3986": "[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\",\"version\":\"3.11\"},{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\",\"version\":\"3.11\"}]", + "rich": "[{\"filename\":\"rich-13.9.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_rich_py3_none_any_9836f509\",\"version\":\"3.11\"},{\"filename\":\"rich-13.9.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_rich_sdist_bc1e01b8\",\"version\":\"3.11\"}]", + "secretstorage": "[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\",\"version\":\"3.11\"},{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\",\"version\":\"3.11\"}]", + "twine": "[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\",\"version\":\"3.11\"},{\"filename\":\"twine-5.1.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_twine_sdist_9aa08251\",\"version\":\"3.11\"}]", + "urllib3": "[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\",\"version\":\"3.11\"},{\"filename\":\"urllib3-2.2.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\",\"version\":\"3.11\"}]", + "zipp": "[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\",\"version\":\"3.11\"},{\"filename\":\"zipp-3.20.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\",\"version\":\"3.11\"}]" + }, + "packages": [ + "backports_tarfile", + "certifi", + "charset_normalizer", + "docutils", + "idna", + "importlib_metadata", + "jaraco_classes", + "jaraco_context", + "jaraco_functools", + "keyring", + "markdown_it_py", + "mdurl", + "more_itertools", + "nh3", + "pkginfo", + "pygments", + "readme_renderer", + "requests", + "requests_toolbelt", + "rfc3986", + "rich", + "twine", + "urllib3", + "zipp" + ], + "groups": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_python+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_python+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "pypi__build", + "rules_python++internal_deps+pypi__build" + ], + [ + "rules_python+", + "pypi__click", + "rules_python++internal_deps+pypi__click" + ], + [ + "rules_python+", + "pypi__colorama", + "rules_python++internal_deps+pypi__colorama" + ], + [ + "rules_python+", + "pypi__importlib_metadata", + "rules_python++internal_deps+pypi__importlib_metadata" + ], + [ + "rules_python+", + "pypi__installer", + "rules_python++internal_deps+pypi__installer" + ], + [ + "rules_python+", + "pypi__more_itertools", + "rules_python++internal_deps+pypi__more_itertools" + ], + [ + "rules_python+", + "pypi__packaging", + "rules_python++internal_deps+pypi__packaging" + ], + [ + "rules_python+", + "pypi__pep517", + "rules_python++internal_deps+pypi__pep517" + ], + [ + "rules_python+", + "pypi__pip", + "rules_python++internal_deps+pypi__pip" + ], + [ + "rules_python+", + "pypi__pip_tools", + "rules_python++internal_deps+pypi__pip_tools" + ], + [ + "rules_python+", + "pypi__pyproject_hooks", + "rules_python++internal_deps+pypi__pyproject_hooks" + ], + [ + "rules_python+", + "pypi__setuptools", + "rules_python++internal_deps+pypi__setuptools" + ], + [ + "rules_python+", + "pypi__tomli", + "rules_python++internal_deps+pypi__tomli" + ], + [ + "rules_python+", + "pypi__wheel", + "rules_python++internal_deps+pypi__wheel" + ], + [ + "rules_python+", + "pypi__zipp", + "rules_python++internal_deps+pypi__zipp" + ], + [ + "rules_python+", + "pythons_hub", + "rules_python++python+pythons_hub" + ], + [ + "rules_python++python+pythons_hub", + "python_3_10_host", + "rules_python++python+python_3_10_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_11_host", + "rules_python++python+python_3_11_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_12_host", + "rules_python++python+python_3_12_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_8_host", + "rules_python++python+python_3_8_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_9_host", + "rules_python++python+python_3_9_host" + ] + ] + } } } } diff --git a/ape/entrypoint/BUILD.tmpl.bazel b/ape/entrypoint/BUILD.tmpl.bazel index b65b0ad5..ed83d9f1 100644 --- a/ape/entrypoint/BUILD.tmpl.bazel +++ b/ape/entrypoint/BUILD.tmpl.bazel @@ -1 +1,10 @@ -exports_files({{exports}}) +exports_files( + {{exports}}, + visibility = ["//visibility:public"], +) + +alias( + name = "binary", + actual = "{{binary}}", + visibility = ["//visibility:public"], +) diff --git a/ape/entrypoint/repository.bzl b/ape/entrypoint/repository.bzl index 4696b855..2d9d6605 100644 --- a/ape/entrypoint/repository.bzl +++ b/ape/entrypoint/repository.bzl @@ -54,6 +54,7 @@ def implementation(rctx): rctx.template("BUILD.bazel", rctx.attr.build, { "{{exports}}": repr(["entrypoint"]), + "{{binary}}": str(rctx.attr.binary), }) entrypoint = repository_rule( diff --git a/e2e/MODULE.bazel.lock b/e2e/MODULE.bazel.lock index 3dd5e1b2..fa7e3be9 100644 --- a/e2e/MODULE.bazel.lock +++ b/e2e/MODULE.bazel.lock @@ -160,6 +160,123 @@ "recordedRepoMappingEntries": [] } }, + "@@pybind11_bazel+//:python_configure.bzl%extension": { + "general": { + "bzlTransitiveDigest": "d4N/SZrl3ONcmzE98rcV0Fsro0iUbjNQFTIiLiGuH+k=", + "usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=", + "recordedFileInputs": { + "@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e" + }, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_python": { + "repoRuleId": "@@pybind11_bazel+//:python_configure.bzl%python_configure", + "attributes": {} + }, + "pybind11": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@pybind11_bazel+//:pybind11.BUILD", + "strip_prefix": "pybind11-2.11.1", + "urls": [ + "https://github.com/pybind/pybind11/archive/v2.11.1.zip" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "pybind11_bazel+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": { + "general": { + "bzlTransitiveDigest": "mGiTB79hRNjmeDTQdzkpCHyzXhErMbufeAmySBt7s5s=", + "usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "platforms": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz", + "https://github.com/bazelbuild/platforms/releases/download/0.0.8/platforms-0.0.8.tar.gz" + ], + "sha256": "8150406605389ececb6da07cbcb509d5637a3ab9a24bc69b1101531367d89d74" + } + }, + "rules_python": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "d70cd72a7a4880f0000a6346253414825c19cdd40a28289bdf67b8e6480edff8", + "strip_prefix": "rules_python-0.28.0", + "url": "https://github.com/bazelbuild/rules_python/releases/download/0.28.0/rules_python-0.28.0.tar.gz" + } + }, + "bazel_skylib": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94", + "urls": [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.5.0/bazel-skylib-1.5.0.tar.gz" + ] + } + }, + "com_google_absl": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "urls": [ + "https://github.com/abseil/abseil-cpp/archive/refs/tags/20240116.1.zip" + ], + "strip_prefix": "abseil-cpp-20240116.1", + "integrity": "sha256-7capMWOvWyoYbUaHF/b+I2U6XLMaHmky8KugWvfXYuk=" + } + }, + "rules_fuzzing_oss_fuzz": { + "repoRuleId": "@@rules_fuzzing+//fuzzing/private/oss_fuzz:repository.bzl%oss_fuzz_repository", + "attributes": {} + }, + "honggfuzz": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "build_file": "@@rules_fuzzing+//:honggfuzz.BUILD", + "sha256": "6b18ba13bc1f36b7b950c72d80f19ea67fbadc0ac0bb297ec89ad91f2eaa423e", + "url": "https://github.com/google/honggfuzz/archive/2.5.zip", + "strip_prefix": "honggfuzz-2.5" + } + }, + "rules_fuzzing_jazzer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "ee6feb569d88962d59cb59e8a31eb9d007c82683f3ebc64955fd5b96f277eec2", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer/0.20.1/jazzer-0.20.1.jar" + } + }, + "rules_fuzzing_jazzer_api": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_jar", + "attributes": { + "sha256": "f5a60242bc408f7fa20fccf10d6c5c5ea1fcb3c6f44642fec5af88373ae7aa1b", + "url": "https://repo1.maven.org/maven2/com/code-intelligence/jazzer-api/0.20.1/jazzer-api-0.20.1.jar" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_fuzzing+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, "@@rules_java+//java:rules_java_deps.bzl%compatibility_proxy": { "general": { "bzlTransitiveDigest": "84xJEZ1jnXXwo8BXMprvBm++rRt4jsTu9liBxz0ivps=", @@ -245,6 +362,2500 @@ ] ] } + }, + "@@rules_python+//python/private/pypi:pip.bzl%pip_internal": { + "general": { + "bzlTransitiveDigest": "+zEWYyNfKsf13xNoIs5u4bH4EEgN37u2T/f35J7yWKI=", + "usagesDigest": "OLoIStnzNObNalKEMRq99FqenhPGLFZ5utVLV4sz7OI=", + "recordedFileInputs": { + "@@rules_python+//tools/publish/requirements_darwin.txt": "2994136eab7e57b083c3de76faf46f70fad130bc8e7360a7fed2b288b69e79dc", + "@@rules_python+//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", + "@@rules_python+//tools/publish/requirements_windows.txt": "7673adc71dc1a81d3661b90924d7a7c0fc998cd508b3cb4174337cef3f2de556" + }, + "recordedDirentsInputs": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null + }, + "generatedRepoSpecs": { + "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "backports.tarfile-1.2.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34", + "urls": [ + "https://files.pythonhosted.org/packages/b9/fa/123043af240e49752f1c4bd24da5053b6bd00cad78c2be53c0d1e8b975bc/backports.tarfile-1.2.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "backports_tarfile-1.2.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "backports-tarfile==1.2.0", + "sha256": "d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991", + "urls": [ + "https://files.pythonhosted.org/packages/86/72/cd9b395f25e290e633655a100af28cb253e4393396264a98bd5f5951d50f/backports_tarfile-1.2.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_certifi_py3_none_any_922820b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "certifi-2024.8.30-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "urls": [ + "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_certifi_sdist_bec941d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "certifi-2024.8.30.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "certifi==2024.8.30", + "sha256": "bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", + "urls": [ + "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "urls": [ + "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", + "urls": [ + "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "urls": [ + "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "urls": [ + "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "urls": [ + "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", + "urls": [ + "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cffi_sdist_1c39c601": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cffi-1.17.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cffi==1.17.1", + "sha256": "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "urls": [ + "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "urls": [ + "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "urls": [ + "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "urls": [ + "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "urls": [ + "https://files.pythonhosted.org/packages/4c/92/97509850f0d00e9f14a46bc751daabd0ad7765cff29cdfb66c68b6dad57f/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", + "urls": [ + "https://files.pythonhosted.org/packages/e2/29/d227805bff72ed6d6cb1ce08eec707f7cfbd9868044893617eb331f16295/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "urls": [ + "https://files.pythonhosted.org/packages/13/bc/87c2c9f2c144bedfa62f894c3007cd4530ba4b5351acb10dc786428a50f0/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "urls": [ + "https://files.pythonhosted.org/packages/eb/5b/6f10bad0f6461fa272bfbbdf5d0023b5fb9bc6217c92bf068fa5a99820f5/charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "urls": [ + "https://files.pythonhosted.org/packages/d7/a1/493919799446464ed0299c8eef3c3fad0daf1c3cd48bff9263c731b0d9e2/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", + "urls": [ + "https://files.pythonhosted.org/packages/75/d2/0ab54463d3410709c09266dfb416d032a08f97fd7d60e94b8c6ef54ae14b/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "urls": [ + "https://files.pythonhosted.org/packages/8d/c9/27e41d481557be53d51e60750b85aa40eaf52b841946b3cdeff363105737/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "urls": [ + "https://files.pythonhosted.org/packages/ee/44/4f62042ca8cdc0cabf87c0fc00ae27cd8b53ab68be3605ba6d071f742ad3/charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "urls": [ + "https://files.pythonhosted.org/packages/0b/6e/b13bd47fa9023b3699e94abf565b5a2f0b0be6e9ddac9812182596ee62e4/charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "charset_normalizer-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "urls": [ + "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_charset_normalizer_sdist_223217c3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "charset_normalizer-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "charset-normalizer==3.4.0", + "sha256": "223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "urls": [ + "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "846da004a5804145a5f441b8530b4bf35afbf7da70f82409f151695b127213d5", + "urls": [ + "https://files.pythonhosted.org/packages/2f/78/55356eb9075d0be6e81b59f45c7b48df87f76a20e73893872170471f3ee8/cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "0f996e7268af62598f2fc1204afa98a3b5712313a55c4c9d434aef49cadc91d4", + "urls": [ + "https://files.pythonhosted.org/packages/2a/2c/488776a3dc843f95f86d2f957ca0fc3407d0242b50bede7fad1e339be03f/cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "f7b178f11ed3664fd0e995a47ed2b5ff0a12d893e41dd0494f406d1cf555cab7", + "urls": [ + "https://files.pythonhosted.org/packages/7c/04/2345ca92f7a22f601a9c62961741ef7dd0127c39f7310dffa0041c80f16f/cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "c2e6fc39c4ab499049df3bdf567f768a723a5e8464816e8f009f121a5a9f4405", + "urls": [ + "https://files.pythonhosted.org/packages/ac/25/e715fa0bc24ac2114ed69da33adf451a38abb6f3f24ec207908112e9ba53/cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "e1be4655c7ef6e1bbe6b5d0403526601323420bcf414598955968c9ef3eb7d16", + "urls": [ + "https://files.pythonhosted.org/packages/21/ce/b9c9ff56c7164d8e2edfb6c9305045fbc0df4508ccfdb13ee66eb8c95b0e/cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "df6b6c6d742395dd77a23ea3728ab62f98379eff8fb61be2744d4679ab678f73", + "urls": [ + "https://files.pythonhosted.org/packages/2a/33/b3682992ab2e9476b9c81fff22f02c8b0a1e6e1d49ee1750a67d85fd7ed2/cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_cryptography_sdist_315b9001": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "cryptography-43.0.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "cryptography==43.0.3", + "sha256": "315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805", + "urls": [ + "https://files.pythonhosted.org/packages/0d/05/07b55d1fa21ac18c3a8c79f764e2514e6f6a9698f1be44994f5adf0d29db/cryptography-43.0.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "docutils-0.21.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", + "urls": [ + "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_docutils_sdist_3a6b1873": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "docutils-0.21.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "docutils==0.21.2", + "sha256": "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", + "urls": [ + "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_idna_py3_none_any_946d195a": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "idna-3.10-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", + "urls": [ + "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_idna_sdist_12f65c9b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "idna-3.10.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "idna==3.10", + "sha256": "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "urls": [ + "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "importlib_metadata-8.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", + "urls": [ + "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_importlib_metadata_sdist_71522656": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "importlib_metadata-8.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "importlib-metadata==8.5.0", + "sha256": "71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", + "urls": [ + "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.classes-3.4.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790", + "urls": [ + "https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco.classes-3.4.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-classes==3.4.0", + "sha256": "47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd", + "urls": [ + "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.context-6.0.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "f797fc481b490edb305122c9181830a3a5b76d84ef6d1aef2fb9b47ab956f9e4", + "urls": [ + "https://files.pythonhosted.org/packages/ff/db/0c52c4cf5e4bd9f5d7135ec7669a3a767af21b3a308e1ed3674881e52b62/jaraco.context-6.0.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_context-6.0.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-context==6.0.1", + "sha256": "9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3", + "urls": [ + "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "jaraco.functools-4.1.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "ad159f13428bc4acbf5541ad6dec511f91573b90fba04df61dafa2a1231cf649", + "urls": [ + "https://files.pythonhosted.org/packages/9f/4f/24b319316142c44283d7540e76c7b5a6dbd5db623abd86bb7b3491c21018/jaraco.functools-4.1.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jaraco_functools-4.1.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jaraco-functools==4.1.0", + "sha256": "70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d", + "urls": [ + "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "jeepney-0.8.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "c0a454ad016ca575060802ee4d590dd912e35c122fa04e70306de3d076cce755", + "urls": [ + "https://files.pythonhosted.org/packages/ae/72/2a1e2290f1ab1e06f71f3d0f1646c9e4634e70e1d37491535e19266e8dc9/jeepney-0.8.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_jeepney_sdist_5efe48d2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "jeepney-0.8.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "jeepney==0.8.0", + "sha256": "5efe48d255973902f6badc3ce55e2aa6c5c3b3bc642059ef3a91247bcfcc5806", + "urls": [ + "https://files.pythonhosted.org/packages/d6/f4/154cf374c2daf2020e05c3c6a03c91348d59b23c5366e968feb198306fdf/jeepney-0.8.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_keyring_py3_none_any_5426f817": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "keyring-25.4.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "5426f817cf7f6f007ba5ec722b1bcad95a75b27d780343772ad76b17cb47b0bf", + "urls": [ + "https://files.pythonhosted.org/packages/83/25/e6d59e5f0a0508d0dca8bb98c7f7fd3772fc943ac3f53d5ab18a218d32c0/keyring-25.4.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_keyring_sdist_b07ebc55": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "keyring-25.4.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "keyring==25.4.1", + "sha256": "b07ebc55f3e8ed86ac81dd31ef14e81ace9dd9c3d4b5d77a6e9a2016d0d71a1b", + "urls": [ + "https://files.pythonhosted.org/packages/a5/1c/2bdbcfd5d59dc6274ffb175bc29aa07ecbfab196830e0cfbde7bd861a2ea/keyring-25.4.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "markdown_it_py-3.0.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "urls": [ + "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "markdown-it-py-3.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "markdown-it-py==3.0.0", + "sha256": "e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", + "urls": [ + "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_mdurl_py3_none_any_84008a41": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "mdurl-0.1.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", + "urls": [ + "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_mdurl_sdist_bb413d29": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "mdurl-0.1.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "mdurl==0.1.2", + "sha256": "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", + "urls": [ + "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "more_itertools-10.5.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef", + "urls": [ + "https://files.pythonhosted.org/packages/48/7e/3a64597054a70f7c86eb0a7d4fc315b8c1ab932f64883a297bdffeb5f967/more_itertools-10.5.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_more_itertools_sdist_5482bfef": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "more-itertools-10.5.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "more-itertools==10.5.0", + "sha256": "5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6", + "urls": [ + "https://files.pythonhosted.org/packages/51/78/65922308c4248e0eb08ebcbe67c95d48615cc6f27854b6f2e57143e9178f/more-itertools-10.5.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "14c5a72e9fe82aea5fe3072116ad4661af5cf8e8ff8fc5ad3450f123e4925e86", + "urls": [ + "https://files.pythonhosted.org/packages/b3/89/1daff5d9ba5a95a157c092c7c5f39b8dd2b1ddb4559966f808d31cfb67e0/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "7b7c2a3c9eb1a827d42539aa64091640bd275b81e097cd1d8d82ef91ffa2e811", + "urls": [ + "https://files.pythonhosted.org/packages/2c/b6/42fc3c69cabf86b6b81e4c051a9b6e249c5ba9f8155590222c2622961f58/nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "42c64511469005058cd17cc1537578eac40ae9f7200bedcfd1fc1a05f4f8c200", + "urls": [ + "https://files.pythonhosted.org/packages/45/b9/833f385403abaf0023c6547389ec7a7acf141ddd9d1f21573723a6eab39a/nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "0411beb0589eacb6734f28d5497ca2ed379eafab8ad8c84b31bb5c34072b7164", + "urls": [ + "https://files.pythonhosted.org/packages/05/2b/85977d9e11713b5747595ee61f381bc820749daf83f07b90b6c9964cf932/nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "5f36b271dae35c465ef5e9090e1fdaba4a60a56f0bb0ba03e0932a66f28b9189", + "urls": [ + "https://files.pythonhosted.org/packages/72/f2/5c894d5265ab80a97c68ca36f25c8f6f0308abac649aaf152b74e7e854a8/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "34c03fa78e328c691f982b7c03d4423bdfd7da69cd707fe572f544cf74ac23ad", + "urls": [ + "https://files.pythonhosted.org/packages/ab/a7/375afcc710dbe2d64cfbd69e31f82f3e423d43737258af01f6a56d844085/nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "19aaba96e0f795bd0a6c56291495ff59364f4300d4a39b29a0abc9cb3774a84b", + "urls": [ + "https://files.pythonhosted.org/packages/c2/a8/3bb02d0c60a03ad3a112b76c46971e9480efa98a8946677b5a59f60130ca/nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "de3ceed6e661954871d6cd78b410213bdcb136f79aafe22aa7182e028b8c7307", + "urls": [ + "https://files.pythonhosted.org/packages/1b/63/6ab90d0e5225ab9780f6c9fb52254fa36b52bb7c188df9201d05b647e5e1/nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "f0eca9ca8628dbb4e916ae2491d72957fdd35f7a5d326b7032a345f111ac07fe", + "urls": [ + "https://files.pythonhosted.org/packages/a3/da/0c4e282bc3cff4a0adf37005fa1fb42257673fbc1bbf7d1ff639ec3d255a/nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "3a157ab149e591bb638a55c8c6bcb8cdb559c8b12c13a8affaba6cedfe51713a", + "urls": [ + "https://files.pythonhosted.org/packages/de/81/c291231463d21da5f8bba82c8167a6d6893cc5419b0639801ee5d3aeb8a9/nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "36c95d4b70530b320b365659bb5034341316e6a9b30f0b25fa9c9eff4c27a204", + "urls": [ + "https://files.pythonhosted.org/packages/eb/61/73a007c74c37895fdf66e0edcd881f5eaa17a348ff02f4bb4bc906d61085/nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "nh3-0.2.18-cp37-abi3-win_amd64.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "8ce0f819d2f1933953fca255db2471ad58184a60508f03e6285e5114b6254844", + "urls": [ + "https://files.pythonhosted.org/packages/26/8d/53c5b19c4999bdc6ba95f246f4ef35ca83d7d7423e5e38be43ad66544e5d/nh3-0.2.18-cp37-abi3-win_amd64.whl" + ] + } + }, + "rules_python_publish_deps_311_nh3_sdist_94a16692": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "nh3-0.2.18.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "nh3==0.2.18", + "sha256": "94a166927e53972a9698af9542ace4e38b9de50c34352b962f4d9a7d4c927af4", + "urls": [ + "https://files.pythonhosted.org/packages/62/73/10df50b42ddb547a907deeb2f3c9823022580a7a47281e8eae8e003a9639/nh3-0.2.18.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pkginfo-1.10.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", + "urls": [ + "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pkginfo_sdist_5df73835": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pkginfo-1.10.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pkginfo==1.10.0", + "sha256": "5df73835398d10db79f8eecd5cd86b1f6d29317589ea70796994d49399af6297", + "urls": [ + "https://files.pythonhosted.org/packages/2f/72/347ec5be4adc85c182ed2823d8d1c7b51e13b9a6b0c1aae59582eca652df/pkginfo-1.10.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "pycparser-2.22-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", + "urls": [ + "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pycparser_sdist_491c8be9": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pycparser-2.22.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pycparser==2.22", + "sha256": "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "urls": [ + "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "pygments-2.18.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", + "urls": [ + "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pygments_sdist_786ff802": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pygments-2.18.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pygments==2.18.0", + "sha256": "786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "urls": [ + "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "filename": "pywin32_ctypes-0.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", + "urls": [ + "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "pywin32-ctypes-0.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "pywin32-ctypes==0.2.3", + "sha256": "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755", + "urls": [ + "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "readme_renderer-44.0-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", + "urls": [ + "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_readme_renderer_sdist_8712034e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "readme_renderer-44.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "readme-renderer==44.0", + "sha256": "8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", + "urls": [ + "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_py3_none_any_70761cfe": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests-2.32.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", + "urls": [ + "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_sdist_55365417": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-2.32.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests==2.32.3", + "sha256": "55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "urls": [ + "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "requests_toolbelt-1.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", + "urls": [ + "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "requests-toolbelt-1.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "requests-toolbelt==1.0.0", + "sha256": "7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", + "urls": [ + "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rfc3986-2.0.0-py2.py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", + "urls": [ + "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rfc3986_sdist_97aacf9d": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rfc3986-2.0.0.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rfc3986==2.0.0", + "sha256": "97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", + "urls": [ + "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_rich_py3_none_any_9836f509": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "rich-13.9.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.3", + "sha256": "9836f5096eb2172c9e77df411c1b009bace4193d6a481d534fea75ebba758283", + "urls": [ + "https://files.pythonhosted.org/packages/9a/e2/10e9819cf4a20bd8ea2f5dabafc2e6bf4a78d6a0965daeb60a4b34d1c11f/rich-13.9.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_rich_sdist_bc1e01b8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "rich-13.9.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "rich==13.9.3", + "sha256": "bc1e01b899537598cf02579d2b9f4a415104d3fc439313a7a2c165d76557a08e", + "urls": [ + "https://files.pythonhosted.org/packages/d9/e9/cf9ef5245d835065e6673781dbd4b8911d352fb770d56cf0879cf11b7ee1/rich-13.9.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "filename": "SecretStorage-3.3.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99", + "urls": [ + "https://files.pythonhosted.org/packages/54/24/b4293291fa1dd830f353d2cb163295742fa87f179fcc8a20a306a81978b7/SecretStorage-3.3.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_secretstorage_sdist_2403533e": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "SecretStorage-3.3.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "secretstorage==3.3.3", + "sha256": "2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77", + "urls": [ + "https://files.pythonhosted.org/packages/53/a4/f48c9d79cb507ed1373477dbceaba7401fd8a23af63b837fa61f1dcd3691/SecretStorage-3.3.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_twine_py3_none_any_215dbe7b": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "twine-5.1.1-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "215dbe7b4b94c2c50a7315c0275d2258399280fbb7d04182c7e55e24b5f93997", + "urls": [ + "https://files.pythonhosted.org/packages/5d/ec/00f9d5fd040ae29867355e559a94e9a8429225a0284a3f5f091a3878bfc0/twine-5.1.1-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_twine_sdist_9aa08251": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "twine-5.1.1.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "twine==5.1.1", + "sha256": "9aa0825139c02b3434d913545c7b847a21c835e11597f5255842d457da2322db", + "urls": [ + "https://files.pythonhosted.org/packages/77/68/bd982e5e949ef8334e6f7dcf76ae40922a8750aa2e347291ae1477a4782b/twine-5.1.1.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "urllib3-2.2.3-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "urls": [ + "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_urllib3_sdist_e7d814a8": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "urllib3-2.2.3.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "urllib3==2.2.3", + "sha256": "e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", + "urls": [ + "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz" + ] + } + }, + "rules_python_publish_deps_311_zipp_py3_none_any_a817ac80": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "filename": "zipp-3.20.2-py3-none-any.whl", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", + "urls": [ + "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl" + ] + } + }, + "rules_python_publish_deps_311_zipp_sdist_bc9eb26f": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_python_publish_deps//{name}:{target}", + "experimental_target_platforms": [ + "cp311_linux_aarch64", + "cp311_linux_arm", + "cp311_linux_ppc", + "cp311_linux_s390x", + "cp311_linux_x86_64", + "cp311_osx_aarch64", + "cp311_osx_x86_64", + "cp311_windows_x86_64" + ], + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "filename": "zipp-3.20.2.tar.gz", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_python_publish_deps_311", + "requirement": "zipp==3.20.2", + "sha256": "bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", + "urls": [ + "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz" + ] + } + }, + "rules_python_publish_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_python_publish_deps", + "extra_hub_aliases": {}, + "whl_map": { + "backports_tarfile": "[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\",\"version\":\"3.11\"},{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\",\"version\":\"3.11\"}]", + "certifi": "[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\",\"version\":\"3.11\"},{\"filename\":\"certifi-2024.8.30.tar.gz\",\"repo\":\"rules_python_publish_deps_311_certifi_sdist_bec941d2\",\"version\":\"3.11\"}]", + "cffi": "[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_cffi_sdist_1c39c601\",\"version\":\"3.11\"}]", + "charset_normalizer": "[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\",\"version\":\"3.11\"}]", + "cryptography": "[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_cryptography_sdist_315b9001\",\"version\":\"3.11\"}]", + "docutils": "[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\",\"version\":\"3.11\"},{\"filename\":\"docutils-0.21.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\",\"version\":\"3.11\"}]", + "idna": "[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\",\"version\":\"3.11\"},{\"filename\":\"idna-3.10.tar.gz\",\"repo\":\"rules_python_publish_deps_311_idna_sdist_12f65c9b\",\"version\":\"3.11\"}]", + "importlib_metadata": "[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\",\"version\":\"3.11\"},{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\",\"version\":\"3.11\"}]", + "jaraco_classes": "[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\",\"version\":\"3.11\"},{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\",\"version\":\"3.11\"}]", + "jaraco_context": "[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\",\"version\":\"3.11\"},{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\",\"version\":\"3.11\"}]", + "jaraco_functools": "[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\",\"version\":\"3.11\"},{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\",\"version\":\"3.11\"}]", + "jeepney": "[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\",\"version\":\"3.11\"},{\"filename\":\"jeepney-0.8.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\",\"version\":\"3.11\"}]", + "keyring": "[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\",\"version\":\"3.11\"},{\"filename\":\"keyring-25.4.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\",\"version\":\"3.11\"}]", + "markdown_it_py": "[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\",\"version\":\"3.11\"},{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\",\"version\":\"3.11\"}]", + "mdurl": "[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\",\"version\":\"3.11\"},{\"filename\":\"mdurl-0.1.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\",\"version\":\"3.11\"}]", + "more_itertools": "[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\",\"version\":\"3.11\"},{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\",\"version\":\"3.11\"}]", + "nh3": "[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18.tar.gz\",\"repo\":\"rules_python_publish_deps_311_nh3_sdist_94a16692\",\"version\":\"3.11\"}]", + "pkginfo": "[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\",\"version\":\"3.11\"},{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\",\"version\":\"3.11\"}]", + "pycparser": "[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\",\"version\":\"3.11\"},{\"filename\":\"pycparser-2.22.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\",\"version\":\"3.11\"}]", + "pygments": "[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\",\"version\":\"3.11\"},{\"filename\":\"pygments-2.18.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pygments_sdist_786ff802\",\"version\":\"3.11\"}]", + "pywin32_ctypes": "[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\",\"version\":\"3.11\"},{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\",\"version\":\"3.11\"}]", + "readme_renderer": "[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\",\"version\":\"3.11\"},{\"filename\":\"readme_renderer-44.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\",\"version\":\"3.11\"}]", + "requests": "[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\",\"version\":\"3.11\"},{\"filename\":\"requests-2.32.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_requests_sdist_55365417\",\"version\":\"3.11\"}]", + "requests_toolbelt": "[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\",\"version\":\"3.11\"},{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\",\"version\":\"3.11\"}]", + "rfc3986": "[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\",\"version\":\"3.11\"},{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\",\"version\":\"3.11\"}]", + "rich": "[{\"filename\":\"rich-13.9.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_rich_py3_none_any_9836f509\",\"version\":\"3.11\"},{\"filename\":\"rich-13.9.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_rich_sdist_bc1e01b8\",\"version\":\"3.11\"}]", + "secretstorage": "[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\",\"version\":\"3.11\"},{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\",\"version\":\"3.11\"}]", + "twine": "[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\",\"version\":\"3.11\"},{\"filename\":\"twine-5.1.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_twine_sdist_9aa08251\",\"version\":\"3.11\"}]", + "urllib3": "[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\",\"version\":\"3.11\"},{\"filename\":\"urllib3-2.2.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\",\"version\":\"3.11\"}]", + "zipp": "[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\",\"version\":\"3.11\"},{\"filename\":\"zipp-3.20.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\",\"version\":\"3.11\"}]" + }, + "packages": [ + "backports_tarfile", + "certifi", + "charset_normalizer", + "docutils", + "idna", + "importlib_metadata", + "jaraco_classes", + "jaraco_context", + "jaraco_functools", + "keyring", + "markdown_it_py", + "mdurl", + "more_itertools", + "nh3", + "pkginfo", + "pygments", + "readme_renderer", + "requests", + "requests_toolbelt", + "rfc3986", + "rich", + "twine", + "urllib3", + "zipp" + ], + "groups": {} + } + } + }, + "recordedRepoMappingEntries": [ + [ + "bazel_features+", + "bazel_features_globals", + "bazel_features++version_extension+bazel_features_globals" + ], + [ + "bazel_features+", + "bazel_features_version", + "bazel_features++version_extension+bazel_features_version" + ], + [ + "rules_python+", + "bazel_features", + "bazel_features+" + ], + [ + "rules_python+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_python+", + "pypi__build", + "rules_python++internal_deps+pypi__build" + ], + [ + "rules_python+", + "pypi__click", + "rules_python++internal_deps+pypi__click" + ], + [ + "rules_python+", + "pypi__colorama", + "rules_python++internal_deps+pypi__colorama" + ], + [ + "rules_python+", + "pypi__importlib_metadata", + "rules_python++internal_deps+pypi__importlib_metadata" + ], + [ + "rules_python+", + "pypi__installer", + "rules_python++internal_deps+pypi__installer" + ], + [ + "rules_python+", + "pypi__more_itertools", + "rules_python++internal_deps+pypi__more_itertools" + ], + [ + "rules_python+", + "pypi__packaging", + "rules_python++internal_deps+pypi__packaging" + ], + [ + "rules_python+", + "pypi__pep517", + "rules_python++internal_deps+pypi__pep517" + ], + [ + "rules_python+", + "pypi__pip", + "rules_python++internal_deps+pypi__pip" + ], + [ + "rules_python+", + "pypi__pip_tools", + "rules_python++internal_deps+pypi__pip_tools" + ], + [ + "rules_python+", + "pypi__pyproject_hooks", + "rules_python++internal_deps+pypi__pyproject_hooks" + ], + [ + "rules_python+", + "pypi__setuptools", + "rules_python++internal_deps+pypi__setuptools" + ], + [ + "rules_python+", + "pypi__tomli", + "rules_python++internal_deps+pypi__tomli" + ], + [ + "rules_python+", + "pypi__wheel", + "rules_python++internal_deps+pypi__wheel" + ], + [ + "rules_python+", + "pypi__zipp", + "rules_python++internal_deps+pypi__zipp" + ], + [ + "rules_python+", + "pythons_hub", + "rules_python++python+pythons_hub" + ], + [ + "rules_python++python+pythons_hub", + "python_3_10_host", + "rules_python++python+python_3_10_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_11_host", + "rules_python++python+python_3_11_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_12_host", + "rules_python++python+python_3_12_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_8_host", + "rules_python++python+python_3_8_host" + ], + [ + "rules_python++python+pythons_hub", + "python_3_9_host", + "rules_python++python+python_3_9_host" + ] + ] + } } } } -- GitLab From 876c6c7a1c04e7d3e19062f0031e3b2b3099c9e5 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 24 Jan 2025 09:19:15 +0000 Subject: [PATCH 05/16] refactor: add `cosmos` downloader This vastly simplifies the `MODULE.bazel`. It allows creation of download repositories for all versions of `cosmos` easily and creates entrypoints to the latest version of the downloads. This will make it _much_ easier to ingest newer versions of `cosmos` *and* provides legacy version downloads which some users may want to pin to. This patch does not make the extension public at this time but is designed in a way that it could be used across the module graph to added extra version downloads in. This would allow downstream modules to provide newer versions of `cosmos` and the unversioned repositories would point at the provided newer versions. BREAKING CHANGE: A new `ape_cosmos` extension has been implemented that allows flexible downloading of `cosmos.zip` binaries. Repositories can now be imported directly from that extension rather than `@toolchain_utils//toolchain/export:def.bzl#toolchain_export`. Previously a repository would be imported as so: ```py export = use_extension("@toolchain_utils//toolchain/export:defs.bzl", "toolchain_export") use_repo(export, "ape-zstd") ``` Now the extension has all the available repositories: ```py cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") use_repo(cosmos, "zstd") ``` BREAKING CHANGE: The `@ape//:*` aliases have been removed in favour of the more explicit `@ape//ape/toolchain/info:*` targets. BREAKING CHANGE: `ape_binary` rule has been removed. It was plagued with runfile issues that are practically unsolvable in a hermetic way. The `ape_assimilate` rule is far superior and has been the default for the `@ape//ape:*` aliases for many releases. Finally removing the rule in lead up to `1.0.0` release. --- .bazelrc | 3 + BUILD.bazel | 1 - CONTRIBUTING.md | 83 ++-- LICENSE | 1 - MODULE.bazel | 380 +++--------------- MODULE.bazel.lock | 381 ++++++++++++++++-- README.md | 12 + ape/BUILD.bazel | 8 +- ape/assimilate/BUILD.bazel | 8 +- ape/assimilate/rule.bzl | 2 +- ape/binary/BUILD.bazel | 21 - ape/binary/defs.bzl | 5 - ape/binary/nt.tmpl.bat | 55 --- ape/binary/posix.tmpl.sh | 31 -- ape/binary/readlink.go | 21 - ape/binary/rule.bzl | 58 --- ape/cosmos/3.2.4.json | 159 ++++++++ ape/cosmos/3.3.1.json | 175 +++++++++ ape/cosmos/3.7.1.json | 178 +++++++++ ape/cosmos/3.9.2.json | 187 +++++++++ ape/cosmos/4.0.2.json | 192 ++++++++++ ape/cosmos/BUILD.bazel | 38 ++ ape/cosmos/aliases/BUILD.bazel | 0 ape/cosmos/aliases/BUILD.tmpl.bazel | 5 + ape/cosmos/aliases/repository.bzl | 38 ++ ape/cosmos/basenames.bzl | 5 + ape/cosmos/defs.bzl | 5 + ape/cosmos/download.bzl | 63 +++ ape/cosmos/extension.bzl | 301 +++++++++++++++ ape/cosmos/lock/BUILD.bazel | 18 + ape/cosmos/lock/__main__.py | 8 + ape/cosmos/lock/cli.py | 243 ++++++++++++ ape/cosmos/lock/defs.bzl | 5 + ape/cosmos/lock/download.py | 111 ++++++ ape/cosmos/lock/integrity.py | 14 + ape/cosmos/lock/rule.bzl | 121 ++++++ ape/cosmos/metadata/BUILD.bazel | 0 ape/cosmos/metadata/repository.bzl | 60 +++ ape/cosmos/metadata/value.tmpl.bzl | 3 + ape/cosmos/override.bzl | 35 ++ ape/cosmos/symlink/BUILD.bazel | 0 ape/cosmos/symlink/repository.bzl | 41 ++ ape/cosmos/upload.bzl | 26 ++ ape/cosmos/upload/BUILD.bazel | 6 + ape/cosmos/upload/BUILD.filegroup.tmpl.bazel | 6 + ape/cosmos/upload/BUILD.upload.tmpl.bazel | 31 ++ {upload => ape/cosmos/upload}/README.md | 0 ape/cosmos/upload/repository.bzl | 65 ++++ ape/cosmos/url.bzl | 26 ++ ape/cosmos/use.bzl | 56 +++ ape/entrypoint/repository.bzl | 13 +- ape/pe/repository.bzl | 4 +- ape/separator.bzl | 3 + ape/test/BUILD.bazel | 187 --------- ape/test/bash.tmpl.sh | 28 -- ape/test/nt.tmpl.bat | 51 --- ape/test/rule.bzl | 65 ---- ape/toolchain/ape/BUILD.bazel | 2 +- ape/toolchain/info/BUILD.bazel | 8 +- binaries.bzl | 169 -------- e2e/.bazelrc | 3 + e2e/BUILD.bazel | 9 - e2e/MODULE.bazel | 32 +- e2e/MODULE.bazel.lock | 382 ++++++++++++++++--- e2e/binary/BUILD.bazel | 9 + e2e/binary/art/BUILD.bazel | 11 + e2e/binary/awk/BUILD.bazel | 11 + e2e/binary/b2sum/BUILD.bazel | 11 + e2e/binary/base32/BUILD.bazel | 11 + e2e/binary/base64/BUILD.bazel | 11 + e2e/binary/basename/BUILD.bazel | 11 + e2e/binary/basenc/BUILD.bazel | 11 + e2e/binary/bash/BUILD.bazel | 11 + e2e/binary/bc/BUILD.bazel | 11 + e2e/binary/berry/BUILD.bazel | 11 + e2e/binary/blackholed/BUILD.bazel | 11 + e2e/binary/brotli/BUILD.bazel | 11 + e2e/binary/bzip2/BUILD.bazel | 11 + e2e/binary/cat/BUILD.bazel | 11 + e2e/binary/chcon/BUILD.bazel | 11 + e2e/binary/chgrp/BUILD.bazel | 11 + e2e/binary/chmod/BUILD.bazel | 11 + e2e/binary/chown/BUILD.bazel | 11 + e2e/binary/chroot/BUILD.bazel | 11 + e2e/binary/cksum/BUILD.bazel | 11 + e2e/binary/clang-format/BUILD.bazel | 11 + e2e/binary/cmp/BUILD.bazel | 11 + e2e/binary/comm/BUILD.bazel | 11 + e2e/binary/cp/BUILD.bazel | 11 + e2e/binary/cpuid/BUILD.bazel | 11 + e2e/binary/csplit/BUILD.bazel | 11 + e2e/binary/ctags/BUILD.bazel | 11 + e2e/binary/curl/BUILD.bazel | 11 + e2e/binary/cut/BUILD.bazel | 11 + e2e/binary/dash/BUILD.bazel | 11 + e2e/binary/datasette/BUILD.bazel | 11 + e2e/binary/date/BUILD.bazel | 11 + e2e/binary/dd/BUILD.bazel | 11 + e2e/binary/df/BUILD.bazel | 11 + e2e/binary/diff/BUILD.bazel | 11 + e2e/binary/diff3/BUILD.bazel | 11 + e2e/binary/dir/BUILD.bazel | 11 + e2e/binary/dircolors/BUILD.bazel | 11 + e2e/binary/dirname/BUILD.bazel | 11 + e2e/binary/du/BUILD.bazel | 11 + e2e/binary/echo/BUILD.bazel | 11 + e2e/binary/emacs/BUILD.bazel | 11 + e2e/binary/emacsclient/BUILD.bazel | 11 + e2e/binary/env/BUILD.bazel | 11 + e2e/binary/expand/BUILD.bazel | 11 + e2e/binary/expr/BUILD.bazel | 11 + e2e/binary/factor/BUILD.bazel | 11 + e2e/binary/false/BUILD.bazel | 11 + e2e/binary/find/BUILD.bazel | 11 + e2e/binary/fmt/BUILD.bazel | 11 + e2e/binary/fold/BUILD.bazel | 11 + e2e/binary/git-receive-pack/BUILD.bazel | 11 + e2e/binary/git-shell/BUILD.bazel | 11 + e2e/binary/git-upload-archive/BUILD.bazel | 11 + e2e/binary/git-upload-pack/BUILD.bazel | 11 + e2e/binary/git/BUILD.bazel | 11 + e2e/binary/gmake/BUILD.bazel | 11 + e2e/binary/gperf/BUILD.bazel | 11 + e2e/binary/greenbean/BUILD.bazel | 11 + e2e/binary/grep/BUILD.bazel | 11 + e2e/binary/groups/BUILD.bazel | 11 + e2e/binary/gzip/BUILD.bazel | 11 + e2e/binary/hangman/BUILD.bazel | 11 + e2e/binary/head/BUILD.bazel | 11 + e2e/binary/hello/BUILD.bazel | 11 + e2e/binary/id/BUILD.bazel | 11 + e2e/binary/install/BUILD.bazel | 11 + e2e/binary/janet/BUILD.bazel | 11 + e2e/binary/join/BUILD.bazel | 11 + e2e/binary/jq/BUILD.bazel | 11 + e2e/binary/kill/BUILD.bazel | 11 + e2e/binary/less/BUILD.bazel | 11 + e2e/binary/life/BUILD.bazel | 11 + e2e/binary/link/BUILD.bazel | 11 + e2e/binary/links/BUILD.bazel | 11 + e2e/binary/llama/BUILD.bazel | 11 + e2e/binary/ln/BUILD.bazel | 11 + e2e/binary/locate/BUILD.bazel | 11 + e2e/binary/logname/BUILD.bazel | 11 + e2e/binary/ls/BUILD.bazel | 11 + e2e/binary/lua/BUILD.bazel | 11 + e2e/binary/lz4/BUILD.bazel | 11 + e2e/binary/lzip/BUILD.bazel | 11 + e2e/binary/make/BUILD.bazel | 11 + e2e/binary/md5sum/BUILD.bazel | 11 + e2e/binary/mkdir/BUILD.bazel | 11 + e2e/binary/mkfifo/BUILD.bazel | 11 + e2e/binary/mknod/BUILD.bazel | 11 + e2e/binary/mktemp/BUILD.bazel | 11 + e2e/binary/mktemper/BUILD.bazel | 11 + e2e/binary/mv/BUILD.bazel | 11 + e2e/binary/nano/BUILD.bazel | 11 + e2e/binary/nesemu1/BUILD.bazel | 11 + e2e/binary/nice/BUILD.bazel | 11 + e2e/binary/ninja/BUILD.bazel | 11 + e2e/binary/nl/BUILD.bazel | 11 + e2e/binary/nohup/BUILD.bazel | 11 + e2e/binary/nproc/BUILD.bazel | 11 + e2e/binary/numfmt/BUILD.bazel | 11 + e2e/binary/od/BUILD.bazel | 11 + e2e/binary/paste/BUILD.bazel | 11 + e2e/binary/patch/BUILD.bazel | 11 + e2e/binary/pathchk/BUILD.bazel | 11 + e2e/binary/php/BUILD.bazel | 11 + e2e/binary/pigz/BUILD.bazel | 11 + e2e/binary/pinky/BUILD.bazel | 11 + e2e/binary/pledge/BUILD.bazel | 11 + e2e/binary/pr/BUILD.bazel | 11 + e2e/binary/printenv/BUILD.bazel | 11 + e2e/binary/printf/BUILD.bazel | 11 + e2e/binary/printimage/BUILD.bazel | 11 + e2e/binary/printvideo/BUILD.bazel | 11 + e2e/binary/ptx/BUILD.bazel | 11 + e2e/binary/pwd/BUILD.bazel | 11 + e2e/binary/pypack1/BUILD.bazel | 11 + e2e/binary/pypack2/BUILD.bazel | 11 + e2e/binary/python/BUILD.bazel | 11 + e2e/binary/qjs/BUILD.bazel | 11 + e2e/binary/readlink/BUILD.bazel | 11 + e2e/binary/realpath/BUILD.bazel | 11 + e2e/binary/redbean/BUILD.bazel | 11 + e2e/binary/rm/BUILD.bazel | 11 + e2e/binary/rmdir/BUILD.bazel | 11 + e2e/binary/romanize/BUILD.bazel | 11 + e2e/binary/rsync/BUILD.bazel | 11 + e2e/binary/runcon/BUILD.bazel | 11 + e2e/binary/rusage/BUILD.bazel | 11 + e2e/binary/scrapscript/BUILD.bazel | 11 + e2e/binary/script/BUILD.bazel | 11 + e2e/binary/sdiff/BUILD.bazel | 11 + e2e/binary/sed/BUILD.bazel | 11 + e2e/binary/seq/BUILD.bazel | 11 + e2e/binary/sha1sum/BUILD.bazel | 11 + e2e/binary/sha224sum/BUILD.bazel | 11 + e2e/binary/sha256sum/BUILD.bazel | 11 + e2e/binary/sha384sum/BUILD.bazel | 11 + e2e/binary/sha512sum/BUILD.bazel | 11 + e2e/binary/shred/BUILD.bazel | 11 + e2e/binary/shuf/BUILD.bazel | 11 + e2e/binary/sleep/BUILD.bazel | 11 + e2e/binary/sort/BUILD.bazel | 11 + e2e/binary/sox/BUILD.bazel | 11 + e2e/binary/split/BUILD.bazel | 11 + e2e/binary/sqlite3/BUILD.bazel | 11 + e2e/binary/stat/BUILD.bazel | 11 + e2e/binary/stty/BUILD.bazel | 11 + e2e/binary/sum/BUILD.bazel | 11 + e2e/binary/sync/BUILD.bazel | 11 + e2e/binary/tac/BUILD.bazel | 11 + e2e/binary/tail/BUILD.bazel | 11 + e2e/binary/tar/BUILD.bazel | 11 + e2e/binary/tclsh8.6/BUILD.bazel | 11 + e2e/binary/tee/BUILD.bazel | 11 + e2e/binary/test/BUILD.bazel | 11 + e2e/binary/tidy/BUILD.bazel | 11 + e2e/binary/timeout/BUILD.bazel | 11 + e2e/binary/tmux/BUILD.bazel | 11 + e2e/binary/touch/BUILD.bazel | 11 + e2e/binary/tr/BUILD.bazel | 11 + e2e/binary/tree/BUILD.bazel | 11 + e2e/binary/true/BUILD.bazel | 11 + e2e/binary/truncate/BUILD.bazel | 11 + e2e/binary/tsort/BUILD.bazel | 11 + e2e/binary/tty/BUILD.bazel | 11 + e2e/binary/ttyinfo/BUILD.bazel | 11 + e2e/binary/uname/BUILD.bazel | 11 + e2e/binary/unbourne/BUILD.bazel | 11 + e2e/binary/unexpand/BUILD.bazel | 11 + e2e/binary/uniq/BUILD.bazel | 11 + e2e/binary/unlink/BUILD.bazel | 11 + e2e/binary/unzip/BUILD.bazel | 11 + e2e/binary/uptime/BUILD.bazel | 11 + e2e/binary/users/BUILD.bazel | 11 + e2e/binary/vdir/BUILD.bazel | 11 + e2e/binary/verynice/BUILD.bazel | 11 + e2e/binary/vim/BUILD.bazel | 11 + e2e/binary/wall/BUILD.bazel | 11 + e2e/binary/wc/BUILD.bazel | 11 + e2e/binary/wget/BUILD.bazel | 11 + e2e/binary/who/BUILD.bazel | 11 + e2e/binary/whoami/BUILD.bazel | 11 + e2e/binary/whois/BUILD.bazel | 11 + e2e/binary/xargs/BUILD.bazel | 11 + e2e/binary/xz/BUILD.bazel | 11 + e2e/binary/yes/BUILD.bazel | 11 + e2e/binary/zip/BUILD.bazel | 11 + e2e/binary/zsh/BUILD.bazel | 11 + e2e/binary/zstd/BUILD.bazel | 11 + e2e/cosmos/3.1.3.json | 167 ++++++++ e2e/cosmos/3.3.1.json | 175 +++++++++ e2e/cosmos/BUILD.bazel | 17 + e2e/entrypoint/BUILD.bazel | 13 + e2e/symlink/BUILD.bazel | 1 + upload/BUILD.bazel | 36 -- 259 files changed, 5516 insertions(+), 1217 deletions(-) delete mode 120000 LICENSE delete mode 100644 ape/binary/BUILD.bazel delete mode 100644 ape/binary/defs.bzl delete mode 100644 ape/binary/nt.tmpl.bat delete mode 100644 ape/binary/posix.tmpl.sh delete mode 100644 ape/binary/readlink.go delete mode 100644 ape/binary/rule.bzl create mode 100644 ape/cosmos/3.2.4.json create mode 100644 ape/cosmos/3.3.1.json create mode 100644 ape/cosmos/3.7.1.json create mode 100644 ape/cosmos/3.9.2.json create mode 100644 ape/cosmos/4.0.2.json create mode 100644 ape/cosmos/BUILD.bazel create mode 100644 ape/cosmos/aliases/BUILD.bazel create mode 100644 ape/cosmos/aliases/BUILD.tmpl.bazel create mode 100644 ape/cosmos/aliases/repository.bzl create mode 100644 ape/cosmos/basenames.bzl create mode 100644 ape/cosmos/defs.bzl create mode 100644 ape/cosmos/download.bzl create mode 100644 ape/cosmos/extension.bzl create mode 100644 ape/cosmos/lock/BUILD.bazel create mode 100644 ape/cosmos/lock/__main__.py create mode 100644 ape/cosmos/lock/cli.py create mode 100644 ape/cosmos/lock/defs.bzl create mode 100644 ape/cosmos/lock/download.py create mode 100644 ape/cosmos/lock/integrity.py create mode 100644 ape/cosmos/lock/rule.bzl create mode 100644 ape/cosmos/metadata/BUILD.bazel create mode 100644 ape/cosmos/metadata/repository.bzl create mode 100644 ape/cosmos/metadata/value.tmpl.bzl create mode 100644 ape/cosmos/override.bzl create mode 100644 ape/cosmos/symlink/BUILD.bazel create mode 100644 ape/cosmos/symlink/repository.bzl create mode 100644 ape/cosmos/upload.bzl create mode 100644 ape/cosmos/upload/BUILD.bazel create mode 100644 ape/cosmos/upload/BUILD.filegroup.tmpl.bazel create mode 100644 ape/cosmos/upload/BUILD.upload.tmpl.bazel rename {upload => ape/cosmos/upload}/README.md (100%) create mode 100644 ape/cosmos/upload/repository.bzl create mode 100644 ape/cosmos/url.bzl create mode 100644 ape/cosmos/use.bzl create mode 100644 ape/separator.bzl delete mode 100644 ape/test/BUILD.bazel delete mode 100644 ape/test/bash.tmpl.sh delete mode 100644 ape/test/nt.tmpl.bat delete mode 100644 ape/test/rule.bzl delete mode 100644 binaries.bzl create mode 100644 e2e/binary/BUILD.bazel create mode 100644 e2e/binary/art/BUILD.bazel create mode 100644 e2e/binary/awk/BUILD.bazel create mode 100644 e2e/binary/b2sum/BUILD.bazel create mode 100644 e2e/binary/base32/BUILD.bazel create mode 100644 e2e/binary/base64/BUILD.bazel create mode 100644 e2e/binary/basename/BUILD.bazel create mode 100644 e2e/binary/basenc/BUILD.bazel create mode 100644 e2e/binary/bash/BUILD.bazel create mode 100644 e2e/binary/bc/BUILD.bazel create mode 100644 e2e/binary/berry/BUILD.bazel create mode 100644 e2e/binary/blackholed/BUILD.bazel create mode 100644 e2e/binary/brotli/BUILD.bazel create mode 100644 e2e/binary/bzip2/BUILD.bazel create mode 100644 e2e/binary/cat/BUILD.bazel create mode 100644 e2e/binary/chcon/BUILD.bazel create mode 100644 e2e/binary/chgrp/BUILD.bazel create mode 100644 e2e/binary/chmod/BUILD.bazel create mode 100644 e2e/binary/chown/BUILD.bazel create mode 100644 e2e/binary/chroot/BUILD.bazel create mode 100644 e2e/binary/cksum/BUILD.bazel create mode 100644 e2e/binary/clang-format/BUILD.bazel create mode 100644 e2e/binary/cmp/BUILD.bazel create mode 100644 e2e/binary/comm/BUILD.bazel create mode 100644 e2e/binary/cp/BUILD.bazel create mode 100644 e2e/binary/cpuid/BUILD.bazel create mode 100644 e2e/binary/csplit/BUILD.bazel create mode 100644 e2e/binary/ctags/BUILD.bazel create mode 100644 e2e/binary/curl/BUILD.bazel create mode 100644 e2e/binary/cut/BUILD.bazel create mode 100644 e2e/binary/dash/BUILD.bazel create mode 100644 e2e/binary/datasette/BUILD.bazel create mode 100644 e2e/binary/date/BUILD.bazel create mode 100644 e2e/binary/dd/BUILD.bazel create mode 100644 e2e/binary/df/BUILD.bazel create mode 100644 e2e/binary/diff/BUILD.bazel create mode 100644 e2e/binary/diff3/BUILD.bazel create mode 100644 e2e/binary/dir/BUILD.bazel create mode 100644 e2e/binary/dircolors/BUILD.bazel create mode 100644 e2e/binary/dirname/BUILD.bazel create mode 100644 e2e/binary/du/BUILD.bazel create mode 100644 e2e/binary/echo/BUILD.bazel create mode 100644 e2e/binary/emacs/BUILD.bazel create mode 100644 e2e/binary/emacsclient/BUILD.bazel create mode 100644 e2e/binary/env/BUILD.bazel create mode 100644 e2e/binary/expand/BUILD.bazel create mode 100644 e2e/binary/expr/BUILD.bazel create mode 100644 e2e/binary/factor/BUILD.bazel create mode 100644 e2e/binary/false/BUILD.bazel create mode 100644 e2e/binary/find/BUILD.bazel create mode 100644 e2e/binary/fmt/BUILD.bazel create mode 100644 e2e/binary/fold/BUILD.bazel create mode 100644 e2e/binary/git-receive-pack/BUILD.bazel create mode 100644 e2e/binary/git-shell/BUILD.bazel create mode 100644 e2e/binary/git-upload-archive/BUILD.bazel create mode 100644 e2e/binary/git-upload-pack/BUILD.bazel create mode 100644 e2e/binary/git/BUILD.bazel create mode 100644 e2e/binary/gmake/BUILD.bazel create mode 100644 e2e/binary/gperf/BUILD.bazel create mode 100644 e2e/binary/greenbean/BUILD.bazel create mode 100644 e2e/binary/grep/BUILD.bazel create mode 100644 e2e/binary/groups/BUILD.bazel create mode 100644 e2e/binary/gzip/BUILD.bazel create mode 100644 e2e/binary/hangman/BUILD.bazel create mode 100644 e2e/binary/head/BUILD.bazel create mode 100644 e2e/binary/hello/BUILD.bazel create mode 100644 e2e/binary/id/BUILD.bazel create mode 100644 e2e/binary/install/BUILD.bazel create mode 100644 e2e/binary/janet/BUILD.bazel create mode 100644 e2e/binary/join/BUILD.bazel create mode 100644 e2e/binary/jq/BUILD.bazel create mode 100644 e2e/binary/kill/BUILD.bazel create mode 100644 e2e/binary/less/BUILD.bazel create mode 100644 e2e/binary/life/BUILD.bazel create mode 100644 e2e/binary/link/BUILD.bazel create mode 100644 e2e/binary/links/BUILD.bazel create mode 100644 e2e/binary/llama/BUILD.bazel create mode 100644 e2e/binary/ln/BUILD.bazel create mode 100644 e2e/binary/locate/BUILD.bazel create mode 100644 e2e/binary/logname/BUILD.bazel create mode 100644 e2e/binary/ls/BUILD.bazel create mode 100644 e2e/binary/lua/BUILD.bazel create mode 100644 e2e/binary/lz4/BUILD.bazel create mode 100644 e2e/binary/lzip/BUILD.bazel create mode 100644 e2e/binary/make/BUILD.bazel create mode 100644 e2e/binary/md5sum/BUILD.bazel create mode 100644 e2e/binary/mkdir/BUILD.bazel create mode 100644 e2e/binary/mkfifo/BUILD.bazel create mode 100644 e2e/binary/mknod/BUILD.bazel create mode 100644 e2e/binary/mktemp/BUILD.bazel create mode 100644 e2e/binary/mktemper/BUILD.bazel create mode 100644 e2e/binary/mv/BUILD.bazel create mode 100644 e2e/binary/nano/BUILD.bazel create mode 100644 e2e/binary/nesemu1/BUILD.bazel create mode 100644 e2e/binary/nice/BUILD.bazel create mode 100644 e2e/binary/ninja/BUILD.bazel create mode 100644 e2e/binary/nl/BUILD.bazel create mode 100644 e2e/binary/nohup/BUILD.bazel create mode 100644 e2e/binary/nproc/BUILD.bazel create mode 100644 e2e/binary/numfmt/BUILD.bazel create mode 100644 e2e/binary/od/BUILD.bazel create mode 100644 e2e/binary/paste/BUILD.bazel create mode 100644 e2e/binary/patch/BUILD.bazel create mode 100644 e2e/binary/pathchk/BUILD.bazel create mode 100644 e2e/binary/php/BUILD.bazel create mode 100644 e2e/binary/pigz/BUILD.bazel create mode 100644 e2e/binary/pinky/BUILD.bazel create mode 100644 e2e/binary/pledge/BUILD.bazel create mode 100644 e2e/binary/pr/BUILD.bazel create mode 100644 e2e/binary/printenv/BUILD.bazel create mode 100644 e2e/binary/printf/BUILD.bazel create mode 100644 e2e/binary/printimage/BUILD.bazel create mode 100644 e2e/binary/printvideo/BUILD.bazel create mode 100644 e2e/binary/ptx/BUILD.bazel create mode 100644 e2e/binary/pwd/BUILD.bazel create mode 100644 e2e/binary/pypack1/BUILD.bazel create mode 100644 e2e/binary/pypack2/BUILD.bazel create mode 100644 e2e/binary/python/BUILD.bazel create mode 100644 e2e/binary/qjs/BUILD.bazel create mode 100644 e2e/binary/readlink/BUILD.bazel create mode 100644 e2e/binary/realpath/BUILD.bazel create mode 100644 e2e/binary/redbean/BUILD.bazel create mode 100644 e2e/binary/rm/BUILD.bazel create mode 100644 e2e/binary/rmdir/BUILD.bazel create mode 100644 e2e/binary/romanize/BUILD.bazel create mode 100644 e2e/binary/rsync/BUILD.bazel create mode 100644 e2e/binary/runcon/BUILD.bazel create mode 100644 e2e/binary/rusage/BUILD.bazel create mode 100644 e2e/binary/scrapscript/BUILD.bazel create mode 100644 e2e/binary/script/BUILD.bazel create mode 100644 e2e/binary/sdiff/BUILD.bazel create mode 100644 e2e/binary/sed/BUILD.bazel create mode 100644 e2e/binary/seq/BUILD.bazel create mode 100644 e2e/binary/sha1sum/BUILD.bazel create mode 100644 e2e/binary/sha224sum/BUILD.bazel create mode 100644 e2e/binary/sha256sum/BUILD.bazel create mode 100644 e2e/binary/sha384sum/BUILD.bazel create mode 100644 e2e/binary/sha512sum/BUILD.bazel create mode 100644 e2e/binary/shred/BUILD.bazel create mode 100644 e2e/binary/shuf/BUILD.bazel create mode 100644 e2e/binary/sleep/BUILD.bazel create mode 100644 e2e/binary/sort/BUILD.bazel create mode 100644 e2e/binary/sox/BUILD.bazel create mode 100644 e2e/binary/split/BUILD.bazel create mode 100644 e2e/binary/sqlite3/BUILD.bazel create mode 100644 e2e/binary/stat/BUILD.bazel create mode 100644 e2e/binary/stty/BUILD.bazel create mode 100644 e2e/binary/sum/BUILD.bazel create mode 100644 e2e/binary/sync/BUILD.bazel create mode 100644 e2e/binary/tac/BUILD.bazel create mode 100644 e2e/binary/tail/BUILD.bazel create mode 100644 e2e/binary/tar/BUILD.bazel create mode 100644 e2e/binary/tclsh8.6/BUILD.bazel create mode 100644 e2e/binary/tee/BUILD.bazel create mode 100644 e2e/binary/test/BUILD.bazel create mode 100644 e2e/binary/tidy/BUILD.bazel create mode 100644 e2e/binary/timeout/BUILD.bazel create mode 100644 e2e/binary/tmux/BUILD.bazel create mode 100644 e2e/binary/touch/BUILD.bazel create mode 100644 e2e/binary/tr/BUILD.bazel create mode 100644 e2e/binary/tree/BUILD.bazel create mode 100644 e2e/binary/true/BUILD.bazel create mode 100644 e2e/binary/truncate/BUILD.bazel create mode 100644 e2e/binary/tsort/BUILD.bazel create mode 100644 e2e/binary/tty/BUILD.bazel create mode 100644 e2e/binary/ttyinfo/BUILD.bazel create mode 100644 e2e/binary/uname/BUILD.bazel create mode 100644 e2e/binary/unbourne/BUILD.bazel create mode 100644 e2e/binary/unexpand/BUILD.bazel create mode 100644 e2e/binary/uniq/BUILD.bazel create mode 100644 e2e/binary/unlink/BUILD.bazel create mode 100644 e2e/binary/unzip/BUILD.bazel create mode 100644 e2e/binary/uptime/BUILD.bazel create mode 100644 e2e/binary/users/BUILD.bazel create mode 100644 e2e/binary/vdir/BUILD.bazel create mode 100644 e2e/binary/verynice/BUILD.bazel create mode 100644 e2e/binary/vim/BUILD.bazel create mode 100644 e2e/binary/wall/BUILD.bazel create mode 100644 e2e/binary/wc/BUILD.bazel create mode 100644 e2e/binary/wget/BUILD.bazel create mode 100644 e2e/binary/who/BUILD.bazel create mode 100644 e2e/binary/whoami/BUILD.bazel create mode 100644 e2e/binary/whois/BUILD.bazel create mode 100644 e2e/binary/xargs/BUILD.bazel create mode 100644 e2e/binary/xz/BUILD.bazel create mode 100644 e2e/binary/yes/BUILD.bazel create mode 100644 e2e/binary/zip/BUILD.bazel create mode 100644 e2e/binary/zsh/BUILD.bazel create mode 100644 e2e/binary/zstd/BUILD.bazel create mode 100644 e2e/cosmos/3.1.3.json create mode 100644 e2e/cosmos/3.3.1.json create mode 100644 e2e/cosmos/BUILD.bazel create mode 100644 e2e/entrypoint/BUILD.bazel delete mode 100644 upload/BUILD.bazel diff --git a/.bazelrc b/.bazelrc index a4cc6a52..78a0c5f3 100644 --- a/.bazelrc +++ b/.bazelrc @@ -3,6 +3,9 @@ common --registry https://bcr.bazel.build common --registry=https://gitlab.arm.com/bazel/toolchain_utils/-/releases/v1.0.1/downloads common --registry=https://gitlab.arm.com/bazel/download_utils/-/releases/v1.0.0/downloads +# Enable hermetic `rules_python` +common --@rules_python//python/config_settings:bootstrap_impl=script + # Build cache build --experimental_guard_against_concurrent_changes diff --git a/BUILD.bazel b/BUILD.bazel index 223489e2..73c80dba 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,4 +1,3 @@ -load("//:binaries.bzl", "BINARIES") load("@rules_license//rules:license.bzl", "license") load("@rules_license//rules:package_info.bzl", "package_info") diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c6120e46..02f3cd57 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,70 +20,53 @@ $ (cd e2e; bazelisk test //...) # Upgrading Binaries -First off take a look at the cosmos repo for the new release and determine whether any -of the binaries which are in the sections with this text: -`# TODO: remove these when future versions make them available` -appear in the new release. If so remove them from their previous download section and either -uncomment or add them to the download binaries for the new release. - -## Generating new SHAs - -Next up you will need to replace the urls in the download_file invocations to point to the new release. - -It should just be a find and replace of the version number for those urls. +Add a new lock file generator in `ape/cosmos/BUILD.bazel`: + +```py +ape_cosmos_lock( + name = "", + out = ".json", + tags = ["manual"], + version = "", +) +``` -You may also need to comment out the first url for these new downloads, so that they go to cosmos -rather than our internal gitlab package registry. +Run the target to generate the JSON lock file: -Then run following script in a POSIX shell: ```console -# Clear out all integrities -sed -i 's|"\([a-z0-9-].\+\)": "sha256.\+",|"\1": "",|g' MODULE.bazel -# Run a fetch and update integrity -for BINARY in $(rg --no-line-number '^ +"([a-z0-9-].+)": "",' -or '$1' MODULE.bazel); do - INTEGRITY="$(bazelisk fetch @${BINARY}//:entrypoint 2>&1 | rg -o 'sha256-[^"]+')" - echo "${BINARY}: ${INTEGRITY}" - sed -i "s|\"${BINARY}\": \"\",|\"${BINARY}\": \"${INTEGRITY}\",|" MODULE.bazel -done +$ bazelisk run ape/cosmos: +$ cat ape/cosmos/.json ``` -You should now have all the sha's generated for the new release, if there are any sha's that don't -appear then it's possible they are not in the current release. So you will need to add that to a -new `# downloads` section. Then comment out that binary from the new binaries -download target. - -If at any point you want to re-generate these sha's you will need to run `bazel clean --expunge` -to clear out the cached downloads. - -## Uploading a new Package to Gitlab +Add the lock file into the `cosmos` extension in `MODULE.bazel`: -Finally once you're happy with the sha's that have been generated you want to upload these to the -internal gitlab package registry. +```py +cosmos.download( + lock = "//ape/cosmos:.json", + version = "", +) +``` -First of all you will want to modify the url's in -`upload/BUILD.bazel` to point to the new release version, and run this in a POSIX shell: +Add any new binaries automatically by tidying the `MODULE.bazel`: ```console -# Upload all binaries -for TARGET in $(bazelisk query 'upload:*' | tail -n +2); do - bazelisk run "${TARGET}" -done +$ bazelisk mod tidy ``` -Now you can check the package registry to ensure a new package entry is there for the new version. - -If at this point there are no new versions, you may want to ensure that your `~/.netrc` file is -setup for access to gitlab using a personal access token, and try again. - -Finally ensure all the gitlab package registry urls in `MODULE.bazel` are uncommented so that they -can be used as a mirror going forward. +Export any new binaries in the `MODULE.bazel`: -## Confirming Correct SHA's -One final check you can do is to comment out all the external urls in `MODULE.bazel` for the new -cosmo version to ensure it only retrieves the packages from the Gitlab Package Registry. +```py +export.symlink( + name = "ape-", + target = "@", +) +``` -Then run `bazel clean --expunge` before re-running the commands from [Generating new SHA's](#generating-new-shas) then you should have no change to the `MODULE.bazel` file, other than your commented out urls. +Backup the binaries to GitLab generic package registry: +```console +$ bazelisk build ape/cosmos/upload +``` # Release diff --git a/LICENSE b/LICENSE deleted file mode 120000 index 31ff7879..00000000 --- a/LICENSE +++ /dev/null @@ -1 +0,0 @@ -LICENSES/MIT.txt \ No newline at end of file diff --git a/MODULE.bazel b/MODULE.bazel index 8347535c..6e899cb6 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -5,12 +5,22 @@ module( ], ) -bazel_dep(name = "rules_curl", version = "1.0.0-alpha.8", dev_dependency = True) - +bazel_dep(name = "bazel_skylib", version = "1.7.1") bazel_dep(name = "platforms", version = "0.0.10") bazel_dep(name = "toolchain_utils", version = "1.0.1") bazel_dep(name = "download_utils", version = "1.0.0") bazel_dep(name = "rules_license", version = "1.0.0") +bazel_dep(name = "rules_python", version = "1.0.0") + +bazel_dep(name = "hermetic_cc_toolchain", version = "3.1.0", dev_dependency = True) + +python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True) +python.toolchain( + configure_coverage_tool = True, + # TODO: need hermetic `chmod`/`id`: https://github.com/bazelbuild/rules_python/pull/2024 + ignore_root_user_error = True, + python_version = "3.13", +) download_archive = use_repo_rule("@download_utils//download/archive:defs.bzl", "download_archive") @@ -49,7 +59,6 @@ download_file( output = "ape-m1.c", urls = [ "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/4.0.2/ape-m1.c", - # "https://cosmo.zip/pub/cosmos/v/3.9.2/bin/ape-m1.c", # ape-m1.c 4.0.2 not in cosmo repo "https://raw.githubusercontent.com/jart/cosmopolitan/4.0.2/ape/ape-m1.c", ], ) @@ -63,24 +72,6 @@ compile( zig = "@zig//:entrypoint", ) -[ - download_file( - name = binary, - executable = True, - integrity = integrity, - output = "ape", - urls = [ - "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/4.0.2/{}".format(binary), - "https://cosmo.zip/pub/cosmos/v/4.0.2/bin/{}".format(binary), - ], - ) - for binary, integrity in { - "ape-arm64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", - "ape-x86_64.elf": "sha256-fBz4sk4bbdatfaOBcEXVgq2hRrTW7AxqRb6oMOOmX00=", - "ape-x86_64.macho": "sha256-btvd3YJTsgZojeJJGIrf2OuFDpw9nxmEMleBS5NsWZg=", - }.items() -] - pe = use_repo_rule("//ape/pe:repository.bzl", "pe") pe(name = "ape.pe") @@ -105,309 +96,48 @@ resolved( register_toolchains("//ape/toolchain/...") -ape_entrypoint = use_repo_rule("//ape/entrypoint:defs.bzl", "ape_entrypoint") - -export = use_extension("@toolchain_utils//toolchain/export:defs.bzl", "toolchain_export") - -[ - ( - download_file( - name = "cosmos-{}".format(binary), - executable = True, - integrity = integrity, - output = binary, - urls = [ - "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/4.0.2/{}".format(binary), - "https://cosmo.zip/pub/cosmos/v/4.0.2/bin/{}".format(binary), - ], - ), - ape_entrypoint( - name = binary, - binary = "@cosmos-{}//:{}".format(binary, binary), - ), - export.symlink( - name = "ape-{}".format(binary), - target = "@{}".format(binary), - ), - ) - for binary, integrity in { - "assimilate": "sha256-k/Y6rBQEa8JTDk+Y/03HreLjo6oxNs7T21mL9rACbtw=", - "awk": "sha256-EBdsbIdW8ZDnn4ZQDaDoh8MBOkepzW9Jr3/igEJASzw=", - "b2sum": "sha256-zOSu2+eBpJyyBbHoy8SYDLQW1q8dlLaL7i8yHz0HSiw=", - "base32": "sha256-O7HWkfnjMq0CofXMyVIo/ijtKbbo78Kxt58yAgahGLQ=", - "base64": "sha256-tsdBbeK0OLHowgCCl882IoHK5EoEgyFBxKxNNd2JxZI=", - "basename": "sha256-uf/93T81zL3k0vD8FGj01SGve/wPs4zQeco+/1aG4WA=", - "basenc": "sha256-xaimREW9eXAo3R0IXO9+3DmvcmNsLXiXP5QbEkfVV3Q=", - "bash": "sha256-XefKshjBJYNBPFQTY4SLwnjo9I26B9lrn1eQ70C3Lj4=", - "berry": "sha256-XbC38C25o/85yKvTrL7xLwLcWIydZS+7t1PhYTE67B0=", - "brotli": "sha256-znbwnS6wCapaj2jXucmpHWvDkDv26y1dIgwZaIkIg1Y=", - "bzip2": "sha256-WU2kkvQ9uds++DjKELEb3CuWkL96Hft66v7/dd6H3Sc=", - "cat": "sha256-2RxtD90EmVOoZvOm+a43HKPaUAOxiCw9n7lfYGu/cdM=", - "chcon": "sha256-Hq4bdXptNpBdUlB+k1cXGXAhPnKyEQ4Py1ZLH8+5gu8=", - "chgrp": "sha256-tEzHHeZCvvN7D1SmM7OOs7ZYBebFsZnTssKxLvTkDp8=", - "chown": "sha256-Vup9h5JqJjNnlZBHYelvKgGukqiZnl+C6vz7tZVmbcs=", - "chroot": "sha256-gso87OSRJo/IKgGEeDuMF/9IVkP132N9LWg8m/ZPveA=", - "cksum": "sha256-euZaxDUnQwNyJnyLgwGhA+2QnwBaM/EG1qGvl/2uoZU=", - "clang-format": "sha256-t1/HDaTZ/klR+VFONNcqj5uxgIm37dafKu5Mp99ecVQ=", - "cmp": "sha256-qlA2ZYyfhYNA96JDsPUhF4SsDcSQ/LHcCYH0aeDpVhc=", - "comm": "sha256-HSps5lFxnVJuqSifPZzQ/0V551QD40AblS/lJ09BGXE=", - "cpuid": "sha256-NnD7jArSDPP39Vq2XP/bnZmt8X9HUhZ10vypFjVf+gk=", - "csplit": "sha256-WmtIlruvvTd7o0Mk6vtwrhDzNejZWI2RDebvZsLSDsA=", - "ctags": "sha256-MQU0syhSWYuxSvyAGIiJXlVqmF/c61pyIXSRdSlg0fA=", - "curl": "sha256-96LGweDzKygcS3+j5Op5dIpM8tQWyDyrc1LoJcVSIKE=", - "cut": "sha256-AIVT3p4msNujMHF5HcLirWdIQJ6rs4dzWFj7VspcyL8=", - "dash": "sha256-0Lg2YPAFrzZAXjskZQ0FxVQT4GoEP3xcQy4AEiDlgkk=", - "datasette": "sha256-M9OABKCiWQgaYMrT+uF1e11Bg2Yp/ed6HwqkGtxuiEE=", - "date": "sha256-rL+gCG07DxVoV0pefXPxp1X/mPxjf9a1RhyN+1IX+h4=", - "df": "sha256-e/Bk09M5epuCseZ6/71D3gAvCUqMbi77jCQntoSbh88=", - "dir": "sha256-v0L31Yj4t/u0CZDUbxzain2IB509AcvCyQ2vcrGAxeU=", - "dircolors": "sha256-tqTc1QGGA+enf9UzRkxJmrxfIDPwLjXwXTCiBI4BJKo=", - "dirname": "sha256-XRLeO/naUhQlwSVhIZPynxDG4F6XHocSu6MLEIzNFVE=", - "diff": "sha256-SL55aaIT+CAXujoPCCmPTjEOYZ4VBmwk3uDrHQ5i4Fs=", - "diff3": "sha256-9fDTCPVeUFouT1m6F7rYX67OCb1oX6d1rdRm8vwGrjY=", - "du": "sha256-g3vNEZ7LXjU6Za/VcO9obRvvfU8wAa7wmzFNIUhII9o=", - "emacs": "sha256-vfWlSWlVH71Uk4wp/LhH78D/Ul+hllBWsXwAEj27JWc=", - "emacsclient": "sha256-E8thKCpjkxg9KxCJu7ZhtRrvbI7BVeGCpUhBzE5+zrw=", - "env": "sha256-ICTT5Y5GICBF3wAR0ewnR1b7BlvQJjwWoK8RLPkyN9Q=", - "expand": "sha256-BBQ0AXvKYq1fXJ+NSMfvdhJV4fnTAMLOufHPaKYW4yE=", - "expr": "sha256-Kiu9FL+6nV/QcfyzTP6VyXEQbosvScj65T64QkjQ6jo=", - "factor": "sha256-cdlzsJZFMIMb6dl2Bo6jUmQiRtAMyO+hEhzv3RFnzTc=", - "false": "sha256-a8jusSOGWeFK0XlKZDlWT4hgauAUik3c0oxu9/E8HpQ=", - "find": "sha256-5PgUE5GQrorXfpLV7qhnLMNUUuU+SEintIobIblF14M=", - "fmt": "sha256-KSg3OlcDWyHquQK448LUPDtKnZ+fdDQK2UK6Bbjqgxw=", - "fold": "sha256-yZH9+6gwYvVUQwUG7YWxbFAZ8+4m9cuFPRmeL+RNjgY=", - "gmake": "sha256-J+vMoec2zCqn6iktXln0OjorZAhaadbEZlYoBXVD9Fk=", - "greenbean": "sha256-9srJ8fYlj0FR8DvHfBPp5FeNnW/Gkf1ehgo+GYEwXNM=", - "grep": "sha256-jR+XlPUktja5ZLsg1IBwEYk3vZAFwP4fza1LFMvlqCQ=", - "groups": "sha256-Fm8Ls3cUPpS2bRD6VvFP9ImNq+R29Nlx2zs+yk3iTpk=", - "head": "sha256-9JMB6PlH24s8IVtj/74+HnzHAeQri48rCQw3dCcGI+8=", - "id": "sha256-YALT7gD51vl9jYjvfNBJMBeA0ArlATuE8pyMIJPI3SE=", - "install": "sha256-u1GLRB7OMvxfXRvDXOfAqK2xL8iVFPgie5CZRWnok/E=", - "join": "sha256-xGEX1Irgmmz/hlHwIVOwpcTv5wJO07GeHa5HbAsOpfI=", - "kill": "sha256-HUKz8Lz1HJJO1u3jchUbFWQ5WVOm5sPHoRtJH/sS1Bo=", - "less": "sha256-vCqe9jFWSM7byoeWhzEr2+dFfGXKqr3a3BTqCXIZX5o=", - "life": "sha256-tWmEMbmzsMIfUuCTBnlzyHIasVZcv0tT/O/jtZJCDoI=", - "link": "sha256-OpZ5dSDcTRtuJ4CPoVzbgcomEKi9ll7QUZZaIgmqc7s=", - "links": "sha256-x8CMITKEemShHDn5pmFVlqjmTLu0cHt9o3KQ69C75fc=", - "ln": "sha256-LoA+K72zV7mMn/bp+rfoFSaPvypAjMJ6zPkCNS5HWp0=", - "locate": "sha256-wYzNjs8Nnma/ylaCxZbwx5mLyRq5+MLyPu/9+vSijnY=", - "logname": "sha256-ugpDLbQTaaopdbcfodhaiq6BAndNx1Y5jVzNLVGRSIc=", - "ls": "sha256-ka7YfvN2PiP8YlrrkQQoSbtgjfIPC5KQ3CYuBrF2KkI=", - "lua": "sha256-hIhumroRY9zqxGDbwF3OmY7QgwKzOZEuE8SSz8H+Uqs=", - "lz4": "sha256-PFx+fDvlUnhL54BQgtEuIeRIadNjR2hWukUkpyFt6bU=", - "make": "sha256-FTFzI6IrE9/SE7zkejnTAudAZfQhmd6xfIWFLASTT9k=", - "md5sum": "sha256-Fx+46LQddVtvZZN76NX5x34OTspOssTCee8syQHQ7RM=", - "mkfifo": "sha256-CsqC9AQXvpA2cm2pQ8I9C4JkX+CRa7OUH1z+NBKRe5c=", - "mknod": "sha256-Sw2W/7mL4nooSPqx9vsz293yktSwKGFuUnnc5FT0M/c=", - "mktemp": "sha256-ejsmczZ83ARBUd4GuFC1mPYryiYF1phSF4fBob6YYfQ=", - "mktemper": "sha256-aCf1nzCYMNe80RqIdrOcf5hiQ1UxqmM9Jp9xIUCQF5U=", - "nano": "sha256-xErHGcQXBkybONFvNtgAvwDk0PWWbapaVOPHHhuckfg=", - "nesemu1": "sha256-5qC0v53UmLHwaM00AA5Pbj44PAqTQxSPC/JUIMuHDrM=", - "nice": "sha256-vL/jO27Hfup6jQoWbcjmef04b0iciuab3+ajVtVW8F4=", - "ninja": "sha256-WzMPMduwRVWa009ctNe4DZsgJl4XdPBMH5uFkc9GwoI=", - "nl": "sha256-oAeyiNSxqXUUZZRy5r7GKRgh0M1eepbl2Ylta+lsx9I=", - "nohup": "sha256-Rnnodwi0fKxc8FrJdMt5yjlI3S4mO/4Pxourw/5UlaA=", - "nproc": "sha256-2SAv93hMDWoYMBHWAJbwFGWD3SJhZIlo/o2H7uOz5Ms=", - "numfmt": "sha256-fdJQ3zL43AD1DwotjlOKvjfAILIdO/jWEJtdn72j31M=", - "od": "sha256-BWQ2T4C6OsVrzAvBmAt3aJ/vOLnuzP8+tUqWOfZ261A=", - "paste": "sha256-+8C740XRLTV4mDo2wzbB23HAqENs0FK5hhiSs9PbYNk=", - "patch": "sha256-ukYUTj8GAV/GSmGn8WvJQ/ReecocdG/YeLZtCuB++Ag=", - "pathchk": "sha256-uy/5OqhT3PImWYdIXBn7NgsHwqv3Uc+YIrbgnF0MEb4=", - # "pigz": "sha256-KReMrcHfifpjgxeb/k4WNl6ZtgJwfDIf9mTbcEldR0w=", # 3.2.4 Decompression Issue - "pinky": "sha256-qli+wZ5gRIoi/+H4+GI1l8tMNKjExpKPt85PC7wDzwE=", - "pledge": "sha256-sNeEHKw9HETFu5aN9lAuyLviN5s01BpJ0/nKPbGxDHI=", - "pr": "sha256-62vFsD4Tog38Oh7EkRr7lzr/V3oIKugfUI556xz1k7o=", - "printenv": "sha256-Ct6EjP62+xw3F8w09YRhN9MSwCnqM8Ha4+pbVFo8sTE=", - "printimage": "sha256-AYHGlnWVGnEEwHDstba3aYfPn9cKzWHXbpshDxL7pvY=", - "ptx": "sha256-twijMnCOIIOzUFI1eLJh1PYSfCcMB1o1O0Q2fH1rKbs=", - "pwd": "sha256-08o0YN7YL0Q5Su7KbOImX7nQWTtVJciZTWwMM5QRig8=", - "pypack1": "sha256-cBVecPuuIryyJaocgzxR1oqaVQTbv1pGoWKk/8knOQE=", - "python": "sha256-T6FIjES6w0etlU/IfwqyiGU9QQdRf0AjMRSoapeNJ6k=", - # "qjs": "sha256-dgblh0J7T6VumjgCrL0PPJAUIzrqGFw9oqoYSO+g39o=", # 3.3.1 - "readlink": "sha256-MI9wEtnYKtlfRj+zIfgicwBuyYSOJ3FrgT2/w+rCCBo=", - "realpath": "sha256-djXjxbqQ56fyZVpnlPsvskJGZC581i4g5nEdD/Wuyyo=", - "redbean": "sha256-SJxd4sQY8wu1Jb77hA8qk+nOeh9YglqkOTyQezLE4BI=", - "rmdir": "sha256-1+I+vLzVrVfXAMDzAYc05kSjuIlrFJ1PudkZ/KU7Dko=", - "rsync": "sha256-ZVRFw75cyN2Ned/tvesE1IjoCn1nUw/yHnzw0Pq3xrg=", - "runcon": "sha256-oA0CCpVZm6y51j6+0yNOtlec+k7H8+/zBLOmyF+N2+M=", - "script": "sha256-w2yyLAV2JWv5z4qqJN0214ED2zQnZFPd58UdEsLepZ0=", - "sdiff": "sha256-/t8hOtFXYnQKptaf3xRXIB/3/vg2ocxa/110AppUUWw=", - "sed": "sha256-ND8AuTc51P8UXETiigeIlZFCXLdmvPfZ5FNHCNb8bNg=", - "seq": "sha256-Y87Awa/Ue1TY7NQxkDf3wvtfIXsJIgSgxzwS3N4acE4=", - "sha1sum": "sha256-YlDj7fhm18dMss2XKda5ZrnMhsjHec5QWrnWUOyvYdI=", - "sha224sum": "sha256-nyA69MCwsGeR97YTJal8u2F5Umq2sutlNxNeueBpjK8=", - "sha256sum": "sha256-ABL1gN60Mcos5o8Fjlgx4DfIaDnyjeWKbxl6JC6mKkw=", - "sha384sum": "sha256-5bV3dxN5sD9L5J7LNRzGQLVBpstV/WduqWKs1JQgdiU=", - "sha512sum": "sha256-+yabABL8o9ry2zhEZ1Wr7JR3nZGKbxnwdW6QPssmVnU=", - "shred": "sha256-baVjjy1hCOmd+QZApHkaLHluFgTM9HyDvZZAaXR57cY=", - "shuf": "sha256-iB9q96mLSvtzUa4w2i5wMBeqmkhcedHzW/THPjD0Onk=", - "sleep": "sha256-htlrLcdfqBpXJ7GqxwTlJzU9WDQQOcVwPizoWSS5qYw=", - "sort": "sha256-4q/DnLEhJXZ1lv5QPHRmpag0cPOYNzGpwIdO2f54qkE=", - "split": "sha256-N+xpjirg0biHz+yCvTqJ4uGo0xhzmZvhMydUTvEC4mo=", - "sqlite3": "sha256-bcXH977rlATa8BU7Lk58kE31LN9N2DOnW1X9QyBIn6o=", - "stat": "sha256-3gBlScuYiPySCo9d4Tc87I6Bml6DjG3zmCUy1f86/Dk=", - "stty": "sha256-tQ0MHFvHCI/XNgvXqwhQRL//5AeBEDm/Npv3bZ1Bqck=", - "sum": "sha256-RALvzDS8wEY0ZMzlNK9ItnvD4aI8C5hdanVcec1D/rQ=", - "sync": "sha256-InrCxoogK8/2Vcwl4yydSRTirQ6bP6KQTPFl6EE2uaQ=", - "tac": "sha256-SMQzsXwQLHNbqNaWvDStEwVOSW4M413iVZU9AtAoydw=", - "tail": "sha256-7OrgrcdXp9G/rmbbkXz+c9E6NkmxnXKAh65vByeYj2o=", - "tar": "sha256-z2bsjSAXVIm2RV5Xa0sHmHtXSYH8dH49pVKXnVgvbwI=", - "tee": "sha256-ruwn8Pc8oOArrW9PF/yugXgpb/PvChrBMi6N9CYzprs=", - "test": "sha256-wFtpsEdV1mZsMg43B7R4IW4Yt3AjFVpi5b2BLOb3V0Q=", - "tidy": "sha256-Pqg3qCr/n40gW2tBGjHF7fHF9fLlnUTS4tynEiwtgaY=", - "timeout": "sha256-MXoaW9GINC23QDgjnNqt5z7KUPaY7y1tP00MdLd8aNI=", - # "tmux": "sha256-4EcvdpcE51XbpXbh47awpBqpFEsimBv4Zl3HnvbPLoY=", # 3.9.2 - "touch": "sha256-q55ovUGSqpvS7VfrUa2ZNXMC+jdAENE31P6jA1DhtEA=", - "tr": "sha256-7Qfixr12DeNVWnMWKKYLZHHAI8EWMQv3yFr9Je/lGUE=", - "tree": "sha256-xzqnvIrU12cECjI+8ti66ExmMVRULWS4iGGMYV0+cQ8=", - "true": "sha256-LvF7GQGaDzVJc2V2svaHcWQfgchD51C8U4Ma7foVHP0=", - "truncate": "sha256-bLKwPFlG6+FOrOz8zECEC+ldVNoI6iYn3jJ6tLaY+cw=", - "tsort": "sha256-n4zwlXuDiFK6eBjs749Sm0nUyC/YKpXinvEzNvXJI9w=", - "tty": "sha256-4Efm98bjiwiqhpgjv5nBVaCQO87j+rDG2xRA7U05cHQ=", - "ttyinfo": "sha256-zVwebCMjpVAyuYJmMn8K1GfonjA5DYWNxTkSFb+tQ7I=", - # "unbourne": "sha256-GxVzljrGjc4KjGJvtRQDnkym9UGinxDXCpy3vDon6mY=", # 3.9.2 - "unexpand": "sha256-3AkWs0+MDaHxe3lCfqiUXJzR+kU8Ku4TfUJhwuZCIjM=", - "uniq": "sha256-fBl0w9XdaSjD7tFa7IyR6Ljc1OSc9r+b6HFnbtU+B24=", - "unlink": "sha256-fwcM91DDHicw6+G1ZOBUMnQpDCW+vCwNHE90nHeP++k=", - "unzip": "sha256-6WdA8Qt3PBWNRxAnKFzGlNQQ+Th7wgbJPlvQdSOP6tY=", - "uptime": "sha256-jQqvqAKeNRWWRAE8sg3jjz9IAu8UGjbBeDMhq9cZ/MM=", - "users": "sha256-JgL9LVOAj7ghin/zXLc9KW5/JhRp7aghIPF31yXjnY8=", - "vdir": "sha256-xZpxg16ya89LHMO+QRtXJRnYJmvwKf0RJUkdOtaKvLU=", - "verynice": "sha256-cYeNjW7vLc2X+W8U1bUtSn/25CjFLtqhyL5gOcnSAQY=", - "vim": "sha256-pA8QZGE0CPqG0GnfzbjGQHfm59IxybCqGpHMKIa98pE=", - "wall": "sha256-WzU8WAN0p158lR1tPguxSZFtkZGA9C/Bd+a21qClWYg=", - "wc": "sha256-cgGJek5nYKF2jmcalth3vTS/fU6yoo93IjuH/TThPRQ=", - "wget": "sha256-I6w9CRE7hZsVuIXQLsvgGvCHslSrrEx0sLlXcKA8wr8=", - "who": "sha256-mNf/+ZYV1fXZy2GimL0USIl/zQwklPpddX6pdMJ8eHY=", - "whoami": "sha256-6CoeXfms4Uu2Z8Ex1vPmWSfyx2stzdQNjhodRnKnVqc=", - "xargs": "sha256-ZJJFxPHtmEmGRICKIVaZA4W9scLpMc5+7swbrRq0os4=", - # "xz": "sha256-84VVLEvkMFVKsNTKX8IZ90XAqebHofJ4bsy3J3f+Xe0=", # 3.3.1 - "yes": "sha256-kSS7hzKeG6wi7hUj4d21LzrA1SWFTKPZLPKFMdR7CMc=", - "zip": "sha256-Z0H+rSfWQxk5kh51+GtC8dw+Oi7IqCsxSQdHGFx7k0k=", - "zsh": "sha256-/SnDVfM9ilBvfqynqOtWfCOUEhk1jUq3VdMjVwU54EI=", - "zstd": "sha256-EAhul2LIsUJxmpwkE5eLH3saYNN/uKkpp5B4TH9tBmQ=", - }.items() -] - -# Some upstream binaries have the `.ape` extension -[ - ( - download_file( - name = "cosmos-{}".format(binary), - executable = True, - integrity = integrity, - output = binary, - urls = [ - "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/4.0.2/{}".format(binary), - "https://cosmo.zip/pub/cosmos/v/4.0.2/bin/{}.ape".format(binary), - ], - ), - ape_entrypoint( - name = binary, - binary = "@cosmos-{}//:{}".format(binary, binary), - ), - export.symlink( - name = "ape-{}".format(binary), - target = "@{}".format(binary), - ), - ) - for binary, integrity in { - "chmod": "sha256-QhMeGeXNj8KqDw9PflQTQb9Vr8OJbxVOOPGJm+OWi70=", - "cp": "sha256-cCroQPgzo1Hl9qIfZg/a2rNKnJIgHE3NvXVbYVVoLzo=", - "dd": "sha256-PS/hQKT+AOQh5AHolWj3q0WNks39tCO7Hovi0RDEOZE=", - "echo": "sha256-2LpfMxMJYMbL4fepWhIp6Em08hBu4twQRbT1Gy0agPE=", - "gzip": "sha256-xLlIpb77H8i9tdgIY25pkBIj4BhIw4pWucYhlbdDzf8=", - "mkdir": "sha256-eFfD2zKsAEfAtkQdS8VVanoGw/oi3BzltzQRHoUMAAo=", - "mv": "sha256-MplEA+5gkOu/Zk1oCIAJFBiOFx0JjdeutSaG0R9XyxM=", - "printf": "sha256-T5Ifxr+65C9992N7pZ6IkY89COwzDhD7hyMBfEYnNcQ=", - "rm": "sha256-VOcVdnxjBHJh9xxaxau7PoD+ALd8POnk7J+JrEQm5gI=", - "uname": "sha256-rxBBaweJRG1GSz753V13tTH8wGPl0INSQqS12X3mPbo=", - }.items() -] - -# 3.9.2 downloads -[ - ( - download_file( - name = "cosmos-{}".format(binary), - executable = True, - integrity = integrity, - output = binary, - urls = [ - "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/3.9.2/{}".format(binary), - "https://cosmo.zip/pub/cosmos/v/3.9.2/bin/{}".format(binary), - ], - ), - ape_entrypoint( - name = binary, - binary = "@cosmos-{}//:{}".format(binary, binary), - ), - export.symlink( - name = "ape-{}".format(binary), - target = "@{}".format(binary), - ), - ) - for binary, integrity in { - # TODO: remove these when future versions make them available - "tmux": "sha256-4EcvdpcE51XbpXbh47awpBqpFEsimBv4Zl3HnvbPLoY=", - "unbourne": "sha256-GxVzljrGjc4KjGJvtRQDnkym9UGinxDXCpy3vDon6mY=", - }.items() -] +cosmos = use_extension("//ape/cosmos:defs.bzl", "ape_cosmos") +cosmos.upload( + template = "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/{version}/{name}", +) -# 3.2.4 downloads -[ - ( - download_file( - name = "cosmos-{}".format(binary), - executable = True, - integrity = integrity, - output = binary, - urls = [ - "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/3.2.4/{}".format(binary), - "https://cosmo.zip/pub/cosmos/v/3.2.4/bin/{}".format(binary), - ], - ), - ape_entrypoint( - name = binary, - binary = "@cosmos-{}//:{}".format(binary, binary), - ), - export.symlink( - name = "ape-{}".format(binary), - target = "@{}".format(binary), - ), - ) - for binary, integrity in { - # TODO: `pigz` decompression fails on `>3.2.4` - # https://github.com/ahgamut/superconfigure/issues/38 - "pigz": "sha256-KReMrcHfifpjgxeb/k4WNl6ZtgJwfDIf9mTbcEldR0w=", - }.items() -] +# TODO: enable this when we have unauthenticated access to `gitlab.arm.com` generic package registry (see #6) +# cosmos.url( +# template = "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/{version}/{name}", +# ) +cosmos.url( + template = "https://cosmo.zip/pub/cosmos/v/{version}/bin/{name}", +) +cosmos.download( + lock = "//ape/cosmos:4.0.2.json", + version = "4.0.2", +) +cosmos.download( + lock = "//ape/cosmos:3.9.2.json", + version = "3.9.2", +) +cosmos.download( + lock = "//ape/cosmos:3.7.1.json", + version = "3.7.1", +) +cosmos.download( + lock = "//ape/cosmos:3.3.1.json", + version = "3.3.1", +) +cosmos.download( + lock = "//ape/cosmos:3.2.4.json", + version = "3.2.4", +) -# 3.3.1 downloads -[ - ( - download_file( - name = "cosmos-{}".format(binary), - executable = True, - integrity = integrity, - output = binary, - urls = [ - "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/3.3.1/{}".format(binary), - "https://cosmo.zip/pub/cosmos/v/3.3.1/bin/{}".format(binary), - ], - ), - ape_entrypoint( - name = binary, - binary = "@cosmos-{}//:{}".format(binary, binary), - ), - export.symlink( - name = "ape-{}".format(binary), - target = "@{}".format(binary), - ), - ) - for binary, integrity in { - # TODO: remove these when future versions make them available - "qjs": "sha256-dgblh0J7T6VumjgCrL0PPJAUIzrqGFw9oqoYSO+g39o=", - "xz": "sha256-84VVLEvkMFVKsNTKX8IZ90XAqebHofJ4bsy3J3f+Xe0=", - }.items() -] +# https://github.com/ahgamut/superconfigure/issues/38 +cosmos.override( + basename = "pigz", + version = "3.2.4", +) +cosmos.use( + aliases = True, + bootstrap = True, + metadata = True, + upload = True, +) +use_repo(cosmos, "aliases", "ape-aarch64.elf", "ape-arm64.elf", "ape-x86_64.elf", "ape-x86_64.macho", "assimilate", "assimilate-aarch64.elf", "assimilate-x86_64.elf", "assimilate-x86_64.macho", "metadata", "upload") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 60c533db..47ef2062 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -41,6 +41,8 @@ "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/hermetic_cc_toolchain/3.1.0/MODULE.bazel": "ea4b3a25a9417a7db57a8a2f9ebdee91d679823c6274b482b817ed128d81c594", + "https://bcr.bazel.build/modules/hermetic_cc_toolchain/3.1.0/source.json": "9d1df0459caefdf41052d360469922a73e219f67c8ce4da0628cc604469822b9", "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", @@ -55,6 +57,7 @@ "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", @@ -75,8 +78,6 @@ "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_curl/1.0.0-alpha.8/MODULE.bazel": "d1dd6a1002b254ddf55323ead7f8cfad7189330d38bd12b2a0faed81b956eb03", - "https://bcr.bazel.build/modules/rules_curl/1.0.0-alpha.8/source.json": "dbc517eafeb1d452df76d3f7a4b4f62af6bef01b713c701300f5c22d091378ce", "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", @@ -90,6 +91,8 @@ "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", @@ -121,7 +124,8 @@ "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/0.40.0/source.json": "939d4bd2e3110f27bfb360292986bb79fd8dcefb874358ccd6cdaa7bda029320", + "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43", + "https://bcr.bazel.build/modules/rules_python/1.0.0/source.json": "b0162a65c6312e45e7912e39abd1a7f8856c2c7e41ecc9b6dc688a6f6400a917", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", @@ -129,8 +133,8 @@ "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.1/source.json": "b6500ffcd7b48cd72c29bb67bcac781e12701cc0d6d55d266a652583cfcdab01", - "https://bcr.bazel.build/modules/toolchain_utils/1.0.0-beta.9/MODULE.bazel": "9a8edfa6905229b899225489cbd6db36f073d9455c77238bd6ae6c52da5256d8", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/toolchain_utils/1.0.1/MODULE.bazel": "not found", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", @@ -147,6 +151,54 @@ }, "selectedYankedVersions": {}, "moduleExtensions": { + "@@hermetic_cc_toolchain+//toolchain:ext.bzl%toolchains": { + "general": { + "bzlTransitiveDigest": "QE9mmKKNnRnnIzR5esB4//YvnfXT+tjg6NPgrdOQDnM=", + "usagesDigest": "JojEsGQu7csSPZpzBH/MSNWup5s1PPrDxn1Yeizs3n4=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "zig_sdk": { + "repoRuleId": "@@hermetic_cc_toolchain+//toolchain:defs.bzl%zig_repository", + "attributes": { + "version": "0.12.0", + "url_formats": [ + "https://mirror.bazel.build/ziglang.org/download/{version}/zig-{host_platform}-{version}.{_ext}", + "https://ziglang.org/download/{version}/zig-{host_platform}-{version}.{_ext}" + ], + "host_platform_sha256": { + "linux-aarch64": "754f1029484079b7e0ca3b913a0a2f2a6afd5a28990cb224fe8845e72f09de63", + "linux-x86_64": "c7ae866b8a76a568e2d5cfd31fe89cdb629bdd161fdd5018b29a4a0a17045cad", + "macos-aarch64": "294e224c14fd0822cfb15a35cf39aa14bd9967867999bf8bdfe3db7ddec2a27f", + "macos-x86_64": "4d411bf413e7667821324da248e8589278180dbc197f4f282b7dbb599a689311", + "windows-aarch64": "04c6b92689241ca7a8a59b5f12d2ca2820c09d5043c3c4808b7e93e41c7bf97b", + "windows-x86_64": "2199eb4c2000ddb1fba85ba78f1fcf9c1fb8b3e57658f6a627a8e513131893f5" + }, + "host_platform_ext": { + "linux-aarch64": "tar.xz", + "linux-x86_64": "tar.xz", + "macos-aarch64": "tar.xz", + "macos-x86_64": "tar.xz", + "windows-x86_64": "zip" + } + } + } + }, + "recordedRepoMappingEntries": [ + [ + "hermetic_cc_toolchain+", + "bazel_tools", + "bazel_tools" + ], + [ + "hermetic_cc_toolchain+", + "hermetic_cc_toolchain", + "hermetic_cc_toolchain+" + ] + ] + } + }, "@@platforms//host:extension.bzl%host_platform": { "general": { "bzlTransitiveDigest": "xelQcPZH8+tmuOHVjL9vDxMnnQNMlwj0SlvgoqBkm4U=", @@ -366,11 +418,13 @@ ] } }, - "@@rules_python+//python/private/pypi:pip.bzl%pip_internal": { + "@@rules_python+//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "+zEWYyNfKsf13xNoIs5u4bH4EEgN37u2T/f35J7yWKI=", - "usagesDigest": "OLoIStnzNObNalKEMRq99FqenhPGLFZ5utVLV4sz7OI=", + "bzlTransitiveDigest": "8dismvKl3NazfZqc4jBDroiSQpTXFAYc3D1V2mwsv0s=", + "usagesDigest": "/9NP3RV6/DWuNdYAsIU/8UCgCX0TdPUJr0X6O+0lrtk=", "recordedFileInputs": { + "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", + "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", "@@rules_python+//tools/publish/requirements_darwin.txt": "2994136eab7e57b083c3de76faf46f70fad130bc8e7360a7fed2b288b69e79dc", "@@rules_python+//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", "@@rules_python+//tools/publish/requirements_windows.txt": "7673adc71dc1a81d3661b90924d7a7c0fc998cd508b3cb4174337cef3f2de556" @@ -381,6 +435,216 @@ "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null }, "generatedRepoSpecs": { + "pip_deps_310_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_310_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_311_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_311_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_312_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_312_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_38_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_38_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_39_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_39_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "setuptools<=70.3.0" + } + }, + "rules_fuzzing_py_deps_310_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_310_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_311_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_311_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_312_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_312_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_38_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_38_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_39_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_39_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { @@ -2659,42 +2923,74 @@ ] } }, + "pip_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "pip_deps", + "extra_hub_aliases": {}, + "whl_map": { + "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", + "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "numpy", + "setuptools" + ], + "groups": {} + } + }, + "rules_fuzzing_py_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_fuzzing_py_deps", + "extra_hub_aliases": {}, + "whl_map": { + "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", + "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "absl_py", + "six" + ], + "groups": {} + } + }, "rules_python_publish_deps": { "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", "attributes": { "repo_name": "rules_python_publish_deps", "extra_hub_aliases": {}, "whl_map": { - "backports_tarfile": "[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\",\"version\":\"3.11\"},{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\",\"version\":\"3.11\"}]", - "certifi": "[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\",\"version\":\"3.11\"},{\"filename\":\"certifi-2024.8.30.tar.gz\",\"repo\":\"rules_python_publish_deps_311_certifi_sdist_bec941d2\",\"version\":\"3.11\"}]", - "cffi": "[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_cffi_sdist_1c39c601\",\"version\":\"3.11\"}]", - "charset_normalizer": "[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\",\"version\":\"3.11\"}]", - "cryptography": "[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_cryptography_sdist_315b9001\",\"version\":\"3.11\"}]", - "docutils": "[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\",\"version\":\"3.11\"},{\"filename\":\"docutils-0.21.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\",\"version\":\"3.11\"}]", - "idna": "[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\",\"version\":\"3.11\"},{\"filename\":\"idna-3.10.tar.gz\",\"repo\":\"rules_python_publish_deps_311_idna_sdist_12f65c9b\",\"version\":\"3.11\"}]", - "importlib_metadata": "[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\",\"version\":\"3.11\"},{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\",\"version\":\"3.11\"}]", - "jaraco_classes": "[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\",\"version\":\"3.11\"},{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\",\"version\":\"3.11\"}]", - "jaraco_context": "[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\",\"version\":\"3.11\"},{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\",\"version\":\"3.11\"}]", - "jaraco_functools": "[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\",\"version\":\"3.11\"},{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\",\"version\":\"3.11\"}]", - "jeepney": "[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\",\"version\":\"3.11\"},{\"filename\":\"jeepney-0.8.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\",\"version\":\"3.11\"}]", - "keyring": "[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\",\"version\":\"3.11\"},{\"filename\":\"keyring-25.4.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\",\"version\":\"3.11\"}]", - "markdown_it_py": "[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\",\"version\":\"3.11\"},{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\",\"version\":\"3.11\"}]", - "mdurl": "[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\",\"version\":\"3.11\"},{\"filename\":\"mdurl-0.1.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\",\"version\":\"3.11\"}]", - "more_itertools": "[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\",\"version\":\"3.11\"},{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\",\"version\":\"3.11\"}]", - "nh3": "[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18.tar.gz\",\"repo\":\"rules_python_publish_deps_311_nh3_sdist_94a16692\",\"version\":\"3.11\"}]", - "pkginfo": "[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\",\"version\":\"3.11\"},{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\",\"version\":\"3.11\"}]", - "pycparser": "[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\",\"version\":\"3.11\"},{\"filename\":\"pycparser-2.22.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\",\"version\":\"3.11\"}]", - "pygments": "[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\",\"version\":\"3.11\"},{\"filename\":\"pygments-2.18.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pygments_sdist_786ff802\",\"version\":\"3.11\"}]", - "pywin32_ctypes": "[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\",\"version\":\"3.11\"},{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\",\"version\":\"3.11\"}]", - "readme_renderer": "[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\",\"version\":\"3.11\"},{\"filename\":\"readme_renderer-44.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\",\"version\":\"3.11\"}]", - "requests": "[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\",\"version\":\"3.11\"},{\"filename\":\"requests-2.32.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_requests_sdist_55365417\",\"version\":\"3.11\"}]", - "requests_toolbelt": "[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\",\"version\":\"3.11\"},{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\",\"version\":\"3.11\"}]", - "rfc3986": "[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\",\"version\":\"3.11\"},{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\",\"version\":\"3.11\"}]", - "rich": "[{\"filename\":\"rich-13.9.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_rich_py3_none_any_9836f509\",\"version\":\"3.11\"},{\"filename\":\"rich-13.9.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_rich_sdist_bc1e01b8\",\"version\":\"3.11\"}]", - "secretstorage": "[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\",\"version\":\"3.11\"},{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\",\"version\":\"3.11\"}]", - "twine": "[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\",\"version\":\"3.11\"},{\"filename\":\"twine-5.1.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_twine_sdist_9aa08251\",\"version\":\"3.11\"}]", - "urllib3": "[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\",\"version\":\"3.11\"},{\"filename\":\"urllib3-2.2.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\",\"version\":\"3.11\"}]", - "zipp": "[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\",\"version\":\"3.11\"},{\"filename\":\"zipp-3.20.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\",\"version\":\"3.11\"}]" + "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", + "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", + "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", + "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", + "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", + "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", + "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", + "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", + "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", + "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", + "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", + "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", + "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", + "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", + "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", + "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", + "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_9836f509\":[{\"filename\":\"rich-13.9.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_bc1e01b8\":[{\"filename\":\"rich-13.9.3.tar.gz\",\"version\":\"3.11\"}]}", + "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", + "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", + "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" }, "packages": [ "backports_tarfile", @@ -2726,6 +3022,10 @@ } } }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, "recordedRepoMappingEntries": [ [ "bazel_features+", @@ -2847,6 +3147,11 @@ "python_3_12_host", "rules_python++python+python_3_12_host" ], + [ + "rules_python++python+pythons_hub", + "python_3_13_host", + "rules_python++python+python_3_13_host" + ], [ "rules_python++python+pythons_hub", "python_3_8_host", diff --git a/README.md b/README.md index 32e6b01f..d5d0cd78 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,18 @@ ape_toolchain( ) ``` +Use a binary in a repository rule: + +```py +cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") +use_repo(export, "zstd") + +example = use_repo_rule(":example.bzl", "example") +example( + zstd = "@zstd", +) +``` + ## Hermeticity The module is fully hermetic, all binaries are downloaded and verified against subresource integrities. diff --git a/ape/BUILD.bazel b/ape/BUILD.bazel index 296cdb0b..c006c653 100644 --- a/ape/BUILD.bazel +++ b/ape/BUILD.bazel @@ -1,11 +1,11 @@ -load("//:binaries.bzl", "BINARIES") +load("//ape/cosmos:basenames.bzl", "BASENAMES") [ alias( - name = binary, - actual = "//ape/assimilate:{}".format(binary), + name = basename, + actual = "//ape/assimilate:{}".format(basename), tags = ["manual"], visibility = ["//visibility:public"], ) - for binary in BINARIES + for basename in BASENAMES ] diff --git a/ape/assimilate/BUILD.bazel b/ape/assimilate/BUILD.bazel index c74251cc..c0372ac6 100644 --- a/ape/assimilate/BUILD.bazel +++ b/ape/assimilate/BUILD.bazel @@ -1,12 +1,12 @@ -load("//:binaries.bzl", "BINARIES") +load("//ape/cosmos:basenames.bzl", "BASENAMES") load("//ape/assimilate:defs.bzl", "ape_assimilate") [ ape_assimilate( - name = binary, - src = "@cosmos-{}//:{}".format(binary, binary), + name = basename, + src = "@aliases//{}".format(basename), tags = ["manual"], visibility = ["//:__subpackages__"], ) - for binary in BINARIES + for basename in BASENAMES ] diff --git a/ape/assimilate/rule.bzl b/ape/assimilate/rule.bzl index c8ed0d61..3dd14a47 100644 --- a/ape/assimilate/rule.bzl +++ b/ape/assimilate/rule.bzl @@ -17,7 +17,7 @@ ATTRS = { allow_single_file = True, executable = True, cfg = "exec", - default = "@cosmos-assimilate//:assimilate", + default = "@assimilate//:binary", ), "_macos": attr.label( providers = [platform_common.ConstraintValueInfo], diff --git a/ape/binary/BUILD.bazel b/ape/binary/BUILD.bazel deleted file mode 100644 index 62e9ea8a..00000000 --- a/ape/binary/BUILD.bazel +++ /dev/null @@ -1,21 +0,0 @@ -load("//:binaries.bzl", "BINARIES") -load(":rule.bzl", "ape_binary") - -[ - ape_binary( - name = binary, - src = "@cosmos-{}//:{}".format(binary, binary), - tags = ["manual"], - visibility = ["//:__subpackages__"], - ) - for binary in BINARIES -] - -alias( - name = "template", - actual = select({ - "@toolchain_utils//toolchain/constraint/os:windows": ":nt.tmpl.bat", - "//conditions:default": ":posix.tmpl.sh", - }), - visibility = ["//ape/binary:__pkg__"], -) diff --git a/ape/binary/defs.bzl b/ape/binary/defs.bzl deleted file mode 100644 index b537fd37..00000000 --- a/ape/binary/defs.bzl +++ /dev/null @@ -1,5 +0,0 @@ -load(":rule.bzl", _binary = "binary") - -visibility("public") - -ape_binary = _binary diff --git a/ape/binary/nt.tmpl.bat b/ape/binary/nt.tmpl.bat deleted file mode 100644 index fff6e598..00000000 --- a/ape/binary/nt.tmpl.bat +++ /dev/null @@ -1,55 +0,0 @@ -@echo off - -:: Enable Batch extensions -verify other 2>nul -setlocal EnableExtensions -if errorlevel 1 ( - echo "Failed to enable extensions" - exit /b 120 -) - -:: Bazel substitutions -call :runfiles TARGET "{{src}}" -if errorlevel 1 exit /b %ERRORLEVEL% -call :runfiles APE "{{ape}}" -if errorlevel 1 exit /b %ERRORLEVEL% - -:: Run the binary! -for %%a in ("%APE%") do set "APE=%%~fa" -%APE% %TARGET% %* -exit /b %ERRORLEVEL% - -:runfiles - find a file in the Bazel runfiles -:: %1 - return variable -:: %2 - runfile path -setlocal -set "TARGET=%~2" - -if [%RUNFILES_MANIFEST_FILE%] equ [] if exist "MANIFEST" ( - set "RUNFILES_MANIFEST_FILE=MANIFEST" -) - -if exist "%RUNFILES_MANIFEST_FILE%" ( - for /f "tokens=1,2* usebackq" %%a in ("%RUNFILES_MANIFEST_FILE%") do ( - if "_main/%TARGET%" == "%%a" ( - set "RESOLVED=%%~fb" - break - ) - if "%TARGET%" == "../%%a" ( - set "RESOLVED=%%~fb" - break - ) - ) -) - -if [%RESOLVED%] equ [] if exist "external/%TARGET:../=%" ( - set "RESOLVED=external/%TARGET:../=%" -) - -if [%RESOLVED%] equ [] ( - echo>&2.Failed to find runfile: %TARGET% - exit /b 2 -) - -endlocal & set %~1=%RESOLVED% -goto :eof diff --git a/ape/binary/posix.tmpl.sh b/ape/binary/posix.tmpl.sh deleted file mode 100644 index ea16e1a7..00000000 --- a/ape/binary/posix.tmpl.sh +++ /dev/null @@ -1,31 +0,0 @@ -#! /usr/bin/env sh - -# Strict shell -set -o nounset -set -o errexit - -# Runfiles -rlocation() ( - readonly FILEPATH="${1}" - - if test -x "${FILEPATH}"; then - printf '%s' "${FILEPATH}" - return - fi - - if test -x "${0}.runfiles/${FILEPATH#../}"; then - printf '%s' "${0}.runfiles/${FILEPATH#../}" - return - fi - - printf >&2 'Failed to find runfile: %s\n' "${FILEPATH}" - exit 1 -) - -# Bazel substitutions -TARGET="$(rlocation "{{src}}")" -APE="$(rlocation "{{ape}}")" -readonly TARGET APE - -# Execute! -"${APE}" "${TARGET}" "${@}" diff --git a/ape/binary/readlink.go b/ape/binary/readlink.go deleted file mode 100644 index 8b8349a5..00000000 --- a/ape/binary/readlink.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import ( - "fmt" - "os" -) - -func main() { - if len(os.Args) < 2 { - fmt.Fprintf(os.Stderr, "readlink: missing operand\n") - os.Exit(1) - } - - for _, file := range os.Args[1:] { - link, err := os.Readlink(file) - if err != nil { - os.Exit(1) - } - fmt.Println(link) - } -} diff --git a/ape/binary/rule.bzl b/ape/binary/rule.bzl deleted file mode 100644 index 6c33cfdc..00000000 --- a/ape/binary/rule.bzl +++ /dev/null @@ -1,58 +0,0 @@ -visibility("//ape/binary/...") - -DOC = """Launches an αcτµαlly pδrταblε εxεcµταblε (APE) binary with the correct launcher. - -This avoids any issues with `binfmt_misc` picking up binaries under Wine or similar. -""" - -ATTRS = { - "src": attr.label( - doc = "The ape binary target to launch", - allow_single_file = True, - executable = True, - cfg = "exec", - ), - "_template": attr.label( - doc = "The executable template script.", - allow_single_file = True, - default = ":template", - ), -} - -def implementation(ctx): - ape = ctx.toolchains["//ape/toolchain/ape:type"] - - executable = ctx.actions.declare_file("{}.{}".format(ctx.label.name, ctx.file._template.extension)) - - substitutions = ctx.actions.template_dict() - substitutions.add("{{ape}}", ape.executable.short_path) - substitutions.add("{{src}}", ctx.file.src.short_path) - - ctx.actions.expand_template( - template = ctx.file._template, - output = executable, - computed_substitutions = substitutions, - is_executable = True, - ) - - files = depset([executable]) - - runfiles = ctx.runfiles([executable, ctx.executable.src, ape.executable]) - runfiles = runfiles.merge(ctx.attr.src.default_runfiles) - runfiles = runfiles.merge(ape.default.default_runfiles) - - return DefaultInfo( - executable = executable, - files = files, - runfiles = runfiles, - ) - -ape_binary = rule( - doc = DOC, - attrs = ATTRS, - implementation = implementation, - toolchains = ["//ape/toolchain/ape:type"], - executable = True, -) - -binary = ape_binary diff --git a/ape/cosmos/3.2.4.json b/ape/cosmos/3.2.4.json new file mode 100644 index 00000000..818bf789 --- /dev/null +++ b/ape/cosmos/3.2.4.json @@ -0,0 +1,159 @@ +{ + "ape-aarch64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-arm64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-x86_64.elf": "sha256-fBz4sk4bbdatfaOBcEXVgq2hRrTW7AxqRb6oMOOmX00=", + "ape-x86_64.macho": "sha256-btvd3YJTsgZojeJJGIrf2OuFDpw9nxmEMleBS5NsWZg=", + "assimilate": "sha256-//OUSd54eS1l7R5gdwW5f++n0vfcMg4Y0aXavMecv40=", + "assimilate-aarch64.elf": "sha256-sFEaJLwEYlUxmk3GVD51mJWNETqhxohsbCdqJujeshU=", + "assimilate-x86_64.elf": "sha256-NJ8/URxOtwxNtS4vuZpB2bIIyDw+xoLAV+uvH+X5hXs=", + "assimilate-x86_64.macho": "sha256-GWvXnP+59DdbXNo46VU2WUF+xrzxFXlVZ1wLRdzGrMk=", + "awk": "sha256-f+uWrpvZmKp0icmVlTusCWs4TvqR2FrmOkQ1E7JEo/Q=", + "b2sum": "sha256-C0A+VvLQwqWyZ43zLhgi3tX5X8mCSGUT4kBoTsCtsOA=", + "base32": "sha256-UKvhDPWxj5CBiJcC8v22sLAkAMRbeyr0HgsQT3aRpJo=", + "base64": "sha256-Ma0Uq9TjmARCgwZWzTBcuEFyIkMXUahQqms9sUQPYjE=", + "basename": "sha256-wVt/L/UlzFofy0HnJzUxwSipYmqvpnWSYNffI6kHSOg=", + "basenc": "sha256-ss0EQU9BQPJDOhFS2kyr39G9ql6cme2hKhJ5LXu41No=", + "bash": "sha256-817s6bXbU96XAE/lpw/bVjtaG/HZNkiM2orJBhKWaXY=", + "berry": "sha256-iRihZOPxJy8riq00G9QqyuDphQGZW87arvQa7wu5WJ0=", + "brotli": "sha256-5dbhyGt64HdqXrSmTVdOlpyVgW3A3FTcRy9JNKlETbE=", + "bzip2": "sha256-i0jxsBCz1axEaa9Kd1TFPTFwAVYFhbR6dGqUl/OfwYQ=", + "cat": "sha256-hxd0pfBMmXT44ii103FiMUI3pQYHj7UmNW4pqnw12HY=", + "chcon": "sha256-NKrTh2us8Pc67LI7udJg9JhlhobHU03laNr4U+5DhF8=", + "chgrp": "sha256-7KvHpFFsvhK981vIlGyegWuQhIzxY87lYcYfNB/qdC8=", + "chown": "sha256-XlKnJcZ1t7cdBKC2twaXC8/X6p7bSpnFoIDQ0xxdrhQ=", + "chroot": "sha256-lN46T08G7T85BC9L/q4k9vlLwNKWbyD0YkAclHWUGuw=", + "cksum": "sha256-ZN7kzOdpdzCUsa+1+2dsZ19980fhL5x7tnYdKRqW7OY=", + "clang-format": "sha256-t1/HDaTZ/klR+VFONNcqj5uxgIm37dafKu5Mp99ecVQ=", + "comm": "sha256-Z4pMcRlfC6n9KC5Z8cSZT5NA+e/0Zl30tW4zRB+Ml7I=", + "cpuid": "sha256-KZ7I9Vj0m0SYjYdlFCDsWAeZZHq5CL2V2/DiBJgVPFE=", + "csplit": "sha256-PnfIPYD2n2cZ8rxV26jvFiE6e+XROXGwhE6sbpjbPSY=", + "ctags": "sha256-6GwrTt16hCzJ8EoVXQXoetwnOIOhBR4T4gX2PO/wIfQ=", + "curl": "sha256-jc8LNKBMlWgGeHW3Tum9M6AfV2a5PlLmJunmfs00q/M=", + "cut": "sha256-N6iYRU/Ue0YN1tW0YElHjCVe0aPrUtbSxWFaJUPXGAE=", + "dash": "sha256-DQjaobzAoYxtxBvvDdyQLbTvjPV61HLMOahNEXz8dOM=", + "datasette": "sha256-ohY3OEDwK6DOSWfLFlUa/4MTTHd9kKGN8NYTwGyWOZA=", + "date": "sha256-4r91y6qrOb4PK5AQ23uY2lskgprTRGLwDTBOkMPF1/c=", + "df": "sha256-rrkKRiH346Qfr/uwtOFe5x+Q3X1yajhCndbTxnkkiSI=", + "dir": "sha256-XfB99aziyrFfAHbOzI36cXPn+633uND4y02Mn9wTx98=", + "dircolors": "sha256-FTu1gC+xUzR1NTxaXk9ZLu4Gp2ACwnQC2FvHJySd1/Q=", + "dirname": "sha256-F9LmexRfLOqVyybPSXv+2xBhLakd8fnV01T/yZK78EU=", + "du": "sha256-cwPg/fIABRhBnlWOXTpC7GaIEi/L2vgMqPUAZ8vnxLA=", + "emacs": "sha256-FHVaf2drHxbWKWpCc0pBlt8NNLiR6x6pX9KrhCkI5zM=", + "emacsclient": "sha256-2p9WFK4fF0vnJDUyNTd6a4jigqsQpp0aG41e0MQSJOM=", + "env": "sha256-KSmB7dXht0FmmkJB8JQnUw6uQIfG36SugQXyMdPKPso=", + "expand": "sha256-GDxdiCM3bnYQtE+brm6GgDN7EyjV+5vxYj1McQ/YGLQ=", + "expr": "sha256-GD2DSrlrlym+z+57/BUKL50paNN1QU6FGe1D3wxtnnk=", + "factor": "sha256-Pmziyh/iAkeaU/XHmAblS/4QfA6YDbml6qSX/yqVj6s=", + "false": "sha256-FuIagCcD2snlx2D2D2k5+qhA2KXgWcoxMDY7O1qlE74=", + "find": "sha256-k3BJOldX6NzX1Aq/RX6Q6PQts/3l9IFR7BILMIDUkg8=", + "fmt": "sha256-ZjBJtahjGrr6Xll85ZZo+lTGEZNdaSksUNqpkpMqyrY=", + "fold": "sha256-u5I83GpxaXBKFtzsJVJEWdQ1hJkpRmJGbQVHzjOYJ3w=", + "gmake": "sha256-o5a22Uli7i9upNh3z9qwPRFv3vIF7hOSdYMCXz8ioQc=", + "greenbean": "sha256-2e6ANHtNrFdAKdmSAVBOYWacqaF9SxOhrwKesYwIfSc=", + "grep": "sha256-btb7IC+1GiiU+CTMX4F7F8ESESShnVx90+Vz8uhgkkA=", + "groups": "sha256-1hRskXbgQrpy3YedFo9SmYix5KUTJAV9cL6I0T/DF7c=", + "head": "sha256-I4EetDV9GYYKHCNANar3iwNNZMJhJ9+KaQBkWyA0r7o=", + "id": "sha256-JtW0OHrUUwEaHsb03yfoawekOVad+XZ2sl8ZnM0+rYc=", + "install": "sha256-FT0vE0RtmwB2+ArCfbm59mou/sLQzymNvTqogiVpRTg=", + "join": "sha256-KVBK8dBkDM+LijUS4hi7zNsa18hZvJqNS6uWQMvxgWs=", + "kill": "sha256-+4mYRIwPgtQ7BEoK7/E6vXx5iriV3vpk0eNrNI2kNh8=", + "less": "sha256-ku05PfJLk7zICV/ljbzXavHBvnMlitaLcd3uJvfZcfU=", + "life": "sha256-8XQ3CXLLxo7ykT/+jGJovYCAzSEih6H4wnQ26+Q04lM=", + "link": "sha256-MRqILGFYuhtO470TDsIxfQe7NE1GrHjbWCnU2nb31QQ=", + "links": "sha256-Px+ZWWbcFLnnjuORljLehyqLBW3UIuGtEqQf3vnJXgo=", + "ln": "sha256-QevM7NFKo4T79iCOOu6JjAxVuoQHAiSi3zkYf3HQoHI=", + "locate": "sha256-zsyqygY6K+gwbw9Cw7j+JEjd1W4T66xKil7PqeFtfA8=", + "logname": "sha256-if+qby9Pyn2PT53NEIoPXW/xusX5N8TK6lFNhOYEk7A=", + "ls": "sha256-09ABdeL9W/aloHvspUOTk4s1qXPKelusGWs/fI5elBY=", + "lua": "sha256-xuf+7nkxzN/uNIJ8j7adEqf6dvm3X+QT4LeDtRBeoBM=", + "lz4": "sha256-hS8xfK0iRyQ51wndmPpRqC2iJfJzvk4OSPtdBNoDzIg=", + "make": "sha256-oxtmxi2jmEKg2EX4gzBsmikSI3H56Cb4TL5JDLrHmes=", + "md5sum": "sha256-V02adwdclgCCznwYMv8TzulmGsJCj0nY6BbLm9+3BmI=", + "mkfifo": "sha256-Qn7ki2D6CeAj35bXjjdtn8uoTIWvQzrJQgQW5YwVjNE=", + "mknod": "sha256-WuoCTQkW92gL+rkPEsIVekSW3T5jWpLe4d0tkEEVlto=", + "mktemp": "sha256-e4OIGcZD2+IeoysBxEx3+PzbkFxduS3t17Xh6APVTg0=", + "mktemper": "sha256-ukMdMND+GwcBR+OdH6KDdHTYSOc1pKWAbYomyj9ZoOo=", + "nano": "sha256-E8aX3D/XXItFzwVS7UO3tCD2I4gCx9K7oqFjkWC+hEA=", + "nesemu1": "sha256-3tEEU6VMPK8bwloRQ2CkLXD8+icXne+EBdHUtfYPsmw=", + "nice": "sha256-ukGk1uudFSnluQXKEtGsAIzL6JhXe4NaLC53QdcyK+E=", + "ninja": "sha256-6vNW/WRG9QrsaksgbhhdEPyb9VgzATt2AEJj6jlyfmo=", + "nl": "sha256-per3cJdCvbTUMe1rs76QJ/E9eQYfUl4VVPafj0yJFHk=", + "nohup": "sha256-4eCoAypbSFOk/Bgq8jfyv2BPPP78iNLXb711CK8buGU=", + "nproc": "sha256-uKzADOYvOwHwG9Wc7v0EHPJdidt7Vx1CY0ur9QL0ziM=", + "numfmt": "sha256-CT5axyDY1ASWxzGJb+hDVTRiWqU2f8+CSzhehOdR/wY=", + "od": "sha256-Hy0uDDsgdci74s+jI+R2Bkgj4LVaW0djddoqkzTebSE=", + "paste": "sha256-Sa5G8cxyh5Vsr6kkf/wmwnos0KYwIUHNI1/dZ16n24U=", + "pathchk": "sha256-ZjR+IGm8fv0b/hy4hmdi1xuxpoA5A7MR0AnGndlfTvc=", + "pigz": "sha256-KReMrcHfifpjgxeb/k4WNl6ZtgJwfDIf9mTbcEldR0w=", + "pinky": "sha256-ObmAOis790fvuP+YpdxP9cyR5ISU6BB4G/8un3xR4ns=", + "pledge": "sha256-rcK6umgSKLv06PIV+glVDhKgPr79vfIodUEsZ7WyGaM=", + "pr": "sha256-FVC8+/eRiBZ2MHpZNZRHrRMoDFLi4S9NRMVPQSWimOo=", + "printenv": "sha256-zoWUC3FJVC6a8iM2vmiEVNa4mjhmLo76aPkh2TXB+bc=", + "printimage": "sha256-myO0x/BQSNFuWWwDop0ph/WmO8tBsnxuTIoIzC6Xsaw=", + "ptx": "sha256-x6abLQHeAmLQN213aU0nx+4xfZSfWqlYWP7Fe+wueEs=", + "pwd": "sha256-RdIwQz9MZ5PaDIT9y0AY3YZHKYA/tUm8ylYf5RD0S8U=", + "pypack1": "sha256-mb3fmOwEqmunaoKZahHdRh2K8OuOSHFQQIc8Yddppic=", + "python": "sha256-RvuLtLNsExsN10Mipa/ewh1Qr95a0dpOOJ+j3BBht2g=", + "qjs": "sha256-RmszlYwDkeSbX3xZ/0m/yQCgfbJNCflaQ0KHuz1lo/w=", + "readlink": "sha256-3/0q9jntaXuBK5+3+FFiUHfnZhVsJILGRyw9C9jsDrM=", + "realpath": "sha256-+Wo9k1u/CGPqtTKgHDjdu6z7UraE444Ez82h69SIKm0=", + "redbean": "sha256-+zB9iVZklOfgaynLhwQG1qTP+/xUZE2A2UyTTIz9iCk=", + "rmdir": "sha256-olbEjveooS5XCXiLtsvXacsfR1l7AFndDB7XRLr3HwU=", + "rsync": "sha256-bAJZ6fMDcOpiZ9eNiC/KySEoanb8ZnXL+LBgpOuc8s4=", + "runcon": "sha256-m+7V7IWXjMBts1GcBvTn9yLZrekeJ2PnTIZPDPqbHyg=", + "script": "sha256-gF6Ux0AVHv3VK3ynVCDfwWSzCzcM6tbYUtAEYkE/Lto=", + "sed": "sha256-mLD3mRX7R9we3IQpAZKC7c4mF2Nz7sG8s63Is0TkYcM=", + "seq": "sha256-AkvogLBC9nwhq2rpaA1kL0Q4beb00QMrptcxpzXKjE0=", + "sha1sum": "sha256-wDWmXDgJmeEuJUd5ER9ed1rGZRxJMwEe1uR7Jrm4r2o=", + "sha224sum": "sha256-DPOKHJa+e04UNJm0ptGNf79Qpvdf3OCbAlHKLPFq3oM=", + "sha256sum": "sha256-BpxhJqv/rboyFhYy31eq5Ym3eriHcGRqOGDdmbWwAuw=", + "sha384sum": "sha256-Ak4+xM3+eGqXyWVghrgtAo80Fgeo6iXd10+K7tOd5HE=", + "sha512sum": "sha256-qq4HW+6hZ26U/TiN50QPdd710RpiPDjhrG/XfILWxE0=", + "shred": "sha256-7/edcRznrBT9DOKb05J39nRsjJ30LkH9Pz/5QUlsDH4=", + "shuf": "sha256-X1v5hF6yG2zM78Qg85wcENzihXXmMZnBTZNleRCscL4=", + "sleep": "sha256-esGxinA9WyISgkcQ7sPIuC7B1SwQHMXmGTYHOhZvAx0=", + "sort": "sha256-Ar+SpUClNPT5OItQMiiYH7CBHnSoKHa1jjN32BjqMF4=", + "split": "sha256-A5nEGoaZdJ5p1j3s54rgp8/BEoBVakaRE4YAqAMMZbQ=", + "sqlite3": "sha256-IICFVnTkqMZ/c5PPtIStX89WtBnsmIg3z1qfFJEOXlE=", + "stat": "sha256-KO2xc+Vf2HdfUZPh2ItTxfun5CwFNsPQArjJ22fw/a8=", + "stty": "sha256-S2BXpqZxSI493gq3piyCqH3dwE+yxvvAL1WWxRVd844=", + "sum": "sha256-Uoro6aH+YK1IIBditsXeyXhwAlR9vqLnLOQ9K8PRSuM=", + "sync": "sha256-1iFwSaaAXI3pdNdfrMI9PychzSGJhy0UpDCDTwCn8/U=", + "tac": "sha256-RG/VXzGH2MSwHLSQIG61wDmoNR5xYch3+xNbtDUROB4=", + "tail": "sha256-hdbjryLVn6c7MR/XX/UhaOS7+QKLYhrJUo+DsE3Xz/E=", + "tar": "sha256-bK1q+UwoTLgbDi6UeY20FCH3MtJaoRpWV3DHd2U7Mbw=", + "tee": "sha256-TJTxJe2mWPIizG4s3vwgg3wrKjew5E+1wGKRrtx+el4=", + "test": "sha256-djzefI/wv2XCnNfvFpjfTIJVly06qkSAsV4BoV0gUEo=", + "tidy": "sha256-20zyJkRs1n5tzbPTbXPfAt9CaVDsbpGZws8bddOY16E=", + "timeout": "sha256-aasJBcTgrDU0Xs4V4UkUW8Wsle1EdXnPdf0Fymw0Fpc=", + "tmux": "sha256-ZbW548NXsKv7puCJc+hHvF2hpYI7MQvZc//FAH7oTUI=", + "touch": "sha256-Qtxc3zlOZg2B3dXeUABQUcyFdjFCV6WPVQUr8DQP1qk=", + "tr": "sha256-1l1OkCTePV8SDxVQyoTtvK0fHCR9Hf+ebHGh5gEriyY=", + "tree": "sha256-B0m9Z2PoklikdfkbU1QyFsjlFkVzUemLSGmQTC/OL5I=", + "true": "sha256-Cp9RvWCvc8NmfZbMhdDz38cA8YJDVRswENEggHgEoVY=", + "truncate": "sha256-/u7bZBCAYeEeEeST5/9z3pmy6bgP0FAGUaUOED/Rppo=", + "tsort": "sha256-uTgUXY/AU+WyqjwbCR5AS8O7wzN5pROWV1Jp0hmpykc=", + "tty": "sha256-q7ACSLuBRoj8S/6SACtld7x6LC/HbxTjGeY7vu/8ENg=", + "ttyinfo": "sha256-30KPzAvNZ0hGPsi+hFXWgEQhItcB1bvRNJY+cokdcTo=", + "unbourne": "sha256-Q7/iZUHTlmCUQN6rw8cg7V+tb2A8RCDOnRfR9TZoMq4=", + "unexpand": "sha256-1aCgwxoQk7SzJXBlADz3cf/V2vMMcys0MQ3fwaICx2U=", + "uniq": "sha256-A6UVJI2TAChs4PaCnCbjOYK74QvhoPef+7iVhgV4urA=", + "unlink": "sha256-utJGVV1+wC3tQEdJ9kvr1c17Co2ljegM/+0ASl1WlUQ=", + "unzip": "sha256-CuORPmGI+lGcTM34owoLe6NA5O3sO2z6s/u32+52Ay8=", + "uptime": "sha256-m/S29ntFqzWNnInIxt6M+G0bXQVRRJullJ6+Cn0t5FM=", + "users": "sha256-i5UF16OR/uwcu/Zawzk0Qnj8ng5gKbwWcJQ075HRT/Y=", + "vdir": "sha256-iXYsmmp973x1uSnX+4na5G8sHJ5K4Y9en1GX1h8w/Xc=", + "verynice": "sha256-49xc858RJTKnORI8VR/qm+rWmw8685O40dyO3xA9MX4=", + "vim": "sha256-wf8JV2UJG15mrkruoVW5mCYRziO5+mYtoinHR/MH88o=", + "wall": "sha256-yPDUoIdP/jcggElRwyiHqkS89gnVDzBzkCNwJfe8E9U=", + "wc": "sha256-0QcoEnBZYML3zxx+8F5OywXn5KlJ2put3tVTtenRivU=", + "wget": "sha256-Cc6S4q1wHliGSWDZl2WVxDz+9YEdum6tFA7PLvw/UII=", + "who": "sha256-f/7aVNcB5lYIhOpfxiqch8S22b+nI25TrI2C2bSKXI8=", + "whoami": "sha256-71b9T2z17+0j8711Eyw1rWrrTBv39cIgqEk85KlWSXw=", + "xargs": "sha256-bP3uyxPEzbL5QeMJCTtvQPrhpiXut+iHTTeGuOCpNJg=", + "xz": "sha256-gTBKAnJyqP88kGYtlkZcdldoFU2J6VtcQCtfXfhrJDE=", + "yes": "sha256-ZGiA91He1rL0kZKHXUUH8qWmaLly/3QxtKO0R8avkbA=", + "zip": "sha256-Pba62aWW0gpT1wJK8Aa7HWwf3foaXnEUMxkfN8pZ01E=", + "zsh": "sha256-JKePwqxk9+6vQbRdaGA/nZg0hNBn40mE3sKY1ftzxtQ=", + "zstd": "sha256-NBtbg/4vD4sgHfqxK9DiUzdtJgu3+lER8GYZ8irR40E=" +} diff --git a/ape/cosmos/3.3.1.json b/ape/cosmos/3.3.1.json new file mode 100644 index 00000000..8deabb55 --- /dev/null +++ b/ape/cosmos/3.3.1.json @@ -0,0 +1,175 @@ +{ + "ape-aarch64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-arm64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-x86_64.elf": "sha256-fBz4sk4bbdatfaOBcEXVgq2hRrTW7AxqRb6oMOOmX00=", + "ape-x86_64.macho": "sha256-btvd3YJTsgZojeJJGIrf2OuFDpw9nxmEMleBS5NsWZg=", + "assimilate": "sha256-zBP7dVhBaUKyxbSlqVWKjC293c+t0NSMfSYW0/FnV0s=", + "assimilate-aarch64.elf": "sha256-sFEaJLwEYlUxmk3GVD51mJWNETqhxohsbCdqJujeshU=", + "assimilate-x86_64.elf": "sha256-NJ8/URxOtwxNtS4vuZpB2bIIyDw+xoLAV+uvH+X5hXs=", + "assimilate-x86_64.macho": "sha256-GWvXnP+59DdbXNo46VU2WUF+xrzxFXlVZ1wLRdzGrMk=", + "awk": "sha256-S8i3mKq7mEtBZzo1Uu679YqnAWzkikcVdf4VqEqI070=", + "b2sum": "sha256-hybI849qLSwgx7YJkQn7jWLMnagPL2HjvrKm/piVuhs=", + "base32": "sha256-TZkpwZAqSQTHHcRwl88F8haL6d7vm8nzdB50IBU7Mlw=", + "base64": "sha256-5yuKsVWZrZm/uaI23z8UBm4KmrNy+V2iqP/yNIAfl00=", + "basename": "sha256-xKbtsOkcHIi9mW3aI1JGo9H3pqan8hBqfsPxoh3e32s=", + "basenc": "sha256-RWpNzGmO/BjqSz9l6DEdOhFX5qoo1iHDJR8sNiahPe0=", + "bash": "sha256-a5aWfQrsx8zogqy1WCJ/sYEaNlxBbsY9lZVf4VMYTT0=", + "berry": "sha256-9ZJIEqpYwPi0OqU7N8BSAOci5yKcdv9cBnD5ZGzkj8g=", + "brotli": "sha256-Tm3e9kratlJPUF8d/+fIGyjmeBjX7NAkYDyiL4ks2jM=", + "bzip2": "sha256-lqfcO/t/s5f19EUnnV/oijc+iBnvmyblMAEM7FrcRZU=", + "cat": "sha256-zn8YVGvKwuQoDg9YXAE+9nxYM4E8t004mwIyNrqVpbw=", + "chcon": "sha256-qoL4zarrnBVQ+V6+xYnH4XCv856fUS/RxwQuBUGRFks=", + "chgrp": "sha256-GoWZbn/c4+E+TQhqD6lIOMVWUDJnbp6Wk8SHU7zENoU=", + "chmod.ape": "sha256-wr8yeoXHPf1zaytyG67uZFGXXr2P/EQfBDX2BXSEzg8=", + "chown": "sha256-LkN2ONSleTXKvpz/dYlk4m9UJRuCztov3+DlOEodXDE=", + "chroot": "sha256-jZbYqT/TwIpw6BO9FfJ3GxvklpKE0mBBXiNuGSbtsns=", + "cksum": "sha256-hfAnWqmktIYXHEiTaKWQL/fDXK7bnHQONkRKtaMd5J4=", + "clang-format": "sha256-t1/HDaTZ/klR+VFONNcqj5uxgIm37dafKu5Mp99ecVQ=", + "cmp": "sha256-8KPABEMCQeKSwHulagH5f382QOqkVpFp1Y3mohbcHk8=", + "comm": "sha256-uh4mLvzwY0QmCT32SRL/f0ubzXfszKpvb2ZtboQrNIA=", + "cp.ape": "sha256-uGcAdLFNsJ2iRWGfWkNvDDy8tq8ZuILOxPSsYAbRRWQ=", + "cpuid": "sha256-wAGvPA8axzW+XJ5w861q7IV518W7WMrZ/tbZ0Z78t1E=", + "csplit": "sha256-nLz8hfRVZDGz/UVq1/Ge0j4Q06eSLgLxu4aRexwEelA=", + "ctags": "sha256-x/101oqxSvgRoQ9N9+sZkuC7/tV+zVnId4Jo4gX5PIU=", + "curl": "sha256-54mSqLkXfwMSRZtPa2w2T8XuvE12o9QxJRQYmOGn1YY=", + "cut": "sha256-FDcHrxJ+CjkPOYFD/F7F9EOF93TKbU2/N7CHP8vte4I=", + "dash": "sha256-AMQZpQl5cfVZ/1vZAn/SnuSGC34CkfPMXA9tQixE/zM=", + "datasette": "sha256-hUDSYI+lpEhVX6zhFnNHu/N3bNfDeWSJQjkAzcoYCjA=", + "date": "sha256-uNP3r6CkyURYW7vH5rR/FXMQpoBgiyW2sTn6qUEs0ao=", + "dd.ape": "sha256-YcnILuHRDjt0KO1eK92RWERJ/kINYz984lmfSZxubFU=", + "df": "sha256-VtOW2S2dzEAwP/5B9Qj4u/qZndNCo0lJrSqWX7Sd6vo=", + "diff": "sha256-1ZQPcT1/LLFKJRq8K1S7sICi4VumBRAt6FSVKejBDek=", + "diff3": "sha256-ncg5o4aApr13g34awJ1oI4zfr9WqTq4JKCkwBXbWmF4=", + "dir": "sha256-oNxnS6F4pCNMedClbW/NFRRbP1XAwsdZpGJ2VsXug0g=", + "dircolors": "sha256-ASzE+h3h/0XBA4vrOyPSKptSE0tJEpbfFtMN1nDhGa4=", + "dirname": "sha256-EMAAvhNKylQI5YR1O3P1locWiIUpclMesgKAu9UWNec=", + "du": "sha256-XeQC8BcRZjuA+BCb+JRyRe+6wN3m3iVWZ7BIBF7guvA=", + "echo.ape": "sha256-Fq/mSx5iToZAUnUol34WY2hpxCJQniM6ZiKtxAzfAMM=", + "emacs": "sha256-DLJvKJfmHsrzgD7083fWvp3RFiUMvs3lvWk0xLH92z8=", + "emacsclient": "sha256-6hH6jn2pBX9VsoU4v3u3Xol4MR/6vskzIOwvOhMH5M4=", + "env": "sha256-Lm8iE0YBdvYwn4RMAyqiLWbVxqaEf2iNWilY3PPAGN4=", + "expand": "sha256-/hCOZX9bhwc5SjWQ9GIWwbcPCozCUWUKa/iuDv/ih2c=", + "expr": "sha256-31jw0oaJRgL3qHsBhGDc0TEuSNoAiBH8gyjzRzz87UE=", + "factor": "sha256-me2S4CN3G/KcERW/B86F9MbnvuQg4jaNPWoH4nUH7mk=", + "false": "sha256-KuxblC3tmFtyDjUcdGIag/UVdOGhvxtvrJkRrP6qyl4=", + "find": "sha256-7h4OC/Lz/iD7WkTxmvmSZOflw/E6gTMssKSz68qPCFw=", + "fmt": "sha256-DB2vUqeSnUryfZj+qibUGKMs4Abcz6qzM3w6lawptsM=", + "fold": "sha256-TdlGtv30nM28eoUXx9jjhAf7Zj834R0SHz0yfbcrWio=", + "gmake": "sha256-3J/jjvnCUMTfEyRc5RsxmVJw0jpSwmmzrEFO/u2/pQ8=", + "greenbean": "sha256-jZ4Oj9zhG/UUB2QmhMdDsx4fTdL8/0xvBCHOK/rGSys=", + "grep": "sha256-geISCmpxm4c2gwPnR+XjF47+j/mw2epm5qYEn5Vrvok=", + "groups": "sha256-64yeH5wPP7omE7VfLLH8HGWjyE7zgdzMF8oLpVz+5PY=", + "gzip.ape": "sha256-fLhh2zULCabpmmthArIDpQvaYKc3LPPSCct4+/6wBSw=", + "head": "sha256-Lr5xxWMwjZjQUh2ODx/zDzTO3fx8Yw5694p1t7zG0AU=", + "id": "sha256-8JUzzmsMkhu2sc9w2I/nb8recinaAamgGe7JEQh98kI=", + "install": "sha256-Iu1sv7WjlREuCQp3mgDxFCRf0byn5beC8JmHjWodb/M=", + "join": "sha256-eb7PzIfyziQZ8LeauwpuES+YKemu52jmt0KgJ3pAzks=", + "kill": "sha256-l4b6fMDZR4yHnP1ZpRVL2KfCOgbKDHZkUzo8wlZkMUA=", + "less": "sha256-pysLPyq9zi5gTcj+UTu41PgZsRnUAdYzATIUMiMEsQw=", + "life": "sha256-ui3H0RF4G0JHV9kbDIy5qviR+mKEN//98jHfznq8tO4=", + "link": "sha256-HFtwRXzP/Z+pJTM/Yz7+AMXumO46HmvGGfsHE9vUox8=", + "links": "sha256-EEOqXakHybI51BOxnBCHwLeYlwF8iSSx8p3Gxgcz0Qc=", + "ln": "sha256-FtXuVwYLaC/DT3LPF8coiSMCEOmVVorVzqBYDDRtjyg=", + "locate": "sha256-ZQUPf3kqvmik5citQP+wJiHeOJWrcX4TIDLytEuRyyo=", + "logname": "sha256-IMIHQygOJnWQ2pPMqcFZwKURdNAZM5onxESxBcLM7kM=", + "ls": "sha256-Fno6FUKMAA/8Uk2rsAauhr/b5uqeZcs2oAy+s8uHx3w=", + "lua": "sha256-LRYoHAQg+M8kQKtX6gCjSvD4b9puEbTK2t4z6hyVW8I=", + "lz4": "sha256-ymvYKyvlv31C6tdLYCVFfhaqvmZ5J37RDbxeGx/6rrI=", + "make": "sha256-98atSW2fzibEFrcpFy77A7IvnW0TtMEbeMKxicWb8FM=", + "md5sum": "sha256-1lNBqdyji+ttmR+4sIS6DXcJs6d+67gF0+Q3bUqNaIs=", + "mkdir.ape": "sha256-mt2EcyVG4+Pg7C0HXbGd5IIRtoZ+LEqX9c/kq8DcsQw=", + "mkfifo": "sha256-Z/dfvumWh0v8wr0l8ByZztaztwMkfekaOXNVnFLVxEk=", + "mknod": "sha256-C7rFuRsgVIA63trDx8rTpFGJztXbNAPMtNuqbzGeqdw=", + "mktemp": "sha256-GihMOG1RDJHUqphmOZPwkfEaVC4jC/X0kCRskpH09u8=", + "mktemper": "sha256-WreRwEGUss++hwxb+3Cttu72Voe4yi4E7Xyr9soCXps=", + "mv.ape": "sha256-jB7HYOKnprY6cyRiHpToKrGKW4cPID7gVUXWYi1tmlM=", + "nano": "sha256-trc2X1Jg1JTviP+nbelsQvtMmgrh5gtF7fEijdDvkZY=", + "nesemu1": "sha256-JOqaQ2aNcGoiB3YdX2zLCGGD8kFr4Glv3PLPVej/nwc=", + "nice": "sha256-+fHYlw1WIDX4kCzoTDYy5tqI/BdetF7WlxkJCWpJlrM=", + "ninja": "sha256-MdTFCVaBaiknlbcAXEshhc6P+QDEmNLH6NOt1bGbbu4=", + "nl": "sha256-y5a/fgKdjraA7e+RUKZSh6BIQPviZsxu4720/yPzGUI=", + "nohup": "sha256-sTiFAUHIl+IF6N8wChBjYZj3NJg4vN461JPY9T1peo8=", + "nproc": "sha256-Dydu9oowmpkajx9rq006f5I4Z0BhP6EJv+S0xEjTRcU=", + "numfmt": "sha256-7VTO7GYItNhcoqC7qixlY4dK7l0TgRFRBivCJjbls5Y=", + "od": "sha256-RV+nBJ885wCxqLW8+UOEm3rQopQQhQ/rHuHJYrhZiYA=", + "paste": "sha256-d37G1PptmT8DvFYb0A51tHRAONW3k2xq4y8pFnbR/FA=", + "patch": "sha256-dUVoOS8qaaVAsTlHp5DnupNPB02ZBfVBYUNoFEQVfY4=", + "pathchk": "sha256-qjcLXvmgW3bbARJqpE5PF1LdaVrvnQZVsmBFgTM5/JY=", + "pigz": "sha256-pvWipO8MGunU157lNj5pkNwMwDYSUFjtx7nWoNxBDw8=", + "pinky": "sha256-cCtYw56s7y1pYOCm/PNgp1Y+pgf8K0UjVVsikUIoJQE=", + "pledge": "sha256-eaFRVXB2hGp2o9lYNSP+bb+sxOQ04bqCU2mDEmSIRN0=", + "pr": "sha256-Cd292alJ/36s1BOyfPj+SDDCuMGsgduzsjHspANOguU=", + "printenv": "sha256-sCxezf/rJ5S2Yw9ELAh8TD0MCUKhTjdwvLfHBVHUiyc=", + "printf.ape": "sha256-lES1AJ1YXEsQN8At0yZvM5w0JGsJbfN8jGeb+n3i688=", + "printimage": "sha256-Q6HlaWrVneltekJ6JEceoU+yFzN9o9xpkI4UVwSXFrE=", + "ptx": "sha256-Hv3T2mhutoeK16lpWmZ9f1pbKnJfu1GGc4nCiwBwJ4Q=", + "pwd": "sha256-beUdC7B+HkPJsGjf/isqDL3QQ1gwypLBf32EC2tKa5g=", + "pypack1": "sha256-492wiVHg7chVDxUrir3pOrY1OZ/2h8uKBwfD4gtLJuM=", + "python": "sha256-CuebA8IWxuoYr9HjVgyMLqf0kx23/OGIcS/tAsvPm98=", + "qjs": "sha256-dgblh0J7T6VumjgCrL0PPJAUIzrqGFw9oqoYSO+g39o=", + "readlink": "sha256-n/FcF1jTFHmxvvh0UZeUbJOzse0mCIYEi7nFM0Wb2mg=", + "realpath": "sha256-0SUHEaSMliLf0BRdXaEAUGbwAAKXEV8M7f/xnBmqPPE=", + "redbean": "sha256-b6+KyGmVKmo6iiSUuhRrkIMQ9Mnr8ZqZR64rxtg4BBE=", + "rm.ape": "sha256-pqJTHikQR3b1pSwEcvMaS4SVmHqqUP2k6jCeKSUtDI8=", + "rmdir": "sha256-4yRCV2b4p4im2dCQka0gp7qbdbG0d5OmILbAErTEsF0=", + "rsync": "sha256-IpC+6WKlj7EqkYxNXXDdO7IaF1/jTItBvlSKr0MdNIk=", + "runcon": "sha256-y4OAxP6BQPy2+Rk4qFtStsBtiwOlZLlr30Un6Tt8B1k=", + "scrapscript": "sha256-Mukzd/HgwS54JouHt1+f0FzhMISbl6ecE5ERk+3ZDf4=", + "script": "sha256-He3EhRTNYIFHfDShoR69EPZW7USl/7gSM1ZB0uk+ie4=", + "sdiff": "sha256-V8rMT2LlnNJ5nQDA+HRVtYBWeoHFCko3lSoyJMo/UTE=", + "sed": "sha256-7z5mtxxjLL9ebC4V1cOpPjzArSxs1cIEsKizH4WPt3E=", + "seq": "sha256-OVOPZyBJJ9rcf1fnIU7ZvJuVTXN89cfXMGYGU1Es5Lo=", + "sha1sum": "sha256-2cL2GKl26qqr+FB3mKjhFPaIzPXCzxBiMfPOBYulFp0=", + "sha224sum": "sha256-Dk9BKP17F/la+gPizCvGjtTqa6/tZT0gTrp1vrKInbo=", + "sha256sum": "sha256-WIplUCNmB7rMDb3/LvrqwoIHaNFw29Etvu6ivX2kCgE=", + "sha384sum": "sha256-nLx1jTqjwSnhWO6eK+heIWHuterKu3B04nYkrp9Shrk=", + "sha512sum": "sha256-y8UewGoBGDMfq2wKHFijVN+NtWKLWZDPOAVQBIA7mSA=", + "shred": "sha256-i8AEctRrGsvRs8Ly7XmK+XpgiZeQVVjIhQ7ie/Yy8yw=", + "shuf": "sha256-WIdP7u66G/XFPDgyCpBihZBgijdeinfBDjARp1K8QXk=", + "sleep": "sha256-gtC/7PR5VvzgxL4FwBJ6VO6b0DN7uBYUc8oQcMeKHWY=", + "sort": "sha256-nz0/ivLwTYtnvl4Xpl456rDfRickgpukdzdPFQy7Bu8=", + "split": "sha256-LKP1sD1cxx+lTlkcxXX2Ew1w3ywOeIoUgnLbZ8ase88=", + "sqlite3": "sha256-MMV+VsI6iwk1U5gATzJEfKqFTRLcNjE6r0TSAmT/3O8=", + "stat": "sha256-VX1GgQICdH2+F5mmYc4WI7G4OT5FFI+Zy3fRw45aypU=", + "stty": "sha256-pBDYJV6K2WuiZTqTkHusvezMBwuf9WeBKOYA/CVyuUI=", + "sum": "sha256-V4E8YCCny/DfQ6vaSupDsQpEF8eF265jIVKiffjExD8=", + "sync": "sha256-92eEiTPpnGEmb1ECuvSXMrAjY+mv/DPP7SMEokOIWNs=", + "tac": "sha256-wCJO+G4bdaTYMzOhZK0CqJbb1fEOmUTAgUrs/yKUi1c=", + "tail": "sha256-25wCKN+CWbZI7/zvmviGlkz4MN6R+mhScVo+BonuDy0=", + "tar": "sha256-veeG74pMzsCwry2oKhbXtrODNLikp7S0Wv98vaAgTlE=", + "tee": "sha256-9nv7tmm8AZfZEIflRNwZz01qDR32aMkbAfhBQTxSgZs=", + "test": "sha256-njjQ967LtdtyVIr2LHLwNZcDjCh1ehqjf4vd4qs1xOY=", + "tidy": "sha256-lDaweZcW7rqo3azvmyGRNoIFwH6QfBX9hTtV5XgZMkc=", + "timeout": "sha256-/05So3XYe6Q1ZaLlg3CkexkMWeePhlCnfiN3FWj40q8=", + "tmux": "sha256-8bdRHrTHAxbBe3jxvDWasMBTt9B/z/I25PZ/7BX8GlI=", + "touch": "sha256-zhFuIvzfkzMi3FTIOumqd4GtGEVJpP/wBeU7/homOPI=", + "tr": "sha256-IiVcClTzSTp1JmNOHSlcIayZvNHbVY42DnAE8/0Qesc=", + "tree": "sha256-cQ8mhq2xdF49vJUc7FloZUswVn72LJDTgxqtRoKCsiw=", + "true": "sha256-hYaiwy4ndHtQVXkue5IZqX6eGTEIG5hF9dFiJNwy0hE=", + "truncate": "sha256-WBM53lBcudr5o7aZXSFtGMAtTDOiTO5mzJXu93LKD30=", + "tsort": "sha256-UpSUFlDED5YslxGn5tffiVOo+wXCkrHIcxn01I4h15s=", + "tty": "sha256-yzZVpirempT1e3VfLqW/wh73Wg/MO9liJDJLRFqzOmE=", + "ttyinfo": "sha256-80TSpREUXO5RJzkGhTYbDL1r31/JdiQ/9bojc0SJL5w=", + "uname.ape": "sha256-C3SggIVtotuyaYo/xQchyv0p8cQnXlyRyVAfnnDA+QU=", + "unbourne": "sha256-nXUhnAnJZE2ibUTpzuPRuo3ZStSR5YsizSyzPvleEEg=", + "unexpand": "sha256-SyirSgmXz8cG1TAs5tZHbTIUEup4TobeFXKHUn8g1d0=", + "uniq": "sha256-bRyARZw39jAZXgyGVm63r2V7r+xT3L4d90kAYVlDAZY=", + "unlink": "sha256-W4J4XLYs4yyT+7872Fv8RbOYtAlN62r4fXU83EXYZE0=", + "unzip": "sha256-QDT5UL43QhBK1pdJvCJdpyTMkxWQPD57wAkCziGcYP4=", + "uptime": "sha256-faDcCqiIAUWbsKqZdtVDIRgvV5NCmEGT8qxMzR6lGOg=", + "users": "sha256-isx4kM5na0c1MAcDdCcTnEIVB1HBCFKy757f47UD4tA=", + "vdir": "sha256-fQcjUl1QVmkQ4oyDkiKx/y2V+r5BDMU1oFf3w/l+tmc=", + "verynice": "sha256-S5D4PmAPPZ1WmQZmCAWFuIt3XdUHQoL9++LV7VTYtvI=", + "vim": "sha256-onKJ/dqER14qtN3DMg7U0kU9EE1qvy+d4NyDl27tdUY=", + "wall": "sha256-Fx/k6dM6iCdaKuC56Q2QoxhMcC0LaHacZRfT+EWTHHA=", + "wc": "sha256-XRpXEGIZ/9Ow5IrHP+dbo5dc1hHqKZ1ewqJLM1CX9bg=", + "wget": "sha256-CHZFKvpbmc5AmpkazKk0H0MeYE8wTl7aANjbU9NKDb0=", + "who": "sha256-W+CBIPsR2NBc6xXbom6zyzNCvHKmE+py/iGlX5ewNok=", + "whoami": "sha256-yjAXVvBgVSkLRpNve2AC9srTCSdieNLjh63wFpgxM88=", + "xargs": "sha256-A34zn2hiDh2xMdPY82s1ghm/xzDUEXqxy6IVqOJv9vY=", + "xz": "sha256-84VVLEvkMFVKsNTKX8IZ90XAqebHofJ4bsy3J3f+Xe0=", + "yes": "sha256-J+N2zXEIyM9SF5Xqmpye6hISJi40Xj8343AQUL9jOiI=", + "zip": "sha256-hxobwz7sl7w+NmS45mBoFd0sVSQ3haPeoPW5S7WBUN8=", + "zsh": "sha256-zYH33XZzUvk6v5DiLKe5lKTKx0IsRW7zJWIeQmhM0f4=", + "zstd": "sha256-UQRCbSiHGWmBr2qsbnsCGQjIyhZG2ilfx9Iyxv6KbzQ=" +} diff --git a/ape/cosmos/3.7.1.json b/ape/cosmos/3.7.1.json new file mode 100644 index 00000000..0a82ba82 --- /dev/null +++ b/ape/cosmos/3.7.1.json @@ -0,0 +1,178 @@ +{ + "ape-aarch64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-arm64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-x86_64.elf": "sha256-fBz4sk4bbdatfaOBcEXVgq2hRrTW7AxqRb6oMOOmX00=", + "ape-x86_64.macho": "sha256-btvd3YJTsgZojeJJGIrf2OuFDpw9nxmEMleBS5NsWZg=", + "assimilate": "sha256-x+QFHsl3qS+jYjho0xxbJeBp3O6uL2wnKJZKEoDEw1A=", + "assimilate-aarch64.elf": "sha256-sFEaJLwEYlUxmk3GVD51mJWNETqhxohsbCdqJujeshU=", + "assimilate-x86_64.elf": "sha256-NJ8/URxOtwxNtS4vuZpB2bIIyDw+xoLAV+uvH+X5hXs=", + "assimilate-x86_64.macho": "sha256-GWvXnP+59DdbXNo46VU2WUF+xrzxFXlVZ1wLRdzGrMk=", + "awk": "sha256-PiOShImEzzvOu2+R9k0K0AdyMlr1nnT3cJ7p9cIHXjE=", + "b2sum": "sha256-TrKBzOCkeaNUsddSja41LMcFBTesbSsqpYnUfjNsYT8=", + "base32": "sha256-7Wn4eKnZPrtsJKWTL1u0HeY63JkwvuWaTf54/+6oo3w=", + "base64": "sha256-CMWX3B4d/BW1QFVTXJZk0/i4qWHsjmx218lkhVa5cyc=", + "basename": "sha256-IU5SRGkrC5s0wiuXowmyMnpxRger/+lri50bLu+9/W4=", + "basenc": "sha256-Lo7PPPjsCdHLnS3ZXFHA6cBJxl4RHoAzqGG43/tvQVw=", + "bash": "sha256-s2mO/u1+fRTc7NjyuwnBBFpmFQsfMUolvlwnD4mAA6A=", + "bc": "sha256-wrI2xeqeLnzCPxCX9jG1TV9ARPE2PrHpse5AciFb6So=", + "berry": "sha256-zYXC3x2H+BVSMkKl3lHuU6YtGpcfkA1C/po4gJEFbVU=", + "brotli": "sha256-kFHVadj7qO8fa++DoRfo5mF3yRQfEzwY8oYmAkNrZWU=", + "bzip2": "sha256-kBAQdR6JQLKqPepHDOKFedVxhY6djhlzdO/ioQVriqg=", + "cat": "sha256-iaqHF+splIN98lPFyBN6UkLaklBaIquFgX+cnF8l830=", + "chcon": "sha256-Kzs3JDn3lGd4KMEc8b/NaqUIT5QCSSqpGU8Z9i1pR04=", + "chgrp": "sha256-wVPuS25JuvPsnRfDwy7SUqdS9wtM3tnNFmMKvtv1IwI=", + "chmod.ape": "sha256-Q1xECBpFyIYCDkcqQ+tUnTi166LC/Hng0pWq8h/Nna4=", + "chown": "sha256-h08zDAqTb26lDxnjaO2QQJQMA6a8WjkCNqFLW8+x0xQ=", + "chroot": "sha256-u/W5RQbAT8MMZaZ0755Kr779zDFEAZZaJg4ccHaDcJ0=", + "cksum": "sha256-zdiwW+Uzmd5nRPg33iL/t8MwMgThvFH05XxkBZFKrDI=", + "clang-format": "sha256-t1/HDaTZ/klR+VFONNcqj5uxgIm37dafKu5Mp99ecVQ=", + "cmp": "sha256-7zg2xAXwOgGbHZcQT5BKEXKC5HnSvgFcshKcwt9r0eo=", + "comm": "sha256-JKgeaH32IXUsNSJsImmlhixKaWgSS1MuY7xuBadWVWE=", + "cp.ape": "sha256-8+ioU1winJ0waEUPBvFPEwCtnTJnhOjIjOS/knCCU1Q=", + "cpuid": "sha256-wKcRpoBRuDBkUc/kZ4xc9/0NglwuOqoH5UWSmFnK23M=", + "csplit": "sha256-c2HGNGUV5pcT9L1I+YpF+03zCXd1D6YvyKNmgyO6THE=", + "ctags": "sha256-MGiJNJzEAlK7odpF9igTuPdX7DsdjV2F/QZeg2NtsWM=", + "curl": "sha256-CO01oqQL/e8THjI+IUMI7IXQlrBR2Y2R46gGWHnHtAc=", + "cut": "sha256-pwryW/gZrXVk8zEs+MNjzyK/Rb2CrbyxfMsGM2MbGhI=", + "dash": "sha256-5bVTl8JjEtM3SrWi+FN1v1ujskxlmKSN69kD8vf6Vi4=", + "datasette": "sha256-PzZY+pMnE8+d4P8BZUi7eLezP+x8Umsy2U7xj+QMuU4=", + "date": "sha256-cjOSAN46p90Df/2wz8sNqUDiXzJW1qO9RaqnA0xWxMk=", + "dd.ape": "sha256-5UAFsJ5LaSEX+aqv1jrk/T6OxpHbprE5i7ZYV0ulYg4=", + "df": "sha256-xTsgLo5CQt/5zRilYsLZmDloOMIC+IndGeDsnNo2XLQ=", + "diff": "sha256-LNhyxlYcMaGJ9nALEl88adOXLButi4INTHyV223qGo8=", + "diff3": "sha256-O51KFif+qTkNuExjKEX2Isyc9JWMoZI5hPIlxheNq8Q=", + "dir": "sha256-+9rM66ovQ+tQjs9tEd2DWBIugHe3nVNotKD+yhxt31o=", + "dircolors": "sha256-HeXbmGM/Y3H8HdIM6aMUijIGudJsu3quDfXL9Ik6NQk=", + "dirname": "sha256-OBGImE8XvGfcxIpDJ/dF+eUSye6bRqYkHrCziPcbU4U=", + "du": "sha256-RW6WRDazzwOBI6081Y4LZ+6j2uc0hIBeX9s/ZBS++VQ=", + "echo.ape": "sha256-jWC35ahFQvRjO0uhLCgt4jnyO1ZgLtF5yDiXFO2Kx/I=", + "emacs": "sha256-IySVf0e15ywmGKV5UVKFm6nmNMMDhk3BuzmmtZKuceI=", + "emacsclient": "sha256-nEykFz15u4uryFG3Zf18smsiDcFiplml5WudESjHrRo=", + "env": "sha256-j2a8SGrIZHhJje9aRsmMnQokzjE2qtQNjFX1hBamyaI=", + "expand": "sha256-Be/uWdzKcuXmQ+vwbALRxwjtqQ+bsG6/NeOyCfQVask=", + "expr": "sha256-YkaWuXbndUjCcxA7EDvQ/ppES/XJAmQWRsc+6LrhIhA=", + "factor": "sha256-zo4zhzl2vTTBAL+ExDoIxu4VjIyRTgZvcPg6c7sCft4=", + "false": "sha256-KZqfrd0BLNhoZn5EvdyfCk2eib65MDy8cKA8J1tPgEc=", + "find": "sha256-uBAQwdFN5k1iNYoSj9HheP30ptebbBrxbS3DPJNbByQ=", + "fmt": "sha256-WhcItBIoGAkjgaZ6e2TcfOoBZC2lKCcFhpSfyP5p/A4=", + "fold": "sha256-oEg8o2bbU2TolIjizOYQWaoRIHFQiKv7OTcPscPTjj8=", + "gmake": "sha256-C+xPo5b8yskTLBZpnMili3TlSCb74/kDlDWGXyFoMeE=", + "greenbean": "sha256-P3uA2rP87pXaytqVsrnyHUcpMGzlz4EnKe5VxnN2jaU=", + "grep": "sha256-9YIyw29q0DZUOxJvzFa51DD39vlsr4Ejd7XpQPe443w=", + "groups": "sha256-rCOoPZoB1oIeyWyOXgE0b+L8mhv3tDNP4fqmLNQuZPY=", + "gzip.ape": "sha256-s4JO4E7BeTOUdzMuLEPRmW4QDodtbuscYZhQR2OjyEA=", + "head": "sha256-lXis1YA7kIXODBDOojYBfVQ4D0TtWQYLhZ6iL9q/vCo=", + "id": "sha256-yA9Nj0DusOHy8nEBzAHKUQeFlRdpqZtLqvbi66JWrlU=", + "install": "sha256-Qocp0AJAl1Tnm+gEYaLnL2PQ+Iz4Eg9wvdSsDU3oyH0=", + "janet": "sha256-qskdZzx5g8G3mFiy48isHMYVTU2O8LsxkVgH7Tswh7U=", + "join": "sha256-O1m7i9RAFxLZLirlvVle3R7nrCM7O7DaHUGW/BdDIlI=", + "jq": "sha256-rxpdzigG2nX97rLabgEXpFQNYI1uatcnz1suDTRLhEM=", + "kill": "sha256-hnQL/qh+uLgvgJVKs8MY1aKqVMHhR+cPRBkcNkztXc0=", + "less": "sha256-60FEOUh4bKXuf9yNKYPQFD5XFTxSkIfGSBdSQNroS/4=", + "life": "sha256-L8gjytgadSZu/CR32m9XH8CWykHGWhrIHiPaUHxUSyQ=", + "link": "sha256-l7GKrbz2rhRORMZbEOqEWgd3WFfs/Jc8umv3AxFC1bE=", + "links": "sha256-QE5AsVCI8zIhrgWrWAUGIjqr1vwYnE0B7GT4Kp2wLVk=", + "ln": "sha256-KwsF0B1x4TV357FnU2rgBpkTehyJ1q+T1Hb7R6BA/c4=", + "locate": "sha256-2v5XygbHC3trjPe/kzl/a5uTNrjZVTfz1o2Fn69O7O8=", + "logname": "sha256-aWGmwv8y6zHr7QbCBEGZXGzaQqr/toBzj7OyuMbIFg4=", + "ls": "sha256-EfOI6SFZvVYArbKFcfKUKqg5DTRsstdA0Dq1HNCJ3qU=", + "lua": "sha256-/5cXknboTuyZqgUAheLxXmRtY9XSb25cse1wFFjNk2k=", + "lz4": "sha256-PFx+fDvlUnhL54BQgtEuIeRIadNjR2hWukUkpyFt6bU=", + "lzip": "sha256-Wws/BLD1fyoBMeVJSkzurH3YJos3ZjD84Zt4BRJ38nY=", + "make": "sha256-tMO2mNneT8sXwqiZKc7/uCKZ2UOyTr4nNSLrJLfttuc=", + "md5sum": "sha256-jX70gTagi/lSMYBoxxqp42o9LEhCxORVbMtRuPaUmyw=", + "mkdir.ape": "sha256-djlif5zZl7ociZlF/0NaiP60kRDOTTS980cxGBRJSI0=", + "mkfifo": "sha256-QpY9VZ2D6rVYMoeZEGlDngWWYvETxwHDXtbX6Bf1Km4=", + "mknod": "sha256-EGB0N+L84vGnN+yPkmu3BnkcPBSTGlc9iOjL2UIKBj8=", + "mktemp": "sha256-J5p3mYE5WRqIgjBZxDntj22AbpCCyhcT9HREuXV8IL8=", + "mktemper": "sha256-XFEfUwhs9mu4y1osxpfpOSgSbUUEP07ks6vgqSVlXhQ=", + "mv.ape": "sha256-4k6/zz5QRC2KP2n5/bEv24Ko+ebUT5a73L2sxuV73pg=", + "nano": "sha256-YqQLjI+pz0Bx0399iAJLMB6+k9IrEArw8MqwRFWOR00=", + "nesemu1": "sha256-UiWfFm+px9oSPOZOfWHz4WZZUyieBSde9Y7lYqscfWk=", + "nice": "sha256-8DkKoJs9xYTJpS0A9+SRFS0s67I9YfcsUDXCAmhMvVc=", + "ninja": "sha256-UNQAHco+aKm9fqsO7n10vyF0qYVIpYtxNqYs27P/9Zw=", + "nl": "sha256-V9SNa4NXjc3KFY4AAPkWQA1RCzPkOhEQqqvz3f1sAL0=", + "nohup": "sha256-2pBFo53we/mbI9ruzWIkywp94SxZDdNOSpWhV69bDyE=", + "nproc": "sha256-KfKKPfUAK6j6DzSQwdgm/6yuXl9f066N2kRvE/o2a0g=", + "numfmt": "sha256-N2z4bSxNwaCzl+3EiJ0TalTMvICgwPYDj2WnnmA4KE8=", + "od": "sha256-n1EJ7s9h4IlbehGRxXJG2pKznTyMkNRZVh12SVmo6IY=", + "paste": "sha256-k+f1ri+vXgEAMzdNILQzy8x/zUnB8oLFlJ1NjxcyjNY=", + "patch": "sha256-i9HGSs650eXHgK5SUdoKPrHCjaFt9QqoMIbZM0prB/8=", + "pathchk": "sha256-zkQm8sad2E49yUnq5w5kPfZGJzUw3zBn8+px/FaQUBs=", + "php": "sha256-3ZTstXN62aEW/gNcCdf12tT7QidC5rN4voTR/aivAv0=", + "pigz": "sha256-n5rEgV0QrG4X8UQW6L/H55U61uCFsOced8+RP61S/Vk=", + "pinky": "sha256-7kbCtFSv9O5MxBQ2dlv5VaIiOZAJyOa8SFTlkJr64SU=", + "pledge": "sha256-cFwuCvq3IncQx6kb315bxnNl/lIUfKc8gN/IU+j1EAw=", + "pr": "sha256-IjM5F+Lh7ebuoIxjJCqn4yz6qkDPx9plrYvl0KCGULw=", + "printenv": "sha256-wBxvMOxzo392/M4gV0YD2GzI5Q4ymYxsAbsoAQL5zAo=", + "printf.ape": "sha256-tEvBob4PXlQ70HFHcD+m1DG27BQ8UcLy9Wo7DRN6txc=", + "printimage": "sha256-8p+VqLEbvXDW02N1ESwggkB59CpyCW5PFMi+d0UncAU=", + "ptx": "sha256-sYXTprxPH5gCs7g+gxVurMn+78nYsZ0FXIuf58MPP/c=", + "pwd": "sha256-hPcozpA3HcPu3pTfaYeAA1qnfoTEwXQ8hIQCKiAm+dg=", + "pypack1": "sha256-s8hepPfEr+kF3ZfB1g6Xux/2NDgC0eegFVBzUr7WAvc=", + "python": "sha256-lBG+er+uWn+jZ0Roa4tsw5pTMoQr73SEeioqvXmeJIk=", + "readlink": "sha256-XhCpnWcaDbrSaDiEiS9h4CNrbBjUd68YoTPMJsfgAsE=", + "realpath": "sha256-kZqQKF7DTEM7uy5tYwaxFB2mdews5yLSOKOKA7gXA1g=", + "redbean": "sha256-NxcEyoSdLqO8xpGzkVVlqM3ts4faX0dh0ZKaX/olfr4=", + "rm.ape": "sha256-IL/aTd3nIpSXAwqp40bf9COzAuWIxKgO4kMsgOf9aFI=", + "rmdir": "sha256-ApDRffmoYTrpjaxfmoyclVTBguDgy8tIEWfMeDGQmgU=", + "runcon": "sha256-ObiMxp7eh2DgOwnv49LU+RqkxNQ7nSdpKQha0XzOWyM=", + "scrapscript": "sha256-BELK6XOdJt42gvwxeKILccLgTuSdCmOLDUnsQt2g0V4=", + "script": "sha256-u3I17IwawT81h3gKPJZQR2VwhN+96HSLQ6zP7M1f4OU=", + "sdiff": "sha256-J6oSzHOdOqXrgcMt6ZsbGQEskRLyGe3zAyM85H+ctlI=", + "sed": "sha256-icpkHAOmRg/2a/1AQwoot/h2AnvgYVaU+tClvzb5ztI=", + "seq": "sha256-d0yypk3Es9I+n9YT5jSz5SPY4VOHsJ8RBgN4d+xv8MA=", + "sha1sum": "sha256-zt/dnqgiviQCXjFMDakN2olRVJNKMG3+ltB87h//jZY=", + "sha224sum": "sha256-S0QdQ0Z94hiL3sr6c6U0fOrCdCrWFjqRsQ0xuq/0fQk=", + "sha256sum": "sha256-Ek6NepBpJTQMWW9MuM2IzFnDiCEIP8300d5nkumjSr8=", + "sha384sum": "sha256-ehLWdCUgB1mVnv8OBdG+BZlWoBTfLUgHttxknsTEPb4=", + "sha512sum": "sha256-kHa4fp0C3CCN2+wD3SrSVUaxRIWWhYGBI7UytEzMcOw=", + "shred": "sha256-xioIsrk5HHwT3Mcf2CWhPyJnxl9z3AFCLsxS+b8kuRo=", + "shuf": "sha256-fI98jKWCZ5MgHpELnz/lHJy+VrIWf80nKokoY1lfmB0=", + "sleep": "sha256-xuzuadvt0AfjiJyTQWoKLoQM+oK6QfGT2n4eGMa42Fs=", + "sort": "sha256-2ZhQUCjqdJ2tZxv88NLBTMjyHd/GtK4aHgr9zEMN9E8=", + "split": "sha256-FzzJgL/jc+gMwChdKi2zA8sSefWPCp/xHGukXJ09W3E=", + "sqlite3": "sha256-u8e4EAvy2OkPwGt2h4HMnliOKeRnrhigka9AHSsy45g=", + "stat": "sha256-l/9uV0whTEirjNCOU/KMvCL4zOmbt9urtLpibFDGlu4=", + "stty": "sha256-+R3nXybBi3lnghBxNJqt/E9lSVEvXWNd48kdUkdz71g=", + "sum": "sha256-u34u/+HUzo8nqhqIRrwVEywYj/mSpwewShkTJy2RDqg=", + "sync": "sha256-e6vHf9wOOoHj+0pERfTHnbY2/xW5cO8bY22sxtzwQt4=", + "tac": "sha256-onhYcgU+khm2rdWZcJUXeNQDyhSEiByavttEL6h0YzU=", + "tail": "sha256-zxkALJng81qdJvA1FhTJG/PEqEwRQz2X7ntR/ERQJhA=", + "tar": "sha256-u7s1gyarncmBRHYS+nYkzsxPp0ct1+P7EnH0xsLWO/U=", + "tclsh8.6": "sha256-kXsb/VvDshDDMSfys7UtuUfg+9Ccy6QVKNzKAE78tw4=", + "tee": "sha256-sEvEKaZ1kuuB5vWsSDeDiKeVVUlFLv1BrPM7SGc/A88=", + "test": "sha256-TXhCDuGK2EpzvO1D4cwlz7S33zKrcXSjwYErpjsb9a4=", + "tidy": "sha256-207CBLHdgJnu3zu6HLd2aP9yt372xpE2loUwJr952xc=", + "timeout": "sha256-jUb/3AUdDxpToWg8fr0ie37ATBbxiqXp7kQdW548tVY=", + "tmux": "sha256-S9r1cPinQXIVeQhfvGPh95JeoVQmILnerEtvX2sSKns=", + "touch": "sha256-9QX4NOQt2gMwvwAi7dorq57ZpQx2/qkRmYaMdUgESWE=", + "tr": "sha256-xPxJICWFt9Fjvc2QWgN/p82BDw+F04gACFy54aTvp0s=", + "tree": "sha256-ijXcmtpVw2VIHocvCK2rU60wVbtd8VSNKY6A81LoVo4=", + "true": "sha256-WKAtufxhFpWDlc1RUFztyyQMI1inrOrFjjsYxrYKhIE=", + "truncate": "sha256-9yZlpBInSbImh6MeUhj2RRTDz/35uguyhxYbcOZt0q0=", + "tsort": "sha256-zHOD+Aiw5VADXW+55GNlTwRg6PQyY6juJa/L1PLSRjM=", + "tty": "sha256-C3pT3B/kZbJVhabYYQzS670cxvTAPalx+ONfJ7HjBw0=", + "ttyinfo": "sha256-xH4w+VGbPxESNAQW0WMRwdi00YwMkOXDo1IPPNpkfWk=", + "uname.ape": "sha256-wcjn5dEUIat1FmI6j/YesdIMJE+Gj13q1G2caC/RMHs=", + "unbourne": "sha256-GxVzljrGjc4KjGJvtRQDnkym9UGinxDXCpy3vDon6mY=", + "unexpand": "sha256-D1tBeE/Y5gz6QuF4MXlDj4fdP5osoIpX0lSnMNIDpXQ=", + "uniq": "sha256-LcupCoDKanj1jigte19txmuPVLh/8rvA3fT7r4xkcRs=", + "unlink": "sha256-180ZCH3gkYeLDY1jivNvYJXNm5AqOJVx6vjFbuqWFhc=", + "unzip": "sha256-mWVG9/vk5WnR1nrnLrYErSL/e9qZCT8eY9QzW7UeI0o=", + "uptime": "sha256-qD1cZCh7hJJ55AGevqag0zTthSgo8UN2ddPG5mOBuC8=", + "users": "sha256-Q8V9U6YfpaGlCSBLXGn2HJzCCnc8q03bEPCcjZD5WRA=", + "vdir": "sha256-Zbah+UiDmhGAmWAJNe8J1lW9PwpgTEdr8puenKbJf4s=", + "verynice": "sha256-REVMf9GYTyaiAPrTE4WVV7LqfCI2lasj8ajJhXyFKyE=", + "vim": "sha256-emyIHvfRwplyshI3IOFaIDaYIjXtmIhmk18wBmFDm/U=", + "wall": "sha256-4/Lqe9lqSUVb5RU1mXq4c1K1XPDyllMkZePVLi4ymKs=", + "wc": "sha256-//qpbuPZ8XLio/54/m2DVXN2a+oFUN7LQ0dO3+Jl/mY=", + "wget": "sha256-IYg+YKgJ0KbAFHKwyyFpJ2HWtRoukuYH+PJECY3TkZ8=", + "who": "sha256-+msow+UYZ5LFhoLYWXN/B3RpkP4DVZM32p2gfRxlxDk=", + "whoami": "sha256-yEHpMZVa95mHV1ZTNdJujB+ZZpk4kuC8QafC8Q5xHN0=", + "xargs": "sha256-mz9bnqosuFcbM6LMjnCySEP5fei7yvapyWgz60hLiok=", + "yes": "sha256-jFwnz8FHv8LdK3EW6Zp6IAT9Y0dt38JkePWM7+PpG1M=", + "zip": "sha256-33JZlJppAfxlEvW/obvCQdpCWwaprCfOP4J5lTNhktM=", + "zsh": "sha256-eMYlKSlyIJW0BDZLDEDn19zT3zg3dSzPVNUnrrZSAKs=", + "zstd": "sha256-RdAEdLJGfzc4vORGYtwxR1csgthzp9gY7Bmu8KiK20A=" +} diff --git a/ape/cosmos/3.9.2.json b/ape/cosmos/3.9.2.json new file mode 100644 index 00000000..67e98ae9 --- /dev/null +++ b/ape/cosmos/3.9.2.json @@ -0,0 +1,187 @@ +{ + "ape-aarch64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-arm64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-x86_64.elf": "sha256-fBz4sk4bbdatfaOBcEXVgq2hRrTW7AxqRb6oMOOmX00=", + "ape-x86_64.macho": "sha256-btvd3YJTsgZojeJJGIrf2OuFDpw9nxmEMleBS5NsWZg=", + "assimilate": "sha256-PS58KWG6g7AOVIb7s06M/Ty/isPKqJRsXPD01YCuwEI=", + "assimilate-aarch64.elf": "sha256-sFEaJLwEYlUxmk3GVD51mJWNETqhxohsbCdqJujeshU=", + "assimilate-x86_64.elf": "sha256-NJ8/URxOtwxNtS4vuZpB2bIIyDw+xoLAV+uvH+X5hXs=", + "assimilate-x86_64.macho": "sha256-GWvXnP+59DdbXNo46VU2WUF+xrzxFXlVZ1wLRdzGrMk=", + "awk": "sha256-IZ5IJjPT94e2JckRenCHJxEDJG0HTCdcCmZZ93bB4uA=", + "b2sum": "sha256-F0zWk9FWibzBHoeIvAOmt4UuCrjlAWOtdOc2Buwj8ds=", + "base32": "sha256-wGNy5OwXISFDkPWCT5OgKw4cWZ1pHDpBFwGid/DHXOo=", + "base64": "sha256-s56msYduxFwHex+byRFq7WNc3u01vLrzrTHJHIt5lHE=", + "basename": "sha256-U+T2z7ld01xNDgAA5PpOl6RPQ5dHXVRP0AvaldOkziw=", + "basenc": "sha256-tPhG9s7UcfnQHLRtiD3QUX6tMN6qoeIpm2NKHV/LA7I=", + "bash": "sha256-oaYXXHpNQTup5rKySp8OE7k1eeOLHxZko9liwuNPeds=", + "bc": "sha256-9yt2ej5Pg42tQ+CZqPTVg2o5JI1E/1OJiFQhoDp8ihg=", + "berry": "sha256-6bYdr1wVk2g7OXslx4mTw9cXjtolweDlxnVG0SDJ6t8=", + "blackholed": "sha256-g3wYNN3Vv87i7Wen9GKXV7NOdAOaMrs9B7nqmEEhXTs=", + "brotli": "sha256-tVmNf4RYEGWjSXjxr59llh+qSigcV/Fofixge3bvSFc=", + "bzip2": "sha256-ICsJOD3kJ6ba0PaBvPvjtBWp6PPGkCtM1G/mJJX2amU=", + "cat": "sha256-5vPf34E3IWaq9EDKYtTB9iZXOFBYM6Actp2OFjrnCm4=", + "chcon": "sha256-HO7mByjlPF6da8f+14usAGqLfQFp/O5O12T1Ujimi+k=", + "chgrp": "sha256-UyDs2L1YY8eBbpO9IeDnmIeDiCwbQAjHur+g7pMkt08=", + "chmod.ape": "sha256-3ydPcDwrGvz/xmt6HXwYhBGfgVNG0tasQb5BDSw860Y=", + "chown": "sha256-xp9d3TQzeOh0rxh0NuVXk/vXepkXyvJTanlqyiwifOM=", + "chroot": "sha256-+QFCuQXZHTS8sf8nuBdTMmf+71lTRyRnSD0O+yMAR/8=", + "cksum": "sha256-1w9i1SWKRsjECCSOvRahrjdK9vLMqTS/prvINbv+TwY=", + "clang-format": "sha256-t1/HDaTZ/klR+VFONNcqj5uxgIm37dafKu5Mp99ecVQ=", + "cmp": "sha256-tzASXhF5YQx9Y36T+wNOEhzra0bmM6fZXY0HMrRogVE=", + "comm": "sha256-2oTUznG8fFsxthijCr8UROKBh3/tavTZ/YdCn+JLldY=", + "cp.ape": "sha256-511WXEuJff/5X/8rF7efcLG2cjTxQQGwdOyjooSNqQU=", + "cpuid": "sha256-CZ4BBnt9/4FYlqCg7LISVPcGcxccAs7FPWIFzPd/lM8=", + "csplit": "sha256-7FO56WA8ajpPctbgLtY6NAA6TTeHzrYdmfbRxWJoKzk=", + "ctags": "sha256-F1WPQ4DjU9OXU8Fpw2ylnRCNxuQKfP2OlkCMBLQ1pbs=", + "curl": "sha256-g8NaOJIcFyscRCpQft5p2YnN9/mDsH68ZfM/pXUvCgA=", + "cut": "sha256-WP7LjKXjqTOWBN9t/xokk7Wtir5+A64O9tD6bB+SuT4=", + "dash": "sha256-EGaaICVq9bPakMFvKDAOY5Z4X/BmZUNxwOFAFYSLR0Y=", + "datasette": "sha256-jluDzFTRMPfuxfMV23f8mlPNoDalXhrtPXK7FA3ZvK0=", + "date": "sha256-3mMc3qBeWkh0VULDzLrrlBWL8BJ10RTjugwz0mrHMq4=", + "dd.ape": "sha256-PmHUlShDoAwUco6Iak303nWkCQq+rMk5WuscZ/O17co=", + "df": "sha256-AZ1qO9RN23LK70Z7uZuwIiwSsWw5ZNWFmPhB07nL43k=", + "diff": "sha256-vOGWyeL8Y8aCCsp5XndKLPcIgPxupHdMn5Ev+KZmZ20=", + "diff3": "sha256-MSt7+ofQRs8pLmOlanJUi4KKMBAPXsfqGNepGUnDB1Y=", + "dir": "sha256-Lf8zsbbKvS8Wyz3/3tZ0mcJA4ILM84YE2liQJCEBrDU=", + "dircolors": "sha256-BXWeDYCy6K2zG2h3ZyaOVaBjRa73Ds/DNT4q6LSNUpU=", + "dirname": "sha256-raGvhJoVB12v8fRj5IF72yFIL8OeHRrkkh4DcRRmGmQ=", + "du": "sha256-Ly9HwaHYVrQkBDkEilaHpW60DqjGjjajUvwtTmsRZLU=", + "echo.ape": "sha256-87E12HVQEpW5EZF27e9IlHXvzjsVXiV/0clgjvcnps0=", + "emacs": "sha256-2LD4hBr2+S6wMQR4tqP14fVKJwLPR5LqwppI9N2bZ7M=", + "emacsclient": "sha256-K6nNydfsRJOBOn7CYcwoIVr/egLk0DgEbdxpWraGB4w=", + "env": "sha256-cTNg+pak5y/DJsheVPcnRoNFnN+EHYfOjzCmRu0g4/E=", + "expand": "sha256-zu2lneJHOHTc7KSwSxxkWPf1J7XKsPgi14jkA74X2Jo=", + "expr": "sha256-9g+02igI4hAg6O6I8Cux3C5cJQBRyngZW45/z4ZigKA=", + "factor": "sha256-jltnOvjKJwjdstuyXYa8QJT8Ml2ldRrnEWDpkOGb6DU=", + "false": "sha256-BYJ242yBAoRVb0m7PihdcofIhxx22ZX8oj+Fx3tMkEA=", + "find": "sha256-M+W2ibC/37EbzSjd2z+1jsJd4LDRI4lDrCBn9VnGz4U=", + "fmt": "sha256-wvCr+J53XVYOncrXZX/Nk8KFcDczUquc/PxOktGBQzU=", + "fold": "sha256-PZ586pmywxqKk74cutpZ+bwYl5YN/rhzwwFoXDPf2sI=", + "gmake": "sha256-bdEFOe8MBcbaJrn1/6OK+M1NGV3CI2TkWD8FjTOE8tM=", + "greenbean": "sha256-AkCPQclECaeym/TzhUkXBqDYI1KeT3ho4cuzqiAwoKw=", + "grep": "sha256-T/5O9AiDqWulHpdtG0TuWvDAvf3Gg3mPQlPnzOli89g=", + "groups": "sha256-FyUGCy+KYR/tyNg6nfPhAWJFySiwdhK8WBQjLEC5lqE=", + "gzip.ape": "sha256-NvJw2tDrkwXfLlMfix4jbehrLKQZMWW5/eDTV5KPBOo=", + "hangman": "sha256-hh1DtviMgsFSgllmrpV/81NahEc7bOecZ+XZbLJmJ38=", + "head": "sha256-l7V/E7s0mLFYyAxpQXsceAOXtHbOpRzONMyAh5oxzH4=", + "id": "sha256-TtoZ7zTIrw1Bp7trxRZmhsbC2wVvGeUGKkRatu642tE=", + "install": "sha256-johtqj5v0NlhUEiwLq/P8RWuiglrPjKmdT2/dz2TLWQ=", + "janet": "sha256-xVZ4gFpL/QgKeCUHu7eGIOJhywmLid+j6GcUQb3lqPI=", + "join": "sha256-NcMp4cEtQVpIabONmY+q8ClcMRLveI0Gl0NFEiqJotk=", + "jq": "sha256-6J85R5gFi3ypCilR5Iv916iWB8DRw/5Rr/Q6x0WVTlI=", + "kill": "sha256-T0TuZpzuU36lPI6FThbEwYJxRbEuH18YEVlG8SfOhKI=", + "less": "sha256-/d2wuWZvEZfG1QXg3HKShsIH2e/YBWPRV8FeTKcUYi4=", + "life": "sha256-igi3K3hCEQ8UoAlOnc0aYjgZlXeyK52QgeK+MUfyng0=", + "link": "sha256-RVGpuynDmCS8cCvaK3h4cinGIHSSuT8o4k9fIOJporE=", + "links": "sha256-PTVlG3R3b4BGk4qZT4ejlXz35hpfTbnQdcZcK5F5bYw=", + "ln": "sha256-k5pICFSa7na2XHmoTLwpqoY6fbpDS0Aora9UDgE+rAc=", + "locate": "sha256-uxzJS2cGdaGPsxaizj8uDAwFTlWNaNFAIJpehk1Rrfw=", + "logname": "sha256-OH14D3piwdO5YDQgqQ44qDZh9SOl6TT8WwSiA1cXmaI=", + "ls": "sha256-YMvIoO0R1VN+FhW+W8ArcuNe7HPNx0dSNa6AwrEr/kc=", + "lua": "sha256-etfFv/TbjI3Oozs53C8fxiszBQrTTQUgR+pq6V/FgSQ=", + "lz4": "sha256-PFx+fDvlUnhL54BQgtEuIeRIadNjR2hWukUkpyFt6bU=", + "lzip": "sha256-Wws/BLD1fyoBMeVJSkzurH3YJos3ZjD84Zt4BRJ38nY=", + "make": "sha256-ceM7DY5ETjsCaorCSmDIMlyn7tlLsTDyWtUH64ZOOCw=", + "md5sum": "sha256-pEaNicTB6QtP9/3OZEEtQSZSLdm2rUdoxpThZHEhDAE=", + "mkdir.ape": "sha256-SBhdc+2GsvY6mCIwXv+KwLtMxaWA/oLdSv4IV0a7MRY=", + "mkfifo": "sha256-6J45XCTN9sJr/NbGmmlCElNNEq0ApTt+8IHHxyRKblw=", + "mknod": "sha256-EAwbqLrQweymrKR+Hq4Okt3otAZsNdTYVV0/eNwB1sA=", + "mktemp": "sha256-jyxQJiYJ95a6LHedlhANn4twcrpObEwQKRDcZm0qVvE=", + "mktemper": "sha256-oVNUv6ld13OyF/sNe1b1dkiH+3YO/5xAiaXtnaV2XJg=", + "mv.ape": "sha256-Vn8o8UHlwN0//u6+3Ig6LoQoCKsv1aSsKfyvvZ5fYac=", + "nano": "sha256-BPI8H5lfW1wceiI1sg1AcqvDAtRZ+5HGSDnorwKf9jY=", + "nesemu1": "sha256-eBBakkehweXBKlvr/XT+pVCeUrnPRSyrQe4POR+4oxI=", + "nice": "sha256-V++cUbdJavAtA3iEbwQPPvSU2fF4vNzYqQBiAUZ1MDg=", + "ninja": "sha256-GZKU3ggB/iU0HRkHLKkrM0apaXUmZ3WZRBYBOxYIX4c=", + "nl": "sha256-0eKWm0/anM7OzZiVk6Y3wf4DYDIBoFpd0fTJzjK8w3U=", + "nohup": "sha256-L53Mx3FWT/cfUmfH0uD7A9eX9POsmw/zBSpBAXHzjJQ=", + "nproc": "sha256-mB1teH65rbw7uQt5AfvzzbZthDBGYyZ1esPCuvPAbZg=", + "numfmt": "sha256-PALW0r8LGz+XVRGstT0MOrtY3TkDPsqk2JQ4crgmTQw=", + "od": "sha256-agnQLk+mZzuLQL42nnuyr9lvvFt6gjr5MgTLTHnce44=", + "paste": "sha256-v9ZwD4uLxINBGFkypJJRIth5kFM/GQBLRcLQoL35dgs=", + "patch": "sha256-YMYtfKrBFNhxquTrQLyiQXss1u3+G5QsUVxRfhhrp60=", + "pathchk": "sha256-yBUBhVd7NEsHKwlwv4UvKI5MsmqM4Vtyp62FkroLHHw=", + "php": "sha256-4IGNjFOteQ/6Aai3JAz2PuYU8oacfR45bOZJFJy7bF4=", + "pigz": "sha256-n5rEgV0QrG4X8UQW6L/H55U61uCFsOced8+RP61S/Vk=", + "pinky": "sha256-xOxFwxH3mkA7DjRtg7+1wi/kHFd64vyQlLsHt0BNtGo=", + "pledge": "sha256-xV/blwb0evvAVO+4wYpW/awsyHBxE7lz0TC5vhsRBzw=", + "pr": "sha256-uGqbUBAp9vIMIeppdtiY4XrJe49j1908gm3Xtb3VQkA=", + "printenv": "sha256-8TSW5oXCYO1qsxeiriuUMQErEhTXVR1U+AIqurwtmMs=", + "printf.ape": "sha256-bFvI6MLKMnurC2yublR9lAZBNmbaPPzTb3xklihNhHE=", + "printimage": "sha256-TEYvJWzpu8zs3akbsV3EPRwcPoghcvLUYIEkadvQcz0=", + "printvideo": "sha256-k5sWx8DRzg+FJahgaibo8ndeFjf9wCQC9W+Gxr6RCxs=", + "ptx": "sha256-GwlEwQ1evfneyrIBBWQGmkNsNrg9F4wcOtdbvlQShqc=", + "pwd": "sha256-TuSi1f7O+EunjdwijjGAh1urdVA9KgB5lFvkHe3t1Lo=", + "pypack1": "sha256-zb4ooaMXbQ5BtFMf+kRyRJ/15z7rCQ8i9GQfcei9mOM=", + "pypack2": "sha256-gQKDXKtHLex4Oicm77sXvy/3a93/39/+KOqNjzQCMDA=", + "python": "sha256-zBm8Y106cQKThiAp2qbyb7FRuGkMz0vE/kCaz0imDeg=", + "readlink": "sha256-kPK24ZLmsp6G0gTJFxN3Mnk2DlxJtSg6080abdTKP8M=", + "realpath": "sha256-P+viEMKUyIqIFHf9h3RrW+trqtMNrCNDPWU6YDEkozI=", + "redbean": "sha256-9p0nd+cNLbU56gK68NjHuGTntBrG6/YR/DbrMq4+WV8=", + "rm.ape": "sha256-79Qg+1douroAyaD5tyC6GNPDFItHqfvR6xwUAYfmE+M=", + "rmdir": "sha256-vZyv84GhPv1Kb6WmLdAxJo7TjW7ubPg22xOzMI3oWmM=", + "romanize": "sha256-20bkhfounIMkqd5q1wzEo449WxevescDUlIiWuhgBJE=", + "rsync": "sha256-Z+bAyGo0s72nc4CCgh9jp+QIIynwRTyNBOqmueaf/Ds=", + "runcon": "sha256-KopbC3k4qWa3gp113AaXev/ADkCD0oh/qmEwiGQEaa8=", + "rusage": "sha256-T8wBQeQ1WxS+zjHIlcH7hv1Ot1H/mtcwgJXbdw4j5+A=", + "scrapscript": "sha256-n8xwQrmU3WF1o2Cl18OeczIYROfvvCOJKE1XAEiEH/s=", + "script": "sha256-mmKRBBvCDw/q1UIl6Hwa7ikSDDln1RoigTNkhmA/gu4=", + "sdiff": "sha256-MzenmzkwtgYPddXji+h55kbDaoqRhQ+irK6lnis4bfA=", + "sed": "sha256-KBqc7Wn/gvhDDnDPXoHUqNM6ZhnNb4Y4fAgqhu0kPXE=", + "seq": "sha256-DcKtvIL5zWw5LLPTQVMUR6t2IGxKmM11fGwM9ROpdsA=", + "sha1sum": "sha256-P7qv35CYD8wUMmS0TgWCxGXqLCuqZ4tIA8NneW1vgjY=", + "sha224sum": "sha256-yrsRnVgzIUc8mBzW5b9mQ7h/MNQcbr1bSsPYxvL+2J0=", + "sha256sum": "sha256-YzuzoSIFOfcIc1nNdEvX6qEZDPOOcBvHvDscoCTx5/4=", + "sha384sum": "sha256-iJzxKSJM/0T4qWEmEg5b+/ERcFWl8/R0thACeOKoZyQ=", + "sha512sum": "sha256-b8IP6JlP+V2TH49WQK1nSGKmkZIpE8n1gQ58u1LlapE=", + "shred": "sha256-KRh2h7k7rgdHCHY/GQ+o2fUjvvsjnFTcof8m78MBVFg=", + "shuf": "sha256-65UaXgKGi4ddKECH6N/FYPZM1lypRRnJYQ3d46oFrlM=", + "sleep": "sha256-lJObaM0nIgTI0U9ByONqzS2elutVQnEJqXzETbQDWN8=", + "sort": "sha256-L4zxUq9F/YPcUsUQyyC4mIzTMI4i/0uD0eWF5mecYd4=", + "sox": "sha256-qbmJcjzfBifEAL9tUHP4OnZ3ojI6Lc5TwQNKYWFnA8k=", + "split": "sha256-zj2SegOKNOiL82gXNeQdvSs2teZAzdv6cekr0zmPH2c=", + "sqlite3": "sha256-8sagxwo5nfoOqMT0rRmEIslMF/kp1IrwvteSw8wZKB8=", + "stat": "sha256-+66YfJ6AdVgjfOi3Qz99csjk+Qf7IbXBspjIdIqY4wA=", + "stty": "sha256-uq8sNP+/KE9rJS+/b0a1rCCNup1dR6cW/5yByBSk2PQ=", + "sum": "sha256-x+4bv7i35PMc1XhVUl0wBdClxTzzC5QZM5zo4HHjmBo=", + "sync": "sha256-KicszdnMhJun42yFvekQ7wBgFP2mi7dyeJomPGarUb0=", + "tac": "sha256-vGu1u4Y+GGgX1mIQxNBWjNCbLQXwF6h/ftHDKNST7Sg=", + "tail": "sha256-7OPlq8ytjpG6GD0awyHk7Qil71ruDgdUEy0JoIhpOhw=", + "tar": "sha256-SwtfS7i76oaz4zdN+Actelz1s8R1iZ2Gp9IAMwmhJfI=", + "tclsh8.6": "sha256-0UPgOBStdDhsD5hcbGnkl5KQnBz7U+4aZkTQ5bK0DiY=", + "tee": "sha256-H8V0IynpFG9vMrIRKY9BMeIaYNlvpRfGU+2EYm9jc58=", + "test": "sha256-/s0AtfcykSlLeXJZoIb9JxKc2MbZQS06MUmIahGI2SI=", + "tidy": "sha256-ayfN+410Ao8n/reseztm1jIc80iZny40rgKKDrCFQcU=", + "timeout": "sha256-/9oLu2p03e0V+GWueBJ6AA+AFyNo32MMHwS7fLIxNW8=", + "tmux": "sha256-4EcvdpcE51XbpXbh47awpBqpFEsimBv4Zl3HnvbPLoY=", + "touch": "sha256-mLKWC7exu0aszUaROz/OoexUMMGWEmYRVKPpGppRGIQ=", + "tr": "sha256-xaojS3Pq3mXcSAYcQCo1L8k56Gm/QQTlLL6oBs1yFZ8=", + "tree": "sha256-ebMnj6nSrhKsDHu7R/7riF1nB8nPBXZbdgFEtuS07KY=", + "true": "sha256-KfGviT7vlB6yA4P9DCkRTmEpzKb2bPoVEwWxeGWpOcE=", + "truncate": "sha256-ZGKgxheM735dAyRF2GmRdukSLe0qhXn1Y3ny5C1weF8=", + "tsort": "sha256-clursf1EKLDsU2EqdtJyT9L0usd630O87+n5xp2Yw+g=", + "tty": "sha256-OrnQlhyckzvw+142u26EhNrmzL20nvl/0U1bxxp6rp4=", + "ttyinfo": "sha256-T/KOlBTQW6zRTsKpCoTEVoyaa6x27UsejIQH1XUsI8Q=", + "uname.ape": "sha256-ijlUk7XJZ/pMoBAkoeOnDu7LBrUrgO00U3+sobe6ZC0=", + "unbourne": "sha256-GxVzljrGjc4KjGJvtRQDnkym9UGinxDXCpy3vDon6mY=", + "unexpand": "sha256-Up4wnqEncT/GV+I2tAyLuyC9/PE46e3hljLZpQKfDFY=", + "uniq": "sha256-d05Hb+IYk5ZVYdHukbE1E2W+bbQH8igf9Mvh+Z8OK0U=", + "unlink": "sha256-d/JpS6MFKQ/tDO3SXihxdvWU8qr1bPAoh//JFPVjfqQ=", + "unzip": "sha256-dAGnipkrGNFXsgJM8iFH9i//WPwV4mu23eDUDoRO8dQ=", + "uptime": "sha256-0pYnaQxT9X49n8wz8hYNHxsW93olhBZaomlRTAlf9bw=", + "users": "sha256-75bZkLKnTktbPQJHnfM9NcCsRVBK4kNp40OEy0LLFsg=", + "vdir": "sha256-Ubd+D3L6RiafiBHZPyBgccK0m02JBF7HdwbzHwm+/5k=", + "verynice": "sha256-q+cbgKXWNvqDSfva2gzMu7CxJ0AyeV/DQ9Wy5Y1eDkI=", + "vim": "sha256-iZ/CCJ8kLOeobCWbYK58mdvi+OrKMOWmzGY7ms1s3qM=", + "wall": "sha256-62nKLVSlnc1HPtf+WcQdxzwwXv+WqdYye4v5gYC6Nck=", + "wc": "sha256-DjHLVs2G15jIX98cXEDPpW3ScvdYGK6rKP1q/kXY05o=", + "wget": "sha256-Is/S3Dh1tyLIPdTg1Xj1jqBKSqLzMYOhj1QRkGHsT+s=", + "who": "sha256-Oc4TMSaRZqLyv1n0wtaF0QFUDLVJxDqXxb+a9ueZS6k=", + "whoami": "sha256-LdcXnOrrZG00hLlp4ADCPWV01Q8IEj8/oeBliHqkSzo=", + "whois": "sha256-RLPhUnftAJGGBmu6hwGjTvJk9ByEVTKoM++geUIEFQU=", + "xargs": "sha256-p++dx2Lbey44SRdsJ/YSohdxL+hXg7qrrKSTWE7clg0=", + "yes": "sha256-diW70D8puIL24VYNbixgWE/qgUKd+wpudMEPvBNaB/U=", + "zip": "sha256-mUCesqrfxIPiJwYdnttMGk4J8iQiWGCQDuEY0n5HIAQ=", + "zsh": "sha256-qDkot+7X4nTkbSXIgcL+9izB2PUoS8a9YbEAcdJteCQ=", + "zstd": "sha256-nbRKCMcul16vz7Oyuu4p/OzRHDUkjLAogL+SQBzd6z0=" +} diff --git a/ape/cosmos/4.0.2.json b/ape/cosmos/4.0.2.json new file mode 100644 index 00000000..ea613aab --- /dev/null +++ b/ape/cosmos/4.0.2.json @@ -0,0 +1,192 @@ +{ + "ape-aarch64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-arm64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-x86_64.elf": "sha256-fBz4sk4bbdatfaOBcEXVgq2hRrTW7AxqRb6oMOOmX00=", + "ape-x86_64.macho": "sha256-btvd3YJTsgZojeJJGIrf2OuFDpw9nxmEMleBS5NsWZg=", + "art": "sha256-CFYvFo8brlsVF/gwqsmKSp4KhaDhPu0Ti3li0nxPyo0=", + "assimilate": "sha256-k/Y6rBQEa8JTDk+Y/03HreLjo6oxNs7T21mL9rACbtw=", + "assimilate-aarch64.elf": "sha256-sFEaJLwEYlUxmk3GVD51mJWNETqhxohsbCdqJujeshU=", + "assimilate-x86_64.elf": "sha256-NJ8/URxOtwxNtS4vuZpB2bIIyDw+xoLAV+uvH+X5hXs=", + "assimilate-x86_64.macho": "sha256-GWvXnP+59DdbXNo46VU2WUF+xrzxFXlVZ1wLRdzGrMk=", + "awk": "sha256-EBdsbIdW8ZDnn4ZQDaDoh8MBOkepzW9Jr3/igEJASzw=", + "b2sum": "sha256-zOSu2+eBpJyyBbHoy8SYDLQW1q8dlLaL7i8yHz0HSiw=", + "base32": "sha256-O7HWkfnjMq0CofXMyVIo/ijtKbbo78Kxt58yAgahGLQ=", + "base64": "sha256-tsdBbeK0OLHowgCCl882IoHK5EoEgyFBxKxNNd2JxZI=", + "basename": "sha256-uf/93T81zL3k0vD8FGj01SGve/wPs4zQeco+/1aG4WA=", + "basenc": "sha256-xaimREW9eXAo3R0IXO9+3DmvcmNsLXiXP5QbEkfVV3Q=", + "bash": "sha256-XefKshjBJYNBPFQTY4SLwnjo9I26B9lrn1eQ70C3Lj4=", + "bc": "sha256-QGK5PAEoZvQhNqMY+KUe2rnXf83a7gG3+PG4+P0p4hQ=", + "berry": "sha256-XbC38C25o/85yKvTrL7xLwLcWIydZS+7t1PhYTE67B0=", + "blackholed": "sha256-PJZOK/sT9PZW8eT7NB0A653JUt0IFMNklXHFgThiNdQ=", + "brotli": "sha256-znbwnS6wCapaj2jXucmpHWvDkDv26y1dIgwZaIkIg1Y=", + "bzip2": "sha256-WU2kkvQ9uds++DjKELEb3CuWkL96Hft66v7/dd6H3Sc=", + "cat": "sha256-2RxtD90EmVOoZvOm+a43HKPaUAOxiCw9n7lfYGu/cdM=", + "chcon": "sha256-Hq4bdXptNpBdUlB+k1cXGXAhPnKyEQ4Py1ZLH8+5gu8=", + "chgrp": "sha256-tEzHHeZCvvN7D1SmM7OOs7ZYBebFsZnTssKxLvTkDp8=", + "chmod.ape": "sha256-QhMeGeXNj8KqDw9PflQTQb9Vr8OJbxVOOPGJm+OWi70=", + "chown": "sha256-Vup9h5JqJjNnlZBHYelvKgGukqiZnl+C6vz7tZVmbcs=", + "chroot": "sha256-gso87OSRJo/IKgGEeDuMF/9IVkP132N9LWg8m/ZPveA=", + "cksum": "sha256-euZaxDUnQwNyJnyLgwGhA+2QnwBaM/EG1qGvl/2uoZU=", + "clang-format": "sha256-t1/HDaTZ/klR+VFONNcqj5uxgIm37dafKu5Mp99ecVQ=", + "cmp": "sha256-qlA2ZYyfhYNA96JDsPUhF4SsDcSQ/LHcCYH0aeDpVhc=", + "comm": "sha256-HSps5lFxnVJuqSifPZzQ/0V551QD40AblS/lJ09BGXE=", + "cp.ape": "sha256-cCroQPgzo1Hl9qIfZg/a2rNKnJIgHE3NvXVbYVVoLzo=", + "cpuid": "sha256-NnD7jArSDPP39Vq2XP/bnZmt8X9HUhZ10vypFjVf+gk=", + "csplit": "sha256-WmtIlruvvTd7o0Mk6vtwrhDzNejZWI2RDebvZsLSDsA=", + "ctags": "sha256-MQU0syhSWYuxSvyAGIiJXlVqmF/c61pyIXSRdSlg0fA=", + "curl": "sha256-96LGweDzKygcS3+j5Op5dIpM8tQWyDyrc1LoJcVSIKE=", + "cut": "sha256-AIVT3p4msNujMHF5HcLirWdIQJ6rs4dzWFj7VspcyL8=", + "dash": "sha256-0Lg2YPAFrzZAXjskZQ0FxVQT4GoEP3xcQy4AEiDlgkk=", + "datasette": "sha256-M9OABKCiWQgaYMrT+uF1e11Bg2Yp/ed6HwqkGtxuiEE=", + "date": "sha256-rL+gCG07DxVoV0pefXPxp1X/mPxjf9a1RhyN+1IX+h4=", + "dd.ape": "sha256-PS/hQKT+AOQh5AHolWj3q0WNks39tCO7Hovi0RDEOZE=", + "df": "sha256-e/Bk09M5epuCseZ6/71D3gAvCUqMbi77jCQntoSbh88=", + "diff": "sha256-SL55aaIT+CAXujoPCCmPTjEOYZ4VBmwk3uDrHQ5i4Fs=", + "diff3": "sha256-9fDTCPVeUFouT1m6F7rYX67OCb1oX6d1rdRm8vwGrjY=", + "dir": "sha256-v0L31Yj4t/u0CZDUbxzain2IB509AcvCyQ2vcrGAxeU=", + "dircolors": "sha256-tqTc1QGGA+enf9UzRkxJmrxfIDPwLjXwXTCiBI4BJKo=", + "dirname": "sha256-XRLeO/naUhQlwSVhIZPynxDG4F6XHocSu6MLEIzNFVE=", + "du": "sha256-g3vNEZ7LXjU6Za/VcO9obRvvfU8wAa7wmzFNIUhII9o=", + "echo.ape": "sha256-2LpfMxMJYMbL4fepWhIp6Em08hBu4twQRbT1Gy0agPE=", + "emacs": "sha256-vfWlSWlVH71Uk4wp/LhH78D/Ul+hllBWsXwAEj27JWc=", + "emacsclient": "sha256-E8thKCpjkxg9KxCJu7ZhtRrvbI7BVeGCpUhBzE5+zrw=", + "env": "sha256-ICTT5Y5GICBF3wAR0ewnR1b7BlvQJjwWoK8RLPkyN9Q=", + "expand": "sha256-BBQ0AXvKYq1fXJ+NSMfvdhJV4fnTAMLOufHPaKYW4yE=", + "expr": "sha256-Kiu9FL+6nV/QcfyzTP6VyXEQbosvScj65T64QkjQ6jo=", + "factor": "sha256-cdlzsJZFMIMb6dl2Bo6jUmQiRtAMyO+hEhzv3RFnzTc=", + "false": "sha256-a8jusSOGWeFK0XlKZDlWT4hgauAUik3c0oxu9/E8HpQ=", + "find": "sha256-5PgUE5GQrorXfpLV7qhnLMNUUuU+SEintIobIblF14M=", + "fmt": "sha256-KSg3OlcDWyHquQK448LUPDtKnZ+fdDQK2UK6Bbjqgxw=", + "fold": "sha256-yZH9+6gwYvVUQwUG7YWxbFAZ8+4m9cuFPRmeL+RNjgY=", + "git": "sha256-YWhL8MWYQmcgzq9GBoLm8FRohpmTQT8z0hpG40kOvEk=", + "git-receive-pack": "sha256-YWhL8MWYQmcgzq9GBoLm8FRohpmTQT8z0hpG40kOvEk=", + "git-shell": "sha256-gsLNa8yYv9KiUIHZBtD0nZgHejmkE9ippsts9lqjSJk=", + "git-upload-archive": "sha256-YWhL8MWYQmcgzq9GBoLm8FRohpmTQT8z0hpG40kOvEk=", + "git-upload-pack": "sha256-YWhL8MWYQmcgzq9GBoLm8FRohpmTQT8z0hpG40kOvEk=", + "gmake": "sha256-J+vMoec2zCqn6iktXln0OjorZAhaadbEZlYoBXVD9Fk=", + "gperf": "sha256-mfiJMXN+Dog2W8W94DnWCH2euzfYBPQX8a8ccY4IZNs=", + "greenbean": "sha256-9srJ8fYlj0FR8DvHfBPp5FeNnW/Gkf1ehgo+GYEwXNM=", + "grep": "sha256-jR+XlPUktja5ZLsg1IBwEYk3vZAFwP4fza1LFMvlqCQ=", + "groups": "sha256-Fm8Ls3cUPpS2bRD6VvFP9ImNq+R29Nlx2zs+yk3iTpk=", + "gzip.ape": "sha256-xLlIpb77H8i9tdgIY25pkBIj4BhIw4pWucYhlbdDzf8=", + "hangman": "sha256-QqgTLfhKMpi43XjE/qcsSt/eR6Ee9YjLKipMkL7uj2U=", + "head": "sha256-9JMB6PlH24s8IVtj/74+HnzHAeQri48rCQw3dCcGI+8=", + "id": "sha256-YALT7gD51vl9jYjvfNBJMBeA0ArlATuE8pyMIJPI3SE=", + "install": "sha256-u1GLRB7OMvxfXRvDXOfAqK2xL8iVFPgie5CZRWnok/E=", + "janet": "sha256-yyi6S2UpgWikB81ONIamRRd08Frk6fDJ7Ou73F0+TH8=", + "join": "sha256-xGEX1Irgmmz/hlHwIVOwpcTv5wJO07GeHa5HbAsOpfI=", + "jq": "sha256-GxXYz2FcQ3uQM0SW32NuOBp3buZh9UT7zAw2FYtsfDw=", + "kill": "sha256-HUKz8Lz1HJJO1u3jchUbFWQ5WVOm5sPHoRtJH/sS1Bo=", + "less": "sha256-vCqe9jFWSM7byoeWhzEr2+dFfGXKqr3a3BTqCXIZX5o=", + "life": "sha256-tWmEMbmzsMIfUuCTBnlzyHIasVZcv0tT/O/jtZJCDoI=", + "link": "sha256-OpZ5dSDcTRtuJ4CPoVzbgcomEKi9ll7QUZZaIgmqc7s=", + "links": "sha256-x8CMITKEemShHDn5pmFVlqjmTLu0cHt9o3KQ69C75fc=", + "ln": "sha256-LoA+K72zV7mMn/bp+rfoFSaPvypAjMJ6zPkCNS5HWp0=", + "locate": "sha256-wYzNjs8Nnma/ylaCxZbwx5mLyRq5+MLyPu/9+vSijnY=", + "logname": "sha256-ugpDLbQTaaopdbcfodhaiq6BAndNx1Y5jVzNLVGRSIc=", + "ls": "sha256-ka7YfvN2PiP8YlrrkQQoSbtgjfIPC5KQ3CYuBrF2KkI=", + "lua": "sha256-hIhumroRY9zqxGDbwF3OmY7QgwKzOZEuE8SSz8H+Uqs=", + "lz4": "sha256-PFx+fDvlUnhL54BQgtEuIeRIadNjR2hWukUkpyFt6bU=", + "lzip": "sha256-Wws/BLD1fyoBMeVJSkzurH3YJos3ZjD84Zt4BRJ38nY=", + "make": "sha256-FTFzI6IrE9/SE7zkejnTAudAZfQhmd6xfIWFLASTT9k=", + "md5sum": "sha256-Fx+46LQddVtvZZN76NX5x34OTspOssTCee8syQHQ7RM=", + "mkdir.ape": "sha256-eFfD2zKsAEfAtkQdS8VVanoGw/oi3BzltzQRHoUMAAo=", + "mkfifo": "sha256-CsqC9AQXvpA2cm2pQ8I9C4JkX+CRa7OUH1z+NBKRe5c=", + "mknod": "sha256-Sw2W/7mL4nooSPqx9vsz293yktSwKGFuUnnc5FT0M/c=", + "mktemp": "sha256-ejsmczZ83ARBUd4GuFC1mPYryiYF1phSF4fBob6YYfQ=", + "mktemper": "sha256-aCf1nzCYMNe80RqIdrOcf5hiQ1UxqmM9Jp9xIUCQF5U=", + "mv.ape": "sha256-MplEA+5gkOu/Zk1oCIAJFBiOFx0JjdeutSaG0R9XyxM=", + "nano": "sha256-xErHGcQXBkybONFvNtgAvwDk0PWWbapaVOPHHhuckfg=", + "nesemu1": "sha256-5qC0v53UmLHwaM00AA5Pbj44PAqTQxSPC/JUIMuHDrM=", + "nice": "sha256-vL/jO27Hfup6jQoWbcjmef04b0iciuab3+ajVtVW8F4=", + "ninja": "sha256-WzMPMduwRVWa009ctNe4DZsgJl4XdPBMH5uFkc9GwoI=", + "nl": "sha256-oAeyiNSxqXUUZZRy5r7GKRgh0M1eepbl2Ylta+lsx9I=", + "nohup": "sha256-Rnnodwi0fKxc8FrJdMt5yjlI3S4mO/4Pxourw/5UlaA=", + "nproc": "sha256-2SAv93hMDWoYMBHWAJbwFGWD3SJhZIlo/o2H7uOz5Ms=", + "numfmt": "sha256-fdJQ3zL43AD1DwotjlOKvjfAILIdO/jWEJtdn72j31M=", + "od": "sha256-BWQ2T4C6OsVrzAvBmAt3aJ/vOLnuzP8+tUqWOfZ261A=", + "paste": "sha256-+8C740XRLTV4mDo2wzbB23HAqENs0FK5hhiSs9PbYNk=", + "patch": "sha256-ukYUTj8GAV/GSmGn8WvJQ/ReecocdG/YeLZtCuB++Ag=", + "pathchk": "sha256-uy/5OqhT3PImWYdIXBn7NgsHwqv3Uc+YIrbgnF0MEb4=", + "php": "sha256-vehol+qgujcHXjBZJcYP0k3GYzvcCb733tM4FA0vlJw=", + "pigz": "sha256-n5rEgV0QrG4X8UQW6L/H55U61uCFsOced8+RP61S/Vk=", + "pinky": "sha256-qli+wZ5gRIoi/+H4+GI1l8tMNKjExpKPt85PC7wDzwE=", + "pledge": "sha256-sNeEHKw9HETFu5aN9lAuyLviN5s01BpJ0/nKPbGxDHI=", + "pr": "sha256-62vFsD4Tog38Oh7EkRr7lzr/V3oIKugfUI556xz1k7o=", + "printenv": "sha256-Ct6EjP62+xw3F8w09YRhN9MSwCnqM8Ha4+pbVFo8sTE=", + "printf.ape": "sha256-T5Ifxr+65C9992N7pZ6IkY89COwzDhD7hyMBfEYnNcQ=", + "printimage": "sha256-AYHGlnWVGnEEwHDstba3aYfPn9cKzWHXbpshDxL7pvY=", + "printvideo": "sha256-hHFKpyiLeLbL/hA4dUQzbIRPIkFD+JNKy2PgzQ1LExw=", + "ptx": "sha256-twijMnCOIIOzUFI1eLJh1PYSfCcMB1o1O0Q2fH1rKbs=", + "pwd": "sha256-08o0YN7YL0Q5Su7KbOImX7nQWTtVJciZTWwMM5QRig8=", + "pypack1": "sha256-cBVecPuuIryyJaocgzxR1oqaVQTbv1pGoWKk/8knOQE=", + "pypack2": "sha256-gQKDXKtHLex4Oicm77sXvy/3a93/39/+KOqNjzQCMDA=", + "python": "sha256-T6FIjES6w0etlU/IfwqyiGU9QQdRf0AjMRSoapeNJ6k=", + "readlink": "sha256-MI9wEtnYKtlfRj+zIfgicwBuyYSOJ3FrgT2/w+rCCBo=", + "realpath": "sha256-djXjxbqQ56fyZVpnlPsvskJGZC581i4g5nEdD/Wuyyo=", + "redbean": "sha256-SJxd4sQY8wu1Jb77hA8qk+nOeh9YglqkOTyQezLE4BI=", + "rm.ape": "sha256-VOcVdnxjBHJh9xxaxau7PoD+ALd8POnk7J+JrEQm5gI=", + "rmdir": "sha256-1+I+vLzVrVfXAMDzAYc05kSjuIlrFJ1PudkZ/KU7Dko=", + "romanize": "sha256-POcnG24C8yxPgtArcBvORt04Q1cPLqnMDg566YVEtEE=", + "rsync": "sha256-ZVRFw75cyN2Ned/tvesE1IjoCn1nUw/yHnzw0Pq3xrg=", + "runcon": "sha256-oA0CCpVZm6y51j6+0yNOtlec+k7H8+/zBLOmyF+N2+M=", + "rusage": "sha256-h78VmPuaU/6CanaaRd0FK7hQ67l1nqjjwlYHd+Abnaw=", + "scrapscript": "sha256-n8xwQrmU3WF1o2Cl18OeczIYROfvvCOJKE1XAEiEH/s=", + "script": "sha256-w2yyLAV2JWv5z4qqJN0214ED2zQnZFPd58UdEsLepZ0=", + "sdiff": "sha256-/t8hOtFXYnQKptaf3xRXIB/3/vg2ocxa/110AppUUWw=", + "sed": "sha256-ND8AuTc51P8UXETiigeIlZFCXLdmvPfZ5FNHCNb8bNg=", + "seq": "sha256-Y87Awa/Ue1TY7NQxkDf3wvtfIXsJIgSgxzwS3N4acE4=", + "sha1sum": "sha256-YlDj7fhm18dMss2XKda5ZrnMhsjHec5QWrnWUOyvYdI=", + "sha224sum": "sha256-nyA69MCwsGeR97YTJal8u2F5Umq2sutlNxNeueBpjK8=", + "sha256sum": "sha256-ABL1gN60Mcos5o8Fjlgx4DfIaDnyjeWKbxl6JC6mKkw=", + "sha384sum": "sha256-5bV3dxN5sD9L5J7LNRzGQLVBpstV/WduqWKs1JQgdiU=", + "sha512sum": "sha256-+yabABL8o9ry2zhEZ1Wr7JR3nZGKbxnwdW6QPssmVnU=", + "shred": "sha256-baVjjy1hCOmd+QZApHkaLHluFgTM9HyDvZZAaXR57cY=", + "shuf": "sha256-iB9q96mLSvtzUa4w2i5wMBeqmkhcedHzW/THPjD0Onk=", + "sleep": "sha256-htlrLcdfqBpXJ7GqxwTlJzU9WDQQOcVwPizoWSS5qYw=", + "sort": "sha256-4q/DnLEhJXZ1lv5QPHRmpag0cPOYNzGpwIdO2f54qkE=", + "sox": "sha256-IRa9fJp3XqcmYiD8/Pc7haW/61/LtwHtaO+yAMfAKyc=", + "split": "sha256-N+xpjirg0biHz+yCvTqJ4uGo0xhzmZvhMydUTvEC4mo=", + "sqlite3": "sha256-bcXH977rlATa8BU7Lk58kE31LN9N2DOnW1X9QyBIn6o=", + "stat": "sha256-3gBlScuYiPySCo9d4Tc87I6Bml6DjG3zmCUy1f86/Dk=", + "stty": "sha256-tQ0MHFvHCI/XNgvXqwhQRL//5AeBEDm/Npv3bZ1Bqck=", + "sum": "sha256-RALvzDS8wEY0ZMzlNK9ItnvD4aI8C5hdanVcec1D/rQ=", + "sync": "sha256-InrCxoogK8/2Vcwl4yydSRTirQ6bP6KQTPFl6EE2uaQ=", + "tac": "sha256-SMQzsXwQLHNbqNaWvDStEwVOSW4M413iVZU9AtAoydw=", + "tail": "sha256-7OrgrcdXp9G/rmbbkXz+c9E6NkmxnXKAh65vByeYj2o=", + "tar": "sha256-z2bsjSAXVIm2RV5Xa0sHmHtXSYH8dH49pVKXnVgvbwI=", + "tclsh8.6": "sha256-8piIuPCN1gZ9cJjEOdji6vvDy4bEH15WeIDOzwT5Hmc=", + "tee": "sha256-ruwn8Pc8oOArrW9PF/yugXgpb/PvChrBMi6N9CYzprs=", + "test": "sha256-wFtpsEdV1mZsMg43B7R4IW4Yt3AjFVpi5b2BLOb3V0Q=", + "tidy": "sha256-Pqg3qCr/n40gW2tBGjHF7fHF9fLlnUTS4tynEiwtgaY=", + "timeout": "sha256-MXoaW9GINC23QDgjnNqt5z7KUPaY7y1tP00MdLd8aNI=", + "touch": "sha256-q55ovUGSqpvS7VfrUa2ZNXMC+jdAENE31P6jA1DhtEA=", + "tr": "sha256-7Qfixr12DeNVWnMWKKYLZHHAI8EWMQv3yFr9Je/lGUE=", + "tree": "sha256-xzqnvIrU12cECjI+8ti66ExmMVRULWS4iGGMYV0+cQ8=", + "true": "sha256-LvF7GQGaDzVJc2V2svaHcWQfgchD51C8U4Ma7foVHP0=", + "truncate": "sha256-bLKwPFlG6+FOrOz8zECEC+ldVNoI6iYn3jJ6tLaY+cw=", + "tsort": "sha256-n4zwlXuDiFK6eBjs749Sm0nUyC/YKpXinvEzNvXJI9w=", + "tty": "sha256-4Efm98bjiwiqhpgjv5nBVaCQO87j+rDG2xRA7U05cHQ=", + "ttyinfo": "sha256-zVwebCMjpVAyuYJmMn8K1GfonjA5DYWNxTkSFb+tQ7I=", + "uname.ape": "sha256-rxBBaweJRG1GSz753V13tTH8wGPl0INSQqS12X3mPbo=", + "unexpand": "sha256-3AkWs0+MDaHxe3lCfqiUXJzR+kU8Ku4TfUJhwuZCIjM=", + "uniq": "sha256-fBl0w9XdaSjD7tFa7IyR6Ljc1OSc9r+b6HFnbtU+B24=", + "unlink": "sha256-fwcM91DDHicw6+G1ZOBUMnQpDCW+vCwNHE90nHeP++k=", + "unzip": "sha256-6WdA8Qt3PBWNRxAnKFzGlNQQ+Th7wgbJPlvQdSOP6tY=", + "uptime": "sha256-jQqvqAKeNRWWRAE8sg3jjz9IAu8UGjbBeDMhq9cZ/MM=", + "users": "sha256-JgL9LVOAj7ghin/zXLc9KW5/JhRp7aghIPF31yXjnY8=", + "vdir": "sha256-xZpxg16ya89LHMO+QRtXJRnYJmvwKf0RJUkdOtaKvLU=", + "verynice": "sha256-cYeNjW7vLc2X+W8U1bUtSn/25CjFLtqhyL5gOcnSAQY=", + "vim": "sha256-pA8QZGE0CPqG0GnfzbjGQHfm59IxybCqGpHMKIa98pE=", + "wall": "sha256-WzU8WAN0p158lR1tPguxSZFtkZGA9C/Bd+a21qClWYg=", + "wc": "sha256-cgGJek5nYKF2jmcalth3vTS/fU6yoo93IjuH/TThPRQ=", + "wget": "sha256-I6w9CRE7hZsVuIXQLsvgGvCHslSrrEx0sLlXcKA8wr8=", + "who": "sha256-mNf/+ZYV1fXZy2GimL0USIl/zQwklPpddX6pdMJ8eHY=", + "whoami": "sha256-6CoeXfms4Uu2Z8Ex1vPmWSfyx2stzdQNjhodRnKnVqc=", + "whois": "sha256-uXpP6/kRhMBdKnM7mEZt5LGE6tUiykyCngG7+7OCPMg=", + "xargs": "sha256-ZJJFxPHtmEmGRICKIVaZA4W9scLpMc5+7swbrRq0os4=", + "yes": "sha256-kSS7hzKeG6wi7hUj4d21LzrA1SWFTKPZLPKFMdR7CMc=", + "zip": "sha256-Z0H+rSfWQxk5kh51+GtC8dw+Oi7IqCsxSQdHGFx7k0k=", + "zsh": "sha256-/SnDVfM9ilBvfqynqOtWfCOUEhk1jUq3VdMjVwU54EI=", + "zstd": "sha256-EAhul2LIsUJxmpwkE5eLH3saYNN/uKkpp5B4TH9tBmQ=" +} diff --git a/ape/cosmos/BUILD.bazel b/ape/cosmos/BUILD.bazel new file mode 100644 index 00000000..33f6dab2 --- /dev/null +++ b/ape/cosmos/BUILD.bazel @@ -0,0 +1,38 @@ +load("@ape//ape/cosmos/lock:defs.bzl", "ape_cosmos_lock") + +# `bazel run` any of these targets to generate the lockfile + +ape_cosmos_lock( + name = "4.0.2", + out = "4.0.2.json", + tags = ["manual"], + version = "4.0.2", +) + +ape_cosmos_lock( + name = "3.9.2", + out = "3.9.2.json", + tags = ["manual"], + version = "3.9.2", +) + +ape_cosmos_lock( + name = "3.7.1", + out = "3.7.1.json", + tags = ["manual"], + version = "3.7.1", +) + +ape_cosmos_lock( + name = "3.3.1", + out = "3.3.1.json", + tags = ["manual"], + version = "3.3.1", +) + +ape_cosmos_lock( + name = "3.2.4", + out = "3.2.4.json", + tags = ["manual"], + version = "3.2.4", +) diff --git a/ape/cosmos/aliases/BUILD.bazel b/ape/cosmos/aliases/BUILD.bazel new file mode 100644 index 00000000..e69de29b diff --git a/ape/cosmos/aliases/BUILD.tmpl.bazel b/ape/cosmos/aliases/BUILD.tmpl.bazel new file mode 100644 index 00000000..c128d147 --- /dev/null +++ b/ape/cosmos/aliases/BUILD.tmpl.bazel @@ -0,0 +1,5 @@ +alias( + name = "{{name}}", + actual = "{{actual}}", + visibility = ["//visibility:public"], +) diff --git a/ape/cosmos/aliases/repository.bzl b/ape/cosmos/aliases/repository.bzl new file mode 100644 index 00000000..64996302 --- /dev/null +++ b/ape/cosmos/aliases/repository.bzl @@ -0,0 +1,38 @@ +load("@bazel_skylib//lib:structs.bzl", "structs") + +visibility("//...") + +DOC = """Generates aliases to the binary downloads.""" + +ATTRS = { + "srcs": attr.label_keyed_string_dict( + doc = "Aliases to create (`{'': ''}`, ...).", + allow_empty = False, + mandatory = True, + ), + "_template": attr.label( + allow_single_file = [".tmpl.bzl"], + default = ":BUILD.tmpl.bazel", + ), +} + +def implementation(rctx): + for actual, name in rctx.attr.srcs.items(): + rctx.template( + "{}/BUILD.bazel".format(name), + rctx.attr._template, + substitutions = { + "{{name}}": name, + "{{actual}}": str(actual), + }, + executable = False, + ) + +ape_cosmos_aliases = repository_rule( + doc = DOC, + attrs = ATTRS, + implementation = implementation, + local = True, +) + +aliases = ape_cosmos_aliases diff --git a/ape/cosmos/basenames.bzl b/ape/cosmos/basenames.bzl new file mode 100644 index 00000000..0186412d --- /dev/null +++ b/ape/cosmos/basenames.bzl @@ -0,0 +1,5 @@ +load("@metadata//:mapped.bzl", _MAPPED = "MAPPED") + +visibility("public") + +BASENAMES = [basename for basename in _MAPPED if not (basename.startswith("ape-") or basename.startswith("assimilate"))] diff --git a/ape/cosmos/defs.bzl b/ape/cosmos/defs.bzl new file mode 100644 index 00000000..637d827b --- /dev/null +++ b/ape/cosmos/defs.bzl @@ -0,0 +1,5 @@ +load(":extension.bzl", _cosmos = "cosmos") + +visibility("public") + +ape_cosmos = _cosmos diff --git a/ape/cosmos/download.bzl b/ape/cosmos/download.bzl new file mode 100644 index 00000000..9c5ed2c2 --- /dev/null +++ b/ape/cosmos/download.bzl @@ -0,0 +1,63 @@ +visibility("//...") + +DOC = """Describes a set of `cosmos` files to download. + +The `ape_cosmos_lock` executable rule is used to scrapped binary names and integrities into a lockfile: + +```py +# BUILD.bazel +load("@ape//ape/cosmos/lock:defs.bzl", "ape_cosmos_lock") + +# `bazel run` any of these targets to generate the lockfile + +ape_cosmos_lock( + name = "4.0.2", + out = "4.0.2.json", + tags = ["manual"], + version = "4.0.2", +) +``` + +The lockfile is then used in the extension to create download repositories for each binary: + +```py +cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") + +# Provide a download URL for the binaries (this it the default) +cosmos.url( + template = "https://cosmo.zip/pub/cosmos/v/{version}/bin/{name}", +) + +# Ingest the lockfile to expose the binaries as repositories +cosmos.download( + version = "4.0.2", + lock = "//:4.0.2.json", +) +``` + +Running `bazel mod tidy` will automatically update the `use_repo` for the extension. +""" + +ATTRS = { + "version": attr.string( + doc = "Release version of `cosmos` binaries to download.", + mandatory = True, + ), + "urls": attr.string_list( + doc = "A list of URLs that can be templated with `{version}`/`{name}` to provide the location of a `cosmos` binary.", + default = ["https://cosmo.zip/pub/cosmos/v/{version}/bin/{name}"], + allow_empty = False, + ), + "lock": attr.label( + doc = "A JSON lockfile that has binary names as the keys and sub-resource integrity (SRI) values for the values. The value can be set to `null` to allow uncached downloads. Integrities can be later upgraded by running the `:update` target under the generated repository.", + allow_single_file = [".json"], + mandatory = True, + ), +} + +ape_cosmos_download = tag_class( + doc = DOC, + attrs = ATTRS, +) + +download = ape_cosmos_download diff --git a/ape/cosmos/extension.bzl b/ape/cosmos/extension.bzl new file mode 100644 index 00000000..be42bcf3 --- /dev/null +++ b/ape/cosmos/extension.bzl @@ -0,0 +1,301 @@ +load("@bazel_skylib//lib:types.bzl", "types") +load("@download_utils//download/file:defs.bzl", "download_file") +load("//ape/entrypoint:defs.bzl", "ape_entrypoint") +load("//ape/cosmos/metadata:repository.bzl", "ape_cosmos_metadata") +load("//ape/cosmos/upload:repository.bzl", "ape_cosmos_upload") +load("//ape/cosmos/symlink:repository.bzl", "ape_cosmos_symlink") +load("//ape/cosmos/aliases:repository.bzl", "ape_cosmos_aliases") +load(":download.bzl", "download") +load(":override.bzl", "override") +load(":upload.bzl", "upload") +load(":use.bzl", "USE", "use") +load(":url.bzl", "url") + +visibility("//...") + +DOC = """An extension to download `cosmos.zip` pre-built binaries. + +# Getting Started + +The `ape_cosmos_lock` executable rule is used to scrapped binary names and integrities into a lockfile: + +```py +# BUILD.bazel +load("@ape//ape/cosmos/lock:defs.bzl", "ape_cosmos_lock") + +# `bazel run` any of these targets to generate the lockfile + +ape_cosmos_lock( + name = "4.0.2", + out = "4.0.2.json", + tags = ["manual"], + version = "4.0.2", +) +``` + +The lockfile is then used in the extension to create download repositories for each binary: + +```py +cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") + +# Provide a download URL for the binaries (this it the default) +cosmos.url( + template = "https://cosmo.zip/pub/cosmos/v/{version}/bin/{name}", +) + +# Ingest the lockfile to expose the binaries as repositories +cosmos.download( + version = "4.0.2", + lock = "//:4.0.2.json", +) +``` + +Running `bazel mod tidy` will automatically update the `use_repo` for the extension. + +# Overrides + +By default, the extension will create repositories to the latest version of each binary. + +In certain cases, newer binaries may have bugs in them. + +The `override` tag allows pinning a unversioned repository to point at a specific version. + +```py +cosmos.override( + basename = "gzip", + version = "3.3.1", +) +``` + +# Uploads + +The `upload` tag can provide a templated URL to provide upload targets for the downloaded binaries: + +```py +cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") +cosmos.upload( + template = "https://some.mirror.com/{version}/{name}", +) +``` + +When `bazel run @upload` is performed, each binary will be uploaded with `@ape//ape:curl`. +""" + +TAGS = { + "download": download, + "override": override, + "upload": upload, + "use": use, + "url": url, +} + +def _bootstrap(name): + # Need the raw launcher binaries to launch any APE binary + if name.startswith("ape-"): + return True + + # `assimilate` binaries are used to bootstrap assimilation + if name.startswith("assimilate"): + return True + + return False + +def _invalid(name): + # Repository cannot start with non-alphabetical characters such as `[` + if not name[0].isalpha(): + return True + + return False + +def _collect(mctx): + upload = None + root = None + urls = [] + locks = {} + overrides = {} + use = USE + + # Gather all lockfile information across the module graph + for mod in mctx.modules: + if mod.is_root: + for tag in mod.tags.use: + use = tag + + seen = {} + for tag in mod.tags.url: + if tag.template in seen: + continue + seen[tag.template] = True + urls.append(tag.template) + + for tag in mod.tags.upload: + if upload != None: + fail("Upload URL already set to `{}` cannot change to `{}`".format(upload, tag.template)) + upload = tag.template + + for tag in mod.tags.override: + overrides[tag.basename] = tag.version + + for tag in mod.tags.download: + src = json.decode(mctx.read(tag.lock)) + if not types.is_dict(src): + fail("Lockfile must contain a dictionary of binary names and sub-resource integrities (SRI) or `null` values: {}".format(tag.lock)) + + dst = locks.setdefault(tag.version, {}) + for name, integrity in src.items(): + if _invalid(name): + print("Skipping `cosmos` binary `{}-{}`".format(name, tag.version)) + continue + elif name not in dst: + dst[name] = integrity + elif not integrity and dst[name]: + continue + elif not dst[name]: + dst[name] = integrity + elif dst[name] != integrity: + fail("Mismatching integrity for `{}`. Both `{}` and `{}` have been provided as integrities for the binary".format(name, dst[name], integrity)) + dst[name] = integrity + + # Order the versions in ascending order using natural version sorting + ordered = [".".join([str(i) for i in v]) for v in sorted([[int(i) for i in v.split(".")] for v in locks])] + + # Calculate the latest version for each binary + mapped = {} + for version in ordered: + mapped |= {k.removesuffix(".ape"): version for k in locks[version]} + + # Perform any version overrides + invalid = ["{}-{}".format(k, v) for k, v in overrides.items() if k not in mapped or v not in locks] + if invalid: + fail("Invalid overrides not available in any provided lockfile: {}".format(", ".join(invalid))) + mapped |= overrides + + # Validate the used versions exist + invalid = [v for v in use.versions if v not in locks] + if invalid: + fail("Invalid versions to use: {}".format(", ".join(invalid))) + + # Return data to process into repositories + return struct( + urls = tuple(urls), + overrides = overrides, + upload = upload, + locks = locks, + ordered = tuple(ordered), + latest = ordered[-1], + mapped = mapped, + use = use, + ) + +def implementation(mctx): + # Direct repository names to return so `bazel mod tidy` can update `use_repo` in `MODULE.bazel` + direct = [] + + # Collect all the data from the extension tags across the graph + data = _collect(mctx) + + # Generate a download/entrypoint for each repository + for version, lock in data.locks.items(): + for name, integrity in lock.items(): + # Template the URLs for this binary/version + urls = [u.format(name = name, version = version) for u in data.urls] + + # Bootstrap binaries are used to create entrypoints so just download + if _bootstrap(name): + download_file( + name = "{}-{}".format(name, version), + urls = urls, + executable = True, + integrity = integrity, + output = "binary", + ) + if version in data.use.versions: + direct.append("{}-{}".format(name, version)) + continue + + # Generate a download/entrypoint pairing fo repositories + basename = name.removesuffix(".ape") + download_file( + name = "{}-{}-download".format(basename, version), + urls = [u.format(name = name, version = version) for u in data.urls], + executable = True, + integrity = integrity, + output = basename, + ) + ape_entrypoint( + name = "{}-{}".format(basename, version), + binary = "@{}-{}-download//:{}".format(basename, version, basename), + ) + if version in data.use.versions: + direct.append("{}-{}".format(name, version)) + + # Provide unversioned repository names for mapped versions + # These are the latest version _or_ overridden to a specific version with `cosmos.override` + for basename, version in data.mapped.items(): + if _bootstrap(basename): + ape_cosmos_symlink( + name = basename, + target = "@{}-{}".format(basename, version), + ) + if data.use.bootstrap: + direct.append(basename) + continue + + ape_entrypoint( + name = basename, + binary = "@{}-{}-download//:{}".format(basename, version, basename), + ) + + if data.use.unversioned: + direct.append(basename) + + # Create an aliases hub repository that can be used to redirect to each binary + ape_cosmos_aliases( + name = "aliases", + srcs = {"@{}//:binary".format(n): n for n in data.mapped}, + ) + if data.use.upload: + direct.append("aliases") + + # Output the metadata in `.bzl` format for consumption in `BUILD.bazel` files + ape_cosmos_metadata( + name = "metadata", + mapped = data.mapped, + latest = data.latest, + ordered = data.ordered, + basenames = {v: [b.removesuffix(".ape") for b in d] for v, d in data.locks.items()}, + ) + if data.use.metadata: + direct.append("metadata") + + # Upload targets for each downloaded binary + if data.upload: + ape_cosmos_upload( + name = "upload", + srcs = { + "@{}-{}//:binary".format(name.removesuffix(".ape"), version): data.upload.format(name = name, version = version) + for version, map in data.locks.items() + for name in map + }, + ) + if data.use.upload: + direct.append("upload") + + # Done! + if direct: + return mctx.extension_metadata( + root_module_direct_deps = direct, + root_module_direct_dev_deps = [], + reproducible = True, + ) + return mctx.extension_metadata( + reproducible = True, + ) + +ape_cosmos = module_extension( + doc = DOC, + implementation = implementation, + tag_classes = TAGS, +) + +cosmos = ape_cosmos diff --git a/ape/cosmos/lock/BUILD.bazel b/ape/cosmos/lock/BUILD.bazel new file mode 100644 index 00000000..049cc315 --- /dev/null +++ b/ape/cosmos/lock/BUILD.bazel @@ -0,0 +1,18 @@ +load("@rules_python//python:defs.bzl", "py_binary") + +py_library( + name = "python", + srcs = [ + "cli.py", + "download.py", + "integrity.py", + ], + deps = ["@rules_python//python/runfiles"], +) + +py_binary( + name = "lock", + srcs = ["__main__.py"], + main = "__main__.py", + deps = [":python"], +) diff --git a/ape/cosmos/lock/__main__.py b/ape/cosmos/lock/__main__.py new file mode 100644 index 00000000..cdb78f55 --- /dev/null +++ b/ape/cosmos/lock/__main__.py @@ -0,0 +1,8 @@ +#! /usr/bin/env python3 + +from __future__ import annotations + +from ape.cosmos.lock.cli import entry + +if __name__ == "__main__": + entry() diff --git a/ape/cosmos/lock/cli.py b/ape/cosmos/lock/cli.py new file mode 100644 index 00000000..04aeee2b --- /dev/null +++ b/ape/cosmos/lock/cli.py @@ -0,0 +1,243 @@ +from __future__ import annotations + +import json +from argparse import ArgumentParser, ArgumentTypeError +from concurrent.futures import ThreadPoolExecutor +from multiprocessing import cpu_count +from os import environ +from pathlib import Path, PurePath +from shlex import split +from shutil import copyfileobj +from sys import argv, exit, stdin, stdout +from typing import NoReturn, Protocol, TypeAlias, TypeVar + +from python.runfiles import Runfiles + +from .download import URL +from .download import pooled as binaries + + +class RunfileNotFoundError(FileNotFoundError): + pass + + +def runfile(path: PurePath) -> Path: + runfiles = Runfiles.Create() + assert runfiles, "No runfile directory found." + resolved = Path(runfiles.Rlocation(path)) + if not resolved.exists(): + raise RunfileNotFoundError(path) + return resolved + + +def resolve(value: str) -> Path: + path = Path(value) + if path.exists(): + return path + + if bwd := environ.get("BUILD_WORKING_DIRECTORY"): + resolved = Path(bwd, path) + if resolved.exists(): + return resolved + + try: + return runfile(str(path)) + except RunfileNotFoundError as e: + raise ArgumentTypeError("runfile not found: {e}") from e + + +class BazelArgumentParser(ArgumentParser): + def convert_arg_line_to_args(self, line): + return split(line) + + +def parser(exe: Path) -> ArgumentParser: + return BazelArgumentParser( + prog=str(exe), + description="Creates `cosmos` lock data", + fromfile_prefix_chars="@", + ) + + +class SupportsStr(Protocol): + def __str__(self) -> str: ... + + +AnyStrCovariant: TypeAlias = TypeVar("AnyStrCovariant", str, bytes, covariant=True) + + +class SupportsRead(Protocol[AnyStrCovariant]): + def read(self, size: int = -1, /) -> AnyStrCovariant: ... + + +AnyStrContravariant: TypeAlias = TypeVar( + "AnyStrContravariant", str, bytes, contravariant=True +) + + +class SupportsWriteFlush(Protocol[AnyStrContravariant]): + def write(self, data: AnyStrContravariant, /) -> int: ... + + def flush(self) -> None: ... + + +class Data(Protocol): + @property + def binary(self) -> SupportsStr: ... + + @property + def sri(self) -> SupportsStr: ... + + +class Dump(Protocol): + def data(self, data: Data, output: SupportsWriteFlush[str]) -> None: ... + + def end(self, output: SupportsWriteFlush[str]) -> int: ... + + +class Print(Dump): + def data(self, data: Data, output: SupportsWriteFlush[str]) -> None: + print(data, file=output) + + def end(self, output: SupportsWriteFlush[str]) -> int: + return 0 + + +class JsonSeq(Dump): + def data(self, data: Data, output: SupportsWriteFlush[str]) -> None: + output.write("\x1e") + json.dump({"name": str(data.name), "sri": str(data.sri)}, output) + output.write("\x0a") + output.flush() + + def end(self, output: SupportsWriteFlush[str]) -> int: + return 0 + + +class Json(Dump): + def __init__(self) -> None: + self.__data = {} + + def data(self, data: Data, output: SupportsWriteFlush[str]) -> None: + self.__data[str(data.name)] = str(data.sri) + + def end(self, output: SupportsWriteFlush[str]) -> int: + json.dump(self.__data, output, indent=2, sort_keys=True) + return 0 + + +def lock( + version, + url="https://cosmo.zip/pub/cosmos/v/{version}/bin/{name}", + jobs: int = cpu_count(), + dump: Dump = Print(), + output: SupportsWriteFlush[str] = stdout, + input: SupportsRead[str] | None = None, +) -> int: + if input is not None: + copyfileobj(input, output) + return 0 + + with ThreadPoolExecutor(max_workers=jobs) as pool: + for binary in binaries(pool, version, url=url): + if binary.name.endswith(".c"): + continue + if not binary.name[0].isalpha(): + continue + dump.data(binary, output) + return dump.end(output) + + +def input(value: str) -> SupportsRead[str]: + if value == "-": + return stdin + + return open(resolve(value)) + + +def output(value: str) -> SupportsWriteFlush[str]: + if value == "-": + return stdout + + path = PurePath(value) + if path.is_absolute(): + pass + elif bwd := environ.get("BUILD_WORKING_DIRECTORY"): + path = Path(bwd, path) + + return open(path, "w", encoding="utf-8") + + +def arguments(prsr: ArgumentParser) -> None: + prsr.add_argument( + "--url", + metavar="TEMPLATE", + help="The URL template to use for scraping.", + default=URL, + ) + prsr.add_argument( + "--input", + help="An input file to be copied to the output file..", + type=input, + ) + prsr.add_argument( + "--output", + help="Output location for the lock data.", + default=stdout, + type=output, + ) + prsr.add_argument( + "--jobs", + type=int, + default=cpu_count(), + help="Number of downloads to run in parallel.", + ) + prsr.add_argument( + "--json", + help="Output the binaries as `application/json`", + action="store_const", + const=Json(), + dest="dump", + ) + prsr.add_argument( + "--json-seq", + help="Output the binaries as `application/json-seq`", + action="store_const", + const=JsonSeq(), + dest="dump", + ) + prsr.add_argument( + "--version", + required=True, + help="The version of `cosmos` to lock.", + ) + prsr.set_defaults(func=lock, dump=JsonSeq()) + + +def main(exe: Path, *args: str) -> int: + prsr = parser(exe) + arguments(prsr) + + try: + baked = runfile("baked.args") + except RunfileNotFoundError: + pass + else: + args = (f"@{baked}", *args) + + parsed = prsr.parse_args(args) + + data = vars(parsed) + func = data.pop("func") + assert callable(func) + + try: + result = func(**data) + assert isinstance(result, int) + return result + except KeyboardInterrupt: + return 130 + + +def entry() -> NoReturn: + exit(main(Path(argv[0]), *argv[1:])) diff --git a/ape/cosmos/lock/defs.bzl b/ape/cosmos/lock/defs.bzl new file mode 100644 index 00000000..781982f3 --- /dev/null +++ b/ape/cosmos/lock/defs.bzl @@ -0,0 +1,5 @@ +load(":rule.bzl", _lock = "lock") + +visibility("public") + +ape_cosmos_lock = _lock diff --git a/ape/cosmos/lock/download.py b/ape/cosmos/lock/download.py new file mode 100644 index 00000000..842f0edb --- /dev/null +++ b/ape/cosmos/lock/download.py @@ -0,0 +1,111 @@ +from __future__ import annotations + +from collections.abc import Container +from concurrent.futures import Executor, ThreadPoolExecutor, as_completed +from dataclasses import asdict, dataclass +from hashlib import new as Hash +from html.parser import HTMLParser +from logging import getLogger +from multiprocessing import cpu_count +from typing import Final, Iterable, Iterator, Literal +from urllib.parse import quote, unquote +from urllib.request import urlopen + +from .integrity import SRI + +LOG: Final = getLogger(__name__) +URL: Final = "https://cosmo.zip/pub/cosmos/v/{version}/bin/{name}" + + +@dataclass(frozen=True) +class Scraped: + name: str + template: str + version: str + + @property + def basename(self) -> str: + return self.binary.removesuffix(".ape") + + @property + def url(self) -> str: + return self.template.format(name=quote(self.name), version=self.version) + + +class CosmosHTMLParser(HTMLParser): + def __init__(self, exclude=frozenset(("../",))): + super().__init__() + self.__exclude: Final = exclude + self.__found = [] + + @property + def exclude(self) -> Container[str]: + return self.__exclude + + def found(self) -> Iterable[str]: + found = self.__found + self.__found = [] + return found + + def handle_starttag(self, tag, attrs): + if tag == "a": + if found := next(v for k, v in attrs if k == "href"): + if found not in self.exclude: + self.__found.append(unquote(found)) + + +def scrape(version: str, url: str = URL) -> Iterator[Scraped]: + # TODO: use integrity file if available + # https://github.com/jart/cosmopolitan/issues/1360 + with urlopen(url.format(version=version, name="")) as stream: + parser = CosmosHTMLParser() + while buffer := stream.read(1024): + parser.feed(buffer.decode("utf-8")) + for name in parser.found(): + yield Scraped(name=name, template=url, version=version) + + +def integrity(url: str, hash: Literal["sha256"] = "sha256") -> SRI: + LOG.debug("calculating integrity: %s", url) + with urlopen(url) as stream: + hasher = Hash(hash) + while buffer := stream.read(1024): + hasher.update(buffer) + return SRI(hash="sha256", digest=hasher.digest()) + + +@dataclass(frozen=True) +class Binary(Scraped): + sri: SRI + + +def serial( + version: str, + url: str = URL, +) -> Iterator[Binary]: + for scraped in scrape(version, url): + sri = integrity(scraped.url) + yield Binary(sri=sri, **asdict(scraped)) + + +def pooled( + pool: Executor, + version: str, + url: str = URL, +) -> Iterator[Binary]: + futures = { + pool.submit(integrity, scraped.url): scraped for scraped in scrape(version, url) + } + for future in as_completed(futures): + sri = future.result() + scraped = futures[future] + yield Binary(sri=sri, **asdict(scraped)) + + +def threaded( + version: str, + url: str = URL, + threads: int = cpu_count(), +) -> Iterator[Binary]: + with ThreadPoolExecutor(max_workers=threads) as pool: + yield from pooled(pool, version, url) diff --git a/ape/cosmos/lock/integrity.py b/ape/cosmos/lock/integrity.py new file mode 100644 index 00000000..ab60e353 --- /dev/null +++ b/ape/cosmos/lock/integrity.py @@ -0,0 +1,14 @@ +from __future__ import annotations + +from base64 import standard_b64encode as base64 +from dataclasses import dataclass +from typing import Collection, Literal + + +@dataclass(frozen=True) +class SRI: + hash: Literal["sha256"] + digest: Collection[bytes] + + def __str__(self) -> str: + return f"{self.hash}-{base64(self.digest).decode('utf-8')}" diff --git a/ape/cosmos/lock/rule.bzl b/ape/cosmos/lock/rule.bzl new file mode 100644 index 00000000..92fbdb97 --- /dev/null +++ b/ape/cosmos/lock/rule.bzl @@ -0,0 +1,121 @@ +visibility("//...") + +DOC = """Generates a lock file for a versioned `cosmos.zip` end point. + +```py +load("@ape//ape/cosmos/lock:defs.bzl", "ape_cosmos_lock") + +# `bazel run` any of these targets to generate the lockfile + +ape_cosmos_lock( + name = "4.0.2", + out = "4.0.2.json", + tags = ["manual"], + version = "4.0.2", +) +``` + +Performing `bazel run :4.0.2` will update the `:4.0.2.json` file with a dictionary of binary names and their sub-resource integrity. + +The lock file can then be used with the `@ape//ape/cosmos:defs.bzl#ape_cosmos` extension. +""" + +ATTRS = { + "version": attr.string( + doc = "The version of `cosmos` to generate a lock file for.", + mandatory = True, + ), + "url": attr.string( + doc = "The Python format template URL to the `cosmos` binaries to lock.", + default = "https://cosmo.zip/pub/cosmos/v/{version}/bin/{name}", + ), + "out": attr.output( + doc = "The output lockfile. Commonly in `.json` or `.jseq` formats.", + mandatory = True, + ), + "format": attr.string( + doc = "Forces an output format, rather than determining from `out` extension.", + values = ["json", "json-seq"], + ), + "_lock": attr.label( + doc = "Locking executable.", + executable = True, + cfg = "exec", + default = ":lock", + ), +} + +JOBS = 16 + +def _resources(os, inputs): + return {"cpu": JOBS} + +def _runfile(label, file): + path = file.short_path + if path.startswith("../"): + return path.removeprefix("../") + return "{}/{}".format(label.workspace_name or "_main", path) + +def implementation(ctx): + output = ctx.outputs.out + + lock = ctx.actions.args() + lock.add("--url", ctx.attr.url) + lock.add("--jobs", JOBS) + lock.add("--version", ctx.attr.version) + lock.add("--output", output) + if ctx.attr.format: + lock.add("--{}".format(ctx.attr.format)) + elif output.extension == "json": + lock.add("--json") + elif output.extension == "jseq": + lock.add("--json-seq") + else: + fail("Unknown output extension: {}".format(output.extension)) + + ctx.actions.run( + outputs = [output], + executable = ctx.attr._lock.files_to_run, + arguments = [lock], + mnemonic = "ApeCosmosLock", + execution_requirements = {"requires-network": "1"}, + resource_set = _resources, + ) + + copy = ctx.actions.args() + copy.add("--version", ctx.attr.version) + copy.add("--input", _runfile(ctx.label, output)) + copy.add("--output", output.short_path) + + arguments = ctx.actions.declare_file("baked.args") + ctx.actions.write( + output = arguments, + content = copy, + is_executable = False, + ) + + executable = ctx.actions.declare_file("{}/copy".format(ctx.label.name)) + ctx.actions.symlink( + output = executable, + target_file = ctx.executable._lock, + is_executable = True, + ) + + files = depset([output]) + symlinks = {"baked.args": arguments} + runfiles = ctx.runfiles(files = [arguments, output], root_symlinks = symlinks) + runfiles = runfiles.merge(ctx.attr._lock.default_runfiles) + + default = DefaultInfo(executable = executable, files = files, runfiles = runfiles) + + return default + return DefaultInfo(files = files) + +lock = rule( + doc = DOC, + attrs = ATTRS, + implementation = implementation, + executable = True, +) + +ape_cosmos_lock = lock diff --git a/ape/cosmos/metadata/BUILD.bazel b/ape/cosmos/metadata/BUILD.bazel new file mode 100644 index 00000000..e69de29b diff --git a/ape/cosmos/metadata/repository.bzl b/ape/cosmos/metadata/repository.bzl new file mode 100644 index 00000000..48b8b5c9 --- /dev/null +++ b/ape/cosmos/metadata/repository.bzl @@ -0,0 +1,60 @@ +load("@bazel_skylib//lib:structs.bzl", "structs") + +visibility("//...") + +DOC = """Writes out APE `cosmos` extension metadata into `.bzl` files. + +Repository attributes are written to file, for `mapped` attribute a `mapped.bzl#MAPPED` will be created. +""" + +ATTRS = { + "mapped": attr.string_dict( + doc = "Mapped versions for for each `cosmos` binary (`{'': ''}`, ...).", + allow_empty = False, + mandatory = True, + ), + "latest": attr.string( + doc = "The latest version of `cosmos` configured.", + mandatory = True, + ), + "ordered": attr.string_list( + doc = "The ascending ordered versions of `cosmos`.", + mandatory = True, + ), + "basenames": attr.string_list_dict( + doc = "Binaries in each version (`{'': ['', ...], ...}`).", + allow_empty = False, + mandatory = True, + ), + "_template": attr.label( + allow_single_file = [".tmpl.bzl"], + default = ":value.tmpl.bzl", + ), +} + +def _template(rctx, attr): + rctx.template( + "{}.bzl".format(attr), + rctx.attr._template, + substitutions = { + "{{name}}": attr.upper(), + "{{value}}": repr(getattr(rctx.attr, attr)), + }, + executable = False, + ) + +def implementation(rctx): + for attr in ATTRS: + if not attr.startswith("_"): + _template(rctx, attr) + + rctx.file("BUILD.bazel", "", executable = False) + +ape_cosmos_metadata = repository_rule( + doc = DOC, + attrs = ATTRS, + implementation = implementation, + local = True, +) + +metadata = ape_cosmos_metadata diff --git a/ape/cosmos/metadata/value.tmpl.bzl b/ape/cosmos/metadata/value.tmpl.bzl new file mode 100644 index 00000000..d527eadd --- /dev/null +++ b/ape/cosmos/metadata/value.tmpl.bzl @@ -0,0 +1,3 @@ +visibility("public") + +{{name}} = {{value}} diff --git a/ape/cosmos/override.bzl b/ape/cosmos/override.bzl new file mode 100644 index 00000000..2d640225 --- /dev/null +++ b/ape/cosmos/override.bzl @@ -0,0 +1,35 @@ +visibility("//...") + +DOC = """Overrides a downloaded `cosmos` binary version. + +By default, the extension will create repositories to the latest version of each binary. + +In certain cases, newer binaries may have bugs in them. + +The `override` tag allows pinning a unversioned repository to point at a specific version. + +```py +cosmos.override( + basename = "gzip", + version = "3.3.1", +) +``` +""" + +ATTRS = { + "basename": attr.string( + doc = "Name of the APE binary to version override.", + mandatory = True, + ), + "version": attr.string( + doc = "Override version for the bianry rather than selecting the latest..", + mandatory = True, + ), +} + +ape_cosmos_override = tag_class( + doc = DOC, + attrs = ATTRS, +) + +override = ape_cosmos_override diff --git a/ape/cosmos/symlink/BUILD.bazel b/ape/cosmos/symlink/BUILD.bazel new file mode 100644 index 00000000..e69de29b diff --git a/ape/cosmos/symlink/repository.bzl b/ape/cosmos/symlink/repository.bzl new file mode 100644 index 00000000..61861da6 --- /dev/null +++ b/ape/cosmos/symlink/repository.bzl @@ -0,0 +1,41 @@ +visibility("//ape/cosmos/...") + +DOC = "Symlinks a repository to another." + +ATTRS = { + "target": attr.label( + doc = "The repository to symlink to.", + mandatory = True, + ), +} + +def root(rctx, label): + workspace = label.relative("WORKSPACE") + path = rctx.path(workspace) + if path.exists: + return path.dirname + + repo = label.relative("REPO.bazel") + path = rctx.path(repo) + if path.exists: + return path.dirname + + return None + +def implementation(rctx): + label = rctx.attr.target + path = root(rctx, label) + if not path: + fail("Can only symlink repository labels.".format(label)) + rctx.delete(".") + rctx.symlink(path, ".") + +ape_cosmos_symlink = repository_rule( + doc = DOC, + attrs = ATTRS, + implementation = implementation, + configure = True, + local = True, +) + +symlink = ape_cosmos_symlink diff --git a/ape/cosmos/upload.bzl b/ape/cosmos/upload.bzl new file mode 100644 index 00000000..3bb26bc6 --- /dev/null +++ b/ape/cosmos/upload.bzl @@ -0,0 +1,26 @@ +visibility("//...") + +DOC = """The `upload` tag can provide a templated URL to provide upload targets for the downloaded binaries: + +```py +cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") +cosmos.upload( + template = "https://some.mirror.com/{version}/{name}", +) +``` + +When `bazel run @upload` is performed, each binary will be uploaded with `@ape//ape:curl`. +""" + +ATTRS = { + "template": attr.string( + doc = "A URL that can be templated with `{version}`/`{name}` to provide the location to upload a `cosmos` binary.", + ), +} + +ape_cosmos_upload = tag_class( + doc = DOC, + attrs = ATTRS, +) + +upload = ape_cosmos_upload diff --git a/ape/cosmos/upload/BUILD.bazel b/ape/cosmos/upload/BUILD.bazel new file mode 100644 index 00000000..fea2958c --- /dev/null +++ b/ape/cosmos/upload/BUILD.bazel @@ -0,0 +1,6 @@ +# TODO: add version uploads aliases here + +alias( + name = "upload", + actual = "@upload", +) diff --git a/ape/cosmos/upload/BUILD.filegroup.tmpl.bazel b/ape/cosmos/upload/BUILD.filegroup.tmpl.bazel new file mode 100644 index 00000000..0545ac15 --- /dev/null +++ b/ape/cosmos/upload/BUILD.filegroup.tmpl.bazel @@ -0,0 +1,6 @@ +filegroup( + name = "{{name}}", + srcs = {{srcs}}, + tags = ["manual"], + visibility = ["//visibility:public"], +) diff --git a/ape/cosmos/upload/BUILD.upload.tmpl.bazel b/ape/cosmos/upload/BUILD.upload.tmpl.bazel new file mode 100644 index 00000000..2d975772 --- /dev/null +++ b/ape/cosmos/upload/BUILD.upload.tmpl.bazel @@ -0,0 +1,31 @@ +CMD = """ +$(location @ape//ape:curl) \ + --netrc \ + --silent \ + --show-error \ + --fail \ + --location \ + --retry 3 \ + --retry-delay 1 \ + --upload-file '$<' \ + --header 'Accepts: application/json' \ + --output '$@' \ + '{{url}}' +""" + +genrule( + name = "{{name}}", + srcs = ["{{target}}"], + outs = ["{{name}}.json"], + cmd_bash = CMD, + cmd_bat = CMD, + message = "Uploading `{{name}}`", + tags = [ + "manual", + "no-cache", + "no-remote-exec", + "requires-network", + ], + tools = ["@ape//ape:curl"], + visibility = ["//visibility:public"], +) diff --git a/upload/README.md b/ape/cosmos/upload/README.md similarity index 100% rename from upload/README.md rename to ape/cosmos/upload/README.md diff --git a/ape/cosmos/upload/repository.bzl b/ape/cosmos/upload/repository.bzl new file mode 100644 index 00000000..1f9d3f9e --- /dev/null +++ b/ape/cosmos/upload/repository.bzl @@ -0,0 +1,65 @@ +visibility("//...") + +DOC = """Generates a repository to upload APE `cosmos` binaries. + +Provides a `genrule` for each that performs an upload with `@ape//ape:curl`. + +All `genrule`s are pulled into a `upload` file group. + +The upload of all binaries can be performed with `bazel build @upload`. + +Commonly, this would be a `bazel run` target but it takes advantage of the local checking to only upload binaries that have changed. +""" + +ATTRS = { + "srcs": attr.label_keyed_string_dict( + doc = "Binaries to upload to URLs.", + allow_empty = False, + mandatory = True, + ), + "_upload": attr.label( + allow_single_file = [".tmpl.bzl"], + default = ":BUILD.upload.tmpl.bazel", + ), + "_filegroup": attr.label( + allow_single_file = [".tmpl.bzl"], + default = ":BUILD.filegroup.tmpl.bazel", + ), +} + +def implementation(rctx): + SEPARATOR = Label("@upload").workspace_name.removesuffix("upload")[-1] + + names = [] + for label, url in rctx.attr.srcs.items(): + name = label.workspace_name.rsplit(SEPARATOR, 1)[-1] + rctx.template( + "{}/BUILD.bazel".format(name), + rctx.attr._upload, + substitutions = { + "{{name}}": name, + "{{target}}": str(label), + "{{url}}": url, + }, + executable = True, + ) + names.append(name) + + rctx.template( + "BUILD.bazel", + rctx.attr._filegroup, + substitutions = { + "{{name}}": "upload", + "{{srcs}}": repr(["//{}".format(n) for n in names]), + }, + executable = False, + ) + +ape_cosmos_upload = repository_rule( + doc = DOC, + attrs = ATTRS, + implementation = implementation, + local = True, +) + +upload = ape_cosmos_upload diff --git a/ape/cosmos/url.bzl b/ape/cosmos/url.bzl new file mode 100644 index 00000000..807aa9d4 --- /dev/null +++ b/ape/cosmos/url.bzl @@ -0,0 +1,26 @@ +visibility("//...") + +DOC = """Provides a templated URL for use in `cosmos` binary downloads: + +```py +cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") + +# Provide a download URL for the binaries (this it the default) +cosmos.url( + template = "https://cosmo.zip/pub/cosmos/v/{version}/bin/{name}", +) +``` +""" + +ATTRS = { + "template": attr.string( + doc = "A URLs that can be templated with `{version}`/`{name}` to provide the location of a `cosmos` binary.", + ), +} + +ape_cosmos_url = tag_class( + doc = DOC, + attrs = ATTRS, +) + +url = ape_cosmos_url diff --git a/ape/cosmos/use.bzl b/ape/cosmos/use.bzl new file mode 100644 index 00000000..96da0a9f --- /dev/null +++ b/ape/cosmos/use.bzl @@ -0,0 +1,56 @@ +visibility("//...") + +DOC = """Determines which `cosmos` repositories to use via `bazel mod tidy`. + +Not often used but can help with importing _all_ generated repositories, if needed. + +```py +cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") + +cosmos.use( + unversioned = True, + bootstrap = True, + metadata = True, + upload = True, + aliases = True, + versions = ["4.0.2"], +) +``` +""" + +ATTRS = { + "unversioned": attr.bool( + doc = "Import the unversioned convenience repositories.", + ), + "bootstrap": attr.bool( + doc = "Import the bootstrap repositories such as the APE launcher and APE assimilator.", + ), + "metadata": attr.bool( + doc = "Import the metadata repository.", + ), + "upload": attr.bool( + doc = "Import the upload repository.", + ), + "aliases": attr.bool( + doc = "Import the alias repository.", + ), + "versions": attr.string_list( + doc = "Imports all repositories for a specific version.", + ), +} + +USE = struct( + unversioned = False, + bootstrap = False, + metadata = False, + upload = False, + aliases = False, + versions = (), +) + +ape_cosmos_use = tag_class( + doc = DOC, + attrs = ATTRS, +) + +use = ape_cosmos_use diff --git a/ape/entrypoint/repository.bzl b/ape/entrypoint/repository.bzl index 2d9d6605..84f30978 100644 --- a/ape/entrypoint/repository.bzl +++ b/ape/entrypoint/repository.bzl @@ -1,3 +1,5 @@ +load("//ape:separator.bzl", "SEPARATOR") + visibility("//ape/...") DOC = """Provides a executable entrpoint file. @@ -11,14 +13,14 @@ ATTRS = { allow_single_file = True, executable = True, cfg = "exec", - default = "@launcher//:ape", + default = "@launcher//:binary", ), "assimilate": attr.label( doc = "The assimilation APE binary.", allow_single_file = True, executable = True, cfg = "exec", - default = "@cosmos-assimilate//:assimilate", + default = "@assimilate//:binary", ), "binary": attr.label( doc = "The αcτµαlly pδrταblε εxεcµταblε binary.", @@ -52,8 +54,13 @@ def implementation(rctx): if result.return_code != 0: fail("Failed to assimilate: {}".format(cmd)) + _, found, name = rctx.name.rpartition(SEPARATOR) + if not found: + fail("Failed to find separator in repository name.") + rctx.symlink("entrypoint", name) + rctx.template("BUILD.bazel", rctx.attr.build, { - "{{exports}}": repr(["entrypoint"]), + "{{exports}}": repr(["entrypoint", name]), "{{binary}}": str(rctx.attr.binary), }) diff --git a/ape/pe/repository.bzl b/ape/pe/repository.bzl index 0be08280..05795ca0 100644 --- a/ape/pe/repository.bzl +++ b/ape/pe/repository.bzl @@ -57,9 +57,11 @@ def implementation(rctx): fail("Failed to compile C# APE: {}".format(result.stdout)) rctx.symlink("ape.exe", "ape") + rctx.symlink("ape.exe", "binary") + rctx.symlink("ape.exe", "entrypoint") rctx.template("BUILD.bazel", rctx.attr.build, { - "{{exports}}": repr(["ape"]), + "{{exports}}": repr(["ape", "binary", "entrypoint"]), }) pe = repository_rule( diff --git a/ape/separator.bzl b/ape/separator.bzl new file mode 100644 index 00000000..783656b3 --- /dev/null +++ b/ape/separator.bzl @@ -0,0 +1,3 @@ +visibility("//...") + +SEPARATOR = Label("@launcher").workspace_name.removesuffix("launcher")[-1] diff --git a/ape/test/BUILD.bazel b/ape/test/BUILD.bazel deleted file mode 100644 index dd4f0656..00000000 --- a/ape/test/BUILD.bazel +++ /dev/null @@ -1,187 +0,0 @@ -load("//ape/test:rule.bzl", "test") - -exports_files([ - "nt.tmpl.bat", - "bash.tmpl.sh", -]) - -alias( - name = "template", - actual = select({ - "@toolchain_utils//toolchain/constraint/os:windows": ":nt.tmpl.bat", - "//conditions:default": ":bash.tmpl.sh", - }), - visibility = ["//ape:__subpackages__"], -) - -# TODO: test commented binaries -[ - test( - name = binary, - size = "small", - arguments = arguments, - target = "//ape:{}".format(binary), - ) - for binary, arguments in { - "assimilate": ["-v"], - "awk": ["--version"], - "b2sum": ["--version"], - "base32": ["--version"], - "base64": ["--version"], - "basename": ["--version"], - "basenc": ["--version"], - "bash": ["--version"], - # "berry": ["--version"], - "brotli": ["--version"], - "bzip2": ["--version"], - "cat": ["--version"], - "chcon": ["--version"], - "chgrp": ["--version"], - "chown": ["--version"], - "chroot": ["--version"], - "cksum": ["--version"], - "clang-format": ["--version"], - "cmp": ["--version"], - "comm": ["--version"], - "cp": ["--version"], - "csplit": ["--version"], - "ctags": ["--version"], - "curl": ["--version"], - "cut": ["--version"], - # "dash": ["-c", "exit"], - "datasette": ["--version"], - "date": ["--version"], - "dd": ["--version"], - "df": ["--version"], - "diff": ["--version"], - "diff3": ["--version"], - "dir": ["--version"], - "dircolors": ["--version"], - "dirname": ["--version"], - "du": ["--version"], - "echo": ["--version"], - # "emacs": ["--version"], - "emacsclient": ["--version"], - "env": ["--version"], - "expand": ["--version"], - "expr": ["--version"], - "factor": ["--version"], - # "false": ["--version"], - "find": ["--version"], - "fmt": ["--version"], - "fold": ["--version"], - "gmake": ["--version"], - # "greenbean": ["--help"], - "grep": ["--version"], - "groups": ["--version"], - "gzip": ["--version"], - "head": ["--version"], - "id": ["--version"], - "install": ["--version"], - "join": ["--version"], - "kill": ["--version"], - "less": ["--version"], - "life": ["--version"], - "link": ["--version"], - "ln": ["--version"], - "locate": ["--version"], - "logname": ["--version"], - "ls": ["--version"], - "lua": ["-v"], - "make": ["--version"], - "md5sum": ["--version"], - "mkdir": ["--version"], - "mkfifo": ["--version"], - "mknod": ["--version"], - "mktemp": ["--version"], - "mktemper": ["test-XXXXXXXXXXXXX"], - "mv": ["--version"], - "nano": ["--version"], - "nesemu1": ["--version"], - "nice": ["--version"], - "ninja": ["--version"], - "nl": ["--version"], - "nohup": ["--version"], - "nproc": ["--version"], - "numfmt": ["--version"], - "od": ["--version"], - "paste": ["--version"], - "patch": ["--version"], - "pathchk": ["--version"], - "pigz": ["--version"], - "pinky": ["--version"], - "pledge": ["--version"], - "pr": ["--version"], - "printenv": ["--version"], - "printf": ["--version"], - "printimage": ["-?"], - "ptx": ["--version"], - "pwd": ["--version"], - "python": ["--version"], - "qjs": ["--quit"], - "readlink": ["--version"], - "realpath": ["--version"], - # "redbean": ["--help"], - "rm": ["--version"], - "rmdir": ["--version"], - "rsync": ["--version"], - "runcon": ["--version"], - # "script": ["--version"], - "sdiff": ["--version"], - "sed": ["--version"], - "seq": ["--version"], - "sha1sum": ["--version"], - "sha224sum": ["--version"], - "sha256sum": ["--version"], - "sha384sum": ["--version"], - "sha512sum": ["--version"], - "shred": ["--version"], - "shuf": ["--version"], - "sleep": ["--version"], - "sort": ["--version"], - "split": ["--version"], - "sqlite3": ["--version"], - "stat": ["--version"], - "stty": ["--version"], - "sum": ["--version"], - "sync": ["--version"], - "tac": ["--version"], - "tail": ["--version"], - "tar": ["--version"], - "tee": ["--version"], - "test": ["--version"], - "tidy": ["--version"], - "timeout": ["--version"], - "tmux": ["-V"], - "touch": ["--version"], - "tr": ["--version"], - "tree": ["--version"], - "true": ["--version"], - "truncate": ["--version"], - "tsort": ["--version"], - "tty": ["--version"], - # "ttyinfo": ["--version"], - "uname": ["--version"], - # "unbourne": ["--version"], - "unexpand": ["--version"], - "uniq": ["--version"], - "unlink": ["--version"], - "unzip": ["--help"], - "uptime": ["--version"], - "users": ["--version"], - "vdir": ["--version"], - # "verynice": ["--version"], - "vim": ["--version"], - "wall": ["--version"], - "wc": ["--version"], - "wget": ["--version"], - "who": ["--version"], - "whoami": ["--version"], - "xargs": ["--version"], - "xz": ["--version"], - "yes": ["--version"], - "zip": ["--version"], - "zsh": ["--version"], - "zstd": ["--version"], - }.items() -] diff --git a/ape/test/bash.tmpl.sh b/ape/test/bash.tmpl.sh deleted file mode 100644 index 2b250e0d..00000000 --- a/ape/test/bash.tmpl.sh +++ /dev/null @@ -1,28 +0,0 @@ -#! /usr/bin/env bash - -# Strict shell -set -o nounset - -# Bazel substitutions -TARGET="{{target}}" -ARGUMENTS="{{arguments}}" -CODE="{{code}}" -readonly TARGET ARGUMENTS CODE - -# Process the arguments -declare -a ARGS -printf '%s\n' "${ARGUMENTS}" | - while IFS= read -r LINE; do - ARGS+=("${LINE}") - done - -# Execute! -"${TARGET}" "${ARGUMENTS[@]}" -STATUS=$? -readonly STATUS - -# Check the exit code -if test "${CODE}" != "${STATUS}"; then - printf >&2 'Error: incorrect exit code (%i): %s %s\n' "${STATUS}" "${TARGET}" "${ARGUMENTS[*]}" - exit 126 -fi diff --git a/ape/test/nt.tmpl.bat b/ape/test/nt.tmpl.bat deleted file mode 100644 index bc1c4fb9..00000000 --- a/ape/test/nt.tmpl.bat +++ /dev/null @@ -1,51 +0,0 @@ -@echo off - -:: Enable Batch extensions -verify other 2>nul -setlocal EnableExtensions -if errorlevel 1 ( - echo "Failed to enable extensions" - exit /b 120 -) - -:: Check for delayed expansion of variables with `!VAR!` -verify other 2>nul -setlocal EnableDelayedExpansion -if errorlevel 1 ( - echo "Failed to enable extensions" - exit /b 120 -) -setlocal DisableDelayedExpansion - -:: Bazel substitutions -set "TARGET={{target}}" -set "ARGUMENTS={{arguments}}" -set "CODE={{code}}" - -:: Runfiles -if [%RUNFILES_MANIFEST_ONLY%] neq [1] ( - echo>&2.Only runfile manifests are supported - exit /b 2 -) -setlocal EnableDelayedExpansion -for %%v in (TARGET) do ( - for /f "tokens=1,2* usebackq" %%a in ("%RUNFILES_MANIFEST_FILE%") do ( - if "_main/!%%v!" == "%%a" ( - set "%%v=%%~fb" - ) - if "!%%v!" == "../%%a" ( - set "%%v=%%~fb" - ) - ) -) -setlocal DisableDelayedExpansion - -:: Execute! -for /f %%a in ("%TARGET%") do set EXTENSION=%%~xa -if "%EXTENSION%" == ".bat" set LAUNCHER=call -%LAUNCHER% %TARGET% %ARGUMENTS% -set "STATUS=%ERRORLEVEL%" -if %STATUS% neq %CODE% ( - >&2 echo.Error: incorrect exit code ^(%STATUS%^): %TARGET% %ARGUMENTS% - exit /b %STATUS% -) \ No newline at end of file diff --git a/ape/test/rule.bzl b/ape/test/rule.bzl deleted file mode 100644 index 32fb7cfa..00000000 --- a/ape/test/rule.bzl +++ /dev/null @@ -1,65 +0,0 @@ -visibility("//ape/test/...") - -DOC = """Executes a binary target, with optional arguments, and validates the exit code. - -Used as a simple test rule to validate the ape binaries run on the host system. -""" - -ATTRS = { - "target": attr.label( - doc = "The ape binary target to test", - allow_single_file = True, - executable = True, - cfg = "exec", - ), - "arguments": attr.string_list( - doc = "Arguments to give to the binary.", - ), - "code": attr.int( - doc = "The expected status code from the binary.", - default = 0, - ), - "template": attr.label( - doc = "The executable template script.", - allow_single_file = True, - default = ":template", - ), -} - -def stringify(value): - return str(value) - -def implementation(ctx): - executable = ctx.actions.declare_file("{}.{}".format(ctx.label.name, ctx.file.template.extension)) - - substitutions = ctx.actions.template_dict() - substitutions.add("{{target}}", ctx.file.target.short_path) - substitutions.add("{{code}}", str(ctx.attr.code)) - substitutions.add_joined("{{arguments}}", depset(ctx.attr.arguments), join_with = "\n", map_each = stringify) - - ctx.actions.expand_template( - template = ctx.file.template, - output = executable, - computed_substitutions = substitutions, - is_executable = True, - ) - - files = depset([executable]) - - runfiles = ctx.runfiles([executable]) - runfiles = runfiles.merge(ctx.attr.target.default_runfiles) - - return DefaultInfo( - executable = executable, - files = files, - runfiles = runfiles, - ) - -ape_test = rule( - doc = DOC, - attrs = ATTRS, - implementation = implementation, - test = True, -) - -test = ape_test diff --git a/ape/toolchain/ape/BUILD.bazel b/ape/toolchain/ape/BUILD.bazel index dede826d..33c6733e 100644 --- a/ape/toolchain/ape/BUILD.bazel +++ b/ape/toolchain/ape/BUILD.bazel @@ -11,7 +11,7 @@ toolchain_type( toolchain_info( name = "ape-{}-{}".format(cpu, os), tags = ["manual"], - target = "{}//:ape".format(target), + target = "{}//:binary".format(target), ), toolchain( name = "{}-{}".format(cpu, os), diff --git a/ape/toolchain/info/BUILD.bazel b/ape/toolchain/info/BUILD.bazel index 1f68880d..9baf616f 100644 --- a/ape/toolchain/info/BUILD.bazel +++ b/ape/toolchain/info/BUILD.bazel @@ -1,11 +1,11 @@ -load("//:binaries.bzl", "BINARIES") +load("//ape/cosmos:basenames.bzl", "BASENAMES") load("@toolchain_utils//toolchain/info:defs.bzl", "toolchain_info") [ toolchain_info( - name = binary, - target = "//ape:{}".format(binary), + name = basename, + target = "//ape:{}".format(basename), visibility = ["//visibility:public"], ) - for binary in BINARIES + for basename in BASENAMES ] diff --git a/binaries.bzl b/binaries.bzl deleted file mode 100644 index 67b221fe..00000000 --- a/binaries.bzl +++ /dev/null @@ -1,169 +0,0 @@ -visibility("//...") - -BINARIES = ( - "assimilate", - "awk", - "b2sum", - "base32", - "base64", - "basename", - "basenc", - "bash", - "berry", - "brotli", - "bzip2", - "cat", - "chcon", - "chgrp", - "chmod", - "chown", - "chroot", - "cksum", - "clang-format", - "cmp", - "comm", - "cp", - "cpuid", - "csplit", - "ctags", - "curl", - "cut", - "dash", - "datasette", - "date", - "dd", - "df", - "diff", - "diff3", - "dir", - "dircolors", - "dirname", - "du", - "echo", - "emacs", - "emacsclient", - "env", - "expand", - "expr", - "factor", - "false", - "find", - "fmt", - "fold", - "gmake", - "greenbean", - "grep", - "groups", - "gzip", - "head", - "id", - "install", - "join", - "kill", - "less", - "life", - "link", - "links", - "ln", - "locate", - "logname", - "ls", - "lua", - "lz4", - "make", - "md5sum", - "mv", - "mkfifo", - "mknod", - "mktemp", - "mktemper", - "mkdir", - "nano", - "nesemu1", - "nice", - "ninja", - "nl", - "nohup", - "nproc", - "numfmt", - "od", - "paste", - "patch", - "pathchk", - "pigz", - "pinky", - "pledge", - "pr", - "printenv", - "printf", - "printimage", - "ptx", - "pwd", - "pypack1", - "python", - "qjs", - "readlink", - "realpath", - "redbean", - "rm", - "rmdir", - "rsync", - "runcon", - "script", - "sdiff", - "sed", - "seq", - "sha1sum", - "sha224sum", - "sha256sum", - "sha384sum", - "sha512sum", - "shred", - "shuf", - "sleep", - "sort", - "split", - "sqlite3", - "stat", - "stty", - "sum", - "sync", - "tac", - "tail", - "tar", - "tee", - "test", - "tidy", - "timeout", - "tmux", - "touch", - "tr", - "tree", - "true", - "truncate", - "tsort", - "tty", - "ttyinfo", - "uname", - "unbourne", - "unexpand", - "uniq", - "unlink", - "unzip", - "uptime", - "users", - "vdir", - "verynice", - "vim", - "wall", - "wc", - "wget", - "who", - "whoami", - "xargs", - "xz", - "yes", - "zip", - "zsh", - "zstd", -) diff --git a/e2e/.bazelrc b/e2e/.bazelrc index a4cc6a52..78a0c5f3 100644 --- a/e2e/.bazelrc +++ b/e2e/.bazelrc @@ -3,6 +3,9 @@ common --registry https://bcr.bazel.build common --registry=https://gitlab.arm.com/bazel/toolchain_utils/-/releases/v1.0.1/downloads common --registry=https://gitlab.arm.com/bazel/download_utils/-/releases/v1.0.0/downloads +# Enable hermetic `rules_python` +common --@rules_python//python/config_settings:bootstrap_impl=script + # Build cache build --experimental_guard_against_concurrent_changes diff --git a/e2e/BUILD.bazel b/e2e/BUILD.bazel index e11e06f7..e69de29b 100644 --- a/e2e/BUILD.bazel +++ b/e2e/BUILD.bazel @@ -1,9 +0,0 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") - -build_test( - name = "export", - size = "small", - targets = [ - "@ape-curl//:entrypoint", - ], -) diff --git a/e2e/MODULE.bazel b/e2e/MODULE.bazel index d0e549a6..d42045ab 100644 --- a/e2e/MODULE.bazel +++ b/e2e/MODULE.bazel @@ -5,7 +5,20 @@ module( ], ) -bazel_dep(name = "bazel_skylib", version = "1.5.0", dev_dependency = True) +bazel_dep(name = "platforms", version = "0.0.11") +bazel_dep(name = "bazel_skylib", version = "1.5.0") +bazel_dep(name = "rules_shell", version = "0.3.0") + +bazel_dep(name = "rules_python", version = "1.0.0", dev_dependency = True) +bazel_dep(name = "hermetic_cc_toolchain", version = "3.1.0", dev_dependency = True) + +python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True) +python.toolchain( + configure_coverage_tool = True, + # TODO: need hermetic `chmod`/`id`: https://github.com/bazelbuild/rules_python/pull/2024 + ignore_root_user_error = True, + python_version = "3.13", +) bazel_dep(name = "toolchain_utils", version = "1.0.1") bazel_dep(name = "ape", version = "0.0.0") @@ -14,9 +27,6 @@ local_path_override( path = "..", ) -export = use_extension("@toolchain_utils//toolchain/export:defs.bzl", "toolchain_export") -use_repo(export, "ape-curl") - resolved = use_repo_rule("@toolchain_utils//toolchain/resolved:defs.bzl", "toolchain_resolved") resolved( @@ -30,3 +40,17 @@ resolved( ) register_toolchains("//toolchain/...") + +cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") +cosmos.use( + unversioned = True, +) +cosmos.download( + lock = "//cosmos:3.3.1.json", + version = "3.3.1", +) +cosmos.download( + lock = "//cosmos:3.1.3.json", + version = "3.1.3", +) +use_repo(cosmos, "art", "awk", "b2sum", "base32", "base64", "basename", "basenc", "bash", "bc", "berry", "blackholed", "brotli", "bzip2", "cat", "chcon", "chgrp", "chmod", "chown", "chroot", "cksum", "clang-format", "cmp", "comm", "cp", "cpuid", "csplit", "ctags", "curl", "cut", "dash", "datasette", "date", "dd", "df", "diff", "diff3", "dir", "dircolors", "dirname", "du", "echo", "emacs", "emacsclient", "env", "expand", "expr", "factor", "false", "find", "fmt", "fold", "git", "git-receive-pack", "git-shell", "git-upload-archive", "git-upload-pack", "gmake", "gperf", "greenbean", "grep", "groups", "gzip", "hangman", "head", "hello", "id", "install", "janet", "join", "jq", "kill", "less", "life", "link", "links", "llama", "ln", "locate", "logname", "ls", "lua", "lz4", "lzip", "make", "md5sum", "mkdir", "mkfifo", "mknod", "mktemp", "mktemper", "mv", "nano", "nesemu1", "nice", "ninja", "nl", "nohup", "nproc", "numfmt", "od", "paste", "patch", "pathchk", "php", "pigz", "pinky", "pledge", "pr", "printenv", "printf", "printimage", "printvideo", "ptx", "pwd", "pypack1", "pypack2", "python", "qjs", "readlink", "realpath", "redbean", "rm", "rmdir", "romanize", "rsync", "runcon", "rusage", "scrapscript", "script", "sdiff", "sed", "seq", "sha1sum", "sha224sum", "sha256sum", "sha384sum", "sha512sum", "shred", "shuf", "sleep", "sort", "sox", "split", "sqlite3", "stat", "stty", "sum", "sync", "tac", "tail", "tar", "tclsh8.6", "tee", "test", "tidy", "timeout", "tmux", "touch", "tr", "tree", "true", "truncate", "tsort", "tty", "ttyinfo", "uname", "unbourne", "unexpand", "uniq", "unlink", "unzip", "uptime", "users", "vdir", "verynice", "vim", "wall", "wc", "wget", "who", "whoami", "whois", "xargs", "xz", "yes", "zip", "zsh", "zstd") diff --git a/e2e/MODULE.bazel.lock b/e2e/MODULE.bazel.lock index fa7e3be9..02ca0f38 100644 --- a/e2e/MODULE.bazel.lock +++ b/e2e/MODULE.bazel.lock @@ -41,11 +41,14 @@ "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/hermetic_cc_toolchain/3.1.0/MODULE.bazel": "ea4b3a25a9417a7db57a8a2f9ebdee91d679823c6274b482b817ed128d81c594", + "https://bcr.bazel.build/modules/hermetic_cc_toolchain/3.1.0/source.json": "9d1df0459caefdf41052d360469922a73e219f67c8ce4da0628cc604469822b9", "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", - "https://bcr.bazel.build/modules/platforms/0.0.10/source.json": "f22828ff4cf021a6b577f1bf6341cb9dcd7965092a439f64fc1bb3b7a5ae4bd5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", @@ -55,6 +58,7 @@ "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", @@ -88,6 +92,8 @@ "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", "https://bcr.bazel.build/modules/rules_java/8.6.1/source.json": "f18d9ad3c4c54945bf422ad584fa6c5ca5b3116ff55a5b1bc77e5c1210be5960", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", @@ -119,15 +125,18 @@ "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/0.40.0/source.json": "939d4bd2e3110f27bfb360292986bb79fd8dcefb874358ccd6cdaa7bda029320", + "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43", + "https://bcr.bazel.build/modules/rules_python/1.0.0/source.json": "b0162a65c6312e45e7912e39abd1a7f8856c2c7e41ecc9b6dc688a6f6400a917", "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/source.json": "c55ed591aa5009401ddf80ded9762ac32c358d2517ee7820be981e2de9756cf3", "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.1/source.json": "b6500ffcd7b48cd72c29bb67bcac781e12701cc0d6d55d266a652583cfcdab01", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/toolchain_utils/1.0.1/MODULE.bazel": "not found", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", @@ -144,20 +153,52 @@ }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@platforms//host:extension.bzl%host_platform": { + "@@hermetic_cc_toolchain+//toolchain:ext.bzl%toolchains": { "general": { - "bzlTransitiveDigest": "xelQcPZH8+tmuOHVjL9vDxMnnQNMlwj0SlvgoqBkm4U=", - "usagesDigest": "SeQiIN/f8/Qt9vYQk7qcXp4I4wJeEC0RnQDiaaJ4tb8=", + "bzlTransitiveDigest": "QE9mmKKNnRnnIzR5esB4//YvnfXT+tjg6NPgrdOQDnM=", + "usagesDigest": "JojEsGQu7csSPZpzBH/MSNWup5s1PPrDxn1Yeizs3n4=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { - "host_platform": { - "repoRuleId": "@@platforms//host:extension.bzl%host_platform_repo", - "attributes": {} + "zig_sdk": { + "repoRuleId": "@@hermetic_cc_toolchain+//toolchain:defs.bzl%zig_repository", + "attributes": { + "version": "0.12.0", + "url_formats": [ + "https://mirror.bazel.build/ziglang.org/download/{version}/zig-{host_platform}-{version}.{_ext}", + "https://ziglang.org/download/{version}/zig-{host_platform}-{version}.{_ext}" + ], + "host_platform_sha256": { + "linux-aarch64": "754f1029484079b7e0ca3b913a0a2f2a6afd5a28990cb224fe8845e72f09de63", + "linux-x86_64": "c7ae866b8a76a568e2d5cfd31fe89cdb629bdd161fdd5018b29a4a0a17045cad", + "macos-aarch64": "294e224c14fd0822cfb15a35cf39aa14bd9967867999bf8bdfe3db7ddec2a27f", + "macos-x86_64": "4d411bf413e7667821324da248e8589278180dbc197f4f282b7dbb599a689311", + "windows-aarch64": "04c6b92689241ca7a8a59b5f12d2ca2820c09d5043c3c4808b7e93e41c7bf97b", + "windows-x86_64": "2199eb4c2000ddb1fba85ba78f1fcf9c1fb8b3e57658f6a627a8e513131893f5" + }, + "host_platform_ext": { + "linux-aarch64": "tar.xz", + "linux-x86_64": "tar.xz", + "macos-aarch64": "tar.xz", + "macos-x86_64": "tar.xz", + "windows-x86_64": "zip" + } + } } }, - "recordedRepoMappingEntries": [] + "recordedRepoMappingEntries": [ + [ + "hermetic_cc_toolchain+", + "bazel_tools", + "bazel_tools" + ], + [ + "hermetic_cc_toolchain+", + "hermetic_cc_toolchain", + "hermetic_cc_toolchain+" + ] + ] } }, "@@pybind11_bazel+//:python_configure.bzl%extension": { @@ -363,11 +404,13 @@ ] } }, - "@@rules_python+//python/private/pypi:pip.bzl%pip_internal": { + "@@rules_python+//python/extensions:pip.bzl%pip": { "general": { - "bzlTransitiveDigest": "+zEWYyNfKsf13xNoIs5u4bH4EEgN37u2T/f35J7yWKI=", - "usagesDigest": "OLoIStnzNObNalKEMRq99FqenhPGLFZ5utVLV4sz7OI=", + "bzlTransitiveDigest": "8dismvKl3NazfZqc4jBDroiSQpTXFAYc3D1V2mwsv0s=", + "usagesDigest": "/9NP3RV6/DWuNdYAsIU/8UCgCX0TdPUJr0X6O+0lrtk=", "recordedFileInputs": { + "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", + "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", "@@rules_python+//tools/publish/requirements_darwin.txt": "2994136eab7e57b083c3de76faf46f70fad130bc8e7360a7fed2b288b69e79dc", "@@rules_python+//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", "@@rules_python+//tools/publish/requirements_windows.txt": "7673adc71dc1a81d3661b90924d7a7c0fc998cd508b3cb4174337cef3f2de556" @@ -378,6 +421,216 @@ "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null }, "generatedRepoSpecs": { + "pip_deps_310_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_310_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "pip_deps_310", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_311_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_311_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "pip_deps_311", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_312_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_312_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "pip_deps_312", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_38_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_38_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "pip_deps_38", + "requirement": "setuptools<=70.3.0" + } + }, + "pip_deps_39_numpy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "numpy<=1.26.1" + } + }, + "pip_deps_39_setuptools": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@pip_deps//{name}:{target}", + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "pip_deps_39", + "requirement": "setuptools<=70.3.0" + } + }, + "rules_fuzzing_py_deps_310_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_310_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_10_host//:python", + "repo": "rules_fuzzing_py_deps_310", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_311_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_311_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_11_host//:python", + "repo": "rules_fuzzing_py_deps_311", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_312_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_312_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_12_host//:python", + "repo": "rules_fuzzing_py_deps_312", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_38_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_38_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_8_host//:python", + "repo": "rules_fuzzing_py_deps_38", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, + "rules_fuzzing_py_deps_39_absl_py": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "absl-py==2.0.0 --hash=sha256:9a28abb62774ae4e8edbe2dd4c49ffcd45a6a848952a5eccc6a49f3f0fc1e2f3" + } + }, + "rules_fuzzing_py_deps_39_six": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@rules_fuzzing_py_deps//{name}:{target}", + "extra_pip_args": [ + "--require-hashes" + ], + "python_interpreter_target": "@@rules_python++python+python_3_9_host//:python", + "repo": "rules_fuzzing_py_deps_39", + "requirement": "six==1.16.0 --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + } + }, "rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7": { "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { @@ -2656,42 +2909,74 @@ ] } }, + "pip_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "pip_deps", + "extra_hub_aliases": {}, + "whl_map": { + "numpy": "{\"pip_deps_310_numpy\":[{\"version\":\"3.10\"}],\"pip_deps_311_numpy\":[{\"version\":\"3.11\"}],\"pip_deps_312_numpy\":[{\"version\":\"3.12\"}],\"pip_deps_38_numpy\":[{\"version\":\"3.8\"}],\"pip_deps_39_numpy\":[{\"version\":\"3.9\"}]}", + "setuptools": "{\"pip_deps_310_setuptools\":[{\"version\":\"3.10\"}],\"pip_deps_311_setuptools\":[{\"version\":\"3.11\"}],\"pip_deps_312_setuptools\":[{\"version\":\"3.12\"}],\"pip_deps_38_setuptools\":[{\"version\":\"3.8\"}],\"pip_deps_39_setuptools\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "numpy", + "setuptools" + ], + "groups": {} + } + }, + "rules_fuzzing_py_deps": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "rules_fuzzing_py_deps", + "extra_hub_aliases": {}, + "whl_map": { + "absl_py": "{\"rules_fuzzing_py_deps_310_absl_py\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_absl_py\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_absl_py\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_absl_py\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_absl_py\":[{\"version\":\"3.9\"}]}", + "six": "{\"rules_fuzzing_py_deps_310_six\":[{\"version\":\"3.10\"}],\"rules_fuzzing_py_deps_311_six\":[{\"version\":\"3.11\"}],\"rules_fuzzing_py_deps_312_six\":[{\"version\":\"3.12\"}],\"rules_fuzzing_py_deps_38_six\":[{\"version\":\"3.8\"}],\"rules_fuzzing_py_deps_39_six\":[{\"version\":\"3.9\"}]}" + }, + "packages": [ + "absl_py", + "six" + ], + "groups": {} + } + }, "rules_python_publish_deps": { "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", "attributes": { "repo_name": "rules_python_publish_deps", "extra_hub_aliases": {}, "whl_map": { - "backports_tarfile": "[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\",\"version\":\"3.11\"},{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\",\"version\":\"3.11\"}]", - "certifi": "[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\",\"version\":\"3.11\"},{\"filename\":\"certifi-2024.8.30.tar.gz\",\"repo\":\"rules_python_publish_deps_311_certifi_sdist_bec941d2\",\"version\":\"3.11\"}]", - "cffi": "[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\",\"version\":\"3.11\"},{\"filename\":\"cffi-1.17.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_cffi_sdist_1c39c601\",\"version\":\"3.11\"}]", - "charset_normalizer": "[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\",\"version\":\"3.11\"},{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\",\"version\":\"3.11\"}]", - "cryptography": "[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\",\"version\":\"3.11\"},{\"filename\":\"cryptography-43.0.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_cryptography_sdist_315b9001\",\"version\":\"3.11\"}]", - "docutils": "[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\",\"version\":\"3.11\"},{\"filename\":\"docutils-0.21.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\",\"version\":\"3.11\"}]", - "idna": "[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\",\"version\":\"3.11\"},{\"filename\":\"idna-3.10.tar.gz\",\"repo\":\"rules_python_publish_deps_311_idna_sdist_12f65c9b\",\"version\":\"3.11\"}]", - "importlib_metadata": "[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\",\"version\":\"3.11\"},{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\",\"version\":\"3.11\"}]", - "jaraco_classes": "[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\",\"version\":\"3.11\"},{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\",\"version\":\"3.11\"}]", - "jaraco_context": "[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\",\"version\":\"3.11\"},{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\",\"version\":\"3.11\"}]", - "jaraco_functools": "[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\",\"version\":\"3.11\"},{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\",\"version\":\"3.11\"}]", - "jeepney": "[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\",\"version\":\"3.11\"},{\"filename\":\"jeepney-0.8.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\",\"version\":\"3.11\"}]", - "keyring": "[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\",\"version\":\"3.11\"},{\"filename\":\"keyring-25.4.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\",\"version\":\"3.11\"}]", - "markdown_it_py": "[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\",\"version\":\"3.11\"},{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\",\"version\":\"3.11\"}]", - "mdurl": "[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\",\"version\":\"3.11\"},{\"filename\":\"mdurl-0.1.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\",\"version\":\"3.11\"}]", - "more_itertools": "[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\",\"version\":\"3.11\"},{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\",\"version\":\"3.11\"}]", - "nh3": "[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"repo\":\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\",\"version\":\"3.11\"},{\"filename\":\"nh3-0.2.18.tar.gz\",\"repo\":\"rules_python_publish_deps_311_nh3_sdist_94a16692\",\"version\":\"3.11\"}]", - "pkginfo": "[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\",\"version\":\"3.11\"},{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\",\"version\":\"3.11\"}]", - "pycparser": "[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\",\"version\":\"3.11\"},{\"filename\":\"pycparser-2.22.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\",\"version\":\"3.11\"}]", - "pygments": "[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\",\"version\":\"3.11\"},{\"filename\":\"pygments-2.18.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pygments_sdist_786ff802\",\"version\":\"3.11\"}]", - "pywin32_ctypes": "[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\",\"version\":\"3.11\"},{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\",\"version\":\"3.11\"}]", - "readme_renderer": "[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\",\"version\":\"3.11\"},{\"filename\":\"readme_renderer-44.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\",\"version\":\"3.11\"}]", - "requests": "[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\",\"version\":\"3.11\"},{\"filename\":\"requests-2.32.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_requests_sdist_55365417\",\"version\":\"3.11\"}]", - "requests_toolbelt": "[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\",\"version\":\"3.11\"},{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\",\"version\":\"3.11\"}]", - "rfc3986": "[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\",\"version\":\"3.11\"},{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"repo\":\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\",\"version\":\"3.11\"}]", - "rich": "[{\"filename\":\"rich-13.9.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_rich_py3_none_any_9836f509\",\"version\":\"3.11\"},{\"filename\":\"rich-13.9.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_rich_sdist_bc1e01b8\",\"version\":\"3.11\"}]", - "secretstorage": "[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\",\"version\":\"3.11\"},{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\",\"version\":\"3.11\"}]", - "twine": "[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\",\"version\":\"3.11\"},{\"filename\":\"twine-5.1.1.tar.gz\",\"repo\":\"rules_python_publish_deps_311_twine_sdist_9aa08251\",\"version\":\"3.11\"}]", - "urllib3": "[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\",\"version\":\"3.11\"},{\"filename\":\"urllib3-2.2.3.tar.gz\",\"repo\":\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\",\"version\":\"3.11\"}]", - "zipp": "[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"repo\":\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\",\"version\":\"3.11\"},{\"filename\":\"zipp-3.20.2.tar.gz\",\"repo\":\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\",\"version\":\"3.11\"}]" + "backports_tarfile": "{\"rules_python_publish_deps_311_backports_tarfile_py3_none_any_77e284d7\":[{\"filename\":\"backports.tarfile-1.2.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_backports_tarfile_sdist_d75e02c2\":[{\"filename\":\"backports_tarfile-1.2.0.tar.gz\",\"version\":\"3.11\"}]}", + "certifi": "{\"rules_python_publish_deps_311_certifi_py3_none_any_922820b5\":[{\"filename\":\"certifi-2024.8.30-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_certifi_sdist_bec941d2\":[{\"filename\":\"certifi-2024.8.30.tar.gz\",\"version\":\"3.11\"}]}", + "cffi": "{\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_aarch64_a1ed2dd2\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_ppc64le_46bf4316\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_s390x_a24ed04c\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_manylinux_2_17_x86_64_610faea7\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_aarch64_a9b15d49\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_cp311_cp311_musllinux_1_1_x86_64_fc48c783\":[{\"filename\":\"cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cffi_sdist_1c39c601\":[{\"filename\":\"cffi-1.17.1.tar.gz\",\"version\":\"3.11\"}]}", + "charset_normalizer": "{\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_universal2_0d99dd8f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_10_9_x86_64_c57516e5\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_macosx_11_0_arm64_6dba5d19\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_aarch64_bf4475b8\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_ppc64le_ce031db0\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_s390x_8ff4e7cd\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_manylinux_2_17_x86_64_3710a975\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_aarch64_47334db7\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_ppc64le_f1a2f519\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_s390x_63bc5c4a\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_musllinux_1_2_x86_64_bcb4f8ea\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_cp311_cp311_win_amd64_cee4373f\":[{\"filename\":\"charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_py3_none_any_fe9f97fe\":[{\"filename\":\"charset_normalizer-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_charset_normalizer_sdist_223217c3\":[{\"filename\":\"charset_normalizer-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "cryptography": "{\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_aarch64_846da004\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_17_x86_64_0f996e72\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_aarch64_f7b178f1\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_manylinux_2_28_x86_64_c2e6fc39\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-manylinux_2_28_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_aarch64_e1be4655\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_cp39_abi3_musllinux_1_2_x86_64_df6b6c6d\":[{\"filename\":\"cryptography-43.0.3-cp39-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_cryptography_sdist_315b9001\":[{\"filename\":\"cryptography-43.0.3.tar.gz\",\"version\":\"3.11\"}]}", + "docutils": "{\"rules_python_publish_deps_311_docutils_py3_none_any_dafca5b9\":[{\"filename\":\"docutils-0.21.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_docutils_sdist_3a6b1873\":[{\"filename\":\"docutils-0.21.2.tar.gz\",\"version\":\"3.11\"}]}", + "idna": "{\"rules_python_publish_deps_311_idna_py3_none_any_946d195a\":[{\"filename\":\"idna-3.10-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_idna_sdist_12f65c9b\":[{\"filename\":\"idna-3.10.tar.gz\",\"version\":\"3.11\"}]}", + "importlib_metadata": "{\"rules_python_publish_deps_311_importlib_metadata_py3_none_any_45e54197\":[{\"filename\":\"importlib_metadata-8.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_importlib_metadata_sdist_71522656\":[{\"filename\":\"importlib_metadata-8.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_classes": "{\"rules_python_publish_deps_311_jaraco_classes_py3_none_any_f662826b\":[{\"filename\":\"jaraco.classes-3.4.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_classes_sdist_47a024b5\":[{\"filename\":\"jaraco.classes-3.4.0.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_context": "{\"rules_python_publish_deps_311_jaraco_context_py3_none_any_f797fc48\":[{\"filename\":\"jaraco.context-6.0.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_context_sdist_9bae4ea5\":[{\"filename\":\"jaraco_context-6.0.1.tar.gz\",\"version\":\"3.11\"}]}", + "jaraco_functools": "{\"rules_python_publish_deps_311_jaraco_functools_py3_none_any_ad159f13\":[{\"filename\":\"jaraco.functools-4.1.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jaraco_functools_sdist_70f7e0e2\":[{\"filename\":\"jaraco_functools-4.1.0.tar.gz\",\"version\":\"3.11\"}]}", + "jeepney": "{\"rules_python_publish_deps_311_jeepney_py3_none_any_c0a454ad\":[{\"filename\":\"jeepney-0.8.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_jeepney_sdist_5efe48d2\":[{\"filename\":\"jeepney-0.8.0.tar.gz\",\"version\":\"3.11\"}]}", + "keyring": "{\"rules_python_publish_deps_311_keyring_py3_none_any_5426f817\":[{\"filename\":\"keyring-25.4.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_keyring_sdist_b07ebc55\":[{\"filename\":\"keyring-25.4.1.tar.gz\",\"version\":\"3.11\"}]}", + "markdown_it_py": "{\"rules_python_publish_deps_311_markdown_it_py_py3_none_any_35521684\":[{\"filename\":\"markdown_it_py-3.0.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_markdown_it_py_sdist_e3f60a94\":[{\"filename\":\"markdown-it-py-3.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "mdurl": "{\"rules_python_publish_deps_311_mdurl_py3_none_any_84008a41\":[{\"filename\":\"mdurl-0.1.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_mdurl_sdist_bb413d29\":[{\"filename\":\"mdurl-0.1.2.tar.gz\",\"version\":\"3.11\"}]}", + "more_itertools": "{\"rules_python_publish_deps_311_more_itertools_py3_none_any_037b0d32\":[{\"filename\":\"more_itertools-10.5.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_more_itertools_sdist_5482bfef\":[{\"filename\":\"more-itertools-10.5.0.tar.gz\",\"version\":\"3.11\"}]}", + "nh3": "{\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_14c5a72e\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_macosx_10_12_x86_64_7b7c2a3c\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-macosx_10_12_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_aarch64_42c64511\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_armv7l_0411beb0\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64_5f36b271\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_ppc64le_34c03fa7\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_s390x_19aaba96\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_manylinux_2_17_x86_64_de3ceed6\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_aarch64_f0eca9ca\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_aarch64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_armv7l_3a157ab1\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_armv7l.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_musllinux_1_2_x86_64_36c95d4b\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-musllinux_1_2_x86_64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_cp37_abi3_win_amd64_8ce0f819\":[{\"filename\":\"nh3-0.2.18-cp37-abi3-win_amd64.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_nh3_sdist_94a16692\":[{\"filename\":\"nh3-0.2.18.tar.gz\",\"version\":\"3.11\"}]}", + "pkginfo": "{\"rules_python_publish_deps_311_pkginfo_py3_none_any_889a6da2\":[{\"filename\":\"pkginfo-1.10.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pkginfo_sdist_5df73835\":[{\"filename\":\"pkginfo-1.10.0.tar.gz\",\"version\":\"3.11\"}]}", + "pycparser": "{\"rules_python_publish_deps_311_pycparser_py3_none_any_c3702b6d\":[{\"filename\":\"pycparser-2.22-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pycparser_sdist_491c8be9\":[{\"filename\":\"pycparser-2.22.tar.gz\",\"version\":\"3.11\"}]}", + "pygments": "{\"rules_python_publish_deps_311_pygments_py3_none_any_b8e6aca0\":[{\"filename\":\"pygments-2.18.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pygments_sdist_786ff802\":[{\"filename\":\"pygments-2.18.0.tar.gz\",\"version\":\"3.11\"}]}", + "pywin32_ctypes": "{\"rules_python_publish_deps_311_pywin32_ctypes_py3_none_any_8a151337\":[{\"filename\":\"pywin32_ctypes-0.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_pywin32_ctypes_sdist_d162dc04\":[{\"filename\":\"pywin32-ctypes-0.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "readme_renderer": "{\"rules_python_publish_deps_311_readme_renderer_py3_none_any_2fbca89b\":[{\"filename\":\"readme_renderer-44.0-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_readme_renderer_sdist_8712034e\":[{\"filename\":\"readme_renderer-44.0.tar.gz\",\"version\":\"3.11\"}]}", + "requests": "{\"rules_python_publish_deps_311_requests_py3_none_any_70761cfe\":[{\"filename\":\"requests-2.32.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_sdist_55365417\":[{\"filename\":\"requests-2.32.3.tar.gz\",\"version\":\"3.11\"}]}", + "requests_toolbelt": "{\"rules_python_publish_deps_311_requests_toolbelt_py2_none_any_cccfdd66\":[{\"filename\":\"requests_toolbelt-1.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_requests_toolbelt_sdist_7681a0a3\":[{\"filename\":\"requests-toolbelt-1.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rfc3986": "{\"rules_python_publish_deps_311_rfc3986_py2_none_any_50b1502b\":[{\"filename\":\"rfc3986-2.0.0-py2.py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rfc3986_sdist_97aacf9d\":[{\"filename\":\"rfc3986-2.0.0.tar.gz\",\"version\":\"3.11\"}]}", + "rich": "{\"rules_python_publish_deps_311_rich_py3_none_any_9836f509\":[{\"filename\":\"rich-13.9.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_rich_sdist_bc1e01b8\":[{\"filename\":\"rich-13.9.3.tar.gz\",\"version\":\"3.11\"}]}", + "secretstorage": "{\"rules_python_publish_deps_311_secretstorage_py3_none_any_f356e662\":[{\"filename\":\"SecretStorage-3.3.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_secretstorage_sdist_2403533e\":[{\"filename\":\"SecretStorage-3.3.3.tar.gz\",\"version\":\"3.11\"}]}", + "twine": "{\"rules_python_publish_deps_311_twine_py3_none_any_215dbe7b\":[{\"filename\":\"twine-5.1.1-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_twine_sdist_9aa08251\":[{\"filename\":\"twine-5.1.1.tar.gz\",\"version\":\"3.11\"}]}", + "urllib3": "{\"rules_python_publish_deps_311_urllib3_py3_none_any_ca899ca0\":[{\"filename\":\"urllib3-2.2.3-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_urllib3_sdist_e7d814a8\":[{\"filename\":\"urllib3-2.2.3.tar.gz\",\"version\":\"3.11\"}]}", + "zipp": "{\"rules_python_publish_deps_311_zipp_py3_none_any_a817ac80\":[{\"filename\":\"zipp-3.20.2-py3-none-any.whl\",\"version\":\"3.11\"}],\"rules_python_publish_deps_311_zipp_sdist_bc9eb26f\":[{\"filename\":\"zipp-3.20.2.tar.gz\",\"version\":\"3.11\"}]}" }, "packages": [ "backports_tarfile", @@ -2723,6 +3008,10 @@ } } }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, "recordedRepoMappingEntries": [ [ "bazel_features+", @@ -2844,6 +3133,11 @@ "python_3_12_host", "rules_python++python+python_3_12_host" ], + [ + "rules_python++python+pythons_hub", + "python_3_13_host", + "rules_python++python+python_3_13_host" + ], [ "rules_python++python+pythons_hub", "python_3_8_host", diff --git a/e2e/binary/BUILD.bazel b/e2e/binary/BUILD.bazel new file mode 100644 index 00000000..5198fc4c --- /dev/null +++ b/e2e/binary/BUILD.bazel @@ -0,0 +1,9 @@ +load("@ape//ape/cosmos:basenames.bzl", "BASENAMES") +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# Validate that there is a test for each binary +build_test( + name = "coverage", + size = "small", + targets = ["//binary/{}".format(basename) for basename in BASENAMES], +) diff --git a/e2e/binary/art/BUILD.bazel b/e2e/binary/art/BUILD.bazel new file mode 100644 index 00000000..5f02f42c --- /dev/null +++ b/e2e/binary/art/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `art` + +build_test( + name = "art", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:art"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/awk/BUILD.bazel b/e2e/binary/awk/BUILD.bazel new file mode 100644 index 00000000..4e54a23a --- /dev/null +++ b/e2e/binary/awk/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `awk` + +build_test( + name = "awk", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:awk"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/b2sum/BUILD.bazel b/e2e/binary/b2sum/BUILD.bazel new file mode 100644 index 00000000..a80e6b90 --- /dev/null +++ b/e2e/binary/b2sum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `b2sum` + +build_test( + name = "b2sum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:b2sum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/base32/BUILD.bazel b/e2e/binary/base32/BUILD.bazel new file mode 100644 index 00000000..098fc4d9 --- /dev/null +++ b/e2e/binary/base32/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `base32` + +build_test( + name = "base32", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:base32"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/base64/BUILD.bazel b/e2e/binary/base64/BUILD.bazel new file mode 100644 index 00000000..16780ba8 --- /dev/null +++ b/e2e/binary/base64/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `base64` + +build_test( + name = "base64", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:base64"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/basename/BUILD.bazel b/e2e/binary/basename/BUILD.bazel new file mode 100644 index 00000000..532b7d64 --- /dev/null +++ b/e2e/binary/basename/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `basename` + +build_test( + name = "basename", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:basename"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/basenc/BUILD.bazel b/e2e/binary/basenc/BUILD.bazel new file mode 100644 index 00000000..9dd01ede --- /dev/null +++ b/e2e/binary/basenc/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `basenc` + +build_test( + name = "basenc", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:basenc"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/bash/BUILD.bazel b/e2e/binary/bash/BUILD.bazel new file mode 100644 index 00000000..545c0180 --- /dev/null +++ b/e2e/binary/bash/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `bash` + +build_test( + name = "bash", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:bash"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/bc/BUILD.bazel b/e2e/binary/bc/BUILD.bazel new file mode 100644 index 00000000..a8f7850e --- /dev/null +++ b/e2e/binary/bc/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `bc` + +build_test( + name = "bc", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:bc"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/berry/BUILD.bazel b/e2e/binary/berry/BUILD.bazel new file mode 100644 index 00000000..d2d68a6b --- /dev/null +++ b/e2e/binary/berry/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `berry` + +build_test( + name = "berry", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:berry"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/blackholed/BUILD.bazel b/e2e/binary/blackholed/BUILD.bazel new file mode 100644 index 00000000..9409db15 --- /dev/null +++ b/e2e/binary/blackholed/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `blackholed` + +build_test( + name = "blackholed", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:blackholed"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/brotli/BUILD.bazel b/e2e/binary/brotli/BUILD.bazel new file mode 100644 index 00000000..0300e9d1 --- /dev/null +++ b/e2e/binary/brotli/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `brotli` + +build_test( + name = "brotli", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:brotli"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/bzip2/BUILD.bazel b/e2e/binary/bzip2/BUILD.bazel new file mode 100644 index 00000000..633cdb18 --- /dev/null +++ b/e2e/binary/bzip2/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `bzip2` + +build_test( + name = "bzip2", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:bzip2"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/cat/BUILD.bazel b/e2e/binary/cat/BUILD.bazel new file mode 100644 index 00000000..d4f88d08 --- /dev/null +++ b/e2e/binary/cat/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `cat` + +build_test( + name = "cat", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:cat"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/chcon/BUILD.bazel b/e2e/binary/chcon/BUILD.bazel new file mode 100644 index 00000000..457aff98 --- /dev/null +++ b/e2e/binary/chcon/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `chcon` + +build_test( + name = "chcon", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:chcon"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/chgrp/BUILD.bazel b/e2e/binary/chgrp/BUILD.bazel new file mode 100644 index 00000000..fc127dc7 --- /dev/null +++ b/e2e/binary/chgrp/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `chgrp` + +build_test( + name = "chgrp", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:chgrp"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/chmod/BUILD.bazel b/e2e/binary/chmod/BUILD.bazel new file mode 100644 index 00000000..ad95dedc --- /dev/null +++ b/e2e/binary/chmod/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `chmod` + +build_test( + name = "chmod", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:chmod"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/chown/BUILD.bazel b/e2e/binary/chown/BUILD.bazel new file mode 100644 index 00000000..0c9034ca --- /dev/null +++ b/e2e/binary/chown/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `chown` + +build_test( + name = "chown", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:chown"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/chroot/BUILD.bazel b/e2e/binary/chroot/BUILD.bazel new file mode 100644 index 00000000..57d51261 --- /dev/null +++ b/e2e/binary/chroot/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `chroot` + +build_test( + name = "chroot", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:chroot"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/cksum/BUILD.bazel b/e2e/binary/cksum/BUILD.bazel new file mode 100644 index 00000000..414a8211 --- /dev/null +++ b/e2e/binary/cksum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `cksum` + +build_test( + name = "cksum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:cksum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/clang-format/BUILD.bazel b/e2e/binary/clang-format/BUILD.bazel new file mode 100644 index 00000000..bc2a9b05 --- /dev/null +++ b/e2e/binary/clang-format/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `clang-format` + +build_test( + name = "clang-format", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:clang-format"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/cmp/BUILD.bazel b/e2e/binary/cmp/BUILD.bazel new file mode 100644 index 00000000..02947c53 --- /dev/null +++ b/e2e/binary/cmp/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `cmp` + +build_test( + name = "cmp", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:cmp"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/comm/BUILD.bazel b/e2e/binary/comm/BUILD.bazel new file mode 100644 index 00000000..c1c3dd56 --- /dev/null +++ b/e2e/binary/comm/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `comm` + +build_test( + name = "comm", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:comm"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/cp/BUILD.bazel b/e2e/binary/cp/BUILD.bazel new file mode 100644 index 00000000..88df7b9a --- /dev/null +++ b/e2e/binary/cp/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `cp` + +build_test( + name = "cp", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:cp"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/cpuid/BUILD.bazel b/e2e/binary/cpuid/BUILD.bazel new file mode 100644 index 00000000..50da1546 --- /dev/null +++ b/e2e/binary/cpuid/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `cpuid` + +build_test( + name = "cpuid", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:cpuid"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/csplit/BUILD.bazel b/e2e/binary/csplit/BUILD.bazel new file mode 100644 index 00000000..6e02cb37 --- /dev/null +++ b/e2e/binary/csplit/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `csplit` + +build_test( + name = "csplit", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:csplit"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/ctags/BUILD.bazel b/e2e/binary/ctags/BUILD.bazel new file mode 100644 index 00000000..6fb13d32 --- /dev/null +++ b/e2e/binary/ctags/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `ctags` + +build_test( + name = "ctags", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:ctags"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/curl/BUILD.bazel b/e2e/binary/curl/BUILD.bazel new file mode 100644 index 00000000..5bc08c78 --- /dev/null +++ b/e2e/binary/curl/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `curl` + +build_test( + name = "curl", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:curl"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/cut/BUILD.bazel b/e2e/binary/cut/BUILD.bazel new file mode 100644 index 00000000..42cdd863 --- /dev/null +++ b/e2e/binary/cut/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `cut` + +build_test( + name = "cut", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:cut"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/dash/BUILD.bazel b/e2e/binary/dash/BUILD.bazel new file mode 100644 index 00000000..1520dca8 --- /dev/null +++ b/e2e/binary/dash/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `dash` + +build_test( + name = "dash", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:dash"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/datasette/BUILD.bazel b/e2e/binary/datasette/BUILD.bazel new file mode 100644 index 00000000..9cf32e2b --- /dev/null +++ b/e2e/binary/datasette/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `datasette` + +build_test( + name = "datasette", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:datasette"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/date/BUILD.bazel b/e2e/binary/date/BUILD.bazel new file mode 100644 index 00000000..cdef4d4c --- /dev/null +++ b/e2e/binary/date/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `date` + +build_test( + name = "date", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:date"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/dd/BUILD.bazel b/e2e/binary/dd/BUILD.bazel new file mode 100644 index 00000000..9d522e39 --- /dev/null +++ b/e2e/binary/dd/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `dd` + +build_test( + name = "dd", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:dd"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/df/BUILD.bazel b/e2e/binary/df/BUILD.bazel new file mode 100644 index 00000000..90860739 --- /dev/null +++ b/e2e/binary/df/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `df` + +build_test( + name = "df", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:df"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/diff/BUILD.bazel b/e2e/binary/diff/BUILD.bazel new file mode 100644 index 00000000..a4d66069 --- /dev/null +++ b/e2e/binary/diff/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `diff` + +build_test( + name = "diff", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:diff"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/diff3/BUILD.bazel b/e2e/binary/diff3/BUILD.bazel new file mode 100644 index 00000000..57ddfd71 --- /dev/null +++ b/e2e/binary/diff3/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `diff3` + +build_test( + name = "diff3", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:diff3"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/dir/BUILD.bazel b/e2e/binary/dir/BUILD.bazel new file mode 100644 index 00000000..3249d822 --- /dev/null +++ b/e2e/binary/dir/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `dir` + +build_test( + name = "dir", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:dir"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/dircolors/BUILD.bazel b/e2e/binary/dircolors/BUILD.bazel new file mode 100644 index 00000000..a4c9f98a --- /dev/null +++ b/e2e/binary/dircolors/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `dircolors` + +build_test( + name = "dircolors", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:dircolors"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/dirname/BUILD.bazel b/e2e/binary/dirname/BUILD.bazel new file mode 100644 index 00000000..c07709b6 --- /dev/null +++ b/e2e/binary/dirname/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `dirname` + +build_test( + name = "dirname", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:dirname"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/du/BUILD.bazel b/e2e/binary/du/BUILD.bazel new file mode 100644 index 00000000..5f3984c6 --- /dev/null +++ b/e2e/binary/du/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `du` + +build_test( + name = "du", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:du"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/echo/BUILD.bazel b/e2e/binary/echo/BUILD.bazel new file mode 100644 index 00000000..ff802ed9 --- /dev/null +++ b/e2e/binary/echo/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `echo` + +build_test( + name = "echo", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:echo"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/emacs/BUILD.bazel b/e2e/binary/emacs/BUILD.bazel new file mode 100644 index 00000000..81af26c7 --- /dev/null +++ b/e2e/binary/emacs/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `emacs` + +build_test( + name = "emacs", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:emacs"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/emacsclient/BUILD.bazel b/e2e/binary/emacsclient/BUILD.bazel new file mode 100644 index 00000000..85d91d20 --- /dev/null +++ b/e2e/binary/emacsclient/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `emacsclient` + +build_test( + name = "emacsclient", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:emacsclient"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/env/BUILD.bazel b/e2e/binary/env/BUILD.bazel new file mode 100644 index 00000000..6b0f5f08 --- /dev/null +++ b/e2e/binary/env/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `env` + +build_test( + name = "env", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:env"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/expand/BUILD.bazel b/e2e/binary/expand/BUILD.bazel new file mode 100644 index 00000000..2a3ea408 --- /dev/null +++ b/e2e/binary/expand/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `expand` + +build_test( + name = "expand", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:expand"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/expr/BUILD.bazel b/e2e/binary/expr/BUILD.bazel new file mode 100644 index 00000000..15ab8165 --- /dev/null +++ b/e2e/binary/expr/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `expr` + +build_test( + name = "expr", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:expr"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/factor/BUILD.bazel b/e2e/binary/factor/BUILD.bazel new file mode 100644 index 00000000..be0aa764 --- /dev/null +++ b/e2e/binary/factor/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `factor` + +build_test( + name = "factor", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:factor"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/false/BUILD.bazel b/e2e/binary/false/BUILD.bazel new file mode 100644 index 00000000..8301ea9d --- /dev/null +++ b/e2e/binary/false/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `false` + +build_test( + name = "false", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:false"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/find/BUILD.bazel b/e2e/binary/find/BUILD.bazel new file mode 100644 index 00000000..23ac1bb1 --- /dev/null +++ b/e2e/binary/find/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `find` + +build_test( + name = "find", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:find"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/fmt/BUILD.bazel b/e2e/binary/fmt/BUILD.bazel new file mode 100644 index 00000000..bac7f2a6 --- /dev/null +++ b/e2e/binary/fmt/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `fmt` + +build_test( + name = "fmt", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:fmt"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/fold/BUILD.bazel b/e2e/binary/fold/BUILD.bazel new file mode 100644 index 00000000..e1844f33 --- /dev/null +++ b/e2e/binary/fold/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `fold` + +build_test( + name = "fold", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:fold"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/git-receive-pack/BUILD.bazel b/e2e/binary/git-receive-pack/BUILD.bazel new file mode 100644 index 00000000..0e0f145d --- /dev/null +++ b/e2e/binary/git-receive-pack/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `git-receive-pack` + +build_test( + name = "git-receive-pack", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:git-receive-pack"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/git-shell/BUILD.bazel b/e2e/binary/git-shell/BUILD.bazel new file mode 100644 index 00000000..52507c14 --- /dev/null +++ b/e2e/binary/git-shell/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `git-shell` + +build_test( + name = "git-shell", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:git-shell"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/git-upload-archive/BUILD.bazel b/e2e/binary/git-upload-archive/BUILD.bazel new file mode 100644 index 00000000..a88cfcb6 --- /dev/null +++ b/e2e/binary/git-upload-archive/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `git-upload-archive` + +build_test( + name = "git-upload-archive", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:git-upload-archive"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/git-upload-pack/BUILD.bazel b/e2e/binary/git-upload-pack/BUILD.bazel new file mode 100644 index 00000000..77a169c5 --- /dev/null +++ b/e2e/binary/git-upload-pack/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `git-upload-pack` + +build_test( + name = "git-upload-pack", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:git-upload-pack"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/git/BUILD.bazel b/e2e/binary/git/BUILD.bazel new file mode 100644 index 00000000..51e89018 --- /dev/null +++ b/e2e/binary/git/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `git` + +build_test( + name = "git", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:git"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/gmake/BUILD.bazel b/e2e/binary/gmake/BUILD.bazel new file mode 100644 index 00000000..0b21b47f --- /dev/null +++ b/e2e/binary/gmake/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `gmake` + +build_test( + name = "gmake", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:gmake"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/gperf/BUILD.bazel b/e2e/binary/gperf/BUILD.bazel new file mode 100644 index 00000000..b641988e --- /dev/null +++ b/e2e/binary/gperf/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `gperf` + +build_test( + name = "gperf", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:gperf"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/greenbean/BUILD.bazel b/e2e/binary/greenbean/BUILD.bazel new file mode 100644 index 00000000..d8d31d97 --- /dev/null +++ b/e2e/binary/greenbean/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `greenbean` + +build_test( + name = "greenbean", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:greenbean"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/grep/BUILD.bazel b/e2e/binary/grep/BUILD.bazel new file mode 100644 index 00000000..da4bf80d --- /dev/null +++ b/e2e/binary/grep/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `grep` + +build_test( + name = "grep", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:grep"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/groups/BUILD.bazel b/e2e/binary/groups/BUILD.bazel new file mode 100644 index 00000000..c9a2ef0a --- /dev/null +++ b/e2e/binary/groups/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `groups` + +build_test( + name = "groups", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:groups"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/gzip/BUILD.bazel b/e2e/binary/gzip/BUILD.bazel new file mode 100644 index 00000000..69ba22f3 --- /dev/null +++ b/e2e/binary/gzip/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `gzip` + +build_test( + name = "gzip", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:gzip"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/hangman/BUILD.bazel b/e2e/binary/hangman/BUILD.bazel new file mode 100644 index 00000000..7651f25a --- /dev/null +++ b/e2e/binary/hangman/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `hangman` + +build_test( + name = "hangman", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:hangman"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/head/BUILD.bazel b/e2e/binary/head/BUILD.bazel new file mode 100644 index 00000000..87f6e647 --- /dev/null +++ b/e2e/binary/head/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `head` + +build_test( + name = "head", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:head"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/hello/BUILD.bazel b/e2e/binary/hello/BUILD.bazel new file mode 100644 index 00000000..b7827bf1 --- /dev/null +++ b/e2e/binary/hello/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `hello` + +build_test( + name = "hello", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:hello"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/id/BUILD.bazel b/e2e/binary/id/BUILD.bazel new file mode 100644 index 00000000..af96d076 --- /dev/null +++ b/e2e/binary/id/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `id` + +build_test( + name = "id", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:id"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/install/BUILD.bazel b/e2e/binary/install/BUILD.bazel new file mode 100644 index 00000000..d8a75915 --- /dev/null +++ b/e2e/binary/install/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `install` + +build_test( + name = "install", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:install"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/janet/BUILD.bazel b/e2e/binary/janet/BUILD.bazel new file mode 100644 index 00000000..98108390 --- /dev/null +++ b/e2e/binary/janet/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `janet` + +build_test( + name = "janet", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:janet"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/join/BUILD.bazel b/e2e/binary/join/BUILD.bazel new file mode 100644 index 00000000..8dfb39f8 --- /dev/null +++ b/e2e/binary/join/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `join` + +build_test( + name = "join", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:join"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/jq/BUILD.bazel b/e2e/binary/jq/BUILD.bazel new file mode 100644 index 00000000..ba9714d3 --- /dev/null +++ b/e2e/binary/jq/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `jq` + +build_test( + name = "jq", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:jq"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/kill/BUILD.bazel b/e2e/binary/kill/BUILD.bazel new file mode 100644 index 00000000..981e5cd8 --- /dev/null +++ b/e2e/binary/kill/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `kill` + +build_test( + name = "kill", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:kill"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/less/BUILD.bazel b/e2e/binary/less/BUILD.bazel new file mode 100644 index 00000000..16fc841c --- /dev/null +++ b/e2e/binary/less/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `less` + +build_test( + name = "less", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:less"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/life/BUILD.bazel b/e2e/binary/life/BUILD.bazel new file mode 100644 index 00000000..c4e98dca --- /dev/null +++ b/e2e/binary/life/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `life` + +build_test( + name = "life", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:life"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/link/BUILD.bazel b/e2e/binary/link/BUILD.bazel new file mode 100644 index 00000000..b1933729 --- /dev/null +++ b/e2e/binary/link/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `link` + +build_test( + name = "link", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:link"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/links/BUILD.bazel b/e2e/binary/links/BUILD.bazel new file mode 100644 index 00000000..e68a0c3e --- /dev/null +++ b/e2e/binary/links/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `links` + +build_test( + name = "links", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:links"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/llama/BUILD.bazel b/e2e/binary/llama/BUILD.bazel new file mode 100644 index 00000000..882458be --- /dev/null +++ b/e2e/binary/llama/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `llama` + +build_test( + name = "llama", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:llama"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/ln/BUILD.bazel b/e2e/binary/ln/BUILD.bazel new file mode 100644 index 00000000..309c6c01 --- /dev/null +++ b/e2e/binary/ln/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `ln` + +build_test( + name = "ln", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:ln"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/locate/BUILD.bazel b/e2e/binary/locate/BUILD.bazel new file mode 100644 index 00000000..4cbcdb74 --- /dev/null +++ b/e2e/binary/locate/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `locate` + +build_test( + name = "locate", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:locate"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/logname/BUILD.bazel b/e2e/binary/logname/BUILD.bazel new file mode 100644 index 00000000..636cc8ed --- /dev/null +++ b/e2e/binary/logname/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `logname` + +build_test( + name = "logname", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:logname"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/ls/BUILD.bazel b/e2e/binary/ls/BUILD.bazel new file mode 100644 index 00000000..1b48ccb8 --- /dev/null +++ b/e2e/binary/ls/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `ls` + +build_test( + name = "ls", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:ls"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/lua/BUILD.bazel b/e2e/binary/lua/BUILD.bazel new file mode 100644 index 00000000..3153cb22 --- /dev/null +++ b/e2e/binary/lua/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `lua` + +build_test( + name = "lua", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:lua"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/lz4/BUILD.bazel b/e2e/binary/lz4/BUILD.bazel new file mode 100644 index 00000000..a7f3b858 --- /dev/null +++ b/e2e/binary/lz4/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `lz4` + +build_test( + name = "lz4", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:lz4"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/lzip/BUILD.bazel b/e2e/binary/lzip/BUILD.bazel new file mode 100644 index 00000000..bd3d3466 --- /dev/null +++ b/e2e/binary/lzip/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `lzip` + +build_test( + name = "lzip", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:lzip"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/make/BUILD.bazel b/e2e/binary/make/BUILD.bazel new file mode 100644 index 00000000..fc8ae457 --- /dev/null +++ b/e2e/binary/make/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `make` + +build_test( + name = "make", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:make"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/md5sum/BUILD.bazel b/e2e/binary/md5sum/BUILD.bazel new file mode 100644 index 00000000..c803f82e --- /dev/null +++ b/e2e/binary/md5sum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `md5sum` + +build_test( + name = "md5sum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:md5sum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/mkdir/BUILD.bazel b/e2e/binary/mkdir/BUILD.bazel new file mode 100644 index 00000000..d5c6146c --- /dev/null +++ b/e2e/binary/mkdir/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `mkdir` + +build_test( + name = "mkdir", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:mkdir"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/mkfifo/BUILD.bazel b/e2e/binary/mkfifo/BUILD.bazel new file mode 100644 index 00000000..d0417443 --- /dev/null +++ b/e2e/binary/mkfifo/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `mkfifo` + +build_test( + name = "mkfifo", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:mkfifo"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/mknod/BUILD.bazel b/e2e/binary/mknod/BUILD.bazel new file mode 100644 index 00000000..e917ae2e --- /dev/null +++ b/e2e/binary/mknod/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `mknod` + +build_test( + name = "mknod", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:mknod"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/mktemp/BUILD.bazel b/e2e/binary/mktemp/BUILD.bazel new file mode 100644 index 00000000..9e28d643 --- /dev/null +++ b/e2e/binary/mktemp/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `mktemp` + +build_test( + name = "mktemp", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:mktemp"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/mktemper/BUILD.bazel b/e2e/binary/mktemper/BUILD.bazel new file mode 100644 index 00000000..e9246a38 --- /dev/null +++ b/e2e/binary/mktemper/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `mktemper` + +build_test( + name = "mktemper", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:mktemper"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/mv/BUILD.bazel b/e2e/binary/mv/BUILD.bazel new file mode 100644 index 00000000..961c3d14 --- /dev/null +++ b/e2e/binary/mv/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `mv` + +build_test( + name = "mv", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:mv"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/nano/BUILD.bazel b/e2e/binary/nano/BUILD.bazel new file mode 100644 index 00000000..ec175853 --- /dev/null +++ b/e2e/binary/nano/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `nano` + +build_test( + name = "nano", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:nano"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/nesemu1/BUILD.bazel b/e2e/binary/nesemu1/BUILD.bazel new file mode 100644 index 00000000..0640b1c4 --- /dev/null +++ b/e2e/binary/nesemu1/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `nesemu1` + +build_test( + name = "nesemu1", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:nesemu1"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/nice/BUILD.bazel b/e2e/binary/nice/BUILD.bazel new file mode 100644 index 00000000..2431017f --- /dev/null +++ b/e2e/binary/nice/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `nice` + +build_test( + name = "nice", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:nice"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/ninja/BUILD.bazel b/e2e/binary/ninja/BUILD.bazel new file mode 100644 index 00000000..a0a4ecdc --- /dev/null +++ b/e2e/binary/ninja/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `ninja` + +build_test( + name = "ninja", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:ninja"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/nl/BUILD.bazel b/e2e/binary/nl/BUILD.bazel new file mode 100644 index 00000000..542d1d59 --- /dev/null +++ b/e2e/binary/nl/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `nl` + +build_test( + name = "nl", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:nl"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/nohup/BUILD.bazel b/e2e/binary/nohup/BUILD.bazel new file mode 100644 index 00000000..520a1957 --- /dev/null +++ b/e2e/binary/nohup/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `nohup` + +build_test( + name = "nohup", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:nohup"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/nproc/BUILD.bazel b/e2e/binary/nproc/BUILD.bazel new file mode 100644 index 00000000..5b7cf11c --- /dev/null +++ b/e2e/binary/nproc/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `nproc` + +build_test( + name = "nproc", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:nproc"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/numfmt/BUILD.bazel b/e2e/binary/numfmt/BUILD.bazel new file mode 100644 index 00000000..386ea98a --- /dev/null +++ b/e2e/binary/numfmt/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `numfmt` + +build_test( + name = "numfmt", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:numfmt"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/od/BUILD.bazel b/e2e/binary/od/BUILD.bazel new file mode 100644 index 00000000..09a1c195 --- /dev/null +++ b/e2e/binary/od/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `od` + +build_test( + name = "od", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:od"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/paste/BUILD.bazel b/e2e/binary/paste/BUILD.bazel new file mode 100644 index 00000000..1480f1fb --- /dev/null +++ b/e2e/binary/paste/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `paste` + +build_test( + name = "paste", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:paste"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/patch/BUILD.bazel b/e2e/binary/patch/BUILD.bazel new file mode 100644 index 00000000..4ee2ebfe --- /dev/null +++ b/e2e/binary/patch/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `patch` + +build_test( + name = "patch", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:patch"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/pathchk/BUILD.bazel b/e2e/binary/pathchk/BUILD.bazel new file mode 100644 index 00000000..04383d6e --- /dev/null +++ b/e2e/binary/pathchk/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `pathchk` + +build_test( + name = "pathchk", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:pathchk"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/php/BUILD.bazel b/e2e/binary/php/BUILD.bazel new file mode 100644 index 00000000..50a61e0c --- /dev/null +++ b/e2e/binary/php/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `php` + +build_test( + name = "php", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:php"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/pigz/BUILD.bazel b/e2e/binary/pigz/BUILD.bazel new file mode 100644 index 00000000..2d37096a --- /dev/null +++ b/e2e/binary/pigz/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `pigz` + +build_test( + name = "pigz", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:pigz"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/pinky/BUILD.bazel b/e2e/binary/pinky/BUILD.bazel new file mode 100644 index 00000000..e99ceab9 --- /dev/null +++ b/e2e/binary/pinky/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `pinky` + +build_test( + name = "pinky", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:pinky"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/pledge/BUILD.bazel b/e2e/binary/pledge/BUILD.bazel new file mode 100644 index 00000000..496225ec --- /dev/null +++ b/e2e/binary/pledge/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `pledge` + +build_test( + name = "pledge", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:pledge"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/pr/BUILD.bazel b/e2e/binary/pr/BUILD.bazel new file mode 100644 index 00000000..318717b9 --- /dev/null +++ b/e2e/binary/pr/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `pr` + +build_test( + name = "pr", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:pr"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/printenv/BUILD.bazel b/e2e/binary/printenv/BUILD.bazel new file mode 100644 index 00000000..c4c3e7e3 --- /dev/null +++ b/e2e/binary/printenv/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `printenv` + +build_test( + name = "printenv", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:printenv"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/printf/BUILD.bazel b/e2e/binary/printf/BUILD.bazel new file mode 100644 index 00000000..6afff82e --- /dev/null +++ b/e2e/binary/printf/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `printf` + +build_test( + name = "printf", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:printf"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/printimage/BUILD.bazel b/e2e/binary/printimage/BUILD.bazel new file mode 100644 index 00000000..9513a279 --- /dev/null +++ b/e2e/binary/printimage/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `printimage` + +build_test( + name = "printimage", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:printimage"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/printvideo/BUILD.bazel b/e2e/binary/printvideo/BUILD.bazel new file mode 100644 index 00000000..4acc3b86 --- /dev/null +++ b/e2e/binary/printvideo/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `printvideo` + +build_test( + name = "printvideo", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:printvideo"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/ptx/BUILD.bazel b/e2e/binary/ptx/BUILD.bazel new file mode 100644 index 00000000..bc07933d --- /dev/null +++ b/e2e/binary/ptx/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `ptx` + +build_test( + name = "ptx", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:ptx"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/pwd/BUILD.bazel b/e2e/binary/pwd/BUILD.bazel new file mode 100644 index 00000000..5a1dce76 --- /dev/null +++ b/e2e/binary/pwd/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `pwd` + +build_test( + name = "pwd", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:pwd"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/pypack1/BUILD.bazel b/e2e/binary/pypack1/BUILD.bazel new file mode 100644 index 00000000..ec004a69 --- /dev/null +++ b/e2e/binary/pypack1/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `pypack1` + +build_test( + name = "pypack1", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:pypack1"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/pypack2/BUILD.bazel b/e2e/binary/pypack2/BUILD.bazel new file mode 100644 index 00000000..e88a9837 --- /dev/null +++ b/e2e/binary/pypack2/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `pypack2` + +build_test( + name = "pypack2", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:pypack2"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/python/BUILD.bazel b/e2e/binary/python/BUILD.bazel new file mode 100644 index 00000000..bd0c823c --- /dev/null +++ b/e2e/binary/python/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `python` + +build_test( + name = "python", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:python"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/qjs/BUILD.bazel b/e2e/binary/qjs/BUILD.bazel new file mode 100644 index 00000000..1507a318 --- /dev/null +++ b/e2e/binary/qjs/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `qjs` + +build_test( + name = "qjs", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:qjs"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/readlink/BUILD.bazel b/e2e/binary/readlink/BUILD.bazel new file mode 100644 index 00000000..300e0e75 --- /dev/null +++ b/e2e/binary/readlink/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `readlink` + +build_test( + name = "readlink", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:readlink"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/realpath/BUILD.bazel b/e2e/binary/realpath/BUILD.bazel new file mode 100644 index 00000000..5b7c75bf --- /dev/null +++ b/e2e/binary/realpath/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `realpath` + +build_test( + name = "realpath", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:realpath"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/redbean/BUILD.bazel b/e2e/binary/redbean/BUILD.bazel new file mode 100644 index 00000000..6ea178e7 --- /dev/null +++ b/e2e/binary/redbean/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `redbean` + +build_test( + name = "redbean", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:redbean"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/rm/BUILD.bazel b/e2e/binary/rm/BUILD.bazel new file mode 100644 index 00000000..f76722ff --- /dev/null +++ b/e2e/binary/rm/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `rm` + +build_test( + name = "rm", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:rm"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/rmdir/BUILD.bazel b/e2e/binary/rmdir/BUILD.bazel new file mode 100644 index 00000000..d16bbca0 --- /dev/null +++ b/e2e/binary/rmdir/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `rmdir` + +build_test( + name = "rmdir", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:rmdir"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/romanize/BUILD.bazel b/e2e/binary/romanize/BUILD.bazel new file mode 100644 index 00000000..25900815 --- /dev/null +++ b/e2e/binary/romanize/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `romanize` + +build_test( + name = "romanize", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:romanize"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/rsync/BUILD.bazel b/e2e/binary/rsync/BUILD.bazel new file mode 100644 index 00000000..dda14f4f --- /dev/null +++ b/e2e/binary/rsync/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `rsync` + +build_test( + name = "rsync", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:rsync"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/runcon/BUILD.bazel b/e2e/binary/runcon/BUILD.bazel new file mode 100644 index 00000000..bef93e06 --- /dev/null +++ b/e2e/binary/runcon/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `runcon` + +build_test( + name = "runcon", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:runcon"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/rusage/BUILD.bazel b/e2e/binary/rusage/BUILD.bazel new file mode 100644 index 00000000..3304934c --- /dev/null +++ b/e2e/binary/rusage/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `rusage` + +build_test( + name = "rusage", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:rusage"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/scrapscript/BUILD.bazel b/e2e/binary/scrapscript/BUILD.bazel new file mode 100644 index 00000000..a5a530e4 --- /dev/null +++ b/e2e/binary/scrapscript/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `scrapscript` + +build_test( + name = "scrapscript", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:scrapscript"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/script/BUILD.bazel b/e2e/binary/script/BUILD.bazel new file mode 100644 index 00000000..1bc24548 --- /dev/null +++ b/e2e/binary/script/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `script` + +build_test( + name = "script", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:script"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sdiff/BUILD.bazel b/e2e/binary/sdiff/BUILD.bazel new file mode 100644 index 00000000..b1760484 --- /dev/null +++ b/e2e/binary/sdiff/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sdiff` + +build_test( + name = "sdiff", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sdiff"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sed/BUILD.bazel b/e2e/binary/sed/BUILD.bazel new file mode 100644 index 00000000..da498a72 --- /dev/null +++ b/e2e/binary/sed/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sed` + +build_test( + name = "sed", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sed"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/seq/BUILD.bazel b/e2e/binary/seq/BUILD.bazel new file mode 100644 index 00000000..6532ff92 --- /dev/null +++ b/e2e/binary/seq/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `seq` + +build_test( + name = "seq", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:seq"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sha1sum/BUILD.bazel b/e2e/binary/sha1sum/BUILD.bazel new file mode 100644 index 00000000..6feeb59d --- /dev/null +++ b/e2e/binary/sha1sum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sha1sum` + +build_test( + name = "sha1sum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sha1sum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sha224sum/BUILD.bazel b/e2e/binary/sha224sum/BUILD.bazel new file mode 100644 index 00000000..cc9181a7 --- /dev/null +++ b/e2e/binary/sha224sum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sha224sum` + +build_test( + name = "sha224sum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sha224sum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sha256sum/BUILD.bazel b/e2e/binary/sha256sum/BUILD.bazel new file mode 100644 index 00000000..b2f7947b --- /dev/null +++ b/e2e/binary/sha256sum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sha256sum` + +build_test( + name = "sha256sum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sha256sum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sha384sum/BUILD.bazel b/e2e/binary/sha384sum/BUILD.bazel new file mode 100644 index 00000000..4fbbdce5 --- /dev/null +++ b/e2e/binary/sha384sum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sha384sum` + +build_test( + name = "sha384sum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sha384sum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sha512sum/BUILD.bazel b/e2e/binary/sha512sum/BUILD.bazel new file mode 100644 index 00000000..367f38b6 --- /dev/null +++ b/e2e/binary/sha512sum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sha512sum` + +build_test( + name = "sha512sum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sha512sum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/shred/BUILD.bazel b/e2e/binary/shred/BUILD.bazel new file mode 100644 index 00000000..0f2a2f89 --- /dev/null +++ b/e2e/binary/shred/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `shred` + +build_test( + name = "shred", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:shred"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/shuf/BUILD.bazel b/e2e/binary/shuf/BUILD.bazel new file mode 100644 index 00000000..169b514b --- /dev/null +++ b/e2e/binary/shuf/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `shuf` + +build_test( + name = "shuf", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:shuf"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sleep/BUILD.bazel b/e2e/binary/sleep/BUILD.bazel new file mode 100644 index 00000000..38501238 --- /dev/null +++ b/e2e/binary/sleep/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sleep` + +build_test( + name = "sleep", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sleep"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sort/BUILD.bazel b/e2e/binary/sort/BUILD.bazel new file mode 100644 index 00000000..e6adee64 --- /dev/null +++ b/e2e/binary/sort/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sort` + +build_test( + name = "sort", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sort"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sox/BUILD.bazel b/e2e/binary/sox/BUILD.bazel new file mode 100644 index 00000000..4e79ce90 --- /dev/null +++ b/e2e/binary/sox/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sox` + +build_test( + name = "sox", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sox"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/split/BUILD.bazel b/e2e/binary/split/BUILD.bazel new file mode 100644 index 00000000..d8e53274 --- /dev/null +++ b/e2e/binary/split/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `split` + +build_test( + name = "split", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:split"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sqlite3/BUILD.bazel b/e2e/binary/sqlite3/BUILD.bazel new file mode 100644 index 00000000..940a9f50 --- /dev/null +++ b/e2e/binary/sqlite3/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sqlite3` + +build_test( + name = "sqlite3", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sqlite3"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/stat/BUILD.bazel b/e2e/binary/stat/BUILD.bazel new file mode 100644 index 00000000..8b9cdb99 --- /dev/null +++ b/e2e/binary/stat/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `stat` + +build_test( + name = "stat", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:stat"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/stty/BUILD.bazel b/e2e/binary/stty/BUILD.bazel new file mode 100644 index 00000000..657c3f7e --- /dev/null +++ b/e2e/binary/stty/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `stty` + +build_test( + name = "stty", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:stty"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sum/BUILD.bazel b/e2e/binary/sum/BUILD.bazel new file mode 100644 index 00000000..60c1d1fa --- /dev/null +++ b/e2e/binary/sum/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sum` + +build_test( + name = "sum", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sum"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/sync/BUILD.bazel b/e2e/binary/sync/BUILD.bazel new file mode 100644 index 00000000..866a55ef --- /dev/null +++ b/e2e/binary/sync/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `sync` + +build_test( + name = "sync", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:sync"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tac/BUILD.bazel b/e2e/binary/tac/BUILD.bazel new file mode 100644 index 00000000..37669403 --- /dev/null +++ b/e2e/binary/tac/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tac` + +build_test( + name = "tac", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tac"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tail/BUILD.bazel b/e2e/binary/tail/BUILD.bazel new file mode 100644 index 00000000..9cbd5008 --- /dev/null +++ b/e2e/binary/tail/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tail` + +build_test( + name = "tail", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tail"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tar/BUILD.bazel b/e2e/binary/tar/BUILD.bazel new file mode 100644 index 00000000..c10bdaab --- /dev/null +++ b/e2e/binary/tar/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tar` + +build_test( + name = "tar", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tar"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tclsh8.6/BUILD.bazel b/e2e/binary/tclsh8.6/BUILD.bazel new file mode 100644 index 00000000..c6b3453b --- /dev/null +++ b/e2e/binary/tclsh8.6/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tclsh8.6` + +build_test( + name = "tclsh8.6", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tclsh8.6"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tee/BUILD.bazel b/e2e/binary/tee/BUILD.bazel new file mode 100644 index 00000000..ae635ec9 --- /dev/null +++ b/e2e/binary/tee/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tee` + +build_test( + name = "tee", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tee"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/test/BUILD.bazel b/e2e/binary/test/BUILD.bazel new file mode 100644 index 00000000..0dcf8ba0 --- /dev/null +++ b/e2e/binary/test/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `test` + +build_test( + name = "test", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:test"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tidy/BUILD.bazel b/e2e/binary/tidy/BUILD.bazel new file mode 100644 index 00000000..53c8ad35 --- /dev/null +++ b/e2e/binary/tidy/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tidy` + +build_test( + name = "tidy", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tidy"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/timeout/BUILD.bazel b/e2e/binary/timeout/BUILD.bazel new file mode 100644 index 00000000..5e96d23e --- /dev/null +++ b/e2e/binary/timeout/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `timeout` + +build_test( + name = "timeout", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:timeout"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tmux/BUILD.bazel b/e2e/binary/tmux/BUILD.bazel new file mode 100644 index 00000000..8c969ff2 --- /dev/null +++ b/e2e/binary/tmux/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tmux` + +build_test( + name = "tmux", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tmux"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/touch/BUILD.bazel b/e2e/binary/touch/BUILD.bazel new file mode 100644 index 00000000..2903f461 --- /dev/null +++ b/e2e/binary/touch/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `touch` + +build_test( + name = "touch", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:touch"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tr/BUILD.bazel b/e2e/binary/tr/BUILD.bazel new file mode 100644 index 00000000..28fab6ea --- /dev/null +++ b/e2e/binary/tr/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tr` + +build_test( + name = "tr", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tr"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tree/BUILD.bazel b/e2e/binary/tree/BUILD.bazel new file mode 100644 index 00000000..a8b99296 --- /dev/null +++ b/e2e/binary/tree/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tree` + +build_test( + name = "tree", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tree"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/true/BUILD.bazel b/e2e/binary/true/BUILD.bazel new file mode 100644 index 00000000..7fde5ecb --- /dev/null +++ b/e2e/binary/true/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `true` + +build_test( + name = "true", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:true"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/truncate/BUILD.bazel b/e2e/binary/truncate/BUILD.bazel new file mode 100644 index 00000000..83639bb3 --- /dev/null +++ b/e2e/binary/truncate/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `truncate` + +build_test( + name = "truncate", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:truncate"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tsort/BUILD.bazel b/e2e/binary/tsort/BUILD.bazel new file mode 100644 index 00000000..85d14ce9 --- /dev/null +++ b/e2e/binary/tsort/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tsort` + +build_test( + name = "tsort", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tsort"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/tty/BUILD.bazel b/e2e/binary/tty/BUILD.bazel new file mode 100644 index 00000000..46f38f02 --- /dev/null +++ b/e2e/binary/tty/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `tty` + +build_test( + name = "tty", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:tty"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/ttyinfo/BUILD.bazel b/e2e/binary/ttyinfo/BUILD.bazel new file mode 100644 index 00000000..4fe3ddef --- /dev/null +++ b/e2e/binary/ttyinfo/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `ttyinfo` + +build_test( + name = "ttyinfo", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:ttyinfo"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/uname/BUILD.bazel b/e2e/binary/uname/BUILD.bazel new file mode 100644 index 00000000..fad42c32 --- /dev/null +++ b/e2e/binary/uname/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `uname` + +build_test( + name = "uname", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:uname"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/unbourne/BUILD.bazel b/e2e/binary/unbourne/BUILD.bazel new file mode 100644 index 00000000..6f9d958d --- /dev/null +++ b/e2e/binary/unbourne/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `unbourne` + +build_test( + name = "unbourne", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:unbourne"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/unexpand/BUILD.bazel b/e2e/binary/unexpand/BUILD.bazel new file mode 100644 index 00000000..1e52862b --- /dev/null +++ b/e2e/binary/unexpand/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `unexpand` + +build_test( + name = "unexpand", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:unexpand"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/uniq/BUILD.bazel b/e2e/binary/uniq/BUILD.bazel new file mode 100644 index 00000000..ea2512a8 --- /dev/null +++ b/e2e/binary/uniq/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `uniq` + +build_test( + name = "uniq", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:uniq"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/unlink/BUILD.bazel b/e2e/binary/unlink/BUILD.bazel new file mode 100644 index 00000000..22cc8c2c --- /dev/null +++ b/e2e/binary/unlink/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `unlink` + +build_test( + name = "unlink", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:unlink"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/unzip/BUILD.bazel b/e2e/binary/unzip/BUILD.bazel new file mode 100644 index 00000000..d88b69fc --- /dev/null +++ b/e2e/binary/unzip/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `unzip` + +build_test( + name = "unzip", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:unzip"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/uptime/BUILD.bazel b/e2e/binary/uptime/BUILD.bazel new file mode 100644 index 00000000..7b0db893 --- /dev/null +++ b/e2e/binary/uptime/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `uptime` + +build_test( + name = "uptime", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:uptime"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/users/BUILD.bazel b/e2e/binary/users/BUILD.bazel new file mode 100644 index 00000000..37c375eb --- /dev/null +++ b/e2e/binary/users/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `users` + +build_test( + name = "users", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:users"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/vdir/BUILD.bazel b/e2e/binary/vdir/BUILD.bazel new file mode 100644 index 00000000..26e80085 --- /dev/null +++ b/e2e/binary/vdir/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `vdir` + +build_test( + name = "vdir", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:vdir"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/verynice/BUILD.bazel b/e2e/binary/verynice/BUILD.bazel new file mode 100644 index 00000000..ed2e98d7 --- /dev/null +++ b/e2e/binary/verynice/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `verynice` + +build_test( + name = "verynice", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:verynice"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/vim/BUILD.bazel b/e2e/binary/vim/BUILD.bazel new file mode 100644 index 00000000..d0d323cc --- /dev/null +++ b/e2e/binary/vim/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `vim` + +build_test( + name = "vim", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:vim"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/wall/BUILD.bazel b/e2e/binary/wall/BUILD.bazel new file mode 100644 index 00000000..d9e07aee --- /dev/null +++ b/e2e/binary/wall/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `wall` + +build_test( + name = "wall", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:wall"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/wc/BUILD.bazel b/e2e/binary/wc/BUILD.bazel new file mode 100644 index 00000000..2c6e9581 --- /dev/null +++ b/e2e/binary/wc/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `wc` + +build_test( + name = "wc", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:wc"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/wget/BUILD.bazel b/e2e/binary/wget/BUILD.bazel new file mode 100644 index 00000000..2664737e --- /dev/null +++ b/e2e/binary/wget/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `wget` + +build_test( + name = "wget", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:wget"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/who/BUILD.bazel b/e2e/binary/who/BUILD.bazel new file mode 100644 index 00000000..5b130d72 --- /dev/null +++ b/e2e/binary/who/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `who` + +build_test( + name = "who", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:who"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/whoami/BUILD.bazel b/e2e/binary/whoami/BUILD.bazel new file mode 100644 index 00000000..62f7e9fe --- /dev/null +++ b/e2e/binary/whoami/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `whoami` + +build_test( + name = "whoami", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:whoami"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/whois/BUILD.bazel b/e2e/binary/whois/BUILD.bazel new file mode 100644 index 00000000..c9b9dca2 --- /dev/null +++ b/e2e/binary/whois/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `whois` + +build_test( + name = "whois", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:whois"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/xargs/BUILD.bazel b/e2e/binary/xargs/BUILD.bazel new file mode 100644 index 00000000..927c27ed --- /dev/null +++ b/e2e/binary/xargs/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `xargs` + +build_test( + name = "xargs", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:xargs"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/xz/BUILD.bazel b/e2e/binary/xz/BUILD.bazel new file mode 100644 index 00000000..e22d0c34 --- /dev/null +++ b/e2e/binary/xz/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `xz` + +build_test( + name = "xz", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:xz"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/yes/BUILD.bazel b/e2e/binary/yes/BUILD.bazel new file mode 100644 index 00000000..e9605cc4 --- /dev/null +++ b/e2e/binary/yes/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `yes` + +build_test( + name = "yes", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:yes"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/zip/BUILD.bazel b/e2e/binary/zip/BUILD.bazel new file mode 100644 index 00000000..ce603aa7 --- /dev/null +++ b/e2e/binary/zip/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `zip` + +build_test( + name = "zip", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:zip"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/zsh/BUILD.bazel b/e2e/binary/zsh/BUILD.bazel new file mode 100644 index 00000000..8616cbc1 --- /dev/null +++ b/e2e/binary/zsh/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `zsh` + +build_test( + name = "zsh", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:zsh"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/binary/zstd/BUILD.bazel b/e2e/binary/zstd/BUILD.bazel new file mode 100644 index 00000000..2e070bef --- /dev/null +++ b/e2e/binary/zstd/BUILD.bazel @@ -0,0 +1,11 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# TODO: write an _actual_ test for `zstd` + +build_test( + name = "zstd", + size = "small", + tags = ["stub"], + targets = ["@ape//ape:zstd"], + visibility = ["//:__subpackages__"], +) diff --git a/e2e/cosmos/3.1.3.json b/e2e/cosmos/3.1.3.json new file mode 100644 index 00000000..a9a378ba --- /dev/null +++ b/e2e/cosmos/3.1.3.json @@ -0,0 +1,167 @@ +{ + "ape-aarch64.elf": "sha256-WYUckbagilfXA6pgyoWnuG22V0kI58PhpOS+0CDa+UE=", + "ape-arm64.elf": "sha256-WYUckbagilfXA6pgyoWnuG22V0kI58PhpOS+0CDa+UE=", + "ape-x86_64.elf": "sha256-q/Oxu3GCk1v0jZjcFDxR7lY9KaH9LDkw/1qNjI2COBc=", + "ape-x86_64.macho": "sha256-oWyPo217RZYmTNW3k1MEYOLbBa8LG8fF4zSIfim5OJU=", + "assimilate": "sha256-OeOSwT8TqsZhFjWI+Fo8dh8mFF5QyHoNTh+vJGQTSOU=", + "assimilate-aarch64.elf": "sha256-sFEaJLwEYlUxmk3GVD51mJWNETqhxohsbCdqJujeshU=", + "assimilate-x86_64.elf": "sha256-NJ8/URxOtwxNtS4vuZpB2bIIyDw+xoLAV+uvH+X5hXs=", + "assimilate-x86_64.macho": "sha256-GWvXnP+59DdbXNo46VU2WUF+xrzxFXlVZ1wLRdzGrMk=", + "awk": "sha256-L/6XCQ5vyGlel2rAz5z1Nn+cjWA4rXRaMDBB/A1B1Ao=", + "b2sum": "sha256-GaoSlpwiXeZg5KgFv6Y6FYutDVmtaO6as4RrIt6AjNY=", + "base32": "sha256-KVJ2LDlzO6LUN1Cip3d26ZLqJeNkICPEr1CEtYdEkLY=", + "base64": "sha256-L6BS6aci/th7ucw7/y5A2MIqfLBT95RhyEfI5siuy/s=", + "basename": "sha256-+TZAyOcWht66lllJlbQwKqIt1jk4CVf1/goI6HnIVlE=", + "basenc": "sha256-NgGicKW9uV+5xc/oSEExuH/PleJOnwCDebhk7stAZV8=", + "bash": "sha256-uH/5vCQx2dWsxfMY31QUJPB5Vz2x+pK9nQ3XolULIm8=", + "berry": "sha256-3tGWs2Yc0rGqmlx1W50Fe3Tswvl2EsmxEABOR02yOZA=", + "brotli": "sha256-0x3bS2BFsgpLw/cnInch54BZzMw0aHHMcgvquLKmYK0=", + "bzip2": "sha256-Teep6rhoNrBVRMgaOLRsAyq1s4iKk6KKITgU4l51qZA=", + "cat": "sha256-QlCeHxjEgWfBY7LQiADHJi+uudTo+oTHpaL8Dlorj2c=", + "chcon": "sha256-9U+eUXrFnsdjYcD0035Kg3XC1J0gU28hK6dxPlsw2G0=", + "chgrp": "sha256-7R+QACW3Sz/D2ZBKyhqEykwHou6Insee01eHqXdiqHo=", + "chmod": "sha256-Ml5b42b7YHBO0xzeIfiN5ohBOSdPDveS8RZfoPHlFaI=", + "chown": "sha256-SmjdbLY0UkHq+EbIWbMmpCexmhQB/29KWONWzRTyIys=", + "chroot": "sha256-o2xdphc+QwJ8vR7uRVl8xPXQHY5eHCIGeNwp8Nxc8SA=", + "cksum": "sha256-WitBRvVH+cPbvXGlOwVyqMV2lgeF0BPOpG5ImGmLzEU=", + "clang-format": "sha256-t1/HDaTZ/klR+VFONNcqj5uxgIm37dafKu5Mp99ecVQ=", + "comm": "sha256-ivuJjEm5AYm6076eXwc7FDqz2UZX9LSt0EQ3YoQFnzE=", + "cp": "sha256-zGVr2Bk0dhRWVt7KeuFkfbRX//yCwQl0MV8xi34ruiE=", + "csplit": "sha256-Rs3yGq0E94Yh0tcSxHj2xvafSYjJDXezNS2eGO+f5Do=", + "ctags": "sha256-NNiDbnKgZs9THRXW35GQF3BrYRixcVpImYUa9iZoPdY=", + "curl": "sha256-pOPeSvp3FWm0T6YJha6w4NwWzKKsOvBkiRbO7RD+YM4=", + "cut": "sha256-0Xu9tbCWY2ErB1Vu5klLuCGAlmub3xRk/RawWWoFr48=", + "dash": "sha256-e28n45l75Tr8cHF+DX3qNe6nmZhyJDgLzMF2tJSZbQ8=", + "datasette": "sha256-+2/MHG8dryuDNU9pFCHiJbpMoJZoG/0/iAf7ZivBpGU=", + "date": "sha256-9YUybnuf7F6NLvs7+15+4KKzevTRX0brPA3jv3ZZgro=", + "dd": "sha256-9xs6mcP3zWEXNknfaYEw7mCZsEveFTIX8skJRnBQ+R8=", + "df": "sha256-0C+RoZ6SaQ9bPVVwfmyZdP5L1SykDZFMvFXHjvQ8jl8=", + "dir": "sha256-p7/SAjoYD2yZmZSkceNdo824CB5b2YJQ5m2c86Qwoxo=", + "dircolors": "sha256-BfWp8zUwsqKXRhdxeluvuhdBYV9EZuMgw0WZDvpUnMI=", + "dirname": "sha256-do7L0xWqE6r0UxcVKXNOh/N7SEh2cBrfQLp2y3dpp/c=", + "du": "sha256-+43j5Ov8EZ4CcXBOJFP+b3DaLWqavwTGZeJ/L5GQUNk=", + "echo": "sha256-oaBC3x4Ts+CEI2UqM/YI8k1q5Ud/J2UQfWH4IILALmw=", + "emacs": "sha256-7FDLQVDS6sBwWICaONqCfRcIw0w7tWecYmq9/UE4zog=", + "emacsclient": "sha256-4j4g4s81gPzye27bASo4wmPOu2p80I8uIzMFC1QVSME=", + "env": "sha256-bfKNgkpnGRStT5QfHgZcC0RJFd4VLJbgLthU010iSGo=", + "expand": "sha256-eRZ9h8oUqb0KV+ZU0heHtItPEkHMYltd+tEAitzB1Hw=", + "expr": "sha256-3W0o/RomE/No9tbYhLfwa1X3WuPUde/EJGZLKM9uRhA=", + "factor": "sha256-78brRdtq90rnwCvLDALn8Qbm5adFdD5i18I6EACGfms=", + "false": "sha256-djpJwmPkS77w3B/DbNkrFKnw8FDiMTZs/kNSfvqE2Xk=", + "find": "sha256-QgZxkbiCL6dWewPSV1CYhg2D6+Trfy4ezGIZ/xsTs8c=", + "fmt": "sha256-3EVsR8K0vlkhxK+eMBg57euCI28PcXS5I1sITgqpm58=", + "fold": "sha256-R7i2ybtDZwR0r9pt46w53Jsx6D2aeG362M3wOpTrvwE=", + "gmake": "sha256-kVx885AMt0pUw30vMkQHq6nfcpzGyLJaxnNmFgoqI9U=", + "greenbean": "sha256-LpIS0vOtJ6tzc24IFVnKCs7t0ihVxUFVTm3+tJAa9rs=", + "grep": "sha256-IC0TekjEN6KK3qT0VYK7hMTc5kjrXTFvBXKE3AiO2kY=", + "groups": "sha256-UR05dumcot/bQe03vUnwmdAPVA+tuWIT6xyU+NQP7P4=", + "gzip": "sha256-PxwuXMmyoi44qXAQ+/zi10RRjLz1S3FDvtGCZxNxOGI=", + "head": "sha256-jB9uy/H8iOFVHaAF+ew1M4VuqyfrlZjDI3bI5/fBji0=", + "hello": "sha256-wmz/Gry0Ut1TOEod3y81+iyNcmKw9r5ugEOScfLpUqQ=", + "id": "sha256-m7Dk9LU9pFAyGT1mErMwItce1FrErS0bRGsQ7bayGag=", + "install": "sha256-KWRc7xVYg+Wekm7EwrGvEuz6yFOdgB1yvLTV63GNCV4=", + "join": "sha256-EdLcVV+qVnxLMumDbLQs0MSQ7wrOiI06c78haOT+Ck8=", + "kill": "sha256-b4UufNPgWz55yHR+k5OdwTBZyVBjY6WtVZ4HEMLr30I=", + "less": "sha256-enwicIhlycMwQttEmHsWpx00m20nqIS/DLt4IHO0I8g=", + "life": "sha256-rhmCu+Ub8OrG4CH9Hnwgw2oQVWf8RTpX2oNTKSEKeZM=", + "link": "sha256-h2MKF11tX3LnkVF2aZYHTKGqjrmqDfTQNF+vW/LGMyM=", + "llama": "sha256-8EVOk68eZ4AZJ2h8AmmlgfV2gHj52zzdLx9ibJaYmfE=", + "ln": "sha256-FriLh1k6Cl11yTHswZVVsJPlF+Sc9JT6uRjhKzjEW64=", + "locate": "sha256-7nM47L1FPFcKgrayInKIjFBPUmJP9Vi5YC4jS+syHRQ=", + "logname": "sha256-72+wGF+sClLqYuj1Drnjxv/ABYnYB7DC35n2tvg5bX4=", + "ls": "sha256-Rey5QIeu21UB4L3U6ZIngaeZl1WOcViPZmpJ3URvDZM=", + "lua": "sha256-lPF7Jd3+IliCpCzgrry/d+o6LtPDwEdGKJvk+SoKDtQ=", + "make": "sha256-jmbPzMhemQqBcAE4sPyOoI0pzjSo13nykAhsq3Jn+pc=", + "md5sum": "sha256-kA7ySZfp8NGFzeFMVq5e5BBm/ELxgTNTBkH9kXY5lhQ=", + "mkdir": "sha256-LxEoIRmJVcdgA5nnYMEyuWhtJALz7rfKdQza3UY9EXs=", + "mkfifo": "sha256-DsS9Q0qSnAtpQplF96sPs3cJfF62P6ic7K9THDD3J9U=", + "mknod": "sha256-2yKTh4pUH4nzZnsJzmm9YDALPEfJ1p46iVjqTsibNac=", + "mktemp": "sha256-r568xzQ0RYW07Lx/dMEN2oued14nY8/bCwWU0l8RNdM=", + "mktemper": "sha256-mXjgWQ8ta7rsqg9NI3AnfCaEbJ0OxpSZCHoDLTn9T9w=", + "mv": "sha256-rX1wfzu57rdGXsELlWaUyL7YTeUyoywFGIXrrKoUQGE=", + "nano": "sha256-tEZ6Ifz9IFuJryEURc6RaDjZxg7iVFvxSDvYRnhpVv0=", + "nesemu1": "sha256-jSgFpOEgglaFDd5IgVEwV9DD7OJEhoBBI6vddGcS1Lo=", + "nice": "sha256-WY4vdvaY+uwqkeUupUdaWjEgSZrqWQAOkUBcrEzzppY=", + "ninja": "sha256-ALAx5OFud0Ny0lHENIykc1LfRsBH39NqHmbkSnXpRxw=", + "nl": "sha256-7NTNrkFQWXoNt6GCrQyRFPC/drWHtJUKOU9LkA1SeVE=", + "nohup": "sha256-ov0ymvfz+iqToWIHgLZ9GvlUVLCWsvAT2n1kHetfZi0=", + "nproc": "sha256-7P5oDE/hBe3o18+xaWLuEix1uVnJH7V4/aDNyPXcz/A=", + "numfmt": "sha256-cVaJG53XE2JmCyHtCQhi7tzSor9kdmWZWhI/ZkYwr/I=", + "od": "sha256-gNNnixyQNkBE1oHBSE0O7R8uTCCZNZupBtqO7Wx+xds=", + "paste": "sha256-fSqWz5Qt32pnmjpCcqKf8Eq2uQK3A+kBLbJKIhgLGbs=", + "pathchk": "sha256-+pJKNxAm1PzPrAQbQOSiEeMDgohv34nRNglLt58JRhM=", + "pigz": "sha256-neR0INVhYPonCUWyMbownwG8pXc/+WZEoG1tGSOCcnk=", + "pinky": "sha256-qktEtm4kQY+NZdthnl7vM6QFI1ieOziMWJa25szI0BU=", + "pledge": "sha256-DBuoptCsEnxtUfCdnJwpMhgiLOk+j6WqGRBWq7XHVlQ=", + "pr": "sha256-Txiw5w8jFGhOwNgIRFKrFnhfgRHgF6Kj7dpX8RVAfjE=", + "printenv": "sha256-gIviB/AfzVcC3rT+Tm+JWVq05aAmVjl4NYmaTvD97R4=", + "printf": "sha256-XJ+5nYvXQosvg0fmt0TqxyogQFl4TOmOVECybqQCAQI=", + "printimage": "sha256-ETGvBd5ixJMIoW6oMM1prijnvrjL2geCTBwP699jKyw=", + "ptx": "sha256-CXfqZ6zGWs/PzOLzNoDaPqS2XIK/KMWRsvFBBfx/CeQ=", + "pwd": "sha256-fc9y/oBB2uWbz2n2YMO5E+USOKnSVjJ2B7vezHe83Z0=", + "python": "sha256-autrcdsbwpu7HyiXjIqUjwKG5gtTwBxJxORs0xIrZiw=", + "qjs": "sha256-IzMWyCtBfHbGx/RH+PWgEVs1M1lCTIjEMZ4T8jGLLLs=", + "readlink": "sha256-sk17dpwRyzcrbmrMdo5BTaEAeuPL46dvJt1N9FTA9/4=", + "realpath": "sha256-57coUej2pyRKuIb0maayHqEHeyefv4iKI7DdJHdlfmk=", + "redbean": "sha256-AxMjGqvfEQeZMJeDd2coCtTw/P28uQ5vFnuk3DARdIw=", + "rm": "sha256-Q752EgtwP86tjdOteCOn3AUm5bFDzQmP/09FqgLY8vs=", + "rmdir": "sha256-5hJEvqD9v8jZyllDfAXnQkV0IbE0TbE9TTzn3kKKKSw=", + "rsync": "sha256-yieoMPKMhaU/V/N1lFVm0n+ssgZyOeyA5A8OMKW8Ouc=", + "runcon": "sha256-y3o+vzi9pJfuCIXkwKu9LFBmVUiw6vFHru+S/OrRcLc=", + "script": "sha256-DIoiCjveTxmW/wKXIRbGE3V+ct/9beJpPSGL8CZn1vA=", + "sed": "sha256-iPJJjP+GqFo8EqsBZsHRt9VChDniS53ADifknrFJAiA=", + "seq": "sha256-mXtquMhfoIHY2ZWQuJHPjzyyIKwaNK4bQ8kBfJ/7pI4=", + "sha1sum": "sha256-2jTRBDjQXmilIHJNXlwDUTQBRwp7SIC1trWdG8F90Y0=", + "sha224sum": "sha256-8/xMb0Po8frP7QMxDoCU1XNQJVVVKe6oD2BUZRe5y6k=", + "sha256sum": "sha256-HNquOwLp4buMX/w+duu6gd7y0ORk2Pj9zWrnRCiN6nw=", + "sha384sum": "sha256-C4FfhXjU+Az4MapjJDds85brDx2cHrMw7vTkWQBm3wI=", + "sha512sum": "sha256-FrR/KCVAtAFbLJJZCyrNFgWlU1dYpVBZSbSok7/kUF4=", + "shred": "sha256-bW0aU82OyvAe/T+I+18/5iuahYAORME4L+p2GGMkk1Y=", + "shuf": "sha256-HneyotcGba+4xEvzuQZxbOnbUIhFXfVI8z/d1oeLX8k=", + "sleep": "sha256-MRRvz2YSJneo3hsLJB5u8bawx4xhOfokLI+tEQJmuhM=", + "sort": "sha256-3VKAHVlzBqpWHS5tJ0OtBnU7sGnZ1EUSU8tuGWuv988=", + "split": "sha256-XmJ7RebkB6nkQQooH9oVYtLV7IS6JJUabBSBspyNFqU=", + "sqlite3": "sha256-Xe33hi2k4XRz86fO95x2DkVIfL5T00pUVWXooJ29bH8=", + "stat": "sha256-PEG4bpiGGf4b8NMrA5R36orjqwfRv2QrA+olwygBgk4=", + "stty": "sha256-9Jpvfj5Zb6pHwGl1PsHcc346INa84bTW8YuLokfWmt0=", + "sum": "sha256-HcpxfiyXFRbrMjJbMKI2kzzm+kklXDvrjk7bN01Z7+g=", + "sync": "sha256-dQUkTupPw1XWw+KiWVk3C3UVOCJsHzpgaaRL6+c5fi4=", + "tac": "sha256-RKVo9/vao5NrHBJw8q4djRyZAIhZXGXC6C1IOPh0RVE=", + "tail": "sha256-pkCcuNP1NP8PoXSPOjNQxcCd++Ha9fKEhcL40h2vhs8=", + "tar": "sha256-UqpsW/LDOtJE4AkPLvSgU54kQPF0L2JW8nB6cUx2eeU=", + "tee": "sha256-3icXvzVLCKaIiwyhbK8d5xsaKVS1FsrlFqa46n5UsgA=", + "test": "sha256-rAM1etW/Sh6QiwIEKYJ8wTeMdGrS7JXlZLxvN3WOpJY=", + "tidy": "sha256-ino0vYiVbVN3iWPg2QkkAhkt0/6rpQV4gByQOy8Anko=", + "timeout": "sha256-I2cheet197QEuPUUm/vwFd3aa2kbpjS74lWkRPnB4nM=", + "tmux": "sha256-YXa8jhJI9onfgaqZBSibiqhTVmrV0m8nVABlX4y2Rq0=", + "touch": "sha256-IbTnhZPtsp0MVR5YMbPbydQoZW4fdkK+zpLUWzniLMs=", + "tr": "sha256-2dRx5qpg0gK54dSSIvLX65hXsSDSf0aqSVEqOteJbmU=", + "tree": "sha256-9PrlksnmQKYdCrRGnBbXBvqLbPj8ZQmi8XTlHyzZSMw=", + "true": "sha256-0orWjDT8OYyB4P9bP1I885n9nxVuxncEN5Jz8a+EjY0=", + "truncate": "sha256-lZ7H+u2o/i0frr+3SNLX9wl+dt+Z8bcTkq97MAqwTV4=", + "tsort": "sha256-VDUxR7n3G2EfoF4WDYWypppVfzXI+kupo6yreBTWq+c=", + "tty": "sha256-3vpXXw5VFHre/OzD+2SOgcS9fvIF4880J1HRtAlFW8c=", + "ttyinfo": "sha256-yQ5SZpbLi6dGTjNoF8K9FH3Jfn6DXGiCzEpXcgP1pSM=", + "uname": "sha256-g/jLlpJ5JddFUPl9wf9mfxWMNByF3GBPwWlY48Hj+7M=", + "unbourne": "sha256-ikUALyvGuCHeyvfBrEz89EWJmOJ59X7hq9CWjniSBo8=", + "unexpand": "sha256-8Uqi4z/f8vxXRK1QfUohl8MS6bIblMaM7S4VNInJhCA=", + "uniq": "sha256-iTTpfc9j+4f7t0pNGpYBDQJJqlA5BkbCsMypqw+4sRg=", + "unlink": "sha256-AYKajItQtnhxAVM7rUEWIdXvlfaWdxW2nu9TwEE620I=", + "unzip": "sha256-2b+SjxqjLjWICHM3ywRWizKE/GeLB5YS57dPcvAcCRM=", + "uptime": "sha256-Q8evVkg9AHD4/FMbxC73dGtk68EX2hfqr1L1wpW23Nk=", + "users": "sha256-OzImZcJCLPzMoIBtE2P/uBXoS884jIDN3Qd2BefIpEw=", + "vdir": "sha256-YttpdAkioTnB4ZjUreWdTj64q/JJbiej6FtlXJdyTHo=", + "verynice": "sha256-CQl0ivmr2M1hlgsUvgNyJdhgkvGIRtWmMlQQPcqnA1Q=", + "vim": "sha256-/OlvTtKd5YlPwR3487Irjd2co6OKVSKartQt5jYDr14=", + "wall": "sha256-pLoNAlndoLNqVyoU4ocKOAWFe6SbVaJJ5gOgo1WFoPY=", + "wc": "sha256-ImV3TUOpfKBK6dCLx9Yhkagrid09Nf/IKqA8M5tDGLs=", + "wget": "sha256-EZzyls0b1JQuebKgxkLUeZU//Ej2tycTGg3tMdz5xC4=", + "who": "sha256-MDWT8l0+L3alJRru65AVSGnWfnxzWEfg0QwEzqcQkLQ=", + "whoami": "sha256-KKSva/mAjJ3WEYH+eh3dXGC0PRtRlGGyOqh0+PV1smI=", + "xargs": "sha256-/X84kHdTUhXoLwRoI/iABxuxkCB2EtL6m3G8FCFWjc0=", + "xz": "sha256-oESVTQvf+W+G6zGqVmWeSsgb44OSQ7ysXCNSs7CGP8c=", + "yes": "sha256-Rk6FrLhfWozo179cbfow2cNJ8BcdQC0+w9BGgV63L+M=", + "zip": "sha256-hg8DAtRHtxwaEXf5MNuwxONdu3ZWubig70bQUfGPhYQ=", + "zsh": "sha256-uNvl/ZI6RA8s1Flnlq+J3YzrZh+UYegCpuJ+ZBFMZyA=", + "zstd": "sha256-gaJEudIltpcHEj9z1WjxxdDXpNHeGj0q1EiYNoCymzg=" +} \ No newline at end of file diff --git a/e2e/cosmos/3.3.1.json b/e2e/cosmos/3.3.1.json new file mode 100644 index 00000000..8deabb55 --- /dev/null +++ b/e2e/cosmos/3.3.1.json @@ -0,0 +1,175 @@ +{ + "ape-aarch64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-arm64.elf": "sha256-h3zL1GUkMGVCbLSjyrQ1GsrZGGSfhlZVa7YEiC7q0I8=", + "ape-x86_64.elf": "sha256-fBz4sk4bbdatfaOBcEXVgq2hRrTW7AxqRb6oMOOmX00=", + "ape-x86_64.macho": "sha256-btvd3YJTsgZojeJJGIrf2OuFDpw9nxmEMleBS5NsWZg=", + "assimilate": "sha256-zBP7dVhBaUKyxbSlqVWKjC293c+t0NSMfSYW0/FnV0s=", + "assimilate-aarch64.elf": "sha256-sFEaJLwEYlUxmk3GVD51mJWNETqhxohsbCdqJujeshU=", + "assimilate-x86_64.elf": "sha256-NJ8/URxOtwxNtS4vuZpB2bIIyDw+xoLAV+uvH+X5hXs=", + "assimilate-x86_64.macho": "sha256-GWvXnP+59DdbXNo46VU2WUF+xrzxFXlVZ1wLRdzGrMk=", + "awk": "sha256-S8i3mKq7mEtBZzo1Uu679YqnAWzkikcVdf4VqEqI070=", + "b2sum": "sha256-hybI849qLSwgx7YJkQn7jWLMnagPL2HjvrKm/piVuhs=", + "base32": "sha256-TZkpwZAqSQTHHcRwl88F8haL6d7vm8nzdB50IBU7Mlw=", + "base64": "sha256-5yuKsVWZrZm/uaI23z8UBm4KmrNy+V2iqP/yNIAfl00=", + "basename": "sha256-xKbtsOkcHIi9mW3aI1JGo9H3pqan8hBqfsPxoh3e32s=", + "basenc": "sha256-RWpNzGmO/BjqSz9l6DEdOhFX5qoo1iHDJR8sNiahPe0=", + "bash": "sha256-a5aWfQrsx8zogqy1WCJ/sYEaNlxBbsY9lZVf4VMYTT0=", + "berry": "sha256-9ZJIEqpYwPi0OqU7N8BSAOci5yKcdv9cBnD5ZGzkj8g=", + "brotli": "sha256-Tm3e9kratlJPUF8d/+fIGyjmeBjX7NAkYDyiL4ks2jM=", + "bzip2": "sha256-lqfcO/t/s5f19EUnnV/oijc+iBnvmyblMAEM7FrcRZU=", + "cat": "sha256-zn8YVGvKwuQoDg9YXAE+9nxYM4E8t004mwIyNrqVpbw=", + "chcon": "sha256-qoL4zarrnBVQ+V6+xYnH4XCv856fUS/RxwQuBUGRFks=", + "chgrp": "sha256-GoWZbn/c4+E+TQhqD6lIOMVWUDJnbp6Wk8SHU7zENoU=", + "chmod.ape": "sha256-wr8yeoXHPf1zaytyG67uZFGXXr2P/EQfBDX2BXSEzg8=", + "chown": "sha256-LkN2ONSleTXKvpz/dYlk4m9UJRuCztov3+DlOEodXDE=", + "chroot": "sha256-jZbYqT/TwIpw6BO9FfJ3GxvklpKE0mBBXiNuGSbtsns=", + "cksum": "sha256-hfAnWqmktIYXHEiTaKWQL/fDXK7bnHQONkRKtaMd5J4=", + "clang-format": "sha256-t1/HDaTZ/klR+VFONNcqj5uxgIm37dafKu5Mp99ecVQ=", + "cmp": "sha256-8KPABEMCQeKSwHulagH5f382QOqkVpFp1Y3mohbcHk8=", + "comm": "sha256-uh4mLvzwY0QmCT32SRL/f0ubzXfszKpvb2ZtboQrNIA=", + "cp.ape": "sha256-uGcAdLFNsJ2iRWGfWkNvDDy8tq8ZuILOxPSsYAbRRWQ=", + "cpuid": "sha256-wAGvPA8axzW+XJ5w861q7IV518W7WMrZ/tbZ0Z78t1E=", + "csplit": "sha256-nLz8hfRVZDGz/UVq1/Ge0j4Q06eSLgLxu4aRexwEelA=", + "ctags": "sha256-x/101oqxSvgRoQ9N9+sZkuC7/tV+zVnId4Jo4gX5PIU=", + "curl": "sha256-54mSqLkXfwMSRZtPa2w2T8XuvE12o9QxJRQYmOGn1YY=", + "cut": "sha256-FDcHrxJ+CjkPOYFD/F7F9EOF93TKbU2/N7CHP8vte4I=", + "dash": "sha256-AMQZpQl5cfVZ/1vZAn/SnuSGC34CkfPMXA9tQixE/zM=", + "datasette": "sha256-hUDSYI+lpEhVX6zhFnNHu/N3bNfDeWSJQjkAzcoYCjA=", + "date": "sha256-uNP3r6CkyURYW7vH5rR/FXMQpoBgiyW2sTn6qUEs0ao=", + "dd.ape": "sha256-YcnILuHRDjt0KO1eK92RWERJ/kINYz984lmfSZxubFU=", + "df": "sha256-VtOW2S2dzEAwP/5B9Qj4u/qZndNCo0lJrSqWX7Sd6vo=", + "diff": "sha256-1ZQPcT1/LLFKJRq8K1S7sICi4VumBRAt6FSVKejBDek=", + "diff3": "sha256-ncg5o4aApr13g34awJ1oI4zfr9WqTq4JKCkwBXbWmF4=", + "dir": "sha256-oNxnS6F4pCNMedClbW/NFRRbP1XAwsdZpGJ2VsXug0g=", + "dircolors": "sha256-ASzE+h3h/0XBA4vrOyPSKptSE0tJEpbfFtMN1nDhGa4=", + "dirname": "sha256-EMAAvhNKylQI5YR1O3P1locWiIUpclMesgKAu9UWNec=", + "du": "sha256-XeQC8BcRZjuA+BCb+JRyRe+6wN3m3iVWZ7BIBF7guvA=", + "echo.ape": "sha256-Fq/mSx5iToZAUnUol34WY2hpxCJQniM6ZiKtxAzfAMM=", + "emacs": "sha256-DLJvKJfmHsrzgD7083fWvp3RFiUMvs3lvWk0xLH92z8=", + "emacsclient": "sha256-6hH6jn2pBX9VsoU4v3u3Xol4MR/6vskzIOwvOhMH5M4=", + "env": "sha256-Lm8iE0YBdvYwn4RMAyqiLWbVxqaEf2iNWilY3PPAGN4=", + "expand": "sha256-/hCOZX9bhwc5SjWQ9GIWwbcPCozCUWUKa/iuDv/ih2c=", + "expr": "sha256-31jw0oaJRgL3qHsBhGDc0TEuSNoAiBH8gyjzRzz87UE=", + "factor": "sha256-me2S4CN3G/KcERW/B86F9MbnvuQg4jaNPWoH4nUH7mk=", + "false": "sha256-KuxblC3tmFtyDjUcdGIag/UVdOGhvxtvrJkRrP6qyl4=", + "find": "sha256-7h4OC/Lz/iD7WkTxmvmSZOflw/E6gTMssKSz68qPCFw=", + "fmt": "sha256-DB2vUqeSnUryfZj+qibUGKMs4Abcz6qzM3w6lawptsM=", + "fold": "sha256-TdlGtv30nM28eoUXx9jjhAf7Zj834R0SHz0yfbcrWio=", + "gmake": "sha256-3J/jjvnCUMTfEyRc5RsxmVJw0jpSwmmzrEFO/u2/pQ8=", + "greenbean": "sha256-jZ4Oj9zhG/UUB2QmhMdDsx4fTdL8/0xvBCHOK/rGSys=", + "grep": "sha256-geISCmpxm4c2gwPnR+XjF47+j/mw2epm5qYEn5Vrvok=", + "groups": "sha256-64yeH5wPP7omE7VfLLH8HGWjyE7zgdzMF8oLpVz+5PY=", + "gzip.ape": "sha256-fLhh2zULCabpmmthArIDpQvaYKc3LPPSCct4+/6wBSw=", + "head": "sha256-Lr5xxWMwjZjQUh2ODx/zDzTO3fx8Yw5694p1t7zG0AU=", + "id": "sha256-8JUzzmsMkhu2sc9w2I/nb8recinaAamgGe7JEQh98kI=", + "install": "sha256-Iu1sv7WjlREuCQp3mgDxFCRf0byn5beC8JmHjWodb/M=", + "join": "sha256-eb7PzIfyziQZ8LeauwpuES+YKemu52jmt0KgJ3pAzks=", + "kill": "sha256-l4b6fMDZR4yHnP1ZpRVL2KfCOgbKDHZkUzo8wlZkMUA=", + "less": "sha256-pysLPyq9zi5gTcj+UTu41PgZsRnUAdYzATIUMiMEsQw=", + "life": "sha256-ui3H0RF4G0JHV9kbDIy5qviR+mKEN//98jHfznq8tO4=", + "link": "sha256-HFtwRXzP/Z+pJTM/Yz7+AMXumO46HmvGGfsHE9vUox8=", + "links": "sha256-EEOqXakHybI51BOxnBCHwLeYlwF8iSSx8p3Gxgcz0Qc=", + "ln": "sha256-FtXuVwYLaC/DT3LPF8coiSMCEOmVVorVzqBYDDRtjyg=", + "locate": "sha256-ZQUPf3kqvmik5citQP+wJiHeOJWrcX4TIDLytEuRyyo=", + "logname": "sha256-IMIHQygOJnWQ2pPMqcFZwKURdNAZM5onxESxBcLM7kM=", + "ls": "sha256-Fno6FUKMAA/8Uk2rsAauhr/b5uqeZcs2oAy+s8uHx3w=", + "lua": "sha256-LRYoHAQg+M8kQKtX6gCjSvD4b9puEbTK2t4z6hyVW8I=", + "lz4": "sha256-ymvYKyvlv31C6tdLYCVFfhaqvmZ5J37RDbxeGx/6rrI=", + "make": "sha256-98atSW2fzibEFrcpFy77A7IvnW0TtMEbeMKxicWb8FM=", + "md5sum": "sha256-1lNBqdyji+ttmR+4sIS6DXcJs6d+67gF0+Q3bUqNaIs=", + "mkdir.ape": "sha256-mt2EcyVG4+Pg7C0HXbGd5IIRtoZ+LEqX9c/kq8DcsQw=", + "mkfifo": "sha256-Z/dfvumWh0v8wr0l8ByZztaztwMkfekaOXNVnFLVxEk=", + "mknod": "sha256-C7rFuRsgVIA63trDx8rTpFGJztXbNAPMtNuqbzGeqdw=", + "mktemp": "sha256-GihMOG1RDJHUqphmOZPwkfEaVC4jC/X0kCRskpH09u8=", + "mktemper": "sha256-WreRwEGUss++hwxb+3Cttu72Voe4yi4E7Xyr9soCXps=", + "mv.ape": "sha256-jB7HYOKnprY6cyRiHpToKrGKW4cPID7gVUXWYi1tmlM=", + "nano": "sha256-trc2X1Jg1JTviP+nbelsQvtMmgrh5gtF7fEijdDvkZY=", + "nesemu1": "sha256-JOqaQ2aNcGoiB3YdX2zLCGGD8kFr4Glv3PLPVej/nwc=", + "nice": "sha256-+fHYlw1WIDX4kCzoTDYy5tqI/BdetF7WlxkJCWpJlrM=", + "ninja": "sha256-MdTFCVaBaiknlbcAXEshhc6P+QDEmNLH6NOt1bGbbu4=", + "nl": "sha256-y5a/fgKdjraA7e+RUKZSh6BIQPviZsxu4720/yPzGUI=", + "nohup": "sha256-sTiFAUHIl+IF6N8wChBjYZj3NJg4vN461JPY9T1peo8=", + "nproc": "sha256-Dydu9oowmpkajx9rq006f5I4Z0BhP6EJv+S0xEjTRcU=", + "numfmt": "sha256-7VTO7GYItNhcoqC7qixlY4dK7l0TgRFRBivCJjbls5Y=", + "od": "sha256-RV+nBJ885wCxqLW8+UOEm3rQopQQhQ/rHuHJYrhZiYA=", + "paste": "sha256-d37G1PptmT8DvFYb0A51tHRAONW3k2xq4y8pFnbR/FA=", + "patch": "sha256-dUVoOS8qaaVAsTlHp5DnupNPB02ZBfVBYUNoFEQVfY4=", + "pathchk": "sha256-qjcLXvmgW3bbARJqpE5PF1LdaVrvnQZVsmBFgTM5/JY=", + "pigz": "sha256-pvWipO8MGunU157lNj5pkNwMwDYSUFjtx7nWoNxBDw8=", + "pinky": "sha256-cCtYw56s7y1pYOCm/PNgp1Y+pgf8K0UjVVsikUIoJQE=", + "pledge": "sha256-eaFRVXB2hGp2o9lYNSP+bb+sxOQ04bqCU2mDEmSIRN0=", + "pr": "sha256-Cd292alJ/36s1BOyfPj+SDDCuMGsgduzsjHspANOguU=", + "printenv": "sha256-sCxezf/rJ5S2Yw9ELAh8TD0MCUKhTjdwvLfHBVHUiyc=", + "printf.ape": "sha256-lES1AJ1YXEsQN8At0yZvM5w0JGsJbfN8jGeb+n3i688=", + "printimage": "sha256-Q6HlaWrVneltekJ6JEceoU+yFzN9o9xpkI4UVwSXFrE=", + "ptx": "sha256-Hv3T2mhutoeK16lpWmZ9f1pbKnJfu1GGc4nCiwBwJ4Q=", + "pwd": "sha256-beUdC7B+HkPJsGjf/isqDL3QQ1gwypLBf32EC2tKa5g=", + "pypack1": "sha256-492wiVHg7chVDxUrir3pOrY1OZ/2h8uKBwfD4gtLJuM=", + "python": "sha256-CuebA8IWxuoYr9HjVgyMLqf0kx23/OGIcS/tAsvPm98=", + "qjs": "sha256-dgblh0J7T6VumjgCrL0PPJAUIzrqGFw9oqoYSO+g39o=", + "readlink": "sha256-n/FcF1jTFHmxvvh0UZeUbJOzse0mCIYEi7nFM0Wb2mg=", + "realpath": "sha256-0SUHEaSMliLf0BRdXaEAUGbwAAKXEV8M7f/xnBmqPPE=", + "redbean": "sha256-b6+KyGmVKmo6iiSUuhRrkIMQ9Mnr8ZqZR64rxtg4BBE=", + "rm.ape": "sha256-pqJTHikQR3b1pSwEcvMaS4SVmHqqUP2k6jCeKSUtDI8=", + "rmdir": "sha256-4yRCV2b4p4im2dCQka0gp7qbdbG0d5OmILbAErTEsF0=", + "rsync": "sha256-IpC+6WKlj7EqkYxNXXDdO7IaF1/jTItBvlSKr0MdNIk=", + "runcon": "sha256-y4OAxP6BQPy2+Rk4qFtStsBtiwOlZLlr30Un6Tt8B1k=", + "scrapscript": "sha256-Mukzd/HgwS54JouHt1+f0FzhMISbl6ecE5ERk+3ZDf4=", + "script": "sha256-He3EhRTNYIFHfDShoR69EPZW7USl/7gSM1ZB0uk+ie4=", + "sdiff": "sha256-V8rMT2LlnNJ5nQDA+HRVtYBWeoHFCko3lSoyJMo/UTE=", + "sed": "sha256-7z5mtxxjLL9ebC4V1cOpPjzArSxs1cIEsKizH4WPt3E=", + "seq": "sha256-OVOPZyBJJ9rcf1fnIU7ZvJuVTXN89cfXMGYGU1Es5Lo=", + "sha1sum": "sha256-2cL2GKl26qqr+FB3mKjhFPaIzPXCzxBiMfPOBYulFp0=", + "sha224sum": "sha256-Dk9BKP17F/la+gPizCvGjtTqa6/tZT0gTrp1vrKInbo=", + "sha256sum": "sha256-WIplUCNmB7rMDb3/LvrqwoIHaNFw29Etvu6ivX2kCgE=", + "sha384sum": "sha256-nLx1jTqjwSnhWO6eK+heIWHuterKu3B04nYkrp9Shrk=", + "sha512sum": "sha256-y8UewGoBGDMfq2wKHFijVN+NtWKLWZDPOAVQBIA7mSA=", + "shred": "sha256-i8AEctRrGsvRs8Ly7XmK+XpgiZeQVVjIhQ7ie/Yy8yw=", + "shuf": "sha256-WIdP7u66G/XFPDgyCpBihZBgijdeinfBDjARp1K8QXk=", + "sleep": "sha256-gtC/7PR5VvzgxL4FwBJ6VO6b0DN7uBYUc8oQcMeKHWY=", + "sort": "sha256-nz0/ivLwTYtnvl4Xpl456rDfRickgpukdzdPFQy7Bu8=", + "split": "sha256-LKP1sD1cxx+lTlkcxXX2Ew1w3ywOeIoUgnLbZ8ase88=", + "sqlite3": "sha256-MMV+VsI6iwk1U5gATzJEfKqFTRLcNjE6r0TSAmT/3O8=", + "stat": "sha256-VX1GgQICdH2+F5mmYc4WI7G4OT5FFI+Zy3fRw45aypU=", + "stty": "sha256-pBDYJV6K2WuiZTqTkHusvezMBwuf9WeBKOYA/CVyuUI=", + "sum": "sha256-V4E8YCCny/DfQ6vaSupDsQpEF8eF265jIVKiffjExD8=", + "sync": "sha256-92eEiTPpnGEmb1ECuvSXMrAjY+mv/DPP7SMEokOIWNs=", + "tac": "sha256-wCJO+G4bdaTYMzOhZK0CqJbb1fEOmUTAgUrs/yKUi1c=", + "tail": "sha256-25wCKN+CWbZI7/zvmviGlkz4MN6R+mhScVo+BonuDy0=", + "tar": "sha256-veeG74pMzsCwry2oKhbXtrODNLikp7S0Wv98vaAgTlE=", + "tee": "sha256-9nv7tmm8AZfZEIflRNwZz01qDR32aMkbAfhBQTxSgZs=", + "test": "sha256-njjQ967LtdtyVIr2LHLwNZcDjCh1ehqjf4vd4qs1xOY=", + "tidy": "sha256-lDaweZcW7rqo3azvmyGRNoIFwH6QfBX9hTtV5XgZMkc=", + "timeout": "sha256-/05So3XYe6Q1ZaLlg3CkexkMWeePhlCnfiN3FWj40q8=", + "tmux": "sha256-8bdRHrTHAxbBe3jxvDWasMBTt9B/z/I25PZ/7BX8GlI=", + "touch": "sha256-zhFuIvzfkzMi3FTIOumqd4GtGEVJpP/wBeU7/homOPI=", + "tr": "sha256-IiVcClTzSTp1JmNOHSlcIayZvNHbVY42DnAE8/0Qesc=", + "tree": "sha256-cQ8mhq2xdF49vJUc7FloZUswVn72LJDTgxqtRoKCsiw=", + "true": "sha256-hYaiwy4ndHtQVXkue5IZqX6eGTEIG5hF9dFiJNwy0hE=", + "truncate": "sha256-WBM53lBcudr5o7aZXSFtGMAtTDOiTO5mzJXu93LKD30=", + "tsort": "sha256-UpSUFlDED5YslxGn5tffiVOo+wXCkrHIcxn01I4h15s=", + "tty": "sha256-yzZVpirempT1e3VfLqW/wh73Wg/MO9liJDJLRFqzOmE=", + "ttyinfo": "sha256-80TSpREUXO5RJzkGhTYbDL1r31/JdiQ/9bojc0SJL5w=", + "uname.ape": "sha256-C3SggIVtotuyaYo/xQchyv0p8cQnXlyRyVAfnnDA+QU=", + "unbourne": "sha256-nXUhnAnJZE2ibUTpzuPRuo3ZStSR5YsizSyzPvleEEg=", + "unexpand": "sha256-SyirSgmXz8cG1TAs5tZHbTIUEup4TobeFXKHUn8g1d0=", + "uniq": "sha256-bRyARZw39jAZXgyGVm63r2V7r+xT3L4d90kAYVlDAZY=", + "unlink": "sha256-W4J4XLYs4yyT+7872Fv8RbOYtAlN62r4fXU83EXYZE0=", + "unzip": "sha256-QDT5UL43QhBK1pdJvCJdpyTMkxWQPD57wAkCziGcYP4=", + "uptime": "sha256-faDcCqiIAUWbsKqZdtVDIRgvV5NCmEGT8qxMzR6lGOg=", + "users": "sha256-isx4kM5na0c1MAcDdCcTnEIVB1HBCFKy757f47UD4tA=", + "vdir": "sha256-fQcjUl1QVmkQ4oyDkiKx/y2V+r5BDMU1oFf3w/l+tmc=", + "verynice": "sha256-S5D4PmAPPZ1WmQZmCAWFuIt3XdUHQoL9++LV7VTYtvI=", + "vim": "sha256-onKJ/dqER14qtN3DMg7U0kU9EE1qvy+d4NyDl27tdUY=", + "wall": "sha256-Fx/k6dM6iCdaKuC56Q2QoxhMcC0LaHacZRfT+EWTHHA=", + "wc": "sha256-XRpXEGIZ/9Ow5IrHP+dbo5dc1hHqKZ1ewqJLM1CX9bg=", + "wget": "sha256-CHZFKvpbmc5AmpkazKk0H0MeYE8wTl7aANjbU9NKDb0=", + "who": "sha256-W+CBIPsR2NBc6xXbom6zyzNCvHKmE+py/iGlX5ewNok=", + "whoami": "sha256-yjAXVvBgVSkLRpNve2AC9srTCSdieNLjh63wFpgxM88=", + "xargs": "sha256-A34zn2hiDh2xMdPY82s1ghm/xzDUEXqxy6IVqOJv9vY=", + "xz": "sha256-84VVLEvkMFVKsNTKX8IZ90XAqebHofJ4bsy3J3f+Xe0=", + "yes": "sha256-J+N2zXEIyM9SF5Xqmpye6hISJi40Xj8343AQUL9jOiI=", + "zip": "sha256-hxobwz7sl7w+NmS45mBoFd0sVSQ3haPeoPW5S7WBUN8=", + "zsh": "sha256-zYH33XZzUvk6v5DiLKe5lKTKx0IsRW7zJWIeQmhM0f4=", + "zstd": "sha256-UQRCbSiHGWmBr2qsbnsCGQjIyhZG2ilfx9Iyxv6KbzQ=" +} diff --git a/e2e/cosmos/BUILD.bazel b/e2e/cosmos/BUILD.bazel new file mode 100644 index 00000000..de50903c --- /dev/null +++ b/e2e/cosmos/BUILD.bazel @@ -0,0 +1,17 @@ +load("@ape//ape/cosmos/lock:defs.bzl", "ape_cosmos_lock") + +# Test that we can have the same lockfile as the base module and it doesn't break anythin +ape_cosmos_lock( + name = "3.3.1", + out = "3.3.1.json", + tags = ["manual"], + version = "3.3.1", +) + +# Add an older version that the base module does not define to test that. +ape_cosmos_lock( + name = "3.1.3", + out = "3.1.3.json", + tags = ["manual"], + version = "3.1.3", +) diff --git a/e2e/entrypoint/BUILD.bazel b/e2e/entrypoint/BUILD.bazel new file mode 100644 index 00000000..c4b6da65 --- /dev/null +++ b/e2e/entrypoint/BUILD.bazel @@ -0,0 +1,13 @@ +load("@ape//ape/cosmos:basenames.bzl", "BASENAMES") +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +# Validate that `export` extension entrypoints are available for each module +build_test( + name = "coverage", + size = "small", + targets = [ + "@{}//:entrypoint".format(basename) + for basename in BASENAMES + if not (basename.startswith("assimilate") or basename.startswith("ape")) + ], +) diff --git a/e2e/symlink/BUILD.bazel b/e2e/symlink/BUILD.bazel index b71ec428..712f8fac 100644 --- a/e2e/symlink/BUILD.bazel +++ b/e2e/symlink/BUILD.bazel @@ -2,4 +2,5 @@ load("//symlink/test:defs.bzl", "e2e_symlink_test") e2e_symlink_test( name = "test", + size = "small", ) diff --git a/upload/BUILD.bazel b/upload/BUILD.bazel deleted file mode 100644 index c067a894..00000000 --- a/upload/BUILD.bazel +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_curl//curl/upload/file:defs.bzl", "curl_upload_file") -load("//:binaries.bzl", "BINARIES") - -[ - curl_upload_file( - name = ape, - src = "@{}//:ape".format(ape), - dst = ape, - tags = ["manual"], - url = "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/4.0.2", - ) - for ape in ( - "ape-arm64.elf", - "ape-x86_64.elf", - "ape-x86_64.macho", - ) -] - -[ - curl_upload_file( - name = binary, - src = "@cosmos-{}//:{}".format(binary, binary), - dst = binary, - tags = ["manual"], - url = "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/4.0.2", - ) - for binary in BINARIES -] - -curl_upload_file( - name = "ape-m1.c", - src = "@ape-m1.c", - dst = "ape-m1.c", - tags = ["manual"], - url = "https://gitlab.arm.com/api/v4/projects/bazel%2Fape/packages/generic/cosmos.zip/3.9.2", -) -- GitLab From 098c0d0fe1ca0f7d50f83b288055d418a7a81356 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Mon, 3 Feb 2025 16:14:56 +0000 Subject: [PATCH 06/16] ci: enforce target to match remote executor Technical debt tracked in #9. --- e2e/.bazelrc.ci | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/e2e/.bazelrc.ci b/e2e/.bazelrc.ci index ea22151e..dac07194 100644 --- a/e2e/.bazelrc.ci +++ b/e2e/.bazelrc.ci @@ -62,3 +62,8 @@ build:remote --nolegacy_important_outputs # Describe remote executors build:remote --extra_execution_platforms=@toolchain_utils//toolchain/platform:amd64-linux-gnu + +# FIXME: remove this when Bazel correctly maps test platform to executors +# https://github.com/bazelbuild/bazel/issues/25160 +common:remote --use_target_platform_for_tests +common:remote --platforms=@toolchain_utils//toolchain/platform:amd64-linux-gnu -- GitLab From 507839c1cc766bbdbaa56cb90a38dfc672bc5444 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 31 Jan 2025 12:32:12 +0000 Subject: [PATCH 07/16] test(pigz): add a roundtrip codec test --- e2e/MODULE.bazel | 18 +- e2e/MODULE.bazel.lock | 307 ++++++++++++++++++++++++++++++++++- e2e/binary/BUILD.bazel | 17 ++ e2e/binary/conftest.py | 34 ++++ e2e/binary/diff.py | 54 ++++++ e2e/binary/pigz/BUILD.bazel | 32 +++- e2e/binary/pigz/fixture.txt | 19 +++ e2e/binary/pigz/roundtrip.py | 26 +++ e2e/binary/relative.py | 18 ++ e2e/binary/runfile.py | 49 ++++++ e2e/binary/tool.py | 16 ++ e2e/pytest/BUILD.bazel | 10 ++ e2e/pytest/requirements.in | 1 + e2e/pytest/requirements.txt | 24 +++ 14 files changed, 617 insertions(+), 8 deletions(-) create mode 100644 e2e/binary/conftest.py create mode 100644 e2e/binary/diff.py create mode 100644 e2e/binary/pigz/fixture.txt create mode 100644 e2e/binary/pigz/roundtrip.py create mode 100644 e2e/binary/relative.py create mode 100644 e2e/binary/runfile.py create mode 100644 e2e/binary/tool.py create mode 100644 e2e/pytest/BUILD.bazel create mode 100644 e2e/pytest/requirements.in create mode 100644 e2e/pytest/requirements.txt diff --git a/e2e/MODULE.bazel b/e2e/MODULE.bazel index d42045ab..596aa35d 100644 --- a/e2e/MODULE.bazel +++ b/e2e/MODULE.bazel @@ -12,13 +12,29 @@ bazel_dep(name = "rules_shell", version = "0.3.0") bazel_dep(name = "rules_python", version = "1.0.0", dev_dependency = True) bazel_dep(name = "hermetic_cc_toolchain", version = "3.1.0", dev_dependency = True) -python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True) +# TODO: one day this may be merged into `rules_python` +bazel_dep(name = "caseyduquettesc_rules_python_pytest", version = "1.1.1", repo_name = "rules_python_pytest") + +# TODO: switch to`@rules_python//python/uv:lock.bzl" when non-experimental +bazel_dep(name = "rules_uv", version = "0.52.0", dev_dependency = True) + +python = use_extension("@rules_python//python/extensions:python.bzl", "python") python.toolchain( configure_coverage_tool = True, # TODO: need hermetic `chmod`/`id`: https://github.com/bazelbuild/rules_python/pull/2024 ignore_root_user_error = True, python_version = "3.13", ) +use_repo(python, py = "python_versions") + +# TODO: use `requirements_by_platform` with `@rules_python//uv:lock.bzl` +pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") +pip.parse( + hub_name = "ape-e2e-pytest", + python_version = "3.13", + requirements_lock = "//pytest:requirements.txt", +) +use_repo(pip, pytest = "ape-e2e-pytest") bazel_dep(name = "toolchain_utils", version = "1.0.1") bazel_dep(name = "ape", version = "0.0.0") diff --git a/e2e/MODULE.bazel.lock b/e2e/MODULE.bazel.lock index 02ca0f38..64572707 100644 --- a/e2e/MODULE.bazel.lock +++ b/e2e/MODULE.bazel.lock @@ -33,8 +33,13 @@ "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", + "https://bcr.bazel.build/modules/buildifier_prebuilt/6.1.2/MODULE.bazel": "2ef4962c8b0b6d8d21928a89190755619254459bc67f870dc0ccb9ba9952d444", + "https://bcr.bazel.build/modules/buildifier_prebuilt/7.3.1/MODULE.bazel": "537faf0ad9f5892910074b8e43b4c91c96f1d5d86b6ed04bdbe40cf68aa48b68", + "https://bcr.bazel.build/modules/buildifier_prebuilt/7.3.1/source.json": "55153a5e6ca9c8a7e266c4b46b951e8a010d25ec6062bc35d5d4f89925796bad", "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/caseyduquettesc_rules_python_pytest/1.1.1/MODULE.bazel": "6e5383ad5f0b4a28829f811683a3dd64a655209b9f6620a0fe68cd6321b7e174", + "https://bcr.bazel.build/modules/caseyduquettesc_rules_python_pytest/1.1.1/source.json": "cfa8011e462d3f3eb42ea1ce6aa7f945b944d0499ffd6747789cd87dc64fe015", "https://bcr.bazel.build/modules/download_utils/1.0.0/MODULE.bazel": "not found", "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", @@ -55,6 +60,8 @@ "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/23.1/MODULE.bazel": "88b393b3eb4101d18129e5db51847cd40a5517a53e81216144a8c32dfeeca52a", + "https://bcr.bazel.build/modules/protobuf/24.4/MODULE.bazel": "7bc7ce5f2abf36b3b7b7c8218d3acdebb9426aeb35c2257c96445756f970eb12", "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", @@ -87,6 +94,7 @@ "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.1.0/MODULE.bazel": "30d9135a2b6561c761bd67bd4990da591e6bdc128790ce3e7afd6a3558b2fb64", "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", @@ -110,19 +118,24 @@ "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_multitool/0.4.0/MODULE.bazel": "15517987d5c00c9e7faab41fbe22ee67a350b6eabcc1e08baded5c6d9025897f", + "https://bcr.bazel.build/modules/rules_multitool/0.4.0/source.json": "d73b450b7c6d9683e400d6cebc463fbc2b870cc5d8e2e75080d6278805aaab08", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.17.3/MODULE.bazel": "f0eb1c105334c80641ea03261e19329fdcf5232e2b134a94f016348190f05499", "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.34.0/MODULE.bazel": "1d623d026e075b78c9fde483a889cda7996f5da4f36dffb24c246ab30f06513a", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", "https://bcr.bazel.build/modules/rules_python/1.0.0/MODULE.bazel": "898a3d999c22caa585eb062b600f88654bf92efb204fa346fb55f6f8edffca43", @@ -130,6 +143,8 @@ "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", "https://bcr.bazel.build/modules/rules_shell/0.3.0/source.json": "c55ed591aa5009401ddf80ded9762ac32c358d2517ee7820be981e2de9756cf3", + "https://bcr.bazel.build/modules/rules_uv/0.52.0/MODULE.bazel": "308797d91c5b1ef93c2e68c0e63da14a836fb34c14093776e5f06d6cde43ffcb", + "https://bcr.bazel.build/modules/rules_uv/0.52.0/source.json": "73adba1797e0686e249bc267412d39ac89c72d028413bd91d5282a7b46a505c9", "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", @@ -139,6 +154,7 @@ "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", "https://bcr.bazel.build/modules/toolchain_utils/1.0.1/MODULE.bazel": "not found", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/upb/0.0.0-20230516-61a97ef/MODULE.bazel": "c0df5e35ad55e264160417fd0875932ee3c9dda63d9fccace35ac62f45e1b6f9", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d", @@ -153,6 +169,145 @@ }, "selectedYankedVersions": {}, "moduleExtensions": { + "@@buildifier_prebuilt+//:defs.bzl%buildifier_prebuilt_deps_extension": { + "general": { + "bzlTransitiveDigest": "qC/0s/MZ8q8Sf6/o/iJNMssZNgXa3CjJ7vEVbpHFQRs=", + "usagesDigest": "eWMDBEn8E8CrwAPXrlrjIap2pseSMhxDyDdrntHBOOE=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "buildifier_darwin_amd64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-darwin-amd64" + ], + "downloaded_file_path": "buildifier", + "executable": true, + "sha256": "375f823103d01620aaec20a0c29c6cbca99f4fd0725ae30b93655c6704f44d71" + } + }, + "buildifier_darwin_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-darwin-arm64" + ], + "downloaded_file_path": "buildifier", + "executable": true, + "sha256": "5a6afc6ac7a09f5455ba0b89bd99d5ae23b4174dc5dc9d6c0ed5ce8caac3f813" + } + }, + "buildifier_linux_amd64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-linux-amd64" + ], + "downloaded_file_path": "buildifier", + "executable": true, + "sha256": "5474cc5128a74e806783d54081f581662c4be8ae65022f557e9281ed5dc88009" + } + }, + "buildifier_linux_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-linux-arm64" + ], + "downloaded_file_path": "buildifier", + "executable": true, + "sha256": "0bf86c4bfffaf4f08eed77bde5b2082e4ae5039a11e2e8b03984c173c34a561c" + } + }, + "buildifier_windows_amd64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-windows-amd64.exe" + ], + "downloaded_file_path": "buildifier.exe", + "executable": true, + "sha256": "370cd576075ad29930a82f5de132f1a1de4084c784a82514bd4da80c85acf4a8" + } + }, + "buildozer_darwin_amd64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildozer-darwin-amd64" + ], + "downloaded_file_path": "buildozer", + "executable": true, + "sha256": "854c9583efc166602276802658cef3f224d60898cfaa60630b33d328db3b0de2" + } + }, + "buildozer_darwin_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildozer-darwin-arm64" + ], + "downloaded_file_path": "buildozer", + "executable": true, + "sha256": "31b1bfe20d7d5444be217af78f94c5c43799cdf847c6ce69794b7bf3319c5364" + } + }, + "buildozer_linux_amd64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildozer-linux-amd64" + ], + "downloaded_file_path": "buildozer", + "executable": true, + "sha256": "3305e287b3fcc68b9a35fd8515ee617452cd4e018f9e6886b6c7cdbcba8710d4" + } + }, + "buildozer_linux_arm64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildozer-linux-arm64" + ], + "downloaded_file_path": "buildozer", + "executable": true, + "sha256": "0b5a2a717ac4fc911e1fec8d92af71dbb4fe95b10e5213da0cc3d56cea64a328" + } + }, + "buildozer_windows_amd64": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildozer-windows-amd64.exe" + ], + "downloaded_file_path": "buildozer.exe", + "executable": true, + "sha256": "58d41ce53257c5594c9bc86d769f580909269f68de114297f46284fbb9023dcf" + } + }, + "buildifier_prebuilt_toolchains": { + "repoRuleId": "@@buildifier_prebuilt+//:defs.bzl%_buildifier_toolchain_setup", + "attributes": { + "assets_json": "[{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"darwin\",\"sha256\":\"375f823103d01620aaec20a0c29c6cbca99f4fd0725ae30b93655c6704f44d71\",\"version\":\"v7.3.1\"},{\"arch\":\"arm64\",\"name\":\"buildifier\",\"platform\":\"darwin\",\"sha256\":\"5a6afc6ac7a09f5455ba0b89bd99d5ae23b4174dc5dc9d6c0ed5ce8caac3f813\",\"version\":\"v7.3.1\"},{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"linux\",\"sha256\":\"5474cc5128a74e806783d54081f581662c4be8ae65022f557e9281ed5dc88009\",\"version\":\"v7.3.1\"},{\"arch\":\"arm64\",\"name\":\"buildifier\",\"platform\":\"linux\",\"sha256\":\"0bf86c4bfffaf4f08eed77bde5b2082e4ae5039a11e2e8b03984c173c34a561c\",\"version\":\"v7.3.1\"},{\"arch\":\"amd64\",\"name\":\"buildifier\",\"platform\":\"windows\",\"sha256\":\"370cd576075ad29930a82f5de132f1a1de4084c784a82514bd4da80c85acf4a8\",\"version\":\"v7.3.1\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"darwin\",\"sha256\":\"854c9583efc166602276802658cef3f224d60898cfaa60630b33d328db3b0de2\",\"version\":\"v7.3.1\"},{\"arch\":\"arm64\",\"name\":\"buildozer\",\"platform\":\"darwin\",\"sha256\":\"31b1bfe20d7d5444be217af78f94c5c43799cdf847c6ce69794b7bf3319c5364\",\"version\":\"v7.3.1\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"linux\",\"sha256\":\"3305e287b3fcc68b9a35fd8515ee617452cd4e018f9e6886b6c7cdbcba8710d4\",\"version\":\"v7.3.1\"},{\"arch\":\"arm64\",\"name\":\"buildozer\",\"platform\":\"linux\",\"sha256\":\"0b5a2a717ac4fc911e1fec8d92af71dbb4fe95b10e5213da0cc3d56cea64a328\",\"version\":\"v7.3.1\"},{\"arch\":\"amd64\",\"name\":\"buildozer\",\"platform\":\"windows\",\"sha256\":\"58d41ce53257c5594c9bc86d769f580909269f68de114297f46284fbb9023dcf\",\"version\":\"v7.3.1\"}]" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "buildifier_prebuilt+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "buildifier_prebuilt+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, "@@hermetic_cc_toolchain+//toolchain:ext.bzl%toolchains": { "general": { "bzlTransitiveDigest": "QE9mmKKNnRnnIzR5esB4//YvnfXT+tjg6NPgrdOQDnM=", @@ -404,13 +559,77 @@ ] } }, + "@@rules_multitool+//multitool:extension.bzl%multitool": { + "general": { + "bzlTransitiveDigest": "AtvPzG/SAawYMKVVHcMoJq4EXkVPTIhS3AeNwENXp9E=", + "usagesDigest": "yfjl4Gm5xzY9Gt+x1QoK+pdAUVhRtvS1PAyuohGZVjE=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "multitool.linux_arm64": { + "repoRuleId": "@@rules_multitool+//multitool/private:multitool.bzl%_env_specific_tools", + "attributes": { + "lockfiles": [ + "@@rules_uv+//uv/private:uv.lock.json" + ], + "os": "linux", + "cpu": "arm64" + } + }, + "multitool.linux_x86_64": { + "repoRuleId": "@@rules_multitool+//multitool/private:multitool.bzl%_env_specific_tools", + "attributes": { + "lockfiles": [ + "@@rules_uv+//uv/private:uv.lock.json" + ], + "os": "linux", + "cpu": "x86_64" + } + }, + "multitool.macos_arm64": { + "repoRuleId": "@@rules_multitool+//multitool/private:multitool.bzl%_env_specific_tools", + "attributes": { + "lockfiles": [ + "@@rules_uv+//uv/private:uv.lock.json" + ], + "os": "macos", + "cpu": "arm64" + } + }, + "multitool.macos_x86_64": { + "repoRuleId": "@@rules_multitool+//multitool/private:multitool.bzl%_env_specific_tools", + "attributes": { + "lockfiles": [ + "@@rules_uv+//uv/private:uv.lock.json" + ], + "os": "macos", + "cpu": "x86_64" + } + }, + "multitool": { + "repoRuleId": "@@rules_multitool+//multitool/private:multitool.bzl%_multitool_hub", + "attributes": { + "lockfiles": [ + "@@rules_uv+//uv/private:uv.lock.json" + ] + } + } + }, + "recordedRepoMappingEntries": [] + } + }, "@@rules_python+//python/extensions:pip.bzl%pip": { "general": { "bzlTransitiveDigest": "8dismvKl3NazfZqc4jBDroiSQpTXFAYc3D1V2mwsv0s=", - "usagesDigest": "/9NP3RV6/DWuNdYAsIU/8UCgCX0TdPUJr0X6O+0lrtk=", + "usagesDigest": "aiLVnYJ7CbrkoopdYvreM0/m9P6EEF4YvXLS2Egt1xs=", "recordedFileInputs": { + "@@//pytest/requirements.txt": "f2aeb687f2c1d69272a36cbe6e215ad75e4e7f8be159269f13ae7d1e51939d96", "@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5", "@@rules_fuzzing+//fuzzing/requirements.txt": "ab04664be026b632a0d2a2446c4f65982b7654f5b6851d2f9d399a19b7242a5b", + "@@rules_python++internal_deps+pypi__packaging//packaging-24.0.dist-info/RECORD": "be1aea790359b4c2c9ea83d153c1a57c407742a35b95ee36d00723509f5ed5dd", + "@@rules_python+//python/private/pypi/requirements_parser/resolve_target_platforms.py": "42bf51980528302373529bcdfddb8014e485182d6bc9d2f7d3bbe1f11d8d923d", + "@@rules_python+//python/private/pypi/whl_installer/platform.py": "b944b908b25a2f97d6d9f491504ad5d2507402d7e37c802ee878783f87f2aa11", "@@rules_python+//tools/publish/requirements_darwin.txt": "2994136eab7e57b083c3de76faf46f70fad130bc8e7360a7fed2b288b69e79dc", "@@rules_python+//tools/publish/requirements_linux.txt": "8175b4c8df50ae2f22d1706961884beeb54e7da27bd2447018314a175981997d", "@@rules_python+//tools/publish/requirements_windows.txt": "7673adc71dc1a81d3661b90924d7a7c0fc998cd508b3cb4174337cef3f2de556" @@ -421,6 +640,71 @@ "RULES_PYTHON_REPO_DEBUG_VERBOSITY": null }, "generatedRepoSpecs": { + "ape-e2e-pytest_313_colorama": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@ape-e2e-pytest//{name}:{target}", + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "python_interpreter_target": "@@rules_python++python+python_3_13_host//:python", + "repo": "ape-e2e-pytest_313", + "requirement": "colorama==0.4.6 ; sys_platform == 'win32' --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" + } + }, + "ape-e2e-pytest_313_iniconfig": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@ape-e2e-pytest//{name}:{target}", + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "python_interpreter_target": "@@rules_python++python+python_3_13_host//:python", + "repo": "ape-e2e-pytest_313", + "requirement": "iniconfig==2.0.0 --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" + } + }, + "ape-e2e-pytest_313_packaging": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@ape-e2e-pytest//{name}:{target}", + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "python_interpreter_target": "@@rules_python++python+python_3_13_host//:python", + "repo": "ape-e2e-pytest_313", + "requirement": "packaging==24.2 --hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 --hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f" + } + }, + "ape-e2e-pytest_313_pluggy": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@ape-e2e-pytest//{name}:{target}", + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "python_interpreter_target": "@@rules_python++python+python_3_13_host//:python", + "repo": "ape-e2e-pytest_313", + "requirement": "pluggy==1.5.0 --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669" + } + }, + "ape-e2e-pytest_313_pytest": { + "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", + "attributes": { + "dep_template": "@ape-e2e-pytest//{name}:{target}", + "extra_pip_args": [ + "--index-url", + "https://pypi.org/simple" + ], + "python_interpreter_target": "@@rules_python++python+python_3_13_host//:python", + "repo": "ape-e2e-pytest_313", + "requirement": "pytest==8.3.4 --hash=sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6 --hash=sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761" + } + }, "pip_deps_310_numpy": { "repoRuleId": "@@rules_python+//python/private/pypi:whl_library.bzl%whl_library", "attributes": { @@ -2909,6 +3193,27 @@ ] } }, + "ape-e2e-pytest": { + "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", + "attributes": { + "repo_name": "ape-e2e-pytest", + "extra_hub_aliases": {}, + "whl_map": { + "colorama": "{\"ape-e2e-pytest_313_colorama\":[{\"version\":\"3.13\"}]}", + "iniconfig": "{\"ape-e2e-pytest_313_iniconfig\":[{\"version\":\"3.13\"}]}", + "packaging": "{\"ape-e2e-pytest_313_packaging\":[{\"version\":\"3.13\"}]}", + "pluggy": "{\"ape-e2e-pytest_313_pluggy\":[{\"version\":\"3.13\"}]}", + "pytest": "{\"ape-e2e-pytest_313_pytest\":[{\"version\":\"3.13\"}]}" + }, + "packages": [ + "iniconfig", + "packaging", + "pluggy", + "pytest" + ], + "groups": {} + } + }, "pip_deps": { "repoRuleId": "@@rules_python+//python/private/pypi:hub_repository.bzl%hub_repository", "attributes": { diff --git a/e2e/binary/BUILD.bazel b/e2e/binary/BUILD.bazel index 5198fc4c..797605c0 100644 --- a/e2e/binary/BUILD.bazel +++ b/e2e/binary/BUILD.bazel @@ -1,5 +1,6 @@ load("@ape//ape/cosmos:basenames.bzl", "BASENAMES") load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python//python:defs.bzl", "py_library") # Validate that there is a test for each binary build_test( @@ -7,3 +8,19 @@ build_test( size = "small", targets = ["//binary/{}".format(basename) for basename in BASENAMES], ) + +py_library( + name = "pytest", + srcs = [ + "conftest.py", + "diff.py", + "relative.py", + "runfile.py", + "tool.py", + ], + visibility = ["//binary:__subpackages__"], + deps = [ + "@pytest//pytest:pkg", + "@rules_python//python/runfiles", + ], +) diff --git a/e2e/binary/conftest.py b/e2e/binary/conftest.py new file mode 100644 index 00000000..4c98c8bc --- /dev/null +++ b/e2e/binary/conftest.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +from pytest import fixture + +from .diff import Diff +from .diff import repr as diff +from .relative import Relative +from .runfile import Runfile, SupportsRlocation, create +from .tool import Tool + + +@fixture +def runfiles() -> SupportsRlocation: + return create() + + +@fixture +def runfile(runfiles: SupportsRlocation) -> Runfile: + return Runfile(runfiles) + + +@fixture +def tool(runfile: Runfile) -> Tool: + return Tool(runfile) + + +@fixture +def relative(runfile: Runfile) -> Relative: + return Relative(runfile) + + +def pytest_assertrepr_compare(op, left, right) -> list[str] | None: + if value := diff(op, left, right): + return value diff --git a/e2e/binary/diff.py b/e2e/binary/diff.py new file mode 100644 index 00000000..1fb21b53 --- /dev/null +++ b/e2e/binary/diff.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +from difflib import unified_diff +from pathlib import Path +from typing import Any + + +class Diff: + def __init__(self, path: Path = Path.cwd()): + self.__path = path + + @property + def path(self) -> Path: + return self.__path + + def __eq__(self, value: Any) -> bool: + if not isinstance(value, Diff): + return False + + with open(self.path, encoding="utf-8") as src, open( + value.path, encoding="utf-8" + ) as dst: + try: + for a, b in zip(src, dst, strict=True): + if a != b: + return False + except ValueError: + return False + return True + + +def relative(path: Path) -> Path: + if Path.cwd() in path.parents: + return path.relative_to(Path.cwd()) + return path + + +def repr(op: str, left: Any, right: Any) -> list[str] | None: + if not isinstance(left, Diff): + return None + + if not isinstance(right, Diff): + return None + + with open(left.path, encoding="utf-8") as src, open( + right.path, encoding="utf-8" + ) as dst: + iterator = unified_diff( + a=src.readlines(), + b=dst.readlines(), + fromfile=str(relative(left.path)), + tofile=str(relative(right.path)), + ) + return ["Comparing Diff instances:"] + [n.rstrip() for n in iterator] diff --git a/e2e/binary/pigz/BUILD.bazel b/e2e/binary/pigz/BUILD.bazel index 2d37096a..f446f6f0 100644 --- a/e2e/binary/pigz/BUILD.bazel +++ b/e2e/binary/pigz/BUILD.bazel @@ -1,11 +1,31 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `pigz` +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:pigz", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "pigz", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:pigz"], + src = "@ape//ape:gzip", + args = ["--version"], +) + +test_suite( + name = "pigz", + tests = [ + ":roundtrip", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/pigz/fixture.txt b/e2e/binary/pigz/fixture.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/pigz/fixture.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. diff --git a/e2e/binary/pigz/roundtrip.py b/e2e/binary/pigz/roundtrip.py new file mode 100644 index 00000000..af06be6a --- /dev/null +++ b/e2e/binary/pigz/roundtrip.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from pathlib import Path +from shutil import copyfileobj +from subprocess import PIPE, Popen + +from binary.diff import Diff +from binary.relative import Relative +from binary.tool import Tool + + +def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: + codec = tool("pigz") + fixture = relative("fixture.txt") + output = tmp_path / "output.txt" + + # Do roundtrip compress/decompress + with open(fixture) as src, open(output, "w+b") as dst: + compress = Popen((codec, "-c"), stdin=src, stdout=PIPE) + decompress = Popen((codec, "-dc"), stdin=compress.stdout, stdout=PIPE) + copyfileobj(decompress.stdout, dst) + assert 0 == decompress.wait(timeout=30) + dst.flush() + + # Compare the files + assert Diff(fixture) == Diff(output) diff --git a/e2e/binary/relative.py b/e2e/binary/relative.py new file mode 100644 index 00000000..ae5ff890 --- /dev/null +++ b/e2e/binary/relative.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from inspect import getmodule, stack +from pathlib import Path, PurePath + +from .runfile import Runfile + + +class Relative: + def __init__(self, runfile: Runfile): + self.__runfile = runfile + + def __call__(self, pure: PurePath, /) -> Path: + caller = stack()[1] + module = getmodule(caller[0]) + name = module.__name__ + path = PurePath(*name.split(".")[:-1]) + return self.__runfile(f"_main/{path / pure}") diff --git a/e2e/binary/runfile.py b/e2e/binary/runfile.py new file mode 100644 index 00000000..1f6033f0 --- /dev/null +++ b/e2e/binary/runfile.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +from pathlib import Path, PurePath +from typing import Protocol, runtime_checkable + +from python.runfiles import Runfiles + + +@runtime_checkable +class SupportsRlocation(Protocol): + def Rlocation(self, path: str) -> str | None: ... + + +class RunfilesError(RuntimeError): + pass + + +def create() -> SupportsRlocation: + created = Runfiles.Create() + if not isinstance(created, SupportsRlocation): + raise RunfilesError("failed to create runfiles object") + return created + + +class RunfileNotFoundError(FileNotFoundError): + pass + + +class Runfile: + def __init__(self, runfiles: SupportsRlocation): + self.__runfiles = runfiles + + def __call__(self, value: PurePath | str) -> Path: + path = Path(str(value)) + if path.exists(): + return path + + resolved = self.__runfiles.Rlocation(str(value)) + if resolved is None: + raise RunfileNotFoundError(value) + + path = Path(resolved) + if not path.exists(): + raise RunfileNotFoundError(value) + + try: + return path.relative_to(Path.cwd()) + except ValueError: + return path diff --git a/e2e/binary/tool.py b/e2e/binary/tool.py new file mode 100644 index 00000000..e9af2b7c --- /dev/null +++ b/e2e/binary/tool.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +from pathlib import Path +from sys import platform + +from .runfile import Runfile + + +class Tool: + def __init__(self, runfile: Runfile): + self.__runfile = runfile + + def __call__(self, name: str) -> Path: + if platform == "win32": + return self.__runfile(f"ape/ape/assimilate/{name}.ape/{name}.exe") + return self.__runfile(f"ape/ape/assimilate/{name}.ape/{name}") diff --git a/e2e/pytest/BUILD.bazel b/e2e/pytest/BUILD.bazel new file mode 100644 index 00000000..934b1472 --- /dev/null +++ b/e2e/pytest/BUILD.bazel @@ -0,0 +1,10 @@ +load("@rules_uv//uv:pip.bzl", "pip_compile") + +# TODO: switch to `@rules_python//python/uv:lock.bzl` when released +pip_compile( + name = "lock", + requirements_in = ":requirements.in", + requirements_txt = ":requirements.txt", + tags = ["manual"], + universal = True, +) diff --git a/e2e/pytest/requirements.in b/e2e/pytest/requirements.in new file mode 100644 index 00000000..d197ada2 --- /dev/null +++ b/e2e/pytest/requirements.in @@ -0,0 +1 @@ +pytest==8.3.4 diff --git a/e2e/pytest/requirements.txt b/e2e/pytest/requirements.txt new file mode 100644 index 00000000..ab5b5b49 --- /dev/null +++ b/e2e/pytest/requirements.txt @@ -0,0 +1,24 @@ +# This file was autogenerated by uv via the following command: +# bazel run @@//pytest:lock +--index-url https://pypi.org/simple + +colorama==0.4.6 ; sys_platform == 'win32' \ + --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ + --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 + # via pytest +iniconfig==2.0.0 \ + --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ + --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 + # via pytest +packaging==24.2 \ + --hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \ + --hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f + # via pytest +pluggy==1.5.0 \ + --hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \ + --hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 + # via pytest +pytest==8.3.4 \ + --hash=sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6 \ + --hash=sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761 + # via -r pytest/requirements.in -- GitLab From 75bf8ba722bc837c55887a35c0776c85863fb764 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 31 Jan 2025 12:37:10 +0000 Subject: [PATCH 08/16] test(zstd): add roundtrip codec test --- e2e/binary/zstd/BUILD.bazel | 32 ++++++++++++++++++++++++++------ e2e/binary/zstd/fixture.txt | 19 +++++++++++++++++++ e2e/binary/zstd/roundtrip.py | 26 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/zstd/fixture.txt create mode 100644 e2e/binary/zstd/roundtrip.py diff --git a/e2e/binary/zstd/BUILD.bazel b/e2e/binary/zstd/BUILD.bazel index 2e070bef..43a70f52 100644 --- a/e2e/binary/zstd/BUILD.bazel +++ b/e2e/binary/zstd/BUILD.bazel @@ -1,11 +1,31 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `zstd` +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:zstd", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "zstd", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:zstd"], + src = "@ape//ape:gzip", + args = ["--version"], +) + +test_suite( + name = "zstd", + tests = [ + ":roundtrip", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/zstd/fixture.txt b/e2e/binary/zstd/fixture.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/zstd/fixture.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. diff --git a/e2e/binary/zstd/roundtrip.py b/e2e/binary/zstd/roundtrip.py new file mode 100644 index 00000000..71d2b3e8 --- /dev/null +++ b/e2e/binary/zstd/roundtrip.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from pathlib import Path +from shutil import copyfileobj +from subprocess import PIPE, Popen + +from binary.diff import Diff +from binary.relative import Relative +from binary.tool import Tool + + +def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: + codec = tool("zstd") + fixture = relative("fixture.txt") + output = tmp_path / "output.txt" + + # Do roundtrip compress/decompress + with open(fixture) as src, open(output, "w+b") as dst: + compress = Popen((codec, "-c"), stdin=src, stdout=PIPE) + decompress = Popen((codec, "-dc"), stdin=compress.stdout, stdout=PIPE) + copyfileobj(decompress.stdout, dst) + assert 0 == decompress.wait(timeout=30) + dst.flush() + + # Compare the files + assert Diff(fixture) == Diff(output) -- GitLab From 1e453be6836f2a5f9797f478b448a44f01b83f52 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 31 Jan 2025 12:38:07 +0000 Subject: [PATCH 09/16] test(brotli): add roundtrip codec test --- e2e/binary/brotli/BUILD.bazel | 32 ++++++++++++++++++++++++++------ e2e/binary/brotli/fixture.txt | 19 +++++++++++++++++++ e2e/binary/brotli/roundtrip.py | 26 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/brotli/fixture.txt create mode 100644 e2e/binary/brotli/roundtrip.py diff --git a/e2e/binary/brotli/BUILD.bazel b/e2e/binary/brotli/BUILD.bazel index 0300e9d1..ed227b4e 100644 --- a/e2e/binary/brotli/BUILD.bazel +++ b/e2e/binary/brotli/BUILD.bazel @@ -1,11 +1,31 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `brotli` +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:brotli", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "brotli", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:brotli"], + src = "@ape//ape:gzip", + args = ["--version"], +) + +test_suite( + name = "brotli", + tests = [ + ":roundtrip", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/brotli/fixture.txt b/e2e/binary/brotli/fixture.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/brotli/fixture.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. diff --git a/e2e/binary/brotli/roundtrip.py b/e2e/binary/brotli/roundtrip.py new file mode 100644 index 00000000..af04d8fb --- /dev/null +++ b/e2e/binary/brotli/roundtrip.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from pathlib import Path +from shutil import copyfileobj +from subprocess import PIPE, Popen + +from binary.diff import Diff +from binary.relative import Relative +from binary.tool import Tool + + +def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: + codec = tool("brotli") + fixture = relative("fixture.txt") + output = tmp_path / "output.txt" + + # Do roundtrip compress/decompress + with open(fixture) as src, open(output, "w+b") as dst: + compress = Popen((codec, "-c"), stdin=src, stdout=PIPE) + decompress = Popen((codec, "-dc"), stdin=compress.stdout, stdout=PIPE) + copyfileobj(decompress.stdout, dst) + assert 0 == decompress.wait(timeout=30) + dst.flush() + + # Compare the files + assert Diff(fixture) == Diff(output) -- GitLab From d8890505c04c3a4ff5c52be18b42145ca6034751 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 31 Jan 2025 12:38:39 +0000 Subject: [PATCH 10/16] test(gzip): add roundtrip codec test --- e2e/binary/gzip/BUILD.bazel | 32 ++++++++++++++++++++++++++------ e2e/binary/gzip/fixture.txt | 19 +++++++++++++++++++ e2e/binary/gzip/roundtrip.py | 26 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/gzip/fixture.txt create mode 100644 e2e/binary/gzip/roundtrip.py diff --git a/e2e/binary/gzip/BUILD.bazel b/e2e/binary/gzip/BUILD.bazel index 69ba22f3..f5b8e528 100644 --- a/e2e/binary/gzip/BUILD.bazel +++ b/e2e/binary/gzip/BUILD.bazel @@ -1,11 +1,31 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `gzip` +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:gzip", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "gzip", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:gzip"], + src = "@ape//ape:gzip", + args = ["--version"], +) + +test_suite( + name = "gzip", + tests = [ + ":roundtrip", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/gzip/fixture.txt b/e2e/binary/gzip/fixture.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/gzip/fixture.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. diff --git a/e2e/binary/gzip/roundtrip.py b/e2e/binary/gzip/roundtrip.py new file mode 100644 index 00000000..68a3d112 --- /dev/null +++ b/e2e/binary/gzip/roundtrip.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from pathlib import Path +from shutil import copyfileobj +from subprocess import PIPE, Popen + +from binary.diff import Diff +from binary.relative import Relative +from binary.tool import Tool + + +def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: + codec = tool("gzip") + fixture = relative("fixture.txt") + output = tmp_path / "output.txt" + + # Do roundtrip compress/decompress + with open(fixture) as src, open(output, "w+b") as dst: + compress = Popen((codec, "-c"), stdin=src, stdout=PIPE) + decompress = Popen((codec, "-dc"), stdin=compress.stdout, stdout=PIPE) + copyfileobj(decompress.stdout, dst) + assert 0 == decompress.wait(timeout=30) + dst.flush() + + # Compare the files + assert Diff(fixture) == Diff(output) -- GitLab From e88b52058c52c5446960214333d9beab47c002e0 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 31 Jan 2025 12:39:10 +0000 Subject: [PATCH 11/16] test(xz): add roundtrip codec test --- e2e/binary/xz/BUILD.bazel | 32 ++++++++++++++++++++++++++------ e2e/binary/xz/fixture.txt | 19 +++++++++++++++++++ e2e/binary/xz/roundtrip.py | 26 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/xz/fixture.txt create mode 100644 e2e/binary/xz/roundtrip.py diff --git a/e2e/binary/xz/BUILD.bazel b/e2e/binary/xz/BUILD.bazel index e22d0c34..ef98636c 100644 --- a/e2e/binary/xz/BUILD.bazel +++ b/e2e/binary/xz/BUILD.bazel @@ -1,11 +1,31 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `xz` +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:xz", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "xz", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:xz"], + src = "@ape//ape:gzip", + args = ["--version"], +) + +test_suite( + name = "xz", + tests = [ + ":roundtrip", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/xz/fixture.txt b/e2e/binary/xz/fixture.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/xz/fixture.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. diff --git a/e2e/binary/xz/roundtrip.py b/e2e/binary/xz/roundtrip.py new file mode 100644 index 00000000..dc768863 --- /dev/null +++ b/e2e/binary/xz/roundtrip.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from pathlib import Path +from shutil import copyfileobj +from subprocess import PIPE, Popen + +from binary.diff import Diff +from binary.relative import Relative +from binary.tool import Tool + + +def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: + codec = tool("xz") + fixture = relative("fixture.txt") + output = tmp_path / "output.txt" + + # Do roundtrip compress/decompress + with open(fixture) as src, open(output, "w+b") as dst: + compress = Popen((codec, "-c"), stdin=src, stdout=PIPE) + decompress = Popen((codec, "-dc"), stdin=compress.stdout, stdout=PIPE) + copyfileobj(decompress.stdout, dst) + assert 0 == decompress.wait(timeout=30) + dst.flush() + + # Compare the files + assert Diff(fixture) == Diff(output) -- GitLab From cb6cea65cd1bac0c72113c276cca7ef74d466b31 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 31 Jan 2025 12:40:24 +0000 Subject: [PATCH 12/16] test(bzip2): add roundtrip codec test --- e2e/binary/bzip2/BUILD.bazel | 32 ++++++++++++++++++++++++++------ e2e/binary/bzip2/fixture.txt | 19 +++++++++++++++++++ e2e/binary/bzip2/roundtrip.py | 26 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/bzip2/fixture.txt create mode 100644 e2e/binary/bzip2/roundtrip.py diff --git a/e2e/binary/bzip2/BUILD.bazel b/e2e/binary/bzip2/BUILD.bazel index 633cdb18..ebcb3e85 100644 --- a/e2e/binary/bzip2/BUILD.bazel +++ b/e2e/binary/bzip2/BUILD.bazel @@ -1,11 +1,31 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `bzip2` +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:bzip2", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "bzip2", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:bzip2"], + src = "@ape//ape:gzip", + args = ["--version"], +) + +test_suite( + name = "bzip2", + tests = [ + ":roundtrip", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/bzip2/fixture.txt b/e2e/binary/bzip2/fixture.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/bzip2/fixture.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. diff --git a/e2e/binary/bzip2/roundtrip.py b/e2e/binary/bzip2/roundtrip.py new file mode 100644 index 00000000..f2feaa65 --- /dev/null +++ b/e2e/binary/bzip2/roundtrip.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from pathlib import Path +from shutil import copyfileobj +from subprocess import PIPE, Popen + +from binary.diff import Diff +from binary.relative import Relative +from binary.tool import Tool + + +def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: + codec = tool("bzip2") + fixture = relative("fixture.txt") + output = tmp_path / "output.txt" + + # Do roundtrip compress/decompress + with open(fixture) as src, open(output, "w+b") as dst: + compress = Popen((codec, "-c"), stdin=src, stdout=PIPE) + decompress = Popen((codec, "-dc"), stdin=compress.stdout, stdout=PIPE) + copyfileobj(decompress.stdout, dst) + assert 0 == decompress.wait(timeout=30) + dst.flush() + + # Compare the files + assert Diff(fixture) == Diff(output) -- GitLab From bc15c6a917abd87fb7454151d9a2e06b429a07e4 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Fri, 31 Jan 2025 12:52:56 +0000 Subject: [PATCH 13/16] test(awk): add `print` test --- e2e/binary/awk/BUILD.bazel | 31 +++++++++++++++++++++++++------ e2e/binary/awk/print.py | 14 ++++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/awk/print.py diff --git a/e2e/binary/awk/BUILD.bazel b/e2e/binary/awk/BUILD.bazel index 4e54a23a..148c38e1 100644 --- a/e2e/binary/awk/BUILD.bazel +++ b/e2e/binary/awk/BUILD.bazel @@ -1,11 +1,30 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `awk` +py_pytest_test( + name = "print", + size = "small", + srcs = ["print.py"], + data = [ + "@ape//ape:awk", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "awk", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:awk"], + src = "@ape//ape:awk", + args = ["--version"], +) + +test_suite( + name = "awk", + tests = [ + ":print", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/awk/print.py b/e2e/binary/awk/print.py new file mode 100644 index 00000000..3bed43bc --- /dev/null +++ b/e2e/binary/awk/print.py @@ -0,0 +1,14 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary.tool import Tool + + +def test_print(tool: Tool) -> None: + binary = tool("awk") + + cmd = (binary, 'BEGIN{print "Hello, world!"}') + result = run(cmd, check=True, timeout=30, capture_output=True, text=True) + assert "Hello, world!\n" == result.stdout -- GitLab From 7a03baa2eee93153d23151687b996c3786894e7d Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Mon, 3 Feb 2025 12:23:17 +0000 Subject: [PATCH 14/16] test: disable `pytest` tests on Windows When `rules_python` performs a hermetic bootstrap, it creates a symlink from the unzipped Python runfiles into the location of the Python interpreter[1]. However, on Windows, symlinks are only allowed if the user is in developer mode _or_ has a security allowance for creating symlinks. The fallback would be to create a hardlink. Neither of these solutions work because when the symlink/hardlink is executed Windows cannot find the required DLLs to launch Python. I attempted a hack where we hardlink in the DDLs and/or create junctions for the directories. Nothing works well as eventually the runfiles for the target are not found. This may be a missing piece of coverage on the upstream ruleset. There is an effort to look into a native launcher[2] that may or may not fix things up. For now, mark the `pytest` Python library incompatible with Windows. Tracking the tech-debt in #8 [1]: https://github.com/bazelbuild/rules_python/blob/1.1.0/python/private/zip_main_template.py#L289 [2]: https://github.com/bazelbuild/rules_python/issues/2500 --- e2e/binary/BUILD.bazel | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/e2e/binary/BUILD.bazel b/e2e/binary/BUILD.bazel index 797605c0..12a2bf99 100644 --- a/e2e/binary/BUILD.bazel +++ b/e2e/binary/BUILD.bazel @@ -18,6 +18,11 @@ py_library( "runfile.py", "tool.py", ], + # FIXME: when `rules_python` hermetic launcher works on Windows + target_compatible_with = select({ + "@platforms//os:windows": ["@platforms//:incompatible"], + "//conditions:default": [], + }), visibility = ["//binary:__subpackages__"], deps = [ "@pytest//pytest:pkg", -- GitLab From 58bf26bfd59a54ff1406a05f9aba3b153f1030e3 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Mon, 3 Feb 2025 17:14:45 +0000 Subject: [PATCH 15/16] test(b2sum): add digest and version test --- e2e/binary/b2sum/BUILD.bazel | 33 +++++++++++++++++++++++++++------ e2e/binary/b2sum/digest.py | 20 ++++++++++++++++++++ e2e/binary/b2sum/expected.txt | 1 + e2e/binary/b2sum/fixture.txt | 19 +++++++++++++++++++ 4 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/b2sum/digest.py create mode 100644 e2e/binary/b2sum/expected.txt create mode 100644 e2e/binary/b2sum/fixture.txt diff --git a/e2e/binary/b2sum/BUILD.bazel b/e2e/binary/b2sum/BUILD.bazel index a80e6b90..cdec46e7 100644 --- a/e2e/binary/b2sum/BUILD.bazel +++ b/e2e/binary/b2sum/BUILD.bazel @@ -1,11 +1,32 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `b2sum` +py_pytest_test( + name = "digest", + size = "small", + srcs = ["digest.py"], + data = [ + "expected.txt", + "fixture.txt", + "@ape//ape:b2sum", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "b2sum", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:b2sum"], + src = "@ape//ape:b2sum", + args = ["--version"], +) + +test_suite( + name = "b2sum", + tests = [ + ":digest", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/b2sum/digest.py b/e2e/binary/b2sum/digest.py new file mode 100644 index 00000000..987f41f8 --- /dev/null +++ b/e2e/binary/b2sum/digest.py @@ -0,0 +1,20 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary.diff import Diff +from binary.relative import Relative +from binary.tool import Tool + + +def test_digest(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("b2sum") + fixture = relative("fixture.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, fixture) + with open(output, "w") as stream: + run(cmd, check=True, timeout=30, stdout=stream) + assert Diff(expected) == Diff(output) diff --git a/e2e/binary/b2sum/expected.txt b/e2e/binary/b2sum/expected.txt new file mode 100644 index 00000000..efcd01f7 --- /dev/null +++ b/e2e/binary/b2sum/expected.txt @@ -0,0 +1 @@ +3d9c2b3f6f620b3e1ae5144c174393a7443b2456e62c1a90547d6ce3aa58e9cad473db1ac265a2a02f9231288218466007319ec0178c69bb81290ba1a0f1fafa binary/b2sum/fixture.txt diff --git a/e2e/binary/b2sum/fixture.txt b/e2e/binary/b2sum/fixture.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/b2sum/fixture.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. -- GitLab From 417f9f4566349792043139c2a00786bd20f922e2 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Tue, 4 Feb 2025 16:55:05 +0000 Subject: [PATCH 16/16] docs(readme): correct extension variable name in example --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d5d0cd78..cd343a02 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Use a binary in a repository rule: ```py cosmos = use_extension("@ape//ape/cosmos:defs.bzl", "ape_cosmos") -use_repo(export, "zstd") +use_repo(cosmos, "zstd") example = use_repo_rule(":example.bzl", "example") example( -- GitLab