From 65c81527daaea424a1d95cff5af4fc4bad37e1c8 Mon Sep 17 00:00:00 2001 From: JU4N98 Date: Thu, 15 Feb 2024 17:03:32 -0300 Subject: [PATCH] Updates python version, dependencies and fixes errors. Signed-off-by: JU4N98 --- .pre-commit-config.yaml | 2 +- CONTRIBUTING.md | 7 +- Pipfile | 39 +- Pipfile.lock | 1497 +++++++++-------- setup.py | 3 +- src/pyspiffe/bundle/jwt_bundle/jwt_bundle.py | 5 +- .../bundle/x509_bundle/x509_bundle.py | 5 +- .../bundle/x509_bundle/x509_bundle_set.py | 3 +- src/pyspiffe/config.py | 5 +- src/pyspiffe/proto/spiffe/workload_pb2.py | 810 +-------- src/pyspiffe/proto/spiffe/workload_pb2.pyi | 589 ++++--- src/pyspiffe/spiffe_id/spiffe_id.py | 4 +- src/pyspiffe/svid/jwt_svid.py | 2 +- src/pyspiffe/svid/x509_svid.py | 28 +- src/pyspiffe/utils/certificate_utils.py | 26 +- src/pyspiffe/workloadapi/cancel_handler.py | 5 +- .../workloadapi/default_jwt_source.py | 7 +- .../default_workload_api_client.py | 7 +- .../workloadapi/default_x509_source.py | 9 +- test/bundle/x509bundle/test_x509_bundle.py | 2 +- test/svid/jwtsvid/test_jwt_svid.py | 28 +- test/svid/x509svid/test_x509_svid.py | 28 +- test/test_config.py | 4 +- test/utils/utils.py | 2 +- test/workloadapi/test_cancel_handler.py | 4 +- .../test_default_workload_api_client.py | 6 +- test/workloadapi/test_jwt_source.py | 18 +- test/workloadapi/test_x509_context.py | 2 +- test/workloadapi/test_x509_source.py | 22 +- tox.ini | 8 +- 30 files changed, 1358 insertions(+), 1819 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bae38314..6e6bb697 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,6 +3,6 @@ repos: rev: stable hooks: - id: black - language_version: python3.6 + language_version: python3.9 exclude: ^src/pyspiffe/proto/ require_serial: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9bfa8f56..331effdc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,15 +13,14 @@ ## Prerequisites For basic development you will need: -* Python 3.6 +* Python 3.9 * Pipenv (https://github.com/pypa/pipenv) * Pyenv (https://github.com/pyenv/pyenv) ## Setup the environment 1. Use `pyenv` to install the different version of Python. -Python 3.6 is required for development and the other versions are required for testing. +Python 3.9 is required for development and the other versions are required for testing. ``` -pyenv install 3.6.x pyenv install 3.7.x pyenv install 3.8.x pyenv install 3.9.x @@ -37,7 +36,7 @@ cd py-spiffe 4. Use the installed versions to define the specific versions for development and testing ``` -pyenv local 3.6.12 3.7.0 3.8.0 3.9.0 +pyenv local 3.7.0 3.8.0 3.9.0 ``` 5. Create the virtual environment diff --git a/Pipfile b/Pipfile index 32f995e5..64379bfe 100644 --- a/Pipfile +++ b/Pipfile @@ -4,26 +4,27 @@ verify_ssl = true name = "pypi" [packages] -grpcio = "~=1.36.1" -grpcio-tools = "~=1.36.1" -requests = "~=2.25.0" -python-json-logger = "~=0.1.11" -cryptography = "~=3.4.4" -pyjwt = {version = "~=2.1.0", extras = ["crypto"]} -pyasn1 = "~=0.4.8" -pem = "~=21.1.0 " +grpcio = "~=1.60.0" +grpcio-tools = "~=1.60.0" +requests = "~=2.30.0" +python-json-logger = "~=2.0.6" +cryptography = "~=41.0.0" +pyjwt = {version = "~=2.7.0", extras = ["crypto"]} +pyasn1 = "~=0.5.0" +pyasn1-modules = "~=0.3.0" +pem = "~=21.2.0 " [requires] -python_version = "3.6" +python_version = "3.9" [dev-packages] -black = "==21.5b2" -mypy = "==0.901" -mypy-protobuf = "==2.4" -types-protobuf = "0.1.11" -pre-commit = "==1.18.1" -tox = "~=3.20.1" -sphinx = "~=3.4.3" -pytest = "==6.2.1" -pytest-mock = "~=3.5.1" -flake8 = "==3.8.4" +black = "==22.3.0" +mypy = "==1.7.1" +mypy-protobuf = "==3.4.0" +types-protobuf = "4.24.0.4" +pre-commit = "==3.5.0" +tox = "~=4.12.0" +sphinx = "~=7.2.5" +pytest = "==7.4.4" +pytest-mock = "~=3.11.1" +flake8 = "==6.1.0" diff --git a/Pipfile.lock b/Pipfile.lock index 71a95848..bb3dc482 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "b659cf9775dd31cfc66028cd32ba50356d529504b2cc9052b677402dc8aff4e0" + "sha256": "f8b874ada50a308f476f7c1ae2253838fb0e793c36ef06dddcc737df1dcc305f" }, "pipfile-spec": 6, "requires": { - "python_version": "3.6" + "python_version": "3.9" }, "sources": [ { @@ -18,839 +18,1040 @@ "default": { "certifi": { "hashes": [ - "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee", - "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8" + "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f", + "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1" ], - "version": "==2021.5.30" + "markers": "python_version >= '3.6'", + "version": "==2024.2.2" }, "cffi": { "hashes": [ - "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813", - "sha256:04c468b622ed31d408fea2346bec5bbffba2cc44226302a0de1ade9f5ea3d373", - "sha256:06d7cd1abac2ffd92e65c0609661866709b4b2d82dd15f611e602b9b188b0b69", - "sha256:06db6321b7a68b2bd6df96d08a5adadc1fa0e8f419226e25b2a5fbf6ccc7350f", - "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06", - "sha256:0f861a89e0043afec2a51fd177a567005847973be86f709bbb044d7f42fc4e05", - "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea", - "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee", - "sha256:1bf1ac1984eaa7675ca8d5745a8cb87ef7abecb5592178406e55858d411eadc0", - "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396", - "sha256:24a570cd11895b60829e941f2613a4f79df1a27344cbbb82164ef2e0116f09c7", - "sha256:24ec4ff2c5c0c8f9c6b87d5bb53555bf267e1e6f70e52e5a9740d32861d36b6f", - "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73", - "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315", - "sha256:293e7ea41280cb28c6fcaaa0b1aa1f533b8ce060b9e701d78511e1e6c4a1de76", - "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1", - "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49", - "sha256:3c3f39fa737542161d8b0d680df2ec249334cd70a8f420f71c9304bd83c3cbed", - "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892", - "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482", - "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058", - "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5", - "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53", - "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045", - "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3", - "sha256:681d07b0d1e3c462dd15585ef5e33cb021321588bebd910124ef4f4fb71aef55", - "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5", - "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e", - "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c", - "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369", - "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827", - "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053", - "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa", - "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4", - "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322", - "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132", - "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62", - "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa", - "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0", - "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396", - "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e", - "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991", - "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6", - "sha256:cc5a8e069b9ebfa22e26d0e6b97d6f9781302fe7f4f2b8776c3e1daea35f1adc", - "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1", - "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406", - "sha256:df5052c5d867c1ea0b311fb7c3cd28b19df469c056f7fdcfe88c7473aa63e333", - "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d", - "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c" - ], - "version": "==1.14.5" + "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", + "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", + "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", + "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", + "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", + "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", + "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", + "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", + "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", + "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", + "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", + "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", + "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", + "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", + "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", + "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", + "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", + "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", + "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", + "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", + "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", + "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", + "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", + "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", + "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", + "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", + "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", + "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", + "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", + "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", + "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", + "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", + "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", + "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", + "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", + "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", + "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", + "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", + "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", + "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", + "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", + "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", + "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", + "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", + "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", + "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", + "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", + "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", + "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", + "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", + "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", + "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" + ], + "markers": "python_version >= '3.8'", + "version": "==1.16.0" }, - "chardet": { - "hashes": [ - "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", - "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==4.0.0" + "charset-normalizer": { + "hashes": [ + "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", + "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", + "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", + "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", + "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", + "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", + "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", + "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", + "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", + "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", + "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", + "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", + "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", + "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", + "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", + "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", + "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", + "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", + "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", + "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", + "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", + "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", + "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", + "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", + "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", + "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", + "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", + "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", + "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", + "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", + "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", + "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", + "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", + "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", + "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", + "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", + "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", + "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", + "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", + "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", + "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", + "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", + "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", + "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", + "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", + "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", + "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", + "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", + "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", + "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", + "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", + "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", + "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", + "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", + "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", + "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", + "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", + "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", + "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", + "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", + "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", + "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", + "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", + "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", + "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", + "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", + "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", + "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", + "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", + "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", + "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", + "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", + "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", + "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", + "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", + "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", + "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", + "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", + "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", + "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", + "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", + "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", + "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", + "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", + "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", + "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", + "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", + "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", + "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", + "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" + ], + "markers": "python_version >= '3.7'", + "version": "==3.3.2" }, "cryptography": { "hashes": [ - "sha256:0f1212a66329c80d68aeeb39b8a16d54ef57071bf22ff4e521657b27372e327d", - "sha256:1e056c28420c072c5e3cb36e2b23ee55e260cb04eee08f702e0edfec3fb51959", - "sha256:240f5c21aef0b73f40bb9f78d2caff73186700bf1bc6b94285699aff98cc16c6", - "sha256:26965837447f9c82f1855e0bc8bc4fb910240b6e0d16a664bb722df3b5b06873", - "sha256:37340614f8a5d2fb9aeea67fd159bfe4f5f4ed535b1090ce8ec428b2f15a11f2", - "sha256:3d10de8116d25649631977cb37da6cbdd2d6fa0e0281d014a5b7d337255ca713", - "sha256:3d8427734c781ea5f1b41d6589c293089704d4759e34597dce91014ac125aad1", - "sha256:7ec5d3b029f5fa2b179325908b9cd93db28ab7b85bb6c1db56b10e0b54235177", - "sha256:8e56e16617872b0957d1c9742a3f94b43533447fd78321514abbe7db216aa250", - "sha256:de4e5f7f68220d92b7637fc99847475b59154b7a1b3868fb7385337af54ac9ca", - "sha256:eb8cc2afe8b05acbd84a43905832ec78e7b3873fb124ca190f574dca7389a87d", - "sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9" + "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960", + "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a", + "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc", + "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a", + "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf", + "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1", + "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39", + "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406", + "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a", + "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a", + "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c", + "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be", + "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15", + "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2", + "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d", + "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157", + "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003", + "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248", + "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a", + "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec", + "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309", + "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7", + "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d" ], "index": "pypi", - "version": "==3.4.7" + "version": "==41.0.7" }, "grpcio": { "hashes": [ - "sha256:02030e1afd3247f2b159df9dff959ec79dd4047b1c4dd4eec9e3d1642efbd504", - "sha256:0648a6d5d7ddcd9c8462d7d961660ee024dad6b88152ee3a521819e611830edf", - "sha256:09af8ceb91860086216edc6e5ea15f9beb2cf81687faa43b7c03216f5b73e244", - "sha256:1030e74ddd0fa6e3bad7944f0c68cf1251b15bcd70641f0ad3858fdf2b8602a0", - "sha256:1056b558acfd575d774644826df449e1402a03e456a3192fafb6b06d1069bf80", - "sha256:20b7c4c5513e1135a2261e56830c0e710f205fee92019b92fe132d7f16a5cfd8", - "sha256:216fbd2a488e74c3b96e240e4054c85c4c99102a439bc9f556936991643f43bc", - "sha256:24d4c2c5e540e666c52225953d6813afc8ccf9bf46db6a72edd4e8d606656248", - "sha256:2abaa9f0d83bd0b26f6d0d1fc4b97d73bde3ceac36ab857f70d3cabcf31c5c79", - "sha256:3a6295aa692806218e97bb687a71cd768450ed99e2acddc488f18d738edef463", - "sha256:3c5204e05e18268dd6a1099ca6c106fd9d00bcae1e37d5a5186094c55044c941", - "sha256:3e75643d21db7d68acd541d3fec66faaa8061d12b511e101b529ff12a276bb9b", - "sha256:45ea10dd133a43b10c0b4326834107ebccfee25dab59b312b78e018c2d72a1f0", - "sha256:4c05ed54b2a00df01e633bebec819b512bf0c60f8f5b3b36dd344dc673b02fea", - "sha256:4dc7295dc9673f7af22c1e38c2a2c24ecbd6773a4c5ed5a46ed38ad4dcf2bf6c", - "sha256:52ec563da45d06319224ebbda53501d25594de64ee1b2786e119ba4a2f1ce40c", - "sha256:5378189fb897567f4929f75ab67a3e0da4f8967806246cb9cfa1fa06bfbdb0d5", - "sha256:5e4920a8fb5d17b2c5ba980db0ac1c925bbee3e5d70e96da3ec4fb1c8600d68f", - "sha256:6b30682180053eebc87802c2f249d2f59b430e1a18e8808575dde0d22a968b2c", - "sha256:6f6f8a8b57e40347d0bf32c2135037dae31d63d3b19007b4c426a11b76deaf65", - "sha256:76daa3c4d58fcf40f7969bdb4270335e96ee0382a050cadcd97d7332cd0251a3", - "sha256:7863c2a140e829b1f4c6d67bf0bf15e5321ac4766d0a295e2682970d9dd4b091", - "sha256:7cbeac9bbe6a4a7fce4a89c892c249135dd9f5f5219ede157174c34a456188f0", - "sha256:7e32bc01dfaa7a51c547379644ea619a2161d6969affdac3bbd173478d26673d", - "sha256:85a6035ae75ce964f78f19cf913938596ccf068b149fcd79f4371268bcb9aa7c", - "sha256:8a89190de1985a54ef311650cf9687ffb81de038973fd32e452636ddae36b29f", - "sha256:9a18299827a70be0507f98a65393b1c7f6c004fe2ca995fe23ffac534dd187a7", - "sha256:a602d6b30760bbbb2fe776caaa914a0d404636cafc3f2322718bf8002d7b1e55", - "sha256:a66ea59b20f3669df0f0c6a3bd57b985e5b2d1dcf3e4c29819bb8dc232d0fd38", - "sha256:b003e24339030ed356f59505d1065b89e1f443ef41ce71ca9069be944c0d2e6b", - "sha256:bab743cdac1d6d8326c65d1d091d0740b39966dfab06519f74a03b3d128b8454", - "sha256:c18739fecb90760b183bfcb4da1cf2c6bf57e38f7baa2c131d5f67d9a4c8365d", - "sha256:cbd82c479338fc1c0e5c3db09752b61fe47d40c6e38e4be8657153712fa76674", - "sha256:dee9971aef20fc09ed897420446c4d0926cd1d7630f343333288523ca5b44bb2", - "sha256:e1b9e906aa6f7577016e86ed7f3a69cae7dab4e41356584dc7980f76ea65035f", - "sha256:e3a83c5db16f95daac1d96cf3c9018d765579b5a29bb336758d793028e729921", - "sha256:eafafc7e040e36aa926edc731ab52c23465981888779ae64bfc8ad85888ed4f3", - "sha256:ec753c022b39656f88409fbf9f2d3b28497e3f17aa678f884d78776b41ebe6bd", - "sha256:ed16bfeda02268e75e038c58599d52afc7097d749916c079b26bc27a66900f7d", - "sha256:f214076eb13da9e65c1aa9877b51fca03f51a82bd8691358e1a1edd9ff341330", - "sha256:f22c11772eff25ba1ca536e760b8c34ba56f2a9d66b6842cb11770a8f61f879d", - "sha256:f241116d4bf1a8037ff87f16914b606390824e50902bdbfa2262e855fbf07fe5", - "sha256:f3f70505207ee1cee65f60a799fd8e06e07861409aa0d55d834825a79b40c297", - "sha256:f591597bb25eae0094ead5a965555e911453e5f35fdbdaa83be11ef107865697", - "sha256:f6efa62ca1fe02cd34ec35f53446f04a15fe2c886a4e825f5679936a573d2cbf", - "sha256:f7740d9d9451f3663df11b241ac05cafc0efaa052d2fdca6640c4d3748eaf6e2" + "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8", + "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8", + "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104", + "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc", + "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092", + "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1", + "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180", + "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05", + "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287", + "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216", + "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c", + "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d", + "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594", + "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c", + "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87", + "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de", + "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9", + "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2", + "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff", + "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904", + "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73", + "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549", + "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f", + "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c", + "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0", + "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e", + "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367", + "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc", + "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303", + "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb", + "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c", + "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804", + "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03", + "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6", + "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f", + "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0", + "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd", + "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21", + "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858", + "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce", + "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9", + "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23", + "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073", + "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2", + "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872", + "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe", + "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7", + "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6", + "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929", + "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962", + "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a", + "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a", + "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177", + "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525" ], "index": "pypi", - "version": "==1.36.1" + "version": "==1.60.1" }, "grpcio-tools": { "hashes": [ - "sha256:0873697064cdbb116ba9f88ff524e13e9afd78bf7905ecd6a0f0f743bf40ca64", - "sha256:0a7b85758e44d9585f27fc7692b58e63952a2e9130cfbbd16defda8c2ffbb2ad", - "sha256:120bad5a3f3288ae8acd07d839a13d7873304ae35a1d717033295e90ed9bd8ac", - "sha256:125859be6458e65e348c50ddb7a964ba48945d521af3f46ce35aca9a2b752296", - "sha256:377cd9b8d2098d2ced48d3dee466fd73fb19128aa0edc6f1799077cf4dbda606", - "sha256:55ed5c5de883defacd899123ba5a9f0077b7fb87d8f1778cb5996b4391604447", - "sha256:582b77e7a4905063d8071ac3685cefa38941799d5f4ea7b4519281a28cfc6752", - "sha256:5cec989d219164312bdfa9389aedaea5887fb8133bb1a247fcde5901775b5427", - "sha256:66d2a6237941199df0493e46b8a3123005b4dfde9af1b9572e8c54eb605a7567", - "sha256:6898776449485feedb6d0fd98d3a36c8882c32a5603b86b2511e2557ee765d40", - "sha256:693dc16a65b1766037fca8cddc173c0f45e79dd14e05d61128a30dbfd02f6503", - "sha256:6df49b402f387decaaf57784c3e74bea6f34cf446cc45d4bf7b9adb34f97fb20", - "sha256:6fee070c18be66a282ceb56245191dabf80986aee333e74d2fdea58118b452d4", - "sha256:702c3eb61a3cfddcaea04d2358c0390c2e189fe42b64a92239df8292366ab4df", - "sha256:747b547c487231a6325eda820d1d6a7c6080eda2cd1f68a7d4b2f8d9cc0a3e95", - "sha256:76900dde111192900c6eb5ed491cf0d8a13403e502c74859f2e2c3116842668a", - "sha256:7969915ac252d0e67f9cfd4f8b9d6bb546efc7b26bce34978a940e37ee4078d5", - "sha256:80ef584f7b917f575e4b8f2ec59cd4a4d98c2046e801a735f3136b05742a36a6", - "sha256:92336c60db1052c865ab7c9936680187d16d2f565c470ba03199e817120714e8", - "sha256:93e3ba4696b69fc4356a0823ecddd8b29ebb1fba0571f27574b1182ef5c262f6", - "sha256:96e1c0d267eb03b819a31bcf973579220ec3b8b53178952daa9e2f1ad696783f", - "sha256:9b8556e2938ef9437ef07d028b46198f299533497df878f96785502e6f74250d", - "sha256:9fa491aaccd455e3aec35d12bcef5dce307c674f08e98bbbf33bf6774e6e2ec5", - "sha256:a3a64797840fd4917ec98532d17b9b7c6a954dcfd7862657c750255556d369a5", - "sha256:add07eb3c79478b003ac3af7b636275c37fa6bac56e6a29f79128bea09b37488", - "sha256:aec997dafa90a29b399bdb23d968ab43da223faeac005d384a1194f43ee0f46e", - "sha256:af392594ba30b5ee470b7538cf792df970e2097edc299685d8e0d76b2b1bef7b", - "sha256:bbe8da70ccbe21c72599eb8de5ad26bd053c01f4f03c48ea16323f96f1ec7095", - "sha256:bc6257b5533c66143f4f084aea3ae52c1c01f99997a8b81d2259d0cf083176b5", - "sha256:c02b5b6d185b1af86342381ddd1ad3d0482c4116e203e52a7145636fb1b2ad12", - "sha256:c669f1ee5642631ad93fa51d298306124d26bccc76ce63a3bc143ddcf01c58af", - "sha256:cd44135fb8b45acc79424e7354bb4548911a6202ca2fac384574099f8d998f06", - "sha256:ce621375bc7dfaeac93e23e202771a6e567a8ea7e9a7cc690b87d8b1950e3da6", - "sha256:d6b3c868c6ac15a0e288d3a5380ad5f01802cbbed8645333e496fa31ecea19af", - "sha256:d95dfefe156be02bcce4eb044ac7ff166c8a6c288d71bc3ed960d8b26bce2786", - "sha256:dcdfe82237e7498eb49dd12751716c55d189a5e49b4bda0bb53f85acbe51bbb1", - "sha256:e730845677e45c6829d212be6e4fb69768979c3b35b5884293be02a7f436e18c", - "sha256:ebbfdbff079bfc303a4e1d3da59302147d5cf4f1db2c412a074366149d93e89e", - "sha256:f2befead0395e8aaab1e8f76825c8c9fa93d69249a513c26107a55183f91ccd9", - "sha256:f35fad86d99743cc15fccf11ec74d8c9b76e997cd233dc1fd031457d3f0fd7fc", - "sha256:f4326b1a5352e85480629bf888b132f0aec79bb791d29cd3e2322586cd70433a", - "sha256:f74f0c3eedc0de72c402e82bb1199ffe5e359ccdac70bf789d65444042a84f42", - "sha256:f7ba8d631f8f5c089958285545bd9e307fd752cdd1fa31515a51cfc1e04b833d", - "sha256:facda541209a0b0edfccf6a5b18ce344c4e90bc8950c995482c85936a23ba939", - "sha256:fd5eed43f5764209a95a58db82c064c1958525f30ad8ebb57df38dd2c9e86aa7", - "sha256:ff1792b188183e977e2feccb1f3b3d4580f921df8f61385d7ae8eace10578a23" + "sha256:075bb67895970f96aabc1761ca674bf4db193f8fcad387f08e50402023b5f953", + "sha256:0aa34c7c21cff2177a4096b2b0d51dfbc9f8a41f929847a434e89b352c5a215d", + "sha256:0b62cb2d43a7f0eacc6a6962dfff7c2564874012e1a72ae4167e762f449e2912", + "sha256:15f13e8f3d77b96adcb1e3615acec5b100bd836c6010c58a51465bcb9c06d128", + "sha256:184b27333b627a7cc0972fb70d21a8bb7c02ac4a6febc16768d78ea8ff883ddd", + "sha256:18d7737f29ef5bbe3352547d0eccd080807834f00df223867dfc860bf81e9180", + "sha256:1e96a532d38411f0543fe1903ff522f7142a9901afb0ed94de58d79caf1905be", + "sha256:214281cdafb7acfdcde848eca2de7c888a6e2b5cd25ab579712b965ea09a9cd4", + "sha256:22ce3e3d861321d208d8bfd6161ab976623520b179712c90b2c175151463a6b1", + "sha256:26f91161a91f1601777751230eaaafdf416fed08a15c3ba2ae391088e4a906c6", + "sha256:284749d20fb22418f17d3d351b9eb838caf4a0393a9cb02c36e5c32fa4bbe9db", + "sha256:28ae665113affebdd109247386786e5ab4dccfcfad1b5f68e9cce2e326b57ee6", + "sha256:2973f75e8ba5c551033a1d59cc97654f6f386deaf2559082011d245d7ed87bba", + "sha256:2a7fa55bc62d4b8ebe6fb26f8cf89df3cf3b504eb6c5f3a2f0174689d35fddb0", + "sha256:2c19be2bba5583e30f88bb5d71b430176c396f0d6d0db3785e5845bfa3d28cd2", + "sha256:31294b534f25f02ead204e58dcbe0e5437a95a1a6f276bb9378905595b02ff6d", + "sha256:3aeecd5b8faa2aab67e6c8b8a57e888c00ce70d39f331ede0a21312e92def1a6", + "sha256:3fb6f4d2df0388c35c2804ba170f511238a681b679ead013bfe5e39d0ea9cf48", + "sha256:3fcabf484720a9fa1690e2825fc940027a05a0c79a1075a730008ef634bd8ad2", + "sha256:402efeec36d8b12b792bae8a900085416fc2f57a34b599445ace2e847b6b0d75", + "sha256:40cd8268a675269ce59c4fa50877597ec638bb1099c52237bb726c8ac9791868", + "sha256:46b495bae31c5d3f6ac0240eb848f0642b5410f80dff2aacdea20cdea3938c1d", + "sha256:4e66fe204da15e08e599adb3060109a42927c0868fe8933e2d341ea649eceb03", + "sha256:5b4a939097005531edec331f22d0b82bff26e71ede009354d2f375b5d41e74f0", + "sha256:5c7ed086fef5ff59f46d53a052b1934b73e0f7d12365d656d6af3a88057d5a3e", + "sha256:5ea6e397d87f458bb2c387a4a6e1b65df74ce5b5194a1f16850c38309012e981", + "sha256:652b08c9fef39186ce4f97f05f5440c0ed41f117db0f7d6cb0e0d75dbc6afd3f", + "sha256:6801cfc5a85f0fb6fd12cade45942aaa1c814422328d594d12d364815fe34123", + "sha256:8540f6480428a52614db71dd6394f52cbc0d2565b5ea1136a982f26390a42c7a", + "sha256:8c4b917aa4fcdc77990773063f0f14540aab8d4a8bf6c862b964a45d891a31d2", + "sha256:985ac476da365267a2367ab20060f9096fbfc2e190fb02dd394f9ec05edf03ca", + "sha256:9aadc9c00baa2064baa4414cff7c269455449f14805a355226674d89c507342c", + "sha256:9bba347000f57dae8aea79c0d76ef7d72895597524d30d0170c7d1974a3a03f3", + "sha256:a2bb8efc2cd64bd8f2779b426dd7e94e60924078ba5150cbbb60a846e62d1ed2", + "sha256:a8cfab27ba2bd36a3e3b522aed686133531e8b919703d0247a0885dae8815317", + "sha256:aafc94616c5f89c891d859057b194a153c451f9921053454e9d7d4cbf79047eb", + "sha256:acdba77584981fe799104aa545d9d97910bcf88c69b668b768c1f3e7d7e5afac", + "sha256:af88a2062b9c35034a80b25f289034b9c3c00c42bb88efaa465503a06fbd6a87", + "sha256:b1041377cf32ee2338284ee26e6b9c10f9ea7728092376b19803dcb9b91d510d", + "sha256:b5ae375207af9aa82f516dcd513d2e0c83690b7788d45844daad846ed87550f8", + "sha256:b6ef213cb0aecb2832ee82a2eac32f29f31f50b17ce020604d82205096a6bd0c", + "sha256:bba7230c60238c7a4ffa29f1aff6d78edb41f2c79cbe4443406472b1c80ccb5d", + "sha256:bd85f6c368b93ae45edf8568473053cb1cc075ef3489efb18f9832d4ecce062f", + "sha256:c1047bd831de5d9da761e9dc246988d5f07d722186938dfd5f34807398101010", + "sha256:c20e752ff5057758845f4e5c7a298739bfba291f373ed18ea9c7c7acbe69e8ab", + "sha256:c354505e6a3d170da374f20404ea6a78135502df4f5534e5c532bdf24c4cc2a5", + "sha256:cc8ba358d2c658c6ecbc58e779bf0fc5a673fecac015a70db27fc5b4d37b76b6", + "sha256:cf945bd22f396c0d0c691e0990db2bfc4e77816b1edc2aea8a69c35ae721aac9", + "sha256:d2c26ce5f774c98bd2d3d8d1703048394018b55d297ebdb41ed2ba35b9a34f68", + "sha256:da08224ab8675c6d464b988bd8ca02cccd2bf0275bceefe8f6219bfd4a4f5e85", + "sha256:dffa326cf901fe08a0e218d9fdf593f12276088a8caa07fcbec7d051149cf9ef", + "sha256:e529cd3d4109a6f4a3f7bdaca68946eb33734e2d7ffe861785a0586abe99ee67", + "sha256:eba5fafd70585fbd4cb6ae45e3c5e11d8598e2426c9f289b78f682c0606e81cb", + "sha256:f95bdc6c7c50b7fc442e53537bc5b4eb8cab2a671c1da80d40b5a4ab1fd5d416" ], "index": "pypi", - "version": "==1.36.1" + "version": "==1.60.1" }, "idna": { "hashes": [ - "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", - "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", + "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.10" + "markers": "python_version >= '3.5'", + "version": "==3.6" }, "pem": { "hashes": [ - "sha256:d499fab0bd8dcf6c50360c9c359664d572e01c4388f96fa05fab93049cd61c5e", - "sha256:dddbc395740ed3fcd2940068d190e7071e8b12a9d57b76a2f080e7ca8397b310" + "sha256:64afb669f05502c071d0706ee66e51471718ae248ba39624919da7b4ea73506e", + "sha256:c491833b092662626fd58a87375d450637d4ee94996ad9bbbd42593428e93e5a" ], "index": "pypi", - "version": "==21.1.0" + "version": "==21.2.0" }, "protobuf": { "hashes": [ - "sha256:13ee7be3c2d9a5d2b42a1030976f760f28755fcf5863c55b1460fd205e6cd637", - "sha256:145ce0af55c4259ca74993ddab3479c78af064002ec8227beb3d944405123c71", - "sha256:14c1c9377a7ffbeaccd4722ab0aa900091f52b516ad89c4b0c3bb0a4af903ba5", - "sha256:1556a1049ccec58c7855a78d27e5c6e70e95103b32de9142bae0576e9200a1b0", - "sha256:26010f693b675ff5a1d0e1bdb17689b8b716a18709113288fead438703d45539", - "sha256:2ae692bb6d1992afb6b74348e7bb648a75bb0d3565a3f5eea5bec8f62bd06d87", - "sha256:2bfb815216a9cd9faec52b16fd2bfa68437a44b67c56bee59bc3926522ecb04e", - "sha256:4ffbd23640bb7403574f7aff8368e2aeb2ec9a5c6306580be48ac59a6bac8bde", - "sha256:59e5cf6b737c3a376932fbfb869043415f7c16a0cf176ab30a5bbc419cd709c1", - "sha256:6902a1e4b7a319ec611a7345ff81b6b004b36b0d2196ce7a748b3493da3d226d", - "sha256:6ce4d8bf0321e7b2d4395e253f8002a1a5ffbcfd7bcc0a6ba46712c07d47d0b4", - "sha256:6d847c59963c03fd7a0cd7c488cadfa10cda4fff34d8bc8cba92935a91b7a037", - "sha256:72804ea5eaa9c22a090d2803813e280fb273b62d5ae497aaf3553d141c4fdd7b", - "sha256:7a4c97961e9e5b03a56f9a6c82742ed55375c4a25f2692b625d4087d02ed31b9", - "sha256:85d6303e4adade2827e43c2b54114d9a6ea547b671cb63fafd5011dc47d0e13d", - "sha256:8727ee027157516e2c311f218ebf2260a18088ffb2d29473e82add217d196b1c", - "sha256:99938f2a2d7ca6563c0ade0c5ca8982264c484fdecf418bd68e880a7ab5730b1", - "sha256:9b7a5c1022e0fa0dbde7fd03682d07d14624ad870ae52054849d8960f04bc764", - "sha256:a22b3a0dbac6544dacbafd4c5f6a29e389a50e3b193e2c70dae6bbf7930f651d", - "sha256:a38bac25f51c93e4be4092c88b2568b9f407c27217d3dd23c7a57fa522a17554", - "sha256:a981222367fb4210a10a929ad5983ae93bd5a050a0824fc35d6371c07b78caf6", - "sha256:ab6bb0e270c6c58e7ff4345b3a803cc59dbee19ddf77a4719c5b635f1d547aa8", - "sha256:c56c050a947186ba51de4f94ab441d7f04fcd44c56df6e922369cc2e1a92d683", - "sha256:e76d9686e088fece2450dbc7ee905f9be904e427341d289acbe9ad00b78ebd47", - "sha256:ebcb546f10069b56dc2e3da35e003a02076aaa377caf8530fe9789570984a8d2", - "sha256:f0e59430ee953184a703a324b8ec52f571c6c4259d496a19d1cabcdc19dabc62", - "sha256:ffea251f5cd3c0b9b43c7a7a912777e0bc86263436a87c2555242a348817221b" - ], - "version": "==3.17.3" + "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62", + "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d", + "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61", + "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62", + "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3", + "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9", + "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830", + "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6", + "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0", + "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020", + "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e" + ], + "markers": "python_version >= '3.8'", + "version": "==4.25.2" }, "pyasn1": { "hashes": [ - "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359", - "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576", - "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf", - "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7", - "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", - "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00", - "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8", - "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86", - "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12", - "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776", - "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba", - "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2", - "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3" + "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58", + "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c" ], "index": "pypi", - "version": "==0.4.8" + "version": "==0.5.1" + }, + "pyasn1-modules": { + "hashes": [ + "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c", + "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d" + ], + "index": "pypi", + "version": "==0.3.0" }, "pycparser": { "hashes": [ - "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", - "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" + "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", + "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.20" + "version": "==2.21" }, "pyjwt": { "extras": [ "crypto" ], "hashes": [ - "sha256:934d73fbba91b0483d3857d1aff50e96b2a892384ee2c17417ed3203f173fca1", - "sha256:fba44e7898bbca160a2b2b501f492824fc8382485d3a6f11ba5d0c1937ce6130" + "sha256:ba2b425b15ad5ef12f200dc67dd56af4e26de2331f965c5439994dad075876e1", + "sha256:bd6ca4a3c4285c1a2d4349e5a035fdf8fb94e04ccd0fcbe6ba289dae9cc3e074" ], "index": "pypi", - "version": "==2.1.0" + "version": "==2.7.0" }, "python-json-logger": { "hashes": [ - "sha256:b7a31162f2a01965a5efb94453ce69230ed208468b0bbc7fdfc56e6d8df2e281" + "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c", + "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd" ], "index": "pypi", - "version": "==0.1.11" + "version": "==2.0.7" }, "requests": { "hashes": [ - "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", - "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + "sha256:10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294", + "sha256:239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4" ], "index": "pypi", - "version": "==2.25.1" + "version": "==2.30.0" }, - "six": { + "setuptools": { "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401", + "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" + "markers": "python_version >= '3.8'", + "version": "==69.1.0" }, "urllib3": { "hashes": [ - "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4", - "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f" + "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20", + "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.6" + "markers": "python_version >= '3.8'", + "version": "==2.2.0" } }, "develop": { "alabaster": { "hashes": [ - "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359", - "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02" - ], - "version": "==0.7.12" - }, - "appdirs": { - "hashes": [ - "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", - "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128" + "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65", + "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92" ], - "version": "==1.4.4" - }, - "aspy.yaml": { - "hashes": [ - "sha256:463372c043f70160a9ec950c3f1e4c3a82db5fca01d334b6bc89c7164d744bdc", - "sha256:e7c742382eff2caed61f87a39d13f99109088e5e93f04d76eb8d4b28aa143f45" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.3.0" - }, - "attrs": { - "hashes": [ - "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1", - "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==21.2.0" + "markers": "python_version >= '3.9'", + "version": "==0.7.16" }, "babel": { "hashes": [ - "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9", - "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0" + "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363", + "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.9.1" + "markers": "python_version >= '3.7'", + "version": "==2.14.0" }, "black": { "hashes": [ - "sha256:1fc0e0a2c8ae7d269dfcf0c60a89afa299664f3e811395d40b1922dff8f854b5", - "sha256:e5cf21ebdffc7a9b29d73912b6a6a9a4df4ce70220d523c21647da2eae0751ef" + "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b", + "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176", + "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09", + "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a", + "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015", + "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79", + "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb", + "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20", + "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464", + "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968", + "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82", + "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21", + "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0", + "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265", + "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b", + "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a", + "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72", + "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce", + "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0", + "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a", + "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163", + "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad", + "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d" ], "index": "pypi", - "version": "==21.5b2" + "version": "==22.3.0" + }, + "cachetools": { + "hashes": [ + "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2", + "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1" + ], + "markers": "python_version >= '3.7'", + "version": "==5.3.2" }, "certifi": { "hashes": [ - "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee", - "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8" + "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f", + "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1" ], - "version": "==2021.5.30" + "markers": "python_version >= '3.6'", + "version": "==2024.2.2" }, "cfgv": { "hashes": [ - "sha256:9e600479b3b99e8af981ecdfc80a0296104ee610cab48a5ae4ffd0b668650eb1", - "sha256:b449c9c6118fe8cca7fa5e00b9ec60ba08145d281d52164230a69211c5d597a1" + "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", + "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560" ], - "markers": "python_full_version >= '3.6.1'", - "version": "==3.3.0" + "markers": "python_version >= '3.8'", + "version": "==3.4.0" }, "chardet": { "hashes": [ - "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", - "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", + "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==4.0.0" + "markers": "python_version >= '3.7'", + "version": "==5.2.0" + }, + "charset-normalizer": { + "hashes": [ + "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", + "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", + "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", + "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", + "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", + "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", + "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", + "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", + "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", + "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", + "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", + "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", + "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", + "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", + "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", + "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", + "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", + "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", + "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", + "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", + "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", + "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", + "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", + "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", + "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", + "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", + "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", + "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", + "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", + "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", + "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", + "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", + "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", + "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", + "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", + "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", + "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", + "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", + "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", + "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", + "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", + "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", + "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", + "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", + "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", + "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", + "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", + "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", + "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", + "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", + "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", + "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", + "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", + "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", + "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", + "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", + "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", + "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", + "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", + "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", + "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", + "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", + "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", + "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", + "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", + "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", + "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", + "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", + "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", + "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", + "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", + "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", + "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", + "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", + "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", + "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", + "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", + "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", + "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", + "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", + "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", + "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", + "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", + "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", + "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", + "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", + "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", + "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", + "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", + "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" + ], + "markers": "python_version >= '3.7'", + "version": "==3.3.2" }, "click": { "hashes": [ - "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a", - "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6" + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], - "markers": "python_version >= '3.6'", - "version": "==8.0.1" + "markers": "python_version >= '3.7'", + "version": "==8.1.7" }, - "dataclasses": { + "colorama": { "hashes": [ - "sha256:0201d89fa866f68c8ebd9d08ee6ff50c0b255f8ec63a71c16fda7af82bb887bf", - "sha256:8479067f342acf957dc82ec415d355ab5edb7e7646b90dc6e2fd1d96ad084c97" + "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", + "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" ], - "markers": "python_version < '3.7'", - "version": "==0.8" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==0.4.6" }, "distlib": { "hashes": [ - "sha256:106fef6dc37dd8c0e2c0a60d3fca3e77460a48907f335fa28420463a6f799736", - "sha256:23e223426b28491b1ced97dc3bbe183027419dfc7982b4fa2f05d5f3ff10711c" + "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784", + "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64" ], - "version": "==0.3.2" + "version": "==0.3.8" }, "docutils": { "hashes": [ - "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125", - "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61" + "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6", + "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b" + ], + "markers": "python_version >= '3.7'", + "version": "==0.20.1" + }, + "exceptiongroup": { + "hashes": [ + "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14", + "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.17.1" + "markers": "python_version < '3.11'", + "version": "==1.2.0" }, "filelock": { "hashes": [ - "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59", - "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836" + "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e", + "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c" ], - "version": "==3.0.12" + "markers": "python_version >= '3.8'", + "version": "==3.13.1" }, "flake8": { "hashes": [ - "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", - "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" + "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23", + "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5" ], "index": "pypi", - "version": "==3.8.4" + "version": "==6.1.0" }, "identify": { "hashes": [ - "sha256:18d0c531ee3dbc112fa6181f34faa179de3f57ea57ae2899754f16a7e0ff6421", - "sha256:5b41f71471bc738e7b586308c3fca172f78940195cb3bf6734c1e66fdac49306" + "sha256:a4316013779e433d08b96e5eabb7f641e6c7942e4ab5d4c509ebd2e7a8994aed", + "sha256:ee17bc9d499899bc9eaec1ac7bf2dc9eedd480db9d88b96d123d3b64a9d34f5d" ], - "markers": "python_full_version >= '3.6.1'", - "version": "==2.2.10" + "markers": "python_version >= '3.8'", + "version": "==2.5.34" }, "idna": { "hashes": [ - "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", - "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" + "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", + "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.10" + "markers": "python_version >= '3.5'", + "version": "==3.6" }, "imagesize": { "hashes": [ - "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1", - "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1" + "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", + "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.2.0" + "version": "==1.4.1" }, "importlib-metadata": { "hashes": [ - "sha256:b8de9eff2b35fb037368f28a7df1df4e6436f578fa74423505b6c6a778d5b5dd", - "sha256:c2d6341ff566f609e89a2acb2db190e5e1d23d5409d6cc8d2fe34d72443876d4" + "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e", + "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc" ], - "markers": "python_version < '3.8'", - "version": "==2.1.1" - }, - "importlib-resources": { - "hashes": [ - "sha256:22a2c42d8c6a1d30aa8a0e1f57293725bfd5c013d562585e46aff469e0ff78b3", - "sha256:a0143290bef3cbc99de9e40176e4987780939a955b8632f02ce6c935f42e9bfc" - ], - "markers": "python_version < '3.7'", - "version": "==5.2.0" + "markers": "python_version < '3.10'", + "version": "==7.0.1" }, "iniconfig": { "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", + "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" ], - "version": "==1.1.1" + "markers": "python_version >= '3.7'", + "version": "==2.0.0" }, "jinja2": { "hashes": [ - "sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4", - "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4" + "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa", + "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90" ], - "markers": "python_version >= '3.6'", - "version": "==3.0.1" + "markers": "python_version >= '3.7'", + "version": "==3.1.3" }, "markupsafe": { "hashes": [ - "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298", - "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64", - "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b", - "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567", - "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff", - "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74", - "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35", - "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26", - "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7", - "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75", - "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f", - "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135", - "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8", - "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a", - "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914", - "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18", - "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8", - "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2", - "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d", - "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b", - "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f", - "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb", - "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833", - "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415", - "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902", - "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9", - "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d", - "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066", - "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f", - "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5", - "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94", - "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509", - "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51", - "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872" - ], - "markers": "python_version >= '3.6'", - "version": "==2.0.1" + "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", + "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", + "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", + "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", + "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", + "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", + "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", + "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df", + "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", + "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", + "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", + "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", + "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", + "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371", + "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2", + "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", + "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52", + "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", + "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", + "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", + "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", + "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", + "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", + "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", + "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", + "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", + "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", + "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", + "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", + "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9", + "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", + "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", + "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", + "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", + "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", + "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", + "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a", + "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", + "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", + "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", + "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", + "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", + "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", + "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", + "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", + "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f", + "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50", + "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", + "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", + "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", + "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", + "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", + "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", + "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", + "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf", + "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", + "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", + "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", + "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", + "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.5" }, "mccabe": { "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", + "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e" ], - "version": "==0.6.1" + "markers": "python_version >= '3.6'", + "version": "==0.7.0" }, "mypy": { "hashes": [ - "sha256:053b92ebae901fc7954677949049f70133f2f63e3e83dc100225c26d6a46fe95", - "sha256:08cf1f31029612e1008a9432337ca4b1fbac989ff7c8200e2c9ec42705cd4c7b", - "sha256:18753a8bb9bcf031ff10009852bd48d781798ecbccf45be5449892e6af4e3f9f", - "sha256:1cd241966a35036f936d4739bd71a1c64e15f02bf7d12bb2815cccfb2993a9de", - "sha256:307a6c047596d768c3d689734307e47a91596eb9dbb67cfdf7d1fd9117b27f13", - "sha256:4a622faa3be76114cdce009f8ec173401494cf9e8f22713e7ae75fee9d906ab3", - "sha256:4b54518e399c3f4dc53380d4252c83276b2e60623cfc5274076eb8aae57572ac", - "sha256:5ddd8f4096d5fc2e7d7bb3924ac22758862163ad2c1cdc902c4b85568160e90a", - "sha256:61b10ba18a01d05fc46adbf4f18b0e92178f6b5fd0f45926ffc2a408b5419728", - "sha256:7845ad3a31407bfbd64c76d032c16ab546d282930f747023bf07c17b054bebc5", - "sha256:79beb6741df15395908ecc706b3a593a98804c1d5b5b6bd0c5b03b67c7ac03a0", - "sha256:8183561bfd950e93eeab8379ae5ec65873c856f5b58498d23aa8691f74c86030", - "sha256:91211acf1485a1db0b1261bc5f9ed450cba3c0dfd8da0a6680e94827591e34d7", - "sha256:97be0e8ed116f7f79472a49cf06dd45dd806771142401f684d4f13ee652a63c0", - "sha256:9941b685807b60c58020bb67b3217c9df47820dcd00425f55cdf71f31d3c42d9", - "sha256:a85c6759dcc6a9884131fa06a037bd34352aa3947e7f5d9d5a35652cc3a44bcd", - "sha256:bc61153eb4df769538bb4a6e1045f59c2e6119339690ec719feeacbfc3809e89", - "sha256:bf347c327c48d963bdef5bf365215d3e98b5fddbe5069fc796cec330e8235a20", - "sha256:c86e3f015bfe7958646825d41c0691c6e5a5cd4015e3409b5c29c18a3c712534", - "sha256:c8bc628961cca4335ac7d1f2ed59b7125d9252fe4c78c3d66d30b50162359c99", - "sha256:da914faaa80c25f463913da6db12adba703822a768f452f29f75b40bb4357139", - "sha256:e8577d30daf1b7b6582020f539f76e78ee1ed64a0323b28c8e0333c45db9369f", - "sha256:f208cc967e566698c4e30a1f65843fc88d8da05a8693bac8b975417e0aee9ced" + "sha256:12cce78e329838d70a204293e7b29af9faa3ab14899aec397798a4b41be7f340", + "sha256:1484b8fa2c10adf4474f016e09d7a159602f3239075c7bf9f1627f5acf40ad49", + "sha256:204e0d6de5fd2317394a4eff62065614c4892d5a4d1a7ee55b765d7a3d9e3f82", + "sha256:2643d145af5292ee956aa0a83c2ce1038a3bdb26e033dadeb2f7066fb0c9abce", + "sha256:2c6e4464ed5f01dc44dc9821caf67b60a4e5c3b04278286a85c067010653a0eb", + "sha256:2f7f6985d05a4e3ce8255396df363046c28bea790e40617654e91ed580ca7c51", + "sha256:31902408f4bf54108bbfb2e35369877c01c95adc6192958684473658c322c8a5", + "sha256:40716d1f821b89838589e5b3106ebbc23636ffdef5abc31f7cd0266db936067e", + "sha256:4b901927f16224d0d143b925ce9a4e6b3a758010673eeded9b748f250cf4e8f7", + "sha256:4fc3d14ee80cd22367caaaf6e014494415bf440980a3045bf5045b525680ac33", + "sha256:5cf3f0c5ac72139797953bd50bc6c95ac13075e62dbfcc923571180bebb662e9", + "sha256:6dbdec441c60699288adf051f51a5d512b0d818526d1dcfff5a41f8cd8b4aaf1", + "sha256:72cf32ce7dd3562373f78bd751f73c96cfb441de147cc2448a92c1a308bd0ca6", + "sha256:75aa828610b67462ffe3057d4d8a4112105ed211596b750b53cbfe182f44777a", + "sha256:75c4d2a6effd015786c87774e04331b6da863fc3fc4e8adfc3b40aa55ab516fe", + "sha256:78e25b2fd6cbb55ddfb8058417df193f0129cad5f4ee75d1502248e588d9e0d7", + "sha256:84860e06ba363d9c0eeabd45ac0fde4b903ad7aa4f93cd8b648385a888e23200", + "sha256:8c5091ebd294f7628eb25ea554852a52058ac81472c921150e3a61cdd68f75a7", + "sha256:944bdc21ebd620eafefc090cdf83158393ec2b1391578359776c00de00e8907a", + "sha256:9c7ac372232c928fff0645d85f273a726970c014749b924ce5710d7d89763a28", + "sha256:d9b338c19fa2412f76e17525c1b4f2c687a55b156320acb588df79f2e6fa9fea", + "sha256:ee5d62d28b854eb61889cde4e1dbc10fbaa5560cb39780c3995f6737f7e82120", + "sha256:f2c2521a8e4d6d769e3234350ba7b65ff5d527137cdcde13ff4d99114b0c8e7d", + "sha256:f6efc9bd72258f89a3816e3a98c09d36f079c223aa345c659622f056b760ab42", + "sha256:f7c5d642db47376a0cc130f0de6d055056e010debdaf0707cd2b0fc7e7ef30ea", + "sha256:fcb6d9afb1b6208b4c712af0dafdc650f518836065df0d4fb1d800f5d6773db2", + "sha256:fcd2572dd4519e8a6642b733cd3a8cfc1ef94bafd0c1ceed9c94fe736cb65b6a" ], "index": "pypi", - "version": "==0.901" + "version": "==1.7.1" }, "mypy-extensions": { "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" + "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", + "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" ], - "version": "==0.4.3" + "markers": "python_version >= '3.5'", + "version": "==1.0.0" }, "mypy-protobuf": { "hashes": [ - "sha256:1986dc8a7994a4e549be5c8ac586aa8247caf92456c67159d71dbe5005809651", - "sha256:77e10c476cdd3ee14535c2357e64deac6b1a69f33eb500d795b064acda48c66f" + "sha256:7d75a079651b105076776a35a5405e3fa773b8a167118f1b712e443e9a6c18a2", + "sha256:da33dfde7547ff57e5ba5564126cbfa114f14413b2fa50759b1fa5de1e4ab511" ], "index": "pypi", - "version": "==2.4" + "version": "==3.4.0" }, "nodeenv": { "hashes": [ - "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b", - "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7" + "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2", + "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec" ], - "version": "==1.6.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", + "version": "==1.8.0" }, "packaging": { "hashes": [ - "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5", - "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.9" + "markers": "python_version >= '3.7'", + "version": "==23.2" }, "pathspec": { "hashes": [ - "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd", - "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d" + "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", + "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" + ], + "markers": "python_version >= '3.8'", + "version": "==0.12.1" + }, + "platformdirs": { + "hashes": [ + "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068", + "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768" ], - "version": "==0.8.1" + "markers": "python_version >= '3.8'", + "version": "==4.2.0" }, "pluggy": { "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981", + "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.13.1" + "markers": "python_version >= '3.8'", + "version": "==1.4.0" }, "pre-commit": { "hashes": [ - "sha256:0767b235f8efafcefd7a6e4dbcf80b47d7e9c1ab8a4c07bca0635261516fb43a", - "sha256:1762f2a551732e250d0e16131d3bf9e653adb6ec262e58dfe033906750503235" + "sha256:5804465c675b659b0862f07907f96295d490822a450c4c40e747d0b1c6ebcb32", + "sha256:841dc9aef25daba9a0238cd27984041fa0467b4199fc4852e27950664919f660" ], "index": "pypi", - "version": "==1.18.1" + "version": "==3.5.0" }, "protobuf": { "hashes": [ - "sha256:13ee7be3c2d9a5d2b42a1030976f760f28755fcf5863c55b1460fd205e6cd637", - "sha256:145ce0af55c4259ca74993ddab3479c78af064002ec8227beb3d944405123c71", - "sha256:14c1c9377a7ffbeaccd4722ab0aa900091f52b516ad89c4b0c3bb0a4af903ba5", - "sha256:1556a1049ccec58c7855a78d27e5c6e70e95103b32de9142bae0576e9200a1b0", - "sha256:26010f693b675ff5a1d0e1bdb17689b8b716a18709113288fead438703d45539", - "sha256:2ae692bb6d1992afb6b74348e7bb648a75bb0d3565a3f5eea5bec8f62bd06d87", - "sha256:2bfb815216a9cd9faec52b16fd2bfa68437a44b67c56bee59bc3926522ecb04e", - "sha256:4ffbd23640bb7403574f7aff8368e2aeb2ec9a5c6306580be48ac59a6bac8bde", - "sha256:59e5cf6b737c3a376932fbfb869043415f7c16a0cf176ab30a5bbc419cd709c1", - "sha256:6902a1e4b7a319ec611a7345ff81b6b004b36b0d2196ce7a748b3493da3d226d", - "sha256:6ce4d8bf0321e7b2d4395e253f8002a1a5ffbcfd7bcc0a6ba46712c07d47d0b4", - "sha256:6d847c59963c03fd7a0cd7c488cadfa10cda4fff34d8bc8cba92935a91b7a037", - "sha256:72804ea5eaa9c22a090d2803813e280fb273b62d5ae497aaf3553d141c4fdd7b", - "sha256:7a4c97961e9e5b03a56f9a6c82742ed55375c4a25f2692b625d4087d02ed31b9", - "sha256:85d6303e4adade2827e43c2b54114d9a6ea547b671cb63fafd5011dc47d0e13d", - "sha256:8727ee027157516e2c311f218ebf2260a18088ffb2d29473e82add217d196b1c", - "sha256:99938f2a2d7ca6563c0ade0c5ca8982264c484fdecf418bd68e880a7ab5730b1", - "sha256:9b7a5c1022e0fa0dbde7fd03682d07d14624ad870ae52054849d8960f04bc764", - "sha256:a22b3a0dbac6544dacbafd4c5f6a29e389a50e3b193e2c70dae6bbf7930f651d", - "sha256:a38bac25f51c93e4be4092c88b2568b9f407c27217d3dd23c7a57fa522a17554", - "sha256:a981222367fb4210a10a929ad5983ae93bd5a050a0824fc35d6371c07b78caf6", - "sha256:ab6bb0e270c6c58e7ff4345b3a803cc59dbee19ddf77a4719c5b635f1d547aa8", - "sha256:c56c050a947186ba51de4f94ab441d7f04fcd44c56df6e922369cc2e1a92d683", - "sha256:e76d9686e088fece2450dbc7ee905f9be904e427341d289acbe9ad00b78ebd47", - "sha256:ebcb546f10069b56dc2e3da35e003a02076aaa377caf8530fe9789570984a8d2", - "sha256:f0e59430ee953184a703a324b8ec52f571c6c4259d496a19d1cabcdc19dabc62", - "sha256:ffea251f5cd3c0b9b43c7a7a912777e0bc86263436a87c2555242a348817221b" - ], - "version": "==3.17.3" - }, - "py": { - "hashes": [ - "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", - "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.10.0" + "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62", + "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d", + "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61", + "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62", + "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3", + "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9", + "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830", + "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6", + "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0", + "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020", + "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e" + ], + "markers": "python_version >= '3.8'", + "version": "==4.25.2" }, "pycodestyle": { "hashes": [ - "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", - "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", + "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.6.0" + "markers": "python_version >= '3.8'", + "version": "==2.11.1" }, "pyflakes": { "hashes": [ - "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", - "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" + "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774", + "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.2.0" + "markers": "python_version >= '3.8'", + "version": "==3.1.0" }, "pygments": { "hashes": [ - "sha256:a18f47b506a429f6f4b9df81bb02beab9ca21d0a5fee38ed15aef65f0545519f", - "sha256:d66e804411278594d764fc69ec36ec13d9ae9147193a1740cd34d272ca383b8e" + "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c", + "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" ], - "markers": "python_version >= '3.5'", - "version": "==2.9.0" + "markers": "python_version >= '3.7'", + "version": "==2.17.2" }, - "pyparsing": { + "pyproject-api": { "hashes": [ - "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", - "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" + "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538", + "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.4.7" + "markers": "python_version >= '3.8'", + "version": "==1.6.1" }, "pytest": { "hashes": [ - "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8", - "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306" + "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", + "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8" ], "index": "pypi", - "version": "==6.2.1" + "version": "==7.4.4" }, "pytest-mock": { "hashes": [ - "sha256:379b391cfad22422ea2e252bdfc008edd08509029bcde3c25b2c0bd741e0424e", - "sha256:a1e2aba6af9560d313c642dae7e00a2a12b022b80301d9d7fc8ec6858e1dd9fc" + "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39", + "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f" ], "index": "pypi", - "version": "==3.5.1" - }, - "pytz": { - "hashes": [ - "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da", - "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798" - ], - "version": "==2021.1" + "version": "==3.11.1" }, "pyyaml": { "hashes": [ - "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", - "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", - "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", - "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", - "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", - "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", - "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", - "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", - "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", - "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", - "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", - "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", - "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", - "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", - "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", - "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", - "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", - "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", - "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", - "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", - "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", - "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", - "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", - "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", - "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", - "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", - "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", - "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", - "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==5.4.1" - }, - "regex": { - "hashes": [ - "sha256:0e46c1191b2eb293a6912269ed08b4512e7e241bbf591f97e527492e04c77e93", - "sha256:18040755606b0c21281493ec309214bd61e41a170509e5014f41d6a5a586e161", - "sha256:1806370b2bef4d4193eebe8ee59a9fd7547836a34917b7badbe6561a8594d9cb", - "sha256:1ccbd41dbee3a31e18938096510b7d4ee53aa9fce2ee3dcc8ec82ae264f6acfd", - "sha256:1d386402ae7f3c9b107ae5863f7ecccb0167762c82a687ae6526b040feaa5ac6", - "sha256:210c359e6ee5b83f7d8c529ba3c75ba405481d50f35a420609b0db827e2e3bb5", - "sha256:268fe9dd1deb4a30c8593cabd63f7a241dfdc5bd9dd0233906c718db22cdd49a", - "sha256:361be4d311ac995a8c7ad577025a3ae3a538531b1f2cf32efd8b7e5d33a13e5a", - "sha256:3f7a92e60930f8fca2623d9e326c173b7cf2c8b7e4fdcf984b75a1d2fb08114d", - "sha256:444723ebaeb7fa8125f29c01a31101a3854ac3de293e317944022ae5effa53a4", - "sha256:494d0172774dc0beeea984b94c95389143db029575f7ca908edd74469321ea99", - "sha256:4b1999ef60c45357598935c12508abf56edbbb9c380df6f336de38a6c3a294ae", - "sha256:4fc86b729ab88fe8ac3ec92287df253c64aa71560d76da5acd8a2e245839c629", - "sha256:5049d00dbb78f9d166d1c704e93934d42cce0570842bb1a61695123d6b01de09", - "sha256:56bef6b414949e2c9acf96cb5d78de8b529c7b99752619494e78dc76f99fd005", - "sha256:59845101de68fd5d3a1145df9ea022e85ecd1b49300ea68307ad4302320f6f61", - "sha256:6b8b629f93246e507287ee07e26744beaffb4c56ed520576deac8b615bd76012", - "sha256:6c72ebb72e64e9bd195cb35a9b9bbfb955fd953b295255b8ae3e4ad4a146b615", - "sha256:7743798dfb573d006f1143d745bf17efad39775a5190b347da5d83079646be56", - "sha256:78a2a885345a2d60b5e68099e877757d5ed12e46ba1e87507175f14f80892af3", - "sha256:849802379a660206277675aa5a5c327f5c910c690649535863ddf329b0ba8c87", - "sha256:8cf6728f89b071bd3ab37cb8a0e306f4de897553a0ed07442015ee65fbf53d62", - "sha256:a1b6a3f600d6aff97e3f28c34192c9ed93fee293bd96ef327b64adb51a74b2f6", - "sha256:a548bb51c4476332ce4139df8e637386730f79a92652a907d12c696b6252b64d", - "sha256:a8a5826d8a1b64e2ff9af488cc179e1a4d0f144d11ce486a9f34ea38ccedf4ef", - "sha256:b024ee43ee6b310fad5acaee23e6485b21468718cb792a9d1693eecacc3f0b7e", - "sha256:b092754c06852e8a8b022004aff56c24b06310189186805800d09313c37ce1f8", - "sha256:b1dbeef938281f240347d50f28ae53c4b046a23389cd1fc4acec5ea0eae646a1", - "sha256:bf819c5b77ff44accc9a24e31f1f7ceaaf6c960816913ed3ef8443b9d20d81b6", - "sha256:c11f2fca544b5e30a0e813023196a63b1cb9869106ef9a26e9dae28bce3e4e26", - "sha256:ce269e903b00d1ab4746793e9c50a57eec5d5388681abef074d7b9a65748fca5", - "sha256:d0cf2651a8804f6325747c7e55e3be0f90ee2848e25d6b817aa2728d263f9abb", - "sha256:e07e92935040c67f49571779d115ecb3e727016d42fb36ee0d8757db4ca12ee0", - "sha256:e80d2851109e56420b71f9702ad1646e2f0364528adbf6af85527bc61e49f394", - "sha256:ed77b97896312bc2deafe137ca2626e8b63808f5bedb944f73665c68093688a7", - "sha256:f32f47fb22c988c0b35756024b61d156e5c4011cb8004aa53d93b03323c45657", - "sha256:fdad3122b69cdabdb3da4c2a4107875913ac78dab0117fc73f988ad589c66b66" - ], - "version": "==2021.7.1" + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" + ], + "markers": "python_version >= '3.6'", + "version": "==6.0.1" }, "requests": { "hashes": [ - "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", - "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e" + "sha256:10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294", + "sha256:239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4" ], "index": "pypi", - "version": "==2.25.1" + "version": "==2.30.0" }, - "six": { + "setuptools": { "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401", + "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" + "markers": "python_version >= '3.8'", + "version": "==69.1.0" }, "snowballstemmer": { "hashes": [ - "sha256:b51b447bea85f9968c13b650126a888aabd4cb4463fca868ec596826325dedc2", - "sha256:e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914" + "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", + "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a" ], - "version": "==2.1.0" + "version": "==2.2.0" }, "sphinx": { "hashes": [ - "sha256:41cad293f954f7d37f803d97eb184158cfd90f51195131e94875bc07cd08b93c", - "sha256:c314c857e7cd47c856d2c5adff514ac2e6495f8b8e0f886a8a37e9305dfea0d8" + "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560", + "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5" ], "index": "pypi", - "version": "==3.4.3" + "version": "==7.2.6" }, "sphinxcontrib-applehelp": { "hashes": [ - "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a", - "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58" + "sha256:c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619", + "sha256:cb61eb0ec1b61f349e5cc36b2028e9e7ca765be05e49641c97241274753067b4" ], - "markers": "python_version >= '3.5'", - "version": "==1.0.2" + "markers": "python_version >= '3.9'", + "version": "==1.0.8" }, "sphinxcontrib-devhelp": { "hashes": [ - "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e", - "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4" + "sha256:6485d09629944511c893fa11355bda18b742b83a2b181f9a009f7e500595c90f", + "sha256:9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3" ], - "markers": "python_version >= '3.5'", - "version": "==1.0.2" + "markers": "python_version >= '3.9'", + "version": "==1.0.6" }, "sphinxcontrib-htmlhelp": { "hashes": [ - "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07", - "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2" + "sha256:0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015", + "sha256:393f04f112b4d2f53d93448d4bce35842f62b307ccdc549ec1585e950bc35e04" ], - "markers": "python_version >= '3.6'", - "version": "==2.0.0" + "markers": "python_version >= '3.9'", + "version": "==2.0.5" }, "sphinxcontrib-jsmath": { "hashes": [ @@ -862,119 +1063,75 @@ }, "sphinxcontrib-qthelp": { "hashes": [ - "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72", - "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6" + "sha256:053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6", + "sha256:e2ae3b5c492d58fcbd73281fbd27e34b8393ec34a073c792642cd8e529288182" ], - "markers": "python_version >= '3.5'", - "version": "==1.0.3" + "markers": "python_version >= '3.9'", + "version": "==1.0.7" }, "sphinxcontrib-serializinghtml": { "hashes": [ - "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd", - "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952" + "sha256:326369b8df80a7d2d8d7f99aa5ac577f51ea51556ed974e7716cfd4fca3f6cb7", + "sha256:93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f" ], - "markers": "python_version >= '3.5'", - "version": "==1.1.5" + "markers": "python_version >= '3.9'", + "version": "==1.1.10" }, - "toml": { + "tomli": { "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.2" + "markers": "python_version < '3.11'", + "version": "==2.0.1" }, "tox": { "hashes": [ - "sha256:42ce19ce5dc2f6d6b1fdc5666c476e1f1e2897359b47e0aa3a5b774f335d57c2", - "sha256:4321052bfe28f9d85082341ca8e233e3ea901fdd14dab8a5d3fbd810269fbaf6" + "sha256:61aafbeff1bd8a5af84e54ef6e8402f53c6a6066d0782336171ddfbf5362122e", + "sha256:c07ea797880a44f3c4f200ad88ad92b446b83079d4ccef89585df64cc574375c" ], "index": "pypi", - "version": "==3.20.1" - }, - "typed-ast": { - "hashes": [ - "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace", - "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff", - "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266", - "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528", - "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6", - "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808", - "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4", - "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363", - "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341", - "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04", - "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41", - "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e", - "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3", - "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899", - "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805", - "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c", - "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c", - "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39", - "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a", - "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3", - "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7", - "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f", - "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075", - "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0", - "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40", - "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428", - "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927", - "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3", - "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f", - "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65" - ], - "markers": "python_version < '3.8'", - "version": "==1.4.3" - }, - "types-futures": { - "hashes": [ - "sha256:7cb32c3fb4885089d78873a28ad33db3d5300661eac8b3ad327f4f5616fdf742", - "sha256:da372dd55dc08c257de1e3dfd56273e44af9668e077047b0509adcfc43dd2838" - ], - "version": "==0.1.6" + "version": "==4.12.1" }, "types-protobuf": { "hashes": [ - "sha256:1c5800d7b6bb5ccf27d5256903fd32d96745a54b3a32179fc1606e8179a035e9", - "sha256:771c272572be5396a1946f035db730d8d6be03ad21ff6885e0e7d1b18549af89" + "sha256:23be68cc29f3f5213b5c5878ac0151706182874040e220cfb11336f9ee642ead", + "sha256:8a83dd3b9b76a33e08d8636c5daa212ace1396418ed91837635fcd564a624891" ], "index": "pypi", - "version": "==0.1.13" + "version": "==4.24.0.20240129" }, "typing-extensions": { "hashes": [ - "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497", - "sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342", - "sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84" + "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", + "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" ], - "markers": "python_version < '3.8'", - "version": "==3.10.0.0" + "markers": "python_version >= '3.8'", + "version": "==4.9.0" }, "urllib3": { "hashes": [ - "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4", - "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f" + "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20", + "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.6" + "markers": "python_version >= '3.8'", + "version": "==2.2.0" }, "virtualenv": { "hashes": [ - "sha256:14fdf849f80dbb29a4eb6caa9875d476ee2a5cf76a5f5415fa2f1606010ab467", - "sha256:2b0126166ea7c9c3661f5b8e06773d28f83322de7a3ff7d06f0aed18c9de6a76" + "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3", + "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.4.7" + "markers": "python_version >= '3.7'", + "version": "==20.25.0" }, "zipp": { "hashes": [ - "sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76", - "sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098" + "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", + "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" ], - "markers": "python_version < '3.10'", - "version": "==3.4.1" + "markers": "python_version >= '3.8'", + "version": "==3.17.0" } } -} +} \ No newline at end of file diff --git a/setup.py b/setup.py index 0bf87272..79b418e2 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,8 @@ 'cryptography', 'grpcio-tools', 'pyasn1', + 'pyasn1-modules', 'pem', ], - python_requires='>=3.6', + python_requires='>=3.9', ) diff --git a/src/pyspiffe/bundle/jwt_bundle/jwt_bundle.py b/src/pyspiffe/bundle/jwt_bundle/jwt_bundle.py index 3b86d846..d6823a70 100644 --- a/src/pyspiffe/bundle/jwt_bundle/jwt_bundle.py +++ b/src/pyspiffe/bundle/jwt_bundle/jwt_bundle.py @@ -1,6 +1,7 @@ """ JwtBundle module manages JwtBundle objects. """ + import threading from json import JSONDecodeError from jwt.api_jwk import PyJWKSet @@ -57,7 +58,7 @@ def jwt_authorities(self) -> Dict[str, _PUBLIC_KEY_TYPES]: with self.lock: return self._jwt_authorities.copy() - def get_jwt_authority(self, key_id: str) -> Optional[_PUBLIC_KEY_TYPES]: + def get_jwt_authority(self, key_id: Optional[str]) -> Optional[_PUBLIC_KEY_TYPES]: """Returns the authority for the specified key_id. Args: @@ -99,7 +100,7 @@ def parse(cls, trust_domain: TrustDomain, bundle_bytes: bytes) -> 'JwtBundle': raise ArgumentError('Bundle bytes cannot be empty') try: - jwks = PyJWKSet.from_json(bundle_bytes) + jwks = PyJWKSet.from_json(bundle_bytes.decode('utf-8')) except InvalidKeyError as ike: raise ParseJWTBundleError( 'Cannot parse jwks from bundle_bytes: ' + str(ike) diff --git a/src/pyspiffe/bundle/x509_bundle/x509_bundle.py b/src/pyspiffe/bundle/x509_bundle/x509_bundle.py index b3b86a96..fbe4b873 100644 --- a/src/pyspiffe/bundle/x509_bundle/x509_bundle.py +++ b/src/pyspiffe/bundle/x509_bundle/x509_bundle.py @@ -1,8 +1,9 @@ """ This module manages X.509 Bundle objects. """ + import threading -from typing import Set +from typing import Set, Optional from cryptography.hazmat.primitives import serialization from cryptography.x509 import Certificate @@ -31,7 +32,7 @@ class X509Bundle(object): def __init__( self, trust_domain: TrustDomain, - x509_authorities: Set[Certificate] = None, + x509_authorities: Optional[Set[Certificate]], ) -> None: """Creates a X509Bundle instance. diff --git a/src/pyspiffe/bundle/x509_bundle/x509_bundle_set.py b/src/pyspiffe/bundle/x509_bundle/x509_bundle_set.py index 68b2fb2c..7903bdbe 100644 --- a/src/pyspiffe/bundle/x509_bundle/x509_bundle_set.py +++ b/src/pyspiffe/bundle/x509_bundle/x509_bundle_set.py @@ -1,6 +1,7 @@ """ This module manages X509BundleSet objects. """ + import threading from typing import List, Optional, Dict @@ -13,7 +14,7 @@ class X509BundleSet(object): """X509BundleSet is a set of X509Bundles objects, keyed by trust domain.""" - def __init__(self, bundles: Dict[TrustDomain, X509Bundle] = None) -> None: + def __init__(self, bundles: Optional[Dict[TrustDomain, X509Bundle]]) -> None: """Creates a new X509BundleSet. When the bundles parameter is not provided, it creates an empty X509BundleSet. diff --git a/src/pyspiffe/config.py b/src/pyspiffe/config.py index 5b9ad2d9..4cb4afdf 100644 --- a/src/pyspiffe/config.py +++ b/src/pyspiffe/config.py @@ -43,7 +43,7 @@ class ConfigSetter: _TCP_FORBIDDEN_SOCKET_COMPONENTS = _FORBIDDEN_SOCKET_COMPONENTS + [('path', None)] - def __init__(self, spiffe_endpoint_socket: str = None) -> None: + def __init__(self, spiffe_endpoint_socket: Optional[str]) -> None: """Initializes the ConfigSetter class. Args: @@ -104,6 +104,9 @@ def _validate_unix_socket(cls, socket: ParseResult) -> None: @classmethod def _validate_tcp_socket(cls, socket: ParseResult) -> None: + if socket.hostname is None: + raise ArgumentError('SPIFFE endpoint socket: host must be an IP address') + try: ipaddress.ip_address(socket.hostname) except ValueError: diff --git a/src/pyspiffe/proto/spiffe/workload_pb2.py b/src/pyspiffe/proto/spiffe/workload_pb2.py index de5b022f..7edc79f1 100644 --- a/src/pyspiffe/proto/spiffe/workload_pb2.py +++ b/src/pyspiffe/proto/spiffe/workload_pb2.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: workload.proto +# Protobuf Python Version: 4.25.0 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection +from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -14,764 +15,49 @@ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor.FileDescriptor( - name='workload.proto', - package='', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x0eworkload.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x11\n\x0fX509SVIDRequest\"\xb6\x01\n\x10X509SVIDResponse\x12\x18\n\x05svids\x18\x01 \x03(\x0b\x32\t.X509SVID\x12\x0b\n\x03\x63rl\x18\x02 \x03(\x0c\x12\x42\n\x11\x66\x65\x64\x65rated_bundles\x18\x03 \x03(\x0b\x32\'.X509SVIDResponse.FederatedBundlesEntry\x1a\x37\n\x15\x46\x65\x64\x65ratedBundlesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"W\n\x08X509SVID\x12\x11\n\tspiffe_id\x18\x01 \x01(\t\x12\x11\n\tx509_svid\x18\x02 \x01(\x0c\x12\x15\n\rx509_svid_key\x18\x03 \x01(\x0c\x12\x0e\n\x06\x62undle\x18\x04 \x01(\x0c\"\x14\n\x12X509BundlesRequest\"\x86\x01\n\x13X509BundlesResponse\x12\x0b\n\x03\x63rl\x18\x01 \x03(\x0c\x12\x32\n\x07\x62undles\x18\x02 \x03(\x0b\x32!.X509BundlesResponse.BundlesEntry\x1a.\n\x0c\x42undlesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"5\n\x0eJWTSVIDRequest\x12\x10\n\x08\x61udience\x18\x01 \x03(\t\x12\x11\n\tspiffe_id\x18\x02 \x01(\t\"*\n\x0fJWTSVIDResponse\x12\x17\n\x05svids\x18\x01 \x03(\x0b\x32\x08.JWTSVID\"*\n\x07JWTSVID\x12\x11\n\tspiffe_id\x18\x01 \x01(\t\x12\x0c\n\x04svid\x18\x02 \x01(\t\"\x13\n\x11JWTBundlesRequest\"w\n\x12JWTBundlesResponse\x12\x31\n\x07\x62undles\x18\x01 \x03(\x0b\x32 .JWTBundlesResponse.BundlesEntry\x1a.\n\x0c\x42undlesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"8\n\x16ValidateJWTSVIDRequest\x12\x10\n\x08\x61udience\x18\x01 \x01(\t\x12\x0c\n\x04svid\x18\x02 \x01(\t\"U\n\x17ValidateJWTSVIDResponse\x12\x11\n\tspiffe_id\x18\x01 \x01(\t\x12\'\n\x06\x63laims\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct2\xc3\x02\n\x11SpiffeWorkloadAPI\x12\x36\n\rFetchX509SVID\x12\x10.X509SVIDRequest\x1a\x11.X509SVIDResponse0\x01\x12?\n\x10\x46\x65tchX509Bundles\x12\x13.X509BundlesRequest\x1a\x14.X509BundlesResponse0\x01\x12\x31\n\x0c\x46\x65tchJWTSVID\x12\x0f.JWTSVIDRequest\x1a\x10.JWTSVIDResponse\x12<\n\x0f\x46\x65tchJWTBundles\x12\x12.JWTBundlesRequest\x1a\x13.JWTBundlesResponse0\x01\x12\x44\n\x0fValidateJWTSVID\x12\x17.ValidateJWTSVIDRequest\x1a\x18.ValidateJWTSVIDResponseb\x06proto3' - , - dependencies=[google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,]) - - - - -_X509SVIDREQUEST = _descriptor.Descriptor( - name='X509SVIDRequest', - full_name='X509SVIDRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=48, - serialized_end=65, -) - - -_X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY = _descriptor.Descriptor( - name='FederatedBundlesEntry', - full_name='X509SVIDResponse.FederatedBundlesEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='X509SVIDResponse.FederatedBundlesEntry.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', full_name='X509SVIDResponse.FederatedBundlesEntry.value', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=195, - serialized_end=250, -) - -_X509SVIDRESPONSE = _descriptor.Descriptor( - name='X509SVIDResponse', - full_name='X509SVIDResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='svids', full_name='X509SVIDResponse.svids', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='crl', full_name='X509SVIDResponse.crl', index=1, - number=2, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='federated_bundles', full_name='X509SVIDResponse.federated_bundles', index=2, - number=3, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[_X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=68, - serialized_end=250, -) - - -_X509SVID = _descriptor.Descriptor( - name='X509SVID', - full_name='X509SVID', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='spiffe_id', full_name='X509SVID.spiffe_id', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='x509_svid', full_name='X509SVID.x509_svid', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='x509_svid_key', full_name='X509SVID.x509_svid_key', index=2, - number=3, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bundle', full_name='X509SVID.bundle', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=252, - serialized_end=339, -) - - -_X509BUNDLESREQUEST = _descriptor.Descriptor( - name='X509BundlesRequest', - full_name='X509BundlesRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=341, - serialized_end=361, -) - - -_X509BUNDLESRESPONSE_BUNDLESENTRY = _descriptor.Descriptor( - name='BundlesEntry', - full_name='X509BundlesResponse.BundlesEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='X509BundlesResponse.BundlesEntry.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', full_name='X509BundlesResponse.BundlesEntry.value', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=452, - serialized_end=498, -) - -_X509BUNDLESRESPONSE = _descriptor.Descriptor( - name='X509BundlesResponse', - full_name='X509BundlesResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='crl', full_name='X509BundlesResponse.crl', index=0, - number=1, type=12, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='bundles', full_name='X509BundlesResponse.bundles', index=1, - number=2, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[_X509BUNDLESRESPONSE_BUNDLESENTRY, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=364, - serialized_end=498, -) - - -_JWTSVIDREQUEST = _descriptor.Descriptor( - name='JWTSVIDRequest', - full_name='JWTSVIDRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='audience', full_name='JWTSVIDRequest.audience', index=0, - number=1, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='spiffe_id', full_name='JWTSVIDRequest.spiffe_id', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=500, - serialized_end=553, -) - - -_JWTSVIDRESPONSE = _descriptor.Descriptor( - name='JWTSVIDResponse', - full_name='JWTSVIDResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='svids', full_name='JWTSVIDResponse.svids', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=555, - serialized_end=597, -) - - -_JWTSVID = _descriptor.Descriptor( - name='JWTSVID', - full_name='JWTSVID', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='spiffe_id', full_name='JWTSVID.spiffe_id', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='svid', full_name='JWTSVID.svid', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=599, - serialized_end=641, -) - - -_JWTBUNDLESREQUEST = _descriptor.Descriptor( - name='JWTBundlesRequest', - full_name='JWTBundlesRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=643, - serialized_end=662, -) - - -_JWTBUNDLESRESPONSE_BUNDLESENTRY = _descriptor.Descriptor( - name='BundlesEntry', - full_name='JWTBundlesResponse.BundlesEntry', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='key', full_name='JWTBundlesResponse.BundlesEntry.key', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='value', full_name='JWTBundlesResponse.BundlesEntry.value', index=1, - number=2, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=b'8\001', - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=452, - serialized_end=498, -) - -_JWTBUNDLESRESPONSE = _descriptor.Descriptor( - name='JWTBundlesResponse', - full_name='JWTBundlesResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='bundles', full_name='JWTBundlesResponse.bundles', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[_JWTBUNDLESRESPONSE_BUNDLESENTRY, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=664, - serialized_end=783, -) - - -_VALIDATEJWTSVIDREQUEST = _descriptor.Descriptor( - name='ValidateJWTSVIDRequest', - full_name='ValidateJWTSVIDRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='audience', full_name='ValidateJWTSVIDRequest.audience', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='svid', full_name='ValidateJWTSVIDRequest.svid', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=785, - serialized_end=841, -) - - -_VALIDATEJWTSVIDRESPONSE = _descriptor.Descriptor( - name='ValidateJWTSVIDResponse', - full_name='ValidateJWTSVIDResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='spiffe_id', full_name='ValidateJWTSVIDResponse.spiffe_id', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='claims', full_name='ValidateJWTSVIDResponse.claims', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=843, - serialized_end=928, -) - -_X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY.containing_type = _X509SVIDRESPONSE -_X509SVIDRESPONSE.fields_by_name['svids'].message_type = _X509SVID -_X509SVIDRESPONSE.fields_by_name['federated_bundles'].message_type = _X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY -_X509BUNDLESRESPONSE_BUNDLESENTRY.containing_type = _X509BUNDLESRESPONSE -_X509BUNDLESRESPONSE.fields_by_name['bundles'].message_type = _X509BUNDLESRESPONSE_BUNDLESENTRY -_JWTSVIDRESPONSE.fields_by_name['svids'].message_type = _JWTSVID -_JWTBUNDLESRESPONSE_BUNDLESENTRY.containing_type = _JWTBUNDLESRESPONSE -_JWTBUNDLESRESPONSE.fields_by_name['bundles'].message_type = _JWTBUNDLESRESPONSE_BUNDLESENTRY -_VALIDATEJWTSVIDRESPONSE.fields_by_name['claims'].message_type = google_dot_protobuf_dot_struct__pb2._STRUCT -DESCRIPTOR.message_types_by_name['X509SVIDRequest'] = _X509SVIDREQUEST -DESCRIPTOR.message_types_by_name['X509SVIDResponse'] = _X509SVIDRESPONSE -DESCRIPTOR.message_types_by_name['X509SVID'] = _X509SVID -DESCRIPTOR.message_types_by_name['X509BundlesRequest'] = _X509BUNDLESREQUEST -DESCRIPTOR.message_types_by_name['X509BundlesResponse'] = _X509BUNDLESRESPONSE -DESCRIPTOR.message_types_by_name['JWTSVIDRequest'] = _JWTSVIDREQUEST -DESCRIPTOR.message_types_by_name['JWTSVIDResponse'] = _JWTSVIDRESPONSE -DESCRIPTOR.message_types_by_name['JWTSVID'] = _JWTSVID -DESCRIPTOR.message_types_by_name['JWTBundlesRequest'] = _JWTBUNDLESREQUEST -DESCRIPTOR.message_types_by_name['JWTBundlesResponse'] = _JWTBUNDLESRESPONSE -DESCRIPTOR.message_types_by_name['ValidateJWTSVIDRequest'] = _VALIDATEJWTSVIDREQUEST -DESCRIPTOR.message_types_by_name['ValidateJWTSVIDResponse'] = _VALIDATEJWTSVIDRESPONSE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -X509SVIDRequest = _reflection.GeneratedProtocolMessageType('X509SVIDRequest', (_message.Message,), { - 'DESCRIPTOR' : _X509SVIDREQUEST, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:X509SVIDRequest) - }) -_sym_db.RegisterMessage(X509SVIDRequest) - -X509SVIDResponse = _reflection.GeneratedProtocolMessageType('X509SVIDResponse', (_message.Message,), { - - 'FederatedBundlesEntry' : _reflection.GeneratedProtocolMessageType('FederatedBundlesEntry', (_message.Message,), { - 'DESCRIPTOR' : _X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:X509SVIDResponse.FederatedBundlesEntry) - }) - , - 'DESCRIPTOR' : _X509SVIDRESPONSE, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:X509SVIDResponse) - }) -_sym_db.RegisterMessage(X509SVIDResponse) -_sym_db.RegisterMessage(X509SVIDResponse.FederatedBundlesEntry) - -X509SVID = _reflection.GeneratedProtocolMessageType('X509SVID', (_message.Message,), { - 'DESCRIPTOR' : _X509SVID, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:X509SVID) - }) -_sym_db.RegisterMessage(X509SVID) - -X509BundlesRequest = _reflection.GeneratedProtocolMessageType('X509BundlesRequest', (_message.Message,), { - 'DESCRIPTOR' : _X509BUNDLESREQUEST, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:X509BundlesRequest) - }) -_sym_db.RegisterMessage(X509BundlesRequest) - -X509BundlesResponse = _reflection.GeneratedProtocolMessageType('X509BundlesResponse', (_message.Message,), { - - 'BundlesEntry' : _reflection.GeneratedProtocolMessageType('BundlesEntry', (_message.Message,), { - 'DESCRIPTOR' : _X509BUNDLESRESPONSE_BUNDLESENTRY, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:X509BundlesResponse.BundlesEntry) - }) - , - 'DESCRIPTOR' : _X509BUNDLESRESPONSE, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:X509BundlesResponse) - }) -_sym_db.RegisterMessage(X509BundlesResponse) -_sym_db.RegisterMessage(X509BundlesResponse.BundlesEntry) - -JWTSVIDRequest = _reflection.GeneratedProtocolMessageType('JWTSVIDRequest', (_message.Message,), { - 'DESCRIPTOR' : _JWTSVIDREQUEST, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:JWTSVIDRequest) - }) -_sym_db.RegisterMessage(JWTSVIDRequest) - -JWTSVIDResponse = _reflection.GeneratedProtocolMessageType('JWTSVIDResponse', (_message.Message,), { - 'DESCRIPTOR' : _JWTSVIDRESPONSE, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:JWTSVIDResponse) - }) -_sym_db.RegisterMessage(JWTSVIDResponse) - -JWTSVID = _reflection.GeneratedProtocolMessageType('JWTSVID', (_message.Message,), { - 'DESCRIPTOR' : _JWTSVID, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:JWTSVID) - }) -_sym_db.RegisterMessage(JWTSVID) - -JWTBundlesRequest = _reflection.GeneratedProtocolMessageType('JWTBundlesRequest', (_message.Message,), { - 'DESCRIPTOR' : _JWTBUNDLESREQUEST, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:JWTBundlesRequest) - }) -_sym_db.RegisterMessage(JWTBundlesRequest) - -JWTBundlesResponse = _reflection.GeneratedProtocolMessageType('JWTBundlesResponse', (_message.Message,), { - - 'BundlesEntry' : _reflection.GeneratedProtocolMessageType('BundlesEntry', (_message.Message,), { - 'DESCRIPTOR' : _JWTBUNDLESRESPONSE_BUNDLESENTRY, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:JWTBundlesResponse.BundlesEntry) - }) - , - 'DESCRIPTOR' : _JWTBUNDLESRESPONSE, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:JWTBundlesResponse) - }) -_sym_db.RegisterMessage(JWTBundlesResponse) -_sym_db.RegisterMessage(JWTBundlesResponse.BundlesEntry) - -ValidateJWTSVIDRequest = _reflection.GeneratedProtocolMessageType('ValidateJWTSVIDRequest', (_message.Message,), { - 'DESCRIPTOR' : _VALIDATEJWTSVIDREQUEST, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:ValidateJWTSVIDRequest) - }) -_sym_db.RegisterMessage(ValidateJWTSVIDRequest) - -ValidateJWTSVIDResponse = _reflection.GeneratedProtocolMessageType('ValidateJWTSVIDResponse', (_message.Message,), { - 'DESCRIPTOR' : _VALIDATEJWTSVIDRESPONSE, - '__module__' : 'workload_pb2' - # @@protoc_insertion_point(class_scope:ValidateJWTSVIDResponse) - }) -_sym_db.RegisterMessage(ValidateJWTSVIDResponse) - - -_X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY._options = None -_X509BUNDLESRESPONSE_BUNDLESENTRY._options = None -_JWTBUNDLESRESPONSE_BUNDLESENTRY._options = None - -_SPIFFEWORKLOADAPI = _descriptor.ServiceDescriptor( - name='SpiffeWorkloadAPI', - full_name='SpiffeWorkloadAPI', - file=DESCRIPTOR, - index=0, - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_start=931, - serialized_end=1254, - methods=[ - _descriptor.MethodDescriptor( - name='FetchX509SVID', - full_name='SpiffeWorkloadAPI.FetchX509SVID', - index=0, - containing_service=None, - input_type=_X509SVIDREQUEST, - output_type=_X509SVIDRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='FetchX509Bundles', - full_name='SpiffeWorkloadAPI.FetchX509Bundles', - index=1, - containing_service=None, - input_type=_X509BUNDLESREQUEST, - output_type=_X509BUNDLESRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='FetchJWTSVID', - full_name='SpiffeWorkloadAPI.FetchJWTSVID', - index=2, - containing_service=None, - input_type=_JWTSVIDREQUEST, - output_type=_JWTSVIDRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='FetchJWTBundles', - full_name='SpiffeWorkloadAPI.FetchJWTBundles', - index=3, - containing_service=None, - input_type=_JWTBUNDLESREQUEST, - output_type=_JWTBUNDLESRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='ValidateJWTSVID', - full_name='SpiffeWorkloadAPI.ValidateJWTSVID', - index=4, - containing_service=None, - input_type=_VALIDATEJWTSVIDREQUEST, - output_type=_VALIDATEJWTSVIDRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), -]) -_sym_db.RegisterServiceDescriptor(_SPIFFEWORKLOADAPI) - -DESCRIPTOR.services_by_name['SpiffeWorkloadAPI'] = _SPIFFEWORKLOADAPI - +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0eworkload.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x11\n\x0fX509SVIDRequest\"\xb6\x01\n\x10X509SVIDResponse\x12\x18\n\x05svids\x18\x01 \x03(\x0b\x32\t.X509SVID\x12\x0b\n\x03\x63rl\x18\x02 \x03(\x0c\x12\x42\n\x11\x66\x65\x64\x65rated_bundles\x18\x03 \x03(\x0b\x32\'.X509SVIDResponse.FederatedBundlesEntry\x1a\x37\n\x15\x46\x65\x64\x65ratedBundlesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"W\n\x08X509SVID\x12\x11\n\tspiffe_id\x18\x01 \x01(\t\x12\x11\n\tx509_svid\x18\x02 \x01(\x0c\x12\x15\n\rx509_svid_key\x18\x03 \x01(\x0c\x12\x0e\n\x06\x62undle\x18\x04 \x01(\x0c\"\x14\n\x12X509BundlesRequest\"\x86\x01\n\x13X509BundlesResponse\x12\x0b\n\x03\x63rl\x18\x01 \x03(\x0c\x12\x32\n\x07\x62undles\x18\x02 \x03(\x0b\x32!.X509BundlesResponse.BundlesEntry\x1a.\n\x0c\x42undlesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"5\n\x0eJWTSVIDRequest\x12\x10\n\x08\x61udience\x18\x01 \x03(\t\x12\x11\n\tspiffe_id\x18\x02 \x01(\t\"*\n\x0fJWTSVIDResponse\x12\x17\n\x05svids\x18\x01 \x03(\x0b\x32\x08.JWTSVID\"*\n\x07JWTSVID\x12\x11\n\tspiffe_id\x18\x01 \x01(\t\x12\x0c\n\x04svid\x18\x02 \x01(\t\"\x13\n\x11JWTBundlesRequest\"w\n\x12JWTBundlesResponse\x12\x31\n\x07\x62undles\x18\x01 \x03(\x0b\x32 .JWTBundlesResponse.BundlesEntry\x1a.\n\x0c\x42undlesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"8\n\x16ValidateJWTSVIDRequest\x12\x10\n\x08\x61udience\x18\x01 \x01(\t\x12\x0c\n\x04svid\x18\x02 \x01(\t\"U\n\x17ValidateJWTSVIDResponse\x12\x11\n\tspiffe_id\x18\x01 \x01(\t\x12\'\n\x06\x63laims\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct2\xc3\x02\n\x11SpiffeWorkloadAPI\x12\x36\n\rFetchX509SVID\x12\x10.X509SVIDRequest\x1a\x11.X509SVIDResponse0\x01\x12?\n\x10\x46\x65tchX509Bundles\x12\x13.X509BundlesRequest\x1a\x14.X509BundlesResponse0\x01\x12\x31\n\x0c\x46\x65tchJWTSVID\x12\x0f.JWTSVIDRequest\x1a\x10.JWTSVIDResponse\x12<\n\x0f\x46\x65tchJWTBundles\x12\x12.JWTBundlesRequest\x1a\x13.JWTBundlesResponse0\x01\x12\x44\n\x0fValidateJWTSVID\x12\x17.ValidateJWTSVIDRequest\x1a\x18.ValidateJWTSVIDResponseb\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'workload_pb2', _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals['_X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY']._options = None + _globals['_X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY']._serialized_options = b'8\001' + _globals['_X509BUNDLESRESPONSE_BUNDLESENTRY']._options = None + _globals['_X509BUNDLESRESPONSE_BUNDLESENTRY']._serialized_options = b'8\001' + _globals['_JWTBUNDLESRESPONSE_BUNDLESENTRY']._options = None + _globals['_JWTBUNDLESRESPONSE_BUNDLESENTRY']._serialized_options = b'8\001' + _globals['_X509SVIDREQUEST']._serialized_start=48 + _globals['_X509SVIDREQUEST']._serialized_end=65 + _globals['_X509SVIDRESPONSE']._serialized_start=68 + _globals['_X509SVIDRESPONSE']._serialized_end=250 + _globals['_X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY']._serialized_start=195 + _globals['_X509SVIDRESPONSE_FEDERATEDBUNDLESENTRY']._serialized_end=250 + _globals['_X509SVID']._serialized_start=252 + _globals['_X509SVID']._serialized_end=339 + _globals['_X509BUNDLESREQUEST']._serialized_start=341 + _globals['_X509BUNDLESREQUEST']._serialized_end=361 + _globals['_X509BUNDLESRESPONSE']._serialized_start=364 + _globals['_X509BUNDLESRESPONSE']._serialized_end=498 + _globals['_X509BUNDLESRESPONSE_BUNDLESENTRY']._serialized_start=452 + _globals['_X509BUNDLESRESPONSE_BUNDLESENTRY']._serialized_end=498 + _globals['_JWTSVIDREQUEST']._serialized_start=500 + _globals['_JWTSVIDREQUEST']._serialized_end=553 + _globals['_JWTSVIDRESPONSE']._serialized_start=555 + _globals['_JWTSVIDRESPONSE']._serialized_end=597 + _globals['_JWTSVID']._serialized_start=599 + _globals['_JWTSVID']._serialized_end=641 + _globals['_JWTBUNDLESREQUEST']._serialized_start=643 + _globals['_JWTBUNDLESREQUEST']._serialized_end=662 + _globals['_JWTBUNDLESRESPONSE']._serialized_start=664 + _globals['_JWTBUNDLESRESPONSE']._serialized_end=783 + _globals['_JWTBUNDLESRESPONSE_BUNDLESENTRY']._serialized_start=452 + _globals['_JWTBUNDLESRESPONSE_BUNDLESENTRY']._serialized_end=498 + _globals['_VALIDATEJWTSVIDREQUEST']._serialized_start=785 + _globals['_VALIDATEJWTSVIDREQUEST']._serialized_end=841 + _globals['_VALIDATEJWTSVIDRESPONSE']._serialized_start=843 + _globals['_VALIDATEJWTSVIDRESPONSE']._serialized_end=928 + _globals['_SPIFFEWORKLOADAPI']._serialized_start=931 + _globals['_SPIFFEWORKLOADAPI']._serialized_end=1254 # @@protoc_insertion_point(module_scope) diff --git a/src/pyspiffe/proto/spiffe/workload_pb2.pyi b/src/pyspiffe/proto/spiffe/workload_pb2.pyi index 42c5da89..2d63c378 100644 --- a/src/pyspiffe/proto/spiffe/workload_pb2.pyi +++ b/src/pyspiffe/proto/spiffe/workload_pb2.pyi @@ -1,305 +1,348 @@ -# @generated by generate_proto_mypy_stubs.py. Do not edit! +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" +import builtins +import collections.abc +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import google.protobuf.struct_pb2 import sys -from google.protobuf.descriptor import ( - Descriptor as google___protobuf___descriptor___Descriptor, -) -from google.protobuf.internal.containers import ( - RepeatedCompositeFieldContainer as google___protobuf___internal___containers___RepeatedCompositeFieldContainer, - RepeatedScalarFieldContainer as google___protobuf___internal___containers___RepeatedScalarFieldContainer, -) +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions -from google.protobuf.message import ( - Message as google___protobuf___message___Message, -) +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor -from google.protobuf.struct_pb2 import ( - Struct as google___protobuf___struct_pb2___Struct, -) +@typing_extensions.final +class X509SVIDRequest(google.protobuf.message.Message): + """The X509SVIDRequest message conveys parameters for requesting an X.509-SVID. + There are currently no request parameters. + """ -from typing import ( - Iterable as typing___Iterable, - Mapping as typing___Mapping, - MutableMapping as typing___MutableMapping, - Optional as typing___Optional, - Text as typing___Text, -) + DESCRIPTOR: google.protobuf.descriptor.Descriptor -from typing_extensions import ( - Literal as typing_extensions___Literal, -) + def __init__( + self, + ) -> None: ... +global___X509SVIDRequest = X509SVIDRequest -class X509SVIDRequest(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... +@typing_extensions.final +class X509SVIDResponse(google.protobuf.message.Message): + """The X509SVIDResponse message carries X.509-SVIDs and related information, + including a set of global CRLs and a list of bundles the workload may use + for federating with foreign trust domains. + """ - def __init__(self, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> X509SVIDRequest: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - -class X509SVIDResponse(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - class FederatedBundlesEntry(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - key = ... # type: typing___Text - value = ... # type: bytes - - def __init__(self, + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing_extensions.final + class FederatedBundlesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.bytes + def __init__( + self, *, - key : typing___Optional[typing___Text] = None, - value : typing___Optional[bytes] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> X509SVIDResponse.FederatedBundlesEntry: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"key",u"value"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ... - - crl = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[bytes] + key: builtins.str = ..., + value: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + SVIDS_FIELD_NUMBER: builtins.int + CRL_FIELD_NUMBER: builtins.int + FEDERATED_BUNDLES_FIELD_NUMBER: builtins.int @property - def svids(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[X509SVID]: ... - + def svids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___X509SVID]: + """Required. A list of X509SVID messages, each of which includes a single + X.509-SVID, its private key, and the bundle for the trust domain. + """ @property - def federated_bundles(self) -> typing___MutableMapping[typing___Text, bytes]: ... - - def __init__(self, + def crl(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + """Optional. ASN.1 DER encoded certificate revocation lists.""" + @property + def federated_bundles(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.bytes]: + """Optional. CA certificate bundles belonging to foreign trust domains that + the workload should trust, keyed by the SPIFFE ID of the foreign trust + domain. Bundles are ASN.1 DER encoded. + """ + def __init__( + self, *, - svids : typing___Optional[typing___Iterable[X509SVID]] = None, - crl : typing___Optional[typing___Iterable[bytes]] = None, - federated_bundles : typing___Optional[typing___Mapping[typing___Text, bytes]] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> X509SVIDResponse: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"crl",u"federated_bundles",u"svids"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"crl",b"crl",u"federated_bundles",b"federated_bundles",u"svids",b"svids"]) -> None: ... - -class X509SVID(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - spiffe_id = ... # type: typing___Text - x509_svid = ... # type: bytes - x509_svid_key = ... # type: bytes - bundle = ... # type: bytes - - def __init__(self, + svids: collections.abc.Iterable[global___X509SVID] | None = ..., + crl: collections.abc.Iterable[builtins.bytes] | None = ..., + federated_bundles: collections.abc.Mapping[builtins.str, builtins.bytes] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["crl", b"crl", "federated_bundles", b"federated_bundles", "svids", b"svids"]) -> None: ... + +global___X509SVIDResponse = X509SVIDResponse + +@typing_extensions.final +class X509SVID(google.protobuf.message.Message): + """The X509SVID message carries a single SVID and all associated information, + including the X.509 bundle for the trust domain. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPIFFE_ID_FIELD_NUMBER: builtins.int + X509_SVID_FIELD_NUMBER: builtins.int + X509_SVID_KEY_FIELD_NUMBER: builtins.int + BUNDLE_FIELD_NUMBER: builtins.int + spiffe_id: builtins.str + """Required. The SPIFFE ID of the SVID in this entry""" + x509_svid: builtins.bytes + """Required. ASN.1 DER encoded certificate chain. MAY include + intermediates, the leaf certificate (or SVID itself) MUST come first. + """ + x509_svid_key: builtins.bytes + """Required. ASN.1 DER encoded PKCS#8 private key. MUST be unencrypted.""" + bundle: builtins.bytes + """Required. ASN.1 DER encoded X.509 bundle for the trust domain.""" + def __init__( + self, *, - spiffe_id : typing___Optional[typing___Text] = None, - x509_svid : typing___Optional[bytes] = None, - x509_svid_key : typing___Optional[bytes] = None, - bundle : typing___Optional[bytes] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> X509SVID: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"bundle",u"spiffe_id",u"x509_svid",u"x509_svid_key"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"bundle",b"bundle",u"spiffe_id",b"spiffe_id",u"x509_svid",b"x509_svid",u"x509_svid_key",b"x509_svid_key"]) -> None: ... - -class X509BundlesRequest(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - - def __init__(self, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> X509BundlesRequest: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - -class X509BundlesResponse(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - class BundlesEntry(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - key = ... # type: typing___Text - value = ... # type: bytes - - def __init__(self, + spiffe_id: builtins.str = ..., + x509_svid: builtins.bytes = ..., + x509_svid_key: builtins.bytes = ..., + bundle: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["bundle", b"bundle", "spiffe_id", b"spiffe_id", "x509_svid", b"x509_svid", "x509_svid_key", b"x509_svid_key"]) -> None: ... + +global___X509SVID = X509SVID + +@typing_extensions.final +class X509BundlesRequest(google.protobuf.message.Message): + """The X509BundlesRequest message conveys parameters for requesting X.509 + bundles. There are currently no such parameters. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___X509BundlesRequest = X509BundlesRequest + +@typing_extensions.final +class X509BundlesResponse(google.protobuf.message.Message): + """The X509BundlesResponse message carries a set of global CRLs and a map of + trust bundles the workload should trust. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing_extensions.final + class BundlesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.bytes + def __init__( + self, *, - key : typing___Optional[typing___Text] = None, - value : typing___Optional[bytes] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> X509BundlesResponse.BundlesEntry: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"key",u"value"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ... - - crl = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[bytes] + key: builtins.str = ..., + value: builtins.bytes = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + CRL_FIELD_NUMBER: builtins.int + BUNDLES_FIELD_NUMBER: builtins.int @property - def bundles(self) -> typing___MutableMapping[typing___Text, bytes]: ... - - def __init__(self, - *, - crl : typing___Optional[typing___Iterable[bytes]] = None, - bundles : typing___Optional[typing___Mapping[typing___Text, bytes]] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> X509BundlesResponse: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"bundles",u"crl"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"bundles",b"bundles",u"crl",b"crl"]) -> None: ... - -class JWTSVIDRequest(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - audience = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[typing___Text] - spiffe_id = ... # type: typing___Text - - def __init__(self, + def crl(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: + """Optional. ASN.1 DER encoded certificate revocation lists.""" + @property + def bundles(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.bytes]: + """Required. CA certificate bundles belonging to trust domains that the + workload should trust, keyed by the SPIFFE ID of the trust domain. + Bundles are ASN.1 DER encoded. + """ + def __init__( + self, *, - audience : typing___Optional[typing___Iterable[typing___Text]] = None, - spiffe_id : typing___Optional[typing___Text] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> JWTSVIDRequest: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"audience",u"spiffe_id"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"audience",b"audience",u"spiffe_id",b"spiffe_id"]) -> None: ... - -class JWTSVIDResponse(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... + crl: collections.abc.Iterable[builtins.bytes] | None = ..., + bundles: collections.abc.Mapping[builtins.str, builtins.bytes] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["bundles", b"bundles", "crl", b"crl"]) -> None: ... - @property - def svids(self) -> google___protobuf___internal___containers___RepeatedCompositeFieldContainer[JWTSVID]: ... +global___X509BundlesResponse = X509BundlesResponse - def __init__(self, - *, - svids : typing___Optional[typing___Iterable[JWTSVID]] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> JWTSVIDResponse: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"svids"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"svids",b"svids"]) -> None: ... - -class JWTSVID(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - spiffe_id = ... # type: typing___Text - svid = ... # type: typing___Text - - def __init__(self, +@typing_extensions.final +class JWTSVIDRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + AUDIENCE_FIELD_NUMBER: builtins.int + SPIFFE_ID_FIELD_NUMBER: builtins.int + @property + def audience(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """Required. The audience(s) the workload intends to authenticate against.""" + spiffe_id: builtins.str + """Optional. The requested SPIFFE ID for the JWT-SVID. If unset, all + JWT-SVIDs to which the workload is entitled are requested. + """ + def __init__( + self, *, - spiffe_id : typing___Optional[typing___Text] = None, - svid : typing___Optional[typing___Text] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> JWTSVID: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"spiffe_id",u"svid"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"spiffe_id",b"spiffe_id",u"svid",b"svid"]) -> None: ... - -class JWTBundlesRequest(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - - def __init__(self, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> JWTBundlesRequest: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - -class JWTBundlesResponse(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - class BundlesEntry(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - key = ... # type: typing___Text - value = ... # type: bytes - - def __init__(self, - *, - key : typing___Optional[typing___Text] = None, - value : typing___Optional[bytes] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> JWTBundlesResponse.BundlesEntry: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"key",u"value"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"key",b"key",u"value",b"value"]) -> None: ... + audience: collections.abc.Iterable[builtins.str] | None = ..., + spiffe_id: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["audience", b"audience", "spiffe_id", b"spiffe_id"]) -> None: ... +global___JWTSVIDRequest = JWTSVIDRequest - @property - def bundles(self) -> typing___MutableMapping[typing___Text, bytes]: ... +@typing_extensions.final +class JWTSVIDResponse(google.protobuf.message.Message): + """The JWTSVIDResponse message conveys JWT-SVIDs.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor - def __init__(self, + SVIDS_FIELD_NUMBER: builtins.int + @property + def svids(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___JWTSVID]: + """Required. The list of returned JWT-SVIDs.""" + def __init__( + self, *, - bundles : typing___Optional[typing___Mapping[typing___Text, bytes]] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> JWTBundlesResponse: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"bundles"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"bundles",b"bundles"]) -> None: ... - -class ValidateJWTSVIDRequest(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - audience = ... # type: typing___Text - svid = ... # type: typing___Text - - def __init__(self, + svids: collections.abc.Iterable[global___JWTSVID] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["svids", b"svids"]) -> None: ... + +global___JWTSVIDResponse = JWTSVIDResponse + +@typing_extensions.final +class JWTSVID(google.protobuf.message.Message): + """The JWTSVID message carries the JWT-SVID token and associated metadata.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPIFFE_ID_FIELD_NUMBER: builtins.int + SVID_FIELD_NUMBER: builtins.int + spiffe_id: builtins.str + """Required. The SPIFFE ID of the JWT-SVID.""" + svid: builtins.str + """Required. Encoded JWT using JWS Compact Serialization.""" + def __init__( + self, *, - audience : typing___Optional[typing___Text] = None, - svid : typing___Optional[typing___Text] = None, + spiffe_id: builtins.str = ..., + svid: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["spiffe_id", b"spiffe_id", "svid", b"svid"]) -> None: ... + +global___JWTSVID = JWTSVID + +@typing_extensions.final +class JWTBundlesRequest(google.protobuf.message.Message): + """The JWTBundlesRequest message conveys parameters for requesting JWT bundles. + There are currently no such parameters. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___JWTBundlesRequest = JWTBundlesRequest + +@typing_extensions.final +class JWTBundlesResponse(google.protobuf.message.Message): + """The JWTBundlesReponse conveys JWT bundles.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + @typing_extensions.final + class BundlesEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.bytes + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.bytes = ..., ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> ValidateJWTSVIDRequest: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def ClearField(self, field_name: typing_extensions___Literal[u"audience",u"svid"]) -> None: ... - else: - def ClearField(self, field_name: typing_extensions___Literal[u"audience",b"audience",u"svid",b"svid"]) -> None: ... - -class ValidateJWTSVIDResponse(google___protobuf___message___Message): - DESCRIPTOR: google___protobuf___descriptor___Descriptor = ... - spiffe_id = ... # type: typing___Text + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + BUNDLES_FIELD_NUMBER: builtins.int @property - def claims(self) -> google___protobuf___struct_pb2___Struct: ... + def bundles(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.bytes]: + """Required. JWK encoded JWT bundles, keyed by the SPIFFE ID of the trust + domain. + """ + def __init__( + self, + *, + bundles: collections.abc.Mapping[builtins.str, builtins.bytes] | None = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["bundles", b"bundles"]) -> None: ... + +global___JWTBundlesResponse = JWTBundlesResponse + +@typing_extensions.final +class ValidateJWTSVIDRequest(google.protobuf.message.Message): + """The ValidateJWTSVIDRequest message conveys request parameters for + JWT-SVID validation. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + AUDIENCE_FIELD_NUMBER: builtins.int + SVID_FIELD_NUMBER: builtins.int + audience: builtins.str + """Required. The audience of the validating party. The JWT-SVID must + contain an audience claim which contains this value in order to + succesfully validate. + """ + svid: builtins.str + """Required. The JWT-SVID to validate, encoded using JWS Compact + Serialization. + """ + def __init__( + self, + *, + audience: builtins.str = ..., + svid: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["audience", b"audience", "svid", b"svid"]) -> None: ... + +global___ValidateJWTSVIDRequest = ValidateJWTSVIDRequest - def __init__(self, +@typing_extensions.final +class ValidateJWTSVIDResponse(google.protobuf.message.Message): + """The ValidateJWTSVIDReponse message conveys the JWT-SVID validation results.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SPIFFE_ID_FIELD_NUMBER: builtins.int + CLAIMS_FIELD_NUMBER: builtins.int + spiffe_id: builtins.str + """Required. The SPIFFE ID of the validated JWT-SVID.""" + @property + def claims(self) -> google.protobuf.struct_pb2.Struct: + """Optional. Arbitrary claims contained within the payload of the validated + JWT-SVID. + """ + def __init__( + self, *, - spiffe_id : typing___Optional[typing___Text] = None, - claims : typing___Optional[google___protobuf___struct_pb2___Struct] = None, - ) -> None: ... - @classmethod - def FromString(cls, s: bytes) -> ValidateJWTSVIDResponse: ... - def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ... - if sys.version_info >= (3,): - def HasField(self, field_name: typing_extensions___Literal[u"claims"]) -> bool: ... - def ClearField(self, field_name: typing_extensions___Literal[u"claims",u"spiffe_id"]) -> None: ... - else: - def HasField(self, field_name: typing_extensions___Literal[u"claims",b"claims"]) -> bool: ... - def ClearField(self, field_name: typing_extensions___Literal[u"claims",b"claims",u"spiffe_id",b"spiffe_id"]) -> None: ... + spiffe_id: builtins.str = ..., + claims: google.protobuf.struct_pb2.Struct | None = ..., + ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["claims", b"claims"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["claims", b"claims", "spiffe_id", b"spiffe_id"]) -> None: ... + +global___ValidateJWTSVIDResponse = ValidateJWTSVIDResponse diff --git a/src/pyspiffe/spiffe_id/spiffe_id.py b/src/pyspiffe/spiffe_id/spiffe_id.py index 7a0ca162..62e2cfbc 100644 --- a/src/pyspiffe/spiffe_id/spiffe_id.py +++ b/src/pyspiffe/spiffe_id/spiffe_id.py @@ -2,7 +2,7 @@ This module manages SpiffeId objects. """ -from typing import Any, Union, List +from typing import Any, Union, List, Optional from pyspiffe.exceptions import SpiffeIdError, ArgumentError from pyspiffe.spiffe_id import SCHEME_PREFIX @@ -139,7 +139,7 @@ def parse(cls, id: str) -> 'SpiffeId': @classmethod def from_segments( - cls, trust_domain: TrustDomain, path_segments: Union[str, List[str]] = None + cls, trust_domain: TrustDomain, path_segments: Optional[Union[str, List[str]]] ) -> 'SpiffeId': """Creates SpiffeId type instance from a Trust Domain and one or more paths. diff --git a/src/pyspiffe/svid/jwt_svid.py b/src/pyspiffe/svid/jwt_svid.py index 3e343c56..cb4b4920 100644 --- a/src/pyspiffe/svid/jwt_svid.py +++ b/src/pyspiffe/svid/jwt_svid.py @@ -121,7 +121,7 @@ def parse_and_validate( key_id = header_params.get('kid') signing_key = jwt_bundle.get_jwt_authority(key_id) if not signing_key: - raise AuthorityNotFoundError(key_id) + raise AuthorityNotFoundError(key_id if key_id else '') public_key_pem = signing_key.public_bytes( encoding=serialization.Encoding.PEM, diff --git a/src/pyspiffe/svid/x509_svid.py b/src/pyspiffe/svid/x509_svid.py index 0908d6f7..a0bcdafd 100644 --- a/src/pyspiffe/svid/x509_svid.py +++ b/src/pyspiffe/svid/x509_svid.py @@ -1,6 +1,7 @@ """ This module manages X.509 SVID objects. """ + from typing import List from cryptography import x509 @@ -241,7 +242,8 @@ def _extract_spiffe_id(cert: Certificate) -> SpiffeId: ext = cert.extensions.get_extension_for_oid( x509.ExtensionOID.SUBJECT_ALTERNATIVE_NAME ) - sans = ext.value.get_values_for_type(x509.UniformResourceIdentifier) + if isinstance(ext.value, x509.SubjectAlternativeName): + sans = ext.value.get_values_for_type(x509.UniformResourceIdentifier) if len(sans) == 0: raise InvalidLeafCertificateError( 'Certificate does not contain a SPIFFE ID in the URI SAN' @@ -260,21 +262,22 @@ def _validate_chain(cert_chain: List[Certificate]) -> None: def _validate_leaf_certificate(leaf: Certificate) -> None: basic_constraints = leaf.extensions.get_extension_for_oid( x509.ExtensionOID.BASIC_CONSTRAINTS - ) - if basic_constraints.value.ca: + ).value + if isinstance(basic_constraints, x509.BasicConstraints) and basic_constraints.ca: raise InvalidLeafCertificateError( 'Leaf certificate must not have CA flag set to true' ) - key_usage = leaf.extensions.get_extension_for_oid(x509.ExtensionOID.KEY_USAGE) - if not key_usage.value.digital_signature: + + key_usage = leaf.extensions.get_extension_for_oid(x509.ExtensionOID.KEY_USAGE).value + if isinstance(key_usage, x509.KeyUsage) and not key_usage.digital_signature: raise InvalidLeafCertificateError( 'Leaf certificate must have \'digitalSignature\' as key usage' ) - if key_usage.value.key_cert_sign: + if isinstance(key_usage, x509.KeyUsage) and key_usage.key_cert_sign: raise InvalidLeafCertificateError( 'Leaf certificate must not have \'keyCertSign\' as key usage' ) - if key_usage.value.crl_sign: + if isinstance(key_usage, x509.KeyUsage) and key_usage.crl_sign: raise InvalidLeafCertificateError( 'Leaf certificate must not have \'cRLSign\' as key usage' ) @@ -283,13 +286,16 @@ def _validate_leaf_certificate(leaf: Certificate) -> None: def _validate_intermediate_certificate(cert: Certificate) -> None: basic_constraints = cert.extensions.get_extension_for_oid( x509.ExtensionOID.BASIC_CONSTRAINTS - ) - if not basic_constraints.value.ca: + ).value + if ( + isinstance(basic_constraints, x509.BasicConstraints) + and not basic_constraints.ca + ): raise InvalidIntermediateCertificateError( 'Signing certificate must have CA flag set to true' ) - key_usage = cert.extensions.get_extension_for_oid(x509.ExtensionOID.KEY_USAGE) - if not key_usage.value.key_cert_sign: + key_usage = cert.extensions.get_extension_for_oid(x509.ExtensionOID.KEY_USAGE).value + if isinstance(key_usage, x509.KeyUsage) and not key_usage.key_cert_sign: raise InvalidIntermediateCertificateError( 'Signing certificate must have \'keyCertSign\' as key usage' ) diff --git a/src/pyspiffe/utils/certificate_utils.py b/src/pyspiffe/utils/certificate_utils.py index 126bd2e8..e6447e84 100644 --- a/src/pyspiffe/utils/certificate_utils.py +++ b/src/pyspiffe/utils/certificate_utils.py @@ -3,7 +3,16 @@ import os import pem from cryptography import x509 -from cryptography.hazmat.primitives.asymmetric import ed25519, ed448, rsa, ec, dsa +from cryptography.hazmat.primitives.asymmetric import ( + ed25519, + ed448, + rsa, + ec, + dsa, + dh, + x25519, + x448, +) from cryptography.hazmat.primitives.serialization import ( load_der_private_key, load_pem_private_key, @@ -12,6 +21,8 @@ from cryptography.hazmat.primitives import serialization from cryptography.x509 import Certificate from pyasn1.codec.der.decoder import decode +from pyasn1.codec.der.encoder import encode +from pyasn1_modules.rfc5280 import Certificate as Pyasn1Certificate from pyspiffe.utils.exceptions import ( X509CertificateError, ParseCertificateError, @@ -26,11 +37,14 @@ _PRIVATE_KEY_FILE_MODE = 0o600 PRIVATE_KEY_TYPES = Union[ + dh.DHPrivateKey, ed25519.Ed25519PrivateKey, ed448.Ed448PrivateKey, rsa.RSAPrivateKey, dsa.DSAPrivateKey, ec.EllipticCurvePrivateKey, + x25519.X25519PrivateKey, + x448.X448PrivateKey, ] @@ -75,13 +89,11 @@ def parse_der_certificates(der_bytes: bytes) -> List[Certificate]: try: result = [] - leaf = x509.load_der_x509_certificate(der_bytes, default_backend()) - result.append(leaf) - _, remaining_data = decode(der_bytes) + cert, remaining_data = decode(der_bytes, Pyasn1Certificate()) + result.append(x509.load_der_x509_certificate(encode(cert))) while len(remaining_data) > 0: - cert = x509.load_der_x509_certificate(remaining_data, default_backend()) - result.append(cert) - _, remaining_data = decode(remaining_data) + cert, remaining_data = decode(remaining_data, Pyasn1Certificate()) + result.append(x509.load_der_x509_certificate(encode(cert))) return result except Exception: raise ParseCertificateError('Unable to parse DER X.509 certificate') diff --git a/src/pyspiffe/workloadapi/cancel_handler.py b/src/pyspiffe/workloadapi/cancel_handler.py index e5e38f59..367633d9 100644 --- a/src/pyspiffe/workloadapi/cancel_handler.py +++ b/src/pyspiffe/workloadapi/cancel_handler.py @@ -1,14 +1,15 @@ """ This module provides a Cancel Handler. """ + import threading -from typing import Callable +from typing import Callable, Optional class CancelHandler: """Represents a handler to cancel operations.""" - def __init__(self, on_cancel: Callable[[], bool] = None) -> None: + def __init__(self, on_cancel: Optional[Callable[[], bool]]) -> None: """Create a CancelHandler. Args: diff --git a/src/pyspiffe/workloadapi/default_jwt_source.py b/src/pyspiffe/workloadapi/default_jwt_source.py index 7da422c1..a41fd357 100644 --- a/src/pyspiffe/workloadapi/default_jwt_source.py +++ b/src/pyspiffe/workloadapi/default_jwt_source.py @@ -1,6 +1,7 @@ """ This module defines the default source implementation for JWT Bundles and SVIDs. """ + import logging import threading from typing import Optional, Set @@ -27,9 +28,9 @@ class DefaultJwtSource(JwtSource): def __init__( self, - workload_api_client: WorkloadApiClient = None, - spiffe_socket_path: str = None, - timeout_in_seconds: float = None, + workload_api_client: Optional[WorkloadApiClient], + spiffe_socket_path: Optional[str], + timeout_in_seconds: Optional[float], ) -> None: """Creates a new DefaultJwtSource. diff --git a/src/pyspiffe/workloadapi/default_workload_api_client.py b/src/pyspiffe/workloadapi/default_workload_api_client.py index 981bf71a..2f8b9a84 100644 --- a/src/pyspiffe/workloadapi/default_workload_api_client.py +++ b/src/pyspiffe/workloadapi/default_workload_api_client.py @@ -1,6 +1,7 @@ """ This module provides a Workload API client. """ + import logging import threading import time @@ -109,7 +110,7 @@ def _calculate_backoff(self) -> float: class DefaultWorkloadApiClient(WorkloadApiClient): """Default implementation for a SPIFFE Workload API Client.""" - def __init__(self, spiffe_socket: str = None) -> None: + def __init__(self, spiffe_socket: Optional[str]) -> None: """Creates a new Workload API Client. Args: @@ -193,7 +194,7 @@ def watch_x509_context( the Workload API. """ - cancel_handler = CancelHandler() + cancel_handler = CancelHandler(None) retry_handler = RetryHandler() if retry_connect else None @@ -343,7 +344,7 @@ def watch_jwt_bundles( the Workload API. """ - cancel_handler = CancelHandler() + cancel_handler = CancelHandler(None) retry_handler = RetryHandler() if retry_connect else None diff --git a/src/pyspiffe/workloadapi/default_x509_source.py b/src/pyspiffe/workloadapi/default_x509_source.py index 0a76606a..8d65d6f4 100644 --- a/src/pyspiffe/workloadapi/default_x509_source.py +++ b/src/pyspiffe/workloadapi/default_x509_source.py @@ -1,6 +1,7 @@ """ This module provides an implementation of an X.509 Source. """ + import logging import threading from typing import Optional, Callable, List @@ -22,10 +23,10 @@ class DefaultX509Source(X509Source): def __init__( self, - workload_api_client: WorkloadApiClient = None, - spiffe_socket_path: str = None, - timeout_in_seconds: float = None, - picker: Callable[[List[X509Svid]], X509Svid] = None, + workload_api_client: Optional[WorkloadApiClient], + spiffe_socket_path: Optional[str], + timeout_in_seconds: Optional[float], + picker: Optional[Callable[[List[X509Svid]], X509Svid]], ) -> None: """Creates a new X509Source. diff --git a/test/bundle/x509bundle/test_x509_bundle.py b/test/bundle/x509bundle/test_x509_bundle.py index 6e8f9720..2d4d74d4 100644 --- a/test/bundle/x509bundle/test_x509_bundle.py +++ b/test/bundle/x509bundle/test_x509_bundle.py @@ -294,7 +294,7 @@ def test_add_and_remove_authority(): def test_not_equal_when_different_objects(): - x509_bundle_1 = X509Bundle(trust_domain) + x509_bundle_1 = X509Bundle(trust_domain, None) assert x509_bundle_1 != trust_domain diff --git a/test/svid/jwtsvid/test_jwt_svid.py b/test/svid/jwtsvid/test_jwt_svid.py index d872c708..d021ec93 100644 --- a/test/svid/jwtsvid/test_jwt_svid.py +++ b/test/svid/jwtsvid/test_jwt_svid.py @@ -2,6 +2,7 @@ import datetime from calendar import timegm import jwt +from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import rsa, ec from cryptography.hazmat.backends import default_backend from pyspiffe.svid import INVALID_INPUT_ERROR @@ -27,6 +28,21 @@ JWT_BUNDLE = JwtBundle(DEFAULT_TRUST_DOMAIN, {'kid1': DEFAULT_KEY.public_key()}) +rsa_private_key = rsa.generate_private_key( + backend=default_backend(), public_exponent=65537, key_size=2048 +).private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.PKCS8, + serialization.NoEncryption(), +) + +ec_private_key = ec.generate_private_key( + ec.SECP256R1(), default_backend() +).private_bytes( + serialization.Encoding.PEM, + serialization.PrivateFormat.PKCS8, + serialization.NoEncryption(), +) """ parse_insecure tests @@ -62,7 +78,7 @@ def test_parse_insecure_invalid_input(test_input_token, test_input_audience, exp ).utctimetuple() ), }, - 'secret', + rsa_private_key, headers={'alg': 'RS256', 'typ': 'JOSE'}, ), ["spire"], @@ -74,7 +90,7 @@ def test_parse_insecure_invalid_input(test_input_token, test_input_audience, exp 'aud': ['spire'], 'sub': 'spiffeid://somewhere.over.the', }, - 'secret', + ec_private_key, headers={'alg': 'ES384', 'typ': 'JWT'}, ), ["spire"], @@ -90,7 +106,7 @@ def test_parse_insecure_invalid_input(test_input_token, test_input_audience, exp ).utctimetuple() ), }, - 'secret', + rsa_private_key, headers={'alg': 'RS512', 'typ': 'JWT'}, ), ["spire"], @@ -107,7 +123,7 @@ def test_parse_insecure_invalid_input(test_input_token, test_input_audience, exp ).utctimetuple() ), }, - 'secret', + rsa_private_key, headers={'alg': 'PS512', 'typ': 'JOSE'}, ), ['spire'], @@ -154,7 +170,7 @@ def test_parse_insecure_invalid_token(test_input_token, test_input_audience): ).utctimetuple() ), }, - 'secret', + rsa_private_key, headers={'alg': 'RS256', 'typ': 'JWT'}, ), ['spire'], @@ -171,7 +187,7 @@ def test_parse_insecure_invalid_token(test_input_token, test_input_audience): ).utctimetuple() ), }, - 'secret key', + rsa_private_key, headers={'alg': 'PS384', 'typ': 'JOSE'}, ), {'spire', 'test'}, diff --git a/test/svid/x509svid/test_x509_svid.py b/test/svid/x509svid/test_x509_svid.py index 5e9402ec..650fd5d1 100644 --- a/test/svid/x509svid/test_x509_svid.py +++ b/test/svid/x509svid/test_x509_svid.py @@ -129,9 +129,9 @@ def test_parse_raw_missing_key(): with pytest.raises(ParsePrivateKeyError) as exception: X509Svid.parse_raw(chain_bytes, key_bytes) - assert str(exception.value) == ( - 'Error parsing private key: Could not deserialize key data. The data may be in an incorrect format ' - 'or it may be encrypted with an unsupported algorithm.' + assert ( + 'Could not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm' + in str(exception.value) ) @@ -142,9 +142,9 @@ def test_parse_missing_key(): with pytest.raises(ParsePrivateKeyError) as exception: X509Svid.parse(chain_bytes, key_bytes) - assert str(exception.value) == ( - 'Error parsing private key: Could not deserialize key data. The data may be in an incorrect format ' - 'or it may be encrypted with an unsupported algorithm.' + assert ( + 'Could not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm' + in str(exception.value) ) @@ -155,7 +155,7 @@ def test_parse_raw_corrupted_certificate(): with pytest.raises(ParseCertificateError) as exception: X509Svid.parse_raw(chain_bytes, key_bytes) - assert str(exception.value) == 'Unable to parse DER X.509 certificate.' + assert 'Unable to parse DER X.509 certificate.' in str(exception.value) def test_parse_corrupted_certificate(): @@ -165,7 +165,7 @@ def test_parse_corrupted_certificate(): with pytest.raises(ParseCertificateError) as exception: X509Svid.parse(chain_bytes, key_bytes) - assert str(exception.value) == 'Unable to parse PEM X.509 certificate.' + assert 'Unable to parse PEM X.509 certificate.' in str(exception.value) def test_parse_raw_corrupted_private_key(): @@ -175,9 +175,9 @@ def test_parse_raw_corrupted_private_key(): with pytest.raises(ParsePrivateKeyError) as exception: X509Svid.parse_raw(chain_bytes, key_bytes) - assert str(exception.value) == ( - 'Error parsing private key: Could not deserialize key data. The data may be in an incorrect format ' - 'or it may be encrypted with an unsupported algorithm.' + assert ( + 'Could not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm' + in str(exception.value) ) @@ -188,9 +188,9 @@ def test_parse_corrupted_private_key(): with pytest.raises(ParsePrivateKeyError) as exception: X509Svid.parse(chain_bytes, key_bytes) - assert str(exception.value) == ( - 'Error parsing private key: Could not deserialize key data. The data may be in an incorrect format ' - 'or it may be encrypted with an unsupported algorithm.' + assert ( + 'Could not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm' + in str(exception.value) ) diff --git a/test/test_config.py b/test/test_config.py index 1df20cdd..9cd45d41 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -14,7 +14,7 @@ def restore_env_vars(): def test_socket_must_be_set(): with pytest.raises(ArgumentError) as exception: - ConfigSetter() + ConfigSetter(None) assert str(exception.value) == 'SPIFFE endpoint socket: socket must be set.' @@ -30,7 +30,7 @@ def test_read_socket_from_environment_variables(): fake_socket = 'unix:///path/to/endpoint.sock' os.environ['SPIFFE_ENDPOINT_SOCKET'] = fake_socket - setter = ConfigSetter() + setter = ConfigSetter(None) assert setter.get_config().spiffe_endpoint_socket == fake_socket diff --git a/test/utils/utils.py b/test/utils/utils.py index c2363ba2..a6fb8630 100644 --- a/test/utils/utils.py +++ b/test/utils/utils.py @@ -57,5 +57,5 @@ def handle_error( def assert_error(error: Exception, expected: Exception): """Helper method to assert errors raised when running test for watch methods.""" - assert type(error) == type(expected) + assert isinstance(error, type(expected)) assert str(error) == str(expected) diff --git a/test/workloadapi/test_cancel_handler.py b/test/workloadapi/test_cancel_handler.py index eaf5587d..e7c92a86 100644 --- a/test/workloadapi/test_cancel_handler.py +++ b/test/workloadapi/test_cancel_handler.py @@ -19,7 +19,7 @@ def test_cancel_handler(): def test_set_cancel_handler(): - cancel_handler = CancelHandler() + cancel_handler = CancelHandler(None) cancel_handler.set_handler(lambda: on_event()) result = cancel_handler.cancel() @@ -29,7 +29,7 @@ def test_set_cancel_handler(): def test_cancel_without_handler_returns_false(): - cancel_handler = CancelHandler() + cancel_handler = CancelHandler(None) result = cancel_handler.cancel() assert not result diff --git a/test/workloadapi/test_default_workload_api_client.py b/test/workloadapi/test_default_workload_api_client.py index 75782add..48563194 100644 --- a/test/workloadapi/test_default_workload_api_client.py +++ b/test/workloadapi/test_default_workload_api_client.py @@ -11,7 +11,7 @@ # No SPIFFE_ENDPOINT_SOCKET, and no path passed, raises exception def test_instantiate_default_without_var(): with pytest.raises(ArgumentError) as exception: - DefaultWorkloadApiClient() + DefaultWorkloadApiClient(None) assert ( str(exception.value) @@ -22,7 +22,7 @@ def test_instantiate_default_without_var(): # With SPIFFE_ENDPOINT_SOCKET, and no path passed, succeeds def test_instantiate_default_with_var(): os.environ[SPIFFE_SOCKET_ENV] = 'unix:///tmp/agent.sock' - wlapi = DefaultWorkloadApiClient() + wlapi = DefaultWorkloadApiClient(None) del os.environ[SPIFFE_SOCKET_ENV] assert wlapi.get_spiffe_endpoint_socket() == 'unix:///tmp/agent.sock' @@ -37,7 +37,7 @@ def test_instantiate_socket_path(): def test_instantiate_default_with_bad_var(): os.environ[SPIFFE_SOCKET_ENV] = '/invalid' with pytest.raises(ArgumentError) as exception: - DefaultWorkloadApiClient() + DefaultWorkloadApiClient(None) assert ( str(exception.value) diff --git a/test/workloadapi/test_jwt_source.py b/test/workloadapi/test_jwt_source.py index e56f4fe3..6bd7d52c 100644 --- a/test/workloadapi/test_jwt_source.py +++ b/test/workloadapi/test_jwt_source.py @@ -45,7 +45,7 @@ def test_get_jwt_svid(mocker): mock_client_get_jwt_svid(mocker) mock_client_fetch_jwt_bundles(mocker) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) jwt_svid = jwt_source.get_jwt_svid(DEFAULT_AUDIENCE, subject=SPIFFE_ID) assert jwt_svid.spiffe_id == SPIFFE_ID @@ -56,7 +56,7 @@ def test_get_jwt_svid_no_subject(mocker): mock_client_get_jwt_svid(mocker) mock_client_fetch_jwt_bundles(mocker) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) jwt_svid = jwt_source.get_jwt_svid(DEFAULT_AUDIENCE) assert jwt_svid.spiffe_id == SPIFFE_ID @@ -67,7 +67,7 @@ def test_get_jwt_svid_exception(mocker): mock_client_get_jwt_svid(mocker) mock_client_fetch_jwt_bundles(mocker) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) with pytest.raises(ArgumentError) as exception: _ = jwt_source.get_jwt_svid("") @@ -79,7 +79,7 @@ def test_error_new(mocker): side_effect=Exception('Mocked Error') ) mock_client_fetch_jwt_bundles(mocker) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) with pytest.raises(FetchJwtSvidError) as exception: _ = jwt_source.get_jwt_svid(DEFAULT_AUDIENCE) @@ -90,7 +90,7 @@ def test_close(mocker): mock_client_get_jwt_svid(mocker) mock_client_fetch_jwt_bundles(mocker) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) jwt_source.close() assert jwt_source.is_closed() @@ -100,7 +100,7 @@ def test_close_twice(mocker): mock_client_get_jwt_svid(mocker) mock_client_fetch_jwt_bundles(mocker) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) jwt_source.close() jwt_source.close() @@ -112,7 +112,7 @@ def test_is_closed(mocker): mock_client_get_jwt_svid(mocker) mock_client_fetch_jwt_bundles(mocker) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) assert not jwt_source.is_closed() jwt_source.close() assert jwt_source.is_closed() @@ -121,7 +121,7 @@ def test_is_closed(mocker): def get_jwt_bundle(mocker): mock_client_get_jwt_svid(mocker) mock_client_fetch_jwt_bundles(mocker) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) jwt_bundle = jwt_source.get_jwt_bundle(TrustDomain.parse('example.org')) assert jwt_bundle @@ -138,7 +138,7 @@ def test_get_jwt_bundle_exception(mocker): side_effect=Exception('Mocked Error'), ) - jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT) + jwt_source = DefaultJwtSource(WORKLOAD_API_CLIENT, None, None) with pytest.raises(JwtSourceError) as exception: _ = jwt_source.get_jwt_bundle(TrustDomain.parse('example.org')) diff --git a/test/workloadapi/test_x509_context.py b/test/workloadapi/test_x509_context.py index c9ca2d61..eddc8c78 100644 --- a/test/workloadapi/test_x509_context.py +++ b/test/workloadapi/test_x509_context.py @@ -11,7 +11,7 @@ _KEY = read_file_bytes(_TEST_CERTS_PATH.format('1-key.der')) _SVID1 = X509Svid.parse_raw(_CHAIN, _KEY) _SVID2 = X509Svid.parse_raw(_CHAIN, _KEY) -_BUNDLE_SET = X509BundleSet() +_BUNDLE_SET = X509BundleSet(None) def test_default_svid(): diff --git a/test/workloadapi/test_x509_source.py b/test/workloadapi/test_x509_source.py index 955d3538..510cab92 100644 --- a/test/workloadapi/test_x509_source.py +++ b/test/workloadapi/test_x509_source.py @@ -49,7 +49,7 @@ def mock_client_return_multiple_svids(mocker): def test_x509_source_get_default_x509_svid(mocker): mock_client_return_multiple_svids(mocker) - x509_source = DefaultX509Source(WORKLOAD_API_CLIENT) + x509_source = DefaultX509Source(WORKLOAD_API_CLIENT, None, None, None) x509_svid = x509_source.get_x509_svid() assert x509_svid.spiffe_id() == SpiffeId.parse('spiffe://example.org/service') @@ -58,7 +58,9 @@ def test_x509_source_get_default_x509_svid(mocker): def test_x509_source_get_x509_svid_with_picker(mocker): mock_client_return_multiple_svids(mocker) - x509_source = DefaultX509Source(WORKLOAD_API_CLIENT, picker=lambda svids: svids[1]) + x509_source = DefaultX509Source( + WORKLOAD_API_CLIENT, None, None, picker=lambda svids: svids[1] + ) x509_svid = x509_source.get_x509_svid() assert x509_svid.spiffe_id() == SpiffeId.parse('spiffe://example.org/service2') @@ -68,10 +70,12 @@ def test_x509_source_get_x509_svid_with_invalid_picker(mocker): mock_client_return_multiple_svids(mocker) # the picker selects an element from the list that doesn't exist - x509_source = DefaultX509Source(WORKLOAD_API_CLIENT, picker=lambda svids: svids[2]) + x509_source = DefaultX509Source( + WORKLOAD_API_CLIENT, None, None, picker=lambda svids: svids[2] + ) # the source should be closed, as it couldn't get the X.509 context set - with (pytest.raises(X509SourceError)) as exception: + with pytest.raises(X509SourceError) as exception: x509_source.get_x509_svid() assert ( @@ -82,7 +86,7 @@ def test_x509_source_get_x509_svid_with_invalid_picker(mocker): def test_x509_source_get_bundle_for_trust_domain(mocker): mock_client_return_multiple_svids(mocker) - x509_source = DefaultX509Source(WORKLOAD_API_CLIENT) + x509_source = DefaultX509Source(WORKLOAD_API_CLIENT, None, None, None) bundle = x509_source.get_bundle_for_trust_domain(TrustDomain.parse('example.org')) assert bundle.trust_domain() == TrustDomain.parse('example.org') @@ -95,11 +99,11 @@ def test_x509_source_get_bundle_for_trust_domain(mocker): def test_x509_source_is_closed_get_svid(mocker): mock_client_return_multiple_svids(mocker) - x509_source = DefaultX509Source(WORKLOAD_API_CLIENT) + x509_source = DefaultX509Source(WORKLOAD_API_CLIENT, None, None, None) x509_source.close() - with (pytest.raises(X509SourceError)) as exception: + with pytest.raises(X509SourceError) as exception: x509_source.get_x509_svid() assert ( @@ -110,11 +114,11 @@ def test_x509_source_is_closed_get_svid(mocker): def test_x509_source_is_closed_get_bundle(mocker): mock_client_return_multiple_svids(mocker) - x509_source = DefaultX509Source(WORKLOAD_API_CLIENT) + x509_source = DefaultX509Source(WORKLOAD_API_CLIENT, None, None, None) x509_source.close() - with (pytest.raises(X509SourceError)) as exception: + with pytest.raises(X509SourceError) as exception: x509_source.get_bundle_for_trust_domain(TrustDomain.parse('example.org')) assert ( diff --git a/tox.ini b/tox.ini index 2fe3f98e..052da6f2 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = lint,py36,py37,py38,py39,cov-report +envlist = lint,py39,cov-report isolated_build = True [testenv] @@ -24,7 +24,11 @@ commands = make lint [testenv:cov-report] -passenv = COVERALLS_REPO_TOKEN CIRCLECI CIRCLE_* CI_PULL_REQUEST +passenv = + COVERALLS_REPO_TOKEN + CIRCLECI + CIRCLE_* + CI_PULL_REQUEST allowlist_externals=/usr/bin/make deps = pytest