diff --git a/client/Dockerfile-dev b/client/Dockerfile-dev index ea48b54..d822fb2 100644 --- a/client/Dockerfile-dev +++ b/client/Dockerfile-dev @@ -4,7 +4,7 @@ # This file is part of NF Compose # [2019] - [2024] © NeuroForge GmbH & Co. KG -FROM python:3.11 +FROM python:3.14 ARG CONTAINER_USER_ID ARG CONTAINER_GROUP_ID diff --git a/client/ci_just_test.sh b/client/ci_just_test.sh index 042d231..4905ba9 100644 --- a/client/ci_just_test.sh +++ b/client/ci_just_test.sh @@ -20,7 +20,7 @@ CUR_DIR=$(pwd) FAILED='no' -docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" -v "$(pwd):/client" --rm python:3.11 bash -c 'cp -r /client /tests && cd /tests && rm -rf venv && bash create_venv.sh && source venv/bin/activate && bash install_dev_dependencies.sh && exec bash test.sh' +docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" -v "$(pwd):/client" --rm python:3.14 bash -c 'cp -r /client /tests && cd /tests && rm -rf venv && bash create_venv.sh && source venv/bin/activate && bash install_dev_dependencies.sh && exec bash test.sh' check_result "integration tests failed" # END testing section diff --git a/client/ci_test.sh b/client/ci_test.sh index c87cc3d..4e790a0 100644 --- a/client/ci_test.sh +++ b/client/ci_test.sh @@ -23,7 +23,7 @@ check_result "failed to run ci_setup.sh" FAILED='no' # START testing section -HTTP_CODE=$(docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" --rm python:3.11 bash -c 'exec curl -o /dev/null -w '%{http_code}' -s http://admin:admin@skipper.test.local:8000/api/') +HTTP_CODE=$(docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" --rm python:3.14 bash -c 'exec curl -o /dev/null -w '%{http_code}' -s http://admin:admin@skipper.test.local:8000/api/') if [ "$HTTP_CODE" == '200' ]; then echo "successfully got HTTP 200 from skipper" else @@ -32,7 +32,7 @@ else FAILED='yes' fi -docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" -v "$(pwd):/client" --rm python:3.11 bash -c 'cp -r /client /tests && cd /tests && rm -rf venv && bash create_venv.sh && source venv/bin/activate && bash install_dev_dependencies.sh && exec bash test.sh' +docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" -v "$(pwd):/client" --rm python:3.14 bash -c 'cp -r /client /tests && cd /tests && rm -rf venv && bash create_venv.sh && source venv/bin/activate && bash install_dev_dependencies.sh && exec bash test.sh' check_result "integration tests failed" # END testing section diff --git a/deploy/local/test.sh b/deploy/local/test.sh index 7371183..92c3ab3 100644 --- a/deploy/local/test.sh +++ b/deploy/local/test.sh @@ -23,7 +23,7 @@ check_result "failed to run setup.sh" FAILED='no' # START testing section -HTTP_CODE=$(docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" --rm python:3.11 bash -c 'exec curl -o /dev/null -w '%{http_code}' -s http://admin:admin@skipper.test.local:8000/api/') +HTTP_CODE=$(docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" --rm python:3.14 bash -c 'exec curl -o /dev/null -w '%{http_code}' -s http://admin:admin@skipper.test.local:8000/api/') if [ "$HTTP_CODE" == '200' ]; then echo "successfully got HTTP 200 from skipper" else @@ -32,7 +32,7 @@ else FAILED='yes' fi -docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" -v "$(pwd)/integration:/integration" --rm python:3.11 bash -c 'cp -r /integration /tests && cd /tests && bash create_venv.sh && source venv/bin/activate && pip3 install -r requirements.txt && exec bash test.sh' +docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" -v "$(pwd)/integration:/integration" --rm python:3.14 bash -c 'cp -r /integration /tests && cd /tests && bash create_venv.sh && source venv/bin/activate && pip3 install -r requirements.txt && exec bash test.sh' check_result "integration tests failed" # END testing section diff --git a/e2e/nodejs/ci_test.sh b/e2e/nodejs/ci_test.sh index c87cc3d..4e790a0 100644 --- a/e2e/nodejs/ci_test.sh +++ b/e2e/nodejs/ci_test.sh @@ -23,7 +23,7 @@ check_result "failed to run ci_setup.sh" FAILED='no' # START testing section -HTTP_CODE=$(docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" --rm python:3.11 bash -c 'exec curl -o /dev/null -w '%{http_code}' -s http://admin:admin@skipper.test.local:8000/api/') +HTTP_CODE=$(docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" --rm python:3.14 bash -c 'exec curl -o /dev/null -w '%{http_code}' -s http://admin:admin@skipper.test.local:8000/api/') if [ "$HTTP_CODE" == '200' ]; then echo "successfully got HTTP 200 from skipper" else @@ -32,7 +32,7 @@ else FAILED='yes' fi -docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" -v "$(pwd):/client" --rm python:3.11 bash -c 'cp -r /client /tests && cd /tests && rm -rf venv && bash create_venv.sh && source venv/bin/activate && bash install_dev_dependencies.sh && exec bash test.sh' +docker run --rm --network "${COMPOSE_PROJECT_NAME}_nfcompose" -v "$(pwd):/client" --rm python:3.14 bash -c 'cp -r /client /tests && cd /tests && rm -rf venv && bash create_venv.sh && source venv/bin/activate && bash install_dev_dependencies.sh && exec bash test.sh' check_result "integration tests failed" # END testing section diff --git a/skipper/Dockerfile-base b/skipper/Dockerfile-base index b4b50d6..f5dfb85 100644 --- a/skipper/Dockerfile-base +++ b/skipper/Dockerfile-base @@ -4,7 +4,7 @@ # This file is part of NF Compose # [2019] - [2024] © NeuroForge GmbH & Co. KG -FROM python:3.11 +FROM python:3.14 RUN apt-get update && apt-get install -y \ sudo \ @@ -13,7 +13,7 @@ RUN apt-get update && apt-get install -y \ RUN sudo apt-get upgrade -y RUN pip install --upgrade setuptools pip -RUN pip install pipenv==2023.10.24 +RUN pip install pipenv==2026.0.2 ENV PIPENV_IGNORE_VIRTUALENVS=1 RUN useradd -rm -d /home/skipper -s /bin/bash -g root -G sudo -u 9999 skipper diff --git a/skipper/Dockerfile-base-arm b/skipper/Dockerfile-base-arm index a3f5916..1f5c2b5 100644 --- a/skipper/Dockerfile-base-arm +++ b/skipper/Dockerfile-base-arm @@ -5,13 +5,13 @@ # [2019] - [2024] © NeuroForge GmbH & Co. KG -FROM python:3.11 +FROM python:3.14 RUN apt-get update && apt-get install -y sudo vim python3-virtualenv python3-setuptools RUN sudo apt-get upgrade -y RUN pip install --upgrade pip==23.3.1 -RUN pip install pipenv==2023.10.24 +RUN pip install pipenv==2026.0.2 ENV PIPENV_IGNORE_VIRTUALENVS=1 RUN useradd -rm -d /home/skipper -s /bin/bash -g root -G sudo -u 9999 skipper diff --git a/skipper/Dockerfile-base-dev b/skipper/Dockerfile-base-dev index 6839753..94ca7eb 100644 --- a/skipper/Dockerfile-base-dev +++ b/skipper/Dockerfile-base-dev @@ -4,7 +4,7 @@ # This file is part of NF Compose # [2019] - [2024] © NeuroForge GmbH & Co. KG -FROM python:3.11 +FROM python:3.14 # so celery immediately quits and does not wait around to get killed by docker # this way it puts jobs back that were set to acks_late=True @@ -24,7 +24,7 @@ RUN apt-get update && apt-get install -y \ RUN pip install setuptools==68.2.2 RUN pip install --upgrade pip==23.3.1 -RUN pip install pipenv==2023.10.24 +RUN pip install pipenv==2026.0.2 ENV PIPENV_IGNORE_VIRTUALENVS=1 ENV PIPENV_VENV_IN_PROJECT=1 diff --git a/skipper/Pipfile b/skipper/Pipfile index 6417ff9..fb2b03a 100644 --- a/skipper/Pipfile +++ b/skipper/Pipfile @@ -5,29 +5,29 @@ name = "pypi" [packages] setuptools = "==70.0.0" -djangorestframework = "==3.15.2" -djangorestframework-simplejwt = { version = "==5.3.1" } +djangorestframework = "==3.16.1" +djangorestframework-simplejwt = { version = "==5.5.1" } # at least required for simplejwt crypto -cryptography = "==43.0.1" +cryptography = "==46.0.3" django-extensions = "==3.2.3" -psycopg = {version = "==3.2.3", extras = ["binary", "pool"]} -pytz = "==2024.1" +psycopg = {version = "==3.3.2", extras = ["binary", "pool"]} +pytz = "==2025.2" django-enumchoicefield = "==1.1.0" -requests = "==2.32.2" -django-filter = "==23.5" +requests = "==2.32.5" +django-filter = "==24.3" gunicorn = {version = "==23.0.0", extras = ["gevent"]} django-storages = "==1.12.3" boto3 = "==1.34.49" celery = "==5.3.6" django-celery-results = "==2.5.1" django-guardian = "==2.4.0" -django-multitenant = "==3.0.0" +django-multitenant = "4.1.1" django-cors-headers = "==4.3.1" pip-licenses = "==4.3.4" tblib = "==3.0.0" jsonschema = {version = "==4.21.0"} -gevent = "==24.2.1" -greenlet = "==3.0.3" +gevent = "==25.9.1" +greenlet = "==3.3.0" "zope.event" = "==5.0" "zope.interface" = "==6.2" mypy = "==1.0.1" @@ -55,9 +55,9 @@ opentelemetry-instrumentation-botocore = "==0.48b0" opentelemetry-instrumentation-psycopg = "==0.48b0" opentelemetry-instrumentation-redis = "==0.48b0" sqlparse = "==0.5.0" -Django = "==5.1.5" -Pillow = "==10.3.0" -FormEncode = "==2.0.1" +Django = "==6.0" +Pillow = "==12.0.0" +FormEncode = "==2.1.1" SQLAlchemy = "==1.4.51" Deprecated = "==1.2.14" protobuf = "==3.20.3" @@ -74,4 +74,4 @@ coverage = "*" runProduction = "bash runProduction.sh" [requires] -python_version = "3.11" +python_version = "3.14" diff --git a/skipper/Pipfile.lock b/skipper/Pipfile.lock index 8ed240f..3a1e2cd 100644 --- a/skipper/Pipfile.lock +++ b/skipper/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "185e17ea5c5bd9d68105459de4b7c0f64a754a0b59999d33f16ccfd59b69f9cc" + "sha256": "c870292485f8e87ae10244f762f69141e21454c2bbe0d8eeea4c4986378102fb" }, "pipfile-spec": 6, "requires": { - "python_version": "3.11" + "python_version": "3.14" }, "sources": [ { @@ -26,11 +26,11 @@ }, "asgiref": { "hashes": [ - "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47", - "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590" + "sha256:13acff32519542a1736223fb79a715acdebe24286d98e8b164a73085f40da2c4", + "sha256:1db9021efadb0d9512ce8ffaf72fcef601c7b73a8807a1bb2ef143dc6b14846d" ], - "markers": "python_version >= '3.8'", - "version": "==3.8.1" + "markers": "python_version >= '3.9'", + "version": "==3.11.0" }, "async-timeout": { "hashes": [ @@ -43,19 +43,19 @@ }, "attrs": { "hashes": [ - "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e", - "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a" + "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", + "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373" ], - "markers": "python_version >= '3.8'", - "version": "==25.1.0" + "markers": "python_version >= '3.9'", + "version": "==25.4.0" }, "billiard": { "hashes": [ - "sha256:12b641b0c539073fc8d3f5b8b7be998956665c4233c7c1fcd66a7e677c4fb36f", - "sha256:40b59a4ac8806ba2c2369ea98d876bc6108b051c227baffd928c644d15d8f3cb" + "sha256:525b42bdec68d2b983347ac312f892db930858495db601b5836ac24e6477cde5", + "sha256:55f542c371209e03cd5862299b74e52e4fbcba8250ba611ad94276b369b6a85f" ], "markers": "python_version >= '3.7'", - "version": "==4.2.1" + "version": "==4.2.4" }, "boto3": { "hashes": [ @@ -94,182 +94,220 @@ }, "cffi": { "hashes": [ - "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", - "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", - "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", - "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", - "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", - "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", - "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", - "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", - "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", - "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", - "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", - "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", - "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", - "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", - "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", - "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", - "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", - "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", - "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", - "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", - "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", - "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", - "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", - "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", - "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", - "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", - "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", - "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", - "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", - "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", - "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", - "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", - "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", - "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", - "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", - "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", - "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", - "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", - "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", - "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", - "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", - "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", - "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", - "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", - "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", - "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", - "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", - "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", - "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", - "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", - "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", - "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", - "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", - "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", - "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", - "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", - "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", - "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", - "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", - "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", - "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", - "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", - "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", - "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", - "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", - "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", - "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b" - ], - "markers": "platform_python_implementation != 'PyPy'", - "version": "==1.17.1" + "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", + "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", + "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", + "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", + "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", + "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2", + "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", + "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", + "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65", + "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", + "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", + "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", + "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", + "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a", + "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", + "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", + "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", + "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", + "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", + "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", + "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", + "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", + "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", + "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", + "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165", + "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", + "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", + "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c", + "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", + "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", + "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", + "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", + "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63", + "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", + "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", + "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", + "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", + "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", + "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", + "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", + "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", + "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", + "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", + "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", + "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", + "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", + "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322", + "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", + "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", + "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", + "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", + "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", + "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", + "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", + "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", + "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", + "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", + "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", + "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", + "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", + "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9", + "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", + "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", + "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", + "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", + "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", + "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f", + "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", + "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", + "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", + "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", + "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", + "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", + "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", + "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", + "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", + "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7", + "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", + "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534", + "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", + "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", + "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", + "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", + "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf" + ], + "markers": "python_version >= '3.9'", + "version": "==2.0.0" }, "charset-normalizer": { "hashes": [ - "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537", - "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa", - "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a", - "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294", - "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b", - "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", - "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", - "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", - "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4", - "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", - "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2", - "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", - "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", - "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", - "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", - "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", - "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", - "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496", - "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", - "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", - "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e", - "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a", - "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4", - "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca", - "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78", - "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", - "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5", - "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", - "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", - "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", - "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765", - "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6", - "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", - "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", - "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", - "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd", - "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c", - "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", - "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", - "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", - "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770", - "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824", - "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f", - "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf", - "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487", - "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d", - "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd", - "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", - "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534", - "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", - "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", - "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", - "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd", - "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", - "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9", - "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", - "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", - "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d", - "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", - "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", - "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", - "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7", - "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", - "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", - "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8", - "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41", - "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", - "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", - "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", - "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", - "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", - "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", - "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", - "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", - "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", - "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", - "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", - "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e", - "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6", - "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", - "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", - "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e", - "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", - "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", - "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c", - "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", - "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", - "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089", - "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", - "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e", - "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", - "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616" + "sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad", + "sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93", + "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", + "sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89", + "sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc", + "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", + "sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63", + "sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d", + "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", + "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", + "sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0", + "sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505", + "sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161", + "sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af", + "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", + "sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318", + "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", + "sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4", + "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", + "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", + "sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576", + "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", + "sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1", + "sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8", + "sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1", + "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", + "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", + "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", + "sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88", + "sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016", + "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", + "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", + "sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a", + "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", + "sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0", + "sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84", + "sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db", + "sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1", + "sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7", + "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", + "sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8", + "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", + "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", + "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", + "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", + "sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2", + "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", + "sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d", + "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", + "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", + "sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf", + "sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6", + "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", + "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", + "sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa", + "sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381", + "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", + "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", + "sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc", + "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", + "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", + "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", + "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", + "sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e", + "sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313", + "sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569", + "sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3", + "sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d", + "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", + "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", + "sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3", + "sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9", + "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", + "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", + "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", + "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", + "sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50", + "sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf", + "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", + "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", + "sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac", + "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", + "sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815", + "sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c", + "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", + "sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6", + "sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e", + "sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4", + "sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84", + "sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69", + "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", + "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", + "sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0", + "sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897", + "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", + "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", + "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", + "sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d", + "sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074", + "sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3", + "sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224", + "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", + "sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a", + "sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d", + "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", + "sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f", + "sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8", + "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", + "sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966", + "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", + "sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3", + "sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e", + "sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608" ], "markers": "python_version >= '3.7'", - "version": "==3.4.1" + "version": "==3.4.4" }, "click": { "hashes": [ - "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", - "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a" + "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", + "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6" ], - "markers": "python_version >= '3.7'", - "version": "==8.1.8" + "markers": "python_version >= '3.10'", + "version": "==8.3.1" }, "click-didyoumean": { "hashes": [ @@ -281,10 +319,10 @@ }, "click-plugins": { "hashes": [ - "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", - "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8" + "sha256:008d65743833ffc1f5417bf0e78e8d2c23aab04d9745ba817bd3e71b0feb6aa6", + "sha256:d7af3984a99d243c131aa1a828331e7630f4a88a9741fd05c927b204bcf92261" ], - "version": "==1.1.1" + "version": "==1.1.1.2" }, "click-repl": { "hashes": [ @@ -296,53 +334,82 @@ }, "cryptography": { "hashes": [ - "sha256:014f58110f53237ace6a408b5beb6c427b64e084eb451ef25a28308270086494", - "sha256:1bbcce1a551e262dfbafb6e6252f1ae36a248e615ca44ba302df077a846a8806", - "sha256:203e92a75716d8cfb491dc47c79e17d0d9207ccffcbcb35f598fbe463ae3444d", - "sha256:27e613d7077ac613e399270253259d9d53872aaf657471473ebfc9a52935c062", - "sha256:2bd51274dcd59f09dd952afb696bf9c61a7a49dfc764c04dd33ef7a6b502a1e2", - "sha256:38926c50cff6f533f8a2dae3d7f19541432610d114a70808f0926d5aaa7121e4", - "sha256:511f4273808ab590912a93ddb4e3914dfd8a388fed883361b02dea3791f292e1", - "sha256:58d4e9129985185a06d849aa6df265bdd5a74ca6e1b736a77959b498e0505b85", - "sha256:5b43d1ea6b378b54a1dc99dd8a2b5be47658fe9a7ce0a58ff0b55f4b43ef2b84", - "sha256:61ec41068b7b74268fa86e3e9e12b9f0c21fcf65434571dbb13d954bceb08042", - "sha256:666ae11966643886c2987b3b721899d250855718d6d9ce41b521252a17985f4d", - "sha256:68aaecc4178e90719e95298515979814bda0cbada1256a4485414860bd7ab962", - "sha256:7c05650fe8023c5ed0d46793d4b7d7e6cd9c04e68eabe5b0aeea836e37bdcec2", - "sha256:80eda8b3e173f0f247f711eef62be51b599b5d425c429b5d4ca6a05e9e856baa", - "sha256:8385d98f6a3bf8bb2d65a73e17ed87a3ba84f6991c155691c51112075f9ffc5d", - "sha256:88cce104c36870d70c49c7c8fd22885875d950d9ee6ab54df2745f83ba0dc365", - "sha256:9d3cdb25fa98afdd3d0892d132b8d7139e2c087da1712041f6b762e4f807cc96", - "sha256:a575913fb06e05e6b4b814d7f7468c2c660e8bb16d8d5a1faf9b33ccc569dd47", - "sha256:ac119bb76b9faa00f48128b7f5679e1d8d437365c5d26f1c2c3f0da4ce1b553d", - "sha256:c1332724be35d23a854994ff0b66530119500b6053d0bd3363265f7e5e77288d", - "sha256:d03a475165f3134f773d1388aeb19c2d25ba88b6a9733c5c590b9ff7bbfa2e0c", - "sha256:d75601ad10b059ec832e78823b348bfa1a59f6b8d545db3a24fd44362a1564cb", - "sha256:de41fd81a41e53267cb020bb3a7212861da53a7d39f863585d13ea11049cf277", - "sha256:e710bf40870f4db63c3d7d929aa9e09e4e7ee219e703f949ec4073b4294f6172", - "sha256:ea25acb556320250756e53f9e20a4177515f012c9eaea17eb7587a8c4d8ae034", - "sha256:f98bf604c82c416bc829e490c700ca1553eafdf2912a91e23a79d97d9801372a", - "sha256:fba1007b3ef89946dbbb515aeeb41e30203b004f0b4b00e5e16078b518563289" + "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", + "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", + "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", + "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", + "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", + "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", + "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", + "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", + "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", + "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b", + "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", + "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", + "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", + "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", + "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", + "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", + "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", + "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", + "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", + "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", + "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", + "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", + "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", + "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", + "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", + "sha256:6b5063083824e5509fdba180721d55909ffacccc8adbec85268b48439423d78c", + "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", + "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", + "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", + "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", + "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", + "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea", + "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", + "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717", + "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9", + "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", + "sha256:a23582810fedb8c0bc47524558fb6c56aac3fc252cb306072fd2815da2a47c32", + "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", + "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", + "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", + "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", + "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", + "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", + "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb", + "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", + "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", + "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", + "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", + "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", + "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", + "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", + "sha256:e7aec276d68421f9574040c26e2a7c3771060bc0cff408bae1dcb19d3ab1e63c", + "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", + "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==43.0.1" + "markers": "python_version >= '3.8' and python_full_version not in '3.9.0, 3.9.1'", + "version": "==46.0.3" }, "deprecated": { "hashes": [ "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c", "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3" ], + "index": "pypi", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.2.14" }, "django": { "hashes": [ - "sha256:19bbca786df50b9eca23cee79d495facf55c8f5c54c529d9bf1fe7b5ea086af3", - "sha256:c46eb936111fffe6ec4bc9930035524a8be98ec2f74d8a0ff351226a3e52f459" + "sha256:1cc2c7344303bbfb7ba5070487c17f7fc0b7174bbb0a38cebf03c675f5f19b6d", + "sha256:7b0c1f50c0759bbe6331c6a39c89ae022a84672674aeda908784617ef47d8e26" ], - "markers": "python_version >= '3.10'", - "version": "==5.1.5" + "index": "pypi", + "markers": "python_version >= '3.12'", + "version": "==6.0" }, "django-celery-results": { "hashes": [ @@ -388,12 +455,12 @@ }, "django-filter": { "hashes": [ - "sha256:67583aa43b91fe8c49f74a832d95f4d8442be628fd4c6d65e9f811f5153a4e5c", - "sha256:99122a201d83860aef4fe77758b69dda913e874cc5e0eaa50a86b0b18d708400" + "sha256:c4852822928ce17fb699bcfccd644b3574f1a2d80aeb2b4ff4f16b02dd49dc64", + "sha256:d8ccaf6732afd21ca0542f6733b11591030fa98669f8d15599b358e24a2cd9c3" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==23.5" + "markers": "python_version >= '3.8'", + "version": "==24.3" }, "django-guardian": { "hashes": [ @@ -415,10 +482,11 @@ }, "django-multitenant": { "hashes": [ - "sha256:2f837d64e1ca3717730ede22d984ff86e840edc7cbf2ed4d5ebaadf6dd752231" + "sha256:2c16e487a92f393a5a16c62b231371076a0d201cfd00edfd3f2f7e309ed7f4ae", + "sha256:c1316a5b78d1aede849b022140b4cbe96d6c7991a879dedf4e795ffa013e5713" ], "index": "pypi", - "version": "==3.0.0" + "version": "==4.1.1" }, "django-permissions-policy": { "hashes": [ @@ -464,28 +532,28 @@ }, "django-stubs-ext": { "hashes": [ - "sha256:421c0c3025a68e3ab8e16f065fad9ba93335ecefe2dd92a0cff97a665680266c", - "sha256:6c559214538d6a26f631ca638ddc3251a0a891d607de8ce01d23d3201ad8ad6c" + "sha256:1dd5470c9675591362c78a157a3cf8aec45d0e7a7f0cf32f227a1363e54e0652", + "sha256:b39938c46d7a547cd84e4a6378dbe51a3dd64d70300459087229e5fee27e5c6b" ], - "markers": "python_version >= '3.8'", - "version": "==5.1.2" + "markers": "python_version >= '3.10'", + "version": "==5.2.8" }, "djangorestframework": { "hashes": [ - "sha256:2b8871b062ba1aefc2de01f773875441a961fefbf79f5eed1e32b2f096944b20", - "sha256:36fe88cd2d6c6bec23dca9804bab2ba5517a8bb9d8f47ebc68981b56840107ad" + "sha256:166809528b1aced0a17dc66c24492af18049f2c9420dbd0be29422029cfc3ff7", + "sha256:33a59f47fb9c85ede792cbf88bde71893bcda0667bc573f784649521f1102cec" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==3.15.2" + "markers": "python_version >= '3.9'", + "version": "==3.16.1" }, "djangorestframework-simplejwt": { "hashes": [ - "sha256:381bc966aa46913905629d472cd72ad45faa265509764e20ffd440164c88d220", - "sha256:6c4bd37537440bc439564ebf7d6085e74c5411485197073f508ebdfa34bc9fae" + "sha256:2c30f3707053d384e9f315d11c2daccfcb548d4faa453111ca19a542b732e469", + "sha256:e72c5572f51d7803021288e2057afcbd03f17fe11d484096f40a460abc76e87f" ], - "markers": "python_version >= '3.8'", - "version": "==5.3.1" + "markers": "python_version >= '3.9'", + "version": "==5.5.1" }, "djangorestframework-stubs": { "hashes": [ @@ -507,58 +575,62 @@ }, "formencode": { "hashes": [ - "sha256:8f2974112c2557839d5bae8b76490104c03830785d923abbdef148bf3f710035", - "sha256:bea6d5b0016e129fe1ed41e2435f52dc25dbfe6391e16ebf75e8fece07682a74" + "sha256:2194d0c9bfe15c3bf9c331cca0cb73de3746f64d327cff06f097a5abb8552d2d", + "sha256:e17f16199d232e54f67912004f3ad333cdbbb81a1a1a10238acf09bab99f9199" ], - "version": "==2.0.1" + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==2.1.1" }, "gevent": { "hashes": [ - "sha256:03aa5879acd6b7076f6a2a307410fb1e0d288b84b03cdfd8c74db8b4bc882fc5", - "sha256:117e5837bc74a1673605fb53f8bfe22feb6e5afa411f524c835b2ddf768db0de", - "sha256:141a2b24ad14f7b9576965c0c84927fc85f824a9bb19f6ec1e61e845d87c9cd8", - "sha256:14532a67f7cb29fb055a0e9b39f16b88ed22c66b96641df8c04bdc38c26b9ea5", - "sha256:1dffb395e500613e0452b9503153f8f7ba587c67dd4a85fc7cd7aa7430cb02cc", - "sha256:2955eea9c44c842c626feebf4459c42ce168685aa99594e049d03bedf53c2800", - "sha256:2ae3a25ecce0a5b0cd0808ab716bfca180230112bb4bc89b46ae0061d62d4afe", - "sha256:2e9ac06f225b696cdedbb22f9e805e2dd87bf82e8fa5e17756f94e88a9d37cf7", - "sha256:368a277bd9278ddb0fde308e6a43f544222d76ed0c4166e0d9f6b036586819d9", - "sha256:3adfb96637f44010be8abd1b5e73b5070f851b817a0b182e601202f20fa06533", - "sha256:3d5325ccfadfd3dcf72ff88a92fb8fc0b56cacc7225f0f4b6dcf186c1a6eeabc", - "sha256:432fc76f680acf7cf188c2ee0f5d3ab73b63c1f03114c7cd8a34cebbe5aa2056", - "sha256:44098038d5e2749b0784aabb27f1fcbb3f43edebedf64d0af0d26955611be8d6", - "sha256:5a1df555431f5cd5cc189a6ee3544d24f8c52f2529134685f1e878c4972ab026", - "sha256:6c47ae7d1174617b3509f5d884935e788f325eb8f1a7efc95d295c68d83cce40", - "sha256:6f947a9abc1a129858391b3d9334c45041c08a0f23d14333d5b844b6e5c17a07", - "sha256:782a771424fe74bc7e75c228a1da671578c2ba4ddb2ca09b8f959abdf787331e", - "sha256:7899a38d0ae7e817e99adb217f586d0a4620e315e4de577444ebeeed2c5729be", - "sha256:7b00f8c9065de3ad226f7979154a7b27f3b9151c8055c162332369262fc025d8", - "sha256:8f4b8e777d39013595a7740b4463e61b1cfe5f462f1b609b28fbc1e4c4ff01e5", - "sha256:90cbac1ec05b305a1b90ede61ef73126afdeb5a804ae04480d6da12c56378df1", - "sha256:918cdf8751b24986f915d743225ad6b702f83e1106e08a63b736e3a4c6ead789", - "sha256:9202f22ef811053077d01f43cc02b4aaf4472792f9fd0f5081b0b05c926cca19", - "sha256:94138682e68ec197db42ad7442d3cf9b328069c3ad8e4e5022e6b5cd3e7ffae5", - "sha256:968581d1717bbcf170758580f5f97a2925854943c45a19be4d47299507db2eb7", - "sha256:9d8d0642c63d453179058abc4143e30718b19a85cbf58c2744c9a63f06a1d388", - "sha256:a7ceb59986456ce851160867ce4929edaffbd2f069ae25717150199f8e1548b8", - "sha256:b9913c45d1be52d7a5db0c63977eebb51f68a2d5e6fd922d1d9b5e5fd758cc98", - "sha256:bde283313daf0b34a8d1bab30325f5cb0f4e11b5869dbe5bc61f8fe09a8f66f3", - "sha256:bf5b9c72b884c6f0c4ed26ef204ee1f768b9437330422492c319470954bc4cc7", - "sha256:ca80b121bbec76d7794fcb45e65a7eca660a76cc1a104ed439cdbd7df5f0b060", - "sha256:cdf66977a976d6a3cfb006afdf825d1482f84f7b81179db33941f2fc9673bb1d", - "sha256:d4faf846ed132fd7ebfbbf4fde588a62d21faa0faa06e6f468b7faa6f436b661", - "sha256:d7f87c2c02e03d99b95cfa6f7a776409083a9e4d468912e18c7680437b29222c", - "sha256:dd23df885318391856415e20acfd51a985cba6919f0be78ed89f5db9ff3a31cb", - "sha256:f5de3c676e57177b38857f6e3cdfbe8f38d1cd754b63200c0615eaa31f514b4f", - "sha256:f5e8e8d60e18d5f7fd49983f0c4696deeddaf6e608fbab33397671e2fcc6cc91", - "sha256:f7cac622e11b4253ac4536a654fe221249065d9a69feb6cdcd4d9af3503602e0", - "sha256:f8a04cf0c5b7139bc6368b461257d4a757ea2fe89b3773e494d235b7dd51119f", - "sha256:f8bb35ce57a63c9a6896c71a285818a3922d8ca05d150fd1fe49a7f57287b836", - "sha256:fbfdce91239fe306772faab57597186710d5699213f4df099d1612da7320d682" + "sha256:012a44b0121f3d7c800740ff80351c897e85e76a7e4764690f35c5ad9ec17de5", + "sha256:03c74fec58eda4b4edc043311fca8ba4f8744ad1632eb0a41d5ec25413581975", + "sha256:0adb937f13e5fb90cca2edf66d8d7e99d62a299687400ce2edee3f3504009356", + "sha256:18e5aff9e8342dc954adb9c9c524db56c2f3557999463445ba3d9cbe3dada7b7", + "sha256:1a3fe4ea1c312dbf6b375b416925036fe79a40054e6bf6248ee46526ea628be1", + "sha256:1cdf6db28f050ee103441caa8b0448ace545364f775059d5e2de089da975c457", + "sha256:1d0f5d8d73f97e24ea8d24d8be0f51e0cf7c54b8021c1fddb580bf239474690f", + "sha256:2951bb070c0ee37b632ac9134e4fdaad70d2e660c931bb792983a0837fe5b7d7", + "sha256:323a27192ec4da6b22a9e51c3d9d896ff20bc53fdc9e45e56eaab76d1c39dd74", + "sha256:34e01e50c71eaf67e92c186ee0196a039d6e4f4b35670396baed4a2d8f1b347f", + "sha256:427f869a2050a4202d93cf7fd6ab5cffb06d3e9113c10c967b6e2a0d45237cb8", + "sha256:46b188248c84ffdec18a686fcac5dbb32365d76912e14fda350db5dc0bfd4f86", + "sha256:4acd6bcd5feabf22c7c5174bd3b9535ee9f088d2bbce789f740ad8d6554b18f3", + "sha256:4f84591d13845ee31c13f44bdf6bd6c3dbf385b5af98b2f25ec328213775f2ed", + "sha256:5e4b6278b37373306fc6b1e5f0f1cf56339a1377f67c35972775143d8d7776ff", + "sha256:6ea78b39a2c51d47ff0f130f4c755a9a4bbb2dd9721149420ad4712743911a51", + "sha256:72152517ecf548e2f838c61b4be76637d99279dbaa7e01b3924df040aa996586", + "sha256:7a834804ac00ed8a92a69d3826342c677be651b1c3cd66cc35df8bc711057aa2", + "sha256:812debe235a8295be3b2a63b136c2474241fa5c58af55e6a0f8cfc29d4936235", + "sha256:856b990be5590e44c3a3dc6c8d48a40eaccbb42e99d2b791d11d1e7711a4297e", + "sha256:88b6c07169468af631dcf0fdd3658f9246d6822cc51461d43f7c44f28b0abb82", + "sha256:8d94936f8f8b23d9de2251798fcb603b84f083fdf0d7f427183c1828fb64f117", + "sha256:9cdbb24c276a2d0110ad5c978e49daf620b153719ac8a548ce1250a7eb1b9245", + "sha256:a8ae9f895e8651d10b0a8328a61c9c53da11ea51b666388aa99b0ce90f9fdc27", + "sha256:adf9cd552de44a4e6754c51ff2e78d9193b7fa6eab123db9578a210e657235dd", + "sha256:b274a53e818124a281540ebb4e7a2c524778f745b7a99b01bdecf0ca3ac0ddb0", + "sha256:b28b61ff9216a3d73fe8f35669eefcafa957f143ac534faf77e8a19eb9e6883a", + "sha256:b56cbc820e3136ba52cd690bdf77e47a4c239964d5f80dc657c1068e0fe9521c", + "sha256:b5a67a0974ad9f24721034d1e008856111e0535f1541499f72a733a73d658d1c", + "sha256:b7bb0e29a7b3e6ca9bed2394aa820244069982c36dc30b70eb1004dd67851a48", + "sha256:bb63c0d6cb9950cc94036a4995b9cc4667b8915366613449236970f4394f94d7", + "sha256:c049880175e8c93124188f9d926af0a62826a3b81aa6d3074928345f8238279e", + "sha256:c5fa9ce5122c085983e33e0dc058f81f5264cebe746de5c401654ab96dddfca8", + "sha256:c6c91f7e33c7f01237755884316110ee7ea076f5bdb9aa0982b6dc63243c0a38", + "sha256:d99f0cb2ce43c2e8305bf75bee61a8bde06619d21b9d0316ea190fc7a0620a56", + "sha256:dc45cd3e1cc07514a419960af932a62eb8515552ed004e56755e4bf20bad30c5", + "sha256:ddd3ff26e5c4240d3fbf5516c2d9d5f2a998ef87cfb73e1429cfaeaaec860fa6", + "sha256:e4e17c2d57e9a42e25f2a73d297b22b60b2470a74be5a515b36c984e1a246d47", + "sha256:eb51c5f9537b07da673258b4832f6635014fee31690c3f0944d34741b69f92fa", + "sha256:f0d8b64057b4bf1529b9ef9bd2259495747fba93d1f836c77bfeaacfec373fd0", + "sha256:f18f80aef6b1f6907219affe15b36677904f7cfeed1f6a6bc198616e507ae2d7", + "sha256:f2b54ea3ca6f0c763281cd3f96010ac7e98c2e267feb1221b5a26e2ca0b9a692", + "sha256:fe1599d0b30e6093eb3213551751b24feeb43db79f07e89d98dd2f3330c9063e" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==24.2.1" + "markers": "python_version >= '3.9'", + "version": "==25.9.1" }, "googleapis-common-protos": { "hashes": [ @@ -570,136 +642,134 @@ }, "greenlet": { "hashes": [ - "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67", - "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6", - "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257", - "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4", - "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676", - "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61", - "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc", - "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca", - "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7", - "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728", - "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305", - "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6", - "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379", - "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414", - "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04", - "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a", - "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf", - "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491", - "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559", - "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e", - "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274", - "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb", - "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b", - "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9", - "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b", - "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be", - "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506", - "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405", - "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113", - "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f", - "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5", - "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230", - "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d", - "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f", - "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a", - "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e", - "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61", - "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6", - "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d", - "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71", - "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22", - "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2", - "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3", - "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067", - "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc", - "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881", - "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3", - "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e", - "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac", - "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53", - "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0", - "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b", - "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83", - "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41", - "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c", - "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf", - "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da", - "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33" + "sha256:047ab3df20ede6a57c35c14bf5200fcf04039d50f908270d3f9a7a82064f543b", + "sha256:087ea5e004437321508a8d6f20efc4cfec5e3c30118e1417ea96ed1d93950527", + "sha256:0a5d554d0712ba1de0a6c94c640f7aeba3f85b3a6e1f2899c11c2c0428da9365", + "sha256:2662433acbca297c9153a4023fe2161c8dcfdcc91f10433171cf7e7d94ba2221", + "sha256:286d093f95ec98fdd92fcb955003b8a3d054b4e2cab3e2707a5039e7b50520fd", + "sha256:2d9ad37fc657b1102ec880e637cccf20191581f75c64087a549e66c57e1ceb53", + "sha256:2de5a0b09eab81fc6a382791b995b1ccf2b172a9fec934747a7a23d2ff291794", + "sha256:30a6e28487a790417d036088b3bcb3f3ac7d8babaa7d0139edbaddebf3af9492", + "sha256:349345b770dc88f81506c6861d22a6ccd422207829d2c854ae2af8025af303e3", + "sha256:39b28e339fc3c348427560494e28d8a6f3561c8d2bcf7d706e1c624ed8d822b9", + "sha256:3a898b1e9c5f7307ebbde4102908e6cbfcb9ea16284a3abe15cab996bee8b9b3", + "sha256:3c6e9b9c1527a78520357de498b0e709fb9e2f49c3a513afd5a249007261911b", + "sha256:4243050a88ba61842186cb9e63c7dfa677ec146160b0efd73b855a3d9c7fcf32", + "sha256:4449a736606bd30f27f8e1ff4678ee193bc47f6ca810d705981cfffd6ce0d8c5", + "sha256:5375d2e23184629112ca1ea89a53389dddbffcf417dad40125713d88eb5f96e8", + "sha256:5773edda4dc00e173820722711d043799d3adb4f01731f40619e07ea2750b955", + "sha256:60c2ef0f578afb3c8d92ea07ad327f9a062547137afe91f38408f08aacab667f", + "sha256:670d0f94cd302d81796e37299bcd04b95d62403883b24225c6b5271466612f45", + "sha256:6c10513330af5b8ae16f023e8ddbfb486ab355d04467c4679c5cfe4659975dd9", + "sha256:6cb3a8ec3db4a3b0eb8a3c25436c2d49e3505821802074969db017b87bc6a948", + "sha256:6f8496d434d5cb2dce025773ba5597f71f5410ae499d5dd9533e0653258cdb3d", + "sha256:73631cd5cccbcfe63e3f9492aaa664d278fda0ce5c3d43aeda8e77317e38efbd", + "sha256:73f51dd0e0bdb596fb0417e475fa3c5e32d4c83638296e560086b8d7da7c4170", + "sha256:7652ee180d16d447a683c04e4c5f6441bae7ba7b17ffd9f6b3aff4605e9e6f71", + "sha256:7d2d9fd66bfadf230b385fdc90426fcd6eb64db54b40c495b72ac0feb5766c54", + "sha256:7dee147740789a4632cace364816046e43310b59ff8fb79833ab043aefa72fd5", + "sha256:83cd0e36932e0e7f36a64b732a6f60c2fc2df28c351bae79fbaf4f8092fe7614", + "sha256:87e63ccfa13c0a0f6234ed0add552af24cc67dd886731f2261e46e241608bee3", + "sha256:9ee1942ea19550094033c35d25d20726e4f1c40d59545815e1128ac58d416d38", + "sha256:9f515a47d02da4d30caaa85b69474cec77b7929b2e936ff7fb853d42f4bf8808", + "sha256:a1e41a81c7e2825822f4e068c48cb2196002362619e2d70b148f20a831c00739", + "sha256:a687205fb22794e838f947e2194c0566d3812966b41c78709554aa883183fb62", + "sha256:a7a34b13d43a6b78abf828a6d0e87d3385680eaf830cd60d20d52f249faabf39", + "sha256:a82bb225a4e9e4d653dd2fb7b8b2d36e4fb25bc0165422a11e48b88e9e6f78fb", + "sha256:ab97cf74045343f6c60a39913fa59710e4bd26a536ce7ab2397adf8b27e67c39", + "sha256:ac0549373982b36d5fd5d30beb8a7a33ee541ff98d2b502714a09f1169f31b55", + "sha256:b01548f6e0b9e9784a2c99c5651e5dc89ffcbe870bc5fb2e5ef864e9cc6b5dcb", + "sha256:b299a0cb979f5d7197442dccc3aee67fce53500cd88951b7e6c35575701c980b", + "sha256:b3c374782c2935cc63b2a27ba8708471de4ad1abaa862ffdb1ef45a643ddbb7d", + "sha256:b49e7ed51876b459bd645d83db257f0180e345d3f768a35a85437a24d5a49082", + "sha256:b96dc7eef78fd404e022e165ec55327f935b9b52ff355b067eb4a0267fc1cffb", + "sha256:c024b1e5696626890038e34f76140ed1daf858e37496d33f2af57f06189e70d7", + "sha256:d198d2d977460358c3b3a4dc844f875d1adb33817f0613f663a656f463764ccc", + "sha256:d6ed6f85fae6cdfdb9ce04c9bf7a08d666cfcfb914e7d006f44f840b46741931", + "sha256:d9125050fcf24554e69c4cacb086b87b3b55dc395a8b3ebe6487b045b2614388", + "sha256:dcd2bdbd444ff340e8d6bdf54d2f206ccddbb3ccfdcd3c25bf4afaa7b8f0cf45", + "sha256:e29f3018580e8412d6aaf5641bb7745d38c85228dacf51a73bd4e26ddf2a6a8e", + "sha256:e8e18ed6995e9e2c0b4ed264d2cf89260ab3ac7e13555b8032b25a74c6d18655" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==3.0.3" + "markers": "python_version >= '3.10'", + "version": "==3.3.0" }, "grpcio": { "hashes": [ - "sha256:0495c86a55a04a874c7627fd33e5beaee771917d92c0e6d9d797628ac40e7655", - "sha256:07269ff4940f6fb6710951116a04cd70284da86d0a4368fd5a3b552744511f5a", - "sha256:0a5c78d5198a1f0aa60006cd6eb1c912b4a1520b6a3968e677dbcba215fabb40", - "sha256:0ba0a173f4feacf90ee618fbc1a27956bfd21260cd31ced9bc707ef551ff7dc7", - "sha256:0cd430b9215a15c10b0e7d78f51e8a39d6cf2ea819fd635a7214fae600b1da27", - "sha256:0de706c0a5bb9d841e353f6343a9defc9fc35ec61d6eb6111802f3aa9fef29e1", - "sha256:17325b0be0c068f35770f944124e8839ea3185d6d54862800fc28cc2ffad205a", - "sha256:2394e3381071045a706ee2eeb6e08962dd87e8999b90ac15c55f56fa5a8c9597", - "sha256:27cc75e22c5dba1fbaf5a66c778e36ca9b8ce850bf58a9db887754593080d839", - "sha256:2b0d02e4b25a5c1f9b6c7745d4fa06efc9fd6a611af0fb38d3ba956786b95199", - "sha256:374d014f29f9dfdb40510b041792e0e2828a1389281eb590df066e1cc2b404e5", - "sha256:3b0f01f6ed9994d7a0b27eeddea43ceac1b7e6f3f9d86aeec0f0064b8cf50fdb", - "sha256:4119fed8abb7ff6c32e3d2255301e59c316c22d31ab812b3fbcbaf3d0d87cc68", - "sha256:412faabcc787bbc826f51be261ae5fa996b21263de5368a55dc2cf824dc5090e", - "sha256:4f1937f47c77392ccd555728f564a49128b6a197a05a5cd527b796d36f3387d0", - "sha256:5413549fdf0b14046c545e19cfc4eb1e37e9e1ebba0ca390a8d4e9963cab44d2", - "sha256:558c386ecb0148f4f99b1a65160f9d4b790ed3163e8610d11db47838d452512d", - "sha256:58ad9ba575b39edef71f4798fdb5c7b6d02ad36d47949cd381d4392a5c9cbcd3", - "sha256:5ea67c72101d687d44d9c56068328da39c9ccba634cabb336075fae2eab0d04b", - "sha256:7385b1cb064734005204bc8994eed7dcb801ed6c2eda283f613ad8c6c75cf873", - "sha256:7c73c42102e4a5ec76608d9b60227d917cea46dff4d11d372f64cbeb56d259d0", - "sha256:8058667a755f97407fca257c844018b80004ae8035565ebc2812cc550110718d", - "sha256:879a61bf52ff8ccacbedf534665bb5478ec8e86ad483e76fe4f729aaef867cab", - "sha256:880bfb43b1bb8905701b926274eafce5c70a105bc6b99e25f62e98ad59cb278e", - "sha256:8d1584a68d5922330025881e63a6c1b54cc8117291d382e4fa69339b6d914c56", - "sha256:95469d1977429f45fe7df441f586521361e235982a0b39e33841549143ae2851", - "sha256:9e654c4b17d07eab259d392e12b149c3a134ec52b11ecdc6a515b39aceeec898", - "sha256:a31d7e3b529c94e930a117b2175b2efd179d96eb3c7a21ccb0289a8ab05b645c", - "sha256:aa47688a65643afd8b166928a1da6247d3f46a2784d301e48ca1cc394d2ffb40", - "sha256:aa573896aeb7d7ce10b1fa425ba263e8dddd83d71530d1322fd3a16f31257b4a", - "sha256:aba19419aef9b254e15011b230a180e26e0f6864c90406fdbc255f01d83bc83c", - "sha256:ac073fe1c4cd856ebcf49e9ed6240f4f84d7a4e6ee95baa5d66ea05d3dd0df7f", - "sha256:b3c76701428d2df01964bc6479422f20e62fcbc0a37d82ebd58050b86926ef8c", - "sha256:b745d2c41b27650095e81dea7091668c040457483c9bdb5d0d9de8f8eb25e59f", - "sha256:bb491125103c800ec209d84c9b51f1c60ea456038e4734688004f377cfacc113", - "sha256:c1af8e15b0f0fe0eac75195992a63df17579553b0c4af9f8362cc7cc99ccddf4", - "sha256:c78b339869f4dbf89881e0b6fbf376313e4f845a42840a7bdf42ee6caed4b11f", - "sha256:cb5277db254ab7586769e490b7b22f4ddab3876c490da0a1a9d7c695ccf0bf77", - "sha256:cbce24409beaee911c574a3d75d12ffb8c3e3dd1b813321b1d7a96bbcac46bf4", - "sha256:cd24d2d9d380fbbee7a5ac86afe9787813f285e684b0271599f95a51bce33528", - "sha256:ce7df14b2dcd1102a2ec32f621cc9fab6695effef516efbc6b063ad749867295", - "sha256:d24035d49e026353eb042bf7b058fb831db3e06d52bee75c5f2f3ab453e71aca", - "sha256:d405b005018fd516c9ac529f4b4122342f60ec1cee181788249372524e6db429", - "sha256:d63764963412e22f0491d0d32833d71087288f4e24cbcddbae82476bfa1d81fd", - "sha256:dbe41ad140df911e796d4463168e33ef80a24f5d21ef4d1e310553fcd2c4a386", - "sha256:dfa089a734f24ee5f6880c83d043e4f46bf812fcea5181dcb3a572db1e79e01c", - "sha256:e27585831aa6b57b9250abaf147003e126cd3a6c6ca0c531a01996f31709bed1", - "sha256:e7831a0fc1beeeb7759f737f5acd9fdcda520e955049512d68fda03d91186eea", - "sha256:ed9718f17fbdb472e33b869c77a16d0b55e166b100ec57b016dc7de9c8d236bf", - "sha256:ef4c14508299b1406c32bdbb9fb7b47612ab979b04cf2b27686ea31882387cff", - "sha256:f19375f0300b96c0117aca118d400e76fede6db6e91f3c34b7b035822e06c35f", - "sha256:f2af68a6f5c8f78d56c145161544ad0febbd7479524a59c16b3e25053f39c87f", - "sha256:f32090238b720eb585248654db8e3afc87b48d26ac423c8dde8334a232ff53c9", - "sha256:fe9dbd916df3b60e865258a8c72ac98f3ac9e2a9542dcb72b7a34d236242a5ce", - "sha256:ff4a8112a79464919bb21c18e956c54add43ec9a4850e3949da54f61c241a4a6" + "sha256:035d90bc79eaa4bed83f524331d55e35820725c9fbb00ffa1904d5550ed7ede3", + "sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280", + "sha256:063065249d9e7e0782d03d2bca50787f53bd0fb89a67de9a7b521c4a01f1989b", + "sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd", + "sha256:08caea849a9d3c71a542827d6df9d5a69067b0a1efbea8a855633ff5d9571465", + "sha256:0aaa82d0813fd4c8e589fac9b65d7dd88702555f702fb10417f96e2a2a6d4c0f", + "sha256:0b7604868b38c1bfd5cf72d768aedd7db41d78cb6a4a18585e33fb0f9f2363fd", + "sha256:0c37db8606c258e2ee0c56b78c62fc9dee0e901b5dbdcf816c2dd4ad652b8b0c", + "sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc", + "sha256:2107b0c024d1b35f4083f11245c0e23846ae64d02f40b2b226684840260ed054", + "sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba", + "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03", + "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2", + "sha256:2e1743fbd7f5fa713a1b0a8ac8ebabf0ec980b5d8809ec358d488e273b9cf02a", + "sha256:32483fe2aab2c3794101c2a159070584e5db11d0aa091b2c0ea9c4fc43d0d749", + "sha256:3bf0f392c0b806905ed174dcd8bdd5e418a40d5567a05615a030a5aeddea692d", + "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb", + "sha256:40ad3afe81676fd9ec6d9d406eda00933f218038433980aa19d401490e46ecde", + "sha256:4215d3a102bd95e2e11b5395c78562967959824156af11fa93d18fdd18050990", + "sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958", + "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468", + "sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc", + "sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09", + "sha256:49ce47231818806067aea3324d4bf13825b658ad662d3b25fada0bdad9b8a6af", + "sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980", + "sha256:522175aba7af9113c48ec10cc471b9b9bd4f6ceb36aeb4544a8e2c80ed9d252d", + "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f", + "sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882", + "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae", + "sha256:65a20de41e85648e00305c1bb09a3598f840422e522277641145a32d42dcefcc", + "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77", + "sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e", + "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73", + "sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8", + "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3", + "sha256:8843114c0cfce61b40ad48df65abcfc00d4dba82eae8718fab5352390848c5da", + "sha256:8cc3309d8e08fd79089e13ed4819d0af72aa935dd8f435a195fd152796752ff2", + "sha256:8ebe63ee5f8fa4296b1b8cfc743f870d10e902ca18afc65c68cf46fd39bb0783", + "sha256:8eddfb4d203a237da6f3cc8a540dad0517d274b5a1e9e636fd8d2c79b5c1d397", + "sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e", + "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42", + "sha256:971fd5a1d6e62e00d945423a567e42eb1fa678ba89072832185ca836a94daaa6", + "sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6", + "sha256:9d9adda641db7207e800a7f089068f6f645959f2df27e870ee81d44701dd9db3", + "sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11", + "sha256:a6ae758eb08088d36812dd5d9af7a9859c05b1e0f714470ea243694b49278e7b", + "sha256:a8c2cf1209497cf659a667d7dea88985e834c24b7c3b605e6254cbb5076d985c", + "sha256:acab0277c40eff7143c2323190ea57b9ee5fd353d8190ee9652369fae735668a", + "sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a", + "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347", + "sha256:d099566accf23d21037f18a2a63d323075bebace807742e4b0ac210971d4dd70", + "sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4", + "sha256:dcfe41187da8992c5f40aa8c5ec086fa3672834d2be57a32384c08d5a05b4c00", + "sha256:e6d1db20594d9daba22f90da738b1a0441a7427552cc6e2e3d1297aeddc00378", + "sha256:ebea5cc3aa8ea72e04df9913492f9a96d9348db876f9dda3ad729cfedf7ac416", + "sha256:ebebf83299b0cb1721a8859ea98f3a77811e35dce7609c5c963b9ad90728f886", + "sha256:f0e34c2079d47ae9f6188211db9e777c619a21d4faba6977774e8fa43b085e48", + "sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8", + "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8", + "sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc", + "sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62" ], - "markers": "python_version >= '3.8'", - "version": "==1.70.0" + "markers": "python_version >= '3.9'", + "version": "==1.76.0" }, "gunicorn": { + "extras": [ + "gevent" + ], "hashes": [ "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec" ], - "index": "pypi", "markers": "python_version >= '3.7'", "version": "==23.0.0" }, @@ -821,19 +891,19 @@ }, "humanize": { "hashes": [ - "sha256:b53caaec8532bcb2fff70c8826f904c35943f8cecaca29d272d9df38092736c0", - "sha256:e66f36020a2d5a974c504bd2555cf770621dbdbb6d82f94a6857c0b1ea2608be" + "sha256:2fa092705ea640d605c435b1ca82b2866a1b601cdf96f076d70b79a855eba90d", + "sha256:d57701248d040ad456092820e6fde56c930f17749956ac47f4f655c0c547bfff" ], - "markers": "python_version >= '3.9'", - "version": "==4.11.0" + "markers": "python_version >= '3.10'", + "version": "==4.14.0" }, "idna": { "hashes": [ - "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", - "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" + "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", + "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902" ], - "markers": "python_version >= '3.6'", - "version": "==3.10" + "markers": "python_version >= '3.8'", + "version": "==3.11" }, "importlib-metadata": { "hashes": [ @@ -861,19 +931,19 @@ }, "jsonschema-specifications": { "hashes": [ - "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", - "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf" + "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", + "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d" ], "markers": "python_version >= '3.9'", - "version": "==2024.10.1" + "version": "==2025.9.1" }, "kombu": { "hashes": [ - "sha256:14212f5ccf022fc0a70453bb025a1dcc32782a588c49ea866884047d66e14763", - "sha256:eef572dd2fd9fc614b37580e3caeafdd5af46c1eff31e7fba89138cdb406f2cf" + "sha256:90f1febb57ad4f53ca327a87598191b2520e0c793c75ea3b88d98e3b111282e4", + "sha256:b69e3f5527ec32fc5196028a36376501682973e9620d6175d1c3d4eaf7e95409" ], - "markers": "python_version >= '3.8'", - "version": "==5.4.2" + "markers": "python_version >= '3.9'", + "version": "==5.6.1" }, "liccheck": { "hashes": [ @@ -919,11 +989,11 @@ }, "mypy-extensions": { "hashes": [ - "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", - "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" + "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", + "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" ], - "markers": "python_version >= '3.5'", - "version": "==1.0.0" + "markers": "python_version >= '3.8'", + "version": "==1.1.0" }, "opentelemetry-api": { "hashes": [ @@ -1072,86 +1142,109 @@ }, "packaging": { "hashes": [ - "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", - "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f" + "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", + "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f" ], "markers": "python_version >= '3.8'", - "version": "==24.2" + "version": "==25.0" }, "pillow": { "hashes": [ - "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c", - "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2", - "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb", - "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d", - "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa", - "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3", - "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1", - "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a", - "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd", - "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8", - "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999", - "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599", - "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936", - "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375", - "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d", - "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b", - "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60", - "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572", - "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3", - "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced", - "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f", - "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b", - "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19", - "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f", - "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d", - "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383", - "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795", - "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355", - "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57", - "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09", - "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b", - "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462", - "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf", - "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f", - "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a", - "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad", - "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9", - "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d", - "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45", - "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994", - "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d", - "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338", - "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463", - "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451", - "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591", - "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c", - "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd", - "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32", - "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9", - "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf", - "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5", - "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828", - "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3", - "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5", - "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2", - "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b", - "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2", - "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475", - "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3", - "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb", - "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef", - "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015", - "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002", - "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170", - "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84", - "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57", - "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f", - "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27", - "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a" + "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643", + "sha256:09f2d0abef9e4e2f349305a4f8cc784a8a6c2f58a8c4892eea13b10a943bd26e", + "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e", + "sha256:0fd00cac9c03256c8b2ff58f162ebcd2587ad3e1f2e397eab718c47e24d231cc", + "sha256:110486b79f2d112cf6add83b28b627e369219388f64ef2f960fef9ebaf54c642", + "sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6", + "sha256:1ac11e8ea4f611c3c0147424eae514028b5e9077dd99ab91e1bd7bc33ff145e1", + "sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b", + "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399", + "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", + "sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad", + "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47", + "sha256:27f95b12453d165099c84f8a8bfdfd46b9e4bda9e0e4b65f0635430027f55739", + "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b", + "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", + "sha256:32ed80ea8a90ee3e6fa08c21e2e091bba6eda8eccc83dbc34c95169507a91f10", + "sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52", + "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d", + "sha256:3adfb466bbc544b926d50fe8f4a4e6abd8c6bffd28a26177594e6e9b2b76572b", + "sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a", + "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9", + "sha256:455247ac8a4cfb7b9bc45b7e432d10421aea9fc2e74d285ba4072688a74c2e9d", + "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098", + "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905", + "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b", + "sha256:5269cc1caeedb67e6f7269a42014f381f45e2e7cd42d834ede3c703a1d915fe3", + "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", + "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", + "sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01", + "sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca", + "sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e", + "sha256:6ace95230bfb7cd79ef66caa064bbe2f2a1e63d93471c3a2e1f1348d9f22d6b7", + "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27", + "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", + "sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e", + "sha256:759de84a33be3b178a64c8ba28ad5c135900359e85fb662bc6e403ad4407791d", + "sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8", + "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a", + "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", + "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3", + "sha256:805ebf596939e48dbb2e4922a1d3852cfc25c38160751ce02da93058b48d252a", + "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", + "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", + "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee", + "sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b", + "sha256:90387104ee8400a7b4598253b4c406f8958f59fcf983a6cea2b50d59f7d63d0b", + "sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a", + "sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7", + "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef", + "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a", + "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", + "sha256:a3475b96f5908b3b16c47533daaa87380c491357d197564e0ba34ae75c0f3257", + "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07", + "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4", + "sha256:aa5129de4e174daccbc59d0a3b6d20eaf24417d59851c07ebb37aeb02947987c", + "sha256:aeaefa96c768fc66818730b952a862235d68825c178f1b3ffd4efd7ad2edcb7c", + "sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4", + "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe", + "sha256:b22bd8c974942477156be55a768f7aa37c46904c175be4e158b6a86e3a6b7ca8", + "sha256:b290fd8aa38422444d4b50d579de197557f182ef1068b75f5aa8558638b8d0a5", + "sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6", + "sha256:b583dc9070312190192631373c6c8ed277254aa6e6084b74bdd0a6d3b221608e", + "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", + "sha256:bc91a56697869546d1b8f0a3ff35224557ae7f881050e99f615e0119bf934b4e", + "sha256:bd87e140e45399c818fac4247880b9ce719e4783d767e030a883a970be632275", + "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3", + "sha256:bdee52571a343d721fb2eb3b090a82d959ff37fc631e3f70422e0c2e029f3e76", + "sha256:bee2a6db3a7242ea309aa7ee8e2780726fed67ff4e5b40169f2c940e7eb09227", + "sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9", + "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5", + "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", + "sha256:c7b2a63fd6d5246349f3d3f37b14430d73ee7e8173154461785e43036ffa96ca", + "sha256:c828a1ae702fc712978bda0320ba1b9893d99be0badf2647f693cc01cf0f04fa", + "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b", + "sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e", + "sha256:cae81479f77420d217def5f54b5b9d279804d17e982e0f2fa19b1d1e14ab5197", + "sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab", + "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79", + "sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2", + "sha256:d49e2314c373f4c2b39446fb1a45ed333c850e09d0c59ac79b72eb3b95397363", + "sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0", + "sha256:d64317d2587c70324b79861babb9c09f71fbb780bad212018874b2c013d8600e", + "sha256:d77153e14b709fd8b8af6f66a3afbb9ed6e9fc5ccf0b6b7e1ced7b036a228782", + "sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925", + "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", + "sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b", + "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced", + "sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c", + "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344", + "sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9", + "sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1" ], - "markers": "python_version >= '3.8'", - "version": "==10.3.0" + "index": "pypi", + "markers": "python_version >= '3.10'", + "version": "==12.0.0" }, "pip": { "hashes": [ @@ -1173,27 +1266,27 @@ }, "prettytable": { "hashes": [ - "sha256:30e1a097a7acb075b5c488ffe01195349b37009c2d43ca7fa8b5f6a61daace5b", - "sha256:d4f5817a248b77ddaa25b27007566c0a6a064308d991516b61b436ffdbb4f8e9" + "sha256:59f2590776527f3c9e8cf9fe7b66dd215837cca96a9c39567414cbc632e8ddb0", + "sha256:aad69b294ddbe3e1f95ef8886a060ed1666a0b83018bbf56295f6f226c43d287" ], - "markers": "python_version >= '3.9'", - "version": "==3.13.0" + "markers": "python_version >= '3.10'", + "version": "==3.17.0" }, "prometheus-client": { "hashes": [ - "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", - "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301" + "sha256:6ae8f9081eaaaf153a2e959d2e6c4f4fb57b12ef76c8c7980202f1e57b48b2ce", + "sha256:dd1913e6e76b59cfe44e7a4b83e01afc9873c1bdfd2ed8739f1e76aeca115f99" ], - "markers": "python_version >= '3.8'", - "version": "==0.21.1" + "markers": "python_version >= '3.9'", + "version": "==0.23.1" }, "prompt-toolkit": { "hashes": [ - "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab", - "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198" + "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", + "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955" ], - "markers": "python_full_version >= '3.8.0'", - "version": "==3.0.50" + "markers": "python_version >= '3.8'", + "version": "==3.0.52" }, "protobuf": { "hashes": [ @@ -1230,95 +1323,88 @@ "pool" ], "hashes": [ - "sha256:644d3973fe26908c73d4be746074f6e5224b03c1101d302d9a53bf565ad64907", - "sha256:a5764f67c27bec8bfac85764d23c534af2c27b893550377e37ce59c12aac47a2" + "sha256:3e94bc5f4690247d734599af56e51bae8e0db8e4311ea413f801fef82b14a99b", + "sha256:707a67975ee214d200511177a6a80e56e654754c9afca06a7194ea6bbfde9ca7" ], - "markers": "python_version >= '3.8'", - "version": "==3.2.3" + "markers": "python_version >= '3.10'", + "version": "==3.3.2" }, "psycopg-binary": { "hashes": [ - "sha256:0463a11b1cace5a6aeffaf167920707b912b8986a9c7920341c75e3686277920", - "sha256:05a1bdce30356e70a05428928717765f4a9229999421013f41338d9680d03a63", - "sha256:06b5cc915e57621eebf2393f4173793ed7e3387295f07fed93ed3fb6a6ccf585", - "sha256:07d019a786eb020c0f984691aa1b994cb79430061065a694cf6f94056c603d26", - "sha256:09baa041856b35598d335b1a74e19a49da8500acedf78164600694c0ba8ce21b", - "sha256:1303bf8347d6be7ad26d1362af2c38b3a90b8293e8d56244296488ee8591058e", - "sha256:192a5f8496e6e1243fdd9ac20e117e667c0712f148c5f9343483b84435854c78", - "sha256:1985ab05e9abebfbdf3163a16ebb37fbc5d49aff2bf5b3d7375ff0920bbb54cd", - "sha256:1f8b0d0e99d8e19923e6e07379fa00570be5182c201a8c0b5aaa9a4d4a4ea20b", - "sha256:257c4aea6f70a9aef39b2a77d0658a41bf05c243e2bf41895eb02220ac6306f3", - "sha256:261f0031ee6074765096a19b27ed0f75498a8338c3dcd7f4f0d831e38adf12d1", - "sha256:2773f850a778575dd7158a6dd072f7925b67f3ba305e2003538e8831fec77a1d", - "sha256:2a29f5294b0b6360bfda69653697eff70aaf2908f58d1073b0acd6f6ab5b5a4f", - "sha256:2bb342a01c76f38a12432848e6013c57eb630103e7556cf79b705b53814c3949", - "sha256:2c0419cdad8c70eaeb3116bb28e7b42d546f91baf5179d7556f230d40942dc78", - "sha256:3bffb61e198a91f712cc3d7f2d176a697cb05b284b2ad150fb8edb308eba9002", - "sha256:41fdec0182efac66b27478ac15ef54c9ebcecf0e26ed467eb7d6f262a913318b", - "sha256:48f8ca6ee8939bab760225b2ab82934d54330eec10afe4394a92d3f2a0c37dd6", - "sha256:4926ea5c46da30bec4a85907aa3f7e4ea6313145b2aa9469fdb861798daf1502", - "sha256:4c57615791a337378fe5381143259a6c432cdcbb1d3e6428bfb7ce59fff3fb5c", - "sha256:4e76ce2475ed4885fe13b8254058be710ec0de74ebd8ef8224cf44a9a3358e5f", - "sha256:5361ea13c241d4f0ec3f95e0bf976c15e2e451e9cc7ef2e5ccfc9d170b197a40", - "sha256:5905729668ef1418bd36fbe876322dcb0f90b46811bba96d505af89e6fbdce2f", - "sha256:5938b257b04c851c2d1e6cb2f8c18318f06017f35be9a5fe761ee1e2e344dfb7", - "sha256:5e37d5027e297a627da3551a1e962316d0f88ee4ada74c768f6c9234e26346d9", - "sha256:64a607e630d9f4b2797f641884e52b9f8e239d35943f51bef817a384ec1678fe", - "sha256:64dc6e9ec64f592f19dc01a784e87267a64a743d34f68488924251253da3c818", - "sha256:69320f05de8cdf4077ecd7fefdec223890eea232af0d58f2530cbda2871244a0", - "sha256:6d8f2144e0d5808c2e2aed40fbebe13869cd00c2ae745aca4b3b16a435edb056", - "sha256:700679c02f9348a0d0a2adcd33a0275717cd0d0aee9d4482b47d935023629505", - "sha256:709447bd7203b0b2debab1acec23123eb80b386f6c29e7604a5d4326a11e5bd6", - "sha256:71adcc8bc80a65b776510bc39992edf942ace35b153ed7a9c6c573a6849ce308", - "sha256:71db8896b942770ed7ab4efa59b22eee5203be2dfdee3c5258d60e57605d688c", - "sha256:74fbf5dd3ef09beafd3557631e282f00f8af4e7a78fbfce8ab06d9cd5a789aae", - "sha256:79498df398970abcee3d326edd1d4655de7d77aa9aecd578154f8af35ce7bbd2", - "sha256:7ad357e426b0ea5c3043b8ec905546fa44b734bf11d33b3da3959f6e4447d350", - "sha256:7d784f614e4d53050cbe8abf2ae9d1aaacf8ed31ce57b42ce3bf2a48a66c3a5c", - "sha256:80a2337e2dfb26950894c8301358961430a0304f7bfe729d34cc036474e9c9b1", - "sha256:824c867a38521d61d62b60aca7db7ca013a2b479e428a0db47d25d8ca5067410", - "sha256:842da42a63ecb32612bb7f5b9e9f8617eab9bc23bd58679a441f4150fcc51c96", - "sha256:8b7be9a6c06518967b641fb15032b1ed682fd3b0443f64078899c61034a0bca6", - "sha256:9099e443d4cc24ac6872e6a05f93205ba1a231b1a8917317b07c9ef2b955f1f4", - "sha256:94253be2b57ef2fea7ffe08996067aabf56a1eb9648342c9e3bad9e10c46e045", - "sha256:949551752930d5e478817e0b49956350d866b26578ced0042a61967e3fcccdea", - "sha256:96334bb64d054e36fed346c50c4190bad9d7c586376204f50bede21a913bf942", - "sha256:965455eac8547f32b3181d5ec9ad8b9be500c10fe06193543efaaebe3e4ce70c", - "sha256:967b47a0fd237aa17c2748fdb7425015c394a6fb57cdad1562e46a6eb070f96d", - "sha256:9994f7db390c17fc2bd4c09dca722fd792ff8a49bb3bdace0c50a83f22f1767d", - "sha256:9b60b465773a52c7d4705b0a751f7f1cdccf81dd12aee3b921b31a6e76b07b0e", - "sha256:aeddf7b3b3f6e24ccf7d0edfe2d94094ea76b40e831c16eff5230e040ce3b76b", - "sha256:c64c4cd0d50d5b2288ab1bcb26c7126c772bbdebdfadcd77225a77df01c4a57e", - "sha256:cb987f14af7da7c24f803111dbc7392f5070fd350146af3345103f76ea82e339", - "sha256:dc4fa2240c9fceddaa815a58f29212826fafe43ce80ff666d38c4a03fb036955", - "sha256:e56b1fd529e5dde2d1452a7d72907b37ed1b4f07fdced5d8fb1e963acfff6749", - "sha256:e8630943143c6d6ca9aefc88bbe5e76c90553f4e1a3b2dc339e67dc34aa86f7e", - "sha256:e8eb9a4e394926b93ad919cad1b0a918e9b4c846609e8c1cfb6b743683f64da0", - "sha256:e90352d7b610b4693fad0feea48549d4315d10f1eba5605421c92bb834e90170", - "sha256:f0b018e37608c3bfc6039a1dc4eb461e89334465a19916be0153c757a78ea426", - "sha256:f73adc05452fb85e7a12ed3f69c81540a8875960739082e6ea5e28c373a30774", - "sha256:fa33ead69ed133210d96af0c63448b1385df48b9c0247eda735c5896b9e6dbbf", - "sha256:fc6d87a1c44df8d493ef44988a3ded751e284e02cdf785f746c2d357e99782a6", - "sha256:fd40af959173ea0d087b6b232b855cfeaa6738f47cb2a0fd10a7f4fa8b74293f", - "sha256:fd65774ed7d65101b314808b6893e1a75b7664f680c3ef18d2e5c84d570fa393", - "sha256:fda0162b0dbfa5eaed6cdc708179fa27e148cb8490c7d62e5cf30713909658ea" + "sha256:03b7cd73fb8c45d272a34ae7249713e32492891492681e3cf11dff9531cf37e9", + "sha256:04bb2de4ba69d6f8395b446ede795e8884c040ec71d01dd07ac2b2d18d4153d1", + "sha256:0611f4822674f3269e507a307236efb62ae5a828fcfc923ac85fe22ca19fd7c8", + "sha256:0768c5f32934bb52a5df098317eca9bdcf411de627c5dca2ee57662b64b54b41", + "sha256:07a5f030e0902ec3e27d0506ceb01238c0aecbc73ecd7fa0ee55f86134600b5b", + "sha256:083c2e182be433f290dc2c516fd72b9b47054fcd305cce791e0a50d9e93e06f2", + "sha256:09b3014013f05cd89828640d3a1db5f829cc24ad8fa81b6e42b2c04685a0c9d4", + "sha256:0ae60e910531cfcc364a8f615a7941cac89efeb3f0fffe0c4824a6d11461eef7", + "sha256:136c43f185244893a527540307167f5d3ef4e08786508afe45d6f146228f5aa9", + "sha256:1586e220be05547c77afc326741dd41cc7fba38a81f9931f616ae98865439678", + "sha256:1e09d0d93d35c134704a2cb2b15f81ffc8174fd602f3e08f7b1a3d8896156cf0", + "sha256:1ea41c0229f3f5a3844ad0857a83a9f869aa7b840448fa0c200e6bcf85d33d19", + "sha256:23d2594af848c1fd3d874a9364bef50730124e72df7bb145a20cb45e728c50ed", + "sha256:3789d452a9d17a841c7f4f97bbcba51a21f957ea35641a4c98507520e6b6a068", + "sha256:3ff7489df5e06c12d1829544eaec64970fe27fe300f7cf04c8495fe682064688", + "sha256:43b130e3b6edcb5ee856c7167ccb8561b473308c870ed83978ae478613764f1c", + "sha256:44e89938d36acc4495735af70a886d206a5bfdc80258f95b69b52f68b2968d9e", + "sha256:458696a5fa5dad5b6fb5d5862c22454434ce4fe1cf66ca6c0de5f904cbc1ae3e", + "sha256:50ff10ab8c0abdb5a5451b9315538865b50ba64c907742a1385fdf5f5772b73e", + "sha256:522b79c7db547767ca923e441c19b97a2157f2f494272a119c854bba4804e186", + "sha256:59d0163c4617a2c577cb34afbed93d7a45b8c8364e54b2bd2020ff25d5f5f860", + "sha256:5a327327f1188b3fbecac41bf1973a60b86b2eb237db10dc945bd3dc97ec39e4", + "sha256:649c1d33bedda431e0c1df646985fbbeb9274afa964e1aef4be053c0f23a2924", + "sha256:716a586f99bbe4f710dc58b40069fcb33c7627e95cc6fc936f73c9235e07f9cf", + "sha256:742ce48cde825b8e52fb1a658253d6d1ff66d152081cbc76aa45e2986534858d", + "sha256:74bc306c4b4df35b09bc8cecf806b271e1c5d708f7900145e4e54a2e5dedfed0", + "sha256:7c1feba5a8c617922321aef945865334e468337b8fc5c73074f5e63143013b5a", + "sha256:7c43a773dd1a481dbb2fe64576aa303d80f328cce0eae5e3e4894947c41d1da7", + "sha256:8309ee4569dced5e81df5aa2dcd48c7340c8dee603a66430f042dfbd2878edca", + "sha256:8db9034cde3bcdafc66980f0130813f5c5d19e74b3f2a19fb3cfbc25ad113121", + "sha256:8ea05b499278790a8fa0ff9854ab0de2542aca02d661ddff94e830df971ff640", + "sha256:90ed9da805e52985b0202aed4f352842c907c6b4fc6c7c109c6e646c32e2f43b", + "sha256:94503b79f7da0b65c80d0dbb2f81dd78b300319ec2435d5e6dcf9622160bc2fa", + "sha256:9742580ecc8e1ac45164e98d32ca6df90da509c2d3ff26be245d94c430f92db4", + "sha256:9ca24062cd9b2270e4d77576042e9cc2b1d543f09da5aba1f1a3d016cea28390", + "sha256:a9387ab615f929e71ef0f4a8a51e986fa06236ccfa9f3ec98a88f60fbf230634", + "sha256:ac230e3643d1c436a2dfb59ca84357dfc6862c9f372fc5dbd96bafecae581f9f", + "sha256:c3a9ccdfee4ae59cf9bf1822777e763bc097ed208f4901e21537fca1070e1391", + "sha256:c5774272f754605059521ff037a86e680342e3847498b0aa86b0f3560c70963c", + "sha256:c6464150e25b68ae3cb04c4e57496ea11ebfaae4d98126aea2f4702dd43e3c12", + "sha256:c749770da0947bc972e512f35366dd4950c0e34afad89e60b9787a37e97cb443", + "sha256:cabb2a554d9a0a6bf84037d86ca91782f087dfff2a61298d0b00c19c0bc43f6d", + "sha256:d391b70c9cc23f6e1142729772a011f364199d2c5ddc0d596f5f43316fbf982d", + "sha256:d45acedcaa58619355f18e0f42af542fcad3fd84ace4b8355d3a5dea23318578", + "sha256:d79b0093f0fbf7a962d6a46ae292dc056c65d16a8ee9361f3cfbafd4c197ab14", + "sha256:d88f32ff8c47cb7f4e7e7a9d1747dcee6f3baa19ed9afa9e5694fd2fb32b61ed", + "sha256:d8c899a540f6c7585cee53cddc929dd4d2db90fd828e37f5d4017b63acbc1a5d", + "sha256:de9173f8cc0efd88ac2a89b3b6c287a9a0011cdc2f53b2a12c28d6fd55f9f81c", + "sha256:df65174c7cf6b05ea273ce955927d3270b3a6e27b0b12762b009ce6082b8d3fc", + "sha256:e22bf6b54df994aff37ab52695d635f1ef73155e781eee1f5fa75bc08b58c8da", + "sha256:e750afe74e6c17b2c7046d2c3e3173b5a3f6080084671c8aa327215323df155b", + "sha256:ea4fe6b4ead3bbbe27244ea224fcd1f53cb119afc38b71a2f3ce570149a03e30", + "sha256:f26f113013c4dcfbfe9ced57b5bad2035dda1a7349f64bf726021968f9bccad3", + "sha256:f3f601f32244a677c7b029ec39412db2772ad04a28bc2cbb4b1f0931ed0ffad7", + "sha256:fc5a189e89cbfff174588665bb18d28d2d0428366cc9dae5864afcaa2e57380b" ], - "version": "==3.2.3" + "markers": "python_version >= '3.10'", + "version": "==3.3.2" }, "psycopg-pool": { "hashes": [ - "sha256:61774b5bbf23e8d22bedc7504707135aaf744679f8ef9b3fe29942920746a6ed", - "sha256:f6a22cff0f21f06d72fb2f5cb48c618946777c49385358e0c88d062c59cbd224" + "sha256:2e44329155c410b5e8666372db44276a8b1ebd8c90f1c3026ebba40d4bc81063", + "sha256:fa115eb2860bd88fce1717d75611f41490dec6135efb619611142b24da3f6db5" ], - "version": "==3.2.4" + "markers": "python_version >= '3.10'", + "version": "==3.3.0" }, "pycparser": { "hashes": [ - "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", - "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc" + "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", + "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934" ], "markers": "python_version >= '3.8'", - "version": "==2.22" + "version": "==2.23" }, "pyjwt": { "hashes": [ @@ -1333,16 +1419,16 @@ "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==2.9.0.post0" }, "pytz": { "hashes": [ - "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812", - "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319" + "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", + "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00" ], "index": "pypi", - "version": "==2024.1" + "version": "==2025.2" }, "redis": { "hashes": [ @@ -1355,129 +1441,141 @@ }, "referencing": { "hashes": [ - "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", - "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0" + "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231", + "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8" ], - "markers": "python_version >= '3.9'", - "version": "==0.36.2" + "markers": "python_version >= '3.10'", + "version": "==0.37.0" }, "requests": { "hashes": [ - "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289", - "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c" + "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", + "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==2.32.2" + "markers": "python_version >= '3.9'", + "version": "==2.32.5" }, "rpds-py": { "hashes": [ - "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", - "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", - "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", - "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", - "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", - "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543", - "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", - "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", - "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", - "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", - "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", - "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", - "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", - "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", - "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99", - "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", - "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", - "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", - "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", - "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", - "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f", - "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3", - "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca", - "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d", - "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e", - "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", - "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea", - "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", - "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", - "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", - "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", - "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723", - "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e", - "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", - "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6", - "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", - "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091", - "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", - "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", - "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", - "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728", - "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", - "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", - "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", - "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7", - "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", - "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", - "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", - "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", - "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", - "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055", - "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d", - "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", - "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", - "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", - "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", - "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", - "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", - "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", - "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", - "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11", - "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", - "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", - "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", - "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b", - "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", - "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c", - "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9", - "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", - "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", - "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", - "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", - "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", - "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c", - "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", - "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", - "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", - "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", - "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", - "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", - "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", - "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", - "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", - "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", - "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", - "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", - "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", - "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3", - "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", - "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520", - "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831", - "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", - "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", - "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", - "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", - "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", - "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", - "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", - "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", - "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", - "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d", - "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", - "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e" + "sha256:07ae8a593e1c3c6b82ca3292efbe73c30b61332fd612e05abee07c79359f292f", + "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", + "sha256:0c0e95f6819a19965ff420f65578bacb0b00f251fefe2c8b23347c37174271f3", + "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", + "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", + "sha256:12f90dd7557b6bd57f40abe7747e81e0c0b119bef015ea7726e69fe550e394a4", + "sha256:1726859cd0de969f88dc8673bdd954185b9104e05806be64bcd87badbe313169", + "sha256:1ab5b83dbcf55acc8b08fc62b796ef672c457b17dbd7820a11d6c52c06839bdf", + "sha256:1b151685b23929ab7beec71080a8889d4d6d9fa9a983d213f07121205d48e2c4", + "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", + "sha256:250fa00e9543ac9b97ac258bd37367ff5256666122c2d0f2bc97577c60a1818c", + "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", + "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", + "sha256:2e6ecb5a5bcacf59c3f912155044479af1d0b6681280048b338b28e364aca1f6", + "sha256:32c8528634e1bf7121f3de08fa85b138f4e0dc47657866630611b03967f041d7", + "sha256:33f559f3104504506a44bb666b93a33f5d33133765b0c216a5bf2f1e1503af89", + "sha256:3896fa1be39912cf0757753826bc8bdc8ca331a28a7c4ae46b7a21280b06bb85", + "sha256:389a2d49eded1896c3d48b0136ead37c48e221b391c052fba3f4055c367f60a6", + "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", + "sha256:3adbb8179ce342d235c31ab8ec511e66c73faa27a47e076ccc92421add53e2bb", + "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", + "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", + "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", + "sha256:422c3cb9856d80b09d30d2eb255d0754b23e090034e1deb4083f8004bd0761e4", + "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", + "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", + "sha256:47b0ef6231c58f506ef0b74d44e330405caa8428e770fec25329ed2cb971a229", + "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", + "sha256:47f236970bccb2233267d89173d3ad2703cd36a0e2a6e92d0560d333871a3d23", + "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", + "sha256:495aeca4b93d465efde585977365187149e75383ad2684f81519f504f5c13038", + "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", + "sha256:4cc2206b76b4f576934f0ed374b10d7ca5f457858b157ca52064bdfc26b9fc00", + "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", + "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", + "sha256:55f66022632205940f1827effeff17c4fa7ae1953d2b74a8581baaefb7d16f8c", + "sha256:58edca431fb9b29950807e301826586e5bbf24163677732429770a697ffe6738", + "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", + "sha256:5ba103fb455be00f3b1c2076c9d4264bfcb037c976167a6047ed82f23153f02e", + "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", + "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", + "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", + "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", + "sha256:669b1805bd639dd2989b281be2cfd951c6121b65e729d9b843e9639ef1fd555e", + "sha256:679ae98e00c0e8d68a7fda324e16b90fd5260945b45d3b824c892cec9eea3288", + "sha256:67b02ec25ba7a9e8fa74c63b6ca44cf5707f2fbfadae3ee8e7494297d56aa9df", + "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", + "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", + "sha256:6abc8880d9d036ecaafe709079969f56e876fcf107f7a8e9920ba6d5a3878d05", + "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", + "sha256:6de2a32a1665b93233cde140ff8b3467bdb9e2af2b91079f0333a0974d12d464", + "sha256:73c67f2db7bc334e518d097c6d1e6fed021bbc9b7d678d6cc433478365d1d5f5", + "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", + "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", + "sha256:7c64d38fb49b6cdeda16ab49e35fe0da2e1e9b34bc38bd78386530f218b37139", + "sha256:7cee9c752c0364588353e627da8a7e808a66873672bcb5f52890c33fd965b394", + "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", + "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", + "sha256:858738e9c32147f78b3ac24dc0edb6610000e56dc0f700fd5f651d0a0f0eb9ff", + "sha256:8d6d1cc13664ec13c1b84241204ff3b12f9bb82464b8ad6e7a5d3486975c2eed", + "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", + "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", + "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", + "sha256:946fe926af6e44f3697abbc305ea168c2c31d3e3ef1058cf68f379bf0335a78d", + "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", + "sha256:9854cf4f488b3d57b9aaeb105f06d78e5529d3145b1e4a41750167e8c213c6d3", + "sha256:993914b8e560023bc0a8bf742c5f303551992dcb85e247b1e5c7f4a7d145bda5", + "sha256:99b47d6ad9a6da00bec6aabe5a6279ecd3c06a329d4aa4771034a21e335c3a97", + "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", + "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", + "sha256:a090322ca841abd453d43456ac34db46e8b05fd9b3b4ac0c78bcde8b089f959b", + "sha256:a1010ed9524c73b94d15919ca4d41d8780980e1765babf85f9a2f90d247153dd", + "sha256:a161f20d9a43006833cd7068375a94d035714d73a172b681d8881820600abfad", + "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", + "sha256:a2bffea6a4ca9f01b3f8e548302470306689684e61602aa3d141e34da06cf425", + "sha256:a452763cc5198f2f98898eb98f7569649fe5da666c2dc6b5ddb10fde5a574221", + "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", + "sha256:a51033ff701fca756439d641c0ad09a41d9242fa69121c7d8769604a0a629825", + "sha256:a8fa71a2e078c527c3e9dc9fc5a98c9db40bcc8a92b4e8858e36d329f8684b51", + "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", + "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", + "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", + "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", + "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", + "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", + "sha256:ba3af48635eb83d03f6c9735dfb21785303e73d22ad03d489e88adae6eab8877", + "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", + "sha256:c2262bdba0ad4fc6fb5545660673925c2d2a5d9e2e0fb603aad545427be0fc58", + "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", + "sha256:ca28829ae5f5d569bb62a79512c842a03a12576375d5ece7d2cadf8abe96ec28", + "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", + "sha256:d948b135c4693daff7bc2dcfc4ec57237a29bd37e60c2fabf5aff2bbacf3e2f1", + "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", + "sha256:d9a0ca5da0386dee0655b4ccdf46119df60e0f10da268d04fe7cc87886872ba7", + "sha256:da279aa314f00acbb803da1e76fa18666778e8a8f83484fba94526da5de2cba7", + "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", + "sha256:dc4f992dfe1e2bc3ebc7444f6c7051b4bc13cd8e33e43511e8ffd13bf407010d", + "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", + "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", + "sha256:dea5b552272a944763b34394d04577cf0f9bd013207bc32323b5a89a53cf9c2f", + "sha256:dff13836529b921e22f15cb099751209a60009731a68519630a24d61f0b1b30a", + "sha256:e0b65193a413ccc930671c55153a03ee57cecb49e6227204b04fae512eb657a7", + "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", + "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", + "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", + "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", + "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", + "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", + "sha256:ee6af14263f25eedc3bb918a3c04245106a42dfd4f5c2285ea6f997b1fc3f89a", + "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", + "sha256:f207f69853edd6f6700b86efb84999651baf3789e78a466431df1331608e5324", + "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", + "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", + "sha256:f8d1736cfb49381ba528cd5baa46f82fdc65c06e843dab24dd70b63d09121b3f", + "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5" ], - "markers": "python_version >= '3.9'", - "version": "==0.22.3" + "markers": "python_version >= '3.10'", + "version": "==0.30.0" }, "s3transfer": { "hashes": [ @@ -1518,7 +1616,7 @@ "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.17.0" }, "sqlalchemy": { @@ -1570,6 +1668,7 @@ "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3", "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade" ], + "index": "pypi", "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==1.4.51" }, @@ -1593,55 +1692,65 @@ }, "thrift": { "hashes": [ - "sha256:5e6f7c50f936ebfa23e924229afc95eb219f8c8e5a83202dd4a391244803e402" + "sha256:42e8276afbd5f54fe1d364858b6877bc5e5a4a5ed69f6a005b94ca4918fe1466" ], - "version": "==0.21.0" + "version": "==0.22.0" }, "toml": { "hashes": [ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", "version": "==0.10.2" }, "tomli": { "hashes": [ - "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", - "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", - "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", - "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", - "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", - "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", - "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", - "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", - "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", - "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", - "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", - "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", - "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", - "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", - "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", - "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", - "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", - "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", - "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", - "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", - "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", - "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", - "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", - "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", - "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", - "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", - "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", - "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", - "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", - "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", - "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", - "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7" + "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", + "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", + "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", + "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", + "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", + "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", + "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", + "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", + "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", + "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", + "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", + "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", + "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", + "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", + "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", + "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", + "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", + "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", + "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", + "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", + "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", + "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", + "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", + "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", + "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", + "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", + "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", + "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", + "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", + "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", + "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", + "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", + "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", + "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", + "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", + "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", + "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", + "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", + "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", + "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", + "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", + "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876" ], "markers": "python_version >= '3.8'", - "version": "==2.2.1" + "version": "==2.3.0" }, "tornado": { "hashes": [ @@ -1663,51 +1772,51 @@ }, "types-pytz": { "hashes": [ - "sha256:06d7cde9613e9f7504766a0554a270c369434b50e00975b3a4a0f6eed0f2c1a9", - "sha256:8fc03195329c43637ed4f593663df721fef919b60a969066e22606edf0b53ad5" + "sha256:0f1c9792cab4eb0e46c52f8845c8f77cf1e313cb3d68bf826aa867fe4717d91c", + "sha256:fca87917836ae843f07129567b74c1929f1870610681b4c92cb86a3df5817bdb" ], - "markers": "python_version >= '3.8'", - "version": "==2024.2.0.20241221" + "markers": "python_version >= '3.9'", + "version": "==2025.2.0.20251108" }, "types-pyyaml": { "hashes": [ - "sha256:7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c", - "sha256:fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6" + "sha256:0f8b54a528c303f0e6f7165687dd33fafa81c807fcac23f632b63aa624ced1d3", + "sha256:e7d4d9e064e89a3b3cae120b4990cd370874d2bf12fa5f46c97018dd5d3c9ab6" ], - "markers": "python_version >= '3.8'", - "version": "==6.0.12.20241230" + "markers": "python_version >= '3.9'", + "version": "==6.0.12.20250915" }, "types-requests": { "hashes": [ - "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95", - "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747" + "sha256:78c9c1fffebbe0fa487a418e0fa5252017e9c60d1a2da394077f1780f655d7e1", + "sha256:abd6d4f9ce3a9383f269775a9835a4c24e5cd6b9f647d64f88aa4613c33def5d" ], - "markers": "python_version >= '3.8'", - "version": "==2.32.0.20241016" + "markers": "python_version >= '3.9'", + "version": "==2.32.4.20250913" }, "typing-extensions": { "hashes": [ - "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", - "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8" + "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", + "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" ], - "markers": "python_version >= '3.8'", - "version": "==4.12.2" + "markers": "python_version >= '3.9'", + "version": "==4.15.0" }, "tzdata": { "hashes": [ - "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", - "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639" + "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", + "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7" ], "markers": "python_version >= '2'", - "version": "==2025.1" + "version": "==2025.3" }, "urllib3": { "hashes": [ - "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", - "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d" + "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", + "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd" ], "markers": "python_version >= '3.9'", - "version": "==2.3.0" + "version": "==2.6.2" }, "vine": { "hashes": [ @@ -1719,10 +1828,11 @@ }, "wcwidth": { "hashes": [ - "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", - "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5" + "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", + "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1" ], - "version": "==0.2.13" + "markers": "python_version >= '3.6'", + "version": "==0.2.14" }, "wheel": { "hashes": [ @@ -1735,103 +1845,104 @@ }, "wrapt": { "hashes": [ - "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f", - "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", - "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", - "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", - "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", - "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", - "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", - "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", - "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8", - "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", - "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061", - "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", - "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb", - "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", - "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", - "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", - "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", - "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", - "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7", - "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", - "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", - "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", - "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", - "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", - "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", - "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", - "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", - "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a", - "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", - "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", - "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9", - "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", - "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82", - "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9", - "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", - "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", - "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", - "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", - "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", - "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", - "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", - "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", - "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", - "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a", - "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3", - "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a", - "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", - "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", - "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", - "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", - "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", - "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", - "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", - "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", - "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", - "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", - "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2", - "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", - "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", - "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", - "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f", - "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9", - "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04", - "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", - "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9", - "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f", - "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", - "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", - "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", - "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", - "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", - "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", - "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", - "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6", - "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", - "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb", - "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119", - "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b", - "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58" + "sha256:02b551d101f31694fc785e58e0720ef7d9a10c4e62c1c9358ce6f63f23e30a56", + "sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828", + "sha256:0610b46293c59a3adbae3dee552b648b984176f8562ee0dba099a56cfbe4df1f", + "sha256:0b02e424deef65c9f7326d8c19220a2c9040c51dc165cddb732f16198c168396", + "sha256:0b1831115c97f0663cb77aa27d381237e73ad4f721391a9bfb2fe8bc25fa6e77", + "sha256:0ed61b7c2d49cee3c027372df5809a59d60cf1b6c2f81ee980a091f3afed6a2d", + "sha256:0f5f51a6466667a5a356e6381d362d259125b57f059103dd9fdc8c0cf1d14139", + "sha256:16ecf15d6af39246fe33e507105d67e4b81d8f8d2c6598ff7e3ca1b8a37213f7", + "sha256:1f0b2f40cf341ee8cc1a97d51ff50dddb9fcc73241b9143ec74b30fc4f44f6cb", + "sha256:1f23fa283f51c890eda8e34e4937079114c74b4c81d2b2f1f1d94948f5cc3d7f", + "sha256:223db574bb38637e8230eb14b185565023ab624474df94d2af18f1cdb625216f", + "sha256:249f88ed15503f6492a71f01442abddd73856a0032ae860de6d75ca62eed8067", + "sha256:24c2ed34dc222ed754247a2702b1e1e89fdbaa4016f324b4b8f1a802d4ffe87f", + "sha256:273a736c4645e63ac582c60a56b0acb529ef07f78e08dc6bfadf6a46b19c0da7", + "sha256:281262213373b6d5e4bb4353bc36d1ba4084e6d6b5d242863721ef2bf2c2930b", + "sha256:30ce38e66630599e1193798285706903110d4f057aab3168a34b7fdc85569afc", + "sha256:33486899acd2d7d3066156b03465b949da3fd41a5da6e394ec49d271baefcf05", + "sha256:343e44b2a8e60e06a7e0d29c1671a0d9951f59174f3709962b5143f60a2a98bd", + "sha256:373342dd05b1d07d752cecbec0c41817231f29f3a89aa8b8843f7b95992ed0c7", + "sha256:3af60380ba0b7b5aeb329bc4e402acd25bd877e98b3727b0135cb5c2efdaefe9", + "sha256:3e62d15d3cfa26e3d0788094de7b64efa75f3a53875cdbccdf78547aed547a81", + "sha256:41b1d2bc74c2cac6f9074df52b2efbef2b30bdfe5f40cb78f8ca22963bc62977", + "sha256:423ed5420ad5f5529db9ce89eac09c8a2f97da18eb1c870237e84c5a5c2d60aa", + "sha256:46acc57b331e0b3bcb3e1ca3b421d65637915cfcd65eb783cb2f78a511193f9b", + "sha256:4da9f45279fff3543c371d5ababc57a0384f70be244de7759c85a7f989cb4ebe", + "sha256:507553480670cab08a800b9463bdb881b2edeed77dc677b0a5915e6106e91a58", + "sha256:53e5e39ff71b3fc484df8a522c933ea2b7cdd0d5d15ae82e5b23fde87d44cbd8", + "sha256:54a30837587c6ee3cd1a4d1c2ec5d24e77984d44e2f34547e2323ddb4e22eb77", + "sha256:5531d911795e3f935a9c23eb1c8c03c211661a5060aab167065896bbf62a5f85", + "sha256:55cbbc356c2842f39bcc553cf695932e8b30e30e797f961860afb308e6b1bb7c", + "sha256:59923aa12d0157f6b82d686c3fd8e1166fa8cdfb3e17b42ce3b6147ff81528df", + "sha256:5a03a38adec8066d5a37bea22f2ba6bbf39fcdefbe2d91419ab864c3fb515454", + "sha256:5a7b3c1ee8265eb4c8f1b7d29943f195c00673f5ab60c192eba2d4a7eae5f46a", + "sha256:5d4478d72eb61c36e5b446e375bbc49ed002430d17cdec3cecb36993398e1a9e", + "sha256:5ea5eb3c0c071862997d6f3e02af1d055f381b1d25b286b9d6644b79db77657c", + "sha256:604d076c55e2fdd4c1c03d06dc1a31b95130010517b5019db15365ec4a405fc6", + "sha256:656873859b3b50eeebe6db8b1455e99d90c26ab058db8e427046dbc35c3140a5", + "sha256:65d1d00fbfb3ea5f20add88bbc0f815150dbbde3b026e6c24759466c8b5a9ef9", + "sha256:6b538e31eca1a7ea4605e44f81a48aa24c4632a277431a6ed3f328835901f4fd", + "sha256:6fd1ad24dc235e4ab88cda009e19bf347aabb975e44fd5c2fb22a3f6e4141277", + "sha256:70d86fa5197b8947a2fa70260b48e400bf2ccacdcab97bb7de47e3d1e6312225", + "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", + "sha256:73d496de46cd2cdbdbcce4ae4bcdb4afb6a11234a1df9c085249d55166b95116", + "sha256:7425ac3c54430f5fc5e7b6f41d41e704db073309acfc09305816bc6a0b26bb16", + "sha256:74afa28374a3c3a11b3b5e5fca0ae03bef8450d6aa3ab3a1e2c30e3a75d023dc", + "sha256:758895b01d546812d1f42204bd443b8c433c44d090248bf22689df673ccafe00", + "sha256:79573c24a46ce11aab457b472efd8d125e5a51da2d1d24387666cd85f54c05b2", + "sha256:7e18f01b0c3e4a07fe6dfdb00e29049ba17eadbc5e7609a2a3a4af83ab7d710a", + "sha256:88547535b787a6c9ce4086917b6e1d291aa8ed914fdd3a838b3539dc95c12804", + "sha256:88bbae4d40d5a46142e70d58bf664a89b6b4befaea7b2ecc14e03cedb8e06c04", + "sha256:8cccf4f81371f257440c88faed6b74f1053eef90807b77e31ca057b2db74edb1", + "sha256:9baa544e6acc91130e926e8c802a17f3b16fbea0fd441b5a60f5cf2cc5c3deba", + "sha256:a36692b8491d30a8c75f1dfee65bef119d6f39ea84ee04d9f9311f83c5ad9390", + "sha256:a47681378a0439215912ef542c45a783484d4dd82bac412b71e59cf9c0e1cea0", + "sha256:a7c06742645f914f26c7f1fa47b8bc4c91d222f76ee20116c43d5ef0912bba2d", + "sha256:a9a2203361a6e6404f80b99234fe7fb37d1fc73487b5a78dc1aa5b97201e0f22", + "sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0", + "sha256:ad85e269fe54d506b240d2d7b9f5f2057c2aa9a2ea5b32c66f8902f768117ed2", + "sha256:af338aa93554be859173c39c85243970dc6a289fa907402289eeae7543e1ae18", + "sha256:afd964fd43b10c12213574db492cb8f73b2f0826c8df07a68288f8f19af2ebe6", + "sha256:b32888aad8b6e68f83a8fdccbf3165f5469702a7544472bdf41f582970ed3311", + "sha256:c31eebe420a9a5d2887b13000b043ff6ca27c452a9a22fa71f35f118e8d4bf89", + "sha256:caea3e9c79d5f0d2c6d9ab96111601797ea5da8e6d0723f77eabb0d4068d2b2f", + "sha256:cf30f6e3c077c8e6a9a7809c94551203c8843e74ba0c960f4a98cd80d4665d39", + "sha256:d40770d7c0fd5cbed9d84b2c3f2e156431a12c9a37dc6284060fb4bec0b7ffd4", + "sha256:d8a210b158a34164de8bb68b0e7780041a903d7b00c87e906fb69928bf7890d5", + "sha256:dc4a8d2b25efb6681ecacad42fca8859f88092d8732b170de6a5dddd80a1c8fa", + "sha256:df7d30371a2accfe4013e90445f6388c570f103d61019b6b7c57e0265250072a", + "sha256:e01375f275f010fcbf7f643b4279896d04e571889b8a5b3f848423d91bf07050", + "sha256:e1a4120ae5705f673727d3253de3ed0e016f7cd78dc463db1b31e2463e1f3cf6", + "sha256:e228514a06843cae89621384cfe3a80418f3c04aadf8a3b14e46a7be704e4235", + "sha256:e405adefb53a435f01efa7ccdec012c016b5a1d3f35459990afc39b6be4d5056", + "sha256:e6b13af258d6a9ad602d57d889f83b9d5543acd471eee12eb51f5b01f8eb1bc2", + "sha256:e6f40a8aa5a92f150bdb3e1c44b7e98fb7113955b2e5394122fa5532fec4b418", + "sha256:e71d5c6ebac14875668a1e90baf2ea0ef5b7ac7918355850c0908ae82bcb297c", + "sha256:ed7c635ae45cfbc1a7371f708727bf74690daedc49b4dba310590ca0bd28aa8a", + "sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6", + "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", + "sha256:f9b2601381be482f70e5d1051a5965c25fb3625455a2bf520b5a077b22afb775", + "sha256:fbd3c8319de8e1dc79d346929cd71d523622da527cca14e0c1d257e31c2b8b10", + "sha256:fd341868a4b6714a5962c1af0bd44f7c404ef78720c7de4892901e540417111c" ], "markers": "python_version >= '3.8'", - "version": "==1.17.2" + "version": "==1.17.3" }, "zipp": { "hashes": [ - "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", - "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931" + "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", + "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166" ], "markers": "python_version >= '3.9'", - "version": "==3.21.0" + "version": "==3.23.0" }, "zope.event": { "hashes": [ "sha256:2832e95014f4db26c47a13fdaef84cef2f4df37e66b59d8f1f4a8f319a632c26", "sha256:bac440d8d9891b4068e2b5a2c5e2c9765a9df762944bda6955f96bb9b91e67cd" ], - "index": "pypi", "markers": "python_version >= '3.7'", "version": "==5.0" }, @@ -1874,7 +1985,6 @@ "sha256:fa994e8937e8ccc7e87395b7b35092818905cf27c651e3ff3e7f29729f5ce3ce", "sha256:febceb04ee7dd2aef08c2ff3d6f8a07de3052fc90137c507b0ede3ea80c21440" ], - "index": "pypi", "markers": "python_version >= '3.7'", "version": "==6.2" } @@ -1882,96 +1992,126 @@ "develop": { "astroid": { "hashes": [ - "sha256:187ccc0c248bfbba564826c26f070494f7bc964fd286b6d9fff4420e55de828c", - "sha256:a88c7994f914a4ea8572fac479459f4955eeccc877be3f2d959a33273b0cf40b" + "sha256:ac8fb7ca1c08eb9afec91ccc23edbd8ac73bb22cbdd7da1d488d9fb8d6579070", + "sha256:d7546c00a12efc32650b19a2bb66a153883185d3179ab0d4868086f807338b9b" ], - "markers": "python_full_version >= '3.9.0'", - "version": "==3.3.8" + "markers": "python_full_version >= '3.10.0'", + "version": "==4.0.2" }, "coverage": { "hashes": [ - "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9", - "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f", - "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273", - "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994", - "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e", - "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", - "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e", - "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e", - "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c", - "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", - "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8", - "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8", - "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe", - "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165", - "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb", - "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59", - "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609", - "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18", - "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098", - "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd", - "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3", - "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43", - "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d", - "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359", - "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90", - "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78", - "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a", - "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99", - "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988", - "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2", - "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", - "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694", - "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377", - "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d", - "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", - "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312", - "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf", - "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6", - "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b", - "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c", - "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690", - "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a", - "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f", - "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4", - "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25", - "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd", - "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", - "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0", - "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244", - "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315", - "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", - "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", - "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27", - "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132", - "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5", - "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247", - "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022", - "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", - "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3", - "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18", - "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5", - "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f" + "sha256:0018f73dfb4301a89292c73be6ba5f58722ff79f51593352759c1790ded1cabe", + "sha256:00c3d22cf6fb1cf3bf662aaaa4e563be8243a5ed2630339069799835a9cc7f9b", + "sha256:02d9fb9eccd48f6843c98a37bd6817462f130b86da8660461e8f5e54d4c06070", + "sha256:0602f701057c6823e5db1b74530ce85f17c3c5be5c85fc042ac939cbd909426e", + "sha256:06cac81bf10f74034e055e903f5f946e3e26fc51c09fc9f584e4a1605d977053", + "sha256:086cede306d96202e15a4b77ace8472e39d9f4e5f9fd92dd4fecdfb2313b2080", + "sha256:0900872f2fdb3ee5646b557918d02279dc3af3dfb39029ac4e945458b13f73bc", + "sha256:0a3a30f0e257df382f5f9534d4ce3d4cf06eafaf5192beb1a7bd066cb10e78fb", + "sha256:0b3d67d31383c4c68e19a88e28fc4c2e29517580f1b0ebec4a069d502ce1e0bf", + "sha256:0dfa3855031070058add1a59fdfda0192fd3e8f97e7c81de0596c145dea51820", + "sha256:0f4872f5d6c54419c94c25dd6ae1d015deeb337d06e448cd890a1e89a8ee7f3b", + "sha256:11c21557d0e0a5a38632cbbaca5f008723b26a89d70db6315523df6df77d6232", + "sha256:166ad2a22ee770f5656e1257703139d3533b4a0b6909af67c6b4a3adc1c98657", + "sha256:193c3887285eec1dbdb3f2bd7fbc351d570ca9c02ca756c3afbc71b3c98af6ef", + "sha256:1d84e91521c5e4cb6602fe11ece3e1de03b2760e14ae4fcf1a4b56fa3c801fcd", + "sha256:1ed5630d946859de835a85e9a43b721123a8a44ec26e2830b296d478c7fd4259", + "sha256:22486cdafba4f9e471c816a2a5745337742a617fef68e890d8baf9f3036d7833", + "sha256:22ccfe8d9bb0d6134892cbe1262493a8c70d736b9df930f3f3afae0fe3ac924d", + "sha256:24e4e56304fdb56f96f80eabf840eab043b3afea9348b88be680ec5986780a0f", + "sha256:25dc33618d45456ccb1d37bce44bc78cf269909aa14c4db2e03d63146a8a1493", + "sha256:263c3dbccc78e2e331e59e90115941b5f53e85cfcc6b3b2fbff1fd4e3d2c6ea8", + "sha256:28ee1c96109974af104028a8ef57cec21447d42d0e937c0275329272e370ebcf", + "sha256:30a3a201a127ea57f7e14ba43c93c9c4be8b7d17a26e03bb49e6966d019eede9", + "sha256:3188936845cd0cb114fa6a51842a304cdbac2958145d03be2377ec41eb285d19", + "sha256:367449cf07d33dc216c083f2036bb7d976c6e4903ab31be400ad74ad9f85ce98", + "sha256:37eee4e552a65866f15dedd917d5e5f3d59805994260720821e2c1b51ac3248f", + "sha256:3a10260e6a152e5f03f26db4a407c4c62d3830b9af9b7c0450b183615f05d43b", + "sha256:3a7b1cd820e1b6116f92c6128f1188e7afe421c7e1b35fa9836b11444e53ebd9", + "sha256:3ab483ea0e251b5790c2aac03acde31bff0c736bf8a86829b89382b407cd1c3b", + "sha256:3ad968d1e3aa6ce5be295ab5fe3ae1bf5bb4769d0f98a80a0252d543a2ef2e9e", + "sha256:445badb539005283825959ac9fa4a28f712c214b65af3a2c464f1adc90f5fcbc", + "sha256:453b7ec753cf5e4356e14fe858064e5520c460d3bbbcb9c35e55c0d21155c256", + "sha256:494f5459ffa1bd45e18558cd98710c36c0b8fbfa82a5eabcbe671d80ecffbfe8", + "sha256:4b5de7d4583e60d5fd246dd57fcd3a8aa23c6e118a8c72b38adf666ba8e7e927", + "sha256:4f3e223b2b2db5e0db0c2b97286aba0036ca000f06aca9b12112eaa9af3d92ae", + "sha256:4fdb6f54f38e334db97f72fa0c701e66d8479af0bc3f9bfb5b90f1c30f54500f", + "sha256:51a202e0f80f241ccb68e3e26e19ab5b3bf0f813314f2c967642f13ebcf1ddfe", + "sha256:581f086833d24a22c89ae0fe2142cfaa1c92c930adf637ddf122d55083fb5a0f", + "sha256:583221913fbc8f53b88c42e8dbb8fca1d0f2e597cb190ce45916662b8b9d9621", + "sha256:58632b187be6f0be500f553be41e277712baa278147ecb7559983c6d9faf7ae1", + "sha256:5c67dace46f361125e6b9cace8fe0b729ed8479f47e70c89b838d319375c8137", + "sha256:5e70f92ef89bac1ac8a99b3324923b4749f008fdbd7aa9cb35e01d7a284a04f9", + "sha256:5f5d9bd30756fff3e7216491a0d6d520c448d5124d3d8e8f56446d6412499e74", + "sha256:5f8a0297355e652001015e93be345ee54393e45dc3050af4a0475c5a2b767d46", + "sha256:62d7c4f13102148c78d7353c6052af6d899a7f6df66a32bddcc0c0eb7c5326f8", + "sha256:69ac2c492918c2461bc6ace42d0479638e60719f2a4ef3f0815fa2df88e9f940", + "sha256:6abb3a4c52f05e08460bd9acf04fec027f8718ecaa0d09c40ffbc3fbd70ecc39", + "sha256:6e63ccc6e0ad8986386461c3c4b737540f20426e7ec932f42e030320896c311a", + "sha256:6e9e451dee940a86789134b6b0ffbe31c454ade3b849bb8a9d2cca2541a8e91d", + "sha256:6fb2d5d272341565f08e962cce14cdf843a08ac43bd621783527adb06b089c4b", + "sha256:71936a8b3b977ddd0b694c28c6a34f4fff2e9dd201969a4ff5d5fc7742d614b0", + "sha256:73419b89f812f498aca53f757dd834919b48ce4799f9d5cad33ca0ae442bdb1a", + "sha256:739c6c051a7540608d097b8e13c76cfa85263ced467168dc6b477bae3df7d0e2", + "sha256:7464663eaca6adba4175f6c19354feea61ebbdd735563a03d1e472c7072d27bb", + "sha256:74c136e4093627cf04b26a35dab8cbfc9b37c647f0502fc313376e11726ba303", + "sha256:76541dc8d53715fb4f7a3a06b34b0dc6846e3c69bc6204c55653a85dd6220971", + "sha256:7a485ff48fbd231efa32d58f479befce52dcb6bfb2a88bb7bf9a0b89b1bc8030", + "sha256:7e442c013447d1d8d195be62852270b78b6e255b79b8675bad8479641e21fd96", + "sha256:7f15a931a668e58087bc39d05d2b4bf4b14ff2875b49c994bbdb1c2217a8daeb", + "sha256:7f88ae3e69df2ab62fb0bc5219a597cb890ba5c438190ffa87490b315190bb33", + "sha256:8069e831f205d2ff1f3d355e82f511eb7c5522d7d413f5db5756b772ec8697f8", + "sha256:850d2998f380b1e266459ca5b47bc9e7daf9af1d070f66317972f382d46f1904", + "sha256:898cce66d0836973f48dda4e3514d863d70142bdf6dfab932b9b6a90ea5b222d", + "sha256:9097818b6cc1cfb5f174e3263eba4a62a17683bcfe5c4b5d07f4c97fa51fbf28", + "sha256:936bc20503ce24770c71938d1369461f0c5320830800933bc3956e2a4ded930e", + "sha256:9372dff5ea15930fea0445eaf37bbbafbc771a49e70c0aeed8b4e2c2614cc00e", + "sha256:9987a9e4f8197a1000280f7cc089e3ea2c8b3c0a64d750537809879a7b4ceaf9", + "sha256:99acd4dfdfeb58e1937629eb1ab6ab0899b131f183ee5f23e0b5da5cba2fec74", + "sha256:9b01c22bc74a7fb44066aaf765224c0d933ddf1f5047d6cdfe4795504a4493f8", + "sha256:a00d3a393207ae12f7c49bb1c113190883b500f48979abb118d8b72b8c95c032", + "sha256:a23e5a1f8b982d56fa64f8e442e037f6ce29322f1f9e6c2344cd9e9f4407ee57", + "sha256:a2bdb3babb74079f021696cb46b8bb5f5661165c385d3a238712b031a12355be", + "sha256:a394aa27f2d7ff9bc04cf703817773a59ad6dfbd577032e690f961d2460ee936", + "sha256:a6c6e16b663be828a8f0b6c5027d36471d4a9f90d28444aa4ced4d48d7d6ae8f", + "sha256:af0a583efaacc52ae2521f8d7910aff65cdb093091d76291ac5820d5e947fc1c", + "sha256:af827b7cbb303e1befa6c4f94fd2bf72f108089cfa0f8abab8f4ca553cf5ca5a", + "sha256:c4be718e51e86f553bcf515305a158a1cd180d23b72f07ae76d6017c3cc5d791", + "sha256:cdb3c9f8fef0a954c632f64328a3935988d33a6604ce4bf67ec3e39670f12ae5", + "sha256:d10fd186aac2316f9bbb46ef91977f9d394ded67050ad6d84d94ed6ea2e8e54e", + "sha256:d1e97353dcc5587b85986cda4ff3ec98081d7e84dd95e8b2a6d59820f0545f8a", + "sha256:d2a9d7f1c11487b1c69367ab3ac2d81b9b3721f097aa409a3191c3e90f8f3dd7", + "sha256:de7f6748b890708578fc4b7bb967d810aeb6fcc9bff4bb77dbca77dab2f9df6a", + "sha256:e5330fa0cc1f5c3c4c3bb8e101b742025933e7848989370a1d4c8c5e401ea753", + "sha256:e999e2dcc094002d6e2c7bbc1fb85b58ba4f465a760a8014d97619330cdbbbf3", + "sha256:eb76670874fdd6091eedcc856128ee48c41a9bbbb9c3f1c7c3cf169290e3ffd6", + "sha256:f1c23e24a7000da892a312fb17e33c5f94f8b001de44b7cf8ba2e36fbd15859e", + "sha256:f2ffc92b46ed6e6760f1d47a71e56b5664781bc68986dbd1836b2b70c0ce2071", + "sha256:f4f72a85316d8e13234cafe0a9f81b40418ad7a082792fa4165bd7d45d96066b", + "sha256:f59883c643cb19630500f57016f76cfdcd6845ca8c5b5ea1f6e17f74c8e5f511", + "sha256:f6aaef16d65d1787280943f1c8718dc32e9cf141014e4634d64446702d26e0ff", + "sha256:fe81055d8c6c9de76d60c94ddea73c290b416e061d40d542b24a5871bad498b7", + "sha256:ff45e0cd8451e293b63ced93161e189780baf444119391b3e7d25315060368a6" ], "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==7.6.10" + "markers": "python_version >= '3.10'", + "version": "==7.13.0" }, "dill": { "hashes": [ - "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a", - "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c" + "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0", + "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049" ], - "markers": "python_version >= '3.11'", - "version": "==0.3.9" + "markers": "python_version >= '3.8'", + "version": "==0.4.0" }, "isort": { "hashes": [ - "sha256:567954102bb47bb12e0fae62606570faacddd441e45683968c8d1734fb1af892", - "sha256:75d9d8a1438a9432a7d7b54f2d3b45cad9a4a0fdba43617d9873379704a8bdf1" + "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1", + "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187" ], - "markers": "python_full_version >= '3.9.0'", - "version": "==6.0.0" + "markers": "python_full_version >= '3.10.0'", + "version": "==7.0.0" }, "mccabe": { "hashes": [ @@ -1983,20 +2123,20 @@ }, "platformdirs": { "hashes": [ - "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", - "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb" + "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", + "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31" ], - "markers": "python_version >= '3.8'", - "version": "==4.3.6" + "markers": "python_version >= '3.10'", + "version": "==4.5.1" }, "pylint": { "hashes": [ - "sha256:289e6a1eb27b453b08436478391a48cd53bb0efb824873f949e709350f3de018", - "sha256:74ae7a38b177e69a9b525d0794bd8183820bfa7eb68cc1bee6e8ed22a42be4ce" + "sha256:63e06a37d5922555ee2c20963eb42559918c20bd2b21244e4ef426e7c43b92e0", + "sha256:d9b71674e19b1c36d79265b5887bf8e55278cbe236c9e95d22dc82cf044fdbd2" ], "index": "pypi", - "markers": "python_full_version >= '3.9.0'", - "version": "==3.3.4" + "markers": "python_full_version >= '3.10.0'", + "version": "==4.0.4" }, "pylint-django": { "hashes": [ @@ -2008,19 +2148,19 @@ }, "pylint-plugin-utils": { "hashes": [ - "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507", - "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4" + "sha256:16e9b84e5326ba893a319a0323fcc8b4bcc9c71fc654fcabba0605596c673818", + "sha256:5468d763878a18d5cc4db46eaffdda14313b043c962a263a7d78151b90132055" ], - "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==0.8.2" + "markers": "python_version >= '3.9' and python_version < '4.0'", + "version": "==0.9.0" }, "tomlkit": { "hashes": [ - "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", - "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79" + "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", + "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0" ], "markers": "python_version >= '3.8'", - "version": "==0.13.2" + "version": "==0.13.3" } } } diff --git a/skipper/build.py b/skipper/build.py index bf7da61..abee0b4 100644 --- a/skipper/build.py +++ b/skipper/build.py @@ -203,7 +203,7 @@ def build_base_image(base_image_name: str, base_image_tag: str) -> None: subprocess.check_call([ 'docker', 'pull', - 'python:3.11' + 'python:3.14' ]) subprocess.check_call([ 'docker', diff --git a/skipper/skipper/common/tests/test_auth.py b/skipper/skipper/common/tests/test_auth.py index 8825f9e..c267687 100644 --- a/skipper/skipper/common/tests/test_auth.py +++ b/skipper/skipper/common/tests/test_auth.py @@ -32,7 +32,7 @@ def test_get_auth_token_wrong_user(self) -> None: 'user': 'wrong_user', 'password': 'nf' }) - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_get_auth_token_wrong_password(self) -> None: User.objects.create_superuser(username='nf', password='nf', email='test@neuroforge.de') @@ -42,7 +42,7 @@ def test_get_auth_token_wrong_password(self) -> None: 'user': 'nf', 'password': 'wrong_password' }) - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_get_auth_token_no_password(self) -> None: User.objects.create_superuser(username='nf', password='nf', email='test@neuroforge.de') @@ -51,7 +51,7 @@ def test_get_auth_token_no_password(self) -> None: response = client.post(path=BASE_URL + "common/auth/authtoken/", data={ 'password': 'nf' }) - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_get_auth_token_no_user(self) -> None: User.objects.create_superuser(username='nf', password='nf', email='test@neuroforge.de') @@ -60,7 +60,7 @@ def test_get_auth_token_no_user(self) -> None: response = client.post(path=BASE_URL + "common/auth/authtoken/", data={ 'user': 'nf' }) - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_get_auth_token(self) -> None: User.objects.create_superuser(username='nf', password='nf', email='test@neuroforge.de') @@ -71,7 +71,7 @@ def get_token() -> Dict[str, Any]: 'username': 'nf', 'password': 'nf' }, format='json') - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) token_json = response.json() self.assertTrue('token' in token_json) @@ -97,7 +97,7 @@ def get_token() -> Dict[str, Any]: 'username': 'nf2', 'password': 'nf2' }, format='json') - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) token_json = response.json() self.assertTrue('token' in token_json) @@ -107,8 +107,8 @@ def get_token() -> Dict[str, Any]: # getting the token should not log us in even if we are logged in response = client.get(path=BASE_URL + "common/auth/check/", format='json') - self.assertEquals(status.HTTP_200_OK, response.status_code) - self.assertEquals(response.json()['username'], 'nf') + self.assertEqual(status.HTTP_200_OK, response.status_code) + self.assertEqual(response.json()['username'], 'nf') def test_should_not_log_in(self) -> None: User.objects.create_superuser(username='nf', password='nf', email='test@neuroforge.de') @@ -121,7 +121,7 @@ def get_token() -> Dict[str, Any]: 'username': 'nf2', 'password': 'nf2' }) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) token_json = response.json() self.assertTrue('token' in token_json) @@ -131,4 +131,4 @@ def get_token() -> Dict[str, Any]: # getting the token should not log us in even if we are logged in response = client.get(path=BASE_URL + "common/auth/check/", format='json') - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) diff --git a/skipper/skipper/common/tests/test_csrf_token.py b/skipper/skipper/common/tests/test_csrf_token.py index 579dcb6..d60d963 100644 --- a/skipper/skipper/common/tests/test_csrf_token.py +++ b/skipper/skipper/common/tests/test_csrf_token.py @@ -20,4 +20,4 @@ def test_get_csrf_token_no_auth(self) -> None: client = APIClient() response = client.get(path=BASE_URL + "common/auth/csrftoken/") - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) diff --git a/skipper/skipper/common/tests/test_preshared_token_login.py b/skipper/skipper/common/tests/test_preshared_token_login.py index a2c9e34..1fcd02f 100644 --- a/skipper/skipper/common/tests/test_preshared_token_login.py +++ b/skipper/skipper/common/tests/test_preshared_token_login.py @@ -46,7 +46,7 @@ def test_preshared_token_middleware(self) -> None: client = APIClient() unauthenticated = client.get(path=BASE_URL + "common/auth/check/") - self.assertEquals(status.HTTP_403_FORBIDDEN, unauthenticated.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, unauthenticated.status_code) user1_pst1 = PreSharedToken.objects.create( key='MY_AWESOME_SECRET_PRESHARED_TOKEN1', @@ -59,8 +59,8 @@ def test_preshared_token_middleware(self) -> None: follow=False, HTTP_AUTHORIZATION=f'PreSharedToken {user1_pst1.key}' ) - self.assertEquals(status.HTTP_200_OK, authenticated.status_code) - self.assertEquals(authenticated.json()['username'], user1.username) + self.assertEqual(status.HTTP_200_OK, authenticated.status_code) + self.assertEqual(authenticated.json()['username'], user1.username) user1_pst2 = PreSharedToken.objects.create( key='MY_AWESOME_SECRET_PRESHARED_TOKEN2', @@ -73,6 +73,6 @@ def test_preshared_token_middleware(self) -> None: follow=False, HTTP_AUTHORIZATION=f'PreSharedToken {user1_pst2.key}' ) - self.assertEquals(status.HTTP_200_OK, authenticated.status_code) - self.assertEquals(authenticated.json()['username'], user1.username) + self.assertEqual(status.HTTP_200_OK, authenticated.status_code) + self.assertEqual(authenticated.json()['username'], user1.username) diff --git a/skipper/skipper/core/tests/base/__init__.py b/skipper/skipper/core/tests/base/__init__.py index a794be0..b73075e 100644 --- a/skipper/skipper/core/tests/base/__init__.py +++ b/skipper/skipper/core/tests/base/__init__.py @@ -421,16 +421,16 @@ def remove_permission() -> None: def without_permissions() -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(self.malformed_without_permission_status(), malformed_without_permissions.status_code) + self.assertEqual(self.malformed_without_permission_status(), malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(self.proper_without_permission_status(), proper_without_permissions.status_code) + self.assertEqual(self.proper_without_permission_status(), proper_without_permissions.status_code) def with_permissions() -> None: malformed_with_permissions = self.method_under_test_malformed() if malformed_with_permissions is not None: - self.assertEquals(self.malformed_with_permission_status(), malformed_with_permissions.status_code) + self.assertEqual(self.malformed_with_permission_status(), malformed_with_permissions.status_code) proper_with_permissions = self.method_under_test_proper() - self.assertEquals(self.proper_with_permission_status(), proper_with_permissions.status_code) + self.assertEqual(self.proper_with_permission_status(), proper_with_permissions.status_code) # not logged in without_permissions() diff --git a/skipper/skipper/core/tests/base/regular_detail_permission.py b/skipper/skipper/core/tests/base/regular_detail_permission.py index 3436fd0..f672b48 100644 --- a/skipper/skipper/core/tests/base/regular_detail_permission.py +++ b/skipper/skipper/core/tests/base/regular_detail_permission.py @@ -41,10 +41,10 @@ def malformed_without_obj_permission_status(self) -> int: def __without_obj_permissions(self) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(self.malformed_without_base_obj_permission_status(), + self.assertEqual(self.malformed_without_base_obj_permission_status(), malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(self.proper_without_base_obj_permission_status(), proper_without_permissions.status_code) + self.assertEqual(self.proper_without_base_obj_permission_status(), proper_without_permissions.status_code) def _extra_add_base_permission(self) -> None: obj = self.model_type.objects.get( @@ -131,9 +131,9 @@ def read_permission(self) -> str: def without_extra_permissions_test(self) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(self.malformed_without_obj_permission_status(), malformed_without_permissions.status_code) + self.assertEqual(self.malformed_without_obj_permission_status(), malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(self.proper_without_obj_permission_status(), proper_without_permissions.status_code) + self.assertEqual(self.proper_without_obj_permission_status(), proper_without_permissions.status_code) def after_base_test(self) -> None: self._after_base_test( @@ -153,9 +153,9 @@ def _after_base_test(self, status_code_only_global: int) -> None: def without_permissions(expected_status_code: int) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(expected_status_code, malformed_without_permissions.status_code) + self.assertEqual(expected_status_code, malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(expected_status_code, proper_without_permissions.status_code) + self.assertEqual(expected_status_code, proper_without_permissions.status_code) # still has global permissions on object, so should get 403 after this remove_perm( diff --git a/skipper/skipper/dataseries/raw_sql/validate.py b/skipper/skipper/dataseries/raw_sql/validate.py index 5626f5e..455181b 100644 --- a/skipper/skipper/dataseries/raw_sql/validate.py +++ b/skipper/skipper/dataseries/raw_sql/validate.py @@ -13,5 +13,5 @@ def validate_string(string: str) -> bool: def validate_sql_string(string: str) -> bool: - regex = re.compile('[a-zA-Z0-9_\-"]+') + regex = re.compile(r'[a-zA-Z0-9_\-"]+') return regex.fullmatch(string) is not None \ No newline at end of file diff --git a/skipper/skipper/dataseries/tests/base/data_series_child_detail_permission_test.py b/skipper/skipper/dataseries/tests/base/data_series_child_detail_permission_test.py index cb0f3d5..040b167 100644 --- a/skipper/skipper/dataseries/tests/base/data_series_child_detail_permission_test.py +++ b/skipper/skipper/dataseries/tests/base/data_series_child_detail_permission_test.py @@ -44,9 +44,9 @@ def create_detail_sub_element(self) -> None: def __without_data_series_obj_permissions(self) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(self.malformed_without_data_series_obj_permission_status(), malformed_without_permissions.status_code) + self.assertEqual(self.malformed_without_data_series_obj_permission_status(), malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(self.proper_without_data_series_obj_permission_status(), proper_without_permissions.status_code) + self.assertEqual(self.proper_without_data_series_obj_permission_status(), proper_without_permissions.status_code) def _add_dataseries_perms(self) -> None: data_series = DataSeries.objects.get( @@ -170,9 +170,9 @@ def create_data_series(self) -> None: def without_extra_permissions_test(self) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(status.HTTP_403_FORBIDDEN, malformed_without_permissions.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(status.HTTP_403_FORBIDDEN, proper_without_permissions.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, proper_without_permissions.status_code) def after_base_test(self) -> None: self._after_base_test( @@ -195,9 +195,9 @@ def _after_base_test(self, status_code_only_global_dataseries: int) -> None: def without_permissions(expected_status_code: int) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(expected_status_code, malformed_without_permissions.status_code) + self.assertEqual(expected_status_code, malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(expected_status_code, proper_without_permissions.status_code) + self.assertEqual(expected_status_code, proper_without_permissions.status_code) # still has global permissions on dataseries, so should get 403 after this remove_perm( diff --git a/skipper/skipper/dataseries/tests/base/data_series_child_list_permission_test.py b/skipper/skipper/dataseries/tests/base/data_series_child_list_permission_test.py index cd08093..b3b99b4 100644 --- a/skipper/skipper/dataseries/tests/base/data_series_child_list_permission_test.py +++ b/skipper/skipper/dataseries/tests/base/data_series_child_list_permission_test.py @@ -38,9 +38,9 @@ def malformed_without_data_series_obj_permission_status(self) -> int: def __without_data_series_obj_permissions(self) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(self.malformed_without_data_series_obj_permission_status(), malformed_without_permissions.status_code) + self.assertEqual(self.malformed_without_data_series_obj_permission_status(), malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(self.proper_without_data_series_obj_permission_status(), proper_without_permissions.status_code) + self.assertEqual(self.proper_without_data_series_obj_permission_status(), proper_without_permissions.status_code) def _add_dataseries_perms(self) -> None: data_series = DataSeries.objects.get( @@ -132,9 +132,9 @@ def create_data_series(self) -> None: def without_extra_permissions_test(self) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(status.HTTP_403_FORBIDDEN, malformed_without_permissions.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(status.HTTP_403_FORBIDDEN, proper_without_permissions.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, proper_without_permissions.status_code) def after_base_test(self) -> None: self._after_base_test( @@ -157,9 +157,9 @@ def _after_base_test(self, status_code_only_global_dataseries: int) -> None: def without_permissions(expected_status_code: int) -> None: malformed_without_permissions = self.method_under_test_malformed() if malformed_without_permissions is not None: - self.assertEquals(expected_status_code, malformed_without_permissions.status_code) + self.assertEqual(expected_status_code, malformed_without_permissions.status_code) proper_without_permissions = self.method_under_test_proper() - self.assertEquals(expected_status_code, proper_without_permissions.status_code) + self.assertEqual(expected_status_code, proper_without_permissions.status_code) # still has global permissions on dataseries, so should get 403 after this remove_perm( diff --git a/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_csv.py b/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_csv.py index 70d36aa..e1ba046 100644 --- a/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_csv.py +++ b/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_csv.py @@ -86,9 +86,9 @@ def _test_csv_batch(self, idx: int, backend: str) -> None: ) if self.should_fail: - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) else: - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) dp_1 = self.get_payload(data_series['data_points'] + f'?external_id=should_succeed{idx}')['data'][0] self.assertTrue( @@ -99,7 +99,7 @@ def _test_csv_batch(self, idx: int, backend: str) -> None: dp_1['payload']['1'], "fact in second datapoint should not be null" ) - self.assertEquals(dp_1['payload']['1'], self.actual_data()) + self.assertEqual(dp_1['payload']['1'], self.actual_data()) def test_csv_batch(self) -> None: idx = 0 diff --git a/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_multipart.py b/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_multipart.py index 207ee7c..9f5dfeb 100644 --- a/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_multipart.py +++ b/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_multipart.py @@ -77,7 +77,7 @@ def _test_multipart_batch(self, idx: int, backend: str) -> None: "batch-0.payload.1": self.gen_data(), "async": self._async }, format='multipart') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) dp_1 = self.get_payload(data_series['data_points'] + f'?external_id=should_succeed')['data'][0] self.assertTrue( @@ -106,7 +106,7 @@ def gen_data(self) -> float: return 1.0 def check_data(self, value: Any) -> None: - self.assertEquals(1.0, value) + self.assertEqual(1.0, value) class AsyncFloatTest(FloatTest): @@ -121,7 +121,7 @@ def gen_data(self) -> str: return "123" def check_data(self, value: Any) -> None: - self.assertEquals('123', value) + self.assertEqual('123', value) class AsyncStringTest(StringTest): @@ -136,7 +136,7 @@ def gen_data(self) -> str: return "123" def check_data(self, value: Any) -> None: - self.assertEquals('123', value) + self.assertEqual('123', value) class AsyncTextTest(TextTest): @@ -151,7 +151,7 @@ def gen_data(self) -> str: return "\"\\\"\\\"\"" def check_data(self, value: Any) -> None: - self.assertEquals('\"\"', value) + self.assertEqual('\"\"', value) def gen_null(self) -> Any: return 'null' @@ -172,7 +172,7 @@ def _test_multipart_null_batch(self, idx: int, backend: str) -> None: "batch-0.payload.1": self.gen_null(), "async": self._async }, format='multipart') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) dp_1 = self.get_payload(data_series['data_points'] + f'?external_id=should_succeed')['data'][0] self.assertTrue( @@ -204,7 +204,7 @@ def gen_data(self) -> str: return json.dumps(self.data) def check_data(self, value: Any) -> None: - self.assertEquals(self.data, value) + self.assertEqual(self.data, value) class AsyncJSONComplexTest(JSONComplexTest): @@ -219,7 +219,7 @@ def gen_data(self) -> str: return '2019-12-15T19:09:25.007985' def check_data(self, value: Any) -> None: - self.assertEquals('2019-12-15T19:09:25.007985', value) + self.assertEqual('2019-12-15T19:09:25.007985', value) class AsyncTimestampTest(TimestampTest): @@ -253,7 +253,7 @@ def _test_multipart_batch_two(self, idx: int, backend: str) -> None: "batch-1.payload.1": self.gen_data(), "async": self._async }, format='multipart') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) dp_1 = self.get_payload(data_series['data_points'] + f'?external_id=should_succeed')['data'][0] self.assertTrue( @@ -290,7 +290,7 @@ def gen_data(self) -> bool: return True def check_data(self, value: Any) -> None: - self.assertEquals(True, value) + self.assertEqual(True, value) class AsyncBooleanTest(BooleanTest): diff --git a/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_validation.py b/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_validation.py index 0422b0e..c2e13f4 100644 --- a/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_validation.py +++ b/skipper/skipper/dataseries/tests/data_point/test_data_point_bulk_validation.py @@ -52,7 +52,7 @@ def test_missing_alltogether(self) -> None: "payload": {} }] }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_missing_as_null(self) -> None: @@ -72,7 +72,7 @@ def test_missing_as_null(self) -> None: } }] }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_null_as_optional(self) -> None: float_fact = self.create_payload(self.data_series['float_facts'], { @@ -91,7 +91,7 @@ def test_null_as_optional(self) -> None: } }] }, format='json') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) # FIXME: add tests for all other fact types diff --git a/skipper/skipper/dataseries/tests/data_point/test_data_point_dimension_validation.py b/skipper/skipper/dataseries/tests/data_point/test_data_point_dimension_validation.py index b6fcc48..c49fba0 100644 --- a/skipper/skipper/dataseries/tests/data_point/test_data_point_dimension_validation.py +++ b/skipper/skipper/dataseries/tests/data_point/test_data_point_dimension_validation.py @@ -87,7 +87,7 @@ def test_missing_alltogether(self) -> None: "payload": {} }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) error_json = response.json() self.assertTrue('payload' in error_json) self.assertTrue(self.dim_1['external_id'] in error_json['payload']) @@ -105,7 +105,7 @@ def test_both_entries_wrong_identify_by_external_id(self) -> None: "identify_dimensions_by_external_id": False }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) error_json = response.json() @@ -125,7 +125,7 @@ def test_both_entries_wrong(self) -> None: "identify_dimensions_by_external_id": False }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) error_json = response.json() @@ -144,7 +144,7 @@ def test_should_work_normal(self) -> None: }, "identify_dimensions_by_external_id": False }, format='json') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) def test_should_work_identify_by_external_id(self) -> None: response = self.client.post( @@ -157,7 +157,7 @@ def test_should_work_identify_by_external_id(self) -> None: }, "identify_dimensions_by_external_id": True }, format='json') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) def test_both_entries_wrong_and_wrong_external_id(self) -> None: response = self.client.post( @@ -169,7 +169,7 @@ def test_both_entries_wrong_and_wrong_external_id(self) -> None: self.dim_2['external_id']: self.dim_entries_2[1]['id'], } }, format='json') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) response = self.client.post( path=self.data_series['data_points'], @@ -183,7 +183,7 @@ def test_both_entries_wrong_and_wrong_external_id(self) -> None: "identify_dimensions_by_external_id": True }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) error_json = response.json() self.assertTrue('external_id' in error_json) @@ -200,7 +200,7 @@ def test_both_entries_wrong_and_wrong_external_id(self) -> None: "identify_dimensions_by_external_id": False }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) error_json = response.json() self.assertTrue('external_id' in error_json) diff --git a/skipper/skipper/dataseries/tests/data_point/test_data_point_prune_and_truncate_and_global_truncate.py b/skipper/skipper/dataseries/tests/data_point/test_data_point_prune_and_truncate_and_global_truncate.py index df91917..571c442 100644 --- a/skipper/skipper/dataseries/tests/data_point/test_data_point_prune_and_truncate_and_global_truncate.py +++ b/skipper/skipper/dataseries/tests/data_point/test_data_point_prune_and_truncate_and_global_truncate.py @@ -102,7 +102,7 @@ def write_data_once(self, data_series: Dict[str, Any], external_id: str) -> None f"batch-0.external_id": external_id, "batch-0.payload.1": self.gen_data() }, format='multipart') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) def assert_entity_count_db( self, @@ -1127,10 +1127,10 @@ def _test_s3_prune_only_deleted_pruned(self, storage_backend_type: str, idx: int ) s3_data_dp_1_resp = requests.get(dp_1['payload']['1']) - self.assertEquals(status.HTTP_200_OK, s3_data_dp_1_resp.status_code) + self.assertEqual(status.HTTP_200_OK, s3_data_dp_1_resp.status_code) s3_data_dp_2_resp = requests.get(dp_2['payload']['1']) - self.assertEquals(status.HTTP_200_OK, s3_data_dp_2_resp.status_code) + self.assertEqual(status.HTTP_200_OK, s3_data_dp_2_resp.status_code) before_delete = dbtime.now() @@ -1160,10 +1160,10 @@ def _test_s3_prune_only_deleted_pruned(self, storage_backend_type: str, idx: int ) s3_data_dp_1_resp = requests.get(dp_1['payload']['1']) - self.assertEquals(status.HTTP_200_OK, s3_data_dp_1_resp.status_code) + self.assertEqual(status.HTTP_200_OK, s3_data_dp_1_resp.status_code) s3_data_dp_2_resp = requests.get(dp_2['payload']['1']) - self.assertEquals(status.HTTP_200_OK, s3_data_dp_2_resp.status_code) + self.assertEqual(status.HTTP_200_OK, s3_data_dp_2_resp.status_code) file_registry.garbage_collect( storage=default_media_storage, @@ -1171,11 +1171,11 @@ def _test_s3_prune_only_deleted_pruned(self, storage_backend_type: str, idx: int ) s3_data_dp_1_resp = requests.get(dp_1['payload']['1']) - self.assertEquals(status.HTTP_404_NOT_FOUND, s3_data_dp_1_resp.status_code, + self.assertEqual(status.HTTP_404_NOT_FOUND, s3_data_dp_1_resp.status_code, 's3 data should be pruned for dataseries ' + str(data_series)) s3_data_dp_2_resp = requests.get(dp_2['payload']['1']) - self.assertEquals(status.HTTP_200_OK, s3_data_dp_2_resp.status_code) + self.assertEqual(status.HTTP_200_OK, s3_data_dp_2_resp.status_code) class ImageFactTest(BaseClasses.BaseFileLikeTest): diff --git a/skipper/skipper/dataseries/tests/data_point/test_outside_url_s3_bucket.py b/skipper/skipper/dataseries/tests/data_point/test_outside_url_s3_bucket.py index f18e890..35a3334 100644 --- a/skipper/skipper/dataseries/tests/data_point/test_outside_url_s3_bucket.py +++ b/skipper/skipper/dataseries/tests/data_point/test_outside_url_s3_bucket.py @@ -72,7 +72,7 @@ def test_private_public_detection_for_s3_urls(self) -> None: f"batch-0.external_id": 'should_succeed', "batch-0.payload.1": self.gen_data() }, format='multipart') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) dp_1 = self.client.get( path=self.data_series['data_points'] + f'?external_id=should_succeed', diff --git a/skipper/skipper/dataseries/tests/data_point/test_s3_data_properly_updated.py b/skipper/skipper/dataseries/tests/data_point/test_s3_data_properly_updated.py index 64df863..d1397c0 100644 --- a/skipper/skipper/dataseries/tests/data_point/test_s3_data_properly_updated.py +++ b/skipper/skipper/dataseries/tests/data_point/test_s3_data_properly_updated.py @@ -110,16 +110,16 @@ def _test_s3_storage_updates_properly_upsert(self, storage_backend_type: str, id initial_resp = requests.get(initial['payload']['s3_file']) - self.assertEquals(status.HTTP_200_OK, initial_resp.status_code) + self.assertEqual(status.HTTP_200_OK, initial_resp.status_code) initial_resp_again = requests.get(initial['payload']['s3_file']) - self.assertEquals(status.HTTP_200_OK, initial_resp.status_code) + self.assertEqual(status.HTTP_200_OK, initial_resp.status_code) # ensure the following assertion will make sense by getting the initial file twice and comparing it to itself self.assertEqual(ascii(initial_resp.content), ascii(initial_resp_again.content)) updated_resp = requests.get(updated['payload']['s3_file']) - self.assertEquals(status.HTTP_200_OK, updated_resp.status_code) + self.assertEqual(status.HTTP_200_OK, updated_resp.status_code) self.assertNotEqual(ascii(initial_resp.content), ascii(updated_resp.content)) @@ -160,15 +160,15 @@ def _test_s3_storage_updates_properly_regular_update(self, storage_backend_type: updated = updated_payload_resp.json() initial_resp = requests.get(initial['payload']['s3_file']) - self.assertEquals(status.HTTP_200_OK, initial_resp.status_code) + self.assertEqual(status.HTTP_200_OK, initial_resp.status_code) initial_resp_again = requests.get(initial['payload']['s3_file']) - self.assertEquals(status.HTTP_200_OK, initial_resp.status_code) + self.assertEqual(status.HTTP_200_OK, initial_resp.status_code) # ensure the following assertion will make sense by getting the initial file twice and comparing it to itself self.assertEqual(ascii(initial_resp.content), ascii(initial_resp_again.content)) updated_resp = requests.get(updated['payload']['s3_file']) - self.assertEquals(status.HTTP_200_OK, updated_resp.status_code) + self.assertEqual(status.HTTP_200_OK, updated_resp.status_code) self.assertNotEqual(ascii(initial_resp.content), ascii(updated_resp.content)) diff --git a/skipper/skipper/dataseries/tests/data_point/validation/optional_facts/test_optional_dimension_null_in_post_allowed.py b/skipper/skipper/dataseries/tests/data_point/validation/optional_facts/test_optional_dimension_null_in_post_allowed.py index b3e8ce3..1e2c91b 100644 --- a/skipper/skipper/dataseries/tests/data_point/validation/optional_facts/test_optional_dimension_null_in_post_allowed.py +++ b/skipper/skipper/dataseries/tests/data_point/validation/optional_facts/test_optional_dimension_null_in_post_allowed.py @@ -60,7 +60,7 @@ def test_missing_altogether(self) -> None: "1": None } }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_missing_as_null(self) -> None: self.add_dim(optional=False) @@ -73,7 +73,7 @@ def test_missing_as_null(self) -> None: "1": None } }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_null_as_optional(self) -> None: self.add_dim(optional=True) @@ -86,4 +86,4 @@ def test_null_as_optional(self) -> None: "1": None } }, format='json') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) \ No newline at end of file + self.assertEqual(status.HTTP_201_CREATED, response.status_code) \ No newline at end of file diff --git a/skipper/skipper/dataseries/tests/data_point/validation/optional_facts/test_optional_fact_null_in_post_allowed.py b/skipper/skipper/dataseries/tests/data_point/validation/optional_facts/test_optional_fact_null_in_post_allowed.py index 99fda17..830734e 100644 --- a/skipper/skipper/dataseries/tests/data_point/validation/optional_facts/test_optional_fact_null_in_post_allowed.py +++ b/skipper/skipper/dataseries/tests/data_point/validation/optional_facts/test_optional_fact_null_in_post_allowed.py @@ -52,7 +52,7 @@ def test_missing_altogether(self) -> None: "1": None } }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_missing_as_null(self) -> None: self.add_fact(optional=False) @@ -65,7 +65,7 @@ def test_missing_as_null(self) -> None: "1": None } }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) def test_null_as_optional(self) -> None: self.add_fact(optional=True) @@ -78,7 +78,7 @@ def test_null_as_optional(self) -> None: "1": None } }, format='json') - self.assertEquals(status.HTTP_201_CREATED, response.status_code) + self.assertEqual(status.HTTP_201_CREATED, response.status_code) class FloatTest(Base): diff --git a/skipper/skipper/dataseries/tests/data_series/structure/rest_crud/test_dataseries_by_external_id_basic.py b/skipper/skipper/dataseries/tests/data_series/structure/rest_crud/test_dataseries_by_external_id_basic.py index 892fee3..bc69864 100644 --- a/skipper/skipper/dataseries/tests/data_series/structure/rest_crud/test_dataseries_by_external_id_basic.py +++ b/skipper/skipper/dataseries/tests/data_series/structure/rest_crud/test_dataseries_by_external_id_basic.py @@ -22,38 +22,38 @@ class DataSeriesByExternalIdBasicTest(BaseViewTest): def check_urls_by_external_id(self, data_series: Dict[str, Any]) -> None: # by-external-id functionality should work, but not be the default, so we should still always give out # the canonical url, as this will always work - self.assertRegexpMatches(data_series['url'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/') - self.assertRegexpMatches(data_series['dimensions'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/dimension/') - self.assertRegexpMatches(data_series['json_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/jsonfact/') - self.assertRegexpMatches(data_series['timestamp_facts'], + self.assertRegex(data_series['url'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/') + self.assertRegex(data_series['dimensions'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/dimension/') + self.assertRegex(data_series['json_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/jsonfact/') + self.assertRegex(data_series['timestamp_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/timestampfact/') - self.assertRegexpMatches(data_series['file_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/filefact/') - self.assertRegexpMatches(data_series['image_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/imagefact/') - self.assertRegexpMatches(data_series['float_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/floatfact/') - self.assertRegexpMatches(data_series['boolean_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/booleanfact/') - self.assertRegexpMatches(data_series['text_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/textfact/') - self.assertRegexpMatches(data_series['string_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/stringfact/') + self.assertRegex(data_series['file_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/filefact/') + self.assertRegex(data_series['image_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/imagefact/') + self.assertRegex(data_series['float_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/floatfact/') + self.assertRegex(data_series['boolean_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/booleanfact/') + self.assertRegex(data_series['text_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/textfact/') + self.assertRegex(data_series['string_facts'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/stringfact/') - self.assertRegexpMatches(data_series['data_points'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/datapoint/') + self.assertRegex(data_series['data_points'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/datapoint/') - self.assertRegexpMatches(data_series['data_points_bulk'], + self.assertRegex(data_series['data_points_bulk'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/bulk/datapoint/') - self.assertRegexpMatches(data_series['data_point_validate_external_ids'], + self.assertRegex(data_series['data_point_validate_external_ids'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/bulk/check-external-ids/') - self.assertRegexpMatches(data_series['cube_sql'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/cubesql/') - self.assertRegexpMatches(data_series['create_view'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/createview/') + self.assertRegex(data_series['cube_sql'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/cubesql/') + self.assertRegex(data_series['create_view'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/createview/') def check_urls_by_external_id_dp(self, data_point: Dict[str, Any]) -> None: - self.assertRegexpMatches(data_point['url'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/datapoint/(.*)/') + self.assertRegex(data_point['url'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/datapoint/(.*)/') def check_urls_by_external_id_fact(self, fact: Dict[str, Any], fact_type: str) -> None: - self.assertRegexpMatches(fact['url'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/' + fact_type + 'fact/(.*)/') + self.assertRegex(fact['url'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/' + fact_type + 'fact/(.*)/') def check_urls_by_external_id_dimension(self, fact: Dict[str, Any]) -> None: - self.assertRegexpMatches(fact['url'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/dimension/(.*)/') + self.assertRegex(fact['url'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/dimension/(.*)/') - self.assertRegexpMatches(fact['reference'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/') + self.assertRegex(fact['reference'], DATA_SERIES_BASE_URL + r'dataseries/(.*)/') def test_create_broken_url_data_series(self) -> None: # for dataseries it should be impossible to create weird situations where @@ -62,7 +62,7 @@ def test_create_broken_url_data_series(self) -> None: 'name': 'my_data_series_1', 'external_id': '/' }, format='json') - self.assertEquals(status.HTTP_400_BAD_REQUEST, should_fail.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, should_fail.status_code) def test_create_and_fetch_via_external_id_in_url(self) -> None: data_series = self.create_payload(self.url_under_test, payload={ @@ -71,8 +71,8 @@ def test_create_and_fetch_via_external_id_in_url(self) -> None: }, simulate_tenant=False) manual_url_response = self.client.get(self.url_under_test + 'external_id1/') - self.assertEquals(status.HTTP_200_OK, manual_url_response.status_code) - self.assertEquals(data_series, manual_url_response.json()) + self.assertEqual(status.HTTP_200_OK, manual_url_response.status_code) + self.assertEqual(data_series, manual_url_response.json()) def test_returned_has_correct_paths(self) -> None: data_series = self.create_payload(self.url_under_test, payload={ @@ -94,10 +94,10 @@ def test_data_point_is_accessible_via_external_id_url(self) -> None: self.check_urls_by_external_id_dp(data_point) should_redirect = self.client.get(path=self.url_under_test + 'external_id1/datapoint/1') - self.assertEquals(status.HTTP_301_MOVED_PERMANENTLY, should_redirect.status_code) + self.assertEqual(status.HTTP_301_MOVED_PERMANENTLY, should_redirect.status_code) by_external_id_dp = self.get_payload(self.url_under_test + 'external_id1/datapoint/1/') - self.assertEquals(data_point, by_external_id_dp) + self.assertEqual(data_point, by_external_id_dp) # url in the returned json should still be the canonical url as that is always safe self.check_urls_by_external_id_dp(data_point) @@ -122,11 +122,11 @@ def test_facts_are_accessible_via_external_id_url(self) -> None: should_redirect = self.client.get( path=self.url_under_test + f'{data_series["external_id"]}/{fact_type}fact/{external_id_fact}' ) - self.assertEquals(status.HTTP_301_MOVED_PERMANENTLY, should_redirect.status_code) + self.assertEqual(status.HTTP_301_MOVED_PERMANENTLY, should_redirect.status_code) by_external_id_fact = self.get_payload(self.url_under_test + f'{data_series["external_id"]}/{fact_type}fact/{external_id_fact}/') self.check_urls_by_external_id_fact(fact, fact_type) - self.assertEquals(fact, by_external_id_fact) + self.assertEqual(fact, by_external_id_fact) def test_dimensions_are_accessible_via_external_id_url(self) -> None: external_id_ds = f'external_id_dim' @@ -153,8 +153,8 @@ def test_dimensions_are_accessible_via_external_id_url(self) -> None: should_redirect = self.client.get( path=self.url_under_test + f'{data_series["external_id"]}/dimension/{external_id_dim}' ) - self.assertEquals(status.HTTP_301_MOVED_PERMANENTLY, should_redirect.status_code) + self.assertEqual(status.HTTP_301_MOVED_PERMANENTLY, should_redirect.status_code) by_external_id_dim = self.get_payload(self.url_under_test + f'{data_series["external_id"]}/dimension/{external_id_dim}/') self.check_urls_by_external_id_dimension(dim) - self.assertEquals(dim, by_external_id_dim) + self.assertEqual(dim, by_external_id_dim) diff --git a/skipper/skipper/dataseries/tests/data_series/structure/rest_crud/test_dataseries_filter_by_fact.py b/skipper/skipper/dataseries/tests/data_series/structure/rest_crud/test_dataseries_filter_by_fact.py index fa665b9..32e842c 100644 --- a/skipper/skipper/dataseries/tests/data_series/structure/rest_crud/test_dataseries_filter_by_fact.py +++ b/skipper/skipper/dataseries/tests/data_series/structure/rest_crud/test_dataseries_filter_by_fact.py @@ -63,11 +63,11 @@ def test_facts_are_accessible_via_external_id_url(self) -> None: self.client.post(path=data_series['data_points'], data=data_point_b, format='json') def data_equals_data_point(data: Dict[str, Any], data_point: Dict[str, Any]) -> None: - self.assertEquals(data_point['external_id'], data['external_id']) - self.assertEquals(data_point['payload']['float_fact'], data['payload']['float_fact']) - self.assertEquals(data_point['payload']['string_fact'], data['payload']['string_fact']) - self.assertEquals(data_point['payload']['text_fact'], data['payload']['text_fact']) - self.assertEquals(data_point['payload']['boolean_fact'], data['payload']['boolean_fact']) + self.assertEqual(data_point['external_id'], data['external_id']) + self.assertEqual(data_point['payload']['float_fact'], data['payload']['float_fact']) + self.assertEqual(data_point['payload']['string_fact'], data['payload']['string_fact']) + self.assertEqual(data_point['payload']['text_fact'], data['payload']['text_fact']) + self.assertEqual(data_point['payload']['boolean_fact'], data['payload']['boolean_fact']) payload_a = data_point_a['payload'] for fact in payload_a: @@ -75,7 +75,7 @@ def data_equals_data_point(data: Dict[str, Any], data_point: Dict[str, Any]) -> pass else: response = self.client.get(path=f'{data_series["data_points"]}?filter={{ "{fact}": {json.dumps(payload_a[fact])} }}').json() - self.assertEquals(1, len(response['data'])) + self.assertEqual(1, len(response['data'])) data_equals_data_point(response['data'][0], data_point_a) payload_b = data_point_b['payload'] @@ -85,6 +85,6 @@ def data_equals_data_point(data: Dict[str, Any], data_point: Dict[str, Any]) -> else: response = self.client.get( path=f'{data_series["data_points"]}?filter={{ "{fact}": {json.dumps(payload_b[fact])} }}').json() - self.assertEquals(1, len(response['data'])) + self.assertEqual(1, len(response['data'])) data_equals_data_point(response['data'][0], data_point_b) diff --git a/skipper/skipper/dataseries/tests/data_series/test_dataseries_dimension_reference_fixed.py b/skipper/skipper/dataseries/tests/data_series/test_dataseries_dimension_reference_fixed.py index 6b2446a..29d7d61 100644 --- a/skipper/skipper/dataseries/tests/data_series/test_dataseries_dimension_reference_fixed.py +++ b/skipper/skipper/dataseries/tests/data_series/test_dataseries_dimension_reference_fixed.py @@ -54,7 +54,7 @@ def test_cant_change(self) -> None: 'external_id': 'my_dim_1', 'optional': False }) - self.assertEquals(status.HTTP_400_BAD_REQUEST, failed_response.status_code) + self.assertEqual(status.HTTP_400_BAD_REQUEST, failed_response.status_code) def test_cant_delete_dataseries_if_still_referenced(self) -> None: data_series = self.create_payload(DATA_SERIES_BASE_URL + 'dataseries/', payload={ @@ -90,7 +90,7 @@ def test_cant_delete_dataseries_if_still_referenced(self) -> None: self.assertEqual(deletion_response.status_code, status.HTTP_400_BAD_REQUEST) deletion_response_json = deletion_response.json() self.assertIn('visible_references', deletion_response_json) - self.assertEquals(1, len(deletion_response_json['visible_references'])) + self.assertEqual(1, len(deletion_response_json['visible_references'])) self.assertIn('data_series', deletion_response_json['visible_references'][0]) self.assertIn('dimension', deletion_response_json['visible_references'][0]) self.assertURLEqual(deletion_response_json['visible_references'][0]['data_series'], data_series['url']) # type: ignore diff --git a/skipper/skipper/dataseries/tests/data_series/views_contract/test_get_data_series_id.py b/skipper/skipper/dataseries/tests/data_series/views_contract/test_get_data_series_id.py index bd71856..9fce748 100644 --- a/skipper/skipper/dataseries/tests/data_series/views_contract/test_get_data_series_id.py +++ b/skipper/skipper/dataseries/tests/data_series/views_contract/test_get_data_series_id.py @@ -40,8 +40,8 @@ def test_get_data_series_id_regular(self) -> None: 'data_series': str(self.data_series.id) } - self.assertEquals(str(self.data_series.id), get_data_series_id(kwargs_object=kwargs)) - self.assertEquals(str(self.data_series.id), get_data_series_id(kwargs)) + self.assertEqual(str(self.data_series.id), get_data_series_id(kwargs_object=kwargs)) + self.assertEqual(str(self.data_series.id), get_data_series_id(kwargs)) def test_get_data_series_id_by_external_id(self) -> None: kwargs = { @@ -49,5 +49,5 @@ def test_get_data_series_id_by_external_id(self) -> None: 'by_external_id': True } - self.assertEquals(str(self.data_series.id), get_data_series_id(kwargs_object=kwargs)) - self.assertEquals(str(self.data_series.id), get_data_series_id(kwargs)) + self.assertEqual(str(self.data_series.id), get_data_series_id(kwargs_object=kwargs)) + self.assertEqual(str(self.data_series.id), get_data_series_id(kwargs)) diff --git a/skipper/skipper/dataseries/tests/data_series/views_contract/test_get_data_series_object.py b/skipper/skipper/dataseries/tests/data_series/views_contract/test_get_data_series_object.py index adc1f7c..5744087 100644 --- a/skipper/skipper/dataseries/tests/data_series/views_contract/test_get_data_series_object.py +++ b/skipper/skipper/dataseries/tests/data_series/views_contract/test_get_data_series_object.py @@ -246,7 +246,7 @@ def test_found_correct_with_all_perms(self) -> None: found_ds = get_data_series_object(kwargs_object=kwargs, action=action, request=fake_request) self.assertIsNotNone(found_ds) assert found_ds is not None - self.assertEquals(self.data_series.id, found_ds.id) + self.assertEqual(self.data_series.id, found_ds.id) if action == DATASERIES_PERMISSION_KEY_DATA_SERIES and method == 'GET': # dont remove GET perm @@ -292,7 +292,7 @@ def test_found_correct_with_global_and_staff(self) -> None: found_ds = get_data_series_object(kwargs_object=kwargs, action=action, request=fake_request) self.assertIsNotNone(found_ds) assert found_ds is not None - self.assertEquals(self.data_series.id, found_ds.id) + self.assertEqual(self.data_series.id, found_ds.id) if action == DATASERIES_PERMISSION_KEY_DATA_SERIES and method == 'GET': # dont remove GET perm diff --git a/skipper/skipper/dataseries/tests/storage/validate/test_datapoint_storage_default_validation.py b/skipper/skipper/dataseries/tests/storage/validate/test_datapoint_storage_default_validation.py index 0f4e0a1..6dda3ac 100644 --- a/skipper/skipper/dataseries/tests/storage/validate/test_datapoint_storage_default_validation.py +++ b/skipper/skipper/dataseries/tests/storage/validate/test_datapoint_storage_default_validation.py @@ -199,7 +199,7 @@ def test_payload_empty_dict(self) -> None: self.assertTrue('external_id' in result) self.assertTrue('payload' in result) self.assertTrue(isinstance(result['payload'], dict)) - self.assertEquals(0, len(result['payload'])) + self.assertEqual(0, len(result['payload'])) def test_payload_multi_value_dict(self) -> None: validation_request = self.empty_request() @@ -301,9 +301,9 @@ def test_payload_proper_type(self) -> None: self.assertTrue('external_id' in result) self.assertTrue('payload' in result) self.assertTrue(isinstance(result['payload'], dict)) - self.assertEquals(1, len(result['payload'])) + self.assertEqual(1, len(result['payload'])) self.assertTrue(isinstance(result['payload']['facty_boy'], self.type)) - self.assertEquals(correct_value, result['payload']['facty_boy']) + self.assertEqual(correct_value, result['payload']['facty_boy']) def test_optional_null(self) -> None: validation_request = self.empty_request() @@ -321,8 +321,8 @@ def test_optional_null(self) -> None: self.assertTrue('external_id' in result) self.assertTrue('payload' in result) self.assertTrue(isinstance(result['payload'], dict)) - self.assertEquals(1, len(result['payload'])) - self.assertEquals(None, result['payload']['facty_boy']) + self.assertEqual(1, len(result['payload'])) + self.assertEqual(None, result['payload']['facty_boy']) def test_optional_not_present(self) -> None: validation_request = self.empty_request() @@ -338,7 +338,7 @@ def test_optional_not_present(self) -> None: self.assertTrue('external_id' in result) self.assertTrue('payload' in result) self.assertTrue(isinstance(result['payload'], dict)) - self.assertEquals(0, len(result['payload'])) + self.assertEqual(0, len(result['payload'])) class FloatFactTest(BaseFactTest): @@ -614,12 +614,12 @@ def test_payload_proper_type(self) -> None: self.assertTrue('external_id' in result) self.assertTrue('payload' in result) self.assertTrue(isinstance(result['payload'], dict)) - self.assertEquals(1, len(result['payload'])) + self.assertEqual(1, len(result['payload'])) self.assertTrue(isinstance(result['payload']['dimmy_boy'], str)) if self.by_external_id: - self.assertEquals(self.data_point_for_dim.id, result['payload']['dimmy_boy']) + self.assertEqual(self.data_point_for_dim.id, result['payload']['dimmy_boy']) else: - self.assertEquals(correct_value, result['payload']['dimmy_boy']) + self.assertEqual(correct_value, result['payload']['dimmy_boy']) def test_optional_null(self) -> None: validation_request = self.empty_request() @@ -636,8 +636,8 @@ def test_optional_null(self) -> None: self.assertTrue('external_id' in result) self.assertTrue('payload' in result) self.assertTrue(isinstance(result['payload'], dict)) - self.assertEquals(1, len(result['payload'])) - self.assertEquals(None, result['payload']['dimmy_boy']) + self.assertEqual(1, len(result['payload'])) + self.assertEqual(None, result['payload']['dimmy_boy']) def test_optional_not_present(self) -> None: validation_request = self.empty_request() @@ -653,7 +653,7 @@ def test_optional_not_present(self) -> None: self.assertTrue('external_id' in result) self.assertTrue('payload' in result) self.assertTrue(isinstance(result['payload'], dict)) - self.assertEquals(0, len(result['payload'])) + self.assertEqual(0, len(result['payload'])) class DimensionByExternalIdTest(DimensionTest): diff --git a/skipper/skipper/debug/tests/test_debug_telemetry_ui_permissions.py b/skipper/skipper/debug/tests/test_debug_telemetry_ui_permissions.py index bdc4698..4b262a0 100644 --- a/skipper/skipper/debug/tests/test_debug_telemetry_ui_permissions.py +++ b/skipper/skipper/debug/tests/test_debug_telemetry_ui_permissions.py @@ -47,7 +47,7 @@ def test_telemetry_permissions(self) -> None: "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) assign_perm('debug.telemetry.ui', user) @@ -62,4 +62,4 @@ def test_telemetry_permissions(self) -> None: "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) diff --git a/skipper/skipper/flow/tests/test_flow_impl_permissions.py b/skipper/skipper/flow/tests/test_flow_impl_permissions.py index 5265229..df5cc98 100644 --- a/skipper/skipper/flow/tests/test_flow_impl_permissions.py +++ b/skipper/skipper/flow/tests/test_flow_impl_permissions.py @@ -55,7 +55,7 @@ def test_normal_user_permissions(self: 'HttpEndpointPermissionTest', method: str "HTTP_X_Original_Method": method } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) assign_perm('flow.impl', user) @@ -69,7 +69,7 @@ def test_normal_user_permissions(self: 'HttpEndpointPermissionTest', method: str "HTTP_X_Original_Method": method } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) external_id = 0 @@ -97,7 +97,7 @@ def test_with_endpoint_object(_tenant_to_use: Tenant, all_set_status: int, _meth "HTTP_X_Original_Method": _method } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, _response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, _response.status_code) assign_perm('flow.use', user, endpoint) @@ -112,7 +112,7 @@ def test_with_endpoint_object(_tenant_to_use: Tenant, all_set_status: int, _meth } # type: ignore ) - self.assertEquals(all_set_status, _response.status_code) + self.assertEqual(all_set_status, _response.status_code) if all_set_status == status.HTTP_200_OK: self.assertEqual(_response['flowuser'], str(user.username)) @@ -167,7 +167,7 @@ def test_with_endpoint_object(_tenant_to_use: Tenant, all_set_status: int, _meth "HTTP_X_Original_Method": method } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) class HttpEndpointPermissionTest(BaseViewTest): @@ -185,7 +185,7 @@ def test_OPTIONS_forbidden_without_headers(self) -> None: **{ } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_OPTIONS_forbidden_without_headers_logged_out(self) -> None: self.client.logout() @@ -196,7 +196,7 @@ def test_OPTIONS_forbidden_without_headers_logged_out(self) -> None: **{ } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_OPTIONS_sets_upstream_properly(self) -> None: self.client.logout() @@ -209,7 +209,7 @@ def test_OPTIONS_sets_upstream_properly(self) -> None: "HTTP_X_Original_Method": 'OPTIONS' } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(response['flowupstream'], getattr(settings, 'SKIPPER_CONTAINER_UPSTREAM', 'http://skipper')) self.assertEqual(response['flowhostname'], urlparse(response['flowupstream']).hostname) self.assertEqual(response['flowpath'], '/api/flow/options/') @@ -225,7 +225,7 @@ def test_OPTIONS_allowed_without_credentials_and_no_cors_headers(self) -> None: "HTTP_X_Original_Method": 'OPTIONS' } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(response['flowupstream'], getattr(settings, 'SKIPPER_CONTAINER_UPSTREAM', 'http://skipper')) self.assertEqual(response['flowhostname'], urlparse(response['flowupstream']).hostname) self.assertEqual(response['flowpath'], '/api/flow/options/') @@ -243,7 +243,7 @@ def test_OPTIONS_allowed_without_credentials(self) -> None: "HTTP_ACCESS_CONTROL_REQUEST_METHOD": method } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(response['flowupstream'], getattr(settings, 'SKIPPER_CONTAINER_UPSTREAM', 'http://skipper')) self.assertEqual(response['flowhostname'], urlparse(response['flowupstream']).hostname) @@ -255,7 +255,7 @@ def test_headers_missing(self) -> None: data=None, follow=False ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_method_header_missing(self) -> None: response = self.client.get( @@ -266,7 +266,7 @@ def test_method_header_missing(self) -> None: "HTTP_X_Original_Uri": 'some/stuff/here', } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_uri_header_missing(self) -> None: response = self.client.get( @@ -277,7 +277,7 @@ def test_uri_header_missing(self) -> None: "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_superuser_allowed_without_extra_permissions_with_endpoint_exists(self) -> None: tenant = Tenant.objects.filter( @@ -300,7 +300,7 @@ def test_superuser_allowed_without_extra_permissions_with_endpoint_exists(self) "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) def test_endpoint_with_engine_returns_proper_headers_system(self) -> None: tenant = Tenant.objects.filter( @@ -383,7 +383,7 @@ def test_superuser_not_allowed_without_extra_permissions_with_endpoint_exists_wr "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_superuser_not_allowed_without_extra_permissions_but_no_endpoint_exists(self) -> None: # test user is super user by default, so this works @@ -396,7 +396,7 @@ def test_superuser_not_allowed_without_extra_permissions_but_no_endpoint_exists( "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_GET(self) -> None: test_normal_user_permissions(self, 'GET', 'POST') diff --git a/skipper/skipper/flow/tests/test_flow_public_impl_permissions.py b/skipper/skipper/flow/tests/test_flow_public_impl_permissions.py index b52891c..747922d 100644 --- a/skipper/skipper/flow/tests/test_flow_public_impl_permissions.py +++ b/skipper/skipper/flow/tests/test_flow_public_impl_permissions.py @@ -55,7 +55,7 @@ def test_normal_user_permissions(self: 'HttpEndpointPermissionTest', method: str "HTTP_X_Original_Method": method } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) response = unauthenticated_client.get( path=self.actual_url_under_test, @@ -66,7 +66,7 @@ def test_normal_user_permissions(self: 'HttpEndpointPermissionTest', method: str "HTTP_X_Original_Method": method } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) assign_perm('flow.impl', user) @@ -96,7 +96,7 @@ def test_with_engine_object(_tenant_to_use: Tenant, all_set_status: int, _method "HTTP_X_Original_Method": _method } # type: ignore ) - self.assertEquals(all_set_status, _response.status_code) + self.assertEqual(all_set_status, _response.status_code) assign_perm('flow.use', user, endpoint) @@ -109,7 +109,7 @@ def test_with_engine_object(_tenant_to_use: Tenant, all_set_status: int, _method "HTTP_X_Original_Method": _method } # type: ignore ) - self.assertEquals(all_set_status, _response.status_code) + self.assertEqual(all_set_status, _response.status_code) if all_set_status == status.HTTP_200_OK: self.assertEqual(_response['flowuser'], '') @@ -137,7 +137,7 @@ def test_with_engine_object(_tenant_to_use: Tenant, all_set_status: int, _method "HTTP_X_Original_Method": _method } # type: ignore ) - self.assertEquals(all_set_status, _response.status_code) + self.assertEqual(all_set_status, _response.status_code) if all_set_status == status.HTTP_200_OK: self.assertEqual(_response['flowuser'], '') @@ -196,7 +196,7 @@ def test_with_engine_object(_tenant_to_use: Tenant, all_set_status: int, _method "HTTP_X_Original_Method": method } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) class HttpEndpointPermissionTest(BaseViewTest): @@ -214,7 +214,7 @@ def test_OPTIONS_forbidden_without_headers(self) -> None: **{ } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_OPTIONS_forbidden_without_headers_logged_out(self) -> None: self.client.logout() @@ -225,7 +225,7 @@ def test_OPTIONS_forbidden_without_headers_logged_out(self) -> None: **{ } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_OPTIONS_sets_upstream_properly(self) -> None: self.client.logout() @@ -238,7 +238,7 @@ def test_OPTIONS_sets_upstream_properly(self) -> None: "HTTP_X_Original_Method": 'OPTIONS' } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(response['flowupstream'], getattr(settings, 'SKIPPER_CONTAINER_UPSTREAM', 'http://skipper')) self.assertEqual(response['flowpath'], '/api/flow/options/') @@ -253,7 +253,7 @@ def test_OPTIONS_allowed_without_credentials_and_no_cors_headers(self) -> None: "HTTP_X_Original_Method": 'OPTIONS' } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(response['flowupstream'], getattr(settings, 'SKIPPER_CONTAINER_UPSTREAM', 'http://skipper')) self.assertEqual(response['flowhostname'], urlparse(response['flowupstream']).hostname) self.assertEqual(response['flowpath'], '/api/flow/options/') @@ -271,7 +271,7 @@ def test_OPTIONS_allowed_without_credentials(self) -> None: "HTTP_ACCESS_CONTROL_REQUEST_METHOD": method } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(response['flowupstream'], getattr(settings, 'SKIPPER_CONTAINER_UPSTREAM', 'http://skipper')) self.assertEqual(response['flowhostname'], urlparse(response['flowupstream']).hostname) @@ -290,7 +290,7 @@ def test_OPTIONS_without_credentials_on_wrong_prefixed_original_uri(self) -> Non "HTTP_ACCESS_CONTROL_REQUEST_METHOD": method } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) self.assertEqual(response['flowupstream'], getattr(settings, 'SKIPPER_CONTAINER_UPSTREAM', 'http://skipper')) self.assertEqual(response['flowhostname'], urlparse(response['flowupstream']).hostname) @@ -302,7 +302,7 @@ def test_headers_missing(self) -> None: data=None, follow=False ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_method_header_missing(self) -> None: response = self.client.get( @@ -313,7 +313,7 @@ def test_method_header_missing(self) -> None: "HTTP_X_Original_Uri": 'some/stuff/here', } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_uri_header_missing(self) -> None: response = self.client.get( @@ -324,7 +324,7 @@ def test_uri_header_missing(self) -> None: "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) def test_public_endpoint_with_engine_returns_proper_headers_system(self) -> None: self.client.logout() diff --git a/skipper/skipper/flow/tests/test_http_endpoint_model.py b/skipper/skipper/flow/tests/test_http_endpoint_model.py index 9e1c093..9613cf9 100644 --- a/skipper/skipper/flow/tests/test_http_endpoint_model.py +++ b/skipper/skipper/flow/tests/test_http_endpoint_model.py @@ -55,7 +55,7 @@ def test_private_by_default(self) -> None: method=method, system=True ) - self.assertEquals(False, endpoint.public) + self.assertEqual(False, endpoint.public) def test_clean_no_engine_not_system(self) -> None: endpoint = self._endpoint() diff --git a/skipper/skipper/task/tests/test_task_dashboard_permissions.py b/skipper/skipper/task/tests/test_task_dashboard_permissions.py index b6cb9dd..0753952 100644 --- a/skipper/skipper/task/tests/test_task_dashboard_permissions.py +++ b/skipper/skipper/task/tests/test_task_dashboard_permissions.py @@ -47,7 +47,7 @@ def test_dashboard_permissions(self) -> None: "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_403_FORBIDDEN, response.status_code) + self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code) assign_perm('task.dashboard', user) @@ -62,4 +62,4 @@ def test_dashboard_permissions(self) -> None: "HTTP_X_Original_Method": 'GET' } # type: ignore ) - self.assertEquals(status.HTTP_200_OK, response.status_code) + self.assertEqual(status.HTTP_200_OK, response.status_code) diff --git a/skipper/skipper/urls.py b/skipper/skipper/urls.py index a975b75..c5eda65 100644 --- a/skipper/skipper/urls.py +++ b/skipper/skipper/urls.py @@ -56,7 +56,17 @@ def tenant_object(self: Any) -> Any: TenantModelMixin.tenant_object = tenant_object + def _do_update(self: Any, *args: Any, **kwargs: Any) -> Any: + """ + This method is patched to be compatible with Django 6.0+ + which passes one additional argument (forced_update) to _do_update + """ + # Call the parent class _do_update with all arguments + return super(TenantModelMixin, self)._do_update(*args, **kwargs) + TenantModelMixin._do_update = _do_update + + monkey_patch_multitenant()