From 9c07aa51d0e48f8a5f4e968314b1e3c50b2ffa3c Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Thu, 25 Jul 2024 16:52:35 +0000 Subject: [PATCH 1/9] chore: remove bbs installation from devcontainer Signed-off-by: Akiff Manji --- .devcontainer/post-install.sh | 1 - poetry.lock | 586 +++++++++++++++++----------------- pyproject.toml | 8 - 3 files changed, 296 insertions(+), 299 deletions(-) diff --git a/.devcontainer/post-install.sh b/.devcontainer/post-install.sh index c106cb9032..0a79696550 100644 --- a/.devcontainer/post-install.sh +++ b/.devcontainer/post-install.sh @@ -27,7 +27,6 @@ markers = [ "indy: Tests specifically relating to Hyperledger Indy SDK support", "indy_credx: Tests specifically relating to Indy-Credx support", "indy_vdr: Tests specifically relating to Indy-VDR support", - "ursa_bbs_signatures: Tests specificaly relating to BBS Signatures support", "postgres: Tests relating to the postgres storage plugin for Indy"] junit_family = "xunit1" asyncio_mode = auto diff --git a/poetry.lock b/poetry.lock index f592632cd5..3d2ab06827 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "aiohttp" @@ -283,13 +283,13 @@ files = [ [[package]] name = "cachetools" -version = "5.3.3" +version = "5.4.0" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, - {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, + {file = "cachetools-5.4.0-py3-none-any.whl", hash = "sha256:3ae3b49a3d5e28a77a0be2b37dbcb89005058959cb2323858c2657c4a8cab474"}, + {file = "cachetools-5.4.0.tar.gz", hash = "sha256:b8adc2e7c07f105ced7bc56dbb6dfbe7c4a00acce20e2227b3f355be89bc6827"}, ] [[package]] @@ -505,63 +505,63 @@ yaml = ["PyYAML"] [[package]] name = "coverage" -version = "7.5.4" +version = "7.6.0" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"}, - {file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"}, - {file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"}, - {file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"}, - {file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"}, - {file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"}, - {file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"}, - {file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"}, - {file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"}, - {file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"}, - {file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"}, - {file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"}, - {file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"}, - {file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"}, - {file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"}, - {file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"}, - {file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"}, - {file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"}, - {file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"}, - {file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"}, - {file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"}, - {file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, + {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, + {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, + {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, + {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, + {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, + {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b"}, + {file = "coverage-7.6.0-cp38-cp38-win32.whl", hash = "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428"}, + {file = "coverage-7.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, + {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, + {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, + {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, + {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, ] [package.extras] @@ -569,43 +569,38 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "42.0.8" +version = "43.0.0" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, + {file = "cryptography-43.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:64c3f16e2a4fc51c0d06af28441881f98c5d91009b8caaff40cf3548089e9c74"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3dcdedae5c7710b9f97ac6bba7e1052b95c7083c9d0e9df96e02a1932e777895"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d9a1eca329405219b605fac09ecfc09ac09e595d6def650a437523fcd08dd22"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ea9e57f8ea880eeea38ab5abf9fbe39f923544d7884228ec67d666abd60f5a47"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9a8d6802e0825767476f62aafed40532bd435e8a5f7d23bd8b4f5fd04cc80ecf"}, + {file = "cryptography-43.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cc70b4b581f28d0a254d006f26949245e3657d40d8857066c2ae22a61222ef55"}, + {file = "cryptography-43.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a997df8c1c2aae1e1e5ac49c2e4f610ad037fc5a3aadc7b64e39dea42249431"}, + {file = "cryptography-43.0.0-cp37-abi3-win32.whl", hash = "sha256:6e2b11c55d260d03a8cf29ac9b5e0608d35f08077d8c087be96287f43af3ccdc"}, + {file = "cryptography-43.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:31e44a986ceccec3d0498e16f3d27b2ee5fdf69ce2ab89b52eaad1d2f33d8778"}, + {file = "cryptography-43.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:7b3f5fe74a5ca32d4d0f302ffe6680fcc5c28f8ef0dc0ae8f40c0f3a1b4fca66"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac1955ce000cb29ab40def14fd1bbfa7af2017cca696ee696925615cafd0dce5"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:299d3da8e00b7e2b54bb02ef58d73cd5f55fb31f33ebbf33bd00d9aa6807df7e"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ee0c405832ade84d4de74b9029bedb7b31200600fa524d218fc29bfa371e97f5"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb013933d4c127349b3948aa8aaf2f12c0353ad0eccd715ca789c8a0f671646f"}, + {file = "cryptography-43.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fdcb265de28585de5b859ae13e3846a8e805268a823a12a4da2597f1f5afc9f0"}, + {file = "cryptography-43.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2905ccf93a8a2a416f3ec01b1a7911c3fe4073ef35640e7ee5296754e30b762b"}, + {file = "cryptography-43.0.0-cp39-abi3-win32.whl", hash = "sha256:47ca71115e545954e6c1d207dd13461ab81f4eccfcb1345eac874828b5e3eaaf"}, + {file = "cryptography-43.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:0663585d02f76929792470451a5ba64424acc3cd5227b03921dab0e2f27b1709"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c6d112bf61c5ef44042c253e4859b3cbbb50df2f78fa8fae6747a7814484a70"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:844b6d608374e7d08f4f6e6f9f7b951f9256db41421917dfb2d003dde4cd6b66"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:51956cf8730665e2bdf8ddb8da0056f699c1a5715648c1b0144670c1ba00b48f"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:aae4d918f6b180a8ab8bf6511a419473d107df4dbb4225c7b48c5c9602c38c7f"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:232ce02943a579095a339ac4b390fbbe97f5b5d5d107f8a08260ea2768be8cc2"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5bcb8a5620008a8034d39bce21dc3e23735dfdb6a33a06974739bfa04f853947"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:08a24a7070b2b6804c1940ff0f910ff728932a9d0e80e7814234269f9d46d069"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e9c5266c432a1e23738d178e51c2c7a5e2ddf790f248be939448c0ba2021f9d1"}, + {file = "cryptography-43.0.0.tar.gz", hash = "sha256:b88075ada2d51aa9f18283532c9f60e72170041bba88d7f37e49cbb10275299e"}, ] [package.dependencies] @@ -618,7 +613,7 @@ nox = ["nox"] pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "cryptography-vectors (==43.0.0)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] @@ -813,13 +808,13 @@ files = [ [[package]] name = "docutils" -version = "0.17.1" +version = "0.19" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, + {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, + {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, ] [[package]] @@ -860,13 +855,13 @@ test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] [[package]] name = "eth-typing" -version = "4.3.1" +version = "4.4.0" description = "eth-typing: Common type annotations for ethereum python packages" optional = false python-versions = "<4,>=3.8" files = [ - {file = "eth_typing-4.3.1-py3-none-any.whl", hash = "sha256:b4d7cee912c7779da75da4b42fa61475c1089d35a4df5081a786eaa29d5f6865"}, - {file = "eth_typing-4.3.1.tar.gz", hash = "sha256:4504559c87a9f71f4b99aa5a1e0549adaa7f192cbf8e37a295acfcddb1b5412d"}, + {file = "eth_typing-4.4.0-py3-none-any.whl", hash = "sha256:a5e30a6e69edda7b1d1e96e9d71bab48b9bb988a77909d8d1666242c5562f841"}, + {file = "eth_typing-4.4.0.tar.gz", hash = "sha256:93848083ac6bb4c20cc209ea9153a08b0a528be23337c889f89e1e5ffbe9807d"}, ] [package.dependencies] @@ -1045,13 +1040,13 @@ files = [ [[package]] name = "identify" -version = "2.5.36" +version = "2.6.0" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, - {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, + {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, + {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, ] [package.extras] @@ -1568,84 +1563,95 @@ files = [ [[package]] name = "pillow" -version = "10.3.0" +version = "10.4.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, - {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, - {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, - {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, - {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, - {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, - {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, - {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, - {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, - {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, - {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, - {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, - {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, - {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, - {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, - {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, - {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, + {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, + {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, + {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, + {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, + {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, + {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, + {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, + {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, + {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, + {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, + {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, + {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, + {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, + {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, + {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, + {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, + {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, + {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -1794,109 +1800,122 @@ files = [ [[package]] name = "pydantic" -version = "2.7.4" +version = "2.8.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.7.4-py3-none-any.whl", hash = "sha256:ee8538d41ccb9c0a9ad3e0e5f07bf15ed8015b481ced539a1759d8cc89ae90d0"}, - {file = "pydantic-2.7.4.tar.gz", hash = "sha256:0c84efd9548d545f63ac0060c1e4d39bb9b14db8b3c0652338aecc07b5adec52"}, + {file = "pydantic-2.8.2-py3-none-any.whl", hash = "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8"}, + {file = "pydantic-2.8.2.tar.gz", hash = "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.18.4" -typing-extensions = ">=4.6.1" +pydantic-core = "2.20.1" +typing-extensions = [ + {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, +] [package.extras] email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.18.4" +version = "2.20.1" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.18.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:f76d0ad001edd426b92233d45c746fd08f467d56100fd8f30e9ace4b005266e4"}, - {file = "pydantic_core-2.18.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:59ff3e89f4eaf14050c8022011862df275b552caef8082e37b542b066ce1ff26"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a55b5b16c839df1070bc113c1f7f94a0af4433fcfa1b41799ce7606e5c79ce0a"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4d0dcc59664fcb8974b356fe0a18a672d6d7cf9f54746c05f43275fc48636851"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8951eee36c57cd128f779e641e21eb40bc5073eb28b2d23f33eb0ef14ffb3f5d"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4701b19f7e3a06ea655513f7938de6f108123bf7c86bbebb1196eb9bd35cf724"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e00a3f196329e08e43d99b79b286d60ce46bed10f2280d25a1718399457e06be"}, - {file = "pydantic_core-2.18.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97736815b9cc893b2b7f663628e63f436018b75f44854c8027040e05230eeddb"}, - {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6891a2ae0e8692679c07728819b6e2b822fb30ca7445f67bbf6509b25a96332c"}, - {file = "pydantic_core-2.18.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bc4ff9805858bd54d1a20efff925ccd89c9d2e7cf4986144b30802bf78091c3e"}, - {file = "pydantic_core-2.18.4-cp310-none-win32.whl", hash = "sha256:1b4de2e51bbcb61fdebd0ab86ef28062704f62c82bbf4addc4e37fa4b00b7cbc"}, - {file = "pydantic_core-2.18.4-cp310-none-win_amd64.whl", hash = "sha256:6a750aec7bf431517a9fd78cb93c97b9b0c496090fee84a47a0d23668976b4b0"}, - {file = "pydantic_core-2.18.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:942ba11e7dfb66dc70f9ae66b33452f51ac7bb90676da39a7345e99ffb55402d"}, - {file = "pydantic_core-2.18.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2ebef0e0b4454320274f5e83a41844c63438fdc874ea40a8b5b4ecb7693f1c4"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a642295cd0c8df1b86fc3dced1d067874c353a188dc8e0f744626d49e9aa51c4"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f09baa656c904807e832cf9cce799c6460c450c4ad80803517032da0cd062e2"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98906207f29bc2c459ff64fa007afd10a8c8ac080f7e4d5beff4c97086a3dabd"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19894b95aacfa98e7cb093cd7881a0c76f55731efad31073db4521e2b6ff5b7d"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fbbdc827fe5e42e4d196c746b890b3d72876bdbf160b0eafe9f0334525119c8"}, - {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f85d05aa0918283cf29a30b547b4df2fbb56b45b135f9e35b6807cb28bc47951"}, - {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e85637bc8fe81ddb73fda9e56bab24560bdddfa98aa64f87aaa4e4b6730c23d2"}, - {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f5966897e5461f818e136b8451d0551a2e77259eb0f73a837027b47dc95dab9"}, - {file = "pydantic_core-2.18.4-cp311-none-win32.whl", hash = "sha256:44c7486a4228413c317952e9d89598bcdfb06399735e49e0f8df643e1ccd0558"}, - {file = "pydantic_core-2.18.4-cp311-none-win_amd64.whl", hash = "sha256:8a7164fe2005d03c64fd3b85649891cd4953a8de53107940bf272500ba8a788b"}, - {file = "pydantic_core-2.18.4-cp311-none-win_arm64.whl", hash = "sha256:4e99bc050fe65c450344421017f98298a97cefc18c53bb2f7b3531eb39bc7805"}, - {file = "pydantic_core-2.18.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6f5c4d41b2771c730ea1c34e458e781b18cc668d194958e0112455fff4e402b2"}, - {file = "pydantic_core-2.18.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2fdf2156aa3d017fddf8aea5adfba9f777db1d6022d392b682d2a8329e087cef"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4748321b5078216070b151d5271ef3e7cc905ab170bbfd27d5c83ee3ec436695"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:847a35c4d58721c5dc3dba599878ebbdfd96784f3fb8bb2c356e123bdcd73f34"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3c40d4eaad41f78e3bbda31b89edc46a3f3dc6e171bf0ecf097ff7a0ffff7cb1"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:21a5e440dbe315ab9825fcd459b8814bb92b27c974cbc23c3e8baa2b76890077"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01dd777215e2aa86dfd664daed5957704b769e726626393438f9c87690ce78c3"}, - {file = "pydantic_core-2.18.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4b06beb3b3f1479d32befd1f3079cc47b34fa2da62457cdf6c963393340b56e9"}, - {file = "pydantic_core-2.18.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:564d7922e4b13a16b98772441879fcdcbe82ff50daa622d681dd682175ea918c"}, - {file = "pydantic_core-2.18.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0eb2a4f660fcd8e2b1c90ad566db2b98d7f3f4717c64fe0a83e0adb39766d5b8"}, - {file = "pydantic_core-2.18.4-cp312-none-win32.whl", hash = "sha256:8b8bab4c97248095ae0c4455b5a1cd1cdd96e4e4769306ab19dda135ea4cdb07"}, - {file = "pydantic_core-2.18.4-cp312-none-win_amd64.whl", hash = "sha256:14601cdb733d741b8958224030e2bfe21a4a881fb3dd6fbb21f071cabd48fa0a"}, - {file = "pydantic_core-2.18.4-cp312-none-win_arm64.whl", hash = "sha256:c1322d7dd74713dcc157a2b7898a564ab091ca6c58302d5c7b4c07296e3fd00f"}, - {file = "pydantic_core-2.18.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:823be1deb01793da05ecb0484d6c9e20baebb39bd42b5d72636ae9cf8350dbd2"}, - {file = "pydantic_core-2.18.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebef0dd9bf9b812bf75bda96743f2a6c5734a02092ae7f721c048d156d5fabae"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae1d6df168efb88d7d522664693607b80b4080be6750c913eefb77e34c12c71a"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9899c94762343f2cc2fc64c13e7cae4c3cc65cdfc87dd810a31654c9b7358cc"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99457f184ad90235cfe8461c4d70ab7dd2680e28821c29eca00252ba90308c78"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18f469a3d2a2fdafe99296a87e8a4c37748b5080a26b806a707f25a902c040a8"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7cdf28938ac6b8b49ae5e92f2735056a7ba99c9b110a474473fd71185c1af5d"}, - {file = "pydantic_core-2.18.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:938cb21650855054dc54dfd9120a851c974f95450f00683399006aa6e8abb057"}, - {file = "pydantic_core-2.18.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:44cd83ab6a51da80fb5adbd9560e26018e2ac7826f9626bc06ca3dc074cd198b"}, - {file = "pydantic_core-2.18.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:972658f4a72d02b8abfa2581d92d59f59897d2e9f7e708fdabe922f9087773af"}, - {file = "pydantic_core-2.18.4-cp38-none-win32.whl", hash = "sha256:1d886dc848e60cb7666f771e406acae54ab279b9f1e4143babc9c2258213daa2"}, - {file = "pydantic_core-2.18.4-cp38-none-win_amd64.whl", hash = "sha256:bb4462bd43c2460774914b8525f79b00f8f407c945d50881568f294c1d9b4443"}, - {file = "pydantic_core-2.18.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:44a688331d4a4e2129140a8118479443bd6f1905231138971372fcde37e43528"}, - {file = "pydantic_core-2.18.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a2fdd81edd64342c85ac7cf2753ccae0b79bf2dfa063785503cb85a7d3593223"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86110d7e1907ab36691f80b33eb2da87d780f4739ae773e5fc83fb272f88825f"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46387e38bd641b3ee5ce247563b60c5ca098da9c56c75c157a05eaa0933ed154"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:123c3cec203e3f5ac7b000bd82235f1a3eced8665b63d18be751f115588fea30"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc1803ac5c32ec324c5261c7209e8f8ce88e83254c4e1aebdc8b0a39f9ddb443"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53db086f9f6ab2b4061958d9c276d1dbe3690e8dd727d6abf2321d6cce37fa94"}, - {file = "pydantic_core-2.18.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:abc267fa9837245cc28ea6929f19fa335f3dc330a35d2e45509b6566dc18be23"}, - {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0d829524aaefdebccb869eed855e2d04c21d2d7479b6cada7ace5448416597b"}, - {file = "pydantic_core-2.18.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:509daade3b8649f80d4e5ff21aa5673e4ebe58590b25fe42fac5f0f52c6f034a"}, - {file = "pydantic_core-2.18.4-cp39-none-win32.whl", hash = "sha256:ca26a1e73c48cfc54c4a76ff78df3727b9d9f4ccc8dbee4ae3f73306a591676d"}, - {file = "pydantic_core-2.18.4-cp39-none-win_amd64.whl", hash = "sha256:c67598100338d5d985db1b3d21f3619ef392e185e71b8d52bceacc4a7771ea7e"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:574d92eac874f7f4db0ca653514d823a0d22e2354359d0759e3f6a406db5d55d"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1f4d26ceb5eb9eed4af91bebeae4b06c3fb28966ca3a8fb765208cf6b51102ab"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77450e6d20016ec41f43ca4a6c63e9fdde03f0ae3fe90e7c27bdbeaece8b1ed4"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d323a01da91851a4f17bf592faf46149c9169d68430b3146dcba2bb5e5719abc"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43d447dd2ae072a0065389092a231283f62d960030ecd27565672bd40746c507"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:578e24f761f3b425834f297b9935e1ce2e30f51400964ce4801002435a1b41ef"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:81b5efb2f126454586d0f40c4d834010979cb80785173d1586df845a632e4e6d"}, - {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ab86ce7c8f9bea87b9d12c7f0af71102acbf5ecbc66c17796cff45dae54ef9a5"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:90afc12421df2b1b4dcc975f814e21bc1754640d502a2fbcc6d41e77af5ec312"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:51991a89639a912c17bef4b45c87bd83593aee0437d8102556af4885811d59f5"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:293afe532740370aba8c060882f7d26cfd00c94cae32fd2e212a3a6e3b7bc15e"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48ece5bde2e768197a2d0f6e925f9d7e3e826f0ad2271120f8144a9db18d5c8"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eae237477a873ab46e8dd748e515c72c0c804fb380fbe6c85533c7de51f23a8f"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:834b5230b5dfc0c1ec37b2fda433b271cbbc0e507560b5d1588e2cc1148cf1ce"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e858ac0a25074ba4bce653f9b5d0a85b7456eaddadc0ce82d3878c22489fa4ee"}, - {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2fd41f6eff4c20778d717af1cc50eca52f5afe7805ee530a4fbd0bae284f16e9"}, - {file = "pydantic_core-2.18.4.tar.gz", hash = "sha256:ec3beeada09ff865c344ff3bc2f427f5e6c26401cc6113d77e372c3fdac73864"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98"}, + {file = "pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a"}, + {file = "pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840"}, + {file = "pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250"}, + {file = "pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312"}, + {file = "pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1"}, + {file = "pydantic_core-2.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27"}, + {file = "pydantic_core-2.20.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b"}, + {file = "pydantic_core-2.20.1-cp311-none-win32.whl", hash = "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a"}, + {file = "pydantic_core-2.20.1-cp311-none-win_amd64.whl", hash = "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231"}, + {file = "pydantic_core-2.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e"}, + {file = "pydantic_core-2.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1"}, + {file = "pydantic_core-2.20.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd"}, + {file = "pydantic_core-2.20.1-cp312-none-win32.whl", hash = "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688"}, + {file = "pydantic_core-2.20.1-cp312-none-win_amd64.whl", hash = "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686"}, + {file = "pydantic_core-2.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c"}, + {file = "pydantic_core-2.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203"}, + {file = "pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0"}, + {file = "pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e"}, + {file = "pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91"}, + {file = "pydantic_core-2.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598"}, + {file = "pydantic_core-2.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa"}, + {file = "pydantic_core-2.20.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987"}, + {file = "pydantic_core-2.20.1-cp38-none-win32.whl", hash = "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a"}, + {file = "pydantic_core-2.20.1-cp38-none-win_amd64.whl", hash = "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c"}, + {file = "pydantic_core-2.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006"}, + {file = "pydantic_core-2.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09"}, + {file = "pydantic_core-2.20.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab"}, + {file = "pydantic_core-2.20.1-cp39-none-win32.whl", hash = "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2"}, + {file = "pydantic_core-2.20.1-cp39-none-win_amd64.whl", hash = "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99"}, + {file = "pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a"}, + {file = "pydantic_core-2.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7"}, + {file = "pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4"}, ] [package.dependencies] @@ -2029,13 +2048,13 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pytest" -version = "8.3.1" +version = "8.3.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.3.1-py3-none-any.whl", hash = "sha256:e9600ccf4f563976e2c99fa02c7624ab938296551f280835ee6516df8bc4ae8c"}, - {file = "pytest-8.3.1.tar.gz", hash = "sha256:7e8e5c5abd6e93cb1cc151f23e57adc31fcf8cfd2a3ff2da63e23f732de35db6"}, + {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, + {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, ] [package.dependencies] @@ -2049,13 +2068,13 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "pytest-asyncio" -version = "0.23.7" +version = "0.23.8" description = "Pytest support for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "pytest_asyncio-0.23.7-py3-none-any.whl", hash = "sha256:009b48127fbe44518a547bddd25611551b0e43ccdbf1e67d12479f569832c20b"}, - {file = "pytest_asyncio-0.23.7.tar.gz", hash = "sha256:5f5c72948f4c49e7db4f29f2521d4031f1c27f86e57b046126654083d4770268"}, + {file = "pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2"}, + {file = "pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3"}, ] [package.dependencies] @@ -2369,18 +2388,18 @@ test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] [[package]] name = "sphinx-rtd-theme" -version = "1.3.0" +version = "2.0.0" description = "Read the Docs theme for Sphinx" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.6" files = [ - {file = "sphinx_rtd_theme-1.3.0-py2.py3-none-any.whl", hash = "sha256:46ddef89cc2416a81ecfbeaceab1881948c014b1b6e4450b815311a89fb977b0"}, - {file = "sphinx_rtd_theme-1.3.0.tar.gz", hash = "sha256:590b030c7abb9cf038ec053b95e5380b5c70d61591eb0b552063fbe7c41f0931"}, + {file = "sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586"}, + {file = "sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b"}, ] [package.dependencies] -docutils = "<0.19" -sphinx = ">=1.6,<8" +docutils = "<0.21" +sphinx = ">=5,<8" sphinxcontrib-jquery = ">=4,<5" [package.extras] @@ -2420,13 +2439,13 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.5" +version = "2.0.6" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_htmlhelp-2.0.5-py3-none-any.whl", hash = "sha256:393f04f112b4d2f53d93448d4bce35842f62b307ccdc549ec1585e950bc35e04"}, - {file = "sphinxcontrib_htmlhelp-2.0.5.tar.gz", hash = "sha256:0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015"}, + {file = "sphinxcontrib_htmlhelp-2.0.6-py3-none-any.whl", hash = "sha256:1b9af5a2671a61410a868fce050cab7ca393c218e6205cbc7f590136f207395c"}, + {file = "sphinxcontrib_htmlhelp-2.0.6.tar.gz", hash = "sha256:c6597da06185f0e3b4dc952777a04200611ef563882e0c244d27a15ee22afa73"}, ] [package.extras] @@ -2464,19 +2483,19 @@ test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.7" +version = "1.0.8" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_qthelp-1.0.7-py3-none-any.whl", hash = "sha256:e2ae3b5c492d58fcbd73281fbd27e34b8393ec34a073c792642cd8e529288182"}, - {file = "sphinxcontrib_qthelp-1.0.7.tar.gz", hash = "sha256:053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6"}, + {file = "sphinxcontrib_qthelp-1.0.8-py3-none-any.whl", hash = "sha256:323d6acc4189af76dfe94edd2a27d458902319b60fcca2aeef3b2180c106a75f"}, + {file = "sphinxcontrib_qthelp-1.0.8.tar.gz", hash = "sha256:db3f8fa10789c7a8e76d173c23364bdf0ebcd9449969a9e6a3dd31b8b7469f03"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] standalone = ["Sphinx (>=5)"] -test = ["pytest"] +test = ["defusedxml (>=0.7.1)", "pytest"] [[package]] name = "sphinxcontrib-serializinghtml" @@ -2544,18 +2563,6 @@ h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] -[[package]] -name = "ursa-bbs-signatures" -version = "1.0.1" -description = "" -optional = true -python-versions = ">=3.6.3" -files = [ - {file = "ursa_bbs_signatures-1.0.1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:245701789df0d6cda09faa6194b590c0ce6513b39d80fe8f1fe2a52b69a4b520"}, - {file = "ursa_bbs_signatures-1.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:79f410a1f89855a4149af7adecaa22a5f427640f5d093f53670657394a9f9ef4"}, - {file = "ursa_bbs_signatures-1.0.1-py3-none-win_amd64.whl", hash = "sha256:ffd5f8cf1518c706b372feccac5d727a9d6c64a68f54f4d109133c4101108368"}, -] - [[package]] name = "uuid-utils" version = "0.9.0" @@ -2799,10 +2806,9 @@ multidict = ">=4.0" [extras] askar = ["anoncreds", "aries-askar", "indy-credx", "indy-vdr"] -bbs = ["ursa-bbs-signatures"] didcommv2 = ["didcomm-messaging"] [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "361c4cf9edbbca0f372ebf4c0681c5c3da3794269be365acf16eab5f446a5b2d" +content-hash = "33d6912dd8b2fadbdba80ea3c3440cabc1eaaf817e4199c2b01cdcb828b35be8" diff --git a/pyproject.toml b/pyproject.toml index bd1d93bb07..b4084ff980 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,9 +55,6 @@ indy-credx= { version = "~1.1.1", optional = true } indy-vdr= { version = "~0.4.0", optional = true } anoncreds= { version = "0.2.0", optional = true } -# bbs -ursa-bbs-signatures= { version = "~1.0.1", optional = true } - # didcommv2 didcomm-messaging = {version = "^0.1.1a0", optional = true } @@ -88,10 +85,6 @@ askar = [ "indy-vdr", "anoncreds" ] -bbs = [ - "ursa-bbs-signatures" -] - didcommv2 = [ "didcomm-messaging" ] @@ -132,7 +125,6 @@ markers = [ "indy: Tests specifically relating to Hyperledger Indy SDK support", "indy_credx: Tests specifically relating to Indy-Credx support", "indy_vdr: Tests specifically relating to Indy-VDR support", - "ursa_bbs_signatures: Tests specificaly relating to BBS Signatures support", "postgres: Tests relating to the postgres storage plugin for Indy", ] junit_family = "xunit1" From 5fcb55d21ff0204e95598083ad0e3dbf9fddbe72 Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Thu, 25 Jul 2024 17:52:07 +0000 Subject: [PATCH 2/9] chore: remove Dockerfile and references for indy tests Signed-off-by: Akiff Manji --- docker/Dockerfile.indy | 260 ------------------------------------- docker/manage | 4 - docs/features/DevReadMe.md | 6 - docs/testing/UnitTests.md | 1 - 4 files changed, 271 deletions(-) delete mode 100644 docker/Dockerfile.indy diff --git a/docker/Dockerfile.indy b/docker/Dockerfile.indy deleted file mode 100644 index 0218fef0da..0000000000 --- a/docker/Dockerfile.indy +++ /dev/null @@ -1,260 +0,0 @@ -ARG python_version=3.12.4 -ARG rust_version=1.46 - -# This image could be replaced with an "indy" image from another repo, -# such as the indy-sdk -FROM rust:${rust_version}-slim as indy-builder - -ARG user=indy -ENV HOME="/home/$user" -WORKDIR $HOME -RUN mkdir -p .local/bin .local/etc .local/lib - -# Install environment -RUN apt-get update -y && \ - apt-get install -y --no-install-recommends \ - automake \ - build-essential \ - ca-certificates \ - cmake \ - curl \ - git \ - libbz2-dev \ - libffi-dev \ - libgmp-dev \ - liblzma-dev \ - libncurses5-dev \ - libncursesw5-dev \ - libsecp256k1-dev \ - libsodium-dev \ - libsqlite3-dev \ - libssl-dev \ - libtool \ - libzmq3-dev \ - pkg-config \ - zlib1g-dev && \ - rm -rf /var/lib/apt/lists/* - -# set to --release for smaller, optimized library -ARG indy_build_flags=--release - -ARG indy_version=1.16.0 -ARG indy_sdk_url=https://codeload.github.com/hyperledger/indy-sdk/tar.gz/refs/tags/v${indy_version} - -# make local libs and binaries accessible -ENV PATH="$HOME/.local/bin:$PATH" -ENV LIBRARY_PATH="$HOME/.local/lib:$LIBRARY_PATH" - -# Download and extract indy-sdk -RUN mkdir indy-sdk && \ - curl "${indy_sdk_url}" | tar -xz -C indy-sdk - -# Build and install indy-sdk -WORKDIR $HOME/indy-sdk -RUN cd indy-sdk*/libindy && \ - cargo build ${indy_build_flags} && \ - cp target/*/libindy.so "$HOME/.local/lib" && \ - cargo clean - -# Package python3-indy -RUN tar czvf ../python3-indy.tgz -C indy-sdk*/wrappers/python . - -# grab the latest sdk code for the postgres plug-in -WORKDIR $HOME -ARG indy_postgres_url=${indy_sdk_url} -RUN mkdir indy-postgres && \ - curl "${indy_postgres_url}" | tar -xz -C indy-postgres - -# Build and install postgres_storage plugin -WORKDIR $HOME/indy-postgres -RUN cd indy-sdk*/experimental/plugins/postgres_storage && \ - cargo build ${indy_build_flags} && \ - cp target/*/libindystrgpostgres.so "$HOME/.local/lib" && \ - cargo clean - -# Clean up SDK -WORKDIR $HOME -RUN rm -rf indy-sdk indy-postgres - - -# Indy Base Image -# This image could be replaced with an "indy-python" image from another repo, -# such as the indy-sdk -FROM python:${python_version}-slim-bullseye as indy-base - -ARG uid=1001 -ARG user=indy -ARG indy_version - -ENV HOME="/home/$user" \ - APP_ROOT="$HOME" \ - LC_ALL=C.UTF-8 \ - LANG=C.UTF-8 \ - PIP_NO_CACHE_DIR=off \ - PYTHONUNBUFFERED=1 \ - PYTHONIOENCODING=UTF-8 \ - RUST_LOG=warn \ - SHELL=/bin/bash \ - SUMMARY="indy-python base image" \ - DESCRIPTION="aries-cloudagent provides a base image for running Hyperledger Aries agents in Docker. \ - This image provides all the necessary dependencies to use the indy-sdk in python. Based on Debian bullseye." - -LABEL summary="$SUMMARY" \ - description="$DESCRIPTION" \ - io.k8s.description="$DESCRIPTION" \ - io.k8s.display-name="indy-python $indy_version" \ - name="indy-python" \ - indy-sdk.version="$indy_version" \ - maintainer="" - -# Add indy user -RUN useradd -U -ms /bin/bash -u $uid $user - -# Install environment -RUN apt-get update -y && \ - apt-get install -y --no-install-recommends \ - apt-transport-https \ - ca-certificates \ - build-essential \ - bzip2 \ - curl \ - git \ - less \ - libffi-dev \ - libgmp10 \ - liblzma5 \ - libncurses5 \ - libncursesw5 \ - libsecp256k1-0 \ - libzmq5 \ - net-tools \ - openssl \ - sqlite3 \ - zlib1g && \ - rm -rf /var/lib/apt/lists/* /usr/share/doc/* - -WORKDIR $HOME - -# Copy build results -COPY --from=indy-builder --chown=$user:$user $HOME . - -RUN mkdir -p $HOME/.local/bin - -# Add local binaries and aliases to path -ENV PATH="$HOME/.local/bin:$PATH" - -# Make libraries resolvable by python -ENV LD_LIBRARY_PATH="$HOME/.local/lib:$LD_LIBRARY_PATH" -RUN echo "$HOME/.local/lib" > /etc/ld.so.conf.d/local.conf && ldconfig - -# Install python3-indy -RUN pip install --no-cache-dir python3-indy.tgz && rm python3-indy.tgz - -# - In order to drop the root user, we have to make some directories writable -# to the root group as OpenShift default security model is to run the container -# under random UID. -RUN usermod -a -G 0 $user - -# Create standard directories to allow volume mounting and set permissions -# Note: PIP_NO_CACHE_DIR environment variable should be cleared to allow caching -RUN mkdir -p \ - $HOME/.aries_cloudagent \ - $HOME/.cache/pip/http \ - $HOME/.indy_client/wallet \ - $HOME/.indy_client/pool \ - $HOME/.indy_client/ledger-cache \ - $HOME/ledger/sandbox/data \ - $HOME/log - -# The root group needs access the directories under $HOME/.indy_client and $HOME/.aries_cloudagent for the container to function in OpenShift. -RUN chown -R $user:root $HOME/.indy_client $HOME/.aries_cloudagent && \ - chmod -R ug+rw $HOME/log $HOME/ledger $HOME/.aries_cloudagent $HOME/.cache $HOME/.indy_client - -USER $user - -CMD ["bash"] - - -# ACA-Py Test -# Used to run ACA-Py unit tests with Indy -FROM indy-base as acapy-test - -USER indy - -RUN mkdir src test-reports - -WORKDIR /home/indy/src - -RUN mkdir -p test-reports && chown -R indy:indy test-reports && chmod -R ug+rw test-reports - -ADD ./README.md pyproject.toml ./poetry.lock ./ -COPY ./aries_cloudagent/ ./aries_cloudagent/ - -USER root -RUN pip install --no-cache-dir poetry -RUN poetry install --compile -E "askar bbs indy" - -ADD --chown=indy:root . . -USER indy - -ENTRYPOINT ["/bin/bash", "-c", "poetry run pytest \"$@\"", "--"] - -# ACA-Py Builder -# Build ACA-Py wheel using setuptools -FROM python:${python_version}-slim-bullseye AS acapy-builder - -WORKDIR /src - -ADD . . - -RUN pip install --no-cache-dir poetry -RUN poetry build - - -# ACA-Py Indy -# Install wheel from builder and commit final image -FROM indy-base AS main - -ARG uid=1001 -ARG user=indy -ARG acapy_version -ARG acapy_reqs=[askar,bbs] - -ENV HOME="/home/$user" \ - APP_ROOT="$HOME" \ - LC_ALL=C.UTF-8 \ - LANG=C.UTF-8 \ - PIP_NO_CACHE_DIR=off \ - PYTHONUNBUFFERED=1 \ - PYTHONIOENCODING=UTF-8 \ - RUST_LOG=warn \ - SHELL=/bin/bash \ - SUMMARY="aries-cloudagent image" \ - DESCRIPTION="aries-cloudagent provides a base image for running Hyperledger Aries agents in Docker. \ - This image layers the python implementation of aries-cloudagent $acapy_version. \ - This image includes indy-sdk and supporting libraries." - -LABEL summary="$SUMMARY" \ - description="$DESCRIPTION" \ - io.k8s.description="$DESCRIPTION" \ - io.k8s.display-name="aries-cloudagent $acapy_version" \ - name="aries-cloudagent" \ - acapy.version="$acapy_version" \ - maintainer="" - -# Install ACA-py from the wheel as $user, -# and ensure the permissions on the python 'site-packages' folder are set correctly. -COPY --from=acapy-builder /src/dist/aries_cloudagent*.whl . -RUN aries_cloudagent_package=$(find ./ -name "aries_cloudagent*.whl" | head -n 1) && \ - echo "Installing ${aries_cloudagent_package} ..." && \ - pip install --no-cache-dir --find-links=. ${aries_cloudagent_package}${acapy_reqs} && \ - rm aries_cloudagent*.whl && \ - chmod +rx $(python -m site --user-site) - -# Clean-up unneccessary build dependencies and reduce final image size -USER root -RUN apt-get purge -y --auto-remove build-essential - -USER $user - -ENTRYPOINT ["aca-py"] diff --git a/docker/manage b/docker/manage index 565b3ce1ee..08ba773583 100755 --- a/docker/manage +++ b/docker/manage @@ -89,10 +89,6 @@ test) exportEnvironment "$@" ../scripts/run_tests $(getStartupParams "$@") ;; -test-indy) - exportEnvironment "$@" - ../scripts/run_tests_indy $(getStartupParams "$@") - ;; *) usage ;; diff --git a/docs/features/DevReadMe.md b/docs/features/DevReadMe.md index 0c4bcd84af..d11553c302 100644 --- a/docs/features/DevReadMe.md +++ b/docs/features/DevReadMe.md @@ -216,12 +216,6 @@ To run specific tests pass parameters as defined by [pytest](https://docs.pytest ./scripts/run_tests aries_cloudagent/protocols/connections ``` -To run the tests including [Indy SDK](https://github.com/hyperledger/indy-sdk) and related dependencies, run the script: - -```bash -./scripts/run_tests_indy -``` - ### Running Aries Agent Test Harness Tests You can run a full suite of integration tests using the [Aries Agent Test Harness (AATH)](https://github.com/hyperledger/aries-agent-test-harness). diff --git a/docs/testing/UnitTests.md b/docs/testing/UnitTests.md index a167128a13..3ae1f44b3e 100644 --- a/docs/testing/UnitTests.md +++ b/docs/testing/UnitTests.md @@ -9,7 +9,6 @@ developer @shaangill025. - `./scripts/run_tests` - `./scripts/run_tests aries_cloudagent/protocols/out_of_band/v1_0/tests` -- `./scripts/run_tests_indy` includes Indy specific tests ## Pytest From 03a3b128904a4ee22b3b66ab14e0ed30b7385783 Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Thu, 25 Jul 2024 22:17:59 +0000 Subject: [PATCH 3/9] chore: remove bbs and skip bdd tests requiring it Signed-off-by: Akiff Manji --- .../actions/run-integration-tests/action.yml | 2 +- demo/features/0453-issue-credential.feature | 8 +- demo/features/0454-present-proof.feature | 2 +- demo/run_bdd | 76 +++++++++---------- docker/Dockerfile | 2 +- docker/Dockerfile.demo | 2 +- docker/Dockerfile.run | 2 +- docker/Dockerfile.test | 2 +- docs/testing/INTEGRATION-TESTS.md | 5 +- 9 files changed, 51 insertions(+), 50 deletions(-) diff --git a/.github/actions/run-integration-tests/action.yml b/.github/actions/run-integration-tests/action.yml index a9cf4e0a72..f470b11197 100644 --- a/.github/actions/run-integration-tests/action.yml +++ b/.github/actions/run-integration-tests/action.yml @@ -5,7 +5,7 @@ inputs: TEST_SCOPE: description: "Set of flags that defines the test scope" required: false - default: "-t @PR" + default: "-t @PR -t ~@BBS" IN_LEDGER_URL: description: "URL to the von network ledger browser" required: false diff --git a/demo/features/0453-issue-credential.feature b/demo/features/0453-issue-credential.feature index d53ffde527..f4861d5a79 100644 --- a/demo/features/0453-issue-credential.feature +++ b/demo/features/0453-issue-credential.feature @@ -125,7 +125,7 @@ Feature: RFC 0453 Aries agent issue credential | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | - @T003.1-RFC0453 + @T003.1-RFC0453 @BBS Scenario Outline: Holder accepts a deleted json-ld credential offer Given we have "2" agents | name | role | capabilities | @@ -155,7 +155,7 @@ Feature: RFC 0453 Aries agent issue credential | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | - @T003.1-RFC0453 + @T003.1-RFC0453 @BBS Scenario Outline: Issue a json-ld credential with the Issuer beginning with an offer Given we have "2" agents | name | role | capabilities | @@ -193,7 +193,7 @@ Feature: RFC 0453 Aries agent issue credential | --public-did --cred-type json-ld --multitenant --wallet-type askar-anoncreds | --multitenant --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | - @T003.1-RFC0453 + @T003.1-RFC0453 @BBS Scenario Outline: Issue a json-ld credential with the holder beginning with a request Given we have "2" agents | name | role | capabilities | @@ -223,7 +223,7 @@ Feature: RFC 0453 Aries agent issue credential | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | - @T004-RFC0453 + @T004-RFC0453 @BBS Scenario Outline: Issue a credential with revocation, with the Issuer beginning with an offer, and then revoking the credential Given we have "2" agents | name | role | capabilities | diff --git a/demo/features/0454-present-proof.feature b/demo/features/0454-present-proof.feature index 41a9dece60..9ff26cf208 100644 --- a/demo/features/0454-present-proof.feature +++ b/demo/features/0454-present-proof.feature @@ -90,7 +90,7 @@ Feature: RFC 0454 Aries agent present proof | Acme | --public-did --mediation --multitenant --wallet-type askar-anoncreds | --mediation --multitenant --wallet-type askar-anoncreds | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | - @T001.2-RFC0454 + @T001.2-RFC0454 @BBS Scenario Outline: Present Proof json-ld where the prover does not propose a presentation of the proof and is acknowledged Given we have "3" agents | name | role | capabilities | diff --git a/demo/run_bdd b/demo/run_bdd index 01b3314d52..34faabbaf3 100755 --- a/demo/run_bdd +++ b/demo/run_bdd @@ -38,44 +38,44 @@ do fi continue ;; - --self-attested) - SELF_ATTESTED=1 - continue - ;; - --trace-log) - TRACE_ENABLED=1 - TRACE_TARGET=log - TRACE_TAG=acapy.events - continue - ;; - --trace-http) - TRACE_ENABLED=1 - TRACE_TARGET=http://${TRACE_TARGET_URL}/ - TRACE_TAG=acapy.events - continue - ;; - --webhook-url) - WEBHOOK_TARGET=http://${WEBHOOK_URL} - continue - ;; - --debug-ptvsd) - ENABLE_PTVSD=1 - continue - ;; - --debug-pycharm) - ENABLE_PYDEVD_PYCHARM=1 - continue - ;; - --debug-pycharm-controller-port) - PYDEVD_PYCHARM_CONTROLLER_PORT=$2 - SKIP=1 - continue - ;; - --debug-pycharm-agent-port) - PYDEVD_PYCHARM_AGENT_PORT=$2 - SKIP=1 - continue - ;; + --self-attested) + SELF_ATTESTED=1 + continue + ;; + --trace-log) + TRACE_ENABLED=1 + TRACE_TARGET=log + TRACE_TAG=acapy.events + continue + ;; + --trace-http) + TRACE_ENABLED=1 + TRACE_TARGET=http://${TRACE_TARGET_URL}/ + TRACE_TAG=acapy.events + continue + ;; + --webhook-url) + WEBHOOK_TARGET=http://${WEBHOOK_URL} + continue + ;; + --debug-ptvsd) + ENABLE_PTVSD=1 + continue + ;; + --debug-pycharm) + ENABLE_PYDEVD_PYCHARM=1 + continue + ;; + --debug-pycharm-controller-port) + PYDEVD_PYCHARM_CONTROLLER_PORT=$2 + SKIP=1 + continue + ;; + --debug-pycharm-agent-port) + PYDEVD_PYCHARM_AGENT_PORT=$2 + SKIP=1 + continue + ;; --timing) if [ "$(ls -ld ../log | grep dr..r..rwx)" == "" ]; then echo "Error: To use the --timing parameter, the directory '../log' must exist and all users must be able to write to it." diff --git a/docker/Dockerfile b/docker/Dockerfile index c5e6294c80..4d2f998c06 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -13,7 +13,7 @@ FROM python:${python_version}-slim-bullseye AS main ARG uid=1001 ARG user=aries ARG acapy_version -ARG acapy_reqs=[askar,bbs,didcommv2] +ARG acapy_reqs=[askar,didcommv2] ENV HOME="/home/$user" \ APP_ROOT="$HOME" \ diff --git a/docker/Dockerfile.demo b/docker/Dockerfile.demo index a841f9aa75..c65fc1a2dd 100644 --- a/docker/Dockerfile.demo +++ b/docker/Dockerfile.demo @@ -14,7 +14,7 @@ RUN pip install --no-cache-dir poetry ADD README.md pyproject.toml poetry.lock ./ -RUN poetry install --no-root --no-directory -E "askar bbs" +RUN poetry install --no-root --no-directory -E "askar" ADD aries_cloudagent ./aries_cloudagent ADD scripts ./scripts diff --git a/docker/Dockerfile.run b/docker/Dockerfile.run index d18b976e3a..7f543e399e 100644 --- a/docker/Dockerfile.run +++ b/docker/Dockerfile.run @@ -18,7 +18,7 @@ RUN mkdir -p aries_cloudagent && touch aries_cloudagent/__init__.py ADD pyproject.toml poetry.lock README.md ./ RUN mkdir -p log && chmod -R ug+rw log -RUN poetry install -E "askar bbs" +RUN poetry install -E "askar" ADD . . diff --git a/docker/Dockerfile.test b/docker/Dockerfile.test index 8fa16bb1b6..eaac752647 100644 --- a/docker/Dockerfile.test +++ b/docker/Dockerfile.test @@ -14,7 +14,7 @@ RUN pip install --no-cache-dir poetry ADD ./README.md pyproject.toml ./poetry.lock ./ RUN mkdir aries_cloudagent && touch aries_cloudagent/__init__.py -RUN poetry install --no-directory -E "askar bbs didcommv2" --with=dev +RUN poetry install --no-directory -E "askar didcommv2" --with=dev ADD . . diff --git a/docs/testing/INTEGRATION-TESTS.md b/docs/testing/INTEGRATION-TESTS.md index 89142f68d4..27bbeccc62 100644 --- a/docs/testing/INTEGRATION-TESTS.md +++ b/docs/testing/INTEGRATION-TESTS.md @@ -23,8 +23,9 @@ cd indy-tails-server/docker cd ../.. git clone https://github.com/hyperledger/aries-cloudagent-python cd aries-cloudagent-python/demo -./run_bdd -t ~@taa_required +./run_bdd -t ~@taa_required -t ~@BBS ``` +Note: BBS is not included by default in ACA-Py, therefore if tests are run without `-t ~@BBS` these will fail. Note that an Indy ledger and tails server are both required (these can also be specified using environment variables). @@ -80,7 +81,7 @@ The agents run on a pre-defined set of ports, however occasionally your local sy To override the default port settings: ```bash -AGENT_PORT_OVERRIDE=8030 ./run_bdd -t +AGENT_PORT_OVERRIDE=8030 ./run_bdd -t ``` (Note that since the test run multiple agents you require up to 60 available ports.) From 4c54e7428901cf9e5efd05d680e0aef230fed998 Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Thu, 25 Jul 2024 22:46:08 +0000 Subject: [PATCH 4/9] chore: update integration test workflow Signed-off-by: Akiff Manji --- .github/workflows/integrationtests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integrationtests.yml b/.github/workflows/integrationtests.yml index 9a9b8fc0b8..0fc4159460 100644 --- a/.github/workflows/integrationtests.yml +++ b/.github/workflows/integrationtests.yml @@ -62,4 +62,4 @@ jobs: if: (steps.check_if_release.outputs.is_release == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') uses: ./.github/actions/run-integration-tests with: - TEST_SCOPE: "-t @Release" + TEST_SCOPE: "-t @Release -t ~@BBS" From 5063a25cf4cb4e56d54e274753d9213c27e242e8 Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Fri, 26 Jul 2024 22:05:26 +0000 Subject: [PATCH 5/9] feat: expand json-ld behave tests with ed25519 Signed-off-by: Akiff Manji --- demo/features/0453-issue-credential.feature | 190 +++++++++++++------ demo/features/0454-present-proof.feature | 34 +++- demo/features/steps/0453-issue-credential.py | 38 ++-- demo/features/steps/0454-present-proof.py | 23 +-- demo/runners/support/agent.py | 1 + docs/demo/AliceWantsAJsonCredential.md | 6 +- 6 files changed, 188 insertions(+), 104 deletions(-) diff --git a/demo/features/0453-issue-credential.feature b/demo/features/0453-issue-credential.feature index f4861d5a79..9a6aae587b 100644 --- a/demo/features/0453-issue-credential.feature +++ b/demo/features/0453-issue-credential.feature @@ -26,9 +26,9 @@ Feature: RFC 0453 Aries agent issue credential @Release @WalletType_Askar_AnonCreds @BasicTest @cred_type_vc_di Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Acme_extra | Bob_extra | - | --public-did --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | | | - | --public-did --wallet-type askar-anoncreds --cred-type vc_di | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | | | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Acme_extra | Bob_extra | + | --public-did --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | | | + | --public-did --wallet-type askar-anoncreds --cred-type vc_di | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | | | @Release @WalletType_Askar_AnonCreds @AltTests Examples: @@ -38,15 +38,16 @@ Feature: RFC 0453 Aries agent issue credential @PR @Release @WalletType_Askar @ConnectionTests Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Acme_extra | Bob_extra | - | --did-exchange --emit-did-peer-4 | --did-exchange --emit-did-peer-4 | driverslicense | Data_DL_NormalizedValues | | | - | --did-exchange --reuse-connections --emit-did-peer-4 | --did-exchange --reuse-connections --emit-did-peer-4 | driverslicense | Data_DL_NormalizedValues | | | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Acme_extra | Bob_extra | + | --did-exchange --emit-did-peer-4 | --did-exchange --emit-did-peer-4 | driverslicense | Data_DL_NormalizedValues | | | + | --did-exchange --reuse-connections --emit-did-peer-4 | --did-exchange --reuse-connections --emit-did-peer-4 | driverslicense | Data_DL_NormalizedValues | | | @PR @Release @WalletType_Askar_AnonCreds @ConnectionTests Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Acme_extra | Bob_extra | - | --did-exchange --wallet-type askar-anoncreds --emit-did-peer-4 | --did-exchange --wallet-type askar-anoncreds --emit-did-peer-4 | driverslicense | Data_DL_NormalizedValues | | | - | --did-exchange --wallet-type askar-anoncreds --reuse-connections --emit-did-peer-4| --did-exchange --wallet-type askar-anoncreds --reuse-connections --emit-did-peer-4| driverslicense | Data_DL_NormalizedValues | | | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Acme_extra | Bob_extra | + | --did-exchange --wallet-type askar-anoncreds --emit-did-peer-4 | --did-exchange --wallet-type askar-anoncreds --emit-did-peer-4 | driverslicense | Data_DL_NormalizedValues | | | + | --did-exchange --wallet-type askar-anoncreds --reuse-connections --emit-did-peer-4 | --did-exchange --wallet-type askar-anoncreds --reuse-connections --emit-did-peer-4 | driverslicense | Data_DL_NormalizedValues | | | + @T003-RFC0453 Scenario Outline: Issue a credential with the Issuer beginning with an offer @@ -69,6 +70,7 @@ Feature: RFC 0453 Aries agent issue credential | --public-did --wallet-type askar-anoncreds --cred-type vc_di | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | | | indy | | --public-did --wallet-type askar-anoncreds --cred-type vc_di --revocation | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | | | indy | + @T003-RFC0453 Scenario Outline: Holder accepts a deleted credential offer Given we have "2" agents @@ -87,7 +89,7 @@ Feature: RFC 0453 Aries agent issue credential @WalletType_Askar_AnonCreds Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | | --public-did --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | @WalletType_Askar @@ -97,6 +99,7 @@ Feature: RFC 0453 Aries agent issue credential | --public-did --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | + @T003-RFC0453 Scenario Outline: Issue a credential with the holder sending a request Given we have "2" agents @@ -114,7 +117,7 @@ Feature: RFC 0453 Aries agent issue credential @WalletType_Askar_AnonCreds Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | | --public-did --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | @WalletType_Askar @@ -125,105 +128,181 @@ Feature: RFC 0453 Aries agent issue credential | --public-did --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | - @T003.1-RFC0453 @BBS + @T003.1-RFC0453 Scenario Outline: Holder accepts a deleted json-ld credential offer Given we have "2" agents | name | role | capabilities | | Acme | issuer | | | Bob | holder | | And "Acme" and "Bob" have an existing connection - And "Acme" is ready to issue a json-ld credential for - And "Bob" is ready to receive a json-ld credential - When "Acme" offers and deletes "Bob" a json-ld credential with data + And "Acme" is ready to issue a json-ld credential for with + And "Bob" is ready to receive a json-ld credential with + When "Acme" offers and deletes "Bob" a json-ld credential with data and Then "Bob" has the json-ld credential issued And "Acme" has the exchange completed @PR @Release @WalletType_Askar Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @PR @Release @WalletType_Askar @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | @WalletType_Askar_AnonCreds Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @WalletType_Askar_AnonCreds @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | @WalletType_Askar Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | - | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | - | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @WalletType_Askar @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | - @T003.1-RFC0453 @BBS + + @T003.1-RFC0453 Scenario Outline: Issue a json-ld credential with the Issuer beginning with an offer Given we have "2" agents | name | role | capabilities | | Acme | issuer | | | Bob | holder | | And "Acme" and "Bob" have an existing connection - And "Acme" is ready to issue a json-ld credential for - And "Bob" is ready to receive a json-ld credential - When "Acme" offers "Bob" a json-ld credential with data + And "Acme" is ready to issue a json-ld credential for with + And "Bob" is ready to receive a json-ld credential with + When "Acme" offers "Bob" a json-ld credential with data and Then "Bob" has the json-ld credential issued @PR @Release @WalletType_Askar Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | - @Release @WalletType_Askar + @PR @Release @WalletType_Askar @BBS Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | - | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | - | --public-did --cred-type json-ld --multitenant --log-file | --multitenant | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + @Release @WalletType_Askar + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --multitenant --log-file | --multitenant | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + | --public-did --cred-type json-ld --multitenant --log-file | --multitenant | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @Release @WalletType_Askar @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + | --public-did --cred-type json-ld --multitenant --log-file | --multitenant | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | @Release @WalletType_Askar_AnonCreds Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | - | --public-did --cred-type json-ld --did-exchange --wallet-type askar-anoncreds | --did-exchange --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --did-exchange --wallet-type askar-anoncreds | --did-exchange --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + | --public-did --cred-type json-ld --did-exchange --wallet-type askar-anoncreds | --did-exchange --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @Release @WalletType_Askar_AnonCreds @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + | --public-did --cred-type json-ld --did-exchange --wallet-type askar-anoncreds | --did-exchange --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | @WalletType_Askar_AnonCreds Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld --mediation --wallet-type askar-anoncreds | --mediation --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | - | --public-did --cred-type json-ld --multitenant --wallet-type askar-anoncreds | --multitenant --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --mediation --wallet-type askar-anoncreds | --mediation --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --multitenant --wallet-type askar-anoncreds | --multitenant --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --mediation --wallet-type askar-anoncreds | --mediation --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + | --public-did --cred-type json-ld --multitenant --wallet-type askar-anoncreds | --multitenant --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @WalletType_Askar_AnonCreds @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --mediation --wallet-type askar-anoncreds | --mediation --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + | --public-did --cred-type json-ld --multitenant --wallet-type askar-anoncreds | --multitenant --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | - @T003.1-RFC0453 @BBS + @T003.1-RFC0453 Scenario Outline: Issue a json-ld credential with the holder beginning with a request Given we have "2" agents | name | role | capabilities | | Acme | issuer | | | Bob | holder | | And "Acme" and "Bob" have an existing connection - And "Acme" is ready to issue a json-ld credential for - And "Bob" is ready to receive a json-ld credential - When "Bob" requests a json-ld credential with data from "Acme" + And "Acme" is ready to issue a json-ld credential for with + And "Bob" is ready to receive a json-ld credential with + When "Bob" requests a json-ld credential with data from "Acme" with Then "Bob" has the json-ld credential issued @PR @Release @WalletType_Askar Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @PR @Release @WalletType_Askar @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld | | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | @Release @WalletType_Askar Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | - | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | - | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @Release @WalletType_Askar @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + | --public-did --cred-type json-ld --mediation | --mediation | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | + | --public-did --cred-type json-ld --multitenant | --multitenant | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | @PR @Release @WalletType_Askar_AnonCreds Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | - | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2018 | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | ed25519 | Ed25519Signature2020 | + + @PR @Release @WalletType_Askar_AnonCreds @BBS + Examples: + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Key_type | Sig_type | + | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | bls12381g2 | BbsBlsSignature2020 | - @T004-RFC0453 @BBS + @T004-RFC0453 Scenario Outline: Issue a credential with revocation, with the Issuer beginning with an offer, and then revoking the credential Given we have "2" agents | name | role | capabilities | @@ -243,9 +322,10 @@ Feature: RFC 0453 Aries agent issue credential @Release @WalletType_Askar_AnonCreds Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | | --revocation --public-did --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | + @T004.1-RFC0453 Scenario Outline: Issue a credential with revocation, with the Issuer beginning with an offer, and then revoking the credential Given we have "2" agents @@ -264,5 +344,5 @@ Feature: RFC 0453 Aries agent issue credential @WalletType_Askar_AnonCreds Examples: - | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | + | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | | --revocation --public-did --mediation --wallet-type askar-anoncreds | --mediation --wallet-type askar-anoncreds | driverslicense | Data_DL_NormalizedValues | diff --git a/demo/features/0454-present-proof.feature b/demo/features/0454-present-proof.feature index 9ff26cf208..01cbad508d 100644 --- a/demo/features/0454-present-proof.feature +++ b/demo/features/0454-present-proof.feature @@ -90,7 +90,7 @@ Feature: RFC 0454 Aries agent present proof | Acme | --public-did --mediation --multitenant --wallet-type askar-anoncreds | --mediation --multitenant --wallet-type askar-anoncreds | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | - @T001.2-RFC0454 @BBS + @T001.2-RFC0454 Scenario Outline: Present Proof json-ld where the prover does not propose a presentation of the proof and is acknowledged Given we have "3" agents | name | role | capabilities | @@ -100,23 +100,41 @@ Feature: RFC 0454 Aries agent present proof And "" and "Bob" have an existing connection And "Bob" has an issued json-ld credential from "" And "Faber" and "Bob" have an existing connection - When "Faber" sends a request for json-ld proof presentation to "Bob" + When "Faber" sends a request for json-ld proof presentation to "Bob" with Then "Faber" has the proof verified @PR @Release @WalletType_Askar Examples: - | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | - | Acme | --public-did --cred-type json-ld | | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | + | issuer | Acme1_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | + | Acme | --public-did --cred-type json-ld | | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2018 | + | Acme | --public-did --cred-type json-ld | | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2020 | + + @PR @Release @WalletType_Askar @BBS + Examples: + | issuer | Acme1_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | + | Acme | --public-did --cred-type json-ld | | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | bls12381g2 | BbsBlsSignature2020 | @Release @WalletType_Askar Examples: - | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | - | Faber | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | + | Faber | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2018 | + | Faber | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2020 | + + @Release @WalletType_Askar @BBS + Examples: + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | + | Faber | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | bls12381g2 | BbsBlsSignature2020 | @PR @Release @WalletType_Askar_AnonCreds Examples: - | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | - | Faber | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | + | Faber | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2018 | + | Faber | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2020 | + + @PR @Release @WalletType_Askar_AnonCreds @BBS + Examples: + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | + | Faber | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | bls12381g2 | BbsBlsSignature2020 | @T002-RFC0454 diff --git a/demo/features/steps/0453-issue-credential.py b/demo/features/steps/0453-issue-credential.py index d42d3866cf..fc37444234 100644 --- a/demo/features/steps/0453-issue-credential.py +++ b/demo/features/steps/0453-issue-credential.py @@ -15,8 +15,6 @@ from behave import given, then, when from runners.support.agent import ( DID_METHOD_KEY, - KEY_TYPE_BLS, - SIG_TYPE_BLS, ) @@ -352,12 +350,12 @@ def step_impl(context, holder): assert False -@given('"{issuer}" is ready to issue a json-ld credential for {schema_name}') -def step_impl(context, issuer, schema_name): +@given('"{issuer}" is ready to issue a json-ld credential for {schema_name} with {key_type}') +def step_impl(context, issuer, schema_name, key_type): # create a "did:key" to use as issuer agent = context.active_agents[issuer] - data = {"method": DID_METHOD_KEY, "options": {"key_type": KEY_TYPE_BLS}} + data = {"method": DID_METHOD_KEY, "options": {"key_type": key_type}} new_did = agent_container_POST( agent["agent"], "/wallet/did/create", @@ -368,12 +366,12 @@ def step_impl(context, issuer, schema_name): pass -@given('"{holder}" is ready to receive a json-ld credential') -def step_impl(context, holder): +@given('"{holder}" is ready to receive a json-ld credential with {key_type}') +def step_impl(context, holder, key_type): # create a "did:key" to use as holder identity agent = context.active_agents[holder] - data = {"method": DID_METHOD_KEY, "options": {"key_type": KEY_TYPE_BLS}} + data = {"method": DID_METHOD_KEY, "options": {"key_type": key_type}} new_did = agent_container_POST( agent["agent"], "/wallet/did/create", @@ -385,8 +383,8 @@ def step_impl(context, holder): pass -@when('"{issuer}" offers "{holder}" a json-ld credential with data {credential_data}') -def step_impl(context, issuer, holder, credential_data): +@when('"{issuer}" offers "{holder}" a json-ld credential with data {credential_data} with {sig_type}') +def step_impl(context, issuer, holder, credential_data, sig_type): # initiate a cred exchange with a json-ld credential agent = context.active_agents[issuer] holder_agent = context.active_agents[holder] @@ -418,7 +416,7 @@ def step_impl(context, issuer, holder, credential_data): "birthDate": "1958-07-17", }, }, - "options": {"proofType": SIG_TYPE_BLS}, + "options": {"proofType": sig_type}, } }, } @@ -434,9 +432,9 @@ def step_impl(context, issuer, holder, credential_data): @when( - '"{issuer}" offers and deletes "{holder}" a json-ld credential with data {credential_data}' + '"{issuer}" offers and deletes "{holder}" a json-ld credential with data {credential_data} and {sig_type}' ) -def step_impl(context, issuer, holder, credential_data): +def step_impl(context, issuer, holder, credential_data, sig_type): # initiate a cred exchange with a json-ld credential agent = context.active_agents[issuer] holder_agent = context.active_agents[holder] @@ -481,7 +479,7 @@ def step_impl(context, issuer, holder, credential_data): "birthDate": "1958-07-17", }, }, - "options": {"proofType": SIG_TYPE_BLS}, + "options": {"proofType": sig_type}, } }, } @@ -531,9 +529,9 @@ def step_impl(context, issuer): @when( - '"{holder}" requests a json-ld credential with data {credential_data} from "{issuer}"' + '"{holder}" requests a json-ld credential with data {credential_data} from "{issuer}" with {sig_type}' ) -def step_impl(context, issuer, holder, credential_data): +def step_impl(context, issuer, holder, credential_data, sig_type): issuer_agent = context.active_agents[issuer] holder_agent = context.active_agents[holder] data = { @@ -564,7 +562,7 @@ def step_impl(context, issuer, holder, credential_data): "birthDate": "1958-07-17", }, }, - "options": {"proofType": SIG_TYPE_BLS}, + "options": {"proofType": sig_type}, } }, } @@ -578,9 +576,9 @@ def step_impl(context, issuer, holder, credential_data): @when( - '"{issuer}" offers "{holder}" an anoncreds credential with data {credential_data}' + '"{issuer}" offers "{holder}" an anoncreds credential with data {credential_data} with {sig_type}' ) -def step_impl(context, issuer, holder, credential_data): +def step_impl(context, issuer, holder, credential_data, sig_type): # initiate a cred exchange with an anoncreds credential agent = context.active_agents[issuer] holder_agent = context.active_agents[holder] @@ -612,7 +610,7 @@ def step_impl(context, issuer, holder, credential_data): "birthDate": "1958-07-17", }, }, - "options": {"proofType": SIG_TYPE_BLS}, + "options": {"proofType": sig_type}, } }, } diff --git a/demo/features/steps/0454-present-proof.py b/demo/features/steps/0454-present-proof.py index 030dd42f44..677612e007 100644 --- a/demo/features/steps/0454-present-proof.py +++ b/demo/features/steps/0454-present-proof.py @@ -1,27 +1,12 @@ -from behave import given, when, then -import json -from time import sleep -import time +from behave import when, then from bdd_support.agent_backchannel_client import ( read_proof_req_data, - read_presentation_data, aries_container_request_proof, aries_container_verify_proof, agent_container_POST, async_sleep, ) -from runners.agent_container import AgentContainer -from runners.support.agent import ( - CRED_FORMAT_INDY, - CRED_FORMAT_JSON_LD, - DID_METHOD_SOV, - DID_METHOD_KEY, - KEY_TYPE_ED255, - KEY_TYPE_BLS, - SIG_TYPE_BLS, -) - # This step is defined in another feature file # Given "Acme" and "Bob" have an existing connection @@ -105,9 +90,9 @@ def step_impl(context, verifier): @when( - '"{verifier}" sends a request for json-ld proof presentation {request_for_proof} to "{prover}"' + '"{verifier}" sends a request for json-ld proof presentation {request_for_proof} to "{prover}" with {sig_type}' ) -def step_impl(context, verifier, request_for_proof, prover): +def step_impl(context, verifier, request_for_proof, prover, sig_type): agent = context.active_agents[verifier] prover_agent = context.active_agents[prover] @@ -122,7 +107,7 @@ def step_impl(context, verifier, request_for_proof, prover): }, "presentation_definition": { "id": "32f54163-7166-48f1-93d8-ff217bdb0654", - "format": {"ldp_vp": {"proof_type": [SIG_TYPE_BLS]}}, + "format": {"ldp_vp": {"proof_type": [sig_type]}}, "input_descriptors": [ { "id": "citizenship_input_1", diff --git a/demo/runners/support/agent.py b/demo/runners/support/agent.py index 703261cf34..49d075f928 100644 --- a/demo/runners/support/agent.py +++ b/demo/runners/support/agent.py @@ -78,6 +78,7 @@ KEY_TYPE_ED255 = "ed25519" KEY_TYPE_BLS = "bls12381g2" SIG_TYPE_BLS = "BbsBlsSignature2020" +SIG_TYPE_ED255 = "Ed25519Signature2020" class repr_json: diff --git a/docs/demo/AliceWantsAJsonCredential.md b/docs/demo/AliceWantsAJsonCredential.md index 5a7ed8f8ff..dfa8476ec0 100644 --- a/docs/demo/AliceWantsAJsonCredential.md +++ b/docs/demo/AliceWantsAJsonCredential.md @@ -42,8 +42,10 @@ Now open up two browser windows to the [Faber](http://localhost:8021/api/doc) an Using the Faber admin api, you have to create a DID with the appropriate: - DID method ("key" or "sov") -- key type "ed25519" or "bls12381g2" (corresponding to signature types "Ed25519Signature2018" or "BbsBlsSignature2020") -- if you use DID method "sov" you must use key type "ed25519" + - if you use DID method "sov" you must use key type "ed25519" +- Either one of the following key types: + - "ed25519" (corresponding to signature types "Ed25519Signature2018" or "Ed25519Signature2020") + - "bls12381g2" (corresponding to signature type "BbsBlsSignature2020") Note that "did:sov" must be a public DID (i.e. registered on the ledger) but "did:key" is not. From 878e4db06495b0af44fd5774770b3125168b191e Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Mon, 29 Jul 2024 23:14:43 +0000 Subject: [PATCH 6/9] chore: update docs and build scripts for bbs specific artifacts Signed-off-by: Akiff Manji --- .devcontainer/Dockerfile | 2 +- .devcontainer/post-install.sh | 1 + .github/workflows/publish.yml | 18 ++++++++++ demo/run_bdd | 22 ++++++++----- docker/Dockerfile | 11 ++++--- docker/Dockerfile.demo | 3 +- docker/Dockerfile.run | 3 +- docker/Dockerfile.test | 3 +- docker/manage | 4 +++ docs/deploying/BBSSignatures.md | 27 +++++++++++++++ docs/testing/INTEGRATION-TESTS.md | 18 ++++++++++ docs/testing/UnitTests.md | 8 +++++ poetry.lock | 55 +++++++++++++++++++------------ pyproject.toml | 11 +++++-- scripts/run_docker | 10 +++++- scripts/run_tests | 10 +++++- 16 files changed, 163 insertions(+), 43 deletions(-) create mode 100644 docs/deploying/BBSSignatures.md diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 7c00242956..df92956262 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -17,5 +17,5 @@ RUN curl -sSL https://install.python-poetry.org | python3 - \ COPY pyproject.toml poetry.lock ./ RUN poetry config virtualenvs.create false \ - && poetry install --no-root --no-interaction --all-extras \ + && poetry install --no-root --no-interaction -E "askar didcommv2" \ && rm -rf /root/.cache/pypoetry diff --git a/.devcontainer/post-install.sh b/.devcontainer/post-install.sh index 0a79696550..c106cb9032 100644 --- a/.devcontainer/post-install.sh +++ b/.devcontainer/post-install.sh @@ -27,6 +27,7 @@ markers = [ "indy: Tests specifically relating to Hyperledger Indy SDK support", "indy_credx: Tests specifically relating to Indy-Credx support", "indy_vdr: Tests specifically relating to Indy-VDR support", + "ursa_bbs_signatures: Tests specificaly relating to BBS Signatures support", "postgres: Tests relating to the postgres storage plugin for Indy"] junit_family = "xunit1" asyncio_mode = auto diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9a0b9a88a0..6d589bfe99 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -100,6 +100,24 @@ jobs: cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max platforms: ${{ env.PLATFORMS }} + - name: Build and Push extended Image to ghcr.io + uses: docker/build-push-action@v5 + with: + push: true + context: . + file: docker/Dockerfile + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + target: main + build-args: | + python_version=${{ matrix.python-version }} + acapy_name=aries-cloudagent-bbs + acapy_version=${{ inputs.tag || github.event.release.tag_name }} + acapy_reqs=[askar,bbs,didcommv2] + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max + platforms: ${{ env.PLATFORMS }} + # Temp fix # https://github.com/docker/build-push-action/issues/252 # https://github.com/moby/buildkit/issues/1896 diff --git a/demo/run_bdd b/demo/run_bdd index 34faabbaf3..49ba439eaa 100755 --- a/demo/run_bdd +++ b/demo/run_bdd @@ -4,6 +4,7 @@ shopt -s nocasematch cd $(dirname $0) +ACAPY_REQS="[askar,didcommv2]" AGENT="agent_container" ARGS="" @@ -98,6 +99,11 @@ do fi continue ;; + --all-extras) + ACAPY_REQS="[askar,bbs,didcommv2]" + ALL_EXTRAS=1 + continue + ;; --help) cat <; --debug-pycharm-controller-port - --debug-pycharm; --debug-ptvsd + --trace-log - log trace events to the standard log file + --trace-http - log trace events to an http endpoint specified in env var TRACE_TARGET_URL + --self-attested - include a self-attested attribute in the proof request/response + --webhook-url - send events to an http endpoint specified in env var WEBHOOK_URL + debug options: --debug-pycharm-agent-port ; --debug-pycharm-controller-port --debug-pycharm; --debug-ptvsd EOF exit 0 @@ -133,8 +139,8 @@ if [ ! -z "$AGENT_PORT_OVERRIDE" ]; then fi echo "Preparing agent image..." -docker build -q -t acapy-base -f ../docker/Dockerfile .. || exit 1 -docker build -q -t faber-alice-demo -f ../docker/Dockerfile.demo --build-arg from_image=acapy-base .. || exit 1 +docker build -q -t acapy-base -f ../docker/Dockerfile --build-arg acapy_reqs=$ACAPY_REQS .. || exit 1 +docker build -q -t faber-alice-demo -f ../docker/Dockerfile.demo --build-arg from_image=acapy-base --build-arg all_extras=$ALL_EXTRAS .. || exit 1 docker build -q -t aries-bdd-image -f ../docker/Dockerfile.bdd .. || exit 1 if [ ! -z "$DOCKERHOST" ]; then diff --git a/docker/Dockerfile b/docker/Dockerfile index 4d2f998c06..a76fb21266 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -12,6 +12,7 @@ FROM python:${python_version}-slim-bullseye AS main ARG uid=1001 ARG user=aries +ARG acapy_name="aries-cloudagent" ARG acapy_version ARG acapy_reqs=[askar,didcommv2] @@ -24,15 +25,15 @@ ENV HOME="/home/$user" \ PYTHONIOENCODING=UTF-8 \ RUST_LOG=warn \ SHELL=/bin/bash \ - SUMMARY="aries-cloudagent image" \ - DESCRIPTION="aries-cloudagent provides a base image for running Hyperledger Aries agents in Docker. \ - This image layers the python implementation of aries-cloudagent $acapy_version. Based on Debian Buster." + SUMMARY="$acapy_name image" \ + DESCRIPTION="$acapy_name provides a base image for running Hyperledger Aries agents in Docker. \ + This image layers the python implementation of $acapy_name $acapy_version. Based on Debian Buster." LABEL summary="$SUMMARY" \ description="$DESCRIPTION" \ io.k8s.description="$DESCRIPTION" \ - io.k8s.display-name="aries-cloudagent $acapy_version" \ - name="aries-cloudagent" \ + io.k8s.display-name="$acapy_name $acapy_version" \ + name=$acapy_name \ acapy.version="$acapy_version" \ maintainer="" diff --git a/docker/Dockerfile.demo b/docker/Dockerfile.demo index c65fc1a2dd..71d51cfd1e 100644 --- a/docker/Dockerfile.demo +++ b/docker/Dockerfile.demo @@ -14,7 +14,8 @@ RUN pip install --no-cache-dir poetry ADD README.md pyproject.toml poetry.lock ./ -RUN poetry install --no-root --no-directory -E "askar" +ARG all_extras=0 +RUN if ! [ -z ${all_extras} ]; then poetry install --no-root --no-directory --all-extras; else poetry install --no-root --no-directory -E "askar didcommv2"; fi ADD aries_cloudagent ./aries_cloudagent ADD scripts ./scripts diff --git a/docker/Dockerfile.run b/docker/Dockerfile.run index 7f543e399e..ae993f31a8 100644 --- a/docker/Dockerfile.run +++ b/docker/Dockerfile.run @@ -18,7 +18,8 @@ RUN mkdir -p aries_cloudagent && touch aries_cloudagent/__init__.py ADD pyproject.toml poetry.lock README.md ./ RUN mkdir -p log && chmod -R ug+rw log -RUN poetry install -E "askar" +ARG all_extras=0 +RUN if ! [ -z ${all_extras} ]; then poetry install --all-extras; else poetry install -E "askar didcommv2"; fi ADD . . diff --git a/docker/Dockerfile.test b/docker/Dockerfile.test index eaac752647..3002be063a 100644 --- a/docker/Dockerfile.test +++ b/docker/Dockerfile.test @@ -14,7 +14,8 @@ RUN pip install --no-cache-dir poetry ADD ./README.md pyproject.toml ./poetry.lock ./ RUN mkdir aries_cloudagent && touch aries_cloudagent/__init__.py -RUN poetry install --no-directory -E "askar didcommv2" --with=dev +ARG all_extras=0 +RUN if ! [ -z ${all_extras} ]; then poetry install --no-directory --all-extras --with=dev; else poetry install --no-directory -E "askar didcommv2" --with=dev; fi ADD . . diff --git a/docker/manage b/docker/manage index 08ba773583..8ff166e298 100755 --- a/docker/manage +++ b/docker/manage @@ -89,6 +89,10 @@ test) exportEnvironment "$@" ../scripts/run_tests $(getStartupParams "$@") ;; +test-all) + exportEnvironment "$@" + ../scripts/run_tests --all-extras $(getStartupParams "$@") + ;; *) usage ;; diff --git a/docs/deploying/BBSSignatures.md b/docs/deploying/BBSSignatures.md new file mode 100644 index 0000000000..b7f726766f --- /dev/null +++ b/docs/deploying/BBSSignatures.md @@ -0,0 +1,27 @@ +# BBS+ Signatures Support + +ACA-Py includes support for BBS+ Signatures out of the box through an optional dependency, however the implementation for it is out of date and does not currently support ARM (aarch64 or arm64) architecture (e.g. Apple devices with M1 chips or above). + +The base release images of ACA-Py exclude the installation of the `bbs` library to maintain widespread support accross various architectures. + +If you require BBS+ for your deployment an optional "extended" ACA-Py image has been released (`aries-cloudagent-bbs`) that includes BBS+, with the caveat that it may not successfully install on ARM architecture. + +## Development and Testing + +### Developer setup + +If you are a contributor or are developing using a local build of ACA-Py and need BBS+, the easiest way to include `bbs` is to install it with `poetry` (again with the caveat that it may not successfully install on ARM Architecture). The `--all-extras` flag will install all of `askar`, `bbs` and `didcommv2`: + +```shell +poetry install --all-extras +``` + +### Testing + +WARNNG: if you do NOT have `bbs` installed you should exclude the BBS+ specific integration tests from running with the tag `~@BBS` otherwise they will fail: + +```shell +./run_bdd -t ~@BBS +``` + +See the [Unit](../testing/UnitTests.md) and [Integration](../testing/INTEGRATION-TESTS.md) testing docs for more information on how to run tests. diff --git a/docs/testing/INTEGRATION-TESTS.md b/docs/testing/INTEGRATION-TESTS.md index 27bbeccc62..38344a0cbb 100644 --- a/docs/testing/INTEGRATION-TESTS.md +++ b/docs/testing/INTEGRATION-TESTS.md @@ -86,6 +86,24 @@ AGENT_PORT_OVERRIDE=8030 ./run_bdd -t (Note that since the test run multiple agents you require up to 60 available ports.) +### Note on BBS+ Signatures + +ACA-Py does not come installed with the `bbs` library by default therefore integation tests involving BBS+ signatures (tagged with @BBS) will fail unless excluded. + +You can exclude BBS+ tests from running with the tag `~@BBS`: + +```bash + run_bdd -t ~@BBS +``` + +If you want to run all tests including BBS+ tests you should include the `--all-extras` flag: + +```bash + run_bdd --all-extras +``` + +Note: The `bbs` library may not install on ARM (i.e. aarch64 or arm64) architecture therefore YMMV with testing BBS+ on ARM based devices. + ## Aca-py Integration Tests vs Aries Agent Test Harness (AATH) Aca-py Behave tests are based on the interoperability tests that are implemented in the [Aries Agent Test Harness (AATH)](https://github.com/hyperledger/aries-agent-test-harness). Both use [Behave (Gherkin)](https://behave.readthedocs.io/en/stable/) to execute tests against a running aca-py agent (or in the case of AATH, against any compatible Aries agent), however the aca-py integration tests focus on aca-py specific features. diff --git a/docs/testing/UnitTests.md b/docs/testing/UnitTests.md index 3ae1f44b3e..b00c1d845b 100644 --- a/docs/testing/UnitTests.md +++ b/docs/testing/UnitTests.md @@ -10,6 +10,14 @@ developer @shaangill025. - `./scripts/run_tests` - `./scripts/run_tests aries_cloudagent/protocols/out_of_band/v1_0/tests` +Note: The `bbs` library is not installed with ACA-Py by default, therefore unit tests involving BBS+ signatures are disabled. To run BBS+ tests add the `--all-extras` flag: + +```bash + ./scripts/run_tests --all-extras +``` + +Note: The `bbs` library may not install on ARM (i.e. aarch64 or arm64) architecture therefore YMMV with testing BBS+ on ARM based devices. + ## Pytest Example: aries_cloudagent/core/tests/test_event_bus.py diff --git a/poetry.lock b/poetry.lock index 3d2ab06827..bbee3e7e98 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2407,49 +2407,49 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.8" +version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_applehelp-1.0.8-py3-none-any.whl", hash = "sha256:cb61eb0ec1b61f349e5cc36b2028e9e7ca765be05e49641c97241274753067b4"}, - {file = "sphinxcontrib_applehelp-1.0.8.tar.gz", hash = "sha256:c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619"}, + {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, + {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.6" +version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_devhelp-1.0.6-py3-none-any.whl", hash = "sha256:6485d09629944511c893fa11355bda18b742b83a2b181f9a009f7e500595c90f"}, - {file = "sphinxcontrib_devhelp-1.0.6.tar.gz", hash = "sha256:9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3"}, + {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, + {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.6" +version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_htmlhelp-2.0.6-py3-none-any.whl", hash = "sha256:1b9af5a2671a61410a868fce050cab7ca393c218e6205cbc7f590136f207395c"}, - {file = "sphinxcontrib_htmlhelp-2.0.6.tar.gz", hash = "sha256:c6597da06185f0e3b4dc952777a04200611ef563882e0c244d27a15ee22afa73"}, + {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, + {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["html5lib", "pytest"] @@ -2483,33 +2483,33 @@ test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.8" +version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_qthelp-1.0.8-py3-none-any.whl", hash = "sha256:323d6acc4189af76dfe94edd2a27d458902319b60fcca2aeef3b2180c106a75f"}, - {file = "sphinxcontrib_qthelp-1.0.8.tar.gz", hash = "sha256:db3f8fa10789c7a8e76d173c23364bdf0ebcd9449969a9e6a3dd31b8b7469f03"}, + {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, + {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["defusedxml (>=0.7.1)", "pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.10" +version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false python-versions = ">=3.9" files = [ - {file = "sphinxcontrib_serializinghtml-1.1.10-py3-none-any.whl", hash = "sha256:326369b8df80a7d2d8d7f99aa5ac577f51ea51556ed974e7716cfd4fca3f6cb7"}, - {file = "sphinxcontrib_serializinghtml-1.1.10.tar.gz", hash = "sha256:93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f"}, + {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, + {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, ] [package.extras] -lint = ["docutils-stubs", "flake8", "mypy"] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] @@ -2563,6 +2563,18 @@ h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] +[[package]] +name = "ursa-bbs-signatures" +version = "1.0.1" +description = "" +optional = true +python-versions = ">=3.6.3" +files = [ + {file = "ursa_bbs_signatures-1.0.1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:245701789df0d6cda09faa6194b590c0ce6513b39d80fe8f1fe2a52b69a4b520"}, + {file = "ursa_bbs_signatures-1.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:79f410a1f89855a4149af7adecaa22a5f427640f5d093f53670657394a9f9ef4"}, + {file = "ursa_bbs_signatures-1.0.1-py3-none-win_amd64.whl", hash = "sha256:ffd5f8cf1518c706b372feccac5d727a9d6c64a68f54f4d109133c4101108368"}, +] + [[package]] name = "uuid-utils" version = "0.9.0" @@ -2806,9 +2818,10 @@ multidict = ">=4.0" [extras] askar = ["anoncreds", "aries-askar", "indy-credx", "indy-vdr"] +bbs = ["ursa-bbs-signatures"] didcommv2 = ["didcomm-messaging"] [metadata] lock-version = "2.0" python-versions = "^3.12" -content-hash = "33d6912dd8b2fadbdba80ea3c3440cabc1eaaf817e4199c2b01cdcb828b35be8" +content-hash = "361c4cf9edbbca0f372ebf4c0681c5c3da3794269be365acf16eab5f446a5b2d" diff --git a/pyproject.toml b/pyproject.toml index b4084ff980..f07855ed9f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,10 +55,12 @@ indy-credx= { version = "~1.1.1", optional = true } indy-vdr= { version = "~0.4.0", optional = true } anoncreds= { version = "0.2.0", optional = true } +# bbs +ursa-bbs-signatures = { version = "~1.0.1", optional = true } + # didcommv2 didcomm-messaging = {version = "^0.1.1a0", optional = true } - [tool.poetry.group.dev.dependencies] pre-commit = "~3.7.0" # Sync with version in .pre-commit-config.yaml @@ -85,6 +87,9 @@ askar = [ "indy-vdr", "anoncreds" ] +bbs = [ + "ursa-bbs-signatures" +] didcommv2 = [ "didcomm-messaging" ] @@ -125,8 +130,8 @@ markers = [ "indy: Tests specifically relating to Hyperledger Indy SDK support", "indy_credx: Tests specifically relating to Indy-Credx support", "indy_vdr: Tests specifically relating to Indy-VDR support", - "postgres: Tests relating to the postgres storage plugin for Indy", -] + "ursa_bbs_signatures: Tests specificaly relating to BBS Signatures support", + "postgres: Tests relating to the postgres storage plugin for Indy"] junit_family = "xunit1" asyncio_mode = "auto" diff --git a/scripts/run_docker b/scripts/run_docker index c8657576a3..9ead959230 100755 --- a/scripts/run_docker +++ b/scripts/run_docker @@ -9,9 +9,17 @@ if [[ $OSTYPE == 'darwin'* ]]; then fi cd "$(dirname "$0")" || exit 1 + +for arg in "$@"; do + if [ "$arg" = "--all-extras" ]; then + ALL_EXTRAS=1 + shift # remove all-extras flag from remaining args + fi +done + CONTAINER_RUNTIME="${CONTAINER_RUNTIME:-docker}" -$CONTAINER_RUNTIME build --platform linux/amd64 -t aries-cloudagent-run -f ../docker/Dockerfile.run .. || exit 1 +$CONTAINER_RUNTIME build --platform linux/amd64 -t aries-cloudagent-run -f ../docker/Dockerfile.run --build-arg all_extras=$ALL_EXTRAS .. || exit 1 ARGS="" for PORT in $PORTS; do diff --git a/scripts/run_tests b/scripts/run_tests index 898d2361dc..5f6ede8dad 100755 --- a/scripts/run_tests +++ b/scripts/run_tests @@ -7,8 +7,15 @@ FAST=${FAST:-0} cd "$(dirname "$0")" || exit +for arg in "$@"; do + if [ "$arg" = "--all-extras" ]; then + ALL_EXTRAS=1 + shift # remove all-extras flag from remaining args + fi +done + if [[ $FAST -eq 0 ]]; then - $CONTAINER_RUNTIME build --platform linux/amd64 -t aries-cloudagent-test -f ../docker/Dockerfile.test .. || exit 1 + $CONTAINER_RUNTIME build --platform linux/amd64 -t aries-cloudagent-test -f ../docker/Dockerfile.test --build-arg "all_extras=$ALL_EXTRAS" .. || exit 1 fi DOCKER_ARGS="" @@ -20,6 +27,7 @@ for arg in "$@"; do #shift # remove debug flag from pytest args. fi done + if [ -n "${ENABLE_PTVSD}" ]; then DOCKER_ARGS="${DOCKER_ARGS} -e ENABLE_PTVSD=\"${ENABLE_PTVSD}\" -p $PTVSD_PORT:$PTVSD_PORT" fi From 1999903c3e1e96a8ada0fd31f2a29bed35a01be6 Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Tue, 30 Jul 2024 12:52:50 -0700 Subject: [PATCH 7/9] fix: failing tests Signed-off-by: Akiff Manji --- demo/features/0454-present-proof.feature | 26 +++----------------- demo/features/steps/0453-issue-credential.py | 13 +++++----- 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/demo/features/0454-present-proof.feature b/demo/features/0454-present-proof.feature index 01cbad508d..36973d828f 100644 --- a/demo/features/0454-present-proof.feature +++ b/demo/features/0454-present-proof.feature @@ -98,39 +98,21 @@ Feature: RFC 0454 Aries agent present proof | Faber | verifier | | | Bob | prover | | And "" and "Bob" have an existing connection - And "Bob" has an issued json-ld credential from "" + And "Bob" has an issued json-ld credential from "" with and And "Faber" and "Bob" have an existing connection When "Faber" sends a request for json-ld proof presentation to "Bob" with Then "Faber" has the proof verified - @PR @Release @WalletType_Askar - Examples: - | issuer | Acme1_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | - | Acme | --public-did --cred-type json-ld | | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2018 | - | Acme | --public-did --cred-type json-ld | | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2020 | - @PR @Release @WalletType_Askar @BBS Examples: - | issuer | Acme1_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | - | Acme | --public-did --cred-type json-ld | | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | bls12381g2 | BbsBlsSignature2020 | - - @Release @WalletType_Askar - Examples: - | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | - | Faber | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2018 | - | Faber | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2020 | + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | + | Acme | --public-did --cred-type json-ld | | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | bls12381g2 | BbsBlsSignature2020 | @Release @WalletType_Askar @BBS Examples: - | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | + | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | | Faber | --public-did --cred-type json-ld --did-exchange | --did-exchange | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | bls12381g2 | BbsBlsSignature2020 | - @PR @Release @WalletType_Askar_AnonCreds - Examples: - | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | - | Faber | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2018 | - | Faber | --public-did --cred-type json-ld --wallet-type askar-anoncreds | --wallet-type askar-anoncreds | driverslicense_v2 | Data_DL_MaxValues | DL_age_over_19_v2 | ed25519 | Ed25519Signature2020 | - @PR @Release @WalletType_Askar_AnonCreds @BBS Examples: | issuer | Acme_capabilities | Bob_capabilities | Schema_name | Credential_data | Proof_request | Key_type | Sig_type | diff --git a/demo/features/steps/0453-issue-credential.py b/demo/features/steps/0453-issue-credential.py index fc37444234..98a92ad924 100644 --- a/demo/features/steps/0453-issue-credential.py +++ b/demo/features/steps/0453-issue-credential.py @@ -383,7 +383,7 @@ def step_impl(context, holder, key_type): pass -@when('"{issuer}" offers "{holder}" a json-ld credential with data {credential_data} with {sig_type}') +@when('"{issuer}" offers "{holder}" a json-ld credential with data {credential_data} and {sig_type}') def step_impl(context, issuer, holder, credential_data, sig_type): # initiate a cred exchange with a json-ld credential agent = context.active_agents[issuer] @@ -644,26 +644,27 @@ def step_impl(context, holder): @given( - '"{holder}" has an issued json-ld {schema_name} credential {credential_data} from "{issuer}"' + '"{holder}" has an issued json-ld {schema_name} credential {credential_data} from "{issuer}" with {key_type} and {sig_type}' ) -def step_impl(context, holder, schema_name, credential_data, issuer): +def step_impl(context, holder, schema_name, credential_data, issuer, key_type, sig_type): context.execute_steps( ''' Given "''' + issuer + """" is ready to issue a json-ld credential for """ - + schema_name + + schema_name + " with " + key_type + ''' And "''' + holder - + """" is ready to receive a json-ld credential """ + + """" is ready to receive a json-ld credential with """ + + key_type + ''' When "''' + issuer + '''" offers "''' + holder + """" a json-ld credential with data """ - + credential_data + + credential_data + " and " + sig_type + ''' Then "''' + holder From fdf9140e952459679d70dd60dbbfb7cc6c6fd682 Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Tue, 30 Jul 2024 22:20:04 +0000 Subject: [PATCH 8/9] chore: update docs Signed-off-by: Akiff Manji --- docs/deploying/BBSSignatures.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/deploying/BBSSignatures.md b/docs/deploying/BBSSignatures.md index b7f726766f..812423089a 100644 --- a/docs/deploying/BBSSignatures.md +++ b/docs/deploying/BBSSignatures.md @@ -1,16 +1,16 @@ # BBS+ Signatures Support -ACA-Py includes support for BBS+ Signatures out of the box through an optional dependency, however the implementation for it is out of date and does not currently support ARM (aarch64 or arm64) architecture (e.g. Apple devices with M1 chips or above). +ACA-Py has supported BBS+ Signatures for some time. However, the dependency that is used (`bbs`) does not support ARM architecture, and its inclusion in the default ACA-Py artifacts mean that developers using ARM-based hardware (such as Apple M1 Macs or later) cannot run ACA-Py "out-of-the-box". We feel that providing a better developer experience by supporting ARM architecture is more important than BBS+ Signature support at this time. As such, we have removed the BBS+ dependency from the base ACA-Py artifacts, and made it an add-on, that those using ACA-Py with BBS+ must take extra steps to build their own artifacts. This file describes how to do those extra steps. -The base release images of ACA-Py exclude the installation of the `bbs` library to maintain widespread support accross various architectures. +Regarding future support for BBS+ Signatures in ACA-Py, there is currently a lot of work going on in developing implementations and BBS+-based Verifiable Credential standards. However, at the time of this release, there is not an obvious approach to an implementation to use in ACA-Py that includes ARM support. As a result, we will hold off on updating the BBS+ Signatures support in ACA-Py until the standards and path forward clarify. In the meantime, maintainers of ACA-Py plan to continue to do all we can to push for newer and better ZKP-based Verifiable Credential standards. -If you require BBS+ for your deployment an optional "extended" ACA-Py image has been released (`aries-cloudagent-bbs`) that includes BBS+, with the caveat that it may not successfully install on ARM architecture. +If you require BBS+ for your deployment an optional "extended" ACA-Py image has been released (`aries-cloudagent-bbs`) that includes BBS+, with the caveat that it will very likely not install on ARM architecture. ## Development and Testing ### Developer setup -If you are a contributor or are developing using a local build of ACA-Py and need BBS+, the easiest way to include `bbs` is to install it with `poetry` (again with the caveat that it may not successfully install on ARM Architecture). The `--all-extras` flag will install all of `askar`, `bbs` and `didcommv2`: +If you are a contributor or are developing using a local build of ACA-Py and need BBS+, the easiest way to include it is to install the optional dependency `bbs` it with `poetry` (again with the caveat that it will very likely not install on ARM architecture). The `--all-extras` flag will install the `bbs` optional dependency in ACA-Py: ```shell poetry install --all-extras From 03888e456005a37b5ca11fcca33137c502e668ae Mon Sep 17 00:00:00 2001 From: Akiff Manji Date: Wed, 31 Jul 2024 14:14:50 +0000 Subject: [PATCH 9/9] chore: update docs Signed-off-by: Akiff Manji --- demo/run_bdd | 2 +- docs/deploying/BBSSignatures.md | 12 ++++++------ docs/testing/INTEGRATION-TESTS.md | 13 ++++++------- docs/testing/UnitTests.md | 4 ++-- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/demo/run_bdd b/demo/run_bdd index 49ba439eaa..7a1d46c755 100755 --- a/demo/run_bdd +++ b/demo/run_bdd @@ -111,7 +111,7 @@ Usage: ./run_bdd [OPTIONS] - Options: - --all-extras - run tests that include BBS+ Signatures, Askar, and DIDComm V2 + --all-extras - run tests that include BBS Signatures, Askar, and DIDComm V2 --events - display on the terminal the webhook events from the ACA-Py agent. --timing - at the end of the run, display timing; relevant to the "performance" agent. --bg - run the agent in the background; for use when using OpenAPI/Swagger interface diff --git a/docs/deploying/BBSSignatures.md b/docs/deploying/BBSSignatures.md index 812423089a..b03be5e2a2 100644 --- a/docs/deploying/BBSSignatures.md +++ b/docs/deploying/BBSSignatures.md @@ -1,16 +1,16 @@ -# BBS+ Signatures Support +# BBS Signatures Support -ACA-Py has supported BBS+ Signatures for some time. However, the dependency that is used (`bbs`) does not support ARM architecture, and its inclusion in the default ACA-Py artifacts mean that developers using ARM-based hardware (such as Apple M1 Macs or later) cannot run ACA-Py "out-of-the-box". We feel that providing a better developer experience by supporting ARM architecture is more important than BBS+ Signature support at this time. As such, we have removed the BBS+ dependency from the base ACA-Py artifacts, and made it an add-on, that those using ACA-Py with BBS+ must take extra steps to build their own artifacts. This file describes how to do those extra steps. +ACA-Py has supported BBS Signatures for some time. However, the dependency that is used (`bbs`) does not support the ARM architecture, and its inclusion in the default ACA-Py artifacts mean that developers using ARM-based hardware (such as Apple M1 Macs or later) cannot run ACA-Py "out-of-the-box". We feel that providing a better developer experience by supporting the ARM architecture is more important than BBS Signature support at this time. As such, we have removed the BBS dependency from the base ACA-Py artifacts and made it an add-on that those using ACA-Py with BBS must take extra steps to build their own artifacts. This file describes how to do those extra steps. -Regarding future support for BBS+ Signatures in ACA-Py, there is currently a lot of work going on in developing implementations and BBS+-based Verifiable Credential standards. However, at the time of this release, there is not an obvious approach to an implementation to use in ACA-Py that includes ARM support. As a result, we will hold off on updating the BBS+ Signatures support in ACA-Py until the standards and path forward clarify. In the meantime, maintainers of ACA-Py plan to continue to do all we can to push for newer and better ZKP-based Verifiable Credential standards. +Regarding future support for BBS Signatures in ACA-Py. There is currently a lot of work going on in developing implementations and BBS-based Verifiable Credential standards. However, at the time of this release, there is not an obvious approach to an implementation to use in ACA-Py that includes ARM support. As a result, we will hold off on updating the BBS Signatures support in ACA-Py until the standards and path forward clarify. In the meantime, maintainers of ACA-Py plan to continue to do all we can to push for newer and better ZKP-based Verifiable Credential standards. -If you require BBS+ for your deployment an optional "extended" ACA-Py image has been released (`aries-cloudagent-bbs`) that includes BBS+, with the caveat that it will very likely not install on ARM architecture. +If you require BBS for your deployment an optional "extended" ACA-Py image has been released (`aries-cloudagent-bbs`) that includes BBS, with the caveat that it will very likely not install on ARM architecture. ## Development and Testing ### Developer setup -If you are a contributor or are developing using a local build of ACA-Py and need BBS+, the easiest way to include it is to install the optional dependency `bbs` it with `poetry` (again with the caveat that it will very likely not install on ARM architecture). The `--all-extras` flag will install the `bbs` optional dependency in ACA-Py: +If you are a contributor or are developing using a local build of ACA-Py and need BBS, the easiest way to include it is to install the optional dependency `bbs` with `poetry` (again with the caveat that it will very likely not install on ARM architecture). The `--all-extras` flag will install the `bbs` optional dependency in ACA-Py: ```shell poetry install --all-extras @@ -18,7 +18,7 @@ poetry install --all-extras ### Testing -WARNNG: if you do NOT have `bbs` installed you should exclude the BBS+ specific integration tests from running with the tag `~@BBS` otherwise they will fail: +WARNNG: if you do NOT have `bbs` installed you should exclude the BBS specific integration tests from running with the tag `~@BBS` otherwise they will fail: ```shell ./run_bdd -t ~@BBS diff --git a/docs/testing/INTEGRATION-TESTS.md b/docs/testing/INTEGRATION-TESTS.md index 38344a0cbb..dad1955b6c 100644 --- a/docs/testing/INTEGRATION-TESTS.md +++ b/docs/testing/INTEGRATION-TESTS.md @@ -23,9 +23,8 @@ cd indy-tails-server/docker cd ../.. git clone https://github.com/hyperledger/aries-cloudagent-python cd aries-cloudagent-python/demo -./run_bdd -t ~@taa_required -t ~@BBS +./run_bdd -t ~@taa_required ``` -Note: BBS is not included by default in ACA-Py, therefore if tests are run without `-t ~@BBS` these will fail. Note that an Indy ledger and tails server are both required (these can also be specified using environment variables). @@ -86,23 +85,23 @@ AGENT_PORT_OVERRIDE=8030 ./run_bdd -t (Note that since the test run multiple agents you require up to 60 available ports.) -### Note on BBS+ Signatures +### Note on BBS Signatures -ACA-Py does not come installed with the `bbs` library by default therefore integation tests involving BBS+ signatures (tagged with @BBS) will fail unless excluded. +ACA-Py does not come installed with the `bbs` library by default therefore integation tests involving BBS signatures (tagged with @BBS) will fail unless excluded. -You can exclude BBS+ tests from running with the tag `~@BBS`: +You can exclude BBS tests from running with the tag `~@BBS`: ```bash run_bdd -t ~@BBS ``` -If you want to run all tests including BBS+ tests you should include the `--all-extras` flag: +If you want to run all tests including BBS tests you should include the `--all-extras` flag: ```bash run_bdd --all-extras ``` -Note: The `bbs` library may not install on ARM (i.e. aarch64 or arm64) architecture therefore YMMV with testing BBS+ on ARM based devices. +Note: The `bbs` library may not install on ARM (i.e. aarch64 or arm64) architecture therefore YMMV with testing BBS Signatures on ARM based devices. ## Aca-py Integration Tests vs Aries Agent Test Harness (AATH) diff --git a/docs/testing/UnitTests.md b/docs/testing/UnitTests.md index b00c1d845b..cc7d9f49f0 100644 --- a/docs/testing/UnitTests.md +++ b/docs/testing/UnitTests.md @@ -10,13 +10,13 @@ developer @shaangill025. - `./scripts/run_tests` - `./scripts/run_tests aries_cloudagent/protocols/out_of_band/v1_0/tests` -Note: The `bbs` library is not installed with ACA-Py by default, therefore unit tests involving BBS+ signatures are disabled. To run BBS+ tests add the `--all-extras` flag: +Note: The `bbs` library is not installed with ACA-Py by default, therefore unit tests involving BBS Signatures are disabled. To run BBS tests add the `--all-extras` flag: ```bash ./scripts/run_tests --all-extras ``` -Note: The `bbs` library may not install on ARM (i.e. aarch64 or arm64) architecture therefore YMMV with testing BBS+ on ARM based devices. +Note: The `bbs` library may not install on ARM (i.e. aarch64 or arm64) architecture therefore YMMV with testing BBS Signatures on ARM based devices. ## Pytest