diff --git a/.bazelrc b/.bazelrc index a4cc6a523dabaa313f58f9cc13845acd457c1b8c..78a0c5f3f8a0df33f2363ce00b2c91e56a5e2cd9 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 c9cacb6fce58d1dd416e6128e0c897b31361490a..73c80dbad14b6f22ccc6d71cb84f940243696758 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") @@ -18,13 +17,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 -] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c6120e46a704ce1e4b8ba6acf9c197486715376b..02f3cd5791637612b8557a40f2f4001e51cc4cef 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 31ff78791ee4e7126068edb4d3b360a74942c481..0000000000000000000000000000000000000000 --- 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 8347535cdafad731e5ce9e264a2e8f54b6d8f944..6e899cb66f8aab6ca0bc9e1bfbb615976b90d1c1 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 2f6bb9a3f958bf8fc0c0855cd35c2054175a6be1..47ef20620818fe613dd371e26b534f3060523b3e 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=", @@ -163,6 +215,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 +417,2753 @@ ] ] } + }, + "@@rules_python+//python/extensions:pip.bzl%pip": { + "general": { + "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" + }, + "recordedDirentsInputs": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "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": { + "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" + ] + } + }, + "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": "{\"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", + "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": {} + } + } + }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, + "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_13_host", + "rules_python++python+python_3_13_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/README.md b/README.md index 32e6b01fc9f99f3a9fcb29600a9419dbc52b773c..cd343a02e8e106aac1a6fe3ed866500ca6d207ef 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(cosmos, "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 296cdb0b4a4def5c0344a881c823f0545b486706..c006c6535012e3134e17c3708a6dcd2eaf1ae907 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 c74251cc7208f11ad642d7f704f8645362e18e98..c0372ac64ac262b17f21f394f861fd9e52b367f9 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 b5e8916bfcb38c912d139f3c3d6ea1ff233b5d46..3dd14a4713503e071123cc01d8e945b802895b8a 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], @@ -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.") diff --git a/ape/binary/BUILD.bazel b/ape/binary/BUILD.bazel deleted file mode 100644 index 62e9ea8abc0d7a127d6bb19c3202cec2ade114cf..0000000000000000000000000000000000000000 --- 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 b537fd3718305d95021b38342e1fabb876b9c8a2..0000000000000000000000000000000000000000 --- 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 fff6e5989b2e389867edf341180a6842b16e030d..0000000000000000000000000000000000000000 --- 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 ea16e1a7bc6a6cf77508ada7a445d9b327213148..0000000000000000000000000000000000000000 --- 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 8b8349a5208c403153f91be9520154f5ab4d6f74..0000000000000000000000000000000000000000 --- 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 6c33cfdc495a0b8d53e43a0a0167de1da90f8290..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..818bf789c7be6cdb4ac5ecc3ee025f749f1e1894 --- /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 0000000000000000000000000000000000000000..8deabb55ee5625f6098cacd90854cec9632d3dc9 --- /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 0000000000000000000000000000000000000000..0a82ba8249fd27278362169384fc9f1133bf221d --- /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 0000000000000000000000000000000000000000..67e98ae966bdec9bc720762c5253637c08365268 --- /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 0000000000000000000000000000000000000000..ea613aab1350e10485fb9cfacadef51f680b3023 --- /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 0000000000000000000000000000000000000000..33f6dab2941e53a375d10f408d0cce876c8b6cce --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ape/cosmos/aliases/BUILD.tmpl.bazel b/ape/cosmos/aliases/BUILD.tmpl.bazel new file mode 100644 index 0000000000000000000000000000000000000000..c128d147d61f21cb6a8bd4eb2f6995a26e142037 --- /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 0000000000000000000000000000000000000000..649963027b7e7c334d623b3446d6d3831311db96 --- /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 0000000000000000000000000000000000000000..0186412d335123a27158aa5f3e9238bbb69a2804 --- /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 0000000000000000000000000000000000000000..637d827b19f94869848f957c39e49c54470ee83f --- /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 0000000000000000000000000000000000000000..9c5ed2c249ce8f48f33eb489daeac4b9eea65623 --- /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 0000000000000000000000000000000000000000..be42bcf32b7f26a5c9118e90082cb8e3ad2965a8 --- /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 0000000000000000000000000000000000000000..049cc315b5c89f110bc67a0b952dcae1947b7806 --- /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 0000000000000000000000000000000000000000..cdb78f552877d919158e59cc6c970d2d428f10c6 --- /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 0000000000000000000000000000000000000000..04aeee2b280d6862faba9718c93b8f12518779c0 --- /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 0000000000000000000000000000000000000000..781982f3d150848188f77b62cc0295ee7d3506ef --- /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 0000000000000000000000000000000000000000..842f0edb46dc22690379c412c47a9f7f5a21105c --- /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 0000000000000000000000000000000000000000..ab60e353e53a541f0603cc7d29b8045719380985 --- /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 0000000000000000000000000000000000000000..92fbdb972bf38c290de250a3b8dbf4843d99d606 --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ape/cosmos/metadata/repository.bzl b/ape/cosmos/metadata/repository.bzl new file mode 100644 index 0000000000000000000000000000000000000000..48b8b5c9455d31b7434a8e05ceb7970ce3abdfe0 --- /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 0000000000000000000000000000000000000000..d527eadd607422f4826edc5e82c38cdec10ec9b2 --- /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 0000000000000000000000000000000000000000..2d640225650e278ad5da4b344ec21f705cf9ce43 --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ape/cosmos/symlink/repository.bzl b/ape/cosmos/symlink/repository.bzl new file mode 100644 index 0000000000000000000000000000000000000000..61861da66c6b607c38385afb6813226a3659eca9 --- /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 0000000000000000000000000000000000000000..3bb26bc6d2cfc4e582498c902fa742edbe18e56f --- /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 0000000000000000000000000000000000000000..fea2958cd29fce0c704db4015b14274638d5380d --- /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 0000000000000000000000000000000000000000..0545ac15338cd6ac1e335b34c3939626f8f3aca2 --- /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 0000000000000000000000000000000000000000..2d9757720038414337b8fdc354e957790981bba3 --- /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 0000000000000000000000000000000000000000..1f9d3f9e210bc72ea0af1f21c97f2059fe3aeb4d --- /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 0000000000000000000000000000000000000000..807aa9d467e0465e7763f90d143d07cd9c296b67 --- /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 0000000000000000000000000000000000000000..96da0a9fd112899d9b6601be32d40b7da4f463bf --- /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/BUILD.tmpl.bazel b/ape/entrypoint/BUILD.tmpl.bazel index b65b0ad510e406462e4a3c6582dfa58e87625d5e..ed83d9f17f86a0f470b48f16730d206f87556ddf 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 4696b855574d3727c3bdb547ece265f9a7ff74fd..84f3097855e4358208da18c17d64683f1cbc5944 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,14 @@ 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), }) entrypoint = repository_rule( diff --git a/ape/pe/repository.bzl b/ape/pe/repository.bzl index 0be08280e640aa3118ce9667bd5f6209a02d0e1b..05795ca0daf22bc364908912df4df4b877d1ed89 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 0000000000000000000000000000000000000000..783656b321e7fbc9775ff40b1d6d8132133a2ad0 --- /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 dd4f0656d3d088f5fd625b056fbc7f44f0c8dc67..0000000000000000000000000000000000000000 --- 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 2b250e0d11514f7beddf3dad616c562dd631e714..0000000000000000000000000000000000000000 --- 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 bc1c4fb9d214a51d4b9f92b4520c8d8a89729e22..0000000000000000000000000000000000000000 --- 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 32fb7cfaa66ea7e3cc952f85279d973dc17f668c..0000000000000000000000000000000000000000 --- 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 7b6f836a7f01e7df8e210a64bcbfffa8227a073e..33c6733e7b3a820fa0936fb3dc587170a709e48c 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), @@ -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"], ) diff --git a/ape/toolchain/info/BUILD.bazel b/ape/toolchain/info/BUILD.bazel index 1f68880d736e69f4349e7b4eceec58789d9898a5..9baf616fe0eee019bde1d30e4e51f2c7555b8fc4 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 67b221fe7417f7db897e2c86b86f285c5c5a4a92..0000000000000000000000000000000000000000 --- 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 a4cc6a523dabaa313f58f9cc13845acd457c1b8c..78a0c5f3f8a0df33f2363ce00b2c91e56a5e2cd9 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/.bazelrc.ci b/e2e/.bazelrc.ci index ea22151ecc9fe6d2ad2b134ca9a08487ab920f17..dac071944d008f33f3a3fce8c019fac8842fce44 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 diff --git a/e2e/BUILD.bazel b/e2e/BUILD.bazel index e11e06f7bded080120bda9a5864d7229b556302f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 d0e549a6137edef091032427501552cb91a064f1..596aa35d80fd4b4fde0d18cb208da381ea3828ab 100644 --- a/e2e/MODULE.bazel +++ b/e2e/MODULE.bazel @@ -5,7 +5,36 @@ 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) + +# 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") @@ -14,9 +43,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 +56,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 3dd5e1b20ae11764f1fd382ff9e97354b05c3aae..645727076702a8cd3e39908857964a8f8ee309f0 100644 --- a/e2e/MODULE.bazel.lock +++ b/e2e/MODULE.bazel.lock @@ -33,28 +33,39 @@ "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", "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", "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", + "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", @@ -83,11 +94,14 @@ "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", "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", @@ -104,32 +118,43 @@ "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/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/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", "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/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", @@ -144,20 +169,308 @@ }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@platforms//host:extension.bzl%host_platform": { + "@@buildifier_prebuilt+//:defs.bzl%buildifier_prebuilt_deps_extension": { "general": { - "bzlTransitiveDigest": "xelQcPZH8+tmuOHVjL9vDxMnnQNMlwj0SlvgoqBkm4U=", - "usagesDigest": "SeQiIN/f8/Qt9vYQk7qcXp4I4wJeEC0RnQDiaaJ4tb8=", + "bzlTransitiveDigest": "qC/0s/MZ8q8Sf6/o/iJNMssZNgXa3CjJ7vEVbpHFQRs=", + "usagesDigest": "eWMDBEn8E8CrwAPXrlrjIap2pseSMhxDyDdrntHBOOE=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { - "host_platform": { - "repoRuleId": "@@platforms//host:extension.bzl%host_platform_repo", + "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=", + "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+" + ] + ] + } + }, + "@@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": [] + "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": { @@ -245,6 +558,2903 @@ ] ] } + }, + "@@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": "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" + }, + "recordedDirentsInputs": {}, + "envVariables": { + "RULES_PYTHON_REPO_DEBUG": null, + "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": { + "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": { + "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" + ] + } + }, + "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": { + "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": "{\"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", + "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": {} + } + } + }, + "moduleExtensionMetadata": { + "useAllRepos": "NO", + "reproducible": false + }, + "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_13_host", + "rules_python++python+python_3_13_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/e2e/binary/BUILD.bazel b/e2e/binary/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..12a2bf99e80503c8c7960482add9ac8c8c7d20e8 --- /dev/null +++ b/e2e/binary/BUILD.bazel @@ -0,0 +1,31 @@ +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( + name = "coverage", + 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", + ], + # 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", + "@rules_python//python/runfiles", + ], +) diff --git a/e2e/binary/art/BUILD.bazel b/e2e/binary/art/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..5f02f42c40c46f52a945ccc2935bfa4fe4fea87a --- /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 0000000000000000000000000000000000000000..148c38e1057a690908b0c7aac3a9def8b918c8cd --- /dev/null +++ b/e2e/binary/awk/BUILD.bazel @@ -0,0 +1,30 @@ +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") + +py_pytest_test( + name = "print", + size = "small", + srcs = ["print.py"], + data = [ + "@ape//ape:awk", + ], + deps = [ + "//binary:pytest", + ], +) + +native_test( + name = "version", + size = "small", + 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 0000000000000000000000000000000000000000..3bed43bc9242ebbd5f3b0fc24d9f282453a15437 --- /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 diff --git a/e2e/binary/b2sum/BUILD.bazel b/e2e/binary/b2sum/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..cdec46e7de509d0568f11251b7dc9646fa5be4d5 --- /dev/null +++ b/e2e/binary/b2sum/BUILD.bazel @@ -0,0 +1,32 @@ +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") + +py_pytest_test( + name = "digest", + size = "small", + srcs = ["digest.py"], + data = [ + "expected.txt", + "fixture.txt", + "@ape//ape:b2sum", + ], + deps = [ + "//binary:pytest", + ], +) + +native_test( + name = "version", + size = "small", + 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 0000000000000000000000000000000000000000..987f41f859bcd6bf02184664d529d799a04ce8f0 --- /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 0000000000000000000000000000000000000000..efcd01f75120973eb18e787ea0b332e53b03dc90 --- /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 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /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. diff --git a/e2e/binary/base32/BUILD.bazel b/e2e/binary/base32/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..098fc4d912ec0bbb30fa68d6d4133947ebc52ef8 --- /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 0000000000000000000000000000000000000000..16780ba8a8ab473300cc966b2ce74f9394031bce --- /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 0000000000000000000000000000000000000000..532b7d6403324dee9d365e64cbfa0d80288afcd4 --- /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 0000000000000000000000000000000000000000..9dd01ede3e64d4f1e3f68d4202e9be143492df80 --- /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 0000000000000000000000000000000000000000..545c018048ede1dca77c7bf45df31a47353bcbc6 --- /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 0000000000000000000000000000000000000000..a8f7850e4bd126466d089f4e5160b5646ba8b93b --- /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 0000000000000000000000000000000000000000..d2d68a6ba54bce76ba9fd6078234594753d0df4f --- /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 0000000000000000000000000000000000000000..9409db15bbd215f262e334063b6c9aeeb5bf86a3 --- /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 0000000000000000000000000000000000000000..ed227b4ecfdf150c28ce1d0a72e1a018da10d86e --- /dev/null +++ b/e2e/binary/brotli/BUILD.bazel @@ -0,0 +1,31 @@ +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") + +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:brotli", + ], + deps = [ + "//binary:pytest", + ], +) + +native_test( + name = "version", + size = "small", + 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 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /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 0000000000000000000000000000000000000000..af04d8fb261c5e28914631e0a999a2684ae03c8c --- /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) diff --git a/e2e/binary/bzip2/BUILD.bazel b/e2e/binary/bzip2/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..ebcb3e851a01161339210212c88879873d6d66f1 --- /dev/null +++ b/e2e/binary/bzip2/BUILD.bazel @@ -0,0 +1,31 @@ +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") + +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:bzip2", + ], + deps = [ + "//binary:pytest", + ], +) + +native_test( + name = "version", + size = "small", + 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 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /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 0000000000000000000000000000000000000000..f2feaa654beba1a1815c97f29dee16004a6fc543 --- /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) diff --git a/e2e/binary/cat/BUILD.bazel b/e2e/binary/cat/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..d4f88d08e57783c7a96ec516d101c666ff4c6543 --- /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 0000000000000000000000000000000000000000..457aff98bc20ea8010f850890ec1f1be70f64504 --- /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 0000000000000000000000000000000000000000..fc127dc76725c9b7a91731be889536a2911cc70f --- /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 0000000000000000000000000000000000000000..ad95dedc98bba9cc64ed574e9c7fcb3d5ce9ac4d --- /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 0000000000000000000000000000000000000000..0c9034caa8fa5cfc364204c4d5455f0fc2bd01bb --- /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 0000000000000000000000000000000000000000..57d51261c4f3f07612592d90392f63587a787106 --- /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 0000000000000000000000000000000000000000..414a82118d5a5b7fdd0a84179062d7f438db22f4 --- /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 0000000000000000000000000000000000000000..bc2a9b05d206c9540ce988a0a9237fae9af592fe --- /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 0000000000000000000000000000000000000000..02947c538a7a987cdf9ea2d4d3441cb6e0212f57 --- /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 0000000000000000000000000000000000000000..c1c3dd563b2ca4b17152af53e505d6bf590537b5 --- /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/conftest.py b/e2e/binary/conftest.py new file mode 100644 index 0000000000000000000000000000000000000000..4c98c8bca9adeec8bf68f24568d96ca40d1123c6 --- /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/cp/BUILD.bazel b/e2e/binary/cp/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..88df7b9aabf7d8cbd961eea1010c2b7f3fd51a00 --- /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 0000000000000000000000000000000000000000..50da15461a28ea8f557e9921b477027eb9f2a686 --- /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 0000000000000000000000000000000000000000..6e02cb37758dc3e0296f35d355a4ead84a7fcd09 --- /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 0000000000000000000000000000000000000000..6fb13d32dbc2f393d8beaf6503a91cae5ba73110 --- /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 0000000000000000000000000000000000000000..5bc08c78e581d654f59c06fa25d1a5dc85e8aa75 --- /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 0000000000000000000000000000000000000000..42cdd863f512b606d8ac5e5c56c49fc3ab6a6f59 --- /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 0000000000000000000000000000000000000000..1520dca8e729637dcbce88c80eb60e30e0691eff --- /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 0000000000000000000000000000000000000000..9cf32e2b51d82964a651e4015edb7fe38950542d --- /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 0000000000000000000000000000000000000000..cdef4d4c7d2e51078e75e5e765a33ca175b318d6 --- /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 0000000000000000000000000000000000000000..9d522e3926000b9419dc967b169ab105153087df --- /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 0000000000000000000000000000000000000000..90860739f457a107180b13a41bcd9702624af07b --- /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.py b/e2e/binary/diff.py new file mode 100644 index 0000000000000000000000000000000000000000..1fb21b5328a8ee00089c5174b72db7f9e512e0bd --- /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/diff/BUILD.bazel b/e2e/binary/diff/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..a4d660690422768205df253440db8d7f863df8f8 --- /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 0000000000000000000000000000000000000000..57ddfd71a14b20479eb65ad35e11f37cb932c12c --- /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 0000000000000000000000000000000000000000..3249d822bd43f674c66696ac910e8f48ce9847d6 --- /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 0000000000000000000000000000000000000000..a4c9f98a79ffea0e4193ebfaba32d7f8d014a9d8 --- /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 0000000000000000000000000000000000000000..c07709b6cc911fd9ecf61d64c278962eddb4611a --- /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 0000000000000000000000000000000000000000..5f3984c65eab74a6ef9c9bdc2e7b0fb11cc5f782 --- /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 0000000000000000000000000000000000000000..ff802ed92ff447c251683fd6a68ea9b68b228479 --- /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 0000000000000000000000000000000000000000..81af26c7263b618510b3c9a5188af238f3a36f0a --- /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 0000000000000000000000000000000000000000..85d91d20d690ac564bcddc6dc433e9a789181a03 --- /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 0000000000000000000000000000000000000000..6b0f5f08674e1f82df007a1be2c5abc1d4feb3d4 --- /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 0000000000000000000000000000000000000000..2a3ea4083461eb58551ea41a86ac47a6d7874ef9 --- /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 0000000000000000000000000000000000000000..15ab8165269d511e217098a065fe39cfd0307de6 --- /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 0000000000000000000000000000000000000000..be0aa764759cd34b6040153c6a43eb06b8cf7b93 --- /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 0000000000000000000000000000000000000000..8301ea9d44d03c5abce2626b8b290971c6f7984f --- /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 0000000000000000000000000000000000000000..23ac1bb19553755ce22f32ce8b4b51fa963634c8 --- /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 0000000000000000000000000000000000000000..bac7f2a64a29706438d6fbae5d2680cbac765cbd --- /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 0000000000000000000000000000000000000000..e1844f33b8bd1925c70ce4410ab0c9fa35dfb02b --- /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 0000000000000000000000000000000000000000..0e0f145da5e5e2b5096bdc1aa7b4d41220d3fe4a --- /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 0000000000000000000000000000000000000000..52507c14e73da1ab30e5344ac6851f4710211c76 --- /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 0000000000000000000000000000000000000000..a88cfcb635fc9158b6c1de57b2957ca744d34b93 --- /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 0000000000000000000000000000000000000000..77a169c56fa6999ca878188952fb4ba759a3c1dc --- /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 0000000000000000000000000000000000000000..51e8901855da16003ea6364db4a0f2d46aeed778 --- /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 0000000000000000000000000000000000000000..0b21b47f55cda4d73a5cfbb9a7259e4d01047cc7 --- /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 0000000000000000000000000000000000000000..b641988e86e49744d81d583784c855f9b04c5ac3 --- /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 0000000000000000000000000000000000000000..d8d31d9756937443430e77a8b8ab048f98aa4623 --- /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 0000000000000000000000000000000000000000..da4bf80d1a376ff6ee3d63451c8fb6117fef0c69 --- /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 0000000000000000000000000000000000000000..c9a2ef0afc8dc03a4f46b8a8bfd3cf7ed3aaa1d8 --- /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 0000000000000000000000000000000000000000..f5b8e5283ccbd18836205dccef5f06a5303976c4 --- /dev/null +++ b/e2e/binary/gzip/BUILD.bazel @@ -0,0 +1,31 @@ +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") + +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:gzip", + ], + deps = [ + "//binary:pytest", + ], +) + +native_test( + name = "version", + size = "small", + 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 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /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 0000000000000000000000000000000000000000..68a3d112c098188ce95252e4a39a242925a70b0e --- /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) diff --git a/e2e/binary/hangman/BUILD.bazel b/e2e/binary/hangman/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..7651f25a72851846680579c93514b42b9dc42a4d --- /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 0000000000000000000000000000000000000000..87f6e64791e1368f583fd5385ffca8299852c8de --- /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 0000000000000000000000000000000000000000..b7827bf10f7d6dc80f88ead80b18d988a55176d8 --- /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 0000000000000000000000000000000000000000..af96d0768c5736153dea50700abcae0ac832735d --- /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 0000000000000000000000000000000000000000..d8a75915b45272c590b2dadf636526f196afe0c0 --- /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 0000000000000000000000000000000000000000..981083901875580dbb795387daf91ae21b778357 --- /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 0000000000000000000000000000000000000000..8dfb39f8d3b2235540ab9a5e06c954300fa75423 --- /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 0000000000000000000000000000000000000000..ba9714d33ec7f1937c510e5f2e84a803f09ab8fa --- /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 0000000000000000000000000000000000000000..981e5cd8b8d5eb13cab3a01c1429cb0b94713865 --- /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 0000000000000000000000000000000000000000..16fc841c758d00bc2b991516299a6417cdc61d14 --- /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 0000000000000000000000000000000000000000..c4e98dca66f44c35440b5d6faf3a211449541910 --- /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 0000000000000000000000000000000000000000..b1933729cef56c4b2bd272fc4de1a0f1d32e1b41 --- /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 0000000000000000000000000000000000000000..e68a0c3eb10c03d21a292ed9aee17995cbcbac77 --- /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 0000000000000000000000000000000000000000..882458bec01de61b8902665509d3949c72865eaf --- /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 0000000000000000000000000000000000000000..309c6c0151caf120b8da699d338e34eb3ae0b04a --- /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 0000000000000000000000000000000000000000..4cbcdb74e37b74207e597788a62a7aa8fc780080 --- /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 0000000000000000000000000000000000000000..636cc8ed47a0c82f22bdc7ce87b58aa782f3eec0 --- /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 0000000000000000000000000000000000000000..1b48ccb85430c4f07e1271ef5cc279b62a68325c --- /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 0000000000000000000000000000000000000000..3153cb22026ac5fb3c4d3816c09c8bccabc2c0fc --- /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 0000000000000000000000000000000000000000..a7f3b8588c4e2faed814b8225427c750099b0258 --- /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 0000000000000000000000000000000000000000..bd3d34664578584b611a7a08257b31763073e96b --- /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 0000000000000000000000000000000000000000..fc8ae45799fee3557fd0c4fc30f002b13f270989 --- /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 0000000000000000000000000000000000000000..c803f82e5b6c107d182f79b60e62b542aa6c0f98 --- /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 0000000000000000000000000000000000000000..d5c6146c51ea3fbd31501c2b2dc6fa9c80a362a7 --- /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 0000000000000000000000000000000000000000..d041744346abea8514c6f0308c41c8b9f1342799 --- /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 0000000000000000000000000000000000000000..e917ae2ed796c85b5f913590b0de06f4e5dea447 --- /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 0000000000000000000000000000000000000000..9e28d643ec94a3537708f512761f213cf7f2302f --- /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 0000000000000000000000000000000000000000..e9246a383cfb82d617bae974264808920ee69222 --- /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 0000000000000000000000000000000000000000..961c3d1475f40c5b92c41a8ec27ffb8cf04e9d99 --- /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 0000000000000000000000000000000000000000..ec1758537431d14f54d1a27872048e80c8fe1ece --- /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 0000000000000000000000000000000000000000..0640b1c4e92308d2b51275efcf7536ef3e5199fb --- /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 0000000000000000000000000000000000000000..2431017f0bdfc61092e8b81ffa1247db4bebdf50 --- /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 0000000000000000000000000000000000000000..a0a4ecdc5104c823045f3c79b96d820ef124726d --- /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 0000000000000000000000000000000000000000..542d1d598fd51af833653d913151943c5c75fd08 --- /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 0000000000000000000000000000000000000000..520a195796a0f7cdaebd31cdfb673afdfcc69b6e --- /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 0000000000000000000000000000000000000000..5b7cf11ca61b069de2426975fe8af4e91f7202af --- /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 0000000000000000000000000000000000000000..386ea98a852b36702508982ce6f98a7074bd2488 --- /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 0000000000000000000000000000000000000000..09a1c195d7645e3c281ec1d90f3730d9b63003f3 --- /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 0000000000000000000000000000000000000000..1480f1fb022cfdce62e42868101b15295423d76f --- /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 0000000000000000000000000000000000000000..4ee2ebfe3c58fca846f0a5de027942a2ee8fb758 --- /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 0000000000000000000000000000000000000000..04383d6ecab8b77575371e1c355fe9017bc668f1 --- /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 0000000000000000000000000000000000000000..50a61e0cfebc77f788425a5c688cb62ae6462763 --- /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 0000000000000000000000000000000000000000..f446f6f05f94f5058e3cf684792842b78b892992 --- /dev/null +++ b/e2e/binary/pigz/BUILD.bazel @@ -0,0 +1,31 @@ +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") + +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:pigz", + ], + deps = [ + "//binary:pytest", + ], +) + +native_test( + name = "version", + size = "small", + 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 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /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 0000000000000000000000000000000000000000..af06be6a35f4ae55f106ba8e198a2d1f1c3483ba --- /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/pinky/BUILD.bazel b/e2e/binary/pinky/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..e99ceab985efb2bbb71ea5d8d9291a8a9e2cb852 --- /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 0000000000000000000000000000000000000000..496225ec150cafff5d4f6e384fba36b4c39a8c64 --- /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 0000000000000000000000000000000000000000..318717b9bb843e80d6d7ac68c87431f53b3b6d89 --- /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 0000000000000000000000000000000000000000..c4c3e7e325cd0727cb00c104caab9d761d258efd --- /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 0000000000000000000000000000000000000000..6afff82e645276bf40f005f5662fda63dc981610 --- /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 0000000000000000000000000000000000000000..9513a279e11e374543b7b07773e18a7c0d410729 --- /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 0000000000000000000000000000000000000000..4acc3b86fbce49b17fa54d998c2904e5ccbbc6b2 --- /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 0000000000000000000000000000000000000000..bc07933d5bc603ce523bf0bb98fc508b92922340 --- /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 0000000000000000000000000000000000000000..5a1dce760ea1d1b6be60d754b454023816761328 --- /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 0000000000000000000000000000000000000000..ec004a69adc043558bb837c0df9c5fef3adb2ba9 --- /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 0000000000000000000000000000000000000000..e88a983707172712dcd5184fc029a311f6bc6f5a --- /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 0000000000000000000000000000000000000000..bd0c823c44fe3ccb7439c1669e28894ff8ea7930 --- /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 0000000000000000000000000000000000000000..1507a318ed38b260f58983a85f90f491f734423b --- /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 0000000000000000000000000000000000000000..300e0e75891f0313efc2ef67295fcbb76fd5aeb5 --- /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 0000000000000000000000000000000000000000..5b7c75bfad6fec684301d4a113b07a3520e7f4f8 --- /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 0000000000000000000000000000000000000000..6ea178e71e1fb510ad579751d666e24e0c4da7bb --- /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/relative.py b/e2e/binary/relative.py new file mode 100644 index 0000000000000000000000000000000000000000..ae5ff890490c0a564b5c1716d16bba739b1ff46f --- /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/rm/BUILD.bazel b/e2e/binary/rm/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..f76722ffa99c2ef5f51f73598b7bb3a52b837e26 --- /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 0000000000000000000000000000000000000000..d16bbca0aea8c8f4e4a281514a28fbd4e2453b54 --- /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 0000000000000000000000000000000000000000..2590081500a662366c7ddb04c848e1c7a68972f2 --- /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 0000000000000000000000000000000000000000..dda14f4f61e5fb13e0c2b5d4d7fe20aea956a025 --- /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 0000000000000000000000000000000000000000..bef93e06cbbae838aeef65ca07659e1226a448e7 --- /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/runfile.py b/e2e/binary/runfile.py new file mode 100644 index 0000000000000000000000000000000000000000..1f6033f0e3bb3a834d5a36ab6b4e72981f5131f6 --- /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/rusage/BUILD.bazel b/e2e/binary/rusage/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..3304934c6c2d8db4919253a05b62ba6f428a53cf --- /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 0000000000000000000000000000000000000000..a5a530e48d5d014194b1220c0445916425822fd0 --- /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 0000000000000000000000000000000000000000..1bc2454875589870e03dc4904f1d61a595431239 --- /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 0000000000000000000000000000000000000000..b176048402eb928b5ea36bef031150709be0a86c --- /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 0000000000000000000000000000000000000000..da498a72fcdebf70e5ee41ff0e4067021ba62cd2 --- /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 0000000000000000000000000000000000000000..6532ff9249312c54386e9f5ae57d30968ce910af --- /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 0000000000000000000000000000000000000000..6feeb59d87a57f9e1c9b1afde962a74ad24f60b1 --- /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 0000000000000000000000000000000000000000..cc9181a7959e8426aff0ce0db4ae25cc25fabe61 --- /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 0000000000000000000000000000000000000000..b2f7947bda07c2a0bd3cd1093558455e08ae7df9 --- /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 0000000000000000000000000000000000000000..4fbbdce5f909e3ba56a7be3dcde4a551bb375a2b --- /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 0000000000000000000000000000000000000000..367f38b676b791495b55ef03bab5e242d9299734 --- /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 0000000000000000000000000000000000000000..0f2a2f892f3246a48de861c291b35b33fa6051aa --- /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 0000000000000000000000000000000000000000..169b514b8a9623d2aa22c1087416b7d0c7a0411d --- /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 0000000000000000000000000000000000000000..38501238eb12d57f102b5671874b35aaf9f5e741 --- /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 0000000000000000000000000000000000000000..e6adee6452430b24b99b6644575a37afce281864 --- /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 0000000000000000000000000000000000000000..4e79ce90570d0b20f89bc566ddda249b1cc07222 --- /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 0000000000000000000000000000000000000000..d8e53274a54b86f385999c527a3039b29541cb6c --- /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 0000000000000000000000000000000000000000..940a9f5050cb6dd5538bc1e6660818383e61eea9 --- /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 0000000000000000000000000000000000000000..8b9cdb99bd1e9aeac6c7b97d25ff65d483c6ee39 --- /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 0000000000000000000000000000000000000000..657c3f7e3015ace3e3247664a576f6ffcdfd1c84 --- /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 0000000000000000000000000000000000000000..60c1d1fa86b7cc85fa071a2dbf0d9de661e82aaf --- /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 0000000000000000000000000000000000000000..866a55ef3e6f1d59b01a8a72cb509a5a7ba547de --- /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 0000000000000000000000000000000000000000..37669403de0674232412414f2eeaf05bb829a9ff --- /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 0000000000000000000000000000000000000000..9cbd50084dac1b95481f5cc14883dc54352f8d30 --- /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 0000000000000000000000000000000000000000..c10bdaabc5a50f66b6f78b18a2a298ee280c9d7c --- /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 0000000000000000000000000000000000000000..c6b3453b110a3807e3c1155af6f6d553ccdb7c95 --- /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 0000000000000000000000000000000000000000..ae635ec9eeeef4d0387ed1c6d1bb048b772e811e --- /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 0000000000000000000000000000000000000000..0dcf8ba0c4000058d28f4de57c46c4ab2caab9e6 --- /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 0000000000000000000000000000000000000000..53c8ad35d07a4863aad274684e4b409a578941ba --- /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 0000000000000000000000000000000000000000..5e96d23e35b9ab3f2bcf25879881a5b6086bb79e --- /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 0000000000000000000000000000000000000000..8c969ff27ab86ed7096b3b6965749f6433cb1023 --- /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/tool.py b/e2e/binary/tool.py new file mode 100644 index 0000000000000000000000000000000000000000..e9af2b7c300e767b42bd1982c415d6f7735dd07e --- /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/binary/touch/BUILD.bazel b/e2e/binary/touch/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..2903f461b6b57b068602396d0fccbafc11ff29c6 --- /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 0000000000000000000000000000000000000000..28fab6ea672a79368676343ce4012dc4c6a1a3c1 --- /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 0000000000000000000000000000000000000000..a8b99296430318e13bfc22384bb4e59b66487f53 --- /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 0000000000000000000000000000000000000000..7fde5ecb79b4028f994a186e7d3f3274d18bd3c1 --- /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 0000000000000000000000000000000000000000..83639bb379d394c8d1cf06bbb511f332005260d4 --- /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 0000000000000000000000000000000000000000..85d14ce9f1d5e38a6fc0ac246cf6d608f16fb206 --- /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 0000000000000000000000000000000000000000..46f38f023aece9fa30a25281a2c2b880b0d62b55 --- /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 0000000000000000000000000000000000000000..4fe3ddef7520016329efacd9957a22326fc28137 --- /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 0000000000000000000000000000000000000000..fad42c32e5ad85b766fffa46116babdb4fb92e11 --- /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 0000000000000000000000000000000000000000..6f9d958d4d2ee6be25afe904ed710d0129077af7 --- /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 0000000000000000000000000000000000000000..1e52862bd3abe9a6183b857866b2ca463b64b02c --- /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 0000000000000000000000000000000000000000..ea2512a8824d4eee70c993acca96975bdd3a9ad2 --- /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 0000000000000000000000000000000000000000..22cc8c2cbedae08179ed23aed5bd4647561b52ee --- /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 0000000000000000000000000000000000000000..d88b69fc8f27a18143a972dbc4ea8b3a1fb56085 --- /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 0000000000000000000000000000000000000000..7b0db893369e20c4468ea1043274743e11271b37 --- /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 0000000000000000000000000000000000000000..37c375eb962a67d88f66f37a576955d825f4eeee --- /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 0000000000000000000000000000000000000000..26e80085c244abbc5821be1fd008a2e7fef42d0f --- /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 0000000000000000000000000000000000000000..ed2e98d7d8a9405cc58dd30e96e3e8e59d824976 --- /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 0000000000000000000000000000000000000000..d0d323ccd5d52ca1add2fb74d69427a679b80339 --- /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 0000000000000000000000000000000000000000..d9e07aee41cb30467f6331d3bfcb45d8c912a9bb --- /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 0000000000000000000000000000000000000000..2c6e95816356387ba13bfab25ef78ddc036ff59e --- /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 0000000000000000000000000000000000000000..2664737eaf022aad95f4f5accbd831b962984ba3 --- /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 0000000000000000000000000000000000000000..5b130d72d614f94e596dbffd329a5cb099045cf7 --- /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 0000000000000000000000000000000000000000..62f7e9fea4023e8b7eee492e36ca9cd471ff7b33 --- /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 0000000000000000000000000000000000000000..c9b9dca2a05782d1c95687b97acf9ee0b0402251 --- /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 0000000000000000000000000000000000000000..927c27ed313572319575ab0c82e1f56196730a98 --- /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 0000000000000000000000000000000000000000..ef98636ca9f4675cb474ecfd46302e5a1edb9c0e --- /dev/null +++ b/e2e/binary/xz/BUILD.bazel @@ -0,0 +1,31 @@ +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") + +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:xz", + ], + deps = [ + "//binary:pytest", + ], +) + +native_test( + name = "version", + size = "small", + 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 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /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 0000000000000000000000000000000000000000..dc7688636f849c1f3d8b4e9b52869cadf633f2b6 --- /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) diff --git a/e2e/binary/yes/BUILD.bazel b/e2e/binary/yes/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..e9605cc491c74b1d4be91d6bf0d4edd0ed14d3e8 --- /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 0000000000000000000000000000000000000000..ce603aa76bdc66001b0351c2efaf8f85811ecfcd --- /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 0000000000000000000000000000000000000000..8616cbc11afbf62bb84a246d7307f7dbb2d24eba --- /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 0000000000000000000000000000000000000000..43a70f523da6d9efae6280f6384311efc3207c41 --- /dev/null +++ b/e2e/binary/zstd/BUILD.bazel @@ -0,0 +1,31 @@ +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") + +py_pytest_test( + name = "roundtrip", + size = "small", + srcs = ["roundtrip.py"], + data = [ + "fixture.txt", + "@ape//ape:zstd", + ], + deps = [ + "//binary:pytest", + ], +) + +native_test( + name = "version", + size = "small", + 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 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /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 0000000000000000000000000000000000000000..71d2b3e89ff9c2ca831dc9e69b16a8a8640fc0e0 --- /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) diff --git a/e2e/cosmos/3.1.3.json b/e2e/cosmos/3.1.3.json new file mode 100644 index 0000000000000000000000000000000000000000..a9a378ba9d591f4a5c8aec28793c16632583609f --- /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 0000000000000000000000000000000000000000..8deabb55ee5625f6098cacd90854cec9632d3dc9 --- /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 0000000000000000000000000000000000000000..de50903ce0933fab56d0956ff1ad52d2d1b9c1fc --- /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 0000000000000000000000000000000000000000..c4b6da652725465a6214104848363076920761e4 --- /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/pytest/BUILD.bazel b/e2e/pytest/BUILD.bazel new file mode 100644 index 0000000000000000000000000000000000000000..934b1472045b038f413530bae46ca86ba509ccde --- /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 0000000000000000000000000000000000000000..d197ada2ff50cd90ce252664a35c1eb28165a1da --- /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 0000000000000000000000000000000000000000..ab5b5b49138e159a2a87bd23496379828e102af4 --- /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 diff --git a/e2e/symlink/BUILD.bazel b/e2e/symlink/BUILD.bazel index b71ec428439aa06ddcda717b9275d1b28557d85a..712f8fac47a7a4d74c3d78f263bfa90dd0d836f9 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 c067a894fd64adab6d18efc109cf5a1440856a11..0000000000000000000000000000000000000000 --- 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", -)