diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e458d63 --- /dev/null +++ b/Makefile @@ -0,0 +1,60 @@ +# Ancient Makefile implicit rule disabler +(%): % +%:: %,v +%:: RCS/%,v +%:: s.% +%:: SCCS/s.% +%.out: % +%.c: %.w %.ch +%.tex: %.w %.ch +%.mk: + +# Variables +DOC_DIR := docs +SRC_DIR := src/vtp/web/api +TEST_DIR := tests + +# Use colors for errors and warnings when in an interactive terminal +INTERACTIVE := $(shell test -t 0 && echo 1) +ifdef INTERACTIVE + RED := \033[0;31m + END := \033[0m +else + RED := + END := +endif + +# Let there be no default target +.PHONY: default +default: + @echo "${RED}There is no default make target.${END} Specify one of:" + @echo "pylint - runs pylint" + @echo "pytest - runs pytest" + @echo "reqs - generates a new requirements.txt file" + @echo "etags - constructs an emacs tags table" + @echo "" + @echo "See ${BUILD_DIR}/README.md for more details and info" + +# Run pylint +.PHONY: pylint +pylint: + @echo "${RED}NOTE - isort and black disagree on 3 files${END} - let black win" + isort ${SRC_DIR} ${TEST_DIR} + black ${SRC_DIR} ${TEST_DIR} + pylint --recursive y ${SRC_DIR} ${TEST_DIR} + +# Run tests +.PHONY: pytest +pytest: + pytest ${TEST_DIR} + +# emacs tags +ETAG_SRCS := $(shell find * -type f -name '*.py' -o -name '*.md' | grep -v defunct) +.PHONY: etags +etags: ${ETAG_SRCS} + etags ${ETAG_SRCS} + +# Generate a requirements.txt for dependabot (ignoring the symlinks) +.PHONY: reqs +reqs requirements.txt: pyproject.toml poetry.lock + poetry export --with dev -f requirements.txt --output requirements.txt diff --git a/poetry.lock b/poetry.lock index b5689d6..1098667 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. [[package]] name = "anyio" @@ -23,14 +23,14 @@ trio = ["trio (>=0.16,<0.22)"] [[package]] name = "astroid" -version = "2.14.2" +version = "2.15.2" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false python-versions = ">=3.7.2" files = [ - {file = "astroid-2.14.2-py3-none-any.whl", hash = "sha256:0e0e3709d64fbffd3037e4ff403580550f14471fd3eaae9fa11cc9a5c7901153"}, - {file = "astroid-2.14.2.tar.gz", hash = "sha256:a3cf9f02c53dd259144a7e8f3ccd75d67c9a8c716ef183e0c1f291bc5d7bb3cf"}, + {file = "astroid-2.15.2-py3-none-any.whl", hash = "sha256:dea89d9f99f491c66ac9c04ebddf91e4acf8bd711722175fe6245c0725cc19bb"}, + {file = "astroid-2.15.2.tar.gz", hash = "sha256:6e61b85c891ec53b07471aec5878f4ac6446a41e590ede0f2ce095f39f7d49dd"}, ] [package.dependencies] @@ -62,37 +62,37 @@ tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy [[package]] name = "black" -version = "23.1.0" +version = "23.3.0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "black-23.1.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221"}, - {file = "black-23.1.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26"}, - {file = "black-23.1.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b"}, - {file = "black-23.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104"}, - {file = "black-23.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9afd3f493666a0cd8f8df9a0200c6359ac53940cbde049dcb1a7eb6ee2dd7074"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:bfffba28dc52a58f04492181392ee380e95262af14ee01d4bc7bb1b1c6ca8d27"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c1c476bc7b7d021321e7d93dc2cbd78ce103b84d5a4cf97ed535fbc0d6660648"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:382998821f58e5c8238d3166c492139573325287820963d2f7de4d518bd76958"}, - {file = "black-23.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf649fda611c8550ca9d7592b69f0637218c2369b7744694c5e4902873b2f3a"}, - {file = "black-23.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:121ca7f10b4a01fd99951234abdbd97728e1240be89fde18480ffac16503d481"}, - {file = "black-23.1.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:a8471939da5e824b891b25751955be52ee7f8a30a916d570a5ba8e0f2eb2ecad"}, - {file = "black-23.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8178318cb74f98bc571eef19068f6ab5613b3e59d4f47771582f04e175570ed8"}, - {file = "black-23.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a436e7881d33acaf2536c46a454bb964a50eff59b21b51c6ccf5a40601fbef24"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:a59db0a2094d2259c554676403fa2fac3473ccf1354c1c63eccf7ae65aac8ab6"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:0052dba51dec07ed029ed61b18183942043e00008ec65d5028814afaab9a22fd"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:49f7b39e30f326a34b5c9a4213213a6b221d7ae9d58ec70df1c4a307cf2a1580"}, - {file = "black-23.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:162e37d49e93bd6eb6f1afc3e17a3d23a823042530c37c3c42eeeaf026f38468"}, - {file = "black-23.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b70eb40a78dfac24842458476135f9b99ab952dd3f2dab738c1881a9b38b753"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:a29650759a6a0944e7cca036674655c2f0f63806ddecc45ed40b7b8aa314b651"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:bb460c8561c8c1bec7824ecbc3ce085eb50005883a6203dcfb0122e95797ee06"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c91dfc2c2a4e50df0026f88d2215e166616e0c80e86004d0003ece0488db2739"}, - {file = "black-23.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a951cc83ab535d248c89f300eccbd625e80ab880fbcfb5ac8afb5f01a258ac9"}, - {file = "black-23.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0680d4380db3719ebcfb2613f34e86c8e6d15ffeabcf8ec59355c5e7b85bb555"}, - {file = "black-23.1.0-py3-none-any.whl", hash = "sha256:7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32"}, - {file = "black-23.1.0.tar.gz", hash = "sha256:b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, + {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, + {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, + {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, + {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, + {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, + {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, + {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, + {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, + {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, + {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, + {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, + {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, + {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, ] [package.dependencies] @@ -151,63 +151,63 @@ files = [ [[package]] name = "coverage" -version = "7.1.0" +version = "7.2.2" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "coverage-7.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3b946bbcd5a8231383450b195cfb58cb01cbe7f8949f5758566b881df4b33baf"}, - {file = "coverage-7.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec8e767f13be637d056f7e07e61d089e555f719b387a7070154ad80a0ff31801"}, - {file = "coverage-7.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4a5a5879a939cb84959d86869132b00176197ca561c664fc21478c1eee60d75"}, - {file = "coverage-7.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b643cb30821e7570c0aaf54feaf0bfb630b79059f85741843e9dc23f33aaca2c"}, - {file = "coverage-7.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32df215215f3af2c1617a55dbdfb403b772d463d54d219985ac7cd3bf124cada"}, - {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:33d1ae9d4079e05ac4cc1ef9e20c648f5afabf1a92adfaf2ccf509c50b85717f"}, - {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:29571503c37f2ef2138a306d23e7270687c0efb9cab4bd8038d609b5c2393a3a"}, - {file = "coverage-7.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:63ffd21aa133ff48c4dff7adcc46b7ec8b565491bfc371212122dd999812ea1c"}, - {file = "coverage-7.1.0-cp310-cp310-win32.whl", hash = "sha256:4b14d5e09c656de5038a3f9bfe5228f53439282abcab87317c9f7f1acb280352"}, - {file = "coverage-7.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:8361be1c2c073919500b6601220a6f2f98ea0b6d2fec5014c1d9cfa23dd07038"}, - {file = "coverage-7.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:da9b41d4539eefd408c46725fb76ecba3a50a3367cafb7dea5f250d0653c1040"}, - {file = "coverage-7.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5b15ed7644ae4bee0ecf74fee95808dcc34ba6ace87e8dfbf5cb0dc20eab45a"}, - {file = "coverage-7.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d12d076582507ea460ea2a89a8c85cb558f83406c8a41dd641d7be9a32e1274f"}, - {file = "coverage-7.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2617759031dae1bf183c16cef8fcfb3de7617f394c813fa5e8e46e9b82d4222"}, - {file = "coverage-7.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4e4881fa9e9667afcc742f0c244d9364d197490fbc91d12ac3b5de0bf2df146"}, - {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9d58885215094ab4a86a6aef044e42994a2bd76a446dc59b352622655ba6621b"}, - {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ffeeb38ee4a80a30a6877c5c4c359e5498eec095878f1581453202bfacc8fbc2"}, - {file = "coverage-7.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3baf5f126f30781b5e93dbefcc8271cb2491647f8283f20ac54d12161dff080e"}, - {file = "coverage-7.1.0-cp311-cp311-win32.whl", hash = "sha256:ded59300d6330be27bc6cf0b74b89ada58069ced87c48eaf9344e5e84b0072f7"}, - {file = "coverage-7.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:6a43c7823cd7427b4ed763aa7fb63901ca8288591323b58c9cd6ec31ad910f3c"}, - {file = "coverage-7.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a726d742816cb3a8973c8c9a97539c734b3a309345236cd533c4883dda05b8d"}, - {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc7c85a150501286f8b56bd8ed3aa4093f4b88fb68c0843d21ff9656f0009d6a"}, - {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5b4198d85a3755d27e64c52f8c95d6333119e49fd001ae5798dac872c95e0f8"}, - {file = "coverage-7.1.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddb726cb861c3117a553f940372a495fe1078249ff5f8a5478c0576c7be12050"}, - {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:51b236e764840a6df0661b67e50697aaa0e7d4124ca95e5058fa3d7cbc240b7c"}, - {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7ee5c9bb51695f80878faaa5598040dd6c9e172ddcf490382e8aedb8ec3fec8d"}, - {file = "coverage-7.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c31b75ae466c053a98bf26843563b3b3517b8f37da4d47b1c582fdc703112bc3"}, - {file = "coverage-7.1.0-cp37-cp37m-win32.whl", hash = "sha256:3b155caf3760408d1cb903b21e6a97ad4e2bdad43cbc265e3ce0afb8e0057e73"}, - {file = "coverage-7.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2a60d6513781e87047c3e630b33b4d1e89f39836dac6e069ffee28c4786715f5"}, - {file = "coverage-7.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2cba5c6db29ce991029b5e4ac51eb36774458f0a3b8d3137241b32d1bb91f06"}, - {file = "coverage-7.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beeb129cacea34490ffd4d6153af70509aa3cda20fdda2ea1a2be870dfec8d52"}, - {file = "coverage-7.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c45948f613d5d18c9ec5eaa203ce06a653334cf1bd47c783a12d0dd4fd9c851"}, - {file = "coverage-7.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef382417db92ba23dfb5864a3fc9be27ea4894e86620d342a116b243ade5d35d"}, - {file = "coverage-7.1.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c7c0d0827e853315c9bbd43c1162c006dd808dbbe297db7ae66cd17b07830f0"}, - {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e5cdbb5cafcedea04924568d990e20ce7f1945a1dd54b560f879ee2d57226912"}, - {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9817733f0d3ea91bea80de0f79ef971ae94f81ca52f9b66500c6a2fea8e4b4f8"}, - {file = "coverage-7.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:218fe982371ac7387304153ecd51205f14e9d731b34fb0568181abaf7b443ba0"}, - {file = "coverage-7.1.0-cp38-cp38-win32.whl", hash = "sha256:04481245ef966fbd24ae9b9e537ce899ae584d521dfbe78f89cad003c38ca2ab"}, - {file = "coverage-7.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8ae125d1134bf236acba8b83e74c603d1b30e207266121e76484562bc816344c"}, - {file = "coverage-7.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2bf1d5f2084c3932b56b962a683074a3692bce7cabd3aa023c987a2a8e7612f6"}, - {file = "coverage-7.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:98b85dd86514d889a2e3dd22ab3c18c9d0019e696478391d86708b805f4ea0fa"}, - {file = "coverage-7.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38da2db80cc505a611938d8624801158e409928b136c8916cd2e203970dde4dc"}, - {file = "coverage-7.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3164d31078fa9efe406e198aecd2a02d32a62fecbdef74f76dad6a46c7e48311"}, - {file = "coverage-7.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db61a79c07331e88b9a9974815c075fbd812bc9dbc4dc44b366b5368a2936063"}, - {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9ccb092c9ede70b2517a57382a601619d20981f56f440eae7e4d7eaafd1d1d09"}, - {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:33ff26d0f6cc3ca8de13d14fde1ff8efe1456b53e3f0273e63cc8b3c84a063d8"}, - {file = "coverage-7.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d47dd659a4ee952e90dc56c97d78132573dc5c7b09d61b416a9deef4ebe01a0c"}, - {file = "coverage-7.1.0-cp39-cp39-win32.whl", hash = "sha256:d248cd4a92065a4d4543b8331660121b31c4148dd00a691bfb7a5cdc7483cfa4"}, - {file = "coverage-7.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:7ed681b0f8e8bcbbffa58ba26fcf5dbc8f79e7997595bf071ed5430d8c08d6f3"}, - {file = "coverage-7.1.0-pp37.pp38.pp39-none-any.whl", hash = "sha256:755e89e32376c850f826c425ece2c35a4fc266c081490eb0a841e7c1cb0d3bda"}, - {file = "coverage-7.1.0.tar.gz", hash = "sha256:10188fe543560ec4874f974b5305cd1a8bdcfa885ee00ea3a03733464c4ca265"}, + {file = "coverage-7.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c90e73bdecb7b0d1cea65a08cb41e9d672ac6d7995603d6465ed4914b98b9ad7"}, + {file = "coverage-7.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e2926b8abedf750c2ecf5035c07515770944acf02e1c46ab08f6348d24c5f94d"}, + {file = "coverage-7.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57b77b9099f172804e695a40ebaa374f79e4fb8b92f3e167f66facbf92e8e7f5"}, + {file = "coverage-7.2.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:efe1c0adad110bf0ad7fb59f833880e489a61e39d699d37249bdf42f80590169"}, + {file = "coverage-7.2.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2199988e0bc8325d941b209f4fd1c6fa007024b1442c5576f1a32ca2e48941e6"}, + {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:81f63e0fb74effd5be736cfe07d710307cc0a3ccb8f4741f7f053c057615a137"}, + {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:186e0fc9cf497365036d51d4d2ab76113fb74f729bd25da0975daab2e107fd90"}, + {file = "coverage-7.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:420f94a35e3e00a2b43ad5740f935358e24478354ce41c99407cddd283be00d2"}, + {file = "coverage-7.2.2-cp310-cp310-win32.whl", hash = "sha256:38004671848b5745bb05d4d621526fca30cee164db42a1f185615f39dc997292"}, + {file = "coverage-7.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:0ce383d5f56d0729d2dd40e53fe3afeb8f2237244b0975e1427bfb2cf0d32bab"}, + {file = "coverage-7.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3eb55b7b26389dd4f8ae911ba9bc8c027411163839dea4c8b8be54c4ee9ae10b"}, + {file = "coverage-7.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d2b96123a453a2d7f3995ddb9f28d01fd112319a7a4d5ca99796a7ff43f02af5"}, + {file = "coverage-7.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:299bc75cb2a41e6741b5e470b8c9fb78d931edbd0cd009c58e5c84de57c06731"}, + {file = "coverage-7.2.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e1df45c23d4230e3d56d04414f9057eba501f78db60d4eeecfcb940501b08fd"}, + {file = "coverage-7.2.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:006ed5582e9cbc8115d2e22d6d2144a0725db542f654d9d4fda86793832f873d"}, + {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d683d230b5774816e7d784d7ed8444f2a40e7a450e5720d58af593cb0b94a212"}, + {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8efb48fa743d1c1a65ee8787b5b552681610f06c40a40b7ef94a5b517d885c54"}, + {file = "coverage-7.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4c752d5264053a7cf2fe81c9e14f8a4fb261370a7bb344c2a011836a96fb3f57"}, + {file = "coverage-7.2.2-cp311-cp311-win32.whl", hash = "sha256:55272f33da9a5d7cccd3774aeca7a01e500a614eaea2a77091e9be000ecd401d"}, + {file = "coverage-7.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:92ebc1619650409da324d001b3a36f14f63644c7f0a588e331f3b0f67491f512"}, + {file = "coverage-7.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5afdad4cc4cc199fdf3e18088812edcf8f4c5a3c8e6cb69127513ad4cb7471a9"}, + {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0484d9dd1e6f481b24070c87561c8d7151bdd8b044c93ac99faafd01f695c78e"}, + {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d530191aa9c66ab4f190be8ac8cc7cfd8f4f3217da379606f3dd4e3d83feba69"}, + {file = "coverage-7.2.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac0f522c3b6109c4b764ffec71bf04ebc0523e926ca7cbe6c5ac88f84faced0"}, + {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ba279aae162b20444881fc3ed4e4f934c1cf8620f3dab3b531480cf602c76b7f"}, + {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:53d0fd4c17175aded9c633e319360d41a1f3c6e352ba94edcb0fa5167e2bad67"}, + {file = "coverage-7.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c99cb7c26a3039a8a4ee3ca1efdde471e61b4837108847fb7d5be7789ed8fd9"}, + {file = "coverage-7.2.2-cp37-cp37m-win32.whl", hash = "sha256:5cc0783844c84af2522e3a99b9b761a979a3ef10fb87fc4048d1ee174e18a7d8"}, + {file = "coverage-7.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:817295f06eacdc8623dc4df7d8b49cea65925030d4e1e2a7c7218380c0072c25"}, + {file = "coverage-7.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6146910231ece63facfc5984234ad1b06a36cecc9fd0c028e59ac7c9b18c38c6"}, + {file = "coverage-7.2.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:387fb46cb8e53ba7304d80aadca5dca84a2fbf6fe3faf6951d8cf2d46485d1e5"}, + {file = "coverage-7.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:046936ab032a2810dcaafd39cc4ef6dd295df1a7cbead08fe996d4765fca9fe4"}, + {file = "coverage-7.2.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e627dee428a176ffb13697a2c4318d3f60b2ccdde3acdc9b3f304206ec130ccd"}, + {file = "coverage-7.2.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fa54fb483decc45f94011898727802309a109d89446a3c76387d016057d2c84"}, + {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3668291b50b69a0c1ef9f462c7df2c235da3c4073f49543b01e7eb1dee7dd540"}, + {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7c20b731211261dc9739bbe080c579a1835b0c2d9b274e5fcd903c3a7821cf88"}, + {file = "coverage-7.2.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5764e1f7471cb8f64b8cda0554f3d4c4085ae4b417bfeab236799863703e5de2"}, + {file = "coverage-7.2.2-cp38-cp38-win32.whl", hash = "sha256:4f01911c010122f49a3e9bdc730eccc66f9b72bd410a3a9d3cb8448bb50d65d3"}, + {file = "coverage-7.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:c448b5c9e3df5448a362208b8d4b9ed85305528313fca1b479f14f9fe0d873b8"}, + {file = "coverage-7.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bfe7085783cda55e53510482fa7b5efc761fad1abe4d653b32710eb548ebdd2d"}, + {file = "coverage-7.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9d22e94e6dc86de981b1b684b342bec5e331401599ce652900ec59db52940005"}, + {file = "coverage-7.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:507e4720791977934bba016101579b8c500fb21c5fa3cd4cf256477331ddd988"}, + {file = "coverage-7.2.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc4803779f0e4b06a2361f666e76f5c2e3715e8e379889d02251ec911befd149"}, + {file = "coverage-7.2.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db8c2c5ace167fd25ab5dd732714c51d4633f58bac21fb0ff63b0349f62755a8"}, + {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f68ee32d7c4164f1e2c8797535a6d0a3733355f5861e0f667e37df2d4b07140"}, + {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d52f0a114b6a58305b11a5cdecd42b2e7f1ec77eb20e2b33969d702feafdd016"}, + {file = "coverage-7.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:797aad79e7b6182cb49c08cc5d2f7aa7b2128133b0926060d0a8889ac43843be"}, + {file = "coverage-7.2.2-cp39-cp39-win32.whl", hash = "sha256:db45eec1dfccdadb179b0f9ca616872c6f700d23945ecc8f21bb105d74b1c5fc"}, + {file = "coverage-7.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:8dbe2647bf58d2c5a6c5bcc685f23b5f371909a5624e9f5cd51436d6a9f6c6ef"}, + {file = "coverage-7.2.2-pp37.pp38.pp39-none-any.whl", hash = "sha256:872d6ce1f5be73f05bea4df498c140b9e7ee5418bfa2cc8204e7f9b817caa968"}, + {file = "coverage-7.2.2.tar.gz", hash = "sha256:36dd42da34fe94ed98c39887b86db9d06777b1c8f860520e21126a75507024f2"}, ] [package.dependencies] @@ -233,14 +233,14 @@ graph = ["objgraph (>=1.7.2)"] [[package]] name = "exceptiongroup" -version = "1.1.0" +version = "1.1.1" description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, - {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, + {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, + {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, ] [package.extras] @@ -464,42 +464,42 @@ files = [ [[package]] name = "mypy" -version = "1.0.1" +version = "1.1.1" description = "Optional static typing for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "mypy-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:71a808334d3f41ef011faa5a5cd8153606df5fc0b56de5b2e89566c8093a0c9a"}, - {file = "mypy-1.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:920169f0184215eef19294fa86ea49ffd4635dedfdea2b57e45cb4ee85d5ccaf"}, - {file = "mypy-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27a0f74a298769d9fdc8498fcb4f2beb86f0564bcdb1a37b58cbbe78e55cf8c0"}, - {file = "mypy-1.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:65b122a993d9c81ea0bfde7689b3365318a88bde952e4dfa1b3a8b4ac05d168b"}, - {file = "mypy-1.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:5deb252fd42a77add936b463033a59b8e48eb2eaec2976d76b6878d031933fe4"}, - {file = "mypy-1.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2013226d17f20468f34feddd6aae4635a55f79626549099354ce641bc7d40262"}, - {file = "mypy-1.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:48525aec92b47baed9b3380371ab8ab6e63a5aab317347dfe9e55e02aaad22e8"}, - {file = "mypy-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c96b8a0c019fe29040d520d9257d8c8f122a7343a8307bf8d6d4a43f5c5bfcc8"}, - {file = "mypy-1.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:448de661536d270ce04f2d7dddaa49b2fdba6e3bd8a83212164d4174ff43aa65"}, - {file = "mypy-1.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:d42a98e76070a365a1d1c220fcac8aa4ada12ae0db679cb4d910fabefc88b994"}, - {file = "mypy-1.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e64f48c6176e243ad015e995de05af7f22bbe370dbb5b32bd6988438ec873919"}, - {file = "mypy-1.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdd63e4f50e3538617887e9aee91855368d9fc1dea30da743837b0df7373bc4"}, - {file = "mypy-1.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbeb24514c4acbc78d205f85dd0e800f34062efcc1f4a4857c57e4b4b8712bff"}, - {file = "mypy-1.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a2948c40a7dd46c1c33765718936669dc1f628f134013b02ff5ac6c7ef6942bf"}, - {file = "mypy-1.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bc8d6bd3b274dd3846597855d96d38d947aedba18776aa998a8d46fabdaed76"}, - {file = "mypy-1.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:17455cda53eeee0a4adb6371a21dd3dbf465897de82843751cf822605d152c8c"}, - {file = "mypy-1.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e831662208055b006eef68392a768ff83596035ffd6d846786578ba1714ba8f6"}, - {file = "mypy-1.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e60d0b09f62ae97a94605c3f73fd952395286cf3e3b9e7b97f60b01ddfbbda88"}, - {file = "mypy-1.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:0af4f0e20706aadf4e6f8f8dc5ab739089146b83fd53cb4a7e0e850ef3de0bb6"}, - {file = "mypy-1.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:24189f23dc66f83b839bd1cce2dfc356020dfc9a8bae03978477b15be61b062e"}, - {file = "mypy-1.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93a85495fb13dc484251b4c1fd7a5ac370cd0d812bbfc3b39c1bafefe95275d5"}, - {file = "mypy-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f546ac34093c6ce33f6278f7c88f0f147a4849386d3bf3ae193702f4fe31407"}, - {file = "mypy-1.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c6c2ccb7af7154673c591189c3687b013122c5a891bb5651eca3db8e6c6c55bd"}, - {file = "mypy-1.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:15b5a824b58c7c822c51bc66308e759243c32631896743f030daf449fe3677f3"}, - {file = "mypy-1.0.1-py3-none-any.whl", hash = "sha256:eda5c8b9949ed411ff752b9a01adda31afe7eae1e53e946dbdf9db23865e66c4"}, - {file = "mypy-1.0.1.tar.gz", hash = "sha256:28cea5a6392bb43d266782983b5a4216c25544cd7d80be681a155ddcdafd152d"}, + {file = "mypy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39c7119335be05630611ee798cc982623b9e8f0cff04a0b48dfc26100e0b97af"}, + {file = "mypy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61bf08362e93b6b12fad3eab68c4ea903a077b87c90ac06c11e3d7a09b56b9c1"}, + {file = "mypy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbb19c9f662e41e474e0cff502b7064a7edc6764f5262b6cd91d698163196799"}, + {file = "mypy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:315ac73cc1cce4771c27d426b7ea558fb4e2836f89cb0296cbe056894e3a1f78"}, + {file = "mypy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5cb14ff9919b7df3538590fc4d4c49a0f84392237cbf5f7a816b4161c061829e"}, + {file = "mypy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:26cdd6a22b9b40b2fd71881a8a4f34b4d7914c679f154f43385ca878a8297389"}, + {file = "mypy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b5f81b40d94c785f288948c16e1f2da37203c6006546c5d947aab6f90aefef2"}, + {file = "mypy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21b437be1c02712a605591e1ed1d858aba681757a1e55fe678a15c2244cd68a5"}, + {file = "mypy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d809f88734f44a0d44959d795b1e6f64b2bbe0ea4d9cc4776aa588bb4229fc1c"}, + {file = "mypy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:a380c041db500e1410bb5b16b3c1c35e61e773a5c3517926b81dfdab7582be54"}, + {file = "mypy-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b7c7b708fe9a871a96626d61912e3f4ddd365bf7f39128362bc50cbd74a634d5"}, + {file = "mypy-1.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1c10fa12df1232c936830839e2e935d090fc9ee315744ac33b8a32216b93707"}, + {file = "mypy-1.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0a28a76785bf57655a8ea5eb0540a15b0e781c807b5aa798bd463779988fa1d5"}, + {file = "mypy-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ef6a01e563ec6a4940784c574d33f6ac1943864634517984471642908b30b6f7"}, + {file = "mypy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d64c28e03ce40d5303450f547e07418c64c241669ab20610f273c9e6290b4b0b"}, + {file = "mypy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64cc3afb3e9e71a79d06e3ed24bb508a6d66f782aff7e56f628bf35ba2e0ba51"}, + {file = "mypy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce61663faf7a8e5ec6f456857bfbcec2901fbdb3ad958b778403f63b9e606a1b"}, + {file = "mypy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2b0c373d071593deefbcdd87ec8db91ea13bd8f1328d44947e88beae21e8d5e9"}, + {file = "mypy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:2888ce4fe5aae5a673386fa232473014056967f3904f5abfcf6367b5af1f612a"}, + {file = "mypy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:19ba15f9627a5723e522d007fe708007bae52b93faab00f95d72f03e1afa9598"}, + {file = "mypy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:59bbd71e5c58eed2e992ce6523180e03c221dcd92b52f0e792f291d67b15a71c"}, + {file = "mypy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9401e33814cec6aec8c03a9548e9385e0e228fc1b8b0a37b9ea21038e64cdd8a"}, + {file = "mypy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b398d8b1f4fba0e3c6463e02f8ad3346f71956b92287af22c9b12c3ec965a9f"}, + {file = "mypy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:69b35d1dcb5707382810765ed34da9db47e7f95b3528334a3c999b0c90fe523f"}, + {file = "mypy-1.1.1-py3-none-any.whl", hash = "sha256:4e4e8b362cdf99ba00c2b218036002bdcdf1e0de085cdb296a49df03fb31dfc4"}, + {file = "mypy-1.1.1.tar.gz", hash = "sha256:ae9ceae0f5b9059f33dbc62dea087e942c0ccab4b7a003719cb70f9b8abfa32f"}, ] [package.dependencies] -mypy-extensions = ">=0.4.3" +mypy-extensions = ">=1.0.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = ">=3.10" @@ -535,31 +535,31 @@ files = [ [[package]] name = "pathspec" -version = "0.11.0" +version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pathspec-0.11.0-py3-none-any.whl", hash = "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229"}, - {file = "pathspec-0.11.0.tar.gz", hash = "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"}, + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] [[package]] name = "platformdirs" -version = "3.0.0" +version = "3.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.0.0-py3-none-any.whl", hash = "sha256:b1d5eb14f221506f50d6604a561f4c5786d9e80355219694a1b244bcd96f4567"}, - {file = "platformdirs-3.0.0.tar.gz", hash = "sha256:8a1228abb1ef82d788f74139988b137e78692984ec7b08eaa6c65f1723af28f9"}, + {file = "platformdirs-3.2.0-py3-none-any.whl", hash = "sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e"}, + {file = "platformdirs-3.2.0.tar.gz", hash = "sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08"}, ] [package.extras] docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -591,48 +591,48 @@ files = [ [[package]] name = "pydantic" -version = "1.10.5" +version = "1.10.7" description = "Data validation and settings management using python type hints" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-1.10.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5920824fe1e21cbb3e38cf0f3dd24857c8959801d1031ce1fac1d50857a03bfb"}, - {file = "pydantic-1.10.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3bb99cf9655b377db1a9e47fa4479e3330ea96f4123c6c8200e482704bf1eda2"}, - {file = "pydantic-1.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2185a3b3d98ab4506a3f6707569802d2d92c3a7ba3a9a35683a7709ea6c2aaa2"}, - {file = "pydantic-1.10.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f582cac9d11c227c652d3ce8ee223d94eb06f4228b52a8adaafa9fa62e73d5c9"}, - {file = "pydantic-1.10.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c9e5b778b6842f135902e2d82624008c6a79710207e28e86966cd136c621bfee"}, - {file = "pydantic-1.10.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72ef3783be8cbdef6bca034606a5de3862be6b72415dc5cb1fb8ddbac110049a"}, - {file = "pydantic-1.10.5-cp310-cp310-win_amd64.whl", hash = "sha256:45edea10b75d3da43cfda12f3792833a3fa70b6eee4db1ed6aed528cef17c74e"}, - {file = "pydantic-1.10.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63200cd8af1af2c07964546b7bc8f217e8bda9d0a2ef0ee0c797b36353914984"}, - {file = "pydantic-1.10.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:305d0376c516b0dfa1dbefeae8c21042b57b496892d721905a6ec6b79494a66d"}, - {file = "pydantic-1.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fd326aff5d6c36f05735c7c9b3d5b0e933b4ca52ad0b6e4b38038d82703d35b"}, - {file = "pydantic-1.10.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bb0452d7b8516178c969d305d9630a3c9b8cf16fcf4713261c9ebd465af0d73"}, - {file = "pydantic-1.10.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9a9d9155e2a9f38b2eb9374c88f02fd4d6851ae17b65ee786a87d032f87008f8"}, - {file = "pydantic-1.10.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f836444b4c5ece128b23ec36a446c9ab7f9b0f7981d0d27e13a7c366ee163f8a"}, - {file = "pydantic-1.10.5-cp311-cp311-win_amd64.whl", hash = "sha256:8481dca324e1c7b715ce091a698b181054d22072e848b6fc7895cd86f79b4449"}, - {file = "pydantic-1.10.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:87f831e81ea0589cd18257f84386bf30154c5f4bed373b7b75e5cb0b5d53ea87"}, - {file = "pydantic-1.10.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ce1612e98c6326f10888df951a26ec1a577d8df49ddcaea87773bfbe23ba5cc"}, - {file = "pydantic-1.10.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58e41dd1e977531ac6073b11baac8c013f3cd8706a01d3dc74e86955be8b2c0c"}, - {file = "pydantic-1.10.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6a4b0aab29061262065bbdede617ef99cc5914d1bf0ddc8bcd8e3d7928d85bd6"}, - {file = "pydantic-1.10.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:36e44a4de37b8aecffa81c081dbfe42c4d2bf9f6dff34d03dce157ec65eb0f15"}, - {file = "pydantic-1.10.5-cp37-cp37m-win_amd64.whl", hash = "sha256:261f357f0aecda005934e413dfd7aa4077004a174dafe414a8325e6098a8e419"}, - {file = "pydantic-1.10.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b429f7c457aebb7fbe7cd69c418d1cd7c6fdc4d3c8697f45af78b8d5a7955760"}, - {file = "pydantic-1.10.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:663d2dd78596c5fa3eb996bc3f34b8c2a592648ad10008f98d1348be7ae212fb"}, - {file = "pydantic-1.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51782fd81f09edcf265823c3bf43ff36d00db246eca39ee765ef58dc8421a642"}, - {file = "pydantic-1.10.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c428c0f64a86661fb4873495c4fac430ec7a7cef2b8c1c28f3d1a7277f9ea5ab"}, - {file = "pydantic-1.10.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:76c930ad0746c70f0368c4596020b736ab65b473c1f9b3872310a835d852eb19"}, - {file = "pydantic-1.10.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3257bd714de9db2102b742570a56bf7978e90441193acac109b1f500290f5718"}, - {file = "pydantic-1.10.5-cp38-cp38-win_amd64.whl", hash = "sha256:f5bee6c523d13944a1fdc6f0525bc86dbbd94372f17b83fa6331aabacc8fd08e"}, - {file = "pydantic-1.10.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:532e97c35719f137ee5405bd3eeddc5c06eb91a032bc755a44e34a712420daf3"}, - {file = "pydantic-1.10.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ca9075ab3de9e48b75fa8ccb897c34ccc1519177ad8841d99f7fd74cf43be5bf"}, - {file = "pydantic-1.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd46a0e6296346c477e59a954da57beaf9c538da37b9df482e50f836e4a7d4bb"}, - {file = "pydantic-1.10.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3353072625ea2a9a6c81ad01b91e5c07fa70deb06368c71307529abf70d23325"}, - {file = "pydantic-1.10.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3f9d9b2be177c3cb6027cd67fbf323586417868c06c3c85d0d101703136e6b31"}, - {file = "pydantic-1.10.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b473d00ccd5c2061fd896ac127b7755baad233f8d996ea288af14ae09f8e0d1e"}, - {file = "pydantic-1.10.5-cp39-cp39-win_amd64.whl", hash = "sha256:5f3bc8f103b56a8c88021d481410874b1f13edf6e838da607dcb57ecff9b4594"}, - {file = "pydantic-1.10.5-py3-none-any.whl", hash = "sha256:7c5b94d598c90f2f46b3a983ffb46ab806a67099d118ae0da7ef21a2a4033b28"}, - {file = "pydantic-1.10.5.tar.gz", hash = "sha256:9e337ac83686645a46db0e825acceea8e02fca4062483f40e9ae178e8bd1103a"}, + {file = "pydantic-1.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e79e999e539872e903767c417c897e729e015872040e56b96e67968c3b918b2d"}, + {file = "pydantic-1.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:01aea3a42c13f2602b7ecbbea484a98169fb568ebd9e247593ea05f01b884b2e"}, + {file = "pydantic-1.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:516f1ed9bc2406a0467dd777afc636c7091d71f214d5e413d64fef45174cfc7a"}, + {file = "pydantic-1.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae150a63564929c675d7f2303008d88426a0add46efd76c3fc797cd71cb1b46f"}, + {file = "pydantic-1.10.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecbbc51391248116c0a055899e6c3e7ffbb11fb5e2a4cd6f2d0b93272118a209"}, + {file = "pydantic-1.10.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f4a2b50e2b03d5776e7f21af73e2070e1b5c0d0df255a827e7c632962f8315af"}, + {file = "pydantic-1.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:a7cd2251439988b413cb0a985c4ed82b6c6aac382dbaff53ae03c4b23a70e80a"}, + {file = "pydantic-1.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:68792151e174a4aa9e9fc1b4e653e65a354a2fa0fed169f7b3d09902ad2cb6f1"}, + {file = "pydantic-1.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe2507b8ef209da71b6fb5f4e597b50c5a34b78d7e857c4f8f3115effaef5fe"}, + {file = "pydantic-1.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10a86d8c8db68086f1e30a530f7d5f83eb0685e632e411dbbcf2d5c0150e8dcd"}, + {file = "pydantic-1.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75ae19d2a3dbb146b6f324031c24f8a3f52ff5d6a9f22f0683694b3afcb16fb"}, + {file = "pydantic-1.10.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:464855a7ff7f2cc2cf537ecc421291b9132aa9c79aef44e917ad711b4a93163b"}, + {file = "pydantic-1.10.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:193924c563fae6ddcb71d3f06fa153866423ac1b793a47936656e806b64e24ca"}, + {file = "pydantic-1.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:b4a849d10f211389502059c33332e91327bc154acc1845f375a99eca3afa802d"}, + {file = "pydantic-1.10.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cc1dde4e50a5fc1336ee0581c1612215bc64ed6d28d2c7c6f25d2fe3e7c3e918"}, + {file = "pydantic-1.10.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0cfe895a504c060e5d36b287ee696e2fdad02d89e0d895f83037245218a87fe"}, + {file = "pydantic-1.10.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:670bb4683ad1e48b0ecb06f0cfe2178dcf74ff27921cdf1606e527d2617a81ee"}, + {file = "pydantic-1.10.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:950ce33857841f9a337ce07ddf46bc84e1c4946d2a3bba18f8280297157a3fd1"}, + {file = "pydantic-1.10.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c15582f9055fbc1bfe50266a19771bbbef33dd28c45e78afbe1996fd70966c2a"}, + {file = "pydantic-1.10.7-cp37-cp37m-win_amd64.whl", hash = "sha256:82dffb306dd20bd5268fd6379bc4bfe75242a9c2b79fec58e1041fbbdb1f7914"}, + {file = "pydantic-1.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c7f51861d73e8b9ddcb9916ae7ac39fb52761d9ea0df41128e81e2ba42886cd"}, + {file = "pydantic-1.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6434b49c0b03a51021ade5c4daa7d70c98f7a79e95b551201fff682fc1661245"}, + {file = "pydantic-1.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64d34ab766fa056df49013bb6e79921a0265204c071984e75a09cbceacbbdd5d"}, + {file = "pydantic-1.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:701daea9ffe9d26f97b52f1d157e0d4121644f0fcf80b443248434958fd03dc3"}, + {file = "pydantic-1.10.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf135c46099ff3f919d2150a948ce94b9ce545598ef2c6c7bf55dca98a304b52"}, + {file = "pydantic-1.10.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0f85904f73161817b80781cc150f8b906d521fa11e3cdabae19a581c3606209"}, + {file = "pydantic-1.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:9f6f0fd68d73257ad6685419478c5aece46432f4bdd8d32c7345f1986496171e"}, + {file = "pydantic-1.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c230c0d8a322276d6e7b88c3f7ce885f9ed16e0910354510e0bae84d54991143"}, + {file = "pydantic-1.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:976cae77ba6a49d80f461fd8bba183ff7ba79f44aa5cfa82f1346b5626542f8e"}, + {file = "pydantic-1.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d45fc99d64af9aaf7e308054a0067fdcd87ffe974f2442312372dfa66e1001d"}, + {file = "pydantic-1.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2a5ebb48958754d386195fe9e9c5106f11275867051bf017a8059410e9abf1f"}, + {file = "pydantic-1.10.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:abfb7d4a7cd5cc4e1d1887c43503a7c5dd608eadf8bc615413fc498d3e4645cd"}, + {file = "pydantic-1.10.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:80b1fab4deb08a8292d15e43a6edccdffa5377a36a4597bb545b93e79c5ff0a5"}, + {file = "pydantic-1.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:d71e69699498b020ea198468e2480a2f1e7433e32a3a99760058c6520e2bea7e"}, + {file = "pydantic-1.10.7-py3-none-any.whl", hash = "sha256:0cd181f1d0b1d00e2b705f1bf1ac7799a2d938cce3376b8007df62b29be3c2c6"}, + {file = "pydantic-1.10.7.tar.gz", hash = "sha256:cfc83c0678b6ba51b0532bea66860617c4cd4251ecf76e9846fa5a9f3454e97e"}, ] [package.dependencies] @@ -656,18 +656,18 @@ files = [ [[package]] name = "pylint" -version = "2.16.2" +version = "2.17.2" description = "python code static checker" category = "dev" optional = false python-versions = ">=3.7.2" files = [ - {file = "pylint-2.16.2-py3-none-any.whl", hash = "sha256:ff22dde9c2128cd257c145cfd51adeff0be7df4d80d669055f24a962b351bbe4"}, - {file = "pylint-2.16.2.tar.gz", hash = "sha256:13b2c805a404a9bf57d002cd5f054ca4d40b0b87542bdaba5e05321ae8262c84"}, + {file = "pylint-2.17.2-py3-none-any.whl", hash = "sha256:001cc91366a7df2970941d7e6bbefcbf98694e00102c1f121c531a814ddc2ea8"}, + {file = "pylint-2.17.2.tar.gz", hash = "sha256:1b647da5249e7c279118f657ca28b6aaebb299f86bf92affc632acf199f7adbb"}, ] [package.dependencies] -astroid = ">=2.14.2,<=2.16.0-dev0" +astroid = ">=2.15.2,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, @@ -686,14 +686,14 @@ testutils = ["gitpython (>3)"] [[package]] name = "pytest" -version = "7.2.1" +version = "7.2.2" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"}, - {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"}, + {file = "pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e"}, + {file = "pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4"}, ] [package.dependencies] @@ -790,14 +790,14 @@ files = [ [[package]] name = "tomlkit" -version = "0.11.6" +version = "0.11.7" description = "Style preserving TOML library" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"}, - {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"}, + {file = "tomlkit-0.11.7-py3-none-any.whl", hash = "sha256:5325463a7da2ef0c6bbfefb62a3dc883aebe679984709aee32a317907d0a8d3c"}, + {file = "tomlkit-0.11.7.tar.gz", hash = "sha256:f392ef70ad87a672f02519f99967d28a4d3047133e2d1df936511465fbb3791d"}, ] [[package]] @@ -833,76 +833,87 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", [[package]] name = "wrapt" -version = "1.14.1" +version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ - {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, - {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, - {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, - {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, - {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, - {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, - {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, - {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, - {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, - {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, - {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, - {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, - {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, - {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, - {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, - {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, + {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, + {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, + {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, + {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, + {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, + {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, + {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, + {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, + {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, + {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, + {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, + {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, + {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, + {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, + {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, + {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, + {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, + {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, + {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, ] [[package]] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0cb2c91 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,363 @@ +anyio==3.6.2 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421 \ + --hash=sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3 +astroid==2.15.2 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:6e61b85c891ec53b07471aec5878f4ac6446a41e590ede0f2ce095f39f7d49dd \ + --hash=sha256:dea89d9f99f491c66ac9c04ebddf91e4acf8bd711722175fe6245c0725cc19bb +attrs==22.2.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836 \ + --hash=sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99 +black==23.3.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5 \ + --hash=sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915 \ + --hash=sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326 \ + --hash=sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940 \ + --hash=sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b \ + --hash=sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30 \ + --hash=sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c \ + --hash=sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c \ + --hash=sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab \ + --hash=sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27 \ + --hash=sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2 \ + --hash=sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961 \ + --hash=sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9 \ + --hash=sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb \ + --hash=sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70 \ + --hash=sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331 \ + --hash=sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2 \ + --hash=sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266 \ + --hash=sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d \ + --hash=sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6 \ + --hash=sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b \ + --hash=sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925 \ + --hash=sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8 \ + --hash=sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4 \ + --hash=sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3 +certifi==2022.12.7 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ + --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 +click==8.1.3 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ + --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 +colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "win32" or python_version >= "3.9" and python_version < "4.0" and platform_system == "Windows" \ + --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ + --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 +coverage[toml]==7.2.2 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:006ed5582e9cbc8115d2e22d6d2144a0725db542f654d9d4fda86793832f873d \ + --hash=sha256:046936ab032a2810dcaafd39cc4ef6dd295df1a7cbead08fe996d4765fca9fe4 \ + --hash=sha256:0484d9dd1e6f481b24070c87561c8d7151bdd8b044c93ac99faafd01f695c78e \ + --hash=sha256:0ce383d5f56d0729d2dd40e53fe3afeb8f2237244b0975e1427bfb2cf0d32bab \ + --hash=sha256:186e0fc9cf497365036d51d4d2ab76113fb74f729bd25da0975daab2e107fd90 \ + --hash=sha256:2199988e0bc8325d941b209f4fd1c6fa007024b1442c5576f1a32ca2e48941e6 \ + --hash=sha256:299bc75cb2a41e6741b5e470b8c9fb78d931edbd0cd009c58e5c84de57c06731 \ + --hash=sha256:3668291b50b69a0c1ef9f462c7df2c235da3c4073f49543b01e7eb1dee7dd540 \ + --hash=sha256:36dd42da34fe94ed98c39887b86db9d06777b1c8f860520e21126a75507024f2 \ + --hash=sha256:38004671848b5745bb05d4d621526fca30cee164db42a1f185615f39dc997292 \ + --hash=sha256:387fb46cb8e53ba7304d80aadca5dca84a2fbf6fe3faf6951d8cf2d46485d1e5 \ + --hash=sha256:3eb55b7b26389dd4f8ae911ba9bc8c027411163839dea4c8b8be54c4ee9ae10b \ + --hash=sha256:420f94a35e3e00a2b43ad5740f935358e24478354ce41c99407cddd283be00d2 \ + --hash=sha256:4ac0f522c3b6109c4b764ffec71bf04ebc0523e926ca7cbe6c5ac88f84faced0 \ + --hash=sha256:4c752d5264053a7cf2fe81c9e14f8a4fb261370a7bb344c2a011836a96fb3f57 \ + --hash=sha256:4f01911c010122f49a3e9bdc730eccc66f9b72bd410a3a9d3cb8448bb50d65d3 \ + --hash=sha256:4f68ee32d7c4164f1e2c8797535a6d0a3733355f5861e0f667e37df2d4b07140 \ + --hash=sha256:4fa54fb483decc45f94011898727802309a109d89446a3c76387d016057d2c84 \ + --hash=sha256:507e4720791977934bba016101579b8c500fb21c5fa3cd4cf256477331ddd988 \ + --hash=sha256:53d0fd4c17175aded9c633e319360d41a1f3c6e352ba94edcb0fa5167e2bad67 \ + --hash=sha256:55272f33da9a5d7cccd3774aeca7a01e500a614eaea2a77091e9be000ecd401d \ + --hash=sha256:5764e1f7471cb8f64b8cda0554f3d4c4085ae4b417bfeab236799863703e5de2 \ + --hash=sha256:57b77b9099f172804e695a40ebaa374f79e4fb8b92f3e167f66facbf92e8e7f5 \ + --hash=sha256:5afdad4cc4cc199fdf3e18088812edcf8f4c5a3c8e6cb69127513ad4cb7471a9 \ + --hash=sha256:5cc0783844c84af2522e3a99b9b761a979a3ef10fb87fc4048d1ee174e18a7d8 \ + --hash=sha256:5e1df45c23d4230e3d56d04414f9057eba501f78db60d4eeecfcb940501b08fd \ + --hash=sha256:6146910231ece63facfc5984234ad1b06a36cecc9fd0c028e59ac7c9b18c38c6 \ + --hash=sha256:797aad79e7b6182cb49c08cc5d2f7aa7b2128133b0926060d0a8889ac43843be \ + --hash=sha256:7c20b731211261dc9739bbe080c579a1835b0c2d9b274e5fcd903c3a7821cf88 \ + --hash=sha256:817295f06eacdc8623dc4df7d8b49cea65925030d4e1e2a7c7218380c0072c25 \ + --hash=sha256:81f63e0fb74effd5be736cfe07d710307cc0a3ccb8f4741f7f053c057615a137 \ + --hash=sha256:872d6ce1f5be73f05bea4df498c140b9e7ee5418bfa2cc8204e7f9b817caa968 \ + --hash=sha256:8c99cb7c26a3039a8a4ee3ca1efdde471e61b4837108847fb7d5be7789ed8fd9 \ + --hash=sha256:8dbe2647bf58d2c5a6c5bcc685f23b5f371909a5624e9f5cd51436d6a9f6c6ef \ + --hash=sha256:8efb48fa743d1c1a65ee8787b5b552681610f06c40a40b7ef94a5b517d885c54 \ + --hash=sha256:92ebc1619650409da324d001b3a36f14f63644c7f0a588e331f3b0f67491f512 \ + --hash=sha256:9d22e94e6dc86de981b1b684b342bec5e331401599ce652900ec59db52940005 \ + --hash=sha256:ba279aae162b20444881fc3ed4e4f934c1cf8620f3dab3b531480cf602c76b7f \ + --hash=sha256:bc4803779f0e4b06a2361f666e76f5c2e3715e8e379889d02251ec911befd149 \ + --hash=sha256:bfe7085783cda55e53510482fa7b5efc761fad1abe4d653b32710eb548ebdd2d \ + --hash=sha256:c448b5c9e3df5448a362208b8d4b9ed85305528313fca1b479f14f9fe0d873b8 \ + --hash=sha256:c90e73bdecb7b0d1cea65a08cb41e9d672ac6d7995603d6465ed4914b98b9ad7 \ + --hash=sha256:d2b96123a453a2d7f3995ddb9f28d01fd112319a7a4d5ca99796a7ff43f02af5 \ + --hash=sha256:d52f0a114b6a58305b11a5cdecd42b2e7f1ec77eb20e2b33969d702feafdd016 \ + --hash=sha256:d530191aa9c66ab4f190be8ac8cc7cfd8f4f3217da379606f3dd4e3d83feba69 \ + --hash=sha256:d683d230b5774816e7d784d7ed8444f2a40e7a450e5720d58af593cb0b94a212 \ + --hash=sha256:db45eec1dfccdadb179b0f9ca616872c6f700d23945ecc8f21bb105d74b1c5fc \ + --hash=sha256:db8c2c5ace167fd25ab5dd732714c51d4633f58bac21fb0ff63b0349f62755a8 \ + --hash=sha256:e2926b8abedf750c2ecf5035c07515770944acf02e1c46ab08f6348d24c5f94d \ + --hash=sha256:e627dee428a176ffb13697a2c4318d3f60b2ccdde3acdc9b3f304206ec130ccd \ + --hash=sha256:efe1c0adad110bf0ad7fb59f833880e489a61e39d699d37249bdf42f80590169 +dill==0.3.6 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0 \ + --hash=sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373 +exceptiongroup==1.1.1 ; python_version >= "3.9" and python_version < "3.11" \ + --hash=sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e \ + --hash=sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785 +fastapi==0.92.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:023a0f5bd2c8b2609014d3bba1e14a1d7df96c6abea0a73070621c9862b9a4de \ + --hash=sha256:ae7b97c778e2f2ec3fb3cb4fb14162129411d99907fb71920f6d69a524340ebf +flake8==6.0.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7 \ + --hash=sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181 +h11==0.14.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ + --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 +httpcore==0.16.3 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb \ + --hash=sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0 +httpx==0.23.3 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9 \ + --hash=sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6 +idna==3.4 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ + --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 +importlib-resources==5.12.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6 \ + --hash=sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a +iniconfig==2.0.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ + --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 +isort==5.12.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504 \ + --hash=sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6 +lazy-object-proxy==1.9.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382 \ + --hash=sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82 \ + --hash=sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9 \ + --hash=sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494 \ + --hash=sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46 \ + --hash=sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30 \ + --hash=sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63 \ + --hash=sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4 \ + --hash=sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae \ + --hash=sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be \ + --hash=sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701 \ + --hash=sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd \ + --hash=sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006 \ + --hash=sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a \ + --hash=sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586 \ + --hash=sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8 \ + --hash=sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821 \ + --hash=sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07 \ + --hash=sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b \ + --hash=sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171 \ + --hash=sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b \ + --hash=sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2 \ + --hash=sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7 \ + --hash=sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4 \ + --hash=sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8 \ + --hash=sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e \ + --hash=sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f \ + --hash=sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda \ + --hash=sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4 \ + --hash=sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e \ + --hash=sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671 \ + --hash=sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11 \ + --hash=sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455 \ + --hash=sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734 \ + --hash=sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb \ + --hash=sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59 +mccabe==0.7.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ + --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e +mypy-extensions==1.0.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ + --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 +mypy==1.1.1 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:0a28a76785bf57655a8ea5eb0540a15b0e781c807b5aa798bd463779988fa1d5 \ + --hash=sha256:19ba15f9627a5723e522d007fe708007bae52b93faab00f95d72f03e1afa9598 \ + --hash=sha256:21b437be1c02712a605591e1ed1d858aba681757a1e55fe678a15c2244cd68a5 \ + --hash=sha256:26cdd6a22b9b40b2fd71881a8a4f34b4d7914c679f154f43385ca878a8297389 \ + --hash=sha256:2888ce4fe5aae5a673386fa232473014056967f3904f5abfcf6367b5af1f612a \ + --hash=sha256:2b0c373d071593deefbcdd87ec8db91ea13bd8f1328d44947e88beae21e8d5e9 \ + --hash=sha256:315ac73cc1cce4771c27d426b7ea558fb4e2836f89cb0296cbe056894e3a1f78 \ + --hash=sha256:39c7119335be05630611ee798cc982623b9e8f0cff04a0b48dfc26100e0b97af \ + --hash=sha256:4b398d8b1f4fba0e3c6463e02f8ad3346f71956b92287af22c9b12c3ec965a9f \ + --hash=sha256:4e4e8b362cdf99ba00c2b218036002bdcdf1e0de085cdb296a49df03fb31dfc4 \ + --hash=sha256:59bbd71e5c58eed2e992ce6523180e03c221dcd92b52f0e792f291d67b15a71c \ + --hash=sha256:5b5f81b40d94c785f288948c16e1f2da37203c6006546c5d947aab6f90aefef2 \ + --hash=sha256:5cb14ff9919b7df3538590fc4d4c49a0f84392237cbf5f7a816b4161c061829e \ + --hash=sha256:61bf08362e93b6b12fad3eab68c4ea903a077b87c90ac06c11e3d7a09b56b9c1 \ + --hash=sha256:64cc3afb3e9e71a79d06e3ed24bb508a6d66f782aff7e56f628bf35ba2e0ba51 \ + --hash=sha256:69b35d1dcb5707382810765ed34da9db47e7f95b3528334a3c999b0c90fe523f \ + --hash=sha256:9401e33814cec6aec8c03a9548e9385e0e228fc1b8b0a37b9ea21038e64cdd8a \ + --hash=sha256:a380c041db500e1410bb5b16b3c1c35e61e773a5c3517926b81dfdab7582be54 \ + --hash=sha256:ae9ceae0f5b9059f33dbc62dea087e942c0ccab4b7a003719cb70f9b8abfa32f \ + --hash=sha256:b7c7b708fe9a871a96626d61912e3f4ddd365bf7f39128362bc50cbd74a634d5 \ + --hash=sha256:c1c10fa12df1232c936830839e2e935d090fc9ee315744ac33b8a32216b93707 \ + --hash=sha256:ce61663faf7a8e5ec6f456857bfbcec2901fbdb3ad958b778403f63b9e606a1b \ + --hash=sha256:d64c28e03ce40d5303450f547e07418c64c241669ab20610f273c9e6290b4b0b \ + --hash=sha256:d809f88734f44a0d44959d795b1e6f64b2bbe0ea4d9cc4776aa588bb4229fc1c \ + --hash=sha256:dbb19c9f662e41e474e0cff502b7064a7edc6764f5262b6cd91d698163196799 \ + --hash=sha256:ef6a01e563ec6a4940784c574d33f6ac1943864634517984471642908b30b6f7 +packaging==23.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2 \ + --hash=sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97 +pathspec==0.11.1 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687 \ + --hash=sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293 +platformdirs==3.2.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08 \ + --hash=sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e +pluggy==1.0.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ + --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 +pycodestyle==2.10.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053 \ + --hash=sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610 +pydantic==1.10.7 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:01aea3a42c13f2602b7ecbbea484a98169fb568ebd9e247593ea05f01b884b2e \ + --hash=sha256:0cd181f1d0b1d00e2b705f1bf1ac7799a2d938cce3376b8007df62b29be3c2c6 \ + --hash=sha256:10a86d8c8db68086f1e30a530f7d5f83eb0685e632e411dbbcf2d5c0150e8dcd \ + --hash=sha256:193924c563fae6ddcb71d3f06fa153866423ac1b793a47936656e806b64e24ca \ + --hash=sha256:464855a7ff7f2cc2cf537ecc421291b9132aa9c79aef44e917ad711b4a93163b \ + --hash=sha256:516f1ed9bc2406a0467dd777afc636c7091d71f214d5e413d64fef45174cfc7a \ + --hash=sha256:6434b49c0b03a51021ade5c4daa7d70c98f7a79e95b551201fff682fc1661245 \ + --hash=sha256:64d34ab766fa056df49013bb6e79921a0265204c071984e75a09cbceacbbdd5d \ + --hash=sha256:670bb4683ad1e48b0ecb06f0cfe2178dcf74ff27921cdf1606e527d2617a81ee \ + --hash=sha256:68792151e174a4aa9e9fc1b4e653e65a354a2fa0fed169f7b3d09902ad2cb6f1 \ + --hash=sha256:701daea9ffe9d26f97b52f1d157e0d4121644f0fcf80b443248434958fd03dc3 \ + --hash=sha256:7d45fc99d64af9aaf7e308054a0067fdcd87ffe974f2442312372dfa66e1001d \ + --hash=sha256:80b1fab4deb08a8292d15e43a6edccdffa5377a36a4597bb545b93e79c5ff0a5 \ + --hash=sha256:82dffb306dd20bd5268fd6379bc4bfe75242a9c2b79fec58e1041fbbdb1f7914 \ + --hash=sha256:8c7f51861d73e8b9ddcb9916ae7ac39fb52761d9ea0df41128e81e2ba42886cd \ + --hash=sha256:950ce33857841f9a337ce07ddf46bc84e1c4946d2a3bba18f8280297157a3fd1 \ + --hash=sha256:976cae77ba6a49d80f461fd8bba183ff7ba79f44aa5cfa82f1346b5626542f8e \ + --hash=sha256:9f6f0fd68d73257ad6685419478c5aece46432f4bdd8d32c7345f1986496171e \ + --hash=sha256:a7cd2251439988b413cb0a985c4ed82b6c6aac382dbaff53ae03c4b23a70e80a \ + --hash=sha256:abfb7d4a7cd5cc4e1d1887c43503a7c5dd608eadf8bc615413fc498d3e4645cd \ + --hash=sha256:ae150a63564929c675d7f2303008d88426a0add46efd76c3fc797cd71cb1b46f \ + --hash=sha256:b0f85904f73161817b80781cc150f8b906d521fa11e3cdabae19a581c3606209 \ + --hash=sha256:b4a849d10f211389502059c33332e91327bc154acc1845f375a99eca3afa802d \ + --hash=sha256:c15582f9055fbc1bfe50266a19771bbbef33dd28c45e78afbe1996fd70966c2a \ + --hash=sha256:c230c0d8a322276d6e7b88c3f7ce885f9ed16e0910354510e0bae84d54991143 \ + --hash=sha256:cc1dde4e50a5fc1336ee0581c1612215bc64ed6d28d2c7c6f25d2fe3e7c3e918 \ + --hash=sha256:cf135c46099ff3f919d2150a948ce94b9ce545598ef2c6c7bf55dca98a304b52 \ + --hash=sha256:cfc83c0678b6ba51b0532bea66860617c4cd4251ecf76e9846fa5a9f3454e97e \ + --hash=sha256:d2a5ebb48958754d386195fe9e9c5106f11275867051bf017a8059410e9abf1f \ + --hash=sha256:d71e69699498b020ea198468e2480a2f1e7433e32a3a99760058c6520e2bea7e \ + --hash=sha256:d75ae19d2a3dbb146b6f324031c24f8a3f52ff5d6a9f22f0683694b3afcb16fb \ + --hash=sha256:dfe2507b8ef209da71b6fb5f4e597b50c5a34b78d7e857c4f8f3115effaef5fe \ + --hash=sha256:e0cfe895a504c060e5d36b287ee696e2fdad02d89e0d895f83037245218a87fe \ + --hash=sha256:e79e999e539872e903767c417c897e729e015872040e56b96e67968c3b918b2d \ + --hash=sha256:ecbbc51391248116c0a055899e6c3e7ffbb11fb5e2a4cd6f2d0b93272118a209 \ + --hash=sha256:f4a2b50e2b03d5776e7f21af73e2070e1b5c0d0df255a827e7c632962f8315af +pyflakes==3.0.1 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf \ + --hash=sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd +pylint==2.17.2 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:001cc91366a7df2970941d7e6bbefcbf98694e00102c1f121c531a814ddc2ea8 \ + --hash=sha256:1b647da5249e7c279118f657ca28b6aaebb299f86bf92affc632acf199f7adbb +pytest-cov==4.0.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b \ + --hash=sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470 +pytest==7.2.2 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e \ + --hash=sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4 +rfc3986[idna2008]==1.5.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835 \ + --hash=sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97 +sniffio==1.3.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ + --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 +starlette==0.25.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:774f1df1983fd594b9b6fb3ded39c2aa1979d10ac45caac0f4255cbe2acb8628 \ + --hash=sha256:854c71e73736c429c2bdb07801f2c76c9cba497e7c3cf4988fde5e95fe4cdb3c +tomli==2.0.1 ; python_version >= "3.9" and python_full_version <= "3.11.0a6" \ + --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ + --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f +tomlkit==0.11.7 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:5325463a7da2ef0c6bbfefb62a3dc883aebe679984709aee32a317907d0a8d3c \ + --hash=sha256:f392ef70ad87a672f02519f99967d28a4d3047133e2d1df936511465fbb3791d +typing-extensions==4.5.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb \ + --hash=sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4 +uvicorn==0.20.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:a4e12017b940247f836bc90b72e725d7dfd0c8ed1c51eb365f5ba30d9f5127d8 \ + --hash=sha256:c3ed1598a5668208723f2bb49336f4509424ad198d6ab2615b7783db58d919fd +wrapt==1.15.0 ; python_version >= "3.9" and python_version < "4.0" \ + --hash=sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0 \ + --hash=sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420 \ + --hash=sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a \ + --hash=sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c \ + --hash=sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079 \ + --hash=sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923 \ + --hash=sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f \ + --hash=sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1 \ + --hash=sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8 \ + --hash=sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86 \ + --hash=sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0 \ + --hash=sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364 \ + --hash=sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e \ + --hash=sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c \ + --hash=sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e \ + --hash=sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c \ + --hash=sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727 \ + --hash=sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff \ + --hash=sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e \ + --hash=sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29 \ + --hash=sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7 \ + --hash=sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72 \ + --hash=sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475 \ + --hash=sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a \ + --hash=sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317 \ + --hash=sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2 \ + --hash=sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd \ + --hash=sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640 \ + --hash=sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98 \ + --hash=sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248 \ + --hash=sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e \ + --hash=sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d \ + --hash=sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec \ + --hash=sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1 \ + --hash=sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e \ + --hash=sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9 \ + --hash=sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92 \ + --hash=sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb \ + --hash=sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094 \ + --hash=sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46 \ + --hash=sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29 \ + --hash=sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd \ + --hash=sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705 \ + --hash=sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8 \ + --hash=sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975 \ + --hash=sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb \ + --hash=sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e \ + --hash=sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b \ + --hash=sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418 \ + --hash=sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019 \ + --hash=sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1 \ + --hash=sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba \ + --hash=sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6 \ + --hash=sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2 \ + --hash=sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3 \ + --hash=sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7 \ + --hash=sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752 \ + --hash=sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416 \ + --hash=sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f \ + --hash=sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1 \ + --hash=sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc \ + --hash=sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145 \ + --hash=sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee \ + --hash=sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a \ + --hash=sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7 \ + --hash=sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b \ + --hash=sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653 \ + --hash=sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0 \ + --hash=sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90 \ + --hash=sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29 \ + --hash=sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6 \ + --hash=sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034 \ + --hash=sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09 \ + --hash=sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559 \ + --hash=sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639 +zipp==3.15.0 ; python_version >= "3.9" and python_version < "3.10" \ + --hash=sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b \ + --hash=sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556 diff --git a/src/vtp/web/api/backend.py b/src/vtp/web/api/backend.py new file mode 100644 index 0000000..a1f434c --- /dev/null +++ b/src/vtp/web/api/backend.py @@ -0,0 +1,223 @@ +""" +Backend support for the web-api. One important aspect of this file is +to support web-api testing in the absense of a live ElectionData +deployment. An ElectionData deployment is when a +setup-vtp-demo-operation operation has been run, nominally creating a +/opt/VoteTrackerPlus/demo.01 ElectionData folder and the required +subfolders. + +With an ElectionData deployment the VTP git commands can be executed +and VoteTracker+ can function as designed. + +Without an ElectionData deployment VTP git commands cannot be +executed. Currently this state is configured by the _MOCK_MODE +variable below. When set, and when this repo is part of the +VTP-dev-env parent repo (or when the VoteTrackerPlus and +VTP-mock-election.US.xx repos are simply sibling repos of this one), +the commands here do not call into the VoteTrackerPlus repo and +instead stub out the effective IO operations with static, non-varying +mock data. That mock data is currently nominally stored in (checked +into) the VTP-mock-election.US.xx repo as the mock data is a direct +function of the live ElectionData election configuration and CVR data +found in that repo. And that is due to two things: 1) the +VTP-mock-election.US.xx holds the configuration of an election such as +the blank ballot definition and 2) it also holds several hundred +pre-cast random ballots so to fill the ballot cache so that +ballot-checks can be immediately produced upon casting a ballot. + +Regardless, for the time being the VTP-mock-election.US.xx also holds +checkedin mock values for the data that the web-api and above layers +need when running in mock mode. +""" + +import csv +import json + +from vtp.core.common import Common +from vtp.ops.accept_ballot_operation import AcceptBallotOperation +from vtp.ops.cast_ballot_operation import CastBallotOperation +from vtp.ops.setup_vtp_demo_operation import SetupVtpDemoOperation +from vtp.ops.show_contests_operation import ShowContestsOperation +from vtp.ops.tally_contests_operation import TallyContestsOperation +from vtp.ops.verify_ballot_receipt_operation import VerifyBallotReceiptOperation + + +class VtpBackend: + """ + Class to keep the namespace separate and allow the creation of a + shim layer in the VTP-web-api repo so that this repo can easily + talk with the VoteTrackerPlus backend repo. + """ + + ######## + # backend demo constants + ######## + # set mock mode + _MOCK_MODE = False + # where the blank ballot is stored for the spring demo + _MOCK_BLANK_BALLOT = "mock-data/blank-ballot.json" + # where the cast-ballot.json file is stored for the spring demo + _MOCK_CAST_BALLOT = "mock-data/cast-ballot.json" + # where the ballot-check is stored for the spring demo + _MOCK_BALLOT_CHECK = "mock-data/receipt.26.csv" + _MOCK_VOTER_INDEX = 26 + # a mock contest content + _MOCK_CONTEST_CONTENT = "mock-data/mock_contest.json" + # default guid - making one up + _MOCK_GUID = "01d963fd74100ee3f36428740a8efd8afd781839" + # default mock receipt log + _MOCK_VERIFY_BALLOT_LOG = "mock-data/verify-ballot-doc.json" + # default mock tally log + _MOCK_TALLY_CONTESTS_LOG = "mock-data/tally-election-doc.json" + # default mock show contest log + _MOCK_SHOW_CONTEST_LOG = "mock-data/show-contest-doc.json" + # backend default address + _ADDRESS = "123, Main Street, Concord, Massachusetts" + + @staticmethod + def get_vote_store_id() -> str: + """ + Endpoint #1: will return a vote_store_id, a.k.a. a guid + """ + if VtpBackend._MOCK_MODE: + # in mock mode there is no guid - make one up + return VtpBackend._MOCK_GUID + operation = SetupVtpDemoOperation( + election_data_dir=Common.get_generic_ro_edf_dir(), + ) + return operation.run(guid_client_store=True) + + @staticmethod + def get_empty_ballot(vote_store_id: str) -> dict: + """ + Endpoint #2: given an existing guid, will return the blank + ballot + """ + if VtpBackend._MOCK_MODE: + # in mock mode there is no guid - make one up + with open(VtpBackend._MOCK_BLANK_BALLOT, "r", encoding="utf8") as infile: + json_doc = json.load(infile) + # import pdb; pdb.set_trace() + return json_doc + # Cet a (the) blank ballot from the backend + operation = CastBallotOperation( + election_data_dir=Common.get_guid_based_edf_dir(vote_store_id), + ) + return operation.run( + an_address = VtpBackend._ADDRESS, + return_bb=True, + ) + + @staticmethod + def get_all_guid_workspaces() -> list: + """ + Will return a list of all the existing guid workspaces + """ + return SetupVtpDemoOperation.get_all_guid_workspaces() + + @staticmethod + def mock_get_cast_ballot() -> dict: + """Mock only - return a static cast ballot""" + with open(VtpBackend._MOCK_CAST_BALLOT, "r", encoding="utf8") as infile: + json_doc = json.load(infile) + return json_doc + + @staticmethod + def mock_get_ballot_check() -> tuple[list, int]: + """Mock only - return a static cast ballot""" + with open(VtpBackend._MOCK_BALLOT_CHECK, "r", encoding="utf8") as infile: + csv_doc = list(csv.reader(infile)) + return csv_doc, VtpBackend._MOCK_VOTER_INDEX + + @staticmethod + def cast_ballot(vote_store_id: str, cast_ballot: dict) -> dict: + """ + Endpoint #3: will cast (upload) a cast ballot and return the + ballot-check and voter-index + """ + if VtpBackend._MOCK_MODE: + # Just return a mock ballot-check and voter-index + return VtpBackend.mock_get_ballot_check() + # handle the incoming ballot and return the ballot-check and voter-index + operation = AcceptBallotOperation( + election_data_dir=Common.get_guid_based_edf_dir(vote_store_id), + ) + return operation.run( + cast_ballot_json=cast_ballot, + merge_contests=True, + ) + + @staticmethod + def verify_ballot_check( + vote_store_id: str, + ballot_check: list, + vote_index: int, + cvr: bool = False, + ) -> str: + """ + Endpoint #4: will verify a ballot-check and vote-inded, returning an + undefined string at this time. + """ + if VtpBackend._MOCK_MODE: + # Just return a mock verify ballot string + with open(VtpBackend._MOCK_VERIFY_BALLOT_LOG, "r", encoding="utf8") as infile: + json_doc = json.load(infile) + return json_doc + # handle the incoming ballot and return the ballot-check and voter-index + operation = VerifyBallotReceiptOperation( + election_data_dir=Common.get_guid_based_edf_dir(vote_store_id), + stdout_printing=False, + ) + return operation.run( + receipt_data=ballot_check, + row=str(vote_index), + cvr=cvr, + ) + + @staticmethod + def tally_election_check( + vote_store_id: str, + contests: str, + digests: str, + ) -> str: + """ + Endpoint #5: will tally an election and print stuff + """ + if VtpBackend._MOCK_MODE: + # Just return a mock tally string + with open(VtpBackend._MOCK_TALLY_CONTESTS_LOG, "r", encoding="utf8") as infile: + json_doc = json.load(infile) + return json_doc + # handle the incoming ballot and return the ballot-check and voter-index + operation = TallyContestsOperation( + election_data_dir=Common.get_guid_based_edf_dir(vote_store_id), + stdout_printing=False, + ) + if digests == "None": + digests = "" + if contests == "None": + contests = "" + return operation.run( + contest_uid=contests, + track_contests=digests, + ) + + @staticmethod + def show_contest( + vote_store_id: str, + contests: str, + ) -> dict: + """ + Endpoint #6: display the contents of one or more contests + """ + if VtpBackend._MOCK_MODE: + # Just return a mock contest + with open(VtpBackend._MOCK_SHOW_CONTEST_LOG, "r", encoding="utf8") as infile: + json_doc = json.load(infile) + return json_doc + # handle the show_contest + operation = ShowContestsOperation( + election_data_dir=Common.get_guid_based_edf_dir(vote_store_id), + stdout_printing=False, + ) + return {"contents": operation.run(contest_check=contests)} diff --git a/src/vtp/web/api/data/alameda_ca.json b/src/vtp/web/api/data/alameda_ca.json deleted file mode 100644 index d045f5d..0000000 --- a/src/vtp/web/api/data/alameda_ca.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "active_ggos": [ - ".", - "GGOs/states/California", - "GGOs/states/California/GGOs/counties/Alameda", - "GGOs/states/California/GGOs/towns/Alameda" - ], - "ballot_node": "GGOs/states/California/GGOs/towns/Alameda", - "ballot_subdir": "GGOs/states/California/GGOs/towns/Alameda", - "contests": { - "GGOs/states/California": [ - { - "US president": { - "choices": [ - { - "name": "Mitt Romney", - "party": "Circle Party" - }, - { - "name": "Phil Scott", - "party": "Circle Party" - }, - { - "name": "Ron DeSantis", - "party": "Circle Party" - }, - { - "name": "Kamala Harris", - "party": "Triangle Party" - }, - { - "name": "Cory Booker", - "party": "Triangle Party" - }, - { - "name": "Beta O'rourke", - "party": "Triangle Party" - } - ], - "tally": "rcv", - "uid": "0000" - } - }, - { - "US senate": { - "choices": [ - { - "name": "Larry Hogan", - "party": "Circle Party" - }, - { - "name": "Greg Abbott", - "party": "Circle Party" - }, - { - "name": "Pramila Jayapal", - "party": "Triangle Circle Party" - }, - { - "name": "Alexandria Ocasio-Cortez", - "party": "Triangle Party" - } - ], - "tally": "rcv", - "uid": "0001" - } - }, - { - "governor": { - "choices": [ - { - "name": "Brian Kemp", - "party": "Circle Party" - }, - { - "name": "Bernie Sanders", - "party": "Triangle Party" - } - ], - "tally": "plurality", - "uid": "0002" - } - } - ], - "GGOs/states/California/GGOs/counties/Alameda": [ - { - "County Clerk": { - "choices": [ - "Jean-Luc Picard", - "Huckleberry Finn", - "Peggy Carter" - ], - "tally": "plurality", - "uid": "0003" - } - } - ], - "GGOs/states/California/GGOs/towns/Alameda": [ - { - "mayor": { - "choices": [ - { - "name": "Twenty Seven", - "party": "Circle Party" - }, - { - "name": "Twenty Eight", - "party": "Triangle Party" - }, - { - "name": "Jane Doe", - "party": "Pentagon Party" - }, - { - "name": "John Doe", - "party": "Rectangle Party" - } - ], - "tally": "rcv", - "uid": "0005" - } - }, - { - "Question 1 - school budget override": { - "choices": [ - true, - false - ], - "tally": "plurality", - "uid": "0006" - } - }, - { - "Question 2 - new firehouse land purchase": { - "choices": [ - true, - false - ], - "tally": "plurality", - "uid": "0007", - "win-by": "2/3" - } - } - ] - } -} \ No newline at end of file diff --git a/src/vtp/web/api/json_data_models.py b/src/vtp/web/api/json_data_models.py new file mode 100644 index 0000000..08eb13a --- /dev/null +++ b/src/vtp/web/api/json_data_models.py @@ -0,0 +1,143 @@ +""" +Pydantic Models for the blank and cast ballots, the ballot check, and +the voter's index. It is probably the case that there is not enough +time to create models for endpoints 4 and 5 as that data is currently +in more or less system log sytax. +""" + +from typing import Dict, List, Union + +from pydantic import BaseModel + +# This is a data model file +# pylint: disable=too-few-public-methods + + +class Choice(BaseModel): + """A choice made by a voter in a contest""" + + name: str + party: str = None + ticket_names: List[str] = None + + +class BaseUncastContest(BaseModel): + """The common fields across all VTP contests when uncast""" + + choices: List[Choice] + max: int = None + tally: str + uid: str + win_by: float = None + + +class BaseCastContest(BaseModel): + """The common fields across all VTP contests when cast""" + + choices: List[Choice] + contest_type: str = None + max: int = None + selection: List[str] + tally: str + uid: str + win_by: float = None + + +class ContestantUncastContest(BaseUncastContest): + """ + A contestant contest is the most basic. The description field is + optional while being mostly ignored. + """ + + contest_type: str = None + description: str = None + + +class ContestantCastContest(BaseCastContest): + """ + A contestant contest is the most basic. The description field is + optional while being mostly ignored. + """ + + contest_type: str = None + description: str = None + + +class QuestionUncastContest(BaseUncastContest): + """ + A ballot question data object - requires a description (well not + really, but why not?) + """ + + description: str + + +class QuestionCastContest(BaseCastContest): + """ + A ballot question data object - requires a description (well not + really, but why not?) + """ + + description: str + + +class TicketUncastContest(BaseUncastContest): + """A ticket contest requires a contest_type value of 'ticket'""" + + contest_type: str = "ticket" + ticket_offices: List[str] + + +class TicketCastContest(BaseCastContest): + """A ticket contest requires a contest_type value of 'ticket'""" + + contest_type: str = "ticket" + ticket_offices: List[str] + + +class AnyUncastContest(BaseModel): + """ + Only here because I don't know what I am doing and the CastBallot + class needs to be able to contain any number of any of the threee + """ + + __root__: List[ + Dict[ + str, + Union[ContestantUncastContest, QuestionUncastContest, TicketUncastContest], + ] + ] + + +class AnyCastContest(BaseModel): + """ + Only here because I don't know what I am doing and the CastBallot + class needs to be able to contain any number of any of the threee + """ + + __root__: List[ + Dict[ + str, + Union[ContestantCastContest, QuestionCastContest, TicketCastContest], + ] + ] + + +class BlankBallot(BaseModel): + """A blank ballot - cannot contain a selection node in any contest""" + + active_ggos: List[str] + ballot_filename: str + ballot_node: str + ballot_subdir: str + contests: Dict[str, AnyUncastContest] + + +class CastBallot(BaseModel): + """A cast ballot - must contain a selection node in each contest""" + + active_ggos: List[str] + ballot_filename: str + ballot_node: str + ballot_subdir: str + contests: Dict[str, AnyCastContest] diff --git a/src/vtp/web/api/main.py b/src/vtp/web/api/main.py index 613c2fe..7127d1a 100644 --- a/src/vtp/web/api/main.py +++ b/src/vtp/web/api/main.py @@ -1,19 +1,15 @@ """API endpoints for the VoteTrackerPlus backend""" -import json -import random from fastapi import FastAPI -from importlib_resources import files - -import vtp.web.api.data +from backend import VtpBackend app = FastAPI() -# create a list to store VoteStoreIDs -vote_store_ids = [] -# read empty ballot from JSON file -ballot_data = files(vtp.web.api.data).joinpath("alameda_ca.json").read_text() -empty_ballot = json.loads(ballot_data) +######## +# local variables +######## +# A dict to store VoteStoreIDs +vote_store_ids = {} @app.get("/") @@ -22,19 +18,152 @@ async def root() -> dict: return {"version": "0.1.0"} -@app.get("/vote/") +# Endpoint #1 +@app.post("/vote") async def get_vote_store_id() -> dict: """Create and store a unique Vote Store ID for each client""" - vote_store_id = str(random.randrange(100000, 999999)) - # add VoteStoreID to list - vote_store_ids.append(vote_store_id) + + vote_store_id = VtpBackend.get_vote_store_id() + vote_store_ids[vote_store_id] = "uncast" return {"VoteStoreID": vote_store_id} +# Endpoint #2 @app.get("/vote/{vote_store_id}") async def get_empty_ballot(vote_store_id: str) -> dict: """Return an empty ballot for a given Vote Store ID""" - if vote_store_id in vote_store_ids: - return {"ballot": f"{empty_ballot}"} - else: + + if vote_store_id not in vote_store_ids: + return {"error": "VoteStoreID not found"} + + empty_ballot = VtpBackend.get_empty_ballot(vote_store_id) + return {"blank-ballot": empty_ballot} + +# for testing - show a mock cast ballot +@app.get("/show-mock-ballot") +async def show_mock_cast_ballot() -> dict: + """Print a mock cast ballot""" + + a_cast_ballot = VtpBackend.mock_get_cast_ballot() + return {"cast-ballot": a_cast_ballot} + +# for testing - reuse a guid +@app.post("/restore-existing-guids") +async def restore_existing_guids() -> dict: + """Will restore the existing vote_store_id's""" + guids = VtpBackend.get_all_guid_workspaces() + for guid in guids: + vote_store_ids[guid] = "restored" + return { "restored": guids } + +# Endpoint #3 + +# To manually test endpoint #3 do something like: +# pylint: disable=line-too-long +# curl -i -X POST -H 'Content-Type: application/json' -d @docs/cast-ballot.json http://127.0.0.1:8000/cast-ballot/904ac6dc58021d7d9bf9e215bcd69c8e3a28b807 + +@app.post("/cast-ballot/{vote_store_id}") +async def cast_ballot( + vote_store_id: str, + incoming_ballot_data: dict, +) -> dict: + """ + Uploads the ballot; the backend accepts it, merges it, and returns + the ballot check and voter index + """ + + # breakpoint() + if vote_store_id not in vote_store_ids: return {"error": "VoteStoreID not found"} + if vote_store_ids[vote_store_id] == "cast": + return {"error": "This ballot has already been cast"} + + ballot_check, vote_index = VtpBackend.cast_ballot( + vote_store_id, + incoming_ballot_data, + ) + vote_store_ids[vote_store_id] = "cast" + return {"ballot-check": ballot_check, "vote-index": vote_index} + +# Endpoint #4 + +# To manually test #4 do something like: +# pylint: disable=line-too-long +# curl -i -X POST -H 'Content-Type: application/json' -d @receipts/receipt.59.json http://127.0.0.1:8000/verify-ballot-check/d08a278a9a6b82040d505b9aae194efb72cceb0e + +@app.post("/verify-ballot-check/{vote_store_id}") +async def verify_ballot_check( + vote_store_id: str, + incoming_ballot_data: dict, +) -> dict: + """ + Will verify the ballot-check and voter-id. Return values are TBD + pending further discussions + """ + + # breakpoint() + ballot_check = incoming_ballot_data["ballot-check"] + vote_index = incoming_ballot_data["vote-index"] + if vote_store_id not in vote_store_ids: + return {"error": "VoteStoreID not found"} + + ballot_check_doc = VtpBackend.verify_ballot_check( + vote_store_id, + ballot_check, + vote_index, + ) + return {"ballot-check-doc": ballot_check_doc} + + +# Endpoint #5 + +# To manually test #4 do something like: +# pylint: disable=line-too-long +# curl -i -X GET -H 'Content-Type: application/json' http://127.0.0.1:8000/tally-election/d08a278a9a6b82040d505b9aae194efb72cceb0e/0001/8bef5f87658c40bbe7dcda814422a59e844b204d + +@app.get("/tally-election/{vote_store_id}/{contests}/{digests}") +async def tally_election( + vote_store_id: str, + contests: str, + digests: str, +) -> dict: + """ + Will execute the tally, optionally limited to a list of contests, + tracking an optional list of digests. At some later time with a + better understanding of the client side UX a verbosity switch + could be added. Perhaps. + + The contests and digests fields are optional but must be a comma + separated string (no spaces). If not specified they should be the + string "None". + """ + + # breakpoint() + if vote_store_id not in vote_store_ids: + return {"error": "VoteStoreID not found"} + + tally_election_doc = VtpBackend.tally_election_check( + vote_store_id, + contests, + digests, + ) + return {"tally-election-doc": tally_election_doc} + +# Endpoint #6 +@app.get("/contests/{vote_store_id}/{contests}") +async def show_contest( + vote_store_id: str, + contests: str, +) -> dict: + """ + Will display the CVR contents of one or more contests + """ + + # breakpoint() + if vote_store_id not in vote_store_ids: + return {"error": "VoteStoreID not found"} + + return VtpBackend.show_contest( + vote_store_id, + contests, + ) diff --git a/src/vtp/web/api/mock-data/blank-ballot.json b/src/vtp/web/api/mock-data/blank-ballot.json new file mode 100644 index 0000000..ce55b4b --- /dev/null +++ b/src/vtp/web/api/mock-data/blank-ballot.json @@ -0,0 +1,123 @@ +{ + "active_ggos": [ + ".", + "GGOs/states/Massachusetts", + "GGOs/states/Massachusetts/GGOs/counties/Middlesex", + "GGOs/states/Massachusetts/GGOs/towns/Concord" + ], + "ballot_filename": "000,001,002,003,ballot.json", + "ballot_node": "GGOs/states/Massachusetts/GGOs/towns/Concord", + "ballot_subdir": "GGOs/states/Massachusetts/GGOs/towns/Concord", + "contests": { + "GGOs/states/Massachusetts": [ + { + "US president": { + "choices": [ + { + "name": "Circle Party Ticket", + "ticket_names": [ + "Rey Skywalker", + "Obi-Wan Kenobi" + ] + }, + { + "name": "Square Party Ticket", + "ticket_names": [ + "Atticus Finch", + "Hermione Granger" + ] + }, + { + "name": "Triangle Party Ticket", + "ticket_names": [ + "Evelyn Quan Wang", + "Waymond Wang" + ] + } + ], + "contest_type": "ticket", + "tally": "rcv", + "ticket_offices": [ + "President", + "Vice President" + ], + "uid": "0000" + } + }, + { + "U.S. Senate": { + "choices": [ + { + "name": "Anthony Alpha", + "party": "Circle Party" + }, + { + "name": "Betty Beta", + "party": "Pentagon Party" + }, + { + "name": "Gloria Gamma", + "party": "Square Party" + }, + { + "name": "David Delta", + "party": "Triangle Party" + }, + { + "name": "Emily Echo", + "party": "Ellipse Party" + }, + { + "name": "Francis Foxtrot", + "party": "Octagon Party" + } + ], + "tally": "rcv", + "uid": "0001" + } + }, + { + "governor": { + "choices": [ + { + "name": "Spencer Cogswell", + "party": "Circle Party" + }, + { + "name": "Cosmo Spacely", + "party": "Triangle Party" + } + ], + "tally": "plurality", + "uid": "0002" + } + } + ], + "GGOs/states/Massachusetts/GGOs/counties/Middlesex": [ + { + "County Clerk": { + "choices": [ + "Jean-Luc Picard", + "Katniss Everdeen", + "James T. Kirk" + ], + "tally": "plurality", + "uid": "0003" + } + } + ], + "GGOs/states/Massachusetts/GGOs/towns/Concord": [ + { + "Question 1 - should the starting time of the annual town meeting be moved to 6:30PM?": { + "choices": [ + "yes", + "no" + ], + "description": "Should the Town of Concord start the annual Town Meeting at 6:30PM instead of 7:00PM?\n", + "tally": "plurality", + "uid": "0004" + } + } + ] + } +} \ No newline at end of file diff --git a/src/vtp/web/api/mock-data/cast-ballot.json b/src/vtp/web/api/mock-data/cast-ballot.json new file mode 100644 index 0000000..492d2cc --- /dev/null +++ b/src/vtp/web/api/mock-data/cast-ballot.json @@ -0,0 +1,144 @@ +{ + "active_ggos": [ + ".", + "GGOs/states/Massachusetts", + "GGOs/states/Massachusetts/GGOs/counties/Middlesex", + "GGOs/states/Massachusetts/GGOs/towns/Concord" + ], + "ballot_filename": "000,001,002,003,ballot.json", + "ballot_node": "GGOs/states/Massachusetts/GGOs/towns/Concord", + "ballot_subdir": "GGOs/states/Massachusetts/GGOs/towns/Concord", + "contests": { + "GGOs/states/Massachusetts": [ + { + "U.S. President": { + "choices": [ + { + "name": "Circle Party Ticket", + "ticket_names": [ + "Rey Skywalker", + "Obi-Wan Kenobi" + ] + }, + { + "name": "Square Party Ticket", + "ticket_names": [ + "Atticus Finch", + "Hermione Granger" + ] + }, + { + "name": "Triangle Party Ticket", + "ticket_names": [ + "Evelyn Quan Wang", + "Waymond Wang" + ] + } + ], + "contest_type": "ticket", + "selection": [ + "2: Triangle Party Ticket", + "1: Square Party Ticket" + ], + "tally": "rcv", + "ticket_offices": [ + "President", + "Vice President" + ], + "uid": "0000" + } + }, + { + "U.S. Senate": { + "choices": [ + { + "name": "Anthony Alpha", + "party": "Circle Party" + }, + { + "name": "Betty Beta", + "party": "Pentagon Party" + }, + { + "name": "Gloria Gamma", + "party": "Square Party" + }, + { + "name": "David Delta", + "party": "Triangle Party" + }, + { + "name": "Emily Echo", + "party": "Ellipse Party" + }, + { + "name": "Francis Foxtrot", + "party": "Octagon Party" + } + ], + "selection": [ + "5: Francis Foxtrot", + "3: David Delta", + "1: Betty Beta" + ], + "tally": "rcv", + "uid": "0001" + } + }, + { + "Governor": { + "choices": [ + { + "name": "Spencer Cogswell", + "party": "Circle Party" + }, + { + "name": "Cosmo Spacely", + "party": "Triangle Party" + } + ], + "max": 1, + "selection": [ + "1: Cosmo Spacely" + ], + "tally": "plurality", + "uid": "0002" + } + } + ], + "GGOs/states/Massachusetts/GGOs/counties/Middlesex": [ + { + "County Clerk": { + "choices": [ + "Jean-Luc Picard", + "Katniss Everdeen", + "James T. Kirk" + ], + "max": 1, + "selection": [ + "0: Jean-Luc Picard" + ], + "tally": "plurality", + "uid": "0003" + } + } + ], + "GGOs/states/Massachusetts/GGOs/towns/Concord": [ + { + "Question 1 - should the starting time of the annual town meeting be moved to 6:30PM?": { + "choices": [ + "yes", + "no" + ], + "description": "Should the Town of Concord start the annual Town Meeting at 6:30PM instead of 7:00PM?\n", + "max": 1, + "selection": [ + "0: yes" + ], + "tally": "plurality", + "uid": "0004" + } + } + ] + } +} \ No newline at end of file diff --git a/src/vtp/web/api/mock-data/favicon.ico b/src/vtp/web/api/mock-data/favicon.ico new file mode 100644 index 0000000..92ca78f Binary files /dev/null and b/src/vtp/web/api/mock-data/favicon.ico differ diff --git a/src/vtp/web/api/mock-data/receipt.26.csv b/src/vtp/web/api/mock-data/receipt.26.csv new file mode 100644 index 0000000..7dc449f --- /dev/null +++ b/src/vtp/web/api/mock-data/receipt.26.csv @@ -0,0 +1,101 @@ +"0000 - US president","0001 - US senate","0002 - governor","0003 - County Clerk","0004 - Question 1 - should the starting time of the annual town meeting be moved to 6:30PM?" +de3d4d2d506a2af28cfa047e44adec58d1a2bfed,cdb82385949b3a97ff9dc0bf406af73ddce74f7b,892735beb31544cdf7f0a6c3746dc0c71d406434,452514388a16aa14409d3085042523fab379eeb4,64b72d95bfa2d509d8785afe3e45e165775c3c81 +7d947965a8f52dcce015e847509cf0d9d5324ec9,ca047f4da4fe6bb5e41b2ef54f489c2579439d59,eab9b168a11001a5e11a863f31d178d3a3685f1b,e22d02bd23c1d9258a4d711f966993638fed786c,aeac8adf121fe55339dbcb6acda0f979987af959 +a9041f408e3060ee15a6ec21dea8d7a5bb5fdc6f,239aa38cd09d7872eda9a33c40a6bd309f09aeb8,b362238c1ed68cb139fc15d1d5b511cfb27787f9,52898f49245ab510e3ac0af70a4d82919b216589,201af09015da31f8f3643c51e44834ecc28d9ede +408258409ee4f28e2b4d4f95c5a775047aecdeff,59b5d60409c00e0c928b4dd0e2d4c332c7cf0bfd,32f95d1cd4ccad5a081398560c7582119684f4c2,90d742c21a24eb6cf256034356fb9fe6e0c3db05,6b3badd633b75e64bf88c4807625b66df324ef9e +758687986af791566d8a50630ceddbfa058b3187,feb883fe297c18061c1a52eea7ad914483a36b45,b718b87bc151c2e4e84e0d63b09af9a7eee98ab8,76a9585c63123254aef494160b2e73287a90a25a,573a1679b4c2e4dfc2b3781bf49f6878fda32ceb +cfe3543ecd36cb6264e4b9008dfcccda0b198de7,c1e98c8e1fdbf3a0d6a49482b100d2b10e735f03,24bed18905794c840ef9a5d78778a68b70e88219,1219f57f38077bc408fa7fdc0625a0f7df1667a4,b198e3ff22ae18edd6a3ba118e94ddca199b5dc4 +10376a8c042b346251f46d5e5c57c54b42df01f5,99a49c095006eef70c97571e047bef2710920694,69c3d37e8469a2642746c201a07d3afe7bea74fe,d749c6230b632dcede90d310b7e20740b2e7d4be,af88c339a1ce37aa0b0bc76f547cffe56e585b41 +a2ec253fe9d1a1ae1425bcc1c77fb2b0fdd8064c,85ea9d032d392f8fb889ba011af649813c710f95,b019788a11ca1a478b155080db61cfad9f75bfd7,ef7bb75e544c9914ecd31ce04f4c41d16a92485f,ddfd6d74fdc181c8467a040c3d40d1118cbc41a8 +dcda1142758d2fa851fcad6fd244f3c9b719a8ed,4e8f069f0ca913171ec9a77ab204d82d16cccb05,f93941212bd610fae6bdd931b461b5a6f3cd1259,8f0ce4e850f374978140960509288549b21cbf9d,d21ac8978a7f33d6436450f9484091fee0d96ac0 +cc44dfec25517ee2a2551c1d4bb68a09f3aa14b9,c7e3e0d9c4bd4c4028ee1f4457a3005d1e721271,c2ff0c1ee3067370d56b64eb65fb1a31c0420905,387895da9eaea5b7bce6d032f4812cfd3a7a11a7,acbd21fd3c41ee4afdfcb4778fc79b8279cbc64e +6db09a8a4e3ae0fd4508cd17b9826050e339566e,d631fbaf73ad493f86d2ffe8be13dca39236307e,a7f96ed7e37bf2b321a9958eb792504736deccc2,66405365783b30fabd365ffbc45ea662b3eca57f,df7d39839ad101574995d6818610802cfa4b160e +c0aa94160d4d2ebe64dcf19455fc6cd53c212132,b4c91a53cdbbd3614c823a3c7c2a4bc8646fe6b3,7fcc5f607191f9755902f5d22b1ab4b48caa1c82,ec02e499db8026bfe9fbcedf82d01de1e4cf18b4,2f55d2eff56f0b9cf6259e588d55c55300c8e423 +97c821746ad73e24bcefe3b176e51f6e068e07df,8492499cd7532dabd2fb8cf2f1a75974a21fc954,b08df56fdb175dbe43342a9b5a714750ba5df23d,41d93700d5f25bd0dbc2db4dacddb0ea000adfae,5f0092563ed1a5f402f9b0f0fe1dcdd34e3e1bc3 +498c2506d35f70dd818d495f2fca01d74074479d,512e076313e0efe0931078abeb908f3ba93aca81,27779275a843d2a451e4de2c9302543f93513ed5,5eafee6d1d0d3834c7f9469d28000bbc42484974,3430eb06f4f8784bd035d7d9b3973f0044a38954 +6a7343aaf675b260c805aa226a6685bfa1736bde,f8791aad52adfe4cbabe7f5cbcb46819a13b673a,46e34bbb476181210eb817020b8671606c779e7f,a2c6b71858bd3aed2553f36064d11c64ab7283a7,6c3f1a630925d770ccaa4fee69f2d72f7bc1f4d5 +152c866ec3b52523fc2290396b61997dc74dc8c3,60b27dd6de6b511b2fb78a3522d57da14089e790,e85ae60f7ce7229fe3efb983d2494c68a1ca78b9,fd1d56ba14e9ac68f1d73491e214bded356877e9,e35b533048f393704f939d28859e57aadc284e35 +0ebdf954b78e0f636608616d8ab51433f7bc1323,9c15fff96725912a0b5f14ad7981ff180db286ef,34dea7372996affc16a5d779adea8aa7c3847a81,cadf7d91748dd9c1bd94d2e326feb203502b3ccb,28dc8ae5835838c06cef6a19ee2e3cef5e0cf37f +ce3b717ade65eda731ceae267b9553ffbf44ca35,3b1120c9748ab6b2e2c3e2f4295971ba58f958e0,b7ca39b4ab2e040423f6e10a17730ec8071abdf0,b589a05e04ef07728d1f0be9cb8a0b67148e58bd,3bf2329753f5b27018f4f34dac037bebada44ad7 +3779fb3af7771212fce1966ad4301c9995557fd9,6a971a61c443de4d97b4edc7f510d984bc120833,01bf3038c5dd57285e5f97e14365af15610f0236,d21f0504cdeb339e59d8bc5d749632b68bdfd4a5,94d8f68810feb27f25ce6f4a3b4dee261be4570c +6cef89f39bc4821555c3bde3fbf99910e6a3234b,b959a01161c9e0804efebeb895bf1dd422d11b01,f597bb8c68b7f07e32fba114f4d1ec892a651ad0,766ed58a2c9f03d4fad8bfb7774b16d2c1746b0a,77030362159ce9205ef45f8f9fc7345bc2579c9b +1204aef9242231bf1f3057f7258d673394356444,ec74aa03c6ed9c0e4081d57e0cf94d7073194b95,d69edddd5f2e3d6add1fd32cc173dc1adf6cf211,8f8bd5f12e05b0d29ba226ad7fddda2d1c9bf65c,94653a2ab0632ff36b13bbb76178dcf024c53d36 +96399be2deb0b3d278fb73b6e90fd3b4b67d413e,0ea780585e6d4e42628387409edec530029ffaaf,d45b3475906824f2b1c5ffe9d67eeadf07bd633b,d4b7f227ce70242d58ca4f45e118bd44fb375a82,e3dae08574364f16e5a22b7da7eb70ff6012938a +49e8b4144a3c0681672878c536b5405b64ae6285,8b8451083878b8a400e29e65c6a8db66269121d2,cc94c036ea1c340e1049b44cdc77273e2e870caa,f77aae55c60f2a369326cb78d21599d57964f2e7,e42a25c33cee5dad2a6a76874eeeade45308d393 +431c2f3a40f77b090db415dd9a562f9882d6c612,210eaf80b866af6645e04d9d7a57081e4165d433,fc94904c20f8f28dba8f7858736afcba9ea901d3,b9a731ba823884a58dcfd329bd09f1eeae08c984,e37acdf84908246c1de76c4b08bb53eafb2adbf3 +36fc914930449e4652ed3ce9175bc82d761af80b,a6aaf9da2cc7293701e3db7d89aca0df491e3b01,be6c1da32cc05b10f711cfbc464e6e9a20194805,7c04912bd73f97a68ba96f28628efa58b8ff797c,bb6fefa5dafad7ef514fcaec4f3b2faa52ea3ce5 +2eac163797134991c776287d94700b6619d5a6b6,21fa3448ccbe29dc4ba498c5a2beecc9ee2ecb91,5ca6820a46b814bc61f7570c053d8e1e7181f9ff,7bf434ba6b259537fb50bf14543b5494633cc7d0,1a48b6237379c16e66a40ecffc58699a141b7340 +f8cc07b0df35c563b5554aa71de53ce3ba49ee1f,9213f10c20c0b9fca35bd2314c1983861aaca2db,806b2e408d1a64dfd99c2b78716c53665c7d4203,34474ad5f27c4705aa212cff67b724529380399f,544dd163bb2905ede25868c47715003a9f401d23 +2415dc0ccbce104045596a052d32fc78d371d5cf,972f632a85d5b532dacf63a760ba38290694a05a,716d6c609c8286c5a0cff14ef1337f2e6fcb91d9,e1e2024e3fc2cacfa0a20a94c25315a734552040,e79ae13993a42bb1bb738a500676ff3c9ac3b9bd +04b73beb77541ac390281f047f7f65ad9d2a0382,50e83788fa8609c5a560d9527853bd24bed42231,9c1517dcff4f2432f8239dc067f14c3c00758c40,737387027acad98b763137c7f8af868ef7bd06ca,1a79fe20da03ca2b6ce5f30310a0ed3233eb46bf +11016e28de693c47c7d0d742bec0174151329fdf,5e99316f96dd57e6a5309024f4efb7b30beb899a,c756404c36be39df5844208c685c7be622a85680,71c40d274fe2c1f5e2498861bccfae3ea1aa6042,fd5226ff1776d5f811b132062f632b1ef0948e70 +581a97d7aecfb1c809ba8631d9877a8b2c3cbaaf,0f3e52c0fdd6cf2c6b9ce98dda551fb0d2ada9a5,e0ec4487abec335ce2ff80cdda5a77c7c0db462f,544dfb45ed9a85087a109c204d8b6c9198365109,0d1d78f54682cfb789e32d86f601d96cedc61fab +d93aae6bd053f8d03e99ac0cbcbb6e2251d9a68f,e12f21904a7ef1f8a4e6fa9525343748607066e0,73082b7f6c510543b04454a25f698dee02a05677,891c3efbf636ce60786252c30a854b2313c599ca,3bc551ca87c49bbe5135622eedbbf88fd197239b +c51d126c8c54aa7401f48cfe4e754dba2eabfdde,8716272b4608d3b6bbf63e778b6e764d1797035e,c5d8854e06586cc04f18012b8089dccb06db69f2,66276e549ff8289cbaee10ab40e485b1e97ae1f3,c3bfd5573f2604e39197e68377cb8bc36218f11f +34b71204eabc56b994b737e7744d3c3c6ab9b5e5,ee3ebe322413a3c072f2a060c2fa8243e93c738c,a2ca6bcf08e93a38e39aa595d71e364452822b1b,d3497da59daf389395a6f37aad4ecf1eb583eafd,4aa2c3603d11315e2ce4b6f8d37fd1f407895849 +ca034ace74985d280fcd8ceeca4adf6d1ef983a7,f09ca300ae0a55583780a9290bb76c412a4aad47,ea44984b98c8487e1a7db6cd72b5ccf01ac2e349,a41c7ad6bbe6b7f0c5c4ea8747ce82b2a6672512,dffad77420b59076804c888f39530ec2fd4dc220 +6e0040c659c7923d57c2cd5ae1c9408737bc2baf,042449df1dc5ccfbdec8ac4ca253ebfe382b968c,ff0a8b112a152eda726b38f95c80b974d3d08e94,e8f579de093b51c0325d087165a6307eb1bad270,9e0c3855cf96a135603070a0ddd1f0ca938e0e00 +34dde4ecfae0922148b0b5d2bfb599fa3ed358b2,7e0446da60f3a2e4020e16d2af103c929c819d87,08aadd1e7a1bcad52f4fbf7cc7d3bf4d54f4f19e,ad27ebe01210a91085aa57c00a2ea16a02b1289f,dfb4262db7979a1482a00df1ff8ae33d2bbb26c3 +0cda07baa966523751a22fe42e5611a5ec746da6,65b794793817d5c27f9e469e6f038805e3a97370,5d2c44614369b105e708f55c4f8cb42bd975b37d,82898bc3b70161ef93d4ad465eefbfff82d330e8,1bc113eba55e1e93b8cec2d11e4499db7662372d +ec43ae91bbae018e13ddaad67eb87720823f8c8b,a106be04a016e87cee175d6e9f7f4aaf89124c62,26765c4cfff6560a0b0cce2ce80e09f82770796c,66dcd9ed73172c6d8cc10b0d8054b5f0ccba3345,71d44bd086419adc863de30b27c3d26b8e6fd8ba +37e28f83a1d5010aba2f4905fd28c91107837007,f92b09478c8b13db402e01431c292e81ee30f020,3a60e2bf53eee43780a864a90fccbdc42e4e15e0,d65e8c81165c0e7d3a904fcad10ee6cfc15aeb96,5bfaf60e63806eccc70a1d40d70abcf1ad8dbbb0 +502c23c4c54d62a0c02677f95e8f87c65cf179c8,f60f89bf8413f2c98920801def98b3cf82a8fa53,b06db26888e8836b7259b91bbffe18b20cfc81fb,dc08430db4eb5dbb7cee2388f40de7969b7c4c5b,b8d76bf18c0002c7c004e32a2d395f3ee1344cd7 +fa3b080844a4ab1ac45c8df08861e751218a4949,569c7fde6a897869454991fe0248b5fa59d2ae9f,e93db4c43f8f7b83d5ee3a099468810961158a45,80bef9c0adcb6fea3efa84a90da8b4c4fa4bff31,50a028c77f1ebe34738f6235873bb0669df52a45 +6a04c59803be2a1250227935425f4f7b87d1a886,3a7f14d6f756551a1715802fce551c4a9472f866,ec077789500c54ec21db877d67f822470af840da,079420c8b026b9915ba1e2e5ea4e4c2fd744d42e,56d6c0e1dcf2fad67c8a6e7ff5dcc77209bc50c9 +25851902f635edffc9b24942cd206ae817af7534,1484de298e542face051a4976a2fb1d91a68fc5e,44dabe0ee24951089c9de2bbe75872aaef26fb80,1656b12170c9ab5c802faef16e0316fce31e2b1a,706ad4cf26d2344afafb30349a9bb6e6100e7422 +9e3b37ab59aa6f4bed712c604e8c475398fb7517,fa3b7dff852a8a98c30673d80c688ab5e0d2283d,c1a9c1494998ac9e90b05aabf8f490391dde52fe,1091c3bf895956dc9c90c0fd9c06fe5f7ff5e0c2,b5aee03dd7fcf9c222c7274465f64461b480b0aa +062f9111d18dd2f48b23863c62abb42fdd06a7c8,a03381cb2757fec52acdeb19ecc8904adc73bb43,2be78d2b2adfbf95f1c7fadb37ba797e2917b748,31aff6836072be7b4f0884bb652215492ed548fa,6dc7d41ee2e67a9f0fe9be3c1783b759e28992e4 +4c8d0ab9ef00359c8b61eba9a2390402eb5f90a3,60d41bd093dbefd4cf23825a2bfa42abe140163c,75360985b5aa2232a80dc73c2bc01e9c61b9d9e5,202e1356ae61aeebc7057926fa5eb6258f5375fe,306d4ef2c5fd0cc60a6eaa2e06e9f6390d968e8c +6c19864cb18d3d390e25cf007519aad1145af51e,5498dcae61fef338ff6847ab2cef890ab7a2c4aa,c85b2cf2c896c1da783aa652440cc74f36f32f96,7b2d2495be512c4743188f95a372a46028259552,7f5754765b43326524a83f9e80d52ce56ea1f379 +b9080a3e749796682b3a4bc75351887119d63873,8b17f3e7f5054ce561eeeb7db9e544610fae1663,babc98251feab6f1b13d7ab7e606b0036dc0ec5a,86dc94ccbb2ea3b23d11753383cfa1fb29d2b969,43b77eae4ba308dc4034c702edfe1f5782e33c1d +d84b2302408015cda19299885643026a1b3eb459,21ccd075dcfcdd2ae4ada1ccb25327158ee3420c,0575ed751f0a07342e276a0d26bcac722ec2b55e,37c0b6b26af322aa9dfee93fa25ee6d726235e4b,538b35e153bebf26b509f43e0e724e577c7172b2 +48cfaca631e512170f4fb3d1ba7ea42fe43411c9,8fcb923c507a7272cb4e80aa6b0453bdda9b391d,98405818370481582e5dc0cdbdf21da59da03823,4ee89cadb914b64e51506d11664d4a41c074c885,d8f76d73a787238d3e4da5c4a5b62513a7243407 +2a94819aa9df2dafd7f042bd725b188deecbce41,134439cb52e758bd42b993d756ccb20f3d7c07da,9d13d7477498c92de8c1b04ca71aa57ebca226a2,9753a6126197696fe72de78ef329cc83492516df,1042f21c1047abef50cb479869c8f14d95df98c7 +302ccd0c9a74468841b6a422fe32a3d20d5c64d4,539c5758e4063e21b8b74ceced65aa20d6b5b544,00e7a98da7204d1ccd77609efae6d55bac5b915d,b98d0225318826d8e5fa154870afbb78f04fab48,cf679ce7a35cab40414c87cc17a7c7b6cf853cfc +2f670464e32fac48a27f04fbee5d10c305a49241,57ba21faeb6e628e4c95872188bebc27ad068d0a,500e1646b22fdae808c1c20673f733db338d3de6,b871c84eb5931e5953ec1877e653b44a78e82b4b,36311563666ca0f8171476664aece739e927d6e5 +64c31e6e27f515b66713a0e4c3b0dbfdd2554df1,6509f55b06d0311329f8a50e832f3692d968c161,d96ca237ad1e204f9eb27581e7e847e8acd6a59d,9e497084c411e635d4b0f222f9e3e80582d081b9,6a706e6231ea823b8c6439746d75d3df67290e25 +b600b26a4f3a8e8387601fe4a57f51b07526edac,53d6a37ad885dcb7c3546460c38bf764ac2d5430,83d12ad9ea8d075e7be4f4634fe72dfa07f3f70d,bf555b66e75d5af962d48f83c95f5a48dd8a0a07,a29d61cd6ef9a8a4cd78338a9522000fb9e63271 +4d37733363645153d1e3fa7ef627fe502471c58b,6fe283850e70eab533ff5d97f2532273ca4f1fa9,7cd10b8257f87c897ba0f308619ee4f0bb097de0,4e86b8828726c3cba42051aeee6272bdb7567c30,82c7f5273e3d6d3e86e417f3d981f08fb37fbc11 +c967fb0950948ffad3607192808df7199ed0b622,2d3c8ae5a53e504778affaf5cab88772d7b7283c,2496028871b6c6de264892f8ba7d95a7ced3fdaa,af2d65194ddb873d9dc28367b8923bf8f0635fb0,daf6be6ac452f30e3f86834c21318f2f27c197b3 +e1bf7110f05c16a1c32600fb0d33cbac98099c23,dc64f07035dfb1acb696f1d23e4e0ca4eca51e92,acf58593059d49478ff3f1cec04021f57d7eec23,cdb6cf9f1944572603a390c5ea5d9d9c6821c112,3149e76291b29d410f98f1d91d89f419fc314426 +4cc38ee4079b58f50e0696663b420ee3ae035039,713e7d669465c3ad227436702d49ebf0a5bc54dd,6c9565550950c597b1d7ae5ddd8175d1190887e6,491dd5285a71553efd075cfec7c74a3d41280d89,2495351a3c271e8ea043465af629d3e949319511 +c0bf5d2e18e909ecb0448e6ce5d4c6b18b699abf,0ea723717c36c23c585c27481b93968dcd3965a4,57b371423850a73b9a702f6c5daafbc1d9cab3d4,cb0727e7c0cfa992abcdbc5dfffc54ac3e21d1d1,7e9e122ffb17cbdf5699b1c090edd2b888134bbb +1e9459a22deb0df29d538e0d390a744916d3b2b7,85d5de246681c7faee829315f47450ab55c7e839,49a436609ebd03c7d4e7697bf66680924fb2dc3b,311374e52d8406641c59cd4a6fbf873f7e789794,00635c0b1032dfb3b621d83b015a302fe3a57d21 +36a89e399b1a98448bf27a758e3a243ad10a7d42,b39dcfd404f8ac7b911e598395bfe901e1d4b355,0859fbaf25e824f735ee3d14562c22a55f4618e7,b203962324f7ffe1c12aee4a586a7bea7805e57d,ef763cc1060ffae4dc156b0165b9253c7f073a76 +7da28e818c9421570abb45eb8f8e3953013f8787,3839ef5b853e2cf5b353883579073d30ff8e5956,8db51b94652deb4076fdc9455c891ef7230c64a3,7176eeb1f6018236ae4298771b4da9c1907651ed,a9df3f6a0dc9991eacb2ce180fe324f43b3a4f26 +e9e0a4f39ddb0fb1cb301dd4a128965c5eef4f2d,d3dca98c142ee8521fa85f27ef085f79606e7138,9d28e9e5cbdf9fe0c0e99c67a0d9570754a2c95c,f2f009629fbff1fcd0b3d1dec468ab5aa977df95,b6ae3de3e991d5b5404c126da2dff6c64dd9ef9f +aa14d541f444e64848d0def3a4703c7566c6d607,fb2aa06f94958be767270849b4d169b6f941718e,e3080b30a49f6d1954a16199f1611273d97b8144,78555bfc2374d9603a6def0041da1f3974a04846,65a34ac61f2b49a8c9926e9a9dcbe3f91575903f +9fe3b54e0512a1a3907ad32c131d733b479ca0ef,580565a61bddb114d9c491891a00bf8fda9a395c,76dc213aae00d707c6c3a41e5e834173a54b00df,85c460aac60a10242608c41f6ae629291ac26906,5b77b3ba07f6e1e5a5034b7038e6269f6037bdce +60e39b42b92b309ed44f52442240b34400729584,ab7e2bc0e0147abda86d4ef3bdd7e48e118276d4,d1d116cff9178327132bc9b56777f92dbac6c767,d89067fc9a5f3f933542f9e6d2e13944d77f2cc9,67cdc91d57a48ba565c97adba8808d6c565d0fcf +bbadacb06d1bf892979e67c7f2210a16d334a695,29f5cc079c3324e9eab704c802339ceadda19fe8,a3b9999823293070f5d19f65f6c8eb28221ce668,4b57eb854d054f144f1a7900f4bb3f931166b5f4,e9e5d31707f537adfa90394179895631153f4d38 +62336af2ffc05267b6f80bf2e97e036108368f54,0b7281aff3b15de2054da5d5c1b9548bc445a2d0,d85b7695243a12b8edb8ec50d5a0ba5b0a858ad1,bbe7c08be227acb76ddd72dbcd46affbe6d93750,ee47920231ec9a2dc041abef2346d4f7482af11d +b85f7d96f5ba952949dd83c58fc43bb46f1a17ad,9b36ef748edc6ae41a8095a997fd34a830a4c5ca,bd55ef9100df399da595a84096ade7d52efe52e9,22d84337607c916ae7fc47ef83b1a2c627e7897e,2341e83d7e30352fc3b3ac1e238a3bd6c305be3a +d7311d43158ebd340d870697c5c706233b42a230,45e3aa3418f44262636654565356577137523ea4,1453c47b5329f9513ccb0bd6f0dd6760acea64a1,7a48747727d920143738772ae5ce0db4c91a9085,4a337a2e4b59f2240f9fbb88ca3ff441c70a8c90 +c45ff3c194c35573d2d91d83795ef388aba982f2,7d858be91556bd21df1e0cb87e2af542eb6f1384,bd68f5a6e72f8ff687584ba2eb261255386cd30f,b85e0a8ce64c8c94672a0819758f6303e5a0128f,92cd2eb729a6436d72f13956157ae0310f50458e +e3eb6e43120a30dec93d7f1f1c5a445aa4caacca,fcdeba58fddcd9c2d3aa0ad43b6114b8fa30fcac,e34e351e2652def647f9c016fb688e948e42ec27,794f355edc5d917e82912a1ce5f5f8024a04f0e2,db7dc1a8458847f92c7f243fb5034006e7836880 +908cff151c7bc8539772ad4c7745b14cdeaa86a9,1bef61434673cc06a8c2f353ea47900005e5b723,d1f97b35b669783f41e22b916dc241d6cdc0909d,263e83bf4757e09f88e81c92d25af611491c3c97,213db74267a4a5da65cfc982498828464928b02e +0c5d019502e5547a92405e47e2088a02294c379f,a32807d675cc7df14e7cd981dc75f8ab5ce8c632,dcee3046fbbcea41688c29b1b7757362b1f357d7,7e1c3a08601add585e56805fa5904647b48da72a,8df9a8c10f3891b7200dde8f02be1f332f68af54 +a2db01110e38591d661354aab07be0bfac5df350,4dc5d70d8bccd61103308579614979481f7711b9,85aaca8b91bb43b335efe5dce9d200a420c4ab2c,233ec0f8a8d2edc65944fb7f871df3c6b72bdcae,c46cb156e8b8414da274910f3f071ea934b799ef +632761c51718dfb7cbf3b971e644c96504b179ec,66fa37cbb4385ad7571a44591ca6429d7280565e,46aa2cf0e2f6b3de482ff764677a029496ec23d7,8ffa9cdd68bd537084785a17fc65bb8220183118,caab0f9e613b8f072290bca3ddc61ecfff8c738c +76f01e9b8636eedb840d9ead5a5cd220dcc4f748,af557f4c228c1e415a0fca6556372f739bf58a79,d1fa4f12402ab057a2ad3bf689ab588533895842,5d5058661901d07e26d44e0d2d12cfcbeb71068a,045613611889bd1097bf3375a10e9fab84d244ec +91b48b27a4d53dcf0246a293da757fa71ee70c77,46e739cf5a4e9e2fc3a153296405dcd4a36449de,7747b04179803ff67aaba4484e8d7b5526042428,b2d9246c9ccc98a300963350cb696e825f3debe9,06f8364e28c4227fa0ffb243f591331661bb5130 +e796bb929035e4334987c261a29aafe608de2378,6e8b69b6e1388c76a7a54fe4569a3760d801cea5,653ca63a27f78d00dc643412977805ec849aaffa,65eec56a6b2b5a9b05e88c69618355a4286fa4be,91de589268b4e0a212910c60dd5cb966e7563b17 +03694ed965cc57abba9313be6fab1faf61313912,94db17a7a28f2fa0aeb9735d0c84489cf14b2bb3,34b446359665a509dc9270b70a9c0887e93562df,9a4676f1350edde5803d8a81b5105dd805789a00,c95596c98757107c9822c64bdc93d3dbe342556d +9cc81d18dfff63a25a51fd644f26457f89c734cc,b85315888b8ed4a9e1e3da60a6f3c677a92461d9,ac23cee423d5beb88571d795fecaedb61af23010,fb6c935452ff8445050c8bfb5b8b3eec47f83d0c,00d3a641e565eb54fc3098fa8f7ee2bd4966c6f0 +07b8825a50b74c5f240bc1f675c8979598137906,1c3e5a8de32b6d2b67ebba73d8c1333e2f9c342b,f8384c9d0da5a083c1ba81f54526357cfe8d1eef,39034cf7b0fb75d1f030bec0ecfdcf4268a9b817,9fe8ed306878b8c5a6b54c95e7bacf473d58ae4b +7de8edefa350bdefbfe1f77b234eb6ff61e80bef,b631a7cc775ac4ade1e36e5d339adb72f09cde59,e7d8c0dbe949036e201bd5f3256b4e88021d0c71,420a087703b0f76cb7fb5366f0746a503119ce1c,ae5ce23af1961937ba6f5e17088552ab4ce872bb +918fe783dcd5f5331ce1c69e5b4b9a31d09bd982,4ff1f4a5b8ea5191143c3716c567f9377f21e0dd,4e79f168a3367953bdafa6f019122a9c6d0d081c,bb1f5ffd73c8dcfe830bcd75b4e07ec77556aa90,83cb1a60b7326402a07fa28408168f73c1b634fc +a9dd04a10e151f4e0874bd9f55c5ec969fa48fe3,43af8a35e466a05ebd3076efa1ae4b4bc79ce983,1d71069ca378a3c494832278acd8c861d6507e1c,50431af79cf4f04cc122d2bf0fd1b5fd346c2b85,3e671678ed69cddeca3c8dec5f317fcef4b0626e +14c8df2edc36fd5a8fe0d2c242278c97ec4874f7,847e091a7db9b615436a558d769d3210ac48f4b5,b92573d2189b1dd02dd4020e8dca6e27e3526f60,a6fb2515971085dfc65533713641e052ae0550c9,e3726d0c8876a7999639913c95b18ccaa04a99a9 +af68cebc48797a15eeafb07a7b5f7ebb10b1c083,6295497fdab40d95e2f145ba06da6e0d25867b46,a809b13546972d94fc5f27332780c862e4935727,91bad1305e5946f9c3be229a5e4ea7e773678569,5d9723662226a86dc44e47dabf844c4131fadf11 +e29840b777c87632fdd4a7fbaef916952c0c475f,3f3e770bedc6a1408b4e38ff818ded26a32f127c,29f5158d3e93304679ba68e5682e8ed56e01ee4c,da221a9777163fe4c7fd01e5765b0df071e781ce,b402070818e224146a5e94cafad3071db55ef37a +8ce85845f8b0cdf9ee9894cde7557c3025c0b8e1,3658d1b3b0737609675d358ef31b6d2c8f9607e8,e74371dfb780a2bdf96ae9d1ba39f9b4aaa84c4b,58d45374b775937f8f0c4a5ccdbb608197a0fa96,1f20168a591c5bc7d4bdced6fc1d81e0945e5f56 +888d891c2a45e9d8823dc34a5498ce620c2838f6,599410596c2ebb1c72f79edc07affc21925cc257,390388508f5a6039dd59e7512a7377aff97e3754,2731a536122cbbecaddb124b299b6bd557c7c29e,259f272bfa47da1e882fc1b44ee23601555e2073 +e971d79c58f075fccf26fd0ee8c42422a502cee2,828cbbecfa12d6c480ec62fc21a926543e991798,46b399033b3d96208ff56ac043c05948f5fc61bd,0c9cae02602c76c6c460a42eda6ab3f51e68e415,63339ae8d79e9347515e284b05073d0a47ae6d58 +1c73ece8da1bcc14d8d15e23c87027e913bc4bde,dd71047fed6f86f518c6f66a6ee449971ed3cef5,6f04a2e335e807012f58147610dc9d9c6c474426,36efa4dd76ef64f762a6445a0cdc85f98d286ad8,e62194bc15202d826446c0c4e6c1a143c15ec314 +6bb78e3324be517e7a1541f6bff235b9f818847d,981070d53771e5d798478a0f7cfd049d3c467f8f,f2a3beb00509b60b0265f8932efc6c921671a04e,1d8d2b317ecb422cb033892e02f899689d53e29b,7492365615ac6d5750d418f370fb2eb565eef3fb +cc910d8be292ba4cf2c6441e51f493cd348e7a52,0b27a1a2ab9f2d4044499a5fbf82b8a846fb427a,0ca9ae6859c3850496fc1d1f361fd71eeed1e034,415caa01f42b51b4046b7bfb6f78b939cecfc891,256f17f11d706db1dffe817610e44b54002cda7d +5f42a375129ff41889efdabef2437f2fb9275341,1816db403727307aae34d480ca13deb32248486a,db8ecc14fe6fb4c3d2cb00865f44a7183f32ec39,ece72c3df061d3963dfc6c8aa44d8019577dbf8e,75d9565967c503b1d155590135e69f1dff3d0600 +297575f1f3f8a8538b6bb524d5456c18b13772c6,49c1bc94b240ff64a9c149d9eeb5ad98b7dec07b,8a51b330982d7b8a5b5625f4e6b340c2db6a2a5a,8f56c1f4fb56125eaa58ae1fd8f063d19421f054,5a0dfadad6fbbe0a4ff1bf2e2539d55e881940d8 +02f2c55a8dea17386c602c89f9d622928fc39899,55d6a57c83cf69f9cf85711a03e3c8780d002474,16dd932ea4e0d684680b3e9f8a7d863d19a1302c,7ebecb54a7d93dd55964ff23fb411de7a23d208a,aaf3ae2037126def3fe0ef25011c227bd683c960 +fe07d9c9510a299ce845251d09a281892132f74c,76f0fedc6250c1269fc479025b6628757d6f9c93,b47384e12ee1bd0bb05902966a5a1abf3b3eb882,df68d32eb452ef4f72448c3c79abd30532c40d87,3a8b11a5af523eec11a6749b0e42823844a19c67 diff --git a/src/vtp/web/api/mock-data/receipt.70.json b/src/vtp/web/api/mock-data/receipt.70.json new file mode 100644 index 0000000..a4a4474 --- /dev/null +++ b/src/vtp/web/api/mock-data/receipt.70.json @@ -0,0 +1 @@ +{"ballot-check":[["0000 - US president","0001 - US senate","0002 - governor","0003 - County Clerk","0004 - Question 1 - should the starting time of the annual town meeting be moved to 6:30PM?"],["86e6b7d717c938cafb363b7a563a322fe34a99eb","b959a01161c9e0804efebeb895bf1dd422d11b01","46e34bbb476181210eb817020b8671606c779e7f","e06eb0e7881104a0de44ba4e5f4c0167c8a9438b","8df9a8c10f3891b7200dde8f02be1f332f68af54"],["de3d4d2d506a2af28cfa047e44adec58d1a2bfed","9213f10c20c0b9fca35bd2314c1983861aaca2db","d235c458d2de8747cc993b38c6b097e5c945cb43","d89067fc9a5f3f933542f9e6d2e13944d77f2cc9","4101d24db5cebe623826f4073292a0065d0bda50"],["297575f1f3f8a8538b6bb524d5456c18b13772c6","2120a6983fa33639459d94b609a26816e147a4b7","5c54c3c7b38f3745fc9b60a760d4b894e78004cb","ad27ebe01210a91085aa57c00a2ea16a02b1289f","1a79fe20da03ca2b6ce5f30310a0ed3233eb46bf"],["6cef89f39bc4821555c3bde3fbf99910e6a3234b","76f0fedc6250c1269fc479025b6628757d6f9c93","57b371423850a73b9a702f6c5daafbc1d9cab3d4","b8320e336566bad1ecd7f9b3df3dc668f62eba3e","6b3badd633b75e64bf88c4807625b66df324ef9e"],["d24f3ee9972e2f50baac63d899f953c71c8c0cb9","a106be04a016e87cee175d6e9f7f4aaf89124c62","26765c4cfff6560a0b0cce2ce80e09f82770796c","bf555b66e75d5af962d48f83c95f5a48dd8a0a07","7492365615ac6d5750d418f370fb2eb565eef3fb"],["1e9459a22deb0df29d538e0d390a744916d3b2b7","569c7fde6a897869454991fe0248b5fa59d2ae9f","c948a560199c6d2b154e78928caafbf6b80e98e4","766ed58a2c9f03d4fad8bfb7774b16d2c1746b0a","af88c339a1ce37aa0b0bc76f547cffe56e585b41"],["cff1bcdf2ed8db019168ed8fe6b19109da8d896b","6fe283850e70eab533ff5d97f2532273ca4f1fa9","2496028871b6c6de264892f8ba7d95a7ced3fdaa","491dd5285a71553efd075cfec7c74a3d41280d89","c46cb156e8b8414da274910f3f071ea934b799ef"],["b6958904cf91617909c9b3c7c52b8e3036e7e203","9c15fff96725912a0b5f14ad7981ff180db286ef","16dd932ea4e0d684680b3e9f8a7d863d19a1302c","fd1d56ba14e9ac68f1d73491e214bded356877e9","348a8d02a4023a35efb81b25c7785959968f54d2"],["c51d126c8c54aa7401f48cfe4e754dba2eabfdde","580565a61bddb114d9c491891a00bf8fda9a395c","76dc213aae00d707c6c3a41e5e834173a54b00df","aeb7be39ad4062a1d1462e0a204406bdb902d5c8","936e8b4240e8d8b060151b64562955b6e93f79bc"],["6a04c59803be2a1250227935425f4f7b87d1a886","d064b503470173617777879aae01c6fdb02e4d68","eb1a10e100640ffadc4eddb5cec623c896f60ffc","9e497084c411e635d4b0f222f9e3e80582d081b9","36311563666ca0f8171476664aece739e927d6e5"],["9fe3b54e0512a1a3907ad32c131d733b479ca0ef","cdb82385949b3a97ff9dc0bf406af73ddce74f7b","ca6bb0f1febac74debf4a15a9fe19d3e7780fb1c","d65e8c81165c0e7d3a904fcad10ee6cfc15aeb96","259f272bfa47da1e882fc1b44ee23601555e2073"],["94d23db61819339f02d610c92ec322bced53ac58","1bef61434673cc06a8c2f353ea47900005e5b723","b08df56fdb175dbe43342a9b5a714750ba5df23d","e1e2024e3fc2cacfa0a20a94c25315a734552040","06f8364e28c4227fa0ffb243f591331661bb5130"],["6e0040c659c7923d57c2cd5ae1c9408737bc2baf","60b27dd6de6b511b2fb78a3522d57da14089e790","32f95d1cd4ccad5a081398560c7582119684f4c2","e22d02bd23c1d9258a4d711f966993638fed786c","1042f21c1047abef50cb479869c8f14d95df98c7"],["dcda1142758d2fa851fcad6fd244f3c9b719a8ed","49c1bc94b240ff64a9c149d9eeb5ad98b7dec07b","40ada0d67bffb53525bb7b774acfae2e5a30e534","1ad2d4b5db87fec574e2fc182408244bf54d2661","91de589268b4e0a212910c60dd5cb966e7563b17"],["e7888e991826f36d7716bfbfdaf92fd958ae0658","ea62744a1996ccf39dc11bcec0b31791f5d014d7","93d77693b51f9b0e23152884b4352ad098791250","cc4de6ac6af1a1e2e90d526aae7a8de152f0a187","7f5754765b43326524a83f9e80d52ce56ea1f379"],["3779fb3af7771212fce1966ad4301c9995557fd9","599410596c2ebb1c72f79edc07affc21925cc257","c1a9c1494998ac9e90b05aabf8f490391dde52fe","8f56c1f4fb56125eaa58ae1fd8f063d19421f054","64b72d95bfa2d509d8785afe3e45e165775c3c81"],["8ce85845f8b0cdf9ee9894cde7557c3025c0b8e1","c7e3e0d9c4bd4c4028ee1f4457a3005d1e721271","7dcad591eea4eb1c736255cd769f0223d58f02a6","22d84337607c916ae7fc47ef83b1a2c627e7897e","b8d76bf18c0002c7c004e32a2d395f3ee1344cd7"],["56cd4a55bec030093ab5b4e3ba9545744be7224f","d293af6d8af4f0957cb4d729ac20baddf7aba63a","b8f64dea764101680b2f5adbab2a1b34c1f44baa","b203962324f7ffe1c12aee4a586a7bea7805e57d","82c7f5273e3d6d3e86e417f3d981f08fb37fbc11"],["1f9d4a1c19f7eb67ab7a0e230b3b57b46d606694","0f3e52c0fdd6cf2c6b9ce98dda551fb0d2ada9a5","b47384e12ee1bd0bb05902966a5a1abf3b3eb882","cb0727e7c0cfa992abcdbc5dfffc54ac3e21d1d1","43b77eae4ba308dc4034c702edfe1f5782e33c1d"],["4b244371774a10aa187ade65c5ab2f69347b6d6e","0ea723717c36c23c585c27481b93968dcd3965a4","d69edddd5f2e3d6add1fd32cc173dc1adf6cf211","6a7b57cddb364e177f422aeb99fbed1b084a0025","ca5d34a5fcc96c88aad54e0f8f320a1655f840d2"],["e1bf7110f05c16a1c32600fb0d33cbac98099c23","4ff1f4a5b8ea5191143c3716c567f9377f21e0dd","c2ff0c1ee3067370d56b64eb65fb1a31c0420905","93aaf2d2f1637400c91d46c544faa16bd7c0d855","b5aee03dd7fcf9c222c7274465f64461b480b0aa"],["17c006a063089c4bdef1b7fddb8f78c1ad4a726e","d35e565caf111660f57fec5695dd41d824bb8b65","ec077789500c54ec21db877d67f822470af840da","a3c4a735d08d8e85e26036262b72782caa915b91","e35b533048f393704f939d28859e57aadc284e35"],["cc910d8be292ba4cf2c6441e51f493cd348e7a52","f92b09478c8b13db402e01431c292e81ee30f020","a7f96ed7e37bf2b321a9958eb792504736deccc2","65eec56a6b2b5a9b05e88c69618355a4286fa4be","086e6e0e25dcde19a5007238cff7542ab692d55c"],["34b71204eabc56b994b737e7744d3c3c6ab9b5e5","022f7c3e566ddda18058d0502ff98630fcbdbebe","85aaca8b91bb43b335efe5dce9d200a420c4ab2c","8ffa9cdd68bd537084785a17fc65bb8220183118","aaf3ae2037126def3fe0ef25011c227bd683c960"],["152c866ec3b52523fc2290396b61997dc74dc8c3","886fc80c39a962c4f9a5823f1ddb3dcd36b70bae","ff0a8b112a152eda726b38f95c80b974d3d08e94","415caa01f42b51b4046b7bfb6f78b939cecfc891","ddfd6d74fdc181c8467a040c3d40d1118cbc41a8"],["5332fce3b9a73d09b0c16110fbb87f97cf65037c","f0d6ce835b6e1bf5daa857ccf81e029ca91bd47e","e3080b30a49f6d1954a16199f1611273d97b8144","34474ad5f27c4705aa212cff67b724529380399f","656fe753f157d74f208eba879c1d9c6d191f6838"],["9780e866e6ea3e598aac79ca10b051c4a3819fe0","01a0600ef13587aa05e51c50e480a72375a6658e","bd68f5a6e72f8ff687584ba2eb261255386cd30f","31aff6836072be7b4f0884bb652215492ed548fa","67cdc91d57a48ba565c97adba8808d6c565d0fcf"],["25851902f635edffc9b24942cd206ae817af7534","0b27a1a2ab9f2d4044499a5fbf82b8a846fb427a","9d13d7477498c92de8c1b04ca71aa57ebca226a2","b9a731ba823884a58dcfd329bd09f1eeae08c984","08cdd84e9987c8ce0a71b71574f1f56524780933"],["c0374176bf87c15b956393fa5116b622961af4d0","f8791aad52adfe4cbabe7f5cbcb46819a13b673a","390388508f5a6039dd59e7512a7377aff97e3754","37c0b6b26af322aa9dfee93fa25ee6d726235e4b","2341e83d7e30352fc3b3ac1e238a3bd6c305be3a"],["96399be2deb0b3d278fb73b6e90fd3b4b67d413e","feb883fe297c18061c1a52eea7ad914483a36b45","69c3d37e8469a2642746c201a07d3afe7bea74fe","263e83bf4757e09f88e81c92d25af611491c3c97","f81753b32a3993f22723cc4a945d432c794ea5f8"],["c0aa94160d4d2ebe64dcf19455fc6cd53c212132","b85315888b8ed4a9e1e3da60a6f3c677a92461d9","fb624c12c3159972dbf7b61f4fc064db914703fc","f2f009629fbff1fcd0b3d1dec468ab5aa977df95","fd5226ff1776d5f811b132062f632b1ef0948e70"],["a2ec253fe9d1a1ae1425bcc1c77fb2b0fdd8064c","ca047f4da4fe6bb5e41b2ef54f489c2579439d59","b8fcc16c40a7e49a881af6e60e7fb1a9e1d04f40","d749c6230b632dcede90d310b7e20740b2e7d4be","0d1d78f54682cfb789e32d86f601d96cedc61fab"],["b9080a3e749796682b3a4bc75351887119d63873","85ea9d032d392f8fb889ba011af649813c710f95","e74371dfb780a2bdf96ae9d1ba39f9b4aaa84c4b","dbcfc6d7e38c6ea67531981761ecd00aedc26013","c4f5d13234459156ed98a172ed792cacfa78f818"],["632761c51718dfb7cbf3b971e644c96504b179ec","99e36264472b785314c60e1ffef1ac623f590c24","f798cdb60980173a5b46961342e57ea38c7477cc","90882803fc4991e51e2bc54676f1f4d79e4698af","3e6752062d36daaab7e6d44c6fa9c66ce454af95"],["7de8edefa350bdefbfe1f77b234eb6ff61e80bef","59b5d60409c00e0c928b4dd0e2d4c332c7cf0bfd","5d15a4d0dfb6bd7e9c50014645e7e5c6a2dfd5c6","66276e549ff8289cbaee10ab40e485b1e97ae1f3","5f0092563ed1a5f402f9b0f0fe1dcdd34e3e1bc3"],["3acb682215269af9957c81ee7adba26a1dc4bb5c","0049fb55f254e2ea2a1ede639e0175aecc801e1a","c756404c36be39df5844208c685c7be622a85680","bb1f5ffd73c8dcfe830bcd75b4e07ec77556aa90","3bf2329753f5b27018f4f34dac037bebada44ad7"],["73ad611c67b1ad0fa8187b949665c774495d9770","b0dc39f9b531a8d233a6c43eea31f02fe83a8a82","bd55ef9100df399da595a84096ade7d52efe52e9","311374e52d8406641c59cd4a6fbf873f7e789794","83cb1a60b7326402a07fa28408168f73c1b634fc"],["0ebdf954b78e0f636608616d8ab51433f7bc1323","b39dcfd404f8ac7b911e598395bfe901e1d4b355","5dfec946ae3cb0a9e9d8d6d6f5b0abae122135a8","079420c8b026b9915ba1e2e5ea4e4c2fd744d42e","c95596c98757107c9822c64bdc93d3dbe342556d"],["b4b4b0257642482a94662afd564a589e310bf1c1","847e091a7db9b615436a558d769d3210ac48f4b5","d85b7695243a12b8edb8ec50d5a0ba5b0a858ad1","ef7bb75e544c9914ecd31ce04f4c41d16a92485f","46e8626eed5ad6ca693757046774e337be0169a3"],["e971d79c58f075fccf26fd0ee8c42422a502cee2","a4e0e05b8f3550359d504fb8fd92d56d04536338","f8384c9d0da5a083c1ba81f54526357cfe8d1eef","23f4fe9e8d30b6a9f386a12c12fca44deb734977","9b393c0afb93e3610196ab6be45b3efc184a6b23"],["a88714a4afa3a7a6df4d64e9f4b364f42a954e6a","a03381cb2757fec52acdeb19ecc8904adc73bb43","f597bb8c68b7f07e32fba114f4d1ec892a651ad0","b2d9246c9ccc98a300963350cb696e825f3debe9","d6179887b43c9b14005b0b243f1247d676a126ba"],["aa14d541f444e64848d0def3a4703c7566c6d607","6a971a61c443de4d97b4edc7f510d984bc120833","a8c5b8230612005afd2c501d95906cc99520878c","9753a6126197696fe72de78ef329cc83492516df","75d9565967c503b1d155590135e69f1dff3d0600"],["dd38a5e25562bb75a320900e452e9b5a153a70c1","dc64f07035dfb1acb696f1d23e4e0ca4eca51e92","e93db4c43f8f7b83d5ee3a099468810961158a45","8f0ce4e850f374978140960509288549b21cbf9d","caab0f9e613b8f072290bca3ddc61ecfff8c738c"],["ce3b717ade65eda731ceae267b9553ffbf44ca35","539c5758e4063e21b8b74ceced65aa20d6b5b544","e34e351e2652def647f9c016fb688e948e42ec27","41d93700d5f25bd0dbc2db4dacddb0ea000adfae","cf679ce7a35cab40414c87cc17a7c7b6cf853cfc"],["cfe3543ecd36cb6264e4b9008dfcccda0b198de7","239aa38cd09d7872eda9a33c40a6bd309f09aeb8","d1fa4f12402ab057a2ad3bf689ab588533895842","a6fb2515971085dfc65533713641e052ae0550c9","59d3bfa2d55b6d7965805cf0e1c57bd1a820ff67"],["758687986af791566d8a50630ceddbfa058b3187","29f5cc079c3324e9eab704c802339ceadda19fe8","34b446359665a509dc9270b70a9c0887e93562df","d3497da59daf389395a6f37aad4ecf1eb583eafd","573a1679b4c2e4dfc2b3781bf49f6878fda32ceb"],["03694ed965cc57abba9313be6fab1faf61313912","fb2aa06f94958be767270849b4d169b6f941718e","db8ecc14fe6fb4c3d2cb00865f44a7183f32ec39","71c40d274fe2c1f5e2498861bccfae3ea1aa6042","5d9723662226a86dc44e47dabf844c4131fadf11"],["5653d034bc9dfcb1bd2a96463f7bba6a47888d03","6e8b69b6e1388c76a7a54fe4569a3760d801cea5","8a51b330982d7b8a5b5625f4e6b340c2db6a2a5a","bec7f8374a810526ad22dd98b96ba33b13d18afe","db7dc1a8458847f92c7f243fb5034006e7836880"],["a766aa847cc57efd313811ec992bbd9a17ec2b28","3658d1b3b0737609675d358ef31b6d2c8f9607e8","c85b2cf2c896c1da783aa652440cc74f36f32f96","66405365783b30fabd365ffbc45ea662b3eca57f","db71b3969645fd2d5b63fbbd258969c5bf6ba54d"],["999046dd56665c1d24a5087fa91babe3c24debb5","042449df1dc5ccfbdec8ac4ca253ebfe382b968c","b7ca39b4ab2e040423f6e10a17730ec8071abdf0","e6e965a10308aaa8f9488bc0b82352eeeb886141","d859501131460ad9db5dbf2b9f2f5f2812dd1831"],["a518adf9594ff081ce3e8302eab0c3200c38220a","96ad2cedfd2fde3aea5fe8d806dfefc19b8eb267","806b2e408d1a64dfd99c2b78716c53665c7d4203","f13772302ea946bf559cc183c2687bc19d859339","4db45ca1663a874d38a1cfa767313c9efe4f5218"],["10376a8c042b346251f46d5e5c57c54b42df01f5","713e7d669465c3ad227436702d49ebf0a5bc54dd","c5d8854e06586cc04f18012b8089dccb06db69f2","d21f0504cdeb339e59d8bc5d749632b68bdfd4a5","706ad4cf26d2344afafb30349a9bb6e6100e7422"],["408258409ee4f28e2b4d4f95c5a775047aecdeff","15000e1af3010f1264927a8c05c73160d2478f1c","08aadd1e7a1bcad52f4fbf7cc7d3bf4d54f4f19e","b85e0a8ce64c8c94672a0819758f6303e5a0128f","94653a2ab0632ff36b13bbb76178dcf024c53d36"],["3cd1e76f37682d9bcc2d53d30f8359694b6322d8","4daa4c2d78f6eba4acc0da708677fadbb0842585","b718b87bc151c2e4e84e0d63b09af9a7eee98ab8","52898f49245ab510e3ac0af70a4d82919b216589","c3bfd5573f2604e39197e68377cb8bc36218f11f"],["f63103037ddab5f7bc1d8efe944b3b339d5ad5b0","45e3aa3418f44262636654565356577137523ea4","6c9565550950c597b1d7ae5ddd8175d1190887e6","f77aae55c60f2a369326cb78d21599d57964f2e7","94d8f68810feb27f25ce6f4a3b4dee261be4570c"],["a9041f408e3060ee15a6ec21dea8d7a5bb5fdc6f","3f3e770bedc6a1408b4e38ff818ded26a32f127c","d96ca237ad1e204f9eb27581e7e847e8acd6a59d","737387027acad98b763137c7f8af868ef7bd06ca","9e0c3855cf96a135603070a0ddd1f0ca938e0e00"],["c756fd8656ad05fb34c3fc88b604a26a81f294ca","0d71374f4c0ad6dfa59cff84d5bd17fbc7dd1874","b9a270661d2eaa686ee2f21e59a683286ec90d09","544dfb45ed9a85087a109c204d8b6c9198365109","201af09015da31f8f3643c51e44834ecc28d9ede"],["37e28f83a1d5010aba2f4905fd28c91107837007","5e99316f96dd57e6a5309024f4efb7b30beb899a","d1d116cff9178327132bc9b56777f92dbac6c767","1be292a939aa66d0c7f610812e1b0c8fd8b04517","a84aa2716b31ef6bf67b8a57e940a47883deeb30"],["6bb78e3324be517e7a1541f6bff235b9f818847d","ab7e2bc0e0147abda86d4ef3bdd7e48e118276d4","01bf3038c5dd57285e5f97e14365af15610f0236","df68d32eb452ef4f72448c3c79abd30532c40d87","fab67f4fd6ca690da87e4e0235b495ebbbc3ed43"],["c967fb0950948ffad3607192808df7199ed0b622","f60f89bf8413f2c98920801def98b3cf82a8fa53","2b91fbea34b61a5f318f8f49aa7529db13918979","80e6e6bda994b96d54faaa323336d767479de474","55b1565e9f7b52da821f98d03ebb37ac3d434c85"],["e9e0a4f39ddb0fb1cb301dd4a128965c5eef4f2d","1fd791e8817a2f01dc6db2e21ecf73b6ccd5f8a6","b92573d2189b1dd02dd4020e8dca6e27e3526f60","90d742c21a24eb6cf256034356fb9fe6e0c3db05","acbd21fd3c41ee4afdfcb4778fc79b8279cbc64e"],["64c31e6e27f515b66713a0e4c3b0dbfdd2554df1","46ff963d879ba28b678c62d6c6ed4188c52dbfe9","75360985b5aa2232a80dc73c2bc01e9c61b9d9e5","c15fbcab6f3767664307c620d1fc2601ddec5845","e3dae08574364f16e5a22b7da7eb70ff6012938a"],["062f9111d18dd2f48b23863c62abb42fdd06a7c8","f5e57400514a1b47e0446f19ad551aebeb45bf77","5d2c44614369b105e708f55c4f8cb42bd975b37d","a41c7ad6bbe6b7f0c5c4ea8747ce82b2a6672512","9fe8ed306878b8c5a6b54c95e7bacf473d58ae4b"],["36a89e399b1a98448bf27a758e3a243ad10a7d42","5498dcae61fef338ff6847ab2cef890ab7a2c4aa","7fcc5f607191f9755902f5d22b1ab4b48caa1c82","5148237cc8724e3d1921ec152dcf971d8a491dcf","bd53091a7361629418e5f44fa1f1701610b09ecd"],["97c821746ad73e24bcefe3b176e51f6e068e07df","85d5de246681c7faee829315f47450ab55c7e839","f2a3beb00509b60b0265f8932efc6c921671a04e","452514388a16aa14409d3085042523fab379eeb4","b6ae3de3e991d5b5404c126da2dff6c64dd9ef9f"],["0cda07baa966523751a22fe42e5611a5ec746da6","6509f55b06d0311329f8a50e832f3692d968c161","73082b7f6c510543b04454a25f698dee02a05677","4b57eb854d054f144f1a7900f4bb3f931166b5f4","e3726d0c8876a7999639913c95b18ccaa04a99a9"],["9cc81d18dfff63a25a51fd644f26457f89c734cc","360220d6188a394a87551d5ad1e303dc9cb228f5","f6c4ef8714eb8d7cfb7d901cac99b8568d983d8b","b589a05e04ef07728d1f0be9cb8a0b67148e58bd","00635c0b1032dfb3b621d83b015a302fe3a57d21"],["af68cebc48797a15eeafb07a7b5f7ebb10b1c083","65b794793817d5c27f9e469e6f038805e3a97370","c059e0f75c3030397a9bb4cdf571311039d59a54","2f0d141030e3cc3525d6427046021ea801d8c552","5b77b3ba07f6e1e5a5034b7038e6269f6037bdce"],["502c23c4c54d62a0c02677f95e8f87c65cf179c8","d4bfa695e504c53d00fa69fd06f7330fa701382c","1453c47b5329f9513ccb0bd6f0dd6760acea64a1","1219f57f38077bc408fa7fdc0625a0f7df1667a4","56d6c0e1dcf2fad67c8a6e7ff5dcc77209bc50c9"],["1db3ebe7d002e63a4dc7ff83d0853694f038a485","8bd848e8f35c3a33acd562f6a42c162d4b525ba0","d08be09bdb7ca2a66d7c15b82a1d91536f6581e1","f4e9194229d27ed6ce2580912901d21560b327be","80c99ec213f2c5339c9557950373b96afd303cfb"],["91b48b27a4d53dcf0246a293da757fa71ee70c77","1b8f4fac27539f0d76b2e0f692114867c81da375","ac23cee423d5beb88571d795fecaedb61af23010","e8f579de093b51c0325d087165a6307eb1bad270","4d68b157ab69aad3da2c152b6572bb1bf3c927e7"],["e29840b777c87632fdd4a7fbaef916952c0c475f","3a7f14d6f756551a1715802fce551c4a9472f866","0ca9ae6859c3850496fc1d1f361fd71eeed1e034","cdb6cf9f1944572603a390c5ea5d9d9c6821c112","4d62c567c5e881487e3f8af97d539372a59dc182"],["104546692ab4ca3eb7e6f14238c2aaec61ba8777","981070d53771e5d798478a0f7cfd049d3c467f8f","e1e49a8d8b0fba3aeebeed1dc823fd975698a700","576bba8bc646ca27f18abf94ac1adaa9c62d0e72","ae5ce23af1961937ba6f5e17088552ab4ce872bb"],["7d947965a8f52dcce015e847509cf0d9d5324ec9","4e8f069f0ca913171ec9a77ab204d82d16cccb05","6f04a2e335e807012f58147610dc9d9c6c474426","aefecb0c51631952a4551e9e8ed81538c85d8a6c","ef763cc1060ffae4dc156b0165b9253c7f073a76"],["d7311d43158ebd340d870697c5c706233b42a230","3b1120c9748ab6b2e2c3e2f4295971ba58f958e0","3a60e2bf53eee43780a864a90fccbdc42e4e15e0","202e1356ae61aeebc7057926fa5eb6258f5375fe","3430eb06f4f8784bd035d7d9b3973f0044a38954"],["0c5d019502e5547a92405e47e2088a02294c379f","d3dca98c142ee8521fa85f27ef085f79606e7138","d45b3475906824f2b1c5ffe9d67eeadf07bd633b","80bef9c0adcb6fea3efa84a90da8b4c4fa4bff31","77030362159ce9205ef45f8f9fc7345bc2579c9b"],["00b6f0bd1a46b010cb1934eaef1b5c69310566a5","8fcb923c507a7272cb4e80aa6b0453bdda9b391d","f93941212bd610fae6bdd931b461b5a6f3cd1259","5eafee6d1d0d3834c7f9469d28000bbc42484974","b402070818e224146a5e94cafad3071db55ef37a"],["e747dd0eda83811902fde0c5adb6ae17dc86dac9","a6aaf9da2cc7293701e3db7d89aca0df491e3b01","93ad361a041ed828b28cccb5c330427af619475a","dc08430db4eb5dbb7cee2388f40de7969b7c4c5b","e37acdf84908246c1de76c4b08bb53eafb2adbf3"],["bbadacb06d1bf892979e67c7f2210a16d334a695","3839ef5b853e2cf5b353883579073d30ff8e5956","500e1646b22fdae808c1c20673f733db338d3de6","ece72c3df061d3963dfc6c8aa44d8019577dbf8e","3a8b11a5af523eec11a6749b0e42823844a19c67"],["02f2c55a8dea17386c602c89f9d622928fc39899","1484de298e542face051a4976a2fb1d91a68fc5e","873e4c4782df373113e382e3fd4b62e153a12e86","686768ed5e802f0e6105c4c18ef940050a16e953","9fe9d5fb40e2f57081145de783afccf93dc3d445"],["b600b26a4f3a8e8387601fe4a57f51b07526edac","e12f21904a7ef1f8a4e6fa9525343748607066e0","44f566aa6ba9a036c7ed06e8e4f34ead22bd9c00","7e1c3a08601add585e56805fa5904647b48da72a","e9e5d31707f537adfa90394179895631153f4d38"],["a2db01110e38591d661354aab07be0bfac5df350","1816db403727307aae34d480ca13deb32248486a","eab9b168a11001a5e11a863f31d178d3a3685f1b","85c460aac60a10242608c41f6ae629291ac26906","9c14159e304cc39eca7907b8598087b0ac6f1499"],["4c8d0ab9ef00359c8b61eba9a2390402eb5f90a3","d631fbaf73ad493f86d2ffe8be13dca39236307e","44dabe0ee24951089c9de2bbe75872aaef26fb80","fb6c935452ff8445050c8bfb5b8b3eec47f83d0c","3d82db78b32e579811a329ae4a3ff106028445b7"],["ec43ae91bbae018e13ddaad67eb87720823f8c8b","a32807d675cc7df14e7cd981dc75f8ab5ce8c632","7747b04179803ff67aaba4484e8d7b5526042428","4e86b8828726c3cba42051aeee6272bdb7567c30","46b50709098934bb3f089c581fdf7470886e9ea3"],["36fc914930449e4652ed3ce9175bc82d761af80b","972f632a85d5b532dacf63a760ba38290694a05a","7ef1edd2e0aabecb713e84c937d861bcb23126df","fd9ece6734edf351920a587d8cf9ff97b884f30c","2f55d2eff56f0b9cf6259e588d55c55300c8e423"],["04c7270648866cd3caf1dd1dd1ae3de8c24cba32","53d6a37ad885dcb7c3546460c38bf764ac2d5430","1cd9796ccaf8f2385d64a8ee2a61590bf0d14c5f","36efa4dd76ef64f762a6445a0cdc85f98d286ad8","5a0dfadad6fbbe0a4ff1bf2e2539d55e881940d8"],["4cc38ee4079b58f50e0696663b420ee3ae035039","af557f4c228c1e415a0fca6556372f739bf58a79","24bed18905794c840ef9a5d78778a68b70e88219","794f355edc5d917e82912a1ce5f5f8024a04f0e2","d8f76d73a787238d3e4da5c4a5b62513a7243407"],["04b73beb77541ac390281f047f7f65ad9d2a0382","66fa37cbb4385ad7571a44591ca6429d7280565e","b362238c1ed68cb139fc15d1d5b511cfb27787f9","1d8d2b317ecb422cb033892e02f899689d53e29b","1f20168a591c5bc7d4bdced6fc1d81e0945e5f56"],["6c19864cb18d3d390e25cf007519aad1145af51e","f09ca300ae0a55583780a9290bb76c412a4aad47","1cf5a94df62a26f86241c8da2438ab907fba7f04","0c9cae02602c76c6c460a42eda6ab3f51e68e415","14abebc8b62badff510290b07d2efcdbae9776ce"],["9d39478bfcd232fed377987ae345a16036b0e6c9","fa3b7dff852a8a98c30673d80c688ab5e0d2283d","49a436609ebd03c7d4e7697bf66680924fb2dc3b","7b2d2495be512c4743188f95a372a46028259552","aeac8adf121fe55339dbcb6acda0f979987af959"],["d93aae6bd053f8d03e99ac0cbcbb6e2251d9a68f","46e739cf5a4e9e2fc3a153296405dcd4a36449de","a2ca6bcf08e93a38e39aa595d71e364452822b1b","86dc94ccbb2ea3b23d11753383cfa1fb29d2b969","dffad77420b59076804c888f39530ec2fd4dc220"],["fa3b080844a4ab1ac45c8df08861e751218a4949","9b36ef748edc6ae41a8095a997fd34a830a4c5ca","ea44984b98c8487e1a7db6cd72b5ccf01ac2e349","891c3efbf636ce60786252c30a854b2313c599ca","045613611889bd1097bf3375a10e9fab84d244ec"],["431c2f3a40f77b090db415dd9a562f9882d6c612","43af8a35e466a05ebd3076efa1ae4b4bc79ce983","e7d8c0dbe949036e201bd5f3256b4e88021d0c71","af2d65194ddb873d9dc28367b8923bf8f0635fb0","3e671678ed69cddeca3c8dec5f317fcef4b0626e"],["ca034ace74985d280fcd8ceeca4adf6d1ef983a7","0166bb6fb7148a2ce8a81c80deca04aaa46bcbf7","34dea7372996affc16a5d779adea8aa7c3847a81","416c9e86407abc355e0a6b21f9510d4617ebd483","6653cefcd9448edcca85f1a49719ddfa8555f3fd"],["62336af2ffc05267b6f80bf2e97e036108368f54","94db17a7a28f2fa0aeb9735d0c84489cf14b2bb3","98405818370481582e5dc0cdbdf21da59da03823","da221a9777163fe4c7fd01e5765b0df071e781ce","6c3f1a630925d770ccaa4fee69f2d72f7bc1f4d5"],["4d37733363645153d1e3fa7ef627fe502471c58b","99a49c095006eef70c97571e047bef2710920694","1d71069ca378a3c494832278acd8c861d6507e1c","cadf7d91748dd9c1bd94d2e326feb203502b3ccb","cfbdc28174068be637a036e7fcc40d06523dff14"],["11016e28de693c47c7d0d742bec0174151329fdf","57ba21faeb6e628e4c95872188bebc27ad068d0a","fc94904c20f8f28dba8f7858736afcba9ea901d3","58d45374b775937f8f0c4a5ccdbb608197a0fa96","e79ae13993a42bb1bb738a500676ff3c9ac3b9bd"],["485a05c987cb04c51a91b56a4bd09d3563146bf7","0ea780585e6d4e42628387409edec530029ffaaf","8f516e2308e1c599c43d263661570862c71a26c2","2731a536122cbbecaddb124b299b6bd557c7c29e","256f17f11d706db1dffe817610e44b54002cda7d"],["f8cc07b0df35c563b5554aa71de53ce3ba49ee1f","7e0446da60f3a2e4020e16d2af103c929c819d87","e85ae60f7ce7229fe3efb983d2494c68a1ca78b9","8f8bd5f12e05b0d29ba226ad7fddda2d1c9bf65c","daf6be6ac452f30e3f86834c21318f2f27c197b3"],["cc44dfec25517ee2a2551c1d4bb68a09f3aa14b9","436c79cd53e5816ba38c88847545be68474c7216","e979d7aa9410221ff08a32143a0afb3bd3e79730","bbe7c08be227acb76ddd72dbcd46affbe6d93750","92cd2eb729a6436d72f13956157ae0310f50458e"]],"vote-index":70} diff --git a/src/vtp/web/api/mock-data/show-contest-doc.json b/src/vtp/web/api/mock-data/show-contest-doc.json new file mode 100644 index 0000000..c446463 --- /dev/null +++ b/src/vtp/web/api/mock-data/show-contest-doc.json @@ -0,0 +1,2 @@ +{"show-contest-doc":{"header":["commit 6ca91dbca44515587f59294107eee63dc480aa7b","Author: Sandy Currier ","Date: Sat Jan 1 12:00:00 2022 -0500"],"payload":{"CVR": {"cast_branch": "CVRs/0001/0f74637e08", +"choices": [{"name": "Anthony Alpha","party": "Circle Party"},{"name": "Betty Beta","party": "Pentagon Party"},{"name": "Gloria Gamma","party": "Square Party"},{"name": "David Delta","party": "Triangle Party"},{"name": "Emily Echo","party": "Ellipse Party"},{"name": "Francis Foxtrot","party": "OctagonParty"}],"ggo": "GGOs/states/Massachusetts","name": "US senate","selection": ["5: Francis Foxtrot","3: David Delta","1: Betty Beta"],"tally": "rcv","uid": "0001"}} diff --git a/src/vtp/web/api/mock-data/tally-election-doc.json b/src/vtp/web/api/mock-data/tally-election-doc.json new file mode 100644 index 0000000..ee6d8ab --- /dev/null +++ b/src/vtp/web/api/mock-data/tally-election-doc.json @@ -0,0 +1 @@ +{"tally-election-doc":["Scanned 67 contests for contest (US senate) uid=0001, tally=rcv, max=1, win-by>0.5","RCV: round 0","Counted 6ca91dbca44515587f59294107eee63dc480aa7b: choice=Francis Foxtrot","Total vote count: 66","[('Betty Beta', 13), ('Francis Foxtrot', 13), ('Gloria Gamma', 11), ('Anthony Alpha', 10), ('David Delta', 10), ('Emily Echo', 9)]","RCV: round 1","Total vote count: 66","[('Anthony Alpha', 14), ('Betty Beta', 14), ('Francis Foxtrot', 14), ('David Delta', 13), ('Gloria Gamma', 11), ('Emily Echo', 0)]","RCV: round 2","Total vote count: 66","[('Anthony Alpha', 17), ('Francis Foxtrot', 17), ('Betty Beta', 16), ('David Delta', 16), ('Gloria Gamma', 0), ('Emily Echo', 0)]","RCV: round 3","Total vote count: 63","Final results for contest US senate (uid=0001):"," ('Francis Foxtrot', 33)"," ('Anthony Alpha', 30)"," ('David Delta', 0)"," ('Betty Beta', 0)"," ('Gloria Gamma', 0)"," ('Emily Echo', 0)"]} diff --git a/src/vtp/web/api/mock-data/verify-ballot-doc.json b/src/vtp/web/api/mock-data/verify-ballot-doc.json new file mode 100644 index 0000000..ee8d4ae --- /dev/null +++ b/src/vtp/web/api/mock-data/verify-ballot-doc.json @@ -0,0 +1 @@ +{"ballot-check-doc":["Contest '0000 - US president' (d85f51b4363bbe5efba0e33663390db047388edd) is vote 6 out of 64 votes","Contest '0001 - US senate' (6ca91dbca44515587f59294107eee63dc480aa7b) is vote 6 out of 67 votes","Contest '0002 - governor' (9c97ac7adf9145c3f03542f305034942be881797) is vote 6 out of 65 votes","Contest '0003 - County Clerk' (b6764ac2a30fd02cb31d6d5510b06de302cd57bc) is vote 6 out of 65 votes","Contest '0004 - Question 1 - should the starting time of the annual town meeting be moved to 6:30PM?' (9efc283e600a81d4969bee737f3c2ddc2b9a0ea8) is vote 6 out of 64 votes","############","[GOOD]: ballot receipt VALID - no digest errors found","############"]} diff --git a/tests/test_main.py b/tests/test_main.py index 118dfec..71f11de 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,3 +1,5 @@ +"""Tests for API endpoints for the VoteTrackerPlus backend""" + import pytest from fastapi.testclient import TestClient @@ -7,26 +9,78 @@ def test_get_root(): + """test the root test node""" response = client.get("/") assert response.status_code == 200 assert "version" in response.json() +# Endpoint #1 @pytest.fixture -def test_get_vote_store_id(): - response = client.get("/vote/") - assert response.status_code == 200 - assert "VoteStoreID" in response.json() +def vote_store_id(): + """Test retreiving and printing a voter store id guid""" + response = client.post("/vote") + return response +def test_get_vote_store_id(vote_store_id) + assert vote_store_id.status_code == 200 + assert "VoteStoreID" in vote_store_id.json() # retrieve VoteStoreID from response - return response.json()["VoteStoreID"] + return vote_store_id.json()["VoteStoreID"] +# Endpoint #2 +@pytest.fixture def test_get_empty_ballot(test_get_vote_store_id): - # test with invalid VoteStoreID + """Test with invalid VoteStoreID""" response = client.get("/vote/00000X") assert response.status_code == 200 assert "error" in response.json() # test with valid VoteStoreID response = client.get(f"/vote/{test_get_vote_store_id}") assert response.status_code == 200 - assert "ballot" in response.json() + assert "blank-ballot" in response.json() + return response.json()["blank-ballot"] + + +# Endpoint #3 +@pytest.fixture +def cast_ballot(vote_store_id, empty_ballot): + """Cast of a filled-in ballot""" + # breakpoint() + response = client.post( + f"/vote/cast-ballot/{vote_store_id}", + json=empty_ballot.json(), + ) + return response +def test_cast_ballot(vote_store_id, empty_ballot) + assert empty_ballot.status_code == 200 + assert "ballot-check" in empty_ballot.json() + assert "vote-index" in empty_ballot.json() + + +# Endpoint #4 +def test_verify_ballot_check(vote_store_id, cast_ballot): + """testing the verification of a ballot check""" + # import pdb; pdb.set_trace() + response = client.post( + f"/vote/verify-ballot-check/{vote_store_id}", + json=cast_ballot.json(), + ) + assert response.status_code == 200 + assert "ballot-check-doc" in response.json() + + +# Endpoint #5 +def test_tally_election(vote_store_id): + """testing the tally""" + # import pdb; pdb.set_trace() + response = client.post( + f"/vote/tally-election/{vote_store_id}", + json={ + "contest-uids": None, + "track-contests": "123", + "verbosity": 3, + }, + ) + assert response.status_code == 200 + assert "tally-election-doc" in response.json()