From c052d402771580c07219f457af1f8e174aa807b5 Mon Sep 17 00:00:00 2001 From: Sergiy Markin Date: Fri, 28 Apr 2023 16:13:30 +0000 Subject: [PATCH] Pegleg focal upgrade This PS delivers focal version of Pegleg image and has the following updates: - removed release-notes-jobs-python3 gate job because of incompartibility with Sphinx from current requirements - added focal gate node and switched gates to use it - added bindep.txt file into project root - added bindep role into gate jobs - added ubuntu_focal dockerfile for building focal pegleg image - switched tox profiles to py38 - uplifted references to shipyard_client, promenade and deckhand projects - resolved required dependencies conflicts by weakening constraints in Pipfile - updated tox profile update-requirements for generate requirements.txt and test-requirements.txt - generated new Pipfile.lock, requirements.txt and test-requirements.txt from Pipfile - switched tox profiles to use requirements.txt and test-requirements.txt instead of pipenv because of upstream zuul nodes Pypi mirrorring issue - updated reference to seaworthy site certificates in treasuremap repo - fixed unit tests issues caused by pytest/mock updates and new openssl version - fixed focal docker image publishing issue - added multiprocessing into coverage tests running process - made unit and coveraget tests more verbosive Change-Id: I5c4c519dc725cfb8c7b4e14756347c9336028aff --- .zuul.yaml | 43 +- Makefile | 4 +- Pipfile | 40 +- Pipfile.lock | 2445 +++++++++++------ bindep.txt | 10 + doc/requirements.txt | 14 +- doc/source/images/architecture-pegleg.png | Bin 37604 -> 42961 bytes images/pegleg/Dockerfile.ubuntu_focal | 75 + requirements.txt | 267 +- test-requirements.txt | 187 ++ tests/unit/cli/test_commands.py | 8 +- tests/unit/engine/catalog/test_pki_utility.py | 6 +- tests/unit/engine/test_selectable_linting.py | 2 +- tools/gate/playbooks/docker-image-build.yaml | 66 +- .../gate/playbooks/files/docker-systemd.conf | 8 - tools/gate/playbooks/lint-yaml.yaml | 2 +- tools/gate/run-cover-tests.sh | 17 + tools/gate/run-unit-tests.sh | 4 +- tools/pegleg.sh | 2 +- tox.ini | 96 +- vcs-requirements.env | 6 +- 21 files changed, 2248 insertions(+), 1054 deletions(-) create mode 100644 bindep.txt create mode 100644 images/pegleg/Dockerfile.ubuntu_focal create mode 100644 test-requirements.txt delete mode 100644 tools/gate/playbooks/files/docker-systemd.conf create mode 100755 tools/gate/run-cover-tests.sh diff --git a/.zuul.yaml b/.zuul.yaml index b13b36eb..5f9e5a38 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -13,9 +13,9 @@ - project: templates: - docs-on-readthedocs - - openstack-python36-jobs + - openstack-python38-jobs - openstack-cover-jobs - - release-notes-jobs-python3 + # - release-notes-jobs-python3 vars: rtd_webhook_id: '38574' rtd_project_name: 'airship-pegleg' @@ -26,25 +26,26 @@ docker_registry_login_url: "https://quay.io/api/v1/" deb_docker_repo: "{{ zuul_site_mirror_fqdn }}/deb-docker/{{ ansible_distribution_release }}" image_prefix: "airshipit" + base_image_focal: "ubuntu:20.04" base_image_bionic: "ubuntu:18.04" base_image_opensuse: "opensuse/leap:15.1" base_image_xenial: "ubuntu:16.04" check: jobs: - - openstack-tox-pep8-bionic + - openstack-tox-pep8-focal - pegleg-dependency-vulnerability-check - - airship-pegleg-docker-build-gate-ubuntu_bionic + - airship-pegleg-docker-build-gate-ubuntu_focal - airship-pegleg-lint-yaml gate: jobs: - - openstack-tox-pep8-bionic + - openstack-tox-pep8-focal - pegleg-dependency-vulnerability-check - - airship-pegleg-docker-build-gate-ubuntu_bionic + - airship-pegleg-docker-build-gate-ubuntu_focal - airship-pegleg-lint-yaml post: jobs: - - airship-pegleg-docker-publish-ubuntu_bionic + - airship-pegleg-docker-publish-ubuntu_focal - pegleg-upload-git-mirror - nodeset: @@ -54,62 +55,62 @@ label: ubuntu-xenial - nodeset: - name: airship-pegleg-single-node-bionic + name: airship-pegleg-single-node-focal nodes: - name: primary - label: ubuntu-bionic + label: ubuntu-focal - job: - name: openstack-tox-pep8-bionic + name: openstack-tox-pep8-focal parent: openstack-tox-pep8 - nodeset: openstack-single-node-bionic + nodeset: openstack-single-node-focal - job: name: airship-pegleg-lint-yaml voting: true timeout: 600 run: tools/gate/playbooks/lint-yaml.yaml - nodeset: ubuntu-bionic + nodeset: ubuntu-focal irrelevant-files: - ^.*\.rst$ - ^doc/.*$ - job: name: pegleg-dependency-vulnerability-check - parent: tox-py36 + parent: tox-py38 voting: false timeout: 600 - nodeset: ubuntu-bionic + nodeset: ubuntu-focal vars: tox_envlist: safety - bindep_profile: test py36 + bindep_profile: test py38 - job: - name: airship-pegleg-docker-build-gate-ubuntu_bionic + name: airship-pegleg-docker-build-gate-ubuntu_focal timeout: 1800 run: tools/gate/playbooks/docker-image-build.yaml - nodeset: airship-pegleg-single-node-bionic + nodeset: airship-pegleg-single-node-focal irrelevant-files: - '^doc/.*' vars: publish: false - distro: ubuntu_bionic + distro: ubuntu_focal tags: dynamic: patch_set: true - job: - name: airship-pegleg-docker-publish-ubuntu_bionic + name: airship-pegleg-docker-publish-ubuntu_focal timeout: 1800 run: tools/gate/playbooks/docker-image-build.yaml - nodeset: airship-pegleg-single-node-bionic + nodeset: airship-pegleg-single-node-focal secrets: - airship_pegleg_quay_creds irrelevant-files: - '^doc/.*' vars: publish: true - distro: ubuntu_bionic + distro: ubuntu_focal tags: dynamic: branch: true diff --git a/Makefile b/Makefile index 9f301375..e48c6f88 100644 --- a/Makefile +++ b/Makefile @@ -27,9 +27,9 @@ PUSH_IMAGE ?= false # use this variable for image labels added in internal build process LABEL ?= org.airshipit.build=community COMMIT ?= $(shell git rev-parse HEAD) -DISTRO ?= ubuntu_bionic +DISTRO ?= ubuntu_focal IMAGE ?= $(DOCKER_REGISTRY)/$(IMAGE_PREFIX)/$(IMAGE_NAME):$(IMAGE_TAG)-${DISTRO} -PYTHON_BASE_IMAGE ?= python:3.6 +PYTHON_BASE_IMAGE ?= python:3.8 BASE_IMAGE ?= export diff --git a/Pipfile b/Pipfile index 71746f62..767e5eef 100644 --- a/Pipfile +++ b/Pipfile @@ -4,8 +4,9 @@ url = "https://pypi.org/simple" verify_ssl = true [dev-packages] -pytest = "~=6.1.1" -pytest-cov = "~=2.10.1" +bandit = "~=1.6.0" +pytest = "*" +pytest-cov = "*" testfixtures = "*" pytest-xdist = "*" requests = ">=2.20.0" @@ -17,22 +18,23 @@ hacking = ">=1.1.0" flake8-import-order = ">=0.18.1" [packages] -click = ">=6.7" -jsonschema = ">=3.0.1,<4" -cryptography = ">=2.7" -python-dateutil = ">=2.8.1" -GitPython = "~=2.1.11" -docker = ">=3.7.2" -pylibyaml = "~=0.1" -PyYAML = "~=5.1" -deckhand = {git = "https://opendev.org/airship/deckhand.git",ref = "5cd799cc5d04527ac782270008ff647b3779ff05"} -shipyard-client = {git = "https://opendev.org/airship/shipyard.git",ref = "e3e71f7d1632c0dc13b436a32c238f9da76d6d88",subdirectory = "src/bin/shipyard_client"} -promenade = {git = "https://opendev.org/airship/promenade.git",ref = "c10165c144e0a18137596a3c89f1339d6ed30d0c"} -"oslo.i18n" = "~=3.24.0" -"oslo.utils" = ">=3.42.1" -six = ">=1.15.0" -debtcollector = "~=1.22.0" -zipp = "~=3.6.0" +click = "*" +jsonschema = "*" +cryptography = "*" +python-dateutil = "*" +GitPython = "*" +docker = "*" +pylibyaml = "*" +PyYAML = "*" +deckhand = {git = "https://opendev.org/airship/deckhand.git",ref = "03f6932e16aa0b72a32a10fc04a52125c45dd5d7"} +shipyard-client = {git = "https://opendev.org/airship/shipyard.git",ref = "154a099b2843b1b42a7b8afa5fa98383cf3c1b7c",subdirectory = "src/bin/shipyard_client"} +promenade = {git = "https://opendev.org/airship/promenade.git",ref = "97e3721a03ca48d312891694972b827a53714bf9"} +"oslo.i18n" = "*" +"oslo.utils" = "*" +six = "*" +debtcollector = "*" +zipp = "*" +psycopg2-binary = "*" [requires] -python_version = "3.6" +python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index 0f4c78cd..d8724c9f 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "74f671c6d4e70f612ebeb9868b73f161f3b75893e44627baf092c4f293998efa" + "sha256": "74d298d0245dbb696aebd80194806f638280fbfd6c652859ccde4f2dfb93c72d" }, "pipfile-spec": 6, "requires": { - "python_version": "3.6" + "python_version": "3.8" }, "sources": [ { @@ -16,12 +16,21 @@ ] }, "default": { + "alabaster": { + "hashes": [ + "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3", + "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2" + ], + "markers": "python_version >= '3.6'", + "version": "==0.7.13" + }, "alembic": { "hashes": [ - "sha256:0fe570f23dc48fb1bbda6f6a396f1c0c28d7045c0ad14018c104a511e6c1fe8a" + "sha256:4e02ed2aa796bd179965041afa092c55b51fb077de19d61835673cc80672c01c", + "sha256:5334f32314fb2a56d86b4c4dd1ae34b08c03cae4cb888bc699942104d66bc245" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.0.1" + "version": "==1.4.3" }, "amqp": { "hashes": [ @@ -31,19 +40,29 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==2.6.1" }, + "argcomplete": { + "hashes": [ + "sha256:b9ca96448e14fa459d7450a4ab5a22bbf9cee4ba7adddf03e65c398b5daeea28", + "sha256:e36fd646839933cbec7941c662ecb65338248667358dd3d968405a4506a60d9b" + ], + "markers": "python_version >= '3.6'", + "version": "==3.0.8" + }, "arrow": { "hashes": [ - "sha256:a558d3b7b6ce7ffc74206a86c147052de23d3d4ef0e17c210dd478c53575c4cd" + "sha256:e098abbd9af3665aea81bdd6c869e93af4feb078e98468dd351c383af187aac5", + "sha256:ff08d10cda1d36c68657d6ad20d74fbea493d980f8b2d45344e00d6ed2bf6ed4" ], - "version": "==0.12.1" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.17.0" }, "attrs": { "hashes": [ - "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", - "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" + "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", + "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" ], - "markers": "python_version >= '3.5'", - "version": "==22.1.0" + "markers": "python_version >= '3.7'", + "version": "==23.1.0" }, "autopage": { "hashes": [ @@ -55,33 +74,60 @@ }, "babel": { "hashes": [ - "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51", - "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb" + "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610", + "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455" + ], + "markers": "python_version >= '3.7'", + "version": "==2.12.1" + }, + "bcrypt": { + "hashes": [ + "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535", + "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0", + "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410", + "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd", + "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665", + "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab", + "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71", + "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215", + "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b", + "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda", + "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9", + "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a", + "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344", + "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f", + "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d", + "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c", + "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c", + "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2", + "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d", + "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e", + "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3" ], "markers": "python_version >= '3.6'", - "version": "==2.10.3" + "version": "==4.0.1" }, "beaker": { "hashes": [ - "sha256:6072892918225f5a055413082f2ff285f3ebca6a3873a0d6e163253ba83f0450" + "sha256:2d5f427e3b13259c98c934cab0e428fc1c18a4c4b94acbdae930df7e7f51d1ec" ], - "version": "==1.10.0" + "version": "==1.12.0" }, "cachetools": { "hashes": [ - "sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693", - "sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1" + "sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14", + "sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4" ], - "markers": "python_version ~= '3.5'", - "version": "==4.2.4" + "markers": "python_version ~= '3.7'", + "version": "==5.3.0" }, "certifi": { "hashes": [ - "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", - "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" + "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", + "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" ], "markers": "python_version >= '3.6'", - "version": "==2022.9.24" + "version": "==2022.12.7" }, "cffi": { "hashes": [ @@ -159,6 +205,87 @@ ], "version": "==3.0.4" }, + "charset-normalizer": { + "hashes": [ + "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", + "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", + "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", + "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", + "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", + "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", + "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", + "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", + "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", + "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", + "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", + "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", + "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", + "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", + "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", + "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", + "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", + "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", + "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", + "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", + "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", + "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", + "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", + "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", + "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", + "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", + "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", + "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", + "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", + "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", + "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", + "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", + "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", + "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", + "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", + "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", + "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", + "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", + "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", + "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", + "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", + "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", + "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", + "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", + "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", + "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", + "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", + "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", + "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", + "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", + "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", + "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", + "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", + "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", + "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", + "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", + "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", + "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", + "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", + "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", + "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", + "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", + "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", + "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", + "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", + "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", + "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", + "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", + "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", + "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", + "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", + "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", + "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", + "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", + "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" + ], + "markers": "python_full_version >= '3.7.0'", + "version": "==3.1.0" + }, "click": { "hashes": [ "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d", @@ -183,55 +310,113 @@ }, "cmd2": { "hashes": [ - "sha256:073e555c05853b0f6965f3d03329babdf9e38a5f2cea028e61a64cd7eeb74ad5", - "sha256:a77e3056751393270b4125c990cf527db132f15951a20a3a5dd2df4290aadf20" + "sha256:71873c11f72bd19e2b1db578214716f0d4f7c8fa250093c601265a9a717dee52", + "sha256:f1988ff2fff0ed812a2d25218a081b0fa0108d45b48ba2a9272bb98091b654e6" ], "markers": "python_version >= '3.6'", - "version": "==2.4.2" + "version": "==2.4.3" + }, + "configparser": { + "hashes": [ + "sha256:8be267824b541c09b08db124917f48ab525a6c3e837011f3130781a224c57090", + "sha256:b065779fd93c6bf4cee42202fa4351b4bb842e96a3fb469440e484517a49b9fa" + ], + "markers": "python_version >= '3.7'", + "version": "==5.3.0" + }, + "coverage": { + "hashes": [ + "sha256:0342a28617e63ad15d96dca0f7ae9479a37b7d8a295f749c14f3436ea59fdcb3", + "sha256:066b44897c493e0dcbc9e6a6d9f8bbb6607ef82367cf6810d387c09f0cd4fe9a", + "sha256:10b15394c13544fce02382360cab54e51a9e0fd1bd61ae9ce012c0d1e103c813", + "sha256:12580845917b1e59f8a1c2ffa6af6d0908cb39220f3019e36c110c943dc875b0", + "sha256:156192e5fd3dbbcb11cd777cc469cf010a294f4c736a2b2c891c77618cb1379a", + "sha256:1637253b11a18f453e34013c665d8bf15904c9e3c44fbda34c643fbdc9d452cd", + "sha256:292300f76440651529b8ceec283a9370532f4ecba9ad67d120617021bb5ef139", + "sha256:30dcaf05adfa69c2a7b9f7dfd9f60bc8e36b282d7ed25c308ef9e114de7fc23b", + "sha256:338aa9d9883aaaad53695cb14ccdeb36d4060485bb9388446330bef9c361c252", + "sha256:373ea34dca98f2fdb3e5cb33d83b6d801007a8074f992b80311fc589d3e6b790", + "sha256:38c0a497a000d50491055805313ed83ddba069353d102ece8aef5d11b5faf045", + "sha256:40cc0f91c6cde033da493227797be2826cbf8f388eaa36a0271a97a332bfd7ce", + "sha256:4436cc9ba5414c2c998eaedee5343f49c02ca93b21769c5fdfa4f9d799e84200", + "sha256:509ecd8334c380000d259dc66feb191dd0a93b21f2453faa75f7f9cdcefc0718", + "sha256:5c587f52c81211d4530fa6857884d37f514bcf9453bdeee0ff93eaaf906a5c1b", + "sha256:5f3671662dc4b422b15776cdca89c041a6349b4864a43aa2350b6b0b03bbcc7f", + "sha256:6599bf92f33ab041e36e06d25890afbdf12078aacfe1f1d08c713906e49a3fe5", + "sha256:6e8a95f243d01ba572341c52f89f3acb98a3b6d1d5d830efba86033dd3687ade", + "sha256:706ec567267c96717ab9363904d846ec009a48d5f832140b6ad08aad3791b1f5", + "sha256:780551e47d62095e088f251f5db428473c26db7829884323e56d9c0c3118791a", + "sha256:7ff8f3fb38233035028dbc93715551d81eadc110199e14bbbfa01c5c4a43f8d8", + "sha256:828189fcdda99aae0d6bf718ea766b2e715eabc1868670a0a07bf8404bf58c33", + "sha256:857abe2fa6a4973f8663e039ead8d22215d31db613ace76e4a98f52ec919068e", + "sha256:883123d0bbe1c136f76b56276074b0c79b5817dd4238097ffa64ac67257f4b6c", + "sha256:8877d9b437b35a85c18e3c6499b23674684bf690f5d96c1006a1ef61f9fdf0f3", + "sha256:8e575a59315a91ccd00c7757127f6b2488c2f914096077c745c2f1ba5b8c0969", + "sha256:97072cc90f1009386c8a5b7de9d4fc1a9f91ba5ef2146c55c1f005e7b5c5e068", + "sha256:9a22cbb5ede6fade0482111fa7f01115ff04039795d7092ed0db43522431b4f2", + "sha256:a063aad9f7b4c9f9da7b2550eae0a582ffc7623dca1c925e50c3fbde7a579771", + "sha256:a08c7401d0b24e8c2982f4e307124b671c6736d40d1c39e09d7a8687bddf83ed", + "sha256:a0b273fe6dc655b110e8dc89b8ec7f1a778d78c9fd9b4bda7c384c8906072212", + "sha256:a2b3b05e22a77bb0ae1a3125126a4e08535961c946b62f30985535ed40e26614", + "sha256:a66e055254a26c82aead7ff420d9fa8dc2da10c82679ea850d8feebf11074d88", + "sha256:aa387bd7489f3e1787ff82068b295bcaafbf6f79c3dad3cbc82ef88ce3f48ad3", + "sha256:ae453f655640157d76209f42c62c64c4d4f2c7f97256d3567e3b439bd5c9b06c", + "sha256:b5016e331b75310610c2cf955d9f58a9749943ed5f7b8cfc0bb89c6134ab0a84", + "sha256:b9a4ee55174b04f6af539218f9f8083140f61a46eabcaa4234f3c2a452c4ed11", + "sha256:bd3b4b8175c1db502adf209d06136c000df4d245105c8839e9d0be71c94aefe1", + "sha256:bebea5f5ed41f618797ce3ffb4606c64a5de92e9c3f26d26c2e0aae292f015c1", + "sha256:c10fbc8a64aa0f3ed136b0b086b6b577bc64d67d5581acd7cc129af52654384e", + "sha256:c2c41c1b1866b670573657d584de413df701f482574bad7e28214a2362cb1fd1", + "sha256:cf97ed82ca986e5c637ea286ba2793c85325b30f869bf64d3009ccc1a31ae3fd", + "sha256:d1f25ee9de21a39b3a8516f2c5feb8de248f17da7eead089c2e04aa097936b47", + "sha256:d2fbc2a127e857d2f8898aaabcc34c37771bf78a4d5e17d3e1f5c30cd0cbc62a", + "sha256:dc945064a8783b86fcce9a0a705abd7db2117d95e340df8a4333f00be5efb64c", + "sha256:ddc5a54edb653e9e215f75de377354e2455376f416c4378e1d43b08ec50acc31", + "sha256:e8834e5f17d89e05697c3c043d3e58a8b19682bf365048837383abfe39adaed5", + "sha256:ef9659d1cda9ce9ac9585c045aaa1e59223b143f2407db0eaee0b61a4f266fb6", + "sha256:f6f5cab2d7f0c12f8187a376cc6582c477d2df91d63f75341307fcdcb5d60303", + "sha256:f81c9b4bd8aa747d417407a7f6f0b1469a43b36a85748145e144ac4e8d303cb5", + "sha256:f99ef080288f09ffc687423b8d60978cf3a465d3f404a18d1a05474bd8575a47" + ], + "markers": "python_version >= '3.7'", + "version": "==7.2.5" }, "cryptography": { "hashes": [ - "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a", - "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f", - "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0", - "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407", - "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7", - "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6", - "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153", - "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750", - "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad", - "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6", - "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b", - "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5", - "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a", - "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d", - "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d", - "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294", - "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0", - "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a", - "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac", - "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61", - "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013", - "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e", - "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb", - "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9", - "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd", - "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818" + "sha256:0a7dcbcd3f1913f664aca35d47c1331fce738d44ec34b7be8b9d332151b0b01e", + "sha256:1eb7bb0df6f6f583dd8e054689def236255161ebbcf62b226454ab9ec663746b", + "sha256:21ca464b3a4b8d8e86ba0ee5045e103a1fcfac3b39319727bc0fc58c09c6aff7", + "sha256:34dae04a0dce5730d8eb7894eab617d8a70d0c97da76b905de9efb7128ad7085", + "sha256:3520667fda779eb788ea00080124875be18f2d8f0848ec00733c0ec3bb8219fc", + "sha256:3c4129fc3fdc0fa8e40861b5ac0c673315b3c902bbdc05fc176764815b43dd1d", + "sha256:3fa3a7ccf96e826affdf1a0a9432be74dc73423125c8f96a909e3835a5ef194a", + "sha256:5b0fbfae7ff7febdb74b574055c7466da334a5371f253732d7e2e7525d570498", + "sha256:695104a9223a7239d155d7627ad912953b540929ef97ae0c34c7b8bf30857e89", + "sha256:8695456444f277af73a4877db9fc979849cd3ee74c198d04fc0776ebc3db52b9", + "sha256:94cc5ed4ceaefcbe5bf38c8fba6a21fc1d365bb8fb826ea1688e3370b2e24a1c", + "sha256:94fff993ee9bc1b2440d3b7243d488c6a3d9724cc2b09cdb297f6a886d040ef7", + "sha256:9965c46c674ba8cc572bc09a03f4c649292ee73e1b683adb1ce81e82e9a6a0fb", + "sha256:a00cf305f07b26c351d8d4e1af84ad7501eca8a342dedf24a7acb0e7b7406e14", + "sha256:a305600e7a6b7b855cd798e00278161b681ad6e9b7eca94c721d5f588ab212af", + "sha256:cd65b60cfe004790c795cc35f272e41a3df4631e2fb6b35aa7ac6ef2859d554e", + "sha256:d2a6e5ef66503da51d2110edf6c403dc6b494cc0082f85db12f54e9c5d4c3ec5", + "sha256:d9ec0e67a14f9d1d48dd87a2531009a9b251c02ea42851c060b25c782516ff06", + "sha256:f44d141b8c4ea5eb4dbc9b3ad992d45580c1d22bf5e24363f2fbf50c2d7ae8a7" ], "index": "pypi", - "version": "==38.0.1" + "version": "==3.4.8" }, "debtcollector": { "hashes": [ - "sha256:d1756440d25a50e3eca2fc399c9e5f1ca2f9e6b837570a80b9450999f4290525", - "sha256:f0bccd85595fbca1e5c4f05789f6ce50f29e5b1a004462978bdd4330921e802a" + "sha256:1393a527d2c72f143ffa6a629e9c33face6642634eece475b48cab7b04ba61f3", + "sha256:dc9d1ad3f745c43f4bbedbca30f9ffe8905a8c028c9926e61077847d5ea257ab" ], "index": "pypi", - "version": "==1.22.0" + "version": "==2.5.0" }, "deckhand": { "git": "https://opendev.org/airship/deckhand.git", - "ref": "5cd799cc5d04527ac782270008ff647b3779ff05" + "ref": "13c5199f18664d66ccdd3a1e54bb40ad2c293d1a" }, "decorator": { "hashes": [ @@ -243,19 +428,26 @@ }, "deepdiff": { "hashes": [ - "sha256:152b29dd9cd97cc78403121fb394925ec47377d4a410751e56547c3930ba2b39", - "sha256:b4150052e610b231885c4c0be3eea86e4c029df91550ec51b9fc14dd209a5055", - "sha256:ecad8e16a96ffd27e8f40c9801a6ab16ec6a7e7e6e6859a7710ba4695f22702c" + "sha256:8d4eb2c4e6cbc80b811266419cb71dd95a157094a3947ccf937a94d44943c7b8", + "sha256:e9aea49733f34fab9a0897038d8f26f9d94a97db1790f1b814cced89e9e0d2b7" ], - "version": "==3.3.0" + "markers": "python_version >= '3.6'", + "version": "==5.8.1" + }, + "distlib": { + "hashes": [ + "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46", + "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e" + ], + "version": "==0.3.6" }, "dnspython": { "hashes": [ - "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e", - "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f" + "sha256:224e32b03eb46be70e12ef6d64e0be123a64e621ab4c0822ff6d450d52a540b9", + "sha256:89141536394f909066cabd112e3e1a37e4e654db00a25308b0f130bc3152eb46" ], - "markers": "python_version >= '3.6' and python_version < '4.0'", - "version": "==2.2.1" + "markers": "python_version >= '3.7' and python_version < '4.0'", + "version": "==2.3.0" }, "docker": { "hashes": [ @@ -265,28 +457,90 @@ "index": "pypi", "version": "==5.0.3" }, + "docutils": { + "hashes": [ + "sha256:a71042bb7207c03d5647f280427f14bfbd1a65c9eb84f4b341d85fafb6bb4bdf", + "sha256:e2ffeea817964356ba4470efba7c2f42b6b0de0b04e66378507e3e2504bbff4c" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.17" + }, "dogpile.cache": { "hashes": [ - "sha256:3f0ca10b46b165e0b0e65e0e74b1a4b36187787b69db7c0f7073077adff2f05d", - "sha256:d844e8bb638cc4f544a4c89a834dfd36fe935400b71a16cbd744ebdfb720fd4e" + "sha256:47554c860ceb484dd5aef9ff1f88fecb3d4aef6bb92119450f5bcbaa026bbfb1", + "sha256:d371f310bcdbe5d9c8e7e473348b75c5c97517ac8be16759b24dbaadef1c70a6" ], "markers": "python_version >= '3.6'", - "version": "==1.1.8" + "version": "==1.2.0" }, - "entrypoints": { + "dulwich": { "hashes": [ - "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", - "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" + "sha256:026427b5ef0f1fe138ed22078e49b00175b58b11e5c18e2be00f06ee0782603b", + "sha256:03ed9448f2944166e28aa8d3f4c8feeceb5c6880e9ffe5ab274869d45abd9589", + "sha256:058aaba18aefe18fcd84b216fd34d032ad453967dcf3dee263278951cd43e2d4", + "sha256:075c8e9d2694ff16fc6e8a5ec0c771b7c33be12e4ebecc346fd74315d3d84605", + "sha256:08ee426b609dab552839b5c7394ae9af2112c164bb727b7f85a69980eced9251", + "sha256:092829f27a2c87cdf6b6523216822859ecf01d281ddfae0e58cad1f44adafff6", + "sha256:0b541bd58426a30753ab12cc024ba29b6699d197d9d0d9f130b9768ab20e0e6a", + "sha256:0cd83f84e58aa59fb9d85cf15e74be83a5be876ac5876d5030f60fcce7ab36f1", + "sha256:1799c04bd53ec404ebd2c82c1d66197a31e5f0549c95348bb7d3f57a28c94241", + "sha256:1cf246530b8d574b33a9614da76881b96c190c0fe78f76ab016c88082c0da051", + "sha256:208d01a9cda1bae16c92e8c54e806701a16969346aba44b8d6921c6c227277a9", + "sha256:21ee962211839bb6e52d41f363ce9dbb0638d341a1c02263e163d69012f58b25", + "sha256:250ec581682af846cb85844f8032b7642dd278006b1c3abd5e8e718eba0b1b00", + "sha256:25376efc6ea2ee9daa868a120d4f9c905dcb7774f68931be921fba41a657f58a", + "sha256:2bf2be68fddfc0adfe43be99ab31f6b0f16b9ef1e40464679ba831ff615ad4a3", + "sha256:33f73e8f902c6397cc73a727db1f6e75add8ce894bfbb1a15daa2f7a4138a744", + "sha256:3b048f84c94c3284f29bf228f1094ccc48763d76ede5c35632153bd7f697b846", + "sha256:40f8f461eba87ef2e8ce0005ca2c12f1b4fdbbafd3a717b8570060d7cd35ee0c", + "sha256:512bb4b04e403a38860f7eb22abeeaefba3c4a9c08bc7beec8885494c5828034", + "sha256:5a1137177b62eec949c0f1564eef73920f842af5ebfc260c20d9cd47e8ecd519", + "sha256:6618e35268d116bffddd6dbec360a40c54b3164f8af0513d95d8698f36e2eacc", + "sha256:67dbf4dd7586b2d437f539d5dc930ebceaf74a4150720644d6ea7e5ffc1cb2ff", + "sha256:6f8d45f5fcdb52c60c902a951f549faad9979314e7e069f4fa3d14eb409b16a0", + "sha256:73f9feba3da1ae66f0b521d7c2727db7f5025a83facdc73f4f39abe2b6d4f00d", + "sha256:7aaf5c4528e83e3176e7dbb01dcec34fb41c93279a8f8527cf33e5df88bfb910", + "sha256:7c69c95d5242171d07396761f759a8a4d566e9a01bf99612f9b9e309e70a80fc", + "sha256:7ca3b453d767eb83b3ec58f0cfcdc934875a341cdfdb0dc55c1431c96608cf83", + "sha256:7f2cb11fe789b72feeae7cdf6e27375c33ed6915f8ca5ea7ce81b5e234c75a9e", + "sha256:89af4ee347f361338bad5c27b023f9d19e7aed17aa75cb519f28e6cf1658a0ba", + "sha256:8ad7de37c9ff817bc5d26f89100f87b7f1a5cc25e5eaaa54f11dc66cca9652e4", + "sha256:8ba1fe3fb415fd34cae5ca090fb82030b6e8423d6eb2c4c9c4fbf50b15c7664c", + "sha256:9213a114dd19cfca19715088f12f143e918c5e1b4e26f7acf1a823d7da9e1413", + "sha256:9f08e5cc10143d3da2a2cf735d8b932ef4e4e1d74b0c74ce66c52eab02068be8", + "sha256:a275b3a579dfd923d6330f6e5c2886dbdb5da4e004c5abecb107eb347d301412", + "sha256:a2e6270923bf5ec0e9f720d689579a904f401c62193222d000d8cb8e880684e9", + "sha256:a98989ff1ed20825728495ffb859cd700a120850074184d2e1ec08a0b1ab8ab3", + "sha256:ae38c6d24d7aff003a241c8f1dd268eb1c6f7625d91e3435836ff5a5eed05ce5", + "sha256:af7a417e19068b1abeb9addd3c045a2d6e40d15365af6aa3cbe2d47305b5bb11", + "sha256:b09b6166876d2cba8f331a548932b09e11c9386db0525c9ca15c399b666746fc", + "sha256:b9fc609a3d4009ee31212f435f5a75720ef24280f6d23edfd53f77b562a79c5b", + "sha256:ba3d42cd83d7f89b9c1b2f76df971e8ab58815f8060da4dc67b9ae9dba1b34cc", + "sha256:baf5b3b901272837bee2311ecbd28fdbe960d288a070dc72bdfdf48cfcbb8090", + "sha256:bb54fe45deb55e4caae4ea2c1dba93ee79fb5c377287b14056d4c30fb156920e", + "sha256:be0801ae3f9017c6437bcd23a4bf2b2aa88e465f7efeed4b079944d07e3df994", + "sha256:c349431f5c8aa99b8744550d0bb4615f63e73450584202ac5db0e5d7da4d82ff", + "sha256:c80ade5cdb0ea447e7f43b32abc2f4a628dcdfa64dc8ee5ab4262987e5e0814f", + "sha256:c8d1837c3d2d8e56aacc13a91ec7540b3baadc1b254fbdf225a2d15b72b654c3", + "sha256:c97561c22fc05d0f6ba370d9bd67f86c313c38f31a1793e0ee9acb78ee28e4b8", + "sha256:cf1f6edc968619a4355481c29d5571726723bc12924e2b25bd3348919f9bc992", + "sha256:cf7af6458cf6343a2a0632ae2fc5f04821b2ffefc7b8a27f4eacb726ef89c682", + "sha256:d0ac29adf468a838884e1507d81e872096238c76fe7da7f3325507e4390b6867", + "sha256:d7ad871d044a96f794170f2434e832c6b42804d0b53721377d03f865245cd273", + "sha256:ddb790f2fdc22984fba643866b21d04733c5cf7c3ace2a1e99e0c1c1d2336aab", + "sha256:e3b686b49adeb7fc45791dfae96ffcffeba1038e8b7603f369d6661f59e479fc", + "sha256:e7b8cb38a93de87b980f882f0dcd19f2e3ad43216f34e06916315cb3a03e6964", + "sha256:f4f8ff776ca38ce272d9c164a7f77db8a54a8cad6d9468124317adf8732be07d" ], - "markers": "python_version >= '2.7'", - "version": "==0.3" + "markers": "python_version >= '3.7'", + "version": "==0.21.3" }, "eventlet": { "hashes": [ - "sha256:a085922698e5029f820cf311a648ac324d73cec0e4792877609d978a4b5bbf31", - "sha256:afbe17f06a58491e9aebd7a4a03e70b0b63fd4cf76d8307bae07f280479b1515" + "sha256:722803e7eadff295347539da363d68ae155b8b26ae6a634474d0a920be73cfda", + "sha256:e43b9ae05ba4bb477a10307699c9aff7ff86121b2640f9184d29059f5a687df8" ], - "version": "==0.33.1" + "version": "==0.33.3" }, "extras": { "hashes": [ @@ -297,10 +551,41 @@ }, "falcon": { "hashes": [ - "sha256:0a66b33458fab9c1e400a9be1a68056abda178eb02a8cb4b8f795e9df20b053b", - "sha256:3981f609c0358a9fcdb25b0e7fab3d9e23019356fb429c635ce4133135ae1bc4" + "sha256:00e6c6b3ec846193cfd30be26b10dbb7cc31ee3442f80f1d5ffd14c410619156", + "sha256:016fe952a526045292fb591f4c724d5fdf4127e88d0369e2dc147925dc51835c", + "sha256:10ff3080aebe84fb45955cb02375ce13b6a3556c73edad282325eb67aeb42a46", + "sha256:13121ab6a86597ec849e397272662f5cafcbe534e12c01e2913035fe4120dcd1", + "sha256:1b8dfce6c379ba14d962abf479137258c694017752bc5b585ab366e2e8106a3e", + "sha256:1cf50b9a2dcf9c8f6ae8de94e2e6ac082449380784fb9d1a1fc80fade052aead", + "sha256:1d9c3dc6c5a8a2f2c3f1fd433a6b4e4bcef22c52166b91e2d6d985fbcadcc62b", + "sha256:271fa0c4b0634e4e238dc7c2fcd57be5f9dd0f200553e46677ff704f6a8090e6", + "sha256:2abecd50121ed969fa34d5c035a340ee4b21afc84dcd354acd548ab2edcc67b2", + "sha256:394e16249d9b61dcdbb6653311c4a208f9fc68b696d0123d29f781fbd338cfd4", + "sha256:550566250ac2bc0418075f2ad177b7e01adef1815459c2d962e579dff07162fb", + "sha256:5af63f2d7f509353552b2436501449065f30f27542d1e58c864656bd3a7a9ef1", + "sha256:5dd393dbf01cbaf99493893de4832121bd495dc49a46c571915b79c59aad7ef4", + "sha256:6245344fab1a7faeb9267c75b8f4fd6c4bda35e1a2fe8f547b832b547c7f2128", + "sha256:66d937b7b796b68640d63e006e475d9268f68dfb3f1468415259507db72ee065", + "sha256:686a0167af40565a2057f3902a9fb8f15a423ad17a80c9caee932b668478c9ad", + "sha256:6fbc130a12e35ca76d782201af7a558ac57d4e5e66ba3a8017f5a3baaed64f8b", + "sha256:762854cc9f13082166c166c93fd6f2178ba1787170bacee9a4b37fab412f602e", + "sha256:7a7ecb8eafada89389c19eda44811e14786599c1d86c6cffa58c65150b24bc43", + "sha256:8a5fa02feaf67a2bd0407201dfec92edb0eee59803c3e1e717cfa5a2232ffc77", + "sha256:8fc0ef213d6e66bb997d172ceaa04f6daa309cac47e2fcd4320234806c806467", + "sha256:a7e6e1e6af16d1055454eaed5ceaceabca97656b28a8a924b426fbf0e26ec0f0", + "sha256:b7aab2dd6683437d8739a0cc9d6ab6542f48e05445a0138b356f63983a7c98fe", + "sha256:b8302953d72405750450d4f8b7651dc6c5a5199dbb104b598036818f917b1d8c", + "sha256:bec014dc19a38d5a525ab948a8eccc885f28d2611bdf3f73842fadc44b185702", + "sha256:ca798f3240283a89881209dfa8eb20e2eaf8d01c50b33be5f70865c0902577ec", + "sha256:d53dabcf8212c38137e40a61795e312224dc7a437b03d7fb0a1b0dc3ed8d4b5b", + "sha256:f049eeeeea08e0a5fbb87d1fe131f85c7a0310c3a0a4226146463709fbfe12eb", + "sha256:f187040b6632ed434c3f6bcedb98fb6559973123d1799e77718502d2b693701e", + "sha256:f6e3c42f3c20af33c040affe0a3e8cd358153304b48eb441adfd261c3bfd51d3", + "sha256:fd1eaf1a5d9d936f29f9aca3f268cf375621d1ffcbf27a6e14c187b489bf5f26", + "sha256:ff2eaf9807ea357ced1cc60e1d2871f55aa6ea29162386efb95fb4e5a730e6de" ], - "version": "==1.4.1" + "markers": "python_version >= '3.5'", + "version": "==3.1.1" }, "fasteners": { "hashes": [ @@ -310,6 +595,14 @@ "markers": "python_version >= '3.6'", "version": "==0.18" }, + "filelock": { + "hashes": [ + "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9", + "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718" + ], + "markers": "python_version >= '3.7'", + "version": "==3.12.0" + }, "fixtures": { "hashes": [ "sha256:2a551b0421101de112d9497fb5f6fd25e5019391c0fbec9bad591ecae981420d", @@ -319,11 +612,11 @@ }, "flake8": { "hashes": [ - "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", - "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" + "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", + "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==3.7.9" + "version": "==3.8.4" }, "futurist": { "hashes": [ @@ -333,150 +626,184 @@ "markers": "python_version >= '3.6'", "version": "==2.4.1" }, - "gitdb2": { + "gitdb": { "hashes": [ - "sha256:1b6df1433567a51a4a9c1a5a0de977aa351a405cc56d7d35f3388bad1f630350", - "sha256:96bbb507d765a7f51eb802554a9cfe194a174582f772e0d89f4e87288c288b7b" + "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a", + "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.0.6" + "markers": "python_version >= '3.7'", + "version": "==4.0.10" }, "gitpython": { "hashes": [ - "sha256:23b4de99c5fc1564701301cead04e16aa3e47019034668327206d1b52e1e54f7", - "sha256:838c38d882a97b2fd146dbd4eb9baaf857cb65ebaa64e4c06fca48aaa491e1c6" + "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573", + "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d" ], "index": "pypi", - "version": "==2.1.15" + "version": "==3.1.31" }, "google-auth": { "hashes": [ - "sha256:98f601773978c969e1769f97265e732a81a8e598da3263895023958d456ee625", - "sha256:f12d86502ce0f2c0174e2e70ecc8d36c69593817e67e1d9c5e34489120422e4b" + "sha256:ce311e2bc58b130fddf316df57c9b3943c2a7b4f6ec31de9663a9333e4064efc", + "sha256:f586b274d3eb7bd932ea424b1c702a30e0393a2e2bc4ca3eae8263ffd8be229f" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==2.12.0" + "version": "==2.17.3" }, "greenlet": { "hashes": [ - "sha256:0118817c9341ef2b0f75f5af79ac377e4da6ff637e5ee4ac91802c0e379dadb4", - "sha256:048d2bed76c2aa6de7af500ae0ea51dd2267aec0e0f2a436981159053d0bc7cc", - "sha256:07c58e169bbe1e87b8bbf15a5c1b779a7616df9fd3e61cadc9d691740015b4f8", - "sha256:095a980288fe05adf3d002fbb180c99bdcf0f930e220aa66fcd56e7914a38202", - "sha256:0b181e9aa6cb2f5ec0cacc8cee6e5a3093416c841ba32c185c30c160487f0380", - "sha256:1626185d938d7381631e48e6f7713e8d4b964be246073e1a1d15c2f061ac9f08", - "sha256:184416e481295832350a4bf731ba619a92f5689bf5d0fa4341e98b98b1265bd7", - "sha256:1dd51d2650e70c6c4af37f454737bf4a11e568945b27f74b471e8e2a9fd21268", - "sha256:1ec2779774d8e42ed0440cf8bc55540175187e8e934f2be25199bf4ed948cd9e", - "sha256:2cf45e339cabea16c07586306a31cfcc5a3b5e1626d365714d283732afed6809", - "sha256:2fb0aa7f6996879551fd67461d5d3ab0c3c0245da98be90c89fcb7a18d437403", - "sha256:44b4817c34c9272c65550b788913620f1fdc80362b209bc9d7dd2f40d8793080", - "sha256:466ce0928e33421ee84ae04c4ac6f253a3a3e6b8d600a79bd43fd4403e0a7a76", - "sha256:4f166b4aca8d7d489e82d74627a7069ab34211ef5ebb57c300ec4b9337b60fc0", - "sha256:510c3b15587afce9800198b4b142202b323bf4b4b5f9d6c79cb9a35e5e3c30d2", - "sha256:5b756e6730ea59b2745072e28ad27f4c837084688e6a6b3633c8b1e509e6ae0e", - "sha256:5fbe1ab72b998ca77ceabbae63a9b2e2dc2d963f4299b9b278252ddba142d3f1", - "sha256:6200a11f003ec26815f7e3d2ded01b43a3810be3528dd760d2f1fa777490c3cd", - "sha256:65ad1a7a463a2a6f863661329a944a5802c7129f7ad33583dcc11069c17e622c", - "sha256:694ffa7144fa5cc526c8f4512665003a39fa09ef00d19bbca5c8d3406db72fbe", - "sha256:6f5d4b2280ceea76c55c893827961ed0a6eadd5a584a7c4e6e6dd7bc10dfdd96", - "sha256:7532a46505470be30cbf1dbadb20379fb481244f1ca54207d7df3bf0bbab6a20", - "sha256:76a53bfa10b367ee734b95988bd82a9a5f0038a25030f9f23bbbc005010ca600", - "sha256:77e41db75f9958f2083e03e9dd39da12247b3430c92267df3af77c83d8ff9eed", - "sha256:7a43bbfa9b6cfdfaeefbd91038dde65ea2c421dc387ed171613df340650874f2", - "sha256:7b41d19c0cfe5c259fe6c539fd75051cd39a5d33d05482f885faf43f7f5e7d26", - "sha256:7c5227963409551ae4a6938beb70d56bf1918c554a287d3da6853526212fbe0a", - "sha256:870a48007872d12e95a996fca3c03a64290d3ea2e61076aa35d3b253cf34cd32", - "sha256:88b04e12c9b041a1e0bcb886fec709c488192638a9a7a3677513ac6ba81d8e79", - "sha256:8c287ae7ac921dfde88b1c125bd9590b7ec3c900c2d3db5197f1286e144e712b", - "sha256:903fa5716b8fbb21019268b44f73f3748c41d1a30d71b4a49c84b642c2fed5fa", - "sha256:9537e4baf0db67f382eb29255a03154fcd4984638303ff9baaa738b10371fa57", - "sha256:9951dcbd37850da32b2cb6e391f621c1ee456191c6ae5528af4a34afe357c30e", - "sha256:9b2f7d0408ddeb8ea1fd43d3db79a8cefaccadd2a812f021333b338ed6b10aba", - "sha256:9c88e134d51d5e82315a7c32b914a58751b7353eb5268dbd02eabf020b4c4700", - "sha256:9fae214f6c43cd47f7bef98c56919b9222481e833be2915f6857a1e9e8a15318", - "sha256:a3a669f11289a8995d24fbfc0e63f8289dd03c9aaa0cc8f1eab31d18ca61a382", - "sha256:aa741c1a8a8cc25eb3a3a01a62bdb5095a773d8c6a86470bde7f607a447e7905", - "sha256:b0877a9a2129a2c56a2eae2da016743db7d9d6a05d5e1c198f1b7808c602a30e", - "sha256:bcb6c6dd1d6be6d38d6db283747d07fda089ff8c559a835236560a4410340455", - "sha256:caff52cb5cd7626872d9696aee5b794abe172804beb7db52eed1fd5824b63910", - "sha256:cbc1eb55342cbac8f7ec159088d54e2cfdd5ddf61c87b8bbe682d113789331b2", - "sha256:cd16a89efe3a003029c87ff19e9fba635864e064da646bc749fc1908a4af18f3", - "sha256:ce5b64dfe8d0cca407d88b0ee619d80d4215a2612c1af8c98a92180e7109f4b5", - "sha256:d58a5a71c4c37354f9e0c24c9c8321f0185f6945ef027460b809f4bb474bfe41", - "sha256:db41f3845eb579b544c962864cce2c2a0257fe30f0f1e18e51b1e8cbb4e0ac6d", - "sha256:db5b25265010a1b3dca6a174a443a0ed4c4ab12d5e2883a11c97d6e6d59b12f9", - "sha256:dd0404d154084a371e6d2bafc787201612a1359c2dee688ae334f9118aa0bf47", - "sha256:de431765bd5fe62119e0bc6bc6e7b17ac53017ae1782acf88fcf6b7eae475a49", - "sha256:df02fdec0c533301497acb0bc0f27f479a3a63dcdc3a099ae33a902857f07477", - "sha256:e8533f5111704d75de3139bf0b8136d3a6c1642c55c067866fa0a51c2155ee33", - "sha256:f2f908239b7098799b8845e5936c2ccb91d8c2323be02e82f8dcb4a80dcf4a25", - "sha256:f8bfd36f368efe0ab2a6aa3db7f14598aac454b06849fb633b762ddbede1db90", - "sha256:ffe73f9e7aea404722058405ff24041e59d31ca23d1da0895af48050a07b6932" + "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a", + "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a", + "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43", + "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33", + "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8", + "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088", + "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca", + "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343", + "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645", + "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db", + "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df", + "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3", + "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86", + "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2", + "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a", + "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf", + "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7", + "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394", + "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40", + "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3", + "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6", + "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74", + "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0", + "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3", + "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91", + "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5", + "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9", + "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8", + "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b", + "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6", + "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb", + "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73", + "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b", + "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df", + "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9", + "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f", + "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0", + "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857", + "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a", + "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249", + "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30", + "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292", + "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b", + "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d", + "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b", + "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c", + "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca", + "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7", + "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75", + "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae", + "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b", + "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470", + "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564", + "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9", + "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099", + "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0", + "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5", + "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19", + "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1", + "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.1.3" + "version": "==2.0.2" }, "hacking": { "hashes": [ - "sha256:299b45ece148fcb0f5047487311854f6e8d6ba331a2add6cd068583f7939f9c9", - "sha256:f92d1de02bcb91474e178bfef01465cc1647ee436efc61ef7a7e8cabde3ef9b1" + "sha256:079a1e0ea98813429a98b0ebaedad4275058c38906fa7c35d0eb56df9f5e0fe9", + "sha256:150839891be9e13f784b5f809091fb9e8c72aef43d9898830f76f8c9684ee139" ], "markers": "python_version >= '3.5'", - "version": "==3.0.1" + "version": "==4.1.0" + }, + "html5lib": { + "hashes": [ + "sha256:2612a191a8d5842bfa057e41ba50bbb9dcb722419d2408c78cff4758d0754868" + ], + "version": "==0.9999999" + }, + "httpexceptor": { + "hashes": [ + "sha256:e90496b6dca251edfebccd4ba9dc6826b83a3033ae37d72f86e7ef039e267836" + ], + "version": "==1.4.0" }, "idna": { "hashes": [ - "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", - "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c" + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" ], - "version": "==2.8" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.10" + }, + "imagesize": { + "hashes": [ + "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", + "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.4.1" }, "importlib-metadata": { "hashes": [ - "sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e", - "sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668" + "sha256:02a9f62b02e9b1cc43871809ef99947e8f5d94771392d666ada2cafc4cd09d4f", + "sha256:52e65a0856f9ba7ea8f2c4ced253fb6c88d1a8c352cb1e916cff4eb17d5a693d" ], - "markers": "python_version < '3.8'", - "version": "==4.8.3" - }, - "importlib-resources": { - "hashes": [ - "sha256:33a95faed5fc19b4bc16b29a6eeae248a3fe69dd55d4d229d2b480e23eeaad45", - "sha256:d756e2f85dd4de2ba89be0b21dba2a3bbec2e871a42a3a16719258a11f87506b" - ], - "markers": "python_version < '3.7'", - "version": "==5.4.0" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==2.1.3" }, "iso8601": { "hashes": [ "sha256:32811e7b81deee2063ea6d2e94f8819a86d1f3811e49d23623a41fa832bef03f", "sha256:8400e90141bf792bce2634df533dc57e3bee19ea120a87bebcd3da89a58ad73f" ], - "markers": "python_version < '4.0' and python_full_version >= '3.6.2'", + "markers": "python_full_version >= '3.6.2' and python_version < '4.0'", "version": "==1.1.0" }, "jinja2": { "hashes": [ - "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", - "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" + "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", + "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7" ], - "version": "==2.10" + "markers": "python_version >= '3.6'", + "version": "==3.0.3" }, "jsonpath-ng": { "hashes": [ - "sha256:0aeb1e9f5232bb9e1b34f02b90ac51a80100b66ffc742e0b11df93ccbde82765", - "sha256:b1fc75b877e9b2f46845a455fbdcfb0f0d9c727c45c19a745d02db620a9ef0be" + "sha256:292a93569d74029ba75ac2dc3d3630fc0e17b2df26119a165fa1d498ca47bf65", + "sha256:a273b182a82c1256daab86a313b937059261b5c5f8c4fa3fc38b882b344dd567", + "sha256:f75b95dbecb8a0f3b86fd2ead21c2b022c3f5770957492b9b6196ecccfeb10aa" ], - "version": "==1.4.3" + "version": "==1.5.3" + }, + "jsonpath-rw": { + "hashes": [ + "sha256:05c471281c45ae113f6103d1268ec7a4831a2e96aa80de45edc89b11fac4fbec" + ], + "version": "==1.4.0" + }, + "jsonpath-rw-ext": { + "hashes": [ + "sha256:0947e018c4e6d46f9d04c56487793c702eb225fa252891aa4ed41a9ca26f3d84", + "sha256:a9e44e803b6d87d135b09d1e5af0db4d4cf97ba62711a80aa51c8c721980a994" + ], + "version": "==1.2.2" }, "jsonpickle": { "hashes": [ - "sha256:7b272918b0554182e53dc340ddd62d9b7f902fec7e7b05620c04f3ccef479a0e", - "sha256:de7f2613818aa4f234138ca11243d6359ff83ae528b2185efdd474f62bcf9ae1" + "sha256:8919c166bac0574e3d74425c7559434062002d9dfc0ac2afa6dc746ba4a19439", + "sha256:e8d4b7cd0bd6826001a74377df1079a76ad8bae0f909282de2554164c837c8ba" ], "markers": "python_version >= '2.7'", - "version": "==2.2.0" + "version": "==1.4.1" }, "jsonschema": { "hashes": [ @@ -488,17 +815,18 @@ }, "keystoneauth1": { "hashes": [ - "sha256:341046d2c758b949544e3f59c109abf3bde4ed92ec2586b8f79719dd653c59ee", - "sha256:3ae67c6542ed66a37cddcd26a35457c1ff5cd14b20f5490973273cf9eb555a52" + "sha256:7fd532490ce4cf3f41d7b3a5804bf293fc58e2d88b8365d4cad90c0faf95f68f", + "sha256:8ca23b5bf9cb6bc2c836790326505c85c01ad78d707b43d6b766197bdb26d1d3" ], - "version": "==3.18.0" + "version": "==5.1.1" }, "keystonemiddleware": { "hashes": [ - "sha256:a7f706469e97821c7e8500fe73ee01f977968bfaa31ff2b65f7ec6b46ff5a19f", - "sha256:d3b81d0335730dd11999fd47e332db0933769d8a53becd82945ca37ff4f3236e" + "sha256:480e7932b8d90f03063b45fba740b0c35ab5fcc3ca68868a9f6fdcdf1b5f3d0c", + "sha256:b452dca8dbc7541a0cf094a9f9a3c48e5277d33aba90faa09fc2de2266479aa6" ], - "version": "==5.3.0" + "markers": "python_version >= '3.8'", + "version": "==10.2.0" }, "kombu": { "hashes": [ @@ -510,19 +838,19 @@ }, "kubernetes": { "hashes": [ - "sha256:9900f12ae92007533247167d14cdee949cd8c7721f88b4a7da5f5351da3834cd", - "sha256:da19d58865cf903a8c7b9c3691a2e6315d583a98f0659964656dfdf645bf7e49" + "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c", + "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042" ], "markers": "python_version >= '3.6'", - "version": "==24.2.0" + "version": "==26.1.0" }, "mako": { "hashes": [ - "sha256:4e9e345a41924a954251b95b4b28e14a301145b544901332e658907a7464b6b2", - "sha256:afaf8e515d075b22fad7d7b8b30e4a1c90624ff2f3733a06ec125f5a5f043a57" + "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818", + "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.1.6" + "markers": "python_version >= '3.7'", + "version": "==1.2.4" }, "markupsafe": { "hashes": [ @@ -606,69 +934,81 @@ ], "version": "==0.6.1" }, - "monotonic": { + "mock": { "hashes": [ - "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7", - "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c" + "sha256:06f18d7d65b44428202b145a9a36e99c2ee00d1eb992df0caf881d4664377891", + "sha256:0e0bc5ba78b8db3667ad636d964eb963dc97a59f04c6f6214c5f0e4a8f726c56" ], - "version": "==1.6" + "markers": "python_version >= '3.6'", + "version": "==5.0.2" }, "msgpack": { "hashes": [ - "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467", - "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae", - "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92", - "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef", - "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624", - "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227", - "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88", - "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9", - "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8", - "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd", - "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6", - "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55", - "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e", - "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2", - "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44", - "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6", - "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9", - "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab", - "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae", - "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa", - "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9", - "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e", - "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250", - "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce", - "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075", - "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236", - "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae", - "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e", - "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f", - "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08", - "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6", - "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d", - "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43", - "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1", - "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6", - "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0", - "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c", - "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff", - "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db", - "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243", - "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661", - "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba", - "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e", - "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb", - "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52", - "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6", - "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1", - "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f", - "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da", - "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f", - "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c", - "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8" + "sha256:06f5174b5f8ed0ed919da0e62cbd4ffde676a374aba4020034da05fab67b9164", + "sha256:0c05a4a96585525916b109bb85f8cb6511db1c6f5b9d9cbcbc940dc6b4be944b", + "sha256:137850656634abddfb88236008339fdaba3178f4751b28f270d2ebe77a563b6c", + "sha256:17358523b85973e5f242ad74aa4712b7ee560715562554aa2134d96e7aa4cbbf", + "sha256:18334484eafc2b1aa47a6d42427da7fa8f2ab3d60b674120bce7a895a0a85bdd", + "sha256:1835c84d65f46900920b3708f5ba829fb19b1096c1800ad60bae8418652a951d", + "sha256:1967f6129fc50a43bfe0951c35acbb729be89a55d849fab7686004da85103f1c", + "sha256:1ab2f3331cb1b54165976a9d976cb251a83183631c88076613c6c780f0d6e45a", + "sha256:1c0f7c47f0087ffda62961d425e4407961a7ffd2aa004c81b9c07d9269512f6e", + "sha256:20a97bf595a232c3ee6d57ddaadd5453d174a52594bf9c21d10407e2a2d9b3bd", + "sha256:20c784e66b613c7f16f632e7b5e8a1651aa5702463d61394671ba07b2fc9e025", + "sha256:266fa4202c0eb94d26822d9bfd7af25d1e2c088927fe8de9033d929dd5ba24c5", + "sha256:28592e20bbb1620848256ebc105fc420436af59515793ed27d5c77a217477705", + "sha256:288e32b47e67f7b171f86b030e527e302c91bd3f40fd9033483f2cacc37f327a", + "sha256:3055b0455e45810820db1f29d900bf39466df96ddca11dfa6d074fa47054376d", + "sha256:332360ff25469c346a1c5e47cbe2a725517919892eda5cfaffe6046656f0b7bb", + "sha256:362d9655cd369b08fda06b6657a303eb7172d5279997abe094512e919cf74b11", + "sha256:366c9a7b9057e1547f4ad51d8facad8b406bab69c7d72c0eb6f529cf76d4b85f", + "sha256:36961b0568c36027c76e2ae3ca1132e35123dcec0706c4b7992683cc26c1320c", + "sha256:379026812e49258016dd84ad79ac8446922234d498058ae1d415f04b522d5b2d", + "sha256:382b2c77589331f2cb80b67cc058c00f225e19827dbc818d700f61513ab47bea", + "sha256:476a8fe8fae289fdf273d6d2a6cb6e35b5a58541693e8f9f019bfe990a51e4ba", + "sha256:48296af57cdb1d885843afd73c4656be5c76c0c6328db3440c9601a98f303d87", + "sha256:4867aa2df9e2a5fa5f76d7d5565d25ec76e84c106b55509e78c1ede0f152659a", + "sha256:4c075728a1095efd0634a7dccb06204919a2f67d1893b6aa8e00497258bf926c", + "sha256:4f837b93669ce4336e24d08286c38761132bc7ab29782727f8557e1eb21b2080", + "sha256:4f8d8b3bf1ff2672567d6b5c725a1b347fe838b912772aa8ae2bf70338d5a198", + "sha256:525228efd79bb831cf6830a732e2e80bc1b05436b086d4264814b4b2955b2fa9", + "sha256:5494ea30d517a3576749cad32fa27f7585c65f5f38309c88c6d137877fa28a5a", + "sha256:55b56a24893105dc52c1253649b60f475f36b3aa0fc66115bffafb624d7cb30b", + "sha256:56a62ec00b636583e5cb6ad313bbed36bb7ead5fa3a3e38938503142c72cba4f", + "sha256:57e1f3528bd95cc44684beda696f74d3aaa8a5e58c816214b9046512240ef437", + "sha256:586d0d636f9a628ddc6a17bfd45aa5b5efaf1606d2b60fa5d87b8986326e933f", + "sha256:5cb47c21a8a65b165ce29f2bec852790cbc04936f502966768e4aae9fa763cb7", + "sha256:6c4c68d87497f66f96d50142a2b73b97972130d93677ce930718f68828b382e2", + "sha256:821c7e677cc6acf0fd3f7ac664c98803827ae6de594a9f99563e48c5a2f27eb0", + "sha256:916723458c25dfb77ff07f4c66aed34e47503b2eb3188b3adbec8d8aa6e00f48", + "sha256:9e6ca5d5699bcd89ae605c150aee83b5321f2115695e741b99618f4856c50898", + "sha256:9f5ae84c5c8a857ec44dc180a8b0cc08238e021f57abdf51a8182e915e6299f0", + "sha256:a2b031c2e9b9af485d5e3c4520f4220d74f4d222a5b8dc8c1a3ab9448ca79c57", + "sha256:a61215eac016f391129a013c9e46f3ab308db5f5ec9f25811e811f96962599a8", + "sha256:a740fa0e4087a734455f0fc3abf5e746004c9da72fbd541e9b113013c8dc3282", + "sha256:a9985b214f33311df47e274eb788a5893a761d025e2b92c723ba4c63936b69b1", + "sha256:ab31e908d8424d55601ad7075e471b7d0140d4d3dd3272daf39c5c19d936bd82", + "sha256:ac9dd47af78cae935901a9a500104e2dea2e253207c924cc95de149606dc43cc", + "sha256:addab7e2e1fcc04bd08e4eb631c2a90960c340e40dfc4a5e24d2ff0d5a3b3edb", + "sha256:b1d46dfe3832660f53b13b925d4e0fa1432b00f5f7210eb3ad3bb9a13c6204a6", + "sha256:b2de4c1c0538dcb7010902a2b97f4e00fc4ddf2c8cda9749af0e594d3b7fa3d7", + "sha256:b5ef2f015b95f912c2fcab19c36814963b5463f1fb9049846994b007962743e9", + "sha256:b72d0698f86e8d9ddf9442bdedec15b71df3598199ba33322d9711a19f08145c", + "sha256:bae7de2026cbfe3782c8b78b0db9cbfc5455e079f1937cb0ab8d133496ac55e1", + "sha256:bf22a83f973b50f9d38e55c6aade04c41ddda19b00c4ebc558930d78eecc64ed", + "sha256:c075544284eadc5cddc70f4757331d99dcbc16b2bbd4849d15f8aae4cf36d31c", + "sha256:c396e2cc213d12ce017b686e0f53497f94f8ba2b24799c25d913d46c08ec422c", + "sha256:cb5aaa8c17760909ec6cb15e744c3ebc2ca8918e727216e79607b7bbce9c8f77", + "sha256:cdc793c50be3f01106245a61b739328f7dccc2c648b501e237f0699fe1395b81", + "sha256:d25dd59bbbbb996eacf7be6b4ad082ed7eacc4e8f3d2df1ba43822da9bfa122a", + "sha256:e42b9594cc3bf4d838d67d6ed62b9e59e201862a25e9a157019e171fbe672dd3", + "sha256:e57916ef1bd0fee4f21c4600e9d1da352d8816b52a599c46460e93a6e9f17086", + "sha256:ed40e926fa2f297e8a653c954b732f125ef97bdd4c889f243182299de27e2aa9", + "sha256:ef8108f8dedf204bb7b42994abf93882da1159728a2d4c5e82012edd92c9da9f", + "sha256:f933bbda5a3ee63b8834179096923b094b76f0c7a73c1cfe8f07ad608c58844b", + "sha256:fe5c63197c55bce6385d9aee16c4d0641684628f63ace85f73571e65ad1c1e8d" ], - "version": "==1.0.4" + "version": "==1.0.5" }, "netaddr": { "hashes": [ @@ -714,17 +1054,35 @@ }, "networkx": { "hashes": [ - "sha256:45e56f7ab6fe81652fb4bc9f44faddb0e9025f469f602df14e3b2551c2ea5c8b" + "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36", + "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61" ], - "version": "==2.2" + "markers": "python_version >= '3.8'", + "version": "==3.1" + }, + "nose": { + "hashes": [ + "sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac", + "sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a", + "sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98" + ], + "version": "==1.3.7" }, "oauthlib": { "hashes": [ - "sha256:1565237372795bf6ee3e5aba5e2a85bd5a65d0e2aa5c628b9a97b7d7a0da3721", - "sha256:88e912ca1ad915e1dcc1c06fc9259d19de8deacd6fd17cc2df266decc2e49066" + "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca", + "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918" ], "markers": "python_version >= '3.6'", - "version": "==3.2.1" + "version": "==3.2.2" + }, + "ordered-set": { + "hashes": [ + "sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562", + "sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8" + ], + "markers": "python_version >= '3.7'", + "version": "==4.1.0" }, "os-service-types": { "hashes": [ @@ -735,118 +1093,161 @@ }, "oslo.cache": { "hashes": [ - "sha256:af107ce879751ef7261c8780f670ac17bc99d82ef8b3b8f825b647b9580845e9", - "sha256:dcd784ec64c39cac4e7077fa3ff715d4337b59f98d7a19fc4e143b47751c21f8" + "sha256:92b43f817245b12833fb53ceef5e0c7029b903dae100dc8c1a1ad9505b1eec03", + "sha256:f67520e6fd82dd7e85feeb3a810f7098df6a6608288a7282181c05724b310583" ], - "version": "==1.38.1" + "markers": "python_version >= '3.6'", + "version": "==2.10.1" }, "oslo.concurrency": { "hashes": [ - "sha256:145771c1d9261628ae397e14faea9133ea269dfb2f53c5a5964183335fb4064b", - "sha256:9f0876d99e3d60192ca080923e37e4bda2742a9e648f99e9557ba2a9dd8e5995" + "sha256:110fb601d822dd4b08eea27977d70d01f9f1cd1eaf6decd042a21f43bf3f2b25", + "sha256:2daead41e58cb9e6987496046d00b21b0bdf2d732d9a5cd059c34abb82c0b897" ], - "version": "==3.28.1" + "markers": "python_version >= '3.8'", + "version": "==5.1.1" }, "oslo.config": { "hashes": [ - "sha256:77a3104b1aa70d97adcc93513fcc61df5067a00152d429b9f5f7dcca214f11b4", - "sha256:85881b305971bab0d4f00d70aa8ccf6dbbd33f3a8e0058f9b83da6f675adfa01" + "sha256:3c5cc681ef106a4573d677510f907ab48f40004dc3aac2298d9a517559491efb", + "sha256:a0c346d778cdc8870ab945e438bea251b5f45fae05d6d99dfe4953cca2277b60" ], - "version": "==7.0.0" + "markers": "python_version >= '3.6'", + "version": "==8.7.1" }, "oslo.context": { "hashes": [ - "sha256:163d3d24a90545c2a56a587499027106b5a76d7c9854d2a906e19dd794d6b313", - "sha256:67f728af9b2366c340b8aa0f26729fdff6de52ce27c2a363109ca0d241e86c68" + "sha256:75a9a722a552fba8a89e8a01028fa82a6190ab317a9591bb83303a2210a79144", + "sha256:a0cf84fe7970cc070a821c1a88dc66dfceb81233a93f137a3715108804c7b9d5" ], - "version": "==2.21.0" + "markers": "python_version >= '3.6'", + "version": "==4.1.0" }, "oslo.db": { "hashes": [ - "sha256:44e815f146ea1b8221e2892feab9dfd9a22ab674be39cedafd59af7518a228e7", - "sha256:97e4a49de771be021739fc406b0dc8e11e2bb61462b602077fdfc3dbcb91ffb2" + "sha256:3ce4104ecad0449d00de4697ea23b8c50deaaeb7794d6121e956a8a53e72413a", + "sha256:56bf61fd615178e4e6f847ba34fea64fa6de5d66a2e0906475ade4bc17db59d6" ], - "version": "==4.41.1" + "markers": "python_version >= '3.6'", + "version": "==10.0.0" }, "oslo.i18n": { "hashes": [ - "sha256:2fe3d0ace3c1d6769675b94d446818799d3022886deea3b219beb7325c86f4fe", - "sha256:8629febc112ef1f9b929f4e279e522099909134bb94543a604e25a04f844c652" + "sha256:080fedf41b05d4dcd23a91d23ee2dea0863996e860a59695856269a42d939fc1", + "sha256:ed10686b75f7c607825177a669155f4e259ce39f6143a375f6359bbcaa4a35cd" ], "index": "pypi", - "version": "==3.24.0" + "version": "==6.0.0" }, "oslo.log": { "hashes": [ - "sha256:0bcdebe5b34679e849348d9953d0538ddc0a50db9b36e8ceb74cecb119dac065", - "sha256:18d3acca90814e3d7931dad18f8449c9f6d8e92c234d492bb26bdf3ffa844116" + "sha256:2e55e1e75ecd72cb4b095c9d0f27c1ea9c62bfcd454c1bb9ff68645f68b2743b", + "sha256:dad5d7ff1290f01132b356d36a1bb79f98a3929d5005cce73e849ed31b385ba7" ], - "version": "==3.45.2" + "markers": "python_version >= '3.6'", + "version": "==4.6.0" }, "oslo.messaging": { "hashes": [ - "sha256:9ae91fe4147b96c84352ab6fc614a7e9556b96922777511214912406b932ad17", - "sha256:b18cbe8bfc6c09201a5e3e61648751c674e54ccd8ba67ccc7155b31df739ddbb" + "sha256:2a5ef1d3b8edfb3c7b0fde07033175f81a97d010188616829cc1db05c57124e8", + "sha256:cef851e4ad16c368633246bf0ba3179be04a267e6cccbd5a9aece1a7fd3e6b7c" ], - "version": "==9.1.1" + "markers": "python_version >= '3.6'", + "version": "==12.13.0" + }, + "oslo.metrics": { + "hashes": [ + "sha256:a937b0ea597de8e9957a41c3c80e5d408bb626652a79e87d3ff9600f1b15c850", + "sha256:d1ed7a9167bb9ef245bd1bc023330bb478a069718bf0f70d9ac325324f8f5d73" + ], + "markers": "python_version >= '3.8'", + "version": "==0.6.0" }, "oslo.middleware": { "hashes": [ - "sha256:4508c01dfb63b5e140939bf2e7e3293a5cf51d48cf7b5a85020a29d37d8a216b", - "sha256:a7ffa765e5b6b5ac8f653f6d91cecbd8a02c85c100c876a97b41eab0af9afe31" + "sha256:0b91cd7e0a34b5d0cc3bbfa67bc0b1f2c543edcacef3a488dd20e70539524521", + "sha256:176dc32728bf99fac3ebd54a2035087c51e2ba77ab7fb58c3d9265907cc61fa3" ], - "version": "==3.36.0" + "markers": "python_version >= '3.6'", + "version": "==4.4.0" }, "oslo.policy": { "hashes": [ - "sha256:57f481085c12e97d042847e812c772057bd40040d45b9394043ce7d358efd524", - "sha256:c5ae09294a606ac684a9b8fb40483dd445a19d09701e3fd1b856946d3a1cfc43" + "sha256:07e3101501f1277609583b40de756e976dd58732d7d60060165ec7ffd2098209", + "sha256:f39258cc848598015774a1bd13d3e89ab865558ca18bda2a1970ba8fdf23ed1b" ], - "version": "==1.40.1" + "markers": "python_version >= '3.6'", + "version": "==3.10.1" }, "oslo.serialization": { "hashes": [ - "sha256:0b9bde3d03feab5477464ae7118b723f921c95abc36a5c335a54e33e0fe9c177", - "sha256:f1571f477be946fbb5ee80a939db51a9fb8f1da7902a7dfe0c8b3b2657e8469e" + "sha256:11ec9eeaddcd5ec99c88e2b46c1584915311e858c442319bdab5e5e2ec05f20e", + "sha256:3007e1b017ad3754cce54def894054cbcd05887e85928556657434b0fc7e4d83" ], - "version": "==2.29.2" + "markers": "python_version >= '3.6'", + "version": "==4.2.0" }, "oslo.service": { "hashes": [ - "sha256:15680c007cc8f45e3e0ee98881b58e21baffac1a31d0aa7f855c6a788f04bd8e", - "sha256:9ce36992aa96b0adacc0377c5b16acf579f5d274560432c6deaa141d20e914bc" + "sha256:48bce1c436cab7a0a4c144999ab05896d7c024dee215d89cb351009e980363f1", + "sha256:ea0b93f922ef49ceca475f2dab78468c76281f73170614599e2c83420f8ea439" ], - "markers": "python_version >= '3.6'", - "version": "==2.8.0" + "markers": "python_version >= '3.8'", + "version": "==3.1.1" }, "oslo.utils": { "hashes": [ - "sha256:4cb60d091585715c46e9b74804858bcccc25ea92cb83d0ca0b69269af35556e9", - "sha256:c9f35cc64a28a043dd8dd60e35586e840e188b6f165d08f5da55ef234c034ef2" + "sha256:6ce205cd82fe3bbf22b61bb503170cf22f9f1eb7d24e045d55a1b84f7733b4ad", + "sha256:eb1dfe61983b9b18bc4f11927059acf156e2e9970b45d3fcaa84fedbee3ab796" ], "index": "pypi", - "version": "==3.42.1" + "version": "==4.12.3" + }, + "packaging": { + "hashes": [ + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + ], + "markers": "python_version >= '3.6'", + "version": "==21.3" }, "paste": { "hashes": [ - "sha256:3f6645ae38dbb6f7ada7fa90ac347fe5e8e82fdcacf3c425db8694f1930bc0a4", - "sha256:e42eb7be79c94f0877e66cfa51c5fdc5c486d21228362eda1b6361123ec59dab" + "sha256:1b095c42dc91d426f3ae85101796b14d265887f8f36f3aad143a5f29effdc39d", + "sha256:8e08200a570f7e29dfafd4eea0e1b38a6193cfda6446bb515db74250b632c53b" ], - "version": "==3.0.1" + "version": "==3.5.0" }, "pastedeploy": { "hashes": [ - "sha256:39973e73f391335fac8bc8a8a95f7d34a9f42e2775600ce2dc518d93b37ef943", - "sha256:d5858f89a255e6294e63ed46b73613c56e3b9a2d82a42f1df4d06c8421a9e3cb" + "sha256:5f4b4d5fddd39b8947ea727161e366bf55b90efc60a4d1dd7976b9031d0b4e5f", + "sha256:6195c921b1c3ed9722e4e3e6aa29b70deebb2429b4ca3ff3d49185c8e80003bb" ], - "version": "==1.5.2" + "markers": "python_version >= '3.7'", + "version": "==3.0.1" + }, + "pastescript": { + "hashes": [ + "sha256:30b515633c839054635830b6c0e7039d815c0777352e69a7f75d42dfca028a08", + "sha256:ddec801a13ac667e094edde28f90212cdea7bdc9a18d4371b08f5a6ef7d2eba2" + ], + "version": "==3.3.0" }, "pbr": { "hashes": [ - "sha256:07f558fece33b05caf857474a366dfcc00562bca13dd8b47b2b3e22d9f9bf55c", - "sha256:579170e23f8e0c2f24b0de612f71f648eccb79fb1322c814ae6b3c07b5ba23e8" + "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", + "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" ], - "version": "==5.4.5" + "markers": "python_version >= '2.6'", + "version": "==5.5.1" + }, + "platformdirs": { + "hashes": [ + "sha256:47692bc24c1958e8b0f13dd727307cff1db103fca36399f457da8e05f222fdc4", + "sha256:7954a68d0ba23558d753f73437c55f89027cf8f5108c19844d4b82e5af396335" + ], + "markers": "python_version >= '3.7'", + "version": "==3.5.0" }, "ply": { "hashes": [ @@ -857,53 +1258,91 @@ }, "prettytable": { "hashes": [ - "sha256:1411c65d21dca9eaa505ba1d041bed75a6d629ae22f5109a923f4e719cfecba4", - "sha256:f7da57ba63d55116d65e5acb147bfdfa60dceccabf0d607d6817ee2888a05f2c" + "sha256:ef8334ee40b7ec721651fc4d37ecc7bb2ef55fde5098d994438f0dfdaa385c0c", + "sha256:f4aaf2ed6e6062a82fd2e6e5289bbbe705ec2788fe401a3a1f62a1cea55526d2" ], - "markers": "python_version >= '3.6'", - "version": "==2.5.0" + "markers": "python_version >= '3.7'", + "version": "==3.7.0" }, "promenade": { "git": "https://opendev.org/airship/promenade.git", - "ref": "c10165c144e0a18137596a3c89f1339d6ed30d0c" + "ref": "97e3721a03ca48d312891694972b827a53714bf9" + }, + "prometheus-client": { + "hashes": [ + "sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab", + "sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48" + ], + "markers": "python_version >= '3.6'", + "version": "==0.16.0" }, "psycopg2-binary": { "hashes": [ - "sha256:040234f8a4a8dfd692662a8308d78f63f31a97e1c42d2480e5e6810c48966a29", - "sha256:086f7e89ec85a6704db51f68f0dcae432eff9300809723a6e8782c41c2f48e03", - "sha256:18ca813fdb17bc1db73fe61b196b05dd1ca2165b884dd5ec5568877cabf9b039", - "sha256:19dc39616850342a2a6db70559af55b22955f86667b5f652f40c0e99253d9881", - "sha256:2166e770cb98f02ed5ee2b0b569d40db26788e0bf2ec3ae1a0d864ea6f1d8309", - "sha256:3a2522b1d9178575acee4adf8fd9f979f9c0449b00b4164bb63c3475ea6528ed", - "sha256:3aa773580f85a28ffdf6f862e59cb5a3cc7ef6885121f2de3fca8d6ada4dbf3b", - "sha256:3b5deaa3ee7180585a296af33e14c9b18c218d148e735c7accf78130765a47e3", - "sha256:407af6d7e46593415f216c7f56ba087a9a42bd6dc2ecb86028760aa45b802bd7", - "sha256:4c3c09fb674401f630626310bcaf6cd6285daf0d5e4c26d6e55ca26a2734e39b", - "sha256:4c6717962247445b4f9e21c962ea61d2e884fc17df5ddf5e35863b016f8a1f03", - "sha256:50446fae5681fc99f87e505d4e77c9407e683ab60c555ec302f9ac9bffa61103", - "sha256:5057669b6a66aa9ca118a2a860159f0ee3acf837eda937bdd2a64f3431361a2d", - "sha256:5dd90c5438b4f935c9d01fcbad3620253da89d19c1f5fca9158646407ed7df35", - "sha256:659c815b5b8e2a55193ede2795c1e2349b8011497310bb936da7d4745652823b", - "sha256:69b13fdf12878b10dc6003acc8d0abf3ad93e79813fd5f3812497c1c9fb9be49", - "sha256:7a1cb80e35e1ccea3e11a48afe65d38744a0e0bde88795cc56a4d05b6e4f9d70", - "sha256:7e6e3c52e6732c219c07bd97fff6c088f8df4dae3b79752ee3a817e6f32e177e", - "sha256:7f42a8490c4fe854325504ce7a6e4796b207960dabb2cbafe3c3959cb00d1d7e", - "sha256:84156313f258eafff716b2961644a4483a9be44a5d43551d554844d15d4d224e", - "sha256:8578d6b8192e4c805e85f187bc530d0f52ba86c39172e61cd51f68fddd648103", - "sha256:890167d5091279a27e2505ff0e1fb273f8c48c41d35c5b92adbf4af80e6b2ed6", - "sha256:98e10634792ac0e9e7a92a76b4991b44c2325d3e7798270a808407355e7bb0a1", - "sha256:9aadff9032e967865f9778485571e93908d27dab21d0fdfdec0ca779bb6f8ad9", - "sha256:9f24f383a298a0c0f9b3113b982e21751a8ecde6615494a3f1470eb4a9d70e9e", - "sha256:a73021b44813b5c84eda4a3af5826dd72356a900bac9bd9dd1f0f81ee1c22c2f", - "sha256:afd96845e12638d2c44d213d4810a08f4dc4a563f9a98204b7428e567014b1cd", - "sha256:b73ddf033d8cd4cc9dfed6324b1ad2a89ba52c410ef6877998422fcb9c23e3a8", - "sha256:b8f490f5fad1767a1331df1259763b3bad7d7af12a75b950c2843ba319b2415f", - "sha256:dbc5cd56fff1a6152ca59445178652756f4e509f672e49ccdf3d79c1043113a4", - "sha256:eac8a3499754790187bb00574ab980df13e754777d346f85e0ff6df929bcd964", - "sha256:eaed1c65f461a959284649e37b5051224f4db6ebdc84e40b5e65f2986f101a08" + "sha256:02c0f3757a4300cf379eb49f543fb7ac527fb00144d39246ee40e1df684ab514", + "sha256:02c6e3cf3439e213e4ee930308dc122d6fb4d4bea9aef4a12535fbd605d1a2fe", + "sha256:0645376d399bfd64da57148694d78e1f431b1e1ee1054872a5713125681cf1be", + "sha256:0892ef645c2fabb0c75ec32d79f4252542d0caec1d5d949630e7d242ca4681a3", + "sha256:0d236c2825fa656a2d98bbb0e52370a2e852e5a0ec45fc4f402977313329174d", + "sha256:0e0f754d27fddcfd74006455b6e04e6705d6c31a612ec69ddc040a5468e44b4e", + "sha256:15e2ee79e7cf29582ef770de7dab3d286431b01c3bb598f8e05e09601b890081", + "sha256:1876843d8e31c89c399e31b97d4b9725a3575bb9c2af92038464231ec40f9edb", + "sha256:1f64dcfb8f6e0c014c7f55e51c9759f024f70ea572fbdef123f85318c297947c", + "sha256:2ab652e729ff4ad76d400df2624d223d6e265ef81bb8aa17fbd63607878ecbee", + "sha256:30637a20623e2a2eacc420059be11527f4458ef54352d870b8181a4c3020ae6b", + "sha256:34b9ccdf210cbbb1303c7c4db2905fa0319391bd5904d32689e6dd5c963d2ea8", + "sha256:38601cbbfe600362c43714482f43b7c110b20cb0f8172422c616b09b85a750c5", + "sha256:441cc2f8869a4f0f4bb408475e5ae0ee1f3b55b33f350406150277f7f35384fc", + "sha256:498807b927ca2510baea1b05cc91d7da4718a0f53cb766c154c417a39f1820a0", + "sha256:4ac30da8b4f57187dbf449294d23b808f8f53cad6b1fc3623fa8a6c11d176dd0", + "sha256:4c727b597c6444a16e9119386b59388f8a424223302d0c06c676ec8b4bc1f963", + "sha256:4d67fbdaf177da06374473ef6f7ed8cc0a9dc640b01abfe9e8a2ccb1b1402c1f", + "sha256:4dfb4be774c4436a4526d0c554af0cc2e02082c38303852a36f6456ece7b3503", + "sha256:4ea29fc3ad9d91162c52b578f211ff1c931d8a38e1f58e684c45aa470adf19e2", + "sha256:51537e3d299be0db9137b321dfb6a5022caaab275775680e0c3d281feefaca6b", + "sha256:61b047a0537bbc3afae10f134dc6393823882eb263088c271331602b672e52e9", + "sha256:6460c7a99fc939b849431f1e73e013d54aa54293f30f1109019c56a0b2b2ec2f", + "sha256:65bee1e49fa6f9cf327ce0e01c4c10f39165ee76d35c846ade7cb0ec6683e303", + "sha256:65c07febd1936d63bfde78948b76cd4c2a411572a44ac50719ead41947d0f26b", + "sha256:71f14375d6f73b62800530b581aed3ada394039877818b2d5f7fc77e3bb6894d", + "sha256:7a40c00dbe17c0af5bdd55aafd6ff6679f94a9be9513a4c7e071baf3d7d22a70", + "sha256:7e13a5a2c01151f1208d5207e42f33ba86d561b7a89fca67c700b9486a06d0e2", + "sha256:7f0438fa20fb6c7e202863e0d5ab02c246d35efb1d164e052f2f3bfe2b152bd0", + "sha256:8122cfc7cae0da9a3077216528b8bb3629c43b25053284cc868744bfe71eb141", + "sha256:8338a271cb71d8da40b023a35d9c1e919eba6cbd8fa20a54b748a332c355d896", + "sha256:84d2222e61f313c4848ff05353653bf5f5cf6ce34df540e4274516880d9c3763", + "sha256:8a6979cf527e2603d349a91060f428bcb135aea2be3201dff794813256c274f1", + "sha256:8a76e027f87753f9bd1ab5f7c9cb8c7628d1077ef927f5e2446477153a602f2c", + "sha256:964b4dfb7c1c1965ac4c1978b0f755cc4bd698e8aa2b7667c575fb5f04ebe06b", + "sha256:9972aad21f965599ed0106f65334230ce826e5ae69fda7cbd688d24fa922415e", + "sha256:a8c28fd40a4226b4a84bdf2d2b5b37d2c7bd49486b5adcc200e8c7ec991dfa7e", + "sha256:ae102a98c547ee2288637af07393dd33f440c25e5cd79556b04e3fca13325e5f", + "sha256:af335bac6b666cc6aea16f11d486c3b794029d9df029967f9938a4bed59b6a19", + "sha256:afe64e9b8ea66866a771996f6ff14447e8082ea26e675a295ad3bdbffdd72afb", + "sha256:b4b24f75d16a89cc6b4cdff0eb6a910a966ecd476d1e73f7ce5985ff1328e9a6", + "sha256:b6c8288bb8a84b47e07013bb4850f50538aa913d487579e1921724631d02ea1b", + "sha256:b83456c2d4979e08ff56180a76429263ea254c3f6552cd14ada95cff1dec9bb8", + "sha256:bfb13af3c5dd3a9588000910178de17010ebcccd37b4f9794b00595e3a8ddad3", + "sha256:c3dba7dab16709a33a847e5cd756767271697041fbe3fe97c215b1fc1f5c9848", + "sha256:c48d8f2db17f27d41fb0e2ecd703ea41984ee19362cbce52c097963b3a1b4365", + "sha256:c7e62ab8b332147a7593a385d4f368874d5fe4ad4e341770d4983442d89603e3", + "sha256:c83a74b68270028dc8ee74d38ecfaf9c90eed23c8959fca95bd703d25b82c88e", + "sha256:cacbdc5839bdff804dfebc058fe25684cae322987f7a38b0168bc1b2df703fb1", + "sha256:cf4499e0a83b7b7edcb8dabecbd8501d0d3a5ef66457200f77bde3d210d5debb", + "sha256:cfec476887aa231b8548ece2e06d28edc87c1397ebd83922299af2e051cf2827", + "sha256:d26e0342183c762de3276cca7a530d574d4e25121ca7d6e4a98e4f05cb8e4df7", + "sha256:d4e6036decf4b72d6425d5b29bbd3e8f0ff1059cda7ac7b96d6ac5ed34ffbacd", + "sha256:d57c3fd55d9058645d26ae37d76e61156a27722097229d32a9e73ed54819982a", + "sha256:dfa74c903a3c1f0d9b1c7e7b53ed2d929a4910e272add6700c38f365a6002820", + "sha256:e3ed340d2b858d6e6fb5083f87c09996506af483227735de6964a6100b4e6a54", + "sha256:e78e6e2a00c223e164c417628572a90093c031ed724492c763721c2e0bc2a8df", + "sha256:e9182eb20f41417ea1dd8e8f7888c4d7c6e805f8a7c98c1081778a3da2bee3e4", + "sha256:e99e34c82309dd78959ba3c1590975b5d3c862d6f279f843d47d26ff89d7d7e1", + "sha256:f6a88f384335bb27812293fdb11ac6aee2ca3f51d3c7820fe03de0a304ab6249", + "sha256:f81e65376e52f03422e1fb475c9514185669943798ed019ac50410fb4c4df232", + "sha256:ffe9dc0a884a8848075e576c1de0290d85a533a9f6e9c4e564f19adf8f6e54a7" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.4" + "index": "pypi", + "version": "==2.9.6" }, "ptable": { "hashes": [ @@ -913,39 +1352,19 @@ }, "pyasn1": { "hashes": [ - "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359", - "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576", - "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf", - "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7", - "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", - "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00", - "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8", - "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86", - "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12", - "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776", - "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba", - "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2", - "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3" + "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57", + "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde" ], - "version": "==0.4.8" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.5.0" }, "pyasn1-modules": { "hashes": [ - "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8", - "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199", - "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811", - "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed", - "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4", - "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e", - "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74", - "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb", - "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45", - "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd", - "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0", - "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d", - "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405" + "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c", + "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d" ], - "version": "==0.2.8" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.3.0" }, "pycadf": { "hashes": [ @@ -957,11 +1376,11 @@ }, "pycodestyle": { "hashes": [ - "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", - "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.5.0" + "version": "==2.6.0" }, "pycparser": { "hashes": [ @@ -972,11 +1391,19 @@ }, "pyflakes": { "hashes": [ - "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", - "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", + "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.1.1" + "version": "==2.2.0" + }, + "pygments": { + "hashes": [ + "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", + "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" + ], + "markers": "python_version >= '3.6'", + "version": "==2.14.0" }, "pyinotify": { "hashes": [ @@ -992,13 +1419,93 @@ "index": "pypi", "version": "==0.1.0" }, + "pymongo": { + "hashes": [ + "sha256:016c412118e1c23fef3a1eada4f83ae6e8844fd91986b2e066fc1b0013cdd9ae", + "sha256:01f7cbe88d22440b6594c955e37312d932fd632ffed1a86d0c361503ca82cc9d", + "sha256:08fc250b5552ee97ceeae0f52d8b04f360291285fc7437f13daa516ce38fdbc6", + "sha256:0c466710871d0026c190fc4141e810cf9d9affbf4935e1d273fbdc7d7cda6143", + "sha256:1074f1a6f23e28b983c96142f2d45be03ec55d93035b471c26889a7ad2365db3", + "sha256:12f3621a46cdc7a9ba8080422262398a91762a581d27e0647746588d3f995c88", + "sha256:2c2fdc855149efe7cdcc2a01ca02bfa24761c640203ea94df467f3baf19078be", + "sha256:316498b642c00401370b2156b5233b256f9b33799e0a8d9d0b8a7da217a20fca", + "sha256:341221e2f2866a5960e6f8610f4cbac0bb13097f3b1a289aa55aba984fc0d969", + "sha256:34b040e095e1671df0c095ec0b04fc4ebb19c4c160f87c2b55c079b16b1a6b00", + "sha256:34e95ffb0a68bffbc3b437f2d1f25fc916fef3df5cdeed0992da5f42fae9b807", + "sha256:39b03045c71f761aee96a12ebfbc2f4be89e724ff6f5e31c2574c1a0e2add8bd", + "sha256:3b93043b14ba7eb08c57afca19751658ece1cfa2f0b7b1fb5c7a41452fbb8482", + "sha256:47f7aa217b25833cd6f0e72b0d224be55393c2692b4f5e0561cb3beeb10296e9", + "sha256:49210feb0be8051a64d71691f0acbfbedc33e149f0a5d6e271fddf6a12493fed", + "sha256:4d00b91c77ceb064c9b0459f0d6ea5bfdbc53ea9e17cf75731e151ef25a830c7", + "sha256:4ed00f96e147f40b565fe7530d1da0b0f3ab803d5dd5b683834500fa5d195ec4", + "sha256:5134d33286c045393c7beb51be29754647cec5ebc051cf82799c5ce9820a2ca2", + "sha256:524d78673518dcd352a91541ecd2839c65af92dc883321c2109ef6e5cd22ef23", + "sha256:52896e22115c97f1c829db32aa2760b0d61839cfe08b168c2b1d82f31dbc5f55", + "sha256:54c377893f2cbbffe39abcff5ff2e917b082c364521fa079305f6f064e1a24a9", + "sha256:55b6163dac53ef1e5d834297810c178050bd0548a4136cd4e0f56402185916ca", + "sha256:599d3f6fbef31933b96e2d906b0f169b3371ff79ea6aaf6ecd76c947a3508a3d", + "sha256:5effd87c7d363890259eac16c56a4e8da307286012c076223997f8cc4a8c435b", + "sha256:66413c50d510e5bcb0afc79880d1693a2185bcea003600ed898ada31338c004e", + "sha256:695939036a320f4329ccf1627edefbbb67cc7892b8222d297b0dd2313742bfee", + "sha256:6c2216d8b6a6d019c6f4b1ad55f890e5e77eb089309ffc05b6911c09349e7474", + "sha256:6dd1cf2995fdbd64fc0802313e8323f5fa18994d51af059b5b8862b73b5e53f0", + "sha256:6fcfbf435eebf8a1765c6d1f46821740ebe9f54f815a05c8fc30d789ef43cb12", + "sha256:704d939656e21b073bfcddd7228b29e0e8a93dd27b54240eaafc0b9a631629a6", + "sha256:711bc52cb98e7892c03e9b669bebd89c0a890a90dbc6d5bb2c47f30239bac6e9", + "sha256:74731c9e423c93cbe791f60c27030b6af6a948cef67deca079da6cd1bb583a8e", + "sha256:7761cacb8745093062695b11574effea69db636c2fd0a9269a1f0183712927b4", + "sha256:7b16250238de8dafca225647608dddc7bbb5dce3dd53b4d8e63c1cc287394c2f", + "sha256:7c051fe37c96b9878f37fa58906cb53ecd13dcb7341d3a85f1e2e2f6b10782d9", + "sha256:7d43ac9c7eeda5100fb0a7152fab7099c9cf9e5abd3bb36928eb98c7d7a339c6", + "sha256:81d1a7303bd02ca1c5be4aacd4db73593f573ba8e0c543c04c6da6275fd7a47e", + "sha256:8a06a0c02f5606330e8f2e2f3b7949877ca7e4024fa2bff5a4506bec66c49ec7", + "sha256:8fd6e191b92a10310f5a6cfe10d6f839d79d192fb02480bda325286bd1c7b385", + "sha256:943f208840777f34312c103a2d1caab02d780c4e9be26b3714acf6c4715ba7e1", + "sha256:9b87b23570565a6ddaa9244d87811c2ee9cffb02a753c8a2da9c077283d85845", + "sha256:a6cd6f1db75eb07332bd3710f58f5fce4967eadbf751bad653842750a61bda62", + "sha256:a966d5304b7d90c45c404914e06bbf02c5bf7e99685c6c12f0047ef2aa837142", + "sha256:a9c2885b4a8e6e39db5662d8b02ca6dcec796a45e48c2de12552841f061692ba", + "sha256:b0cfe925610f2fd59555bb7fc37bd739e4b197d33f2a8b2fae7b9c0c6640318c", + "sha256:b38a96b3eed8edc515b38257f03216f382c4389d022a8834667e2bc63c0c0c31", + "sha256:b8a03af1ce79b902a43f5f694c4ca8d92c2a4195db0966f08f266549e2fc49bc", + "sha256:bb869707d8e30645ed6766e44098600ca6cdf7989c22a3ea2b7966bb1d98d4b2", + "sha256:be1d2ce7e269215c3ee9a215e296b7a744aff4f39233486d2c4d77f5f0c561a6", + "sha256:c0640b4e9d008e13956b004d1971a23377b3d45491f87082161c92efb1e6c0d6", + "sha256:c09956606c08c4a7c6178a04ba2dd9388fcc5db32002ade9c9bc865ab156ab6d", + "sha256:c184ec5be465c0319440734491e1aa4709b5f3ba75fdfc9dbbc2ae715a7f6829", + "sha256:c1a70c51da9fa95bd75c167edb2eb3f3c4d27bc4ddd29e588f21649d014ec0b7", + "sha256:c29e758f0e734e1e90357ae01ec9c6daf19ff60a051192fe110d8fb25c62600e", + "sha256:c6258a3663780ae47ba73d43eb63c79c40ffddfb764e09b56df33be2f9479837", + "sha256:cafa52873ae12baa512a8721afc20de67a36886baae6a5f394ddef0ce9391f91", + "sha256:cd6a4afb20fb3c26a7bfd4611a0bbb24d93cbd746f5eb881f114b5e38fd55501", + "sha256:cdb87309de97c63cb9a69132e1cb16be470e58cffdfbad68fdd1dc292b22a840", + "sha256:d07d06dba5b5f7d80f9cc45501456e440f759fe79f9895922ed486237ac378a8", + "sha256:d3a51901066696c4af38c6c63a1f0aeffd5e282367ff475de8c191ec9609b56d", + "sha256:d5571b6978750601f783cea07fb6b666837010ca57e5cefa389c1d456f6222e2", + "sha256:d86c35d94b5499689354ccbc48438a79f449481ee6300f3e905748edceed78e7", + "sha256:dc0cff74cd36d7e1edba91baa09622c35a8a57025f2f2b7a41e3f83b1db73186", + "sha256:dc24d245026a72d9b4953729d31813edd4bd4e5c13622d96e27c284942d33f24", + "sha256:dca34367a4e77fcab0693e603a959878eaf2351585e7d752cac544bc6b2dee46", + "sha256:e2961b05f9c04a53da8bfc72f1910b6aec7205fcf3ac9c036d24619979bbee4b", + "sha256:e7fac06a539daef4fcf5d8288d0d21b412f9b750454cd5a3cf90484665db442a", + "sha256:eac0a143ef4f28f49670bf89cb15847eb80b375d55eba401ca2f777cd425f338", + "sha256:ef888f48eb9203ee1e04b9fb27429017b290fb916f1e7826c2f7808c88798394", + "sha256:f3055510fdfdb1775bc8baa359783022f70bb553f2d46e153c094dfcb08578ff", + "sha256:fa7e202feb683dad74f00dea066690448d0cfa310f8a277db06ec8eb466601b5", + "sha256:fc28e8d85d392a06434e9a934908d97e2cf453d69488d2bcd0bfb881497fd975", + "sha256:fd7bb378d82b88387dc10227cfd964f6273eb083e05299e9b97cbe075da12d11", + "sha256:ffcc8394123ea8d43fff8e5d000095fe7741ce3f8988366c5c919c4f5eb179d3" + ], + "markers": "python_version >= '3.7'", + "version": "==4.3.3" + }, "pyparsing": { "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" + "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", + "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "version": "==2.4.7" }, "pyperclip": { "hashes": [ @@ -1006,47 +1513,61 @@ ], "version": "==1.8.2" }, + "pyproject-api": { + "hashes": [ + "sha256:0962df21f3e633b8ddb9567c011e6c1b3dcdfc31b7860c0ede7e24c5a1200fbe", + "sha256:4c111277dfb96bcd562c6245428f27250b794bfe3e210b8714c4f893952f2c17" + ], + "markers": "python_version >= '3.7'", + "version": "==1.5.0" + }, "pyrsistent": { "hashes": [ - "sha256:097b96f129dd36a8c9e33594e7ebb151b1515eb52cceb08474c10a5479e799f2", - "sha256:2aaf19dc8ce517a8653746d98e962ef480ff34b6bc563fc067be6401ffb457c7", - "sha256:404e1f1d254d314d55adb8d87f4f465c8693d6f902f67eb6ef5b4526dc58e6ea", - "sha256:48578680353f41dca1ca3dc48629fb77dfc745128b56fc01096b2530c13fd426", - "sha256:4916c10896721e472ee12c95cdc2891ce5890898d2f9907b1b4ae0f53588b710", - "sha256:527be2bfa8dc80f6f8ddd65242ba476a6c4fb4e3aedbf281dfbac1b1ed4165b1", - "sha256:58a70d93fb79dc585b21f9d72487b929a6fe58da0754fa4cb9f279bb92369396", - "sha256:5e4395bbf841693eaebaa5bb5c8f5cdbb1d139e07c975c682ec4e4f8126e03d2", - "sha256:6b5eed00e597b5b5773b4ca30bd48a5774ef1e96f2a45d105db5b4ebb4bca680", - "sha256:73ff61b1411e3fb0ba144b8f08d6749749775fe89688093e1efef9839d2dcc35", - "sha256:772e94c2c6864f2cd2ffbe58bb3bdefbe2a32afa0acb1a77e472aac831f83427", - "sha256:773c781216f8c2900b42a7b638d5b517bb134ae1acbebe4d1e8f1f41ea60eb4b", - "sha256:a0c772d791c38bbc77be659af29bb14c38ced151433592e326361610250c605b", - "sha256:b29b869cf58412ca5738d23691e96d8aff535e17390128a1a52717c9a109da4f", - "sha256:c1a9ff320fa699337e05edcaae79ef8c2880b52720bc031b219e5b5008ebbdef", - "sha256:cd3caef37a415fd0dae6148a1b6957a8c5f275a62cca02e18474608cb263640c", - "sha256:d5ec194c9c573aafaceebf05fc400656722793dac57f254cd4741f3c27ae57b4", - "sha256:da6e5e818d18459fa46fac0a4a4e543507fe1110e808101277c5a2b5bab0cd2d", - "sha256:e79d94ca58fcafef6395f6352383fa1a76922268fa02caa2272fff501c2fdc78", - "sha256:f3ef98d7b76da5eb19c37fda834d50262ff9167c65658d1d8f974d2e4d90676b", - "sha256:f4c8cabb46ff8e5d61f56a037974228e978f26bfefce4f61a4b1ac0ba7a2ab72" + "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8", + "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440", + "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a", + "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c", + "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3", + "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393", + "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9", + "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da", + "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf", + "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64", + "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a", + "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3", + "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98", + "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2", + "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8", + "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf", + "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc", + "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7", + "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28", + "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2", + "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b", + "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a", + "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64", + "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19", + "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1", + "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9", + "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c" ], - "markers": "python_version >= '3.6'", - "version": "==0.18.0" + "markers": "python_version >= '3.7'", + "version": "==0.19.3" }, "python-barbicanclient": { "hashes": [ - "sha256:85e7ce9f29145e77fedbe241f98b8aeea283b8c4095974e2623c69f499f0105f", - "sha256:e2d77a56ad20f3c7dd32f2a581d60f55fad817dbb4b8ecdbd9fd1009d5dab68b" + "sha256:83028b145bf26f45f07e84182f27a338902737b1154a35c4a499c5591eff1679", + "sha256:9e69572aa11700c41fc126b26de5a7f79d3f0638bd81a61676597cd0e7cee702" ], - "version": "==4.7.0" + "version": "==5.2.0" }, "python-dateutil": { "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", + "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" ], "index": "pypi", - "version": "==2.8.2" + "version": "==2.8.1" }, "python-editor": { "hashes": [ @@ -1060,10 +1581,11 @@ }, "python-keystoneclient": { "hashes": [ - "sha256:6e2b6d2a5ae5d7aa26d4e52d1c682e08417d2c5d73ccc54cb65c54903a868cb4", - "sha256:b9f9e74219a44be7c9955c836ab9a7ae16bde7325db6db15b6e5fe140c11bc3a" + "sha256:9c2e0b1700f553ca625e987f4cd8ef62d7a27ad88c5104e96e16904d2ae1d918", + "sha256:ba09bdfeafa2a2196450a327cd3f46f2a8a9dd9d21b838f8cb9b17a99740c6a1" ], - "version": "==3.22.0" + "markers": "python_version >= '3.8'", + "version": "==5.1.0" }, "python-memcached": { "hashes": [ @@ -1079,12 +1601,19 @@ ], "version": "==1.6.0" }, + "python-subunit": { + "hashes": [ + "sha256:042039928120fbf392e8c983d60f3d8ae1b88f90a9f8fd7188ddd9c26cad1e48", + "sha256:40f34660c3da3e513cf2e59498a87ef04ebe2b5fe144fa25d476e1f888b19659" + ], + "version": "==1.4.0" + }, "pytz": { "hashes": [ - "sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197", - "sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5" + "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588", + "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb" ], - "version": "==2022.2.1" + "version": "==2023.3" }, "pyyaml": { "hashes": [ @@ -1121,6 +1650,14 @@ "index": "pypi", "version": "==5.4.1" }, + "reno": { + "hashes": [ + "sha256:0ebcad207133f4dbb7bc176ec3513fcd8e107a5d9e2f04b5621eb61da1147089", + "sha256:db7038061a5bfcc7bc61bfa3413fbc3202881f51ad011d21a58ae607ed1d5d9f" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.0" + }, "repoze.lru": { "hashes": [ "sha256:0429a75e19380e4ed50c0694e26ac8819b4ea7851ee1fc7583c8572db80aff77", @@ -1130,11 +1667,12 @@ }, "requests": { "hashes": [ - "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", - "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" + "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", + "sha256:5d2d0ffbb515f39417009a46c14256291061ac01ba8f875b90cad137de83beb4", + "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.22.0" + "version": "==2.23.0" }, "requests-oauthlib": { "hashes": [ @@ -1144,19 +1682,27 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.3.1" }, + "resolver": { + "hashes": [ + "sha256:70d3122c545302d222fe0fd95d6aadd262ca45733be37bf439cfdd057802c7c2", + "sha256:9d472835cc0b4813bc5b1dff4efbfa22cd8732676caffb37db12da064516fb29" + ], + "version": "==0.2.1" + }, "rfc3986": { "hashes": [ - "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835", - "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97" + "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", + "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c" ], - "version": "==1.5.0" + "markers": "python_version >= '3.7'", + "version": "==2.0.0" }, "routes": { "hashes": [ - "sha256:26ee43340fca5a32769ffe0c58edcb396ccce6bc1dfa689ddf844d50877355fd", - "sha256:d64b8ae22bef127d856afd9266a3e4cfc9e0dda0e120195e38268a95d20de135" + "sha256:b6346459a15f0cbab01a45a90c3d25caf980d4733d628b4cc1952b865125d053", + "sha256:fab5a042a3a87778eb271d053ca2723cadf43c95b471532a191a48539cb606ea" ], - "version": "==2.4.1" + "version": "==2.5.1" }, "rsa": { "hashes": [ @@ -1166,19 +1712,116 @@ "markers": "python_version >= '3.6'", "version": "==4.9" }, + "selector": { + "hashes": [ + "sha256:2ce3a87933bd28a9bd2b59dc35904e2575c056e6a72ca68c26681a4a610b580f" + ], + "version": "==0.10.1" + }, "setuptools": { "hashes": [ - "sha256:acbc5740dd63f243f46c2b4b8e2c7fd92259c2ddb55a4115b16418a2ed371b15", - "sha256:ce4137d58b444bac11a31d4e0c1805c69d89e8ed4e91fde1999674ecc2f6f9ff" + "sha256:316484eebff54cc18f322dea09ed031b7e3eb00811b19dcedb09bc09bba7d93d", + "sha256:89c6e6011ec2f6d57d43a3f9296c4ef022c2cbf49bab26b407fe67992ae3397f" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==40.4.3" + "markers": "python_version >= '3.5'", + "version": "==45.2.0" }, "shipyard-client": { "git": "https://opendev.org/airship/shipyard.git", - "ref": "e3e71f7d1632c0dc13b436a32c238f9da76d6d88", + "ref": "154a099b2843b1b42a7b8afa5fa98383cf3c1b7c", "subdirectory": "src/bin/shipyard_client" }, + "simplejson": { + "hashes": [ + "sha256:081ea6305b3b5e84ae7417e7f45956db5ea3872ec497a584ec86c3260cda049e", + "sha256:08be5a241fdf67a8e05ac7edbd49b07b638ebe4846b560673e196b2a25c94b92", + "sha256:0c16ec6a67a5f66ab004190829eeede01c633936375edcad7cbf06d3241e5865", + "sha256:0ccb2c1877bc9b25bc4f4687169caa925ffda605d7569c40e8e95186e9a5e58b", + "sha256:17a963e8dd4d81061cc05b627677c1f6a12e81345111fbdc5708c9f088d752c9", + "sha256:199a0bcd792811c252d71e3eabb3d4a132b3e85e43ebd93bfd053d5b59a7e78b", + "sha256:1cb19eacb77adc5a9720244d8d0b5507421d117c7ed4f2f9461424a1829e0ceb", + "sha256:203412745fed916fc04566ecef3f2b6c872b52f1e7fb3a6a84451b800fb508c1", + "sha256:2098811cd241429c08b7fc5c9e41fcc3f59f27c2e8d1da2ccdcf6c8e340ab507", + "sha256:22b867205cd258050c2625325fdd9a65f917a5aff22a23387e245ecae4098e78", + "sha256:23fbb7b46d44ed7cbcda689295862851105c7594ae5875dce2a70eeaa498ff86", + "sha256:2541fdb7467ef9bfad1f55b6c52e8ea52b3ce4a0027d37aff094190a955daa9d", + "sha256:3231100edee292da78948fa0a77dee4e5a94a0a60bcba9ed7a9dc77f4d4bb11e", + "sha256:344a5093b71c1b370968d0fbd14d55c9413cb6f0355fdefeb4a322d602d21776", + "sha256:37724c634f93e5caaca04458f267836eb9505d897ab3947b52f33b191bf344f3", + "sha256:3844305bc33d52c4975da07f75b480e17af3558c0d13085eaa6cc2f32882ccf7", + "sha256:390f4a8ca61d90bcf806c3ad644e05fa5890f5b9a72abdd4ca8430cdc1e386fa", + "sha256:3a4480e348000d89cf501b5606415f4d328484bbb431146c2971123d49fd8430", + "sha256:3b652579c21af73879d99c8072c31476788c8c26b5565687fd9db154070d852a", + "sha256:3e0902c278243d6f7223ba3e6c5738614c971fd9a887fff8feaa8dcf7249c8d4", + "sha256:412e58997a30c5deb8cab5858b8e2e5b40ca007079f7010ee74565cc13d19665", + "sha256:44cdb4e544134f305b033ad79ae5c6b9a32e7c58b46d9f55a64e2a883fbbba01", + "sha256:46133bc7dd45c9953e6ee4852e3de3d5a9a4a03b068bd238935a5c72f0a1ce34", + "sha256:46e89f58e4bed107626edce1cf098da3664a336d01fc78fddcfb1f397f553d44", + "sha256:4710806eb75e87919b858af0cba4ffedc01b463edc3982ded7b55143f39e41e1", + "sha256:476c8033abed7b1fd8db62a7600bf18501ce701c1a71179e4ce04ac92c1c5c3c", + "sha256:48600a6e0032bed17c20319d91775f1797d39953ccfd68c27f83c8d7fc3b32cb", + "sha256:4d3025e7e9ddb48813aec2974e1a7e68e63eac911dd5e0a9568775de107ac79a", + "sha256:547ea86ca408a6735335c881a2e6208851027f5bfd678d8f2c92a0f02c7e7330", + "sha256:54fca2b26bcd1c403146fd9461d1da76199442297160721b1d63def2a1b17799", + "sha256:5673d27806085d2a413b3be5f85fad6fca4b7ffd31cfe510bbe65eea52fff571", + "sha256:58ee5e24d6863b22194020eb62673cf8cc69945fcad6b283919490f6e359f7c5", + "sha256:5ca922c61d87b4c38f37aa706520328ffe22d7ac1553ef1cadc73f053a673553", + "sha256:5db86bb82034e055257c8e45228ca3dbce85e38d7bfa84fa7b2838e032a3219c", + "sha256:6277f60848a7d8319d27d2be767a7546bc965535b28070e310b3a9af90604a4c", + "sha256:6424d8229ba62e5dbbc377908cfee9b2edf25abd63b855c21f12ac596cd18e41", + "sha256:65dafe413b15e8895ad42e49210b74a955c9ae65564952b0243a18fb35b986cc", + "sha256:66389b6b6ee46a94a493a933a26008a1bae0cfadeca176933e7ff6556c0ce998", + "sha256:66d780047c31ff316ee305c3f7550f352d87257c756413632303fc59fef19eac", + "sha256:69a8b10a4f81548bc1e06ded0c4a6c9042c0be0d947c53c1ed89703f7e613950", + "sha256:6a561320485017ddfc21bd2ed5de2d70184f754f1c9b1947c55f8e2b0163a268", + "sha256:6aa7ca03f25b23b01629b1c7f78e1cd826a66bfb8809f8977a3635be2ec48f1a", + "sha256:6b79642a599740603ca86cf9df54f57a2013c47e1dd4dd2ae4769af0a6816900", + "sha256:6e7c70f19405e5f99168077b785fe15fcb5f9b3c0b70b0b5c2757ce294922c8c", + "sha256:70128fb92932524c89f373e17221cf9535d7d0c63794955cc3cd5868e19f5d38", + "sha256:73d0904c2471f317386d4ae5c665b16b5c50ab4f3ee7fd3d3b7651e564ad74b1", + "sha256:74bf802debe68627227ddb665c067eb8c73aa68b2476369237adf55c1161b728", + "sha256:79c748aa61fd8098d0472e776743de20fae2686edb80a24f0f6593a77f74fe86", + "sha256:79d46e7e33c3a4ef853a1307b2032cfb7220e1a079d0c65488fbd7118f44935a", + "sha256:7e78d79b10aa92f40f54178ada2b635c960d24fc6141856b926d82f67e56d169", + "sha256:8090e75653ea7db75bc21fa5f7bcf5f7bdf64ea258cbbac45c7065f6324f1b50", + "sha256:87b190e6ceec286219bd6b6f13547ca433f977d4600b4e81739e9ac23b5b9ba9", + "sha256:889328873c35cb0b2b4c83cbb83ec52efee5a05e75002e2c0c46c4e42790e83c", + "sha256:8f8d179393e6f0cf6c7c950576892ea6acbcea0a320838c61968ac7046f59228", + "sha256:919bc5aa4d8094cf8f1371ea9119e5d952f741dc4162810ab714aec948a23fe5", + "sha256:926957b278de22797bfc2f004b15297013843b595b3cd7ecd9e37ccb5fad0b72", + "sha256:93f5ac30607157a0b2579af59a065bcfaa7fadeb4875bf927a8f8b6739c8d910", + "sha256:96ade243fb6f3b57e7bd3b71e90c190cd0f93ec5dce6bf38734a73a2e5fa274f", + "sha256:9f14ecca970d825df0d29d5c6736ff27999ee7bdf5510e807f7ad8845f7760ce", + "sha256:a755f7bfc8adcb94887710dc70cc12a69a454120c6adcc6f251c3f7b46ee6aac", + "sha256:a79b439a6a77649bb8e2f2644e6c9cc0adb720fc55bed63546edea86e1d5c6c8", + "sha256:aa9d614a612ad02492f704fbac636f666fa89295a5d22b4facf2d665fc3b5ea9", + "sha256:ad071cd84a636195f35fa71de2186d717db775f94f985232775794d09f8d9061", + "sha256:b0e9a5e66969f7a47dc500e3dba8edc3b45d4eb31efb855c8647700a3493dd8a", + "sha256:b438e5eaa474365f4faaeeef1ec3e8d5b4e7030706e3e3d6b5bee6049732e0e6", + "sha256:b46aaf0332a8a9c965310058cf3487d705bf672641d2c43a835625b326689cf4", + "sha256:c39fa911e4302eb79c804b221ddec775c3da08833c0a9120041dd322789824de", + "sha256:ca56a6c8c8236d6fe19abb67ef08d76f3c3f46712c49a3b6a5352b6e43e8855f", + "sha256:cb502cde018e93e75dc8fc7bb2d93477ce4f3ac10369f48866c61b5e031db1fd", + "sha256:cd4d50a27b065447c9c399f0bf0a993bd0e6308db8bbbfbc3ea03b41c145775a", + "sha256:d125e754d26c0298715bdc3f8a03a0658ecbe72330be247f4b328d229d8cf67f", + "sha256:d300773b93eed82f6da138fd1d081dc96fbe53d96000a85e41460fe07c8d8b33", + "sha256:d396b610e77b0c438846607cd56418bfc194973b9886550a98fd6724e8c6cfec", + "sha256:d61482b5d18181e6bb4810b4a6a24c63a490c3a20e9fbd7876639653e2b30a1a", + "sha256:d9f2c27f18a0b94107d57294aab3d06d6046ea843ed4a45cae8bd45756749f3a", + "sha256:dc2b3f06430cbd4fac0dae5b2974d2bf14f71b415fb6de017f498950da8159b1", + "sha256:dc935d8322ba9bc7b84f99f40f111809b0473df167bf5b93b89fb719d2c4892b", + "sha256:e333c5b62e93949f5ac27e6758ba53ef6ee4f93e36cc977fe2e3df85c02f6dc4", + "sha256:e765b1f47293dedf77946f0427e03ee45def2862edacd8868c6cf9ab97c8afbd", + "sha256:ed18728b90758d171f0c66c475c24a443ede815cf3f1a91e907b0db0ebc6e508", + "sha256:eff87c68058374e45225089e4538c26329a13499bc0104b52b77f8428eed36b2", + "sha256:f05d05d99fce5537d8f7a0af6417a9afa9af3a6c4bb1ba7359c53b6257625fcb", + "sha256:f253edf694ce836631b350d758d00a8c4011243d58318fbfbe0dd54a6a839ab4", + "sha256:f41915a4e1f059dfad614b187bc06021fefb5fc5255bfe63abf8247d2f7a646a", + "sha256:f96def94576f857abf58e031ce881b5a3fc25cbec64b2bc4824824a8a4367af9" + ], + "markers": "python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2'", + "version": "==3.19.1" + }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", @@ -1195,59 +1838,119 @@ "markers": "python_version >= '3.6'", "version": "==5.0.0" }, - "smmap2": { + "snowballstemmer": { "hashes": [ - "sha256:0cb6ea470b1ad9a65a02ca7f4c7ae601861f7dd24a43812ca51cfca2892bb524", - "sha256:44cc8bdaf96442dbb9a8e2e14377d074b3d0eea292eee3c95c8c449b6c92c557" + "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", + "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a" ], - "version": "==3.0.1" + "version": "==2.2.0" + }, + "sphinx": { + "hashes": [ + "sha256:1e8d592225447104d1172be415bc2972bd1357e3e12fdc76edf2261105db4300", + "sha256:d4e59ad4ea55efbb3c05cde3bfc83bfc14f0c95aa95c3d75346fcce186a47960" + ], + "markers": "python_version >= '3.5'", + "version": "==3.3.1" + }, + "sphinx-rtd-theme": { + "hashes": [ + "sha256:22c795ba2832a169ca301cd0a083f7a434e09c538c70beb42782c073651b707d", + "sha256:373413d0f82425aaa28fb288009bf0d0964711d347763af2f1b65cafcb028c82" + ], + "version": "==0.5.0" + }, + "sphinxcontrib-applehelp": { + "hashes": [ + "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228", + "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e" + ], + "markers": "python_version >= '3.8'", + "version": "==1.0.4" + }, + "sphinxcontrib-devhelp": { + "hashes": [ + "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e", + "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4" + ], + "markers": "python_version >= '3.5'", + "version": "==1.0.2" + }, + "sphinxcontrib-htmlhelp": { + "hashes": [ + "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff", + "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903" + ], + "markers": "python_version >= '3.8'", + "version": "==2.0.1" + }, + "sphinxcontrib-jsmath": { + "hashes": [ + "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", + "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8" + ], + "markers": "python_version >= '3.5'", + "version": "==1.0.1" + }, + "sphinxcontrib-qthelp": { + "hashes": [ + "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72", + "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6" + ], + "markers": "python_version >= '3.5'", + "version": "==1.0.3" + }, + "sphinxcontrib-serializinghtml": { + "hashes": [ + "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd", + "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952" + ], + "markers": "python_version >= '3.5'", + "version": "==1.1.5" }, "sqlalchemy": { "hashes": [ - "sha256:0002e829142b2af00b4eaa26c51728f3ea68235f232a2e72a9508a3116bd6ed0", - "sha256:0005bd73026cd239fc1e8ccdf54db58b6193be9a02b3f0c5983808f84862c767", - "sha256:0292f70d1797e3c54e862e6f30ae474014648bc9c723e14a2fda730adb0a9791", - "sha256:036d8472356e1d5f096c5e0e1a7e0f9182140ada3602f8fff6b7329e9e7cfbcd", - "sha256:05f0de3a1dc3810a776275763764bb0015a02ae0f698a794646ebc5fb06fad33", - "sha256:0990932f7cca97fece8017414f57fdd80db506a045869d7ddf2dda1d7cf69ecc", - "sha256:13e397a9371ecd25573a7b90bd037db604331cf403f5318038c46ee44908c44d", - "sha256:14576238a5f89bcf504c5f0a388d0ca78df61fb42cb2af0efe239dc965d4f5c9", - "sha256:199a73c31ac8ea59937cc0bf3dfc04392e81afe2ec8a74f26f489d268867846c", - "sha256:2082a2d2fca363a3ce21cfa3d068c5a1ce4bf720cf6497fb3a9fc643a8ee4ddd", - "sha256:22ff16cedab5b16a0db79f1bc99e46a6ddececb60c396562e50aab58ddb2871c", - "sha256:2307495d9e0ea00d0c726be97a5b96615035854972cc538f6e7eaed23a35886c", - "sha256:2ad2b727fc41c7f8757098903f85fafb4bf587ca6605f82d9bf5604bd9c7cded", - "sha256:2d6495f84c4fd11584f34e62f9feec81bf373787b3942270487074e35cbe5330", - "sha256:361f6b5e3f659e3c56ea3518cf85fbdae1b9e788ade0219a67eeaaea8a4e4d2a", - "sha256:3e2ef592ac3693c65210f8b53d0edcf9f4405925adcfc031ff495e8d18169682", - "sha256:4676d51c9f6f6226ae8f26dc83ec291c088fe7633269757d333978df78d931ab", - "sha256:4ba7e122510bbc07258dc42be6ed45997efdf38129bde3e3f12649be70683546", - "sha256:5102fb9ee2c258a2218281adcb3e1918b793c51d6c2b4666ce38c35101bb940e", - "sha256:5323252be2bd261e0aa3f33cb3a64c45d76829989fa3ce90652838397d84197d", - "sha256:58bb65b3274b0c8a02cea9f91d6f44d0da79abc993b33bdedbfec98c8440175a", - "sha256:59bdc291165b6119fc6cdbc287c36f7f2859e6051dd923bdf47b4c55fd2f8bd0", - "sha256:5facb7fd6fa8a7353bbe88b95695e555338fb038ad19ceb29c82d94f62775a05", - "sha256:639e1ae8d48b3c86ffe59c0daa9a02e2bfe17ca3d2b41611b30a0073937d4497", - "sha256:8eb8897367a21b578b26f5713833836f886817ee2ffba1177d446fa3f77e67c8", - "sha256:90484a2b00baedad361402c257895b13faa3f01780f18f4a104a2f5c413e4536", - "sha256:9c56e19780cd1344fcd362fd6265a15f48aa8d365996a37fab1495cae8fcd97d", - "sha256:b67fc780cfe2b306180e56daaa411dd3186bf979d50a6a7c2a5b5036575cbdbb", - "sha256:c0dcf127bb99458a9d211e6e1f0f3edb96c874dd12f2503d4d8e4f1fd103790b", - "sha256:c23d64a0b28fc78c96289ffbd0d9d1abd48d267269b27f2d34e430ea73ce4b26", - "sha256:ccfd238f766a5bb5ee5545a62dd03f316ac67966a6a658efb63eeff8158a4bbf", - "sha256:cd767cf5d7252b1c88fcfb58426a32d7bd14a7e4942497e15b68ff5d822b41ad", - "sha256:ce8feaa52c1640de9541eeaaa8b5fb632d9d66249c947bb0d89dd01f87c7c288", - "sha256:d2e054aed4645f9b755db85bc69fc4ed2c9020c19c8027976f66576b906a74f1", - "sha256:e16c2be5cb19e2c08da7bd3a87fed2a0d4e90065ee553a940c4fc1a0fb1ab72b", - "sha256:e4b12e3d88a8fffd0b4ca559f6d4957ed91bd4c0613a4e13846ab8729dc5c251", - "sha256:e570cfc40a29d6ad46c9aeaddbdcee687880940a3a327f2c668dd0e4ef0a441d", - "sha256:eb30cf008850c0a26b72bd1b9be6730830165ce049d239cfdccd906f2685f892", - "sha256:f37fa70d95658763254941ddd30ecb23fc4ec0c5a788a7c21034fc2305dab7cc", - "sha256:f5ebeeec5c14533221eb30bad716bc1fd32f509196318fb9caa7002c4a364e4c", - "sha256:f5fa526d027d804b1f85cdda1eb091f70bde6fb7d87892f6dd5a48925bc88898" + "sha256:009e8388d4d551a2107632921320886650b46332f61dc935e70c8bcf37d8e0d6", + "sha256:0157c269701d88f5faf1fa0e4560e4d814f210c01a5b55df3cab95e9346a8bcc", + "sha256:0a92745bb1ebbcb3985ed7bda379b94627f0edbc6c82e9e4bac4fb5647ae609a", + "sha256:0cca1844ba870e81c03633a99aa3dc62256fb96323431a5dec7d4e503c26372d", + "sha256:166917a729b9226decff29416f212c516227c2eb8a9c9f920d69ced24e30109f", + "sha256:1f5f369202912be72fdf9a8f25067a5ece31a2b38507bb869306f173336348da", + "sha256:2909dffe5c9a615b7e6c92d1ac2d31e3026dc436440a4f750f4749d114d88ceb", + "sha256:2b5dafed97f778e9901b79cc01b88d39c605e0545b4541f2551a2fd785adc15b", + "sha256:2e9bd5b23bba8ae8ce4219c9333974ff5e103c857d9ff0e4b73dc4cb244c7d86", + "sha256:3aa6d45e149a16aa1f0c46816397e12313d5e37f22205c26e06975e150ffcf2a", + "sha256:4bdbdb8ca577c6c366d15791747c1de6ab14529115a2eb52774240c412a7b403", + "sha256:53fd857c6c8ffc0aa6a5a3a2619f6a74247e42ec9e46b836a8ffa4abe7aab327", + "sha256:5cdfe54c1e37279dc70d92815464b77cd8ee30725adc9350f06074f91dbfeed2", + "sha256:5d92c18458a4aa27497a986038d5d797b5279268a2de303cd00910658e8d149c", + "sha256:632b32183c0cb0053194a4085c304bc2320e5299f77e3024556fa2aa395c2a8b", + "sha256:7c735c7a6db8ee9554a3935e741cf288f7dcbe8706320251eb38c412e6a4281d", + "sha256:7cd40cb4bc50d9e87b3540b23df6e6b24821ba7e1f305c1492b0806c33dbdbec", + "sha256:84f0ac4a09971536b38cc5d515d6add7926a7e13baa25135a1dbb6afa351a376", + "sha256:8dcbf377529a9af167cbfc5b8acec0fadd7c2357fc282a1494c222d3abfc9629", + "sha256:950f0e17ffba7a7ceb0dd056567bc5ade22a11a75920b0e8298865dc28c0eff6", + "sha256:9e379674728f43a0cd95c423ac0e95262500f9bfd81d33b999daa8ea1756d162", + "sha256:b15002b9788ffe84e42baffc334739d3b68008a973d65fad0a410ca5d0531980", + "sha256:b6f036ecc017ec2e2cc2a40615b41850dc7aaaea6a932628c0afc73ab98ba3fb", + "sha256:bad73f9888d30f9e1d57ac8829f8a12091bdee4949b91db279569774a866a18e", + "sha256:bbc58fca72ce45a64bb02b87f73df58e29848b693869e58bd890b2ddbb42d83b", + "sha256:bca4d367a725694dae3dfdc86cf1d1622b9f414e70bd19651f5ac4fb3aa96d61", + "sha256:be41d5de7a8e241864189b7530ca4aaf56a5204332caa70555c2d96379e18079", + "sha256:bf53d8dddfc3e53a5bda65f7f4aa40fae306843641e3e8e701c18a5609471edf", + "sha256:c092fe282de83d48e64d306b4bce03114859cdbfe19bf8a978a78a0d44ddadb1", + "sha256:c3ab23ee9674336654bf9cac30eb75ac6acb9150dc4b1391bec533a7a4126471", + "sha256:ce64a44c867d128ab8e675f587aae7f61bd2db836a3c4ba522d884cd7c298a77", + "sha256:d05cef4a164b44ffda58200efcb22355350979e000828479971ebca49b82ddb1", + "sha256:d2f25c7f410338d31666d7ddedfa67570900e248b940d186b48461bd4e5569a1", + "sha256:d3b709d64b5cf064972b3763b47139e4a0dc4ae28a36437757f7663f67b99710", + "sha256:e32e3455db14602b6117f0f422f46bc297a3853ae2c322ecd1e2c4c04daf6ed5", + "sha256:ed53209b5f0f383acb49a927179fa51a6e2259878e164273ebc6815f3a752465", + "sha256:f605f348f4e6a2ba00acb3399c71d213b92f27f2383fc4abebf7a37368c12142", + "sha256:fcdb3755a7c355bc29df1b5e6fb8226d5c8b90551d202d69d0076a8a5649d68b" ], - "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.41" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.3.20" }, "sqlalchemy-migrate": { "hashes": [ @@ -1258,26 +1961,26 @@ }, "sqlparse": { "hashes": [ - "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34", - "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268" + "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3", + "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c" ], "markers": "python_version >= '3.5'", - "version": "==0.4.3" + "version": "==0.4.4" }, "statsd": { "hashes": [ - "sha256:c610fb80347fca0ef62666d241bce64184bd7cc1efe582f9690e045c25535eaa", - "sha256:e3e6db4c246f7c59003e51c9720a51a7f39a396541cb9b147ff4b14d15b5dd1f" + "sha256:99763da81bfea8daf6b3d22d11aaccb01a8d0f52ea521daab37e758a4ca7d128", + "sha256:c2676519927f7afade3723aca9ca8ea986ef5b059556a980a867721ca69df093" ], - "version": "==3.3.0" + "version": "==4.0.1" }, "stevedore": { "hashes": [ - "sha256:a547de73308fd7e90075bb4d301405bebf705292fa90a90fc3bcf9133f58616c", - "sha256:f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335" + "sha256:2c428d2338976279e8eb2196f7a94910960d9f7ba2f41f3988511e95ca447021", + "sha256:bd5a71ff5e5e5f5ea983880e4a1dd1bb47f8feebbb3d95b592398e2f02194771" ], - "markers": "python_version >= '3.6'", - "version": "==3.5.0" + "markers": "python_version >= '3.8'", + "version": "==5.0.0" }, "tempita": { "hashes": [ @@ -1286,11 +1989,11 @@ ], "version": "==0.5.2" }, - "termcolor": { + "testrepository": { "hashes": [ - "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b" + "sha256:752449bc98c20253ec4611c40564aea93d435a5bf3ff672208e01cc10e5858eb" ], - "version": "==1.1.0" + "version": "==0.0.20" }, "testresources": { "hashes": [ @@ -1314,27 +2017,49 @@ "markers": "python_version >= '3.5'", "version": "==2.5.0" }, + "tiddlyweb": { + "hashes": [ + "sha256:48d64ca95af04de3ebed45ba47b2c784eda35f6c941ada5f2658d5fbb6425912" + ], + "version": "==2.4.3" + }, + "tomli": { + "hashes": [ + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + ], + "markers": "python_version < '3.11'", + "version": "==2.0.1" + }, + "tomlkit": { + "hashes": [ + "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171", + "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3" + ], + "markers": "python_version >= '3.7'", + "version": "==0.11.8" + }, "typing-extensions": { "hashes": [ - "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", - "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" + "sha256:07b2c978670896022a43c4b915df8958bec4a6b84add7f2c87b2b728bda3ba64", + "sha256:f3f0e67e1d42de47b5c67c32c9b26641642e9170fe7e292991793705cd5fef7c", + "sha256:fb2cd053238d33a8ec939190f30cfd736c00653a85a2919415cecf7dc3d9da71" ], - "markers": "python_version < '3.8'", - "version": "==4.1.1" + "version": "==3.7.2" }, "urllib3": { "hashes": [ - "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527", - "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115" + "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2", + "sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'", - "version": "==1.25.9" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.25.11" }, "uwsgi": { "hashes": [ - "sha256:faa85e053c0b1be4d5585b0858d3a511d2cd10201802e8676060fd0a109e5869" + "sha256:35a30d83791329429bc04fe44183ce4ab512fcf6968070a7bfba42fc5a0552a9" ], - "version": "==2.0.19.1" + "version": "==2.0.21" }, "vine": { "hashes": [ @@ -1344,173 +2069,230 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.3.0" }, + "virtualenv": { + "hashes": [ + "sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e", + "sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924" + ], + "markers": "python_version >= '3.7'", + "version": "==20.23.0" + }, "wcwidth": { "hashes": [ - "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784", - "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" + "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e", + "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0" ], - "version": "==0.2.5" + "version": "==0.2.6" }, "webob": { "hashes": [ "sha256:73aae30359291c14fa3b956f8b5ca31960e420c28c1bec002547fb04928cf89b", "sha256:b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323" ], - "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.8.7" }, "websocket-client": { "hashes": [ - "sha256:074e2ed575e7c822fc0940d31c3ac9bb2b1142c303eafcf3e304e6ce035522e8", - "sha256:6278a75065395418283f887de7c3beafb3aa68dada5cacbe4b214e8d26da499b" + "sha256:3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40", + "sha256:cdf5877568b7e83aa7cf2244ab56a3213de587bbe0ce9d8b9600fc77b455d89e" ], - "markers": "python_version >= '3.6'", - "version": "==1.3.1" + "markers": "python_version >= '3.7'", + "version": "==1.5.1" }, "werkzeug": { "hashes": [ - "sha256:1e0dedc2acb1f46827daa2e399c1485c8fa17c0d8e70b6b875b4e7f54bf408d2", - "sha256:b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04" + "sha256:1ce08e8093ed67d638d63879fd1ba3735817f7a80de3674d293f5984f25fb6e6", + "sha256:72a4b735692dd3135217911cbeaa1be5fa3f62bffb8745c5215420a03dc55255" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.16.1" + "markers": "python_version >= '3.7'", + "version": "==2.1.2" + }, + "wheel": { + "hashes": [ + "sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873", + "sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247" + ], + "markers": "python_version >= '3.7'", + "version": "==0.40.0" }, "wrapt": { "hashes": [ - "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3", - "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b", - "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4", - "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2", - "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656", - "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3", - "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff", - "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310", - "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a", - "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57", - "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069", - "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383", - "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe", - "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87", - "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d", - "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b", - "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907", - "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f", - "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0", - "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28", - "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1", - "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853", - "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc", - "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3", - "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3", - "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164", - "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1", - "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c", - "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1", - "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7", - "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1", - "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320", - "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed", - "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1", - "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248", - "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c", - "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456", - "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77", - "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef", - "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1", - "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7", - "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86", - "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4", - "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d", - "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d", - "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8", - "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5", - "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471", - "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00", - "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68", - "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3", - "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d", - "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735", - "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d", - "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569", - "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7", - "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59", - "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5", - "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb", - "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b", - "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f", - "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462", - "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015", - "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af" + "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0", + "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420", + "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a", + "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c", + "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079", + "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923", + "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f", + "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1", + "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8", + "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86", + "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0", + "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364", + "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e", + "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c", + "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e", + "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c", + "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727", + "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff", + "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e", + "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29", + "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7", + "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72", + "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475", + "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a", + "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317", + "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2", + "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd", + "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640", + "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98", + "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248", + "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e", + "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d", + "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec", + "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1", + "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e", + "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9", + "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92", + "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb", + "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094", + "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46", + "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29", + "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd", + "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705", + "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8", + "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975", + "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb", + "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e", + "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b", + "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418", + "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019", + "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1", + "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba", + "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6", + "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2", + "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3", + "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7", + "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752", + "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416", + "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f", + "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1", + "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc", + "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145", + "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee", + "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a", + "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7", + "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b", + "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653", + "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0", + "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90", + "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29", + "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6", + "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034", + "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09", + "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559", + "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.14.1" + "version": "==1.15.0" + }, + "wsgi-intercept": { + "hashes": [ + "sha256:2afad9b3e12078aec3bbb9e2ea270a1df705d16d110dd7b45ba023fc43d9d87c", + "sha256:95e2c1ab1a068216d916812c15f2af32f98d3f7f07e9f910c484c3be0b293d19" + ], + "version": "==1.11.0" + }, + "xmltodict": { + "hashes": [ + "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56", + "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852" + ], + "markers": "python_version >= '3.4'", + "version": "==0.13.0" }, "yappi": { "hashes": [ - "sha256:07c50013b2435f53ea34dd35e74db4a172e52ae6b9a866d79d22805c9fdf65c4", - "sha256:0a73c608a2603570a020a32d4369ba744012bc5267f37e5bd8026fb491abba56", - "sha256:0cd3d5d0ad6c4172b9de5a67af80f0320e31700e020e0ce91bbec8e7ca558c8c", - "sha256:0e55f3f7a7be76d70f60f71530ad0db83afd1284bf4a6fa8d69af56a1533f624", - "sha256:1b712ea0d38ffbb985463ea644cbce210fe9f84f47180470c7981764838db7b1", - "sha256:22c567a6983f76317e128a0e669be7afb3e7c02654b8e4d76c3b4c3acef008e9", - "sha256:29815ea0107f25ac1be75c44515c66a5fd6ebd7131c640003292c8226c919b77", - "sha256:4d774b343b7f87f4a563f6f919c511a3bb6d20a66da66306568f0cf305e9c54e", - "sha256:57bc0d2fc86cf5ade040042f193dd04df67646d3416317625efcee78e13c6fc7", - "sha256:5aac25c46acd8f320fc19b4a6f86c966a106c9ad5736e436ed3d99ae436d13a3", - "sha256:6bd470bdf49c26fdeecf85336b70afd194382834ae52f6dab972b57de8f86f6c", - "sha256:84241b3a5022e721b1595582097aa7f3fa0b1a560dc75bc6d9c6fe535b964971", - "sha256:8482861bcd9b7530c017067d8f6a21a9c1d26ca787dc5e6b716eb57314af449a", - "sha256:8819c2b8dc094edf2e3f1a7ef424a628a0547f42b1bc536a43dd223b7753c86c", - "sha256:8bfd6f38768a84f6c12af6087a6aec0d1fec2d9c0fc65136cf074ef494b25811", - "sha256:8efb1630e1a8ebaeee5dcd08f58a1397a98e91241dde1e3c5ffd89bc1aa293b2", - "sha256:95b8ee6b8718527e480be6366fd86b6bbac51ff8ae3f5dd2a54be60ab28c7e65", - "sha256:97d1edc0cf2212d0ebfffd06fd7aee0d17d280216e8f4fe320eb0436187f14e5", - "sha256:9f048e86e426b84357c86975c195598a7412d550c3df5f9b904ea00c57fe2548", - "sha256:a24e30018ee2aec0e53a4edd7847d726ab5d2c2152d8eaa014739dca355dbe83", - "sha256:b0916e90cbfe17c6e8dd82d7c04f7d628a3a09f15f1d28fd239096daa7347cca", - "sha256:b639a0788a8d8fd566a5a03bd2ce769acc42ddee3256287d57adb76dde7134c8", - "sha256:ba5b59978795f77ee337a03a16f6685d914390c7857375e1b98746e75ec9ae6f", - "sha256:bcef9571559729a76d2245d0fc406a4fad60d32bfa4e4e5e124096e27e98922b", - "sha256:bfbeaca9e1a41cb1eabe1b7897b8fb236e85889c502654bded7c6628bd7bb2f7", - "sha256:c2d954a63c1806c906fefb2304902c71bfeeb76ec30af53cc164cb747c9e64ec", - "sha256:c7bf348067bb54f9cbb47a395b7be10fa6e42c214304668fc822da8998be46b4", - "sha256:d3bb721d956bf62ffe7d8f5a37037c8bd10c9217d9bd783641367341ca57e290", - "sha256:d5aefd0728e80cae3cb325a67d413b90cd998ea97f274ade0ff45279ca40a8d6", - "sha256:de5c84fc12652578dda9c8acabb985c672a1f0c7e0f27e974f0ce991610d0049", - "sha256:e159395a0a7cca4963de96155928e3f682bfbea40325bf33a22f422aa0c8a13c", - "sha256:e51750f86defe1f9690f2cdae759768ad536356062c47d22edfab889fb12a041", - "sha256:efb7e510e6c3028bf71888faea226dca9eaf60b445727ad50ddb8b5e2ff2af46", - "sha256:f583403948513583886f479d7a3886e96b135650c516308d7011af2e60829539", - "sha256:fac50de9a9edf8566e571e44cfb646ae57defd81b9ea807a94b939cbd895e4ab", - "sha256:fbca637b111d4a3085376c80e9b671ecbad420574f942aa10fd93cbfa804d36f" + "sha256:01fc1f7f76a43a2d0ded34313c97395e3c3323e796945b183569a5a0365b14a3", + "sha256:05b2c6c7f0667b46cd7cccbd36cff1b10f4b3f6625aacea5eb0ac99cd9ca7520", + "sha256:14068a34907f4e7404b6b87a7bda2d55be2bde4d4d7f9e254b2cd26187cc2ebc", + "sha256:1413d3fb200c0011b22764a227fb9e56e479acb1ec2b7c134c62d70a76a7e1f2", + "sha256:194a565ab0145ff10e31389fb364a35a4f5160ad6af17362355592cfddf2ae6e", + "sha256:2e4a0af76310957d12ff2d661e2ec3509ee4b4661929fec04d0dc40a0c8866ae", + "sha256:3033cdbd482a79ecafcafef8a1a0699ad333ee87bc7a28bd07c461ef196b2ea3", + "sha256:34aed429e1ef04d5b432bbbd719d7c7707b9fb310e30f78c61d0b31733626af8", + "sha256:36eaa02d53842b22157f1b150db79d03cae1cc635f708fa82737bcdfd4aa2bd9", + "sha256:38b0235574b7c0c549d97baa63f5fa4660b6d34a0b00ee8cc48d04ef19cf71fb", + "sha256:3a9652e7785f4b4c8bb3a8fa9ee33adf5e3f6dd893de4465008f75b1306f7895", + "sha256:3e5d5a95a8681dc91f5a22c81d458109dcbcd718a551b647d28075574dfb8cbb", + "sha256:407b119f394ab60bb0a3d07efcb92d4846ef40ab40fff02c8902ca8d800f85d3", + "sha256:42ddd97258604bb1bea1b7dce2790c24f9b9bca970d844cb7afe98a9fbbf1425", + "sha256:4f42a9de88cfcbcd3f05834b4cc585e6e70ae0c4e03918b41865ccca02d2514b", + "sha256:504b5d8fc7433736cb5e257991d2e7f2946019174f1faec7b2fe947881a17fc0", + "sha256:5092940caea4cc150ba21d9afbafc8b00770f33ab5de55638c2bbd2c6f7f82cf", + "sha256:52b82a8ec9d5e86e828fe35821a8482c94ca1dec8a278bb8001d21f2c8af98a8", + "sha256:57f9d3a88b822e3727505cf0a59e4b1038de4cd34555749bdc65ac258a58ca23", + "sha256:5e4de1137021f80a238217444c0ad5f0e393082f4744ecae3d92eb3a9b98ca3e", + "sha256:61a2c7dc15eeccd1909c6bc5783e63fb06ee7725e5aa006b83cd6afb49a343c7", + "sha256:64529504c5522b1c8c79eeb27a68f84979ce9415150c32cd7e06618383443bcc", + "sha256:71a6bce588d03240d8c05aa734d97d69c595ac382644701eaaca2421f6e37c9e", + "sha256:733b4088a54996e7811dca94de633ffe4b906b6e6b8147c31913b674ae6e90cc", + "sha256:7ab23d95fe8130445f1e089af7efec21f172611b306283496c99089839ef61c5", + "sha256:7b286c4fcc72812adbd19280329a3c0144582abd1e5a3513d93a8bb2d3d1abaa", + "sha256:8791dbdf17673fb14a6cff150a8b2c85a5e40c455eebb37a62ea4dc74c077408", + "sha256:89d352ea770860617f55539e860440a166c5b9c1a67a7f351fed4030af9943b0", + "sha256:987c8f658e1d2e4029612c33a4ff7b04f9a8fbd96e315eefb0384943830ae68b", + "sha256:9ab8c17980e6bdb522b03b118f6d62362c92f7be40a81a4e89746d0eeae1e3ab", + "sha256:a279bb01f9c4b4c99cb959210e49151afd6c76693eca8a01311343efe8f31262", + "sha256:a3bb2d75620ac9ef69f11c62e737469ef155e566e51ed85a74126871e45d2051", + "sha256:a5767d79a44d47a34be469d798ddc56cff251394af1f4fde2463de9359a8c38e", + "sha256:a5cd0ed067b4499fa45f08e78e0caf9154bc5ae28eca90167107b1fcfa741dac", + "sha256:aef7a5bd5cd7e36adb90419984f29809eee51c9a9b74849b9dfa6077075da21f", + "sha256:bad0766003eaa683e56f77166d4551c2f7530ec13aa602ada5cd8ddfe130d42b", + "sha256:bbdd6043e24f5c84a042ea8af69a1f2720571426fd1985814cf41e6d7a17f5c9", + "sha256:c81d957b10085ce32bb232896d258e9e87ae4ac4e044e755eb505f1c8eb148da", + "sha256:d80262ef4bf8ebd7c81e37832b41fe3b0b74621a24eb853b0444e06b01a44a1a", + "sha256:d878f66d0b5d79396d6f034f8d89615517a4c4410e97b84d48402e940f9501d5", + "sha256:d8bc404a3201ec9dc93ab669a700b4f3736bbe3a029e85dc046f278541b83f74", + "sha256:ec8ada826232137560e6ac7644ace8305b4dacbca0f9fff246ffee52db0a3c3a", + "sha256:f3fb92fe0ea47142275fbe6e5d1daa9685c2e25bfd6a9478c2669e8828b3abf8" ], - "version": "==1.3.6" + "version": "==1.4.0" + }, + "yq": { + "hashes": [ + "sha256:e04dfc8670fcba5bba75e2a24940a544aa8c2789cd4c5171241a1275c8ab2f57", + "sha256:f2e38f281e8b2c6b6cba6e474038d46775bc9e279017e7495a39807a8f9ade64" + ], + "markers": "python_version >= '3.6'", + "version": "==3.2.1" }, "zipp": { "hashes": [ - "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832", - "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc" + "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", + "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" ], "index": "pypi", - "version": "==3.6.0" + "version": "==3.15.0" } }, "develop": { - "attrs": { + "bandit": { "hashes": [ - "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", - "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" + "sha256:336620e220cf2d3115877685e264477ff9d9abaeb0afe3dc7264f55fa17a3952", + "sha256:41e75315853507aa145d62a78a2a6c5e3240fe14ee7c601459d0df9418196065" ], - "markers": "python_version >= '3.5'", - "version": "==22.1.0" + "index": "pypi", + "version": "==1.6.2" }, "certifi": { "hashes": [ - "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14", - "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382" + "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", + "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" ], "markers": "python_version >= '3.6'", - "version": "==2022.9.24" + "version": "==2022.12.7" }, "chardet": { "hashes": [ @@ -1521,64 +2303,149 @@ }, "charset-normalizer": { "hashes": [ - "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", - "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" + "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", + "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", + "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", + "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", + "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", + "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", + "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", + "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", + "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", + "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", + "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", + "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", + "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", + "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", + "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", + "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", + "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", + "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", + "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", + "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", + "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", + "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", + "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", + "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", + "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", + "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", + "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", + "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", + "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", + "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", + "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", + "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", + "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", + "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", + "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", + "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", + "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", + "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", + "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", + "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", + "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", + "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", + "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", + "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", + "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", + "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", + "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", + "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", + "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", + "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", + "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", + "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", + "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", + "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", + "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", + "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", + "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", + "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", + "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", + "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", + "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", + "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", + "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", + "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", + "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", + "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", + "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", + "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", + "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", + "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", + "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", + "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", + "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", + "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", + "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" ], - "markers": "python_version >= '3'", - "version": "==2.0.12" + "markers": "python_full_version >= '3.7.0'", + "version": "==3.1.0" }, "coverage": { "hashes": [ - "sha256:01774a2c2c729619760320270e42cd9e797427ecfddd32c2a7b639cdc481f3c0", - "sha256:03b20e52b7d31be571c9c06b74746746d4eb82fc260e594dc662ed48145e9efd", - "sha256:0a7726f74ff63f41e95ed3a89fef002916c828bb5fcae83b505b49d81a066884", - "sha256:1219d760ccfafc03c0822ae2e06e3b1248a8e6d1a70928966bafc6838d3c9e48", - "sha256:13362889b2d46e8d9f97c421539c97c963e34031ab0cb89e8ca83a10cc71ac76", - "sha256:174cf9b4bef0db2e8244f82059a5a72bd47e1d40e71c68ab055425172b16b7d0", - "sha256:17e6c11038d4ed6e8af1407d9e89a2904d573be29d51515f14262d7f10ef0a64", - "sha256:215f8afcc02a24c2d9a10d3790b21054b58d71f4b3c6f055d4bb1b15cecce685", - "sha256:22e60a3ca5acba37d1d4a2ee66e051f5b0e1b9ac950b5b0cf4aa5366eda41d47", - "sha256:2641f803ee9f95b1f387f3e8f3bf28d83d9b69a39e9911e5bfee832bea75240d", - "sha256:276651978c94a8c5672ea60a2656e95a3cce2a3f31e9fb2d5ebd4c215d095840", - "sha256:3f7c17209eef285c86f819ff04a6d4cbee9b33ef05cbcaae4c0b4e8e06b3ec8f", - "sha256:3feac4084291642165c3a0d9eaebedf19ffa505016c4d3db15bfe235718d4971", - "sha256:49dbff64961bc9bdd2289a2bda6a3a5a331964ba5497f694e2cbd540d656dc1c", - "sha256:4e547122ca2d244f7c090fe3f4b5a5861255ff66b7ab6d98f44a0222aaf8671a", - "sha256:5829192582c0ec8ca4a2532407bc14c2f338d9878a10442f5d03804a95fac9de", - "sha256:5d6b09c972ce9200264c35a1d53d43ca55ef61836d9ec60f0d44273a31aa9f17", - "sha256:600617008aa82032ddeace2535626d1bc212dfff32b43989539deda63b3f36e4", - "sha256:619346d57c7126ae49ac95b11b0dc8e36c1dd49d148477461bb66c8cf13bb521", - "sha256:63c424e6f5b4ab1cf1e23a43b12f542b0ec2e54f99ec9f11b75382152981df57", - "sha256:6dbc1536e105adda7a6312c778f15aaabe583b0e9a0b0a324990334fd458c94b", - "sha256:6e1394d24d5938e561fbeaa0cd3d356207579c28bd1792f25a068743f2d5b282", - "sha256:86f2e78b1eff847609b1ca8050c9e1fa3bd44ce755b2ec30e70f2d3ba3844644", - "sha256:8bdfe9ff3a4ea37d17f172ac0dff1e1c383aec17a636b9b35906babc9f0f5475", - "sha256:8e2c35a4c1f269704e90888e56f794e2d9c0262fb0c1b1c8c4ee44d9b9e77b5d", - "sha256:92b8c845527eae547a2a6617d336adc56394050c3ed8a6918683646328fbb6da", - "sha256:9365ed5cce5d0cf2c10afc6add145c5037d3148585b8ae0e77cc1efdd6aa2953", - "sha256:9a29311bd6429be317c1f3fe4bc06c4c5ee45e2fa61b2a19d4d1d6111cb94af2", - "sha256:9a2b5b52be0a8626fcbffd7e689781bf8c2ac01613e77feda93d96184949a98e", - "sha256:a4bdeb0a52d1d04123b41d90a4390b096f3ef38eee35e11f0b22c2d031222c6c", - "sha256:a9c8c4283e17690ff1a7427123ffb428ad6a52ed720d550e299e8291e33184dc", - "sha256:b637c57fdb8be84e91fac60d9325a66a5981f8086c954ea2772efe28425eaf64", - "sha256:bf154ba7ee2fd613eb541c2bc03d3d9ac667080a737449d1a3fb342740eb1a74", - "sha256:c254b03032d5a06de049ce8bca8338a5185f07fb76600afff3c161e053d88617", - "sha256:c332d8f8d448ded473b97fefe4a0983265af21917d8b0cdcb8bb06b2afe632c3", - "sha256:c7912d1526299cb04c88288e148c6c87c0df600eca76efd99d84396cfe00ef1d", - "sha256:cfd9386c1d6f13b37e05a91a8583e802f8059bebfccde61a418c5808dea6bbfa", - "sha256:d5d2033d5db1d58ae2d62f095e1aefb6988af65b4b12cb8987af409587cc0739", - "sha256:dca38a21e4423f3edb821292e97cec7ad38086f84313462098568baedf4331f8", - "sha256:e2cad8093172b7d1595b4ad66f24270808658e11acf43a8f95b41276162eb5b8", - "sha256:e3db840a4dee542e37e09f30859f1612da90e1c5239a6a2498c473183a50e781", - "sha256:edcada2e24ed68f019175c2b2af2a8b481d3d084798b8c20d15d34f5c733fa58", - "sha256:f467bbb837691ab5a8ca359199d3429a11a01e6dfb3d9dcc676dc035ca93c0a9", - "sha256:f506af4f27def639ba45789fa6fde45f9a217da0be05f8910458e4557eed020c", - "sha256:f614fc9956d76d8a88a88bb41ddc12709caa755666f580af3a688899721efecd", - "sha256:f9afb5b746781fc2abce26193d1c817b7eb0e11459510fba65d2bd77fe161d9e", - "sha256:fb8b8ee99b3fffe4fd86f4c81b35a6bf7e4462cba019997af2fe679365db0c49" + "sha256:0342a28617e63ad15d96dca0f7ae9479a37b7d8a295f749c14f3436ea59fdcb3", + "sha256:066b44897c493e0dcbc9e6a6d9f8bbb6607ef82367cf6810d387c09f0cd4fe9a", + "sha256:10b15394c13544fce02382360cab54e51a9e0fd1bd61ae9ce012c0d1e103c813", + "sha256:12580845917b1e59f8a1c2ffa6af6d0908cb39220f3019e36c110c943dc875b0", + "sha256:156192e5fd3dbbcb11cd777cc469cf010a294f4c736a2b2c891c77618cb1379a", + "sha256:1637253b11a18f453e34013c665d8bf15904c9e3c44fbda34c643fbdc9d452cd", + "sha256:292300f76440651529b8ceec283a9370532f4ecba9ad67d120617021bb5ef139", + "sha256:30dcaf05adfa69c2a7b9f7dfd9f60bc8e36b282d7ed25c308ef9e114de7fc23b", + "sha256:338aa9d9883aaaad53695cb14ccdeb36d4060485bb9388446330bef9c361c252", + "sha256:373ea34dca98f2fdb3e5cb33d83b6d801007a8074f992b80311fc589d3e6b790", + "sha256:38c0a497a000d50491055805313ed83ddba069353d102ece8aef5d11b5faf045", + "sha256:40cc0f91c6cde033da493227797be2826cbf8f388eaa36a0271a97a332bfd7ce", + "sha256:4436cc9ba5414c2c998eaedee5343f49c02ca93b21769c5fdfa4f9d799e84200", + "sha256:509ecd8334c380000d259dc66feb191dd0a93b21f2453faa75f7f9cdcefc0718", + "sha256:5c587f52c81211d4530fa6857884d37f514bcf9453bdeee0ff93eaaf906a5c1b", + "sha256:5f3671662dc4b422b15776cdca89c041a6349b4864a43aa2350b6b0b03bbcc7f", + "sha256:6599bf92f33ab041e36e06d25890afbdf12078aacfe1f1d08c713906e49a3fe5", + "sha256:6e8a95f243d01ba572341c52f89f3acb98a3b6d1d5d830efba86033dd3687ade", + "sha256:706ec567267c96717ab9363904d846ec009a48d5f832140b6ad08aad3791b1f5", + "sha256:780551e47d62095e088f251f5db428473c26db7829884323e56d9c0c3118791a", + "sha256:7ff8f3fb38233035028dbc93715551d81eadc110199e14bbbfa01c5c4a43f8d8", + "sha256:828189fcdda99aae0d6bf718ea766b2e715eabc1868670a0a07bf8404bf58c33", + "sha256:857abe2fa6a4973f8663e039ead8d22215d31db613ace76e4a98f52ec919068e", + "sha256:883123d0bbe1c136f76b56276074b0c79b5817dd4238097ffa64ac67257f4b6c", + "sha256:8877d9b437b35a85c18e3c6499b23674684bf690f5d96c1006a1ef61f9fdf0f3", + "sha256:8e575a59315a91ccd00c7757127f6b2488c2f914096077c745c2f1ba5b8c0969", + "sha256:97072cc90f1009386c8a5b7de9d4fc1a9f91ba5ef2146c55c1f005e7b5c5e068", + "sha256:9a22cbb5ede6fade0482111fa7f01115ff04039795d7092ed0db43522431b4f2", + "sha256:a063aad9f7b4c9f9da7b2550eae0a582ffc7623dca1c925e50c3fbde7a579771", + "sha256:a08c7401d0b24e8c2982f4e307124b671c6736d40d1c39e09d7a8687bddf83ed", + "sha256:a0b273fe6dc655b110e8dc89b8ec7f1a778d78c9fd9b4bda7c384c8906072212", + "sha256:a2b3b05e22a77bb0ae1a3125126a4e08535961c946b62f30985535ed40e26614", + "sha256:a66e055254a26c82aead7ff420d9fa8dc2da10c82679ea850d8feebf11074d88", + "sha256:aa387bd7489f3e1787ff82068b295bcaafbf6f79c3dad3cbc82ef88ce3f48ad3", + "sha256:ae453f655640157d76209f42c62c64c4d4f2c7f97256d3567e3b439bd5c9b06c", + "sha256:b5016e331b75310610c2cf955d9f58a9749943ed5f7b8cfc0bb89c6134ab0a84", + "sha256:b9a4ee55174b04f6af539218f9f8083140f61a46eabcaa4234f3c2a452c4ed11", + "sha256:bd3b4b8175c1db502adf209d06136c000df4d245105c8839e9d0be71c94aefe1", + "sha256:bebea5f5ed41f618797ce3ffb4606c64a5de92e9c3f26d26c2e0aae292f015c1", + "sha256:c10fbc8a64aa0f3ed136b0b086b6b577bc64d67d5581acd7cc129af52654384e", + "sha256:c2c41c1b1866b670573657d584de413df701f482574bad7e28214a2362cb1fd1", + "sha256:cf97ed82ca986e5c637ea286ba2793c85325b30f869bf64d3009ccc1a31ae3fd", + "sha256:d1f25ee9de21a39b3a8516f2c5feb8de248f17da7eead089c2e04aa097936b47", + "sha256:d2fbc2a127e857d2f8898aaabcc34c37771bf78a4d5e17d3e1f5c30cd0cbc62a", + "sha256:dc945064a8783b86fcce9a0a705abd7db2117d95e340df8a4333f00be5efb64c", + "sha256:ddc5a54edb653e9e215f75de377354e2455376f416c4378e1d43b08ec50acc31", + "sha256:e8834e5f17d89e05697c3c043d3e58a8b19682bf365048837383abfe39adaed5", + "sha256:ef9659d1cda9ce9ac9585c045aaa1e59223b143f2407db0eaee0b61a4f266fb6", + "sha256:f6f5cab2d7f0c12f8187a376cc6582c477d2df91d63f75341307fcdcb5d60303", + "sha256:f81c9b4bd8aa747d417407a7f6f0b1469a43b36a85748145e144ac4e8d303cb5", + "sha256:f99ef080288f09ffc687423b8d60978cf3a465d3f404a18d1a05474bd8575a47" ], - "markers": "python_version >= '3.6'", - "version": "==6.2" + "markers": "python_version >= '3.7'", + "version": "==7.2.5" + }, + "exceptiongroup": { + "hashes": [ + "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e", + "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785" + ], + "markers": "python_version < '3.11'", + "version": "==1.1.1" }, "execnet": { "hashes": [ @@ -1590,49 +2457,59 @@ }, "flake8": { "hashes": [ - "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", - "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" + "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839", + "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==3.7.9" + "version": "==3.8.4" }, "flake8-import-order": { "hashes": [ - "sha256:90a80e46886259b9c396b578d75c749801a41ee969a235e163cfe1be7afd2543", - "sha256:a28dc39545ea4606c1ac3c24e9d05c849c6e5444a50fb7e9cdd430fc94de6e92" + "sha256:82ed59f1083b629b030ee9d3928d9e06b6213eb196fe745b3a7d4af2168130df", + "sha256:e23941f892da3e0c09d711babbb0c73bc735242e9b216b726616758a920d900e" ], "index": "pypi", - "version": "==0.18.1" + "version": "==0.18.2" + }, + "gitdb": { + "hashes": [ + "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a", + "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7" + ], + "markers": "python_version >= '3.7'", + "version": "==4.0.10" + }, + "gitpython": { + "hashes": [ + "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573", + "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d" + ], + "index": "pypi", + "version": "==3.1.31" }, "hacking": { "hashes": [ - "sha256:299b45ece148fcb0f5047487311854f6e8d6ba331a2add6cd068583f7939f9c9", - "sha256:f92d1de02bcb91474e178bfef01465cc1647ee436efc61ef7a7e8cabde3ef9b1" + "sha256:079a1e0ea98813429a98b0ebaedad4275058c38906fa7c35d0eb56df9f5e0fe9", + "sha256:150839891be9e13f784b5f809091fb9e8c72aef43d9898830f76f8c9684ee139" ], "markers": "python_version >= '3.5'", - "version": "==3.0.1" + "version": "==4.1.0" }, "idna": { "hashes": [ - "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", - "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c" + "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", + "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" ], - "version": "==2.8" - }, - "importlib-metadata": { - "hashes": [ - "sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e", - "sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668" - ], - "markers": "python_version < '3.8'", - "version": "==4.8.3" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.10" }, "iniconfig": { "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", + "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" ], - "version": "==1.1.1" + "markers": "python_version >= '3.7'", + "version": "==2.0.0" }, "mccabe": { "hashes": [ @@ -1649,93 +2526,113 @@ "markers": "python_version >= '3.6'", "version": "==21.3" }, + "pbr": { + "hashes": [ + "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9", + "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00" + ], + "markers": "python_version >= '2.6'", + "version": "==5.5.1" + }, "pluggy": { "hashes": [ - "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", - "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", + "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.13.1" - }, - "py": { - "hashes": [ - "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", - "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.11.0" + "markers": "python_version >= '3.6'", + "version": "==1.0.0" }, "pycodestyle": { "hashes": [ - "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", - "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.5.0" + "version": "==2.6.0" }, "pyflakes": { "hashes": [ - "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", - "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", + "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.1.1" - }, - "pyparsing": { - "hashes": [ - "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", - "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" - ], - "markers": "python_full_version >= '3.6.8'", - "version": "==3.0.9" + "version": "==2.2.0" }, "pytest": { "hashes": [ - "sha256:4288fed0d9153d9646bfcdf0c0428197dba1ecb27a33bb6e031d002fa88653fe", - "sha256:c0a7e94a8cdbc5422a51ccdad8e6f1024795939cc89159a0ae7f0b316ad3823e" + "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362", + "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3" ], "index": "pypi", - "version": "==6.1.2" + "version": "==7.3.1" }, "pytest-cov": { "hashes": [ - "sha256:45ec2d5182f89a81fc3eb29e3d1ed3113b9e9a873bcddb2a71faaab066110191", - "sha256:47bd0ce14056fdd79f93e1713f88fad7bdcc583dcd7783da86ef2f085a0bb88e" + "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b", + "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470" ], "index": "pypi", - "version": "==2.10.1" - }, - "pytest-forked": { - "hashes": [ - "sha256:8b67587c8f98cbbadfdd804539ed5455b6ed03802203485dd2f53c1422d7440e", - "sha256:bbbb6717efc886b9d64537b41fb1497cfaf3c9601276be8da2cccfea5a3c8ad8" - ], - "markers": "python_version >= '3.6'", - "version": "==1.4.0" + "version": "==4.0.0" }, "pytest-xdist": { "hashes": [ - "sha256:7b61ebb46997a0820a263553179d6d1e25a8c50d8a8620cd1aa1e20e3be99168", - "sha256:89b330316f7fc475f999c81b577c2b926c9569f3d397ae432c0c2e2496d61ff9" + "sha256:1849bd98d8b242b948e472db7478e090bf3361912a8fed87992ed94085f54727", + "sha256:37290d161638a20b672401deef1cba812d110ac27e35d213f091d15b8beb40c9" ], "index": "pypi", - "version": "==2.4.0" + "version": "==3.2.1" + }, + "pyyaml": { + "hashes": [ + "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf", + "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696", + "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393", + "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77", + "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922", + "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5", + "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8", + "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10", + "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc", + "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018", + "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e", + "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253", + "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347", + "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183", + "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541", + "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb", + "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185", + "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc", + "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db", + "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa", + "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46", + "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122", + "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b", + "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63", + "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df", + "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc", + "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247", + "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6", + "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0" + ], + "index": "pypi", + "version": "==5.4.1" }, "requests": { "hashes": [ - "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", - "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" + "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", + "sha256:5d2d0ffbb515f39417009a46c14256291061ac01ba8f875b90cad137de83beb4", + "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.22.0" + "version": "==2.23.0" }, "setuptools": { "hashes": [ - "sha256:acbc5740dd63f243f46c2b4b8e2c7fd92259c2ddb55a4115b16418a2ed371b15", - "sha256:ce4137d58b444bac11a31d4e0c1805c69d89e8ed4e91fde1999674ecc2f6f9ff" + "sha256:316484eebff54cc18f322dea09ed031b7e3eb00811b19dcedb09bc09bba7d93d", + "sha256:89c6e6011ec2f6d57d43a3f9296c4ef022c2cbf49bab26b407fe67992ae3397f" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==40.4.3" + "markers": "python_version >= '3.5'", + "version": "==45.2.0" }, "six": { "hashes": [ @@ -1745,37 +2642,45 @@ "index": "pypi", "version": "==1.16.0" }, + "smmap": { + "hashes": [ + "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94", + "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936" + ], + "markers": "python_version >= '3.6'", + "version": "==5.0.0" + }, + "stevedore": { + "hashes": [ + "sha256:2c428d2338976279e8eb2196f7a94910960d9f7ba2f41f3988511e95ca447021", + "sha256:bd5a71ff5e5e5f5ea983880e4a1dd1bb47f8feebbb3d95b592398e2f02194771" + ], + "markers": "python_version >= '3.8'", + "version": "==5.0.0" + }, "testfixtures": { "hashes": [ - "sha256:8ecac5a308793451640594d9ca42ce89b987711e1e4c9312855321ec21f6ccb4", - "sha256:ae95a0522f181686204fc816e817c4725516cf5bc43360160390aad54b1dfd00" + "sha256:456ce4f393160f27cd6840a5370ecf4a70f1721737f5e67a2af79e6c817804a4", + "sha256:d37d8f4ccc7755ab614cc8fb54b2e8b9fe522ab5dcf11b9d141f9be633c200f5" ], "index": "pypi", - "version": "==7.0.0" + "version": "==7.1.0" }, - "toml": { + "tomli": { "hashes": [ - "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", - "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.10.2" - }, - "typing-extensions": { - "hashes": [ - "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", - "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2" - ], - "markers": "python_version < '3.8'", - "version": "==4.1.1" + "markers": "python_version < '3.11'", + "version": "==2.0.1" }, "urllib3": { "hashes": [ - "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527", - "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115" + "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2", + "sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'", - "version": "==1.25.9" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", + "version": "==1.25.11" }, "yapf": { "hashes": [ @@ -1784,14 +2689,6 @@ ], "index": "pypi", "version": "==0.28.0" - }, - "zipp": { - "hashes": [ - "sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832", - "sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc" - ], - "index": "pypi", - "version": "==3.6.0" } } } diff --git a/bindep.txt b/bindep.txt new file mode 100644 index 00000000..180ff05e --- /dev/null +++ b/bindep.txt @@ -0,0 +1,10 @@ +# This is a cross-platform list tracking distribution packages needed by tests; +# see http://docs.openstack.org/infra/bindep/ for additional information. + +libffi-dev [test platform:dpkg] +libkrb5-dev [platform:dpkg] +libpq-dev [platform:dpkg] +libsasl2-dev [platform:dpkg] +libssl-dev [platform:dpkg] +libre2-dev [platform:dpkg] +libzmq3-dev [platform:dpkg] \ No newline at end of file diff --git a/doc/requirements.txt b/doc/requirements.txt index d88b0a77..74124814 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -3,13 +3,15 @@ # process, which may cause wedges in the gate later. # Documentation -sphinx>=3.1.0 -oslosphinx>=4.18.0 # Apache-2.0 -sphinx_rtd_theme>=0.4.3 -docutils>=0.17.1 +sphinx>=3.3.1 +oslosphinx # Apache-2.0 +sphinx_rtd_theme>=0.5.0 +docutils>=0.17 + + # UML image generation -plantuml>=0.3.0 +plantuml>= # Releasenotes -reno>=3.1.0 # Apache-2.0 +reno>=4.0.0 # Apache-2.0 diff --git a/doc/source/images/architecture-pegleg.png b/doc/source/images/architecture-pegleg.png index bc99bc57d3bfb5339870e7b6bd2bb503e1d6c6d0..b119cba95730bbea55e6d14a0cdc6217b23f94a4 100644 GIT binary patch literal 42961 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 literal 37604 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�ll@p0Z(6{gL2I zw;NnKeLvcTV{824{bIYy#DiGhZZ@dV&kaI9l$!@}v&bL;!Mc|U)Ob9PV6Y1p4?N#` zwY7SG#w#MOP3=YN4p^WS0E%xUO^@1Jj!j6f39Ip%xB6vH{MLv{Fzn#d{ z7P`=rn{-gaQ*M*nOH2bQO(U5aEryKISG2Zujg95dr`+onu5b&ppVDM=NLSGcp2bi! z_4v0`QoJgLU~vKo3P!_9PwaJNm>Ssbs2y=VRjd3s0h`&j_urug#Y0cPnn`a9?H8Q1 zt5|;JS#*_;uh4w8cV(hcs;*0T1(0S=r$W2H;NU9Qf0NutPa_PP-E*%@ESJq;8k?G| z?;*nI+Qbd6Q34H^)bW=(5q=316x;K^gww(RU7`glP*md1UA;%~*;hZ<57-oEdZnA1 z?(eMk7qyD*W@khP2M2r8R24`})};r|X^45QJ!y>OT3^bu@4y9aHiXdT0N25}xgFx* zM6O$Tg7s>!9Q^M=ImH7t3Jd(S{yTDfc#`bM^&Eq80b${Os{;f(2(bD1!rgv>3>RF( zpZK%Amtc-;$dgl;;c>l)D~!OR-%JGkE#3}3MVFrJ_Y$3jrB`ILZs1Gb;D3?hfrJE$ zh~S{TM8Oep7cP2MF6eqRx^ElF1P7DpxlY*of%W>g-HG9|>?pMCyhULj0c;Z>{roXU zH#j(UtGRtYxy)&g6UI;F6c3*vC%^gED$*oWR8)Xt3GS2TA@MK)HXke*I3UuJTmXER z;A;~R5Rmni0b^sg(db}>oj?M-23S;Y_2BG3_#1)S(Tc`9nD`(3>i)le#{1&%SG}#n YkZ7v=PD#zT@n4aXQkKL#c=Y`L02<4F5&!@I diff --git a/images/pegleg/Dockerfile.ubuntu_focal b/images/pegleg/Dockerfile.ubuntu_focal new file mode 100644 index 00000000..803d50c2 --- /dev/null +++ b/images/pegleg/Dockerfile.ubuntu_focal @@ -0,0 +1,75 @@ +ARG FROM=ubuntu:20.04 +FROM ${FROM} +ARG CFSSLURL=https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 + +LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' +LABEL org.opencontainers.image.url='https://airshipit.org' +LABEL org.opencontainers.image.documentation='https://airship-pegleg.readthedocs.org' +LABEL org.opencontainers.image.source='https://opendev.org/airship/pegleg' +LABEL org.opencontainers.image.vendor='The Airship Authors' +LABEL org.opencontainers.image.licenses='Apache-2.0' + +ENV LANG=C.UTF-8 +ENV LC_ALL=C.UTF-8 +ARG DECKHAND_VERSION=branch/master +ARG SHIPYARD_VERSION=branch/master +ARG PROMENADE_VERSION=branch/master + +RUN set -ex \ + && apt update -qq \ + && apt install -y --no-install-recommends \ + automake \ + ca-certificates \ + curl \ + build-essential \ + git \ + gpg \ + gpg-agent \ + libssl-dev \ + libtool \ + make \ + netbase \ + openssh-client \ + python3-dev \ + python3-pip \ + python3-setuptools \ + && python3 -m pip install -U pip \ + && apt autoremove -yqq --purge \ + && apt clean \ + && rm -rf \ + /tmp/* \ + /usr/share/doc \ + /usr/share/doc-base \ + /usr/share/man \ + /var/lib/apt/lists/* \ + /var/log/* \ + /var/tmp/* + +ENV LD_LIBRARY_PATH=/usr/local/lib + +ARG LIBYAML_VERSION=0.2.5 +RUN set -ex \ + && git clone https://github.com/yaml/libyaml.git \ + && cd libyaml \ + && git checkout $LIBYAML_VERSION \ + && ./bootstrap \ + && ./configure \ + && make \ + && make install \ + && cd .. \ + && rm -fr libyaml + +VOLUME /var/pegleg +WORKDIR /var/pegleg + +COPY requirements.txt /opt/pegleg/requirements.txt +RUN pip3 install -r https://opendev.org/airship/deckhand/raw/${DECKHAND_VERSION}/requirements.txt \ + && pip3 install -r https://opendev.org/airship/promenade/raw/${PROMENADE_VERSION}/requirements.txt \ + && pip3 install -r https://opendev.org/airship/shipyard/raw/${SHIPYARD_VERSION}/src/bin/shipyard_client/requirements.txt \ + && pip3 install --no-cache-dir -r /opt/pegleg/requirements.txt + +COPY tools/install-cfssl.sh /opt/pegleg/tools/install-cfssl.sh +RUN /opt/pegleg/tools/install-cfssl.sh ${CFSSLURL} + +COPY . /opt/pegleg +RUN pip3 install -e /opt/pegleg --use-pep517 diff --git a/requirements.txt b/requirements.txt index 97e5fb50..b6358a2d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,126 +1,175 @@ -i https://pypi.org/simple -alembic==1.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -amqp==2.6.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -argparse==1.4.0 -asn1crypto==1.3.0 -babel==2.8.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -beaker==1.10.0 -cachetools==4.1.0; python_version ~= '3.5' -certifi==2020.4.5.2 -cffi==1.14.0 +alabaster==0.7.13 ; python_version >= '3.6' +alembic==1.4.3 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +amqp==2.6.1 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +argcomplete==3.0.8 ; python_version >= '3.6' +arrow==0.17.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +attrs==23.1.0 ; python_version >= '3.7' +autopage==0.5.1 ; python_version >= '3.6' +babel==2.12.1 ; python_version >= '3.7' +bcrypt==4.0.1 ; python_version >= '3.6' +beaker==1.12.0 +cachetools==5.3.0 ; python_version ~= '3.7' +certifi==2022.12.7 ; python_version >= '3.6' +cffi==1.15.1 chardet==3.0.4 +charset-normalizer==3.1.0 ; python_full_version >= '3.7.0' click==6.7 -cliff==3.1.0; python_version >= '3.5' -cmd2==0.8.9 -cryptography>=2.7 -debtcollector==1.22.0 -decorator==4.4.2 -deepdiff==3.3.0 -dnspython==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -docker-pycreds==0.4.0 -docker==3.7.2 -dogpile.cache==0.9.2 -eventlet==0.25.2 +click-default-group==1.2 +cliff==3.10.1 ; python_version >= '3.6' +cmd2==2.4.3 ; python_version >= '3.6' +configparser==5.3.0 ; python_version >= '3.7' +coverage==7.2.5 ; python_version >= '3.7' +cryptography==3.4.8 +debtcollector==2.5.0 +git+https://opendev.org/airship/deckhand.git@13c5199f18664d66ccdd3a1e54bb40ad2c293d1a#egg=deckhand +decorator==5.1.1 ; python_version >= '3.5' +deepdiff==5.8.1 ; python_version >= '3.6' +distlib==0.3.6 +dnspython==2.3.0 ; python_version >= '3.7' and python_version < '4.0' +docker==5.0.3 +docutils==0.17 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +dogpile.cache==1.2.0 ; python_version >= '3.6' +dulwich==0.21.3 ; python_version >= '3.7' +eventlet==0.33.3 extras==1.0.0 -falcon==1.4.1 -fasteners==0.15 +falcon==3.1.1 ; python_version >= '3.5' +fasteners==0.18 ; python_version >= '3.6' +filelock==3.12.0 ; python_version >= '3.7' fixtures==3.0.0 -flake8==3.7.9 -futurist==2.2.0; python_version >= '3.6' -git+https://opendev.org/airship/deckhand.git@5cd799cc5d04527ac782270008ff647b3779ff05#egg=deckhand -git+https://opendev.org/airship/promenade.git@c10165c144e0a18137596a3c89f1339d6ed30d0c#egg=promenade -git+https://opendev.org/airship/shipyard.git@e3e71f7d1632c0dc13b436a32c238f9da76d6d88#egg=shipyard-client&subdirectory=src/bin/shipyard_client -gitpython==2.1.15 -setuptools==40.4.3 -google-auth==1.16.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -greenlet==0.4.16 -hacking>=3.0.1,<3.1.0 -idna==2.8 -importlib-metadata==1.6.1; python_version < '3.8' -ipaddress==1.0.23 -iso8601==0.1.12 -jinja2==2.10 -jsonpath-ng==1.4.3 -jsonpickle==1.4.1; python_version >= '2.7' -jsonschema>=3.0.1,<4 -keystoneauth1>=3.18.0 -keystonemiddleware==5.3.0 -kombu==4.6.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -kubernetes~=24.2.0; python_version >= '3.6' -linecache2==1.0.0 -mako==1.1.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -markupsafe==1.1.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +flake8==3.8.4 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +futurist==2.4.1 ; python_version >= '3.6' +gitdb==4.0.10 ; python_version >= '3.7' +gitpython==3.1.31 +google-auth==2.17.3 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +greenlet==2.0.2 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +hacking==4.1.0 ; python_version >= '3.5' +html5lib==0.9999999 +httpexceptor==1.4.0 +idna==2.10 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +imagesize==1.4.1 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +importlib-metadata==2.1.3 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +iso8601==1.1.0 ; python_full_version >= '3.6.2' and python_version < '4.0' +jinja2==3.0.3 ; python_version >= '3.6' +jsonpath-ng==1.5.3 +jsonpath-rw==1.4.0 +jsonpath-rw-ext==1.2.2 +jsonpickle==1.4.1 ; python_version >= '2.7' +jsonschema==3.2.0 +keystoneauth1==5.1.1 +keystonemiddleware==10.2.0 ; python_version >= '3.8' +kombu==4.6.11 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +kubernetes==26.1.0 ; python_version >= '3.6' +mako==1.2.4 ; python_version >= '3.7' +markupsafe==2.0.1 ; python_version >= '3.6' mccabe==0.6.1 -monotonic==1.5 -msgpack==1.0.0 -netaddr==0.7.19 -netifaces==0.10.9 -networkx==2.2 +mock==5.0.2 ; python_version >= '3.6' +msgpack==1.0.5 +netaddr==0.8.0 +netifaces==0.11.0 +networkx==3.1 ; python_version >= '3.8' +nose==1.3.7 +oauthlib==3.2.2 ; python_version >= '3.6' +ordered-set==4.1.0 ; python_version >= '3.7' os-service-types==1.7.0 -oslo.cache==1.38.1 -oslo.concurrency==3.28.1 -oslo.config==7.0.0 -oslo.context==2.21.0 -oslo.db==4.41.1 -oslo.i18n==3.24.0 -oslo.log==3.45.2 -oslo.messaging==9.1.1 -oslo.middleware==3.36.0 -oslo.policy==1.40.1 -oslo.serialization==2.29.2 -oslo.service==2.2.0; python_version >= '3.6' -oslo.utils==3.42.1 -paste==3.0.1 -pastedeploy==1.5.2 -pbr==5.4.5 +oslo.cache==2.10.1 ; python_version >= '3.6' +oslo.concurrency==5.1.1 ; python_version >= '3.8' +oslo.config==8.7.1 ; python_version >= '3.6' +oslo.context==4.1.0 ; python_version >= '3.6' +oslo.db==10.0.0 ; python_version >= '3.6' +oslo.i18n==6.0.0 +oslo.log==4.6.0 ; python_version >= '3.6' +oslo.messaging==12.13.0 ; python_version >= '3.6' +oslo.metrics==0.6.0 ; python_version >= '3.8' +oslo.middleware==4.4.0 ; python_version >= '3.6' +oslo.policy==3.10.1 ; python_version >= '3.6' +oslo.serialization==4.2.0 ; python_version >= '3.6' +oslo.service==3.1.1 ; python_version >= '3.8' +oslo.utils==4.12.3 +packaging==21.3 ; python_version >= '3.6' +paste==3.5.0 +pastedeploy==3.0.1 ; python_version >= '3.7' +pastescript==3.3.0 +pbr==5.5.1 ; python_version >= '2.6' +platformdirs==3.5.0 ; python_version >= '3.7' ply==3.11 -prettytable==0.7.2 -psycopg2-binary==2.8.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pyasn1-modules==0.2.8 -pyasn1==0.4.8 -pycadf==3.0.0; python_version >= '3.6' -pycodestyle==2.5.0 -pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -pyflakes==2.1.0 -pyinotify==0.9.6; sys_platform != 'win32' and sys_platform != 'darwin' and sys_platform != 'sunos5' +prettytable==3.7.0 ; python_version >= '3.7' +git+https://opendev.org/airship/promenade.git@97e3721a03ca48d312891694972b827a53714bf9#egg=promenade +prometheus-client==0.16.0 ; python_version >= '3.6' +psycopg2-binary==2.9.6 +ptable==0.9.2 +pyasn1==0.5.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +pyasn1-modules==0.3.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +pycadf==3.1.1 ; python_version >= '3.6' +pycodestyle==2.6.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +pycparser==2.21 +pyflakes==2.2.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +pygments==2.14.0 ; python_version >= '3.6' +pyinotify==0.9.6 ; sys_platform != 'win32' and sys_platform != 'darwin' and sys_platform != 'sunos5' pylibyaml==0.1.0 -pyparsing==2.4.7; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' -pyperclip==1.8.0 -python-barbicanclient==4.7.0 -python-dateutil>=2.8.1 +pymongo==4.3.3 ; python_version >= '3.7' +pyparsing==2.4.7 ; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2' +pyperclip==1.8.2 +pyproject-api==1.5.0 ; python_version >= '3.7' +pyrsistent==0.19.3 ; python_version >= '3.7' +python-barbicanclient==5.2.0 +python-dateutil==2.8.1 python-editor==1.0.4 -python-keystoneclient==3.22.0 +python-keystoneclient==5.1.0 ; python_version >= '3.8' python-memcached==1.59 python-mimeparse==1.6.0 -pytz==2020.1 -pyyaml~=5.1 +python-subunit==1.4.0 +pytz==2023.3 +pyyaml==5.4.1 +reno==4.0.0 ; python_version >= '3.6' repoze.lru==0.7 -requests==2.22.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -rfc3986==1.4.0 -routes==2.4.1 -rsa==4.0 -six>=1.15.0 -smmap2==3.0.1 -smmap==3.0.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +requests==2.23.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +requests-oauthlib==1.3.1 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +resolver==0.2.1 +rfc3986==2.0.0 ; python_version >= '3.7' +routes==2.5.1 +rsa==4.9 ; python_version >= '3.6' +selector==0.10.1 +setuptools==45.2.0 ; python_version >= '3.5' +git+https://opendev.org/airship/shipyard.git@154a099b2843b1b42a7b8afa5fa98383cf3c1b7c#egg=shipyard-client&subdirectory=src/bin/shipyard_client +simplejson==3.19.1 ; python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2' +six==1.16.0 +smmap==5.0.0 ; python_version >= '3.6' +snowballstemmer==2.2.0 +sphinx==3.3.1 ; python_version >= '3.5' +sphinx-rtd-theme==0.5.0 +sphinxcontrib-applehelp==1.0.4 ; python_version >= '3.8' +sphinxcontrib-devhelp==1.0.2 ; python_version >= '3.5' +sphinxcontrib-htmlhelp==2.0.1 ; python_version >= '3.8' +sphinxcontrib-jsmath==1.0.1 ; python_version >= '3.5' +sphinxcontrib-qthelp==1.0.3 ; python_version >= '3.5' +sphinxcontrib-serializinghtml==1.1.5 ; python_version >= '3.5' +sqlalchemy==1.3.20 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' sqlalchemy-migrate==0.13.0 -sqlalchemy==1.3.17; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -sqlparse==0.3.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -statsd==3.3.0 -stevedore==1.30.0 +sqlparse==0.4.4 ; python_version >= '3.5' +statsd==4.0.1 +stevedore==5.0.0 ; python_version >= '3.8' tempita==0.5.2 -termcolor==1.1.0 +testrepository==0.0.20 testresources==2.0.1 testscenarios==0.5.0 -testtools==2.4.0 -traceback2==1.4.0 -unittest2==1.1.0 -urllib3==1.25.9; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' and python_version < '4' -uwsgi~=2.0.19.1 -vine==1.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -wcwidth==0.2.4; sys_platform != 'win32' -webob==1.8.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -websocket-client==0.57.0 -werkzeug==0.16.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' -wrapt==1.12.1 -yappi==1.2.5 -zipp~=3.6.0 \ No newline at end of file +testtools==2.5.0 ; python_version >= '3.5' +tiddlyweb==2.4.3 +tomli==2.0.1 ; python_version < '3.11' +tomlkit==0.11.8 ; python_version >= '3.7' +typing-extensions==3.7.2 +urllib3==1.25.11 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' +uwsgi==2.0.21 +vine==1.3.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +virtualenv==20.23.0 ; python_version >= '3.7' +wcwidth==0.2.6 +webob==1.8.7 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' +websocket-client==1.5.1 ; python_version >= '3.7' +werkzeug==2.1.2 ; python_version >= '3.7' +wheel==0.40.0 ; python_version >= '3.7' +wrapt==1.15.0 ; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +wsgi-intercept==1.11.0 +xmltodict==0.13.0 ; python_version >= '3.4' +yappi==1.4.0 +yq==3.2.1 ; python_version >= '3.6' +zipp==3.15.0 diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 00000000..ec6a0199 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,187 @@ +alabaster==0.7.13 +alembic==1.4.3 +amqp==2.6.1 +argcomplete==3.0.8 +arrow==0.17.0 +attrs==23.1.0 +autopage==0.5.1 +Babel==2.12.1 +bandit==1.6.2 +bcrypt==4.0.1 +Beaker==1.12.0 +cachetools==5.3.0 +certifi==2022.12.7 +cffi==1.15.1 +chardet==3.0.4 +charset-normalizer==3.1.0 +click==6.7 +click-default-group==1.2 +cliff==3.10.1 +cmd2==2.4.3 +configparser==5.3.0 +coverage==7.2.5 +cryptography==3.4.8 +debtcollector==2.5.0 +Deckhand @ git+https://opendev.org/airship/deckhand.git@13c5199f18664d66ccdd3a1e54bb40ad2c293d1a +decorator==5.1.1 +deepdiff==5.8.1 +distlib==0.3.6 +dnspython==2.3.0 +docker==5.0.3 +docutils==0.17 +dogpile.cache==1.2.0 +dulwich==0.21.3 +eventlet==0.33.3 +exceptiongroup==1.1.1 +execnet==1.9.0 +extras==1.0.0 +falcon==3.1.1 +fasteners==0.18 +filelock==3.12.0 +fixtures==3.0.0 +flake8==3.8.4 +flake8-import-order==0.18.2 +futurist==2.4.1 +gitdb==4.0.10 +GitPython==3.1.31 +google-auth==2.17.3 +greenlet==2.0.2 +hacking==4.1.0 +html5lib==0.9999999 +httpexceptor==1.4.0 +idna==2.10 +imagesize==1.4.1 +importlib-metadata==2.1.3 +iniconfig==2.0.0 +iso8601==1.1.0 +Jinja2==3.0.3 +jsonpath-ng==1.5.3 +jsonpath-rw==1.4.0 +jsonpath-rw-ext==1.2.2 +jsonpickle==1.4.1 +jsonschema==3.2.0 +keystoneauth1==5.1.1 +keystonemiddleware==10.2.0 +kombu==4.6.11 +kubernetes==26.1.0 +Mako==1.2.4 +MarkupSafe==2.0.1 +mccabe==0.6.1 +mock==5.0.2 +msgpack==1.0.5 +netaddr==0.8.0 +netifaces==0.11.0 +networkx==3.1 +nose==1.3.7 +oauthlib==3.2.2 +ordered-set==4.1.0 +os-service-types==1.7.0 +oslo.cache==2.10.1 +oslo.concurrency==5.1.1 +oslo.config==8.7.1 +oslo.context==4.1.0 +oslo.db==10.0.0 +oslo.i18n==6.0.0 +oslo.log==4.6.0 +oslo.messaging==12.13.0 +oslo.metrics==0.6.0 +oslo.middleware==4.4.0 +oslo.policy==3.10.1 +oslo.serialization==4.2.0 +oslo.service==3.1.1 +oslo.utils==4.12.3 +packaging==21.3 +Paste==3.5.0 +PasteDeploy==3.0.1 +PasteScript==3.3.0 +pbr==5.5.1 +pip==23.0.1 +pipenv==2023.2.4 +platformdirs==3.5.0 +pluggy==1.0.0 +ply==3.11 +prettytable==3.7.0 +promenade @ git+https://opendev.org/airship/promenade.git@97e3721a03ca48d312891694972b827a53714bf9 +prometheus-client==0.16.0 +psycopg2-binary==2.9.6 +PTable==0.9.2 +pyasn1==0.5.0 +pyasn1-modules==0.3.0 +pycadf==3.1.1 +pycodestyle==2.6.0 +pycparser==2.21 +pyflakes==2.2.0 +Pygments==2.14.0 +pylibyaml==0.1.0 +pymongo==4.3.3 +pyparsing==2.4.7 +pyperclip==1.8.2 +pyproject_api==1.5.0 +pyrsistent==0.19.3 +pytest==7.3.1 +pytest-cov==4.0.0 +pytest-xdist==3.2.1 +python-barbicanclient==5.2.0 +python-dateutil==2.8.1 +python-editor==1.0.4 +python-keystoneclient==5.1.0 +python-memcached==1.59 +python-mimeparse==1.6.0 +python-subunit==1.4.0 +pytz==2023.3 +PyYAML==5.4.1 +reno==4.0.0 +repoze.lru==0.7 +requests==2.23.0 +requests-oauthlib==1.3.1 +resolver==0.2.1 +rfc3986==2.0.0 +Routes==2.5.1 +rsa==4.9 +selector==0.10.1 +setuptools==45.2.0 +shipyard-client @ git+https://opendev.org/airship/shipyard.git@154a099b2843b1b42a7b8afa5fa98383cf3c1b7c#subdirectory=src/bin/shipyard_client +simplejson==3.19.1 +six==1.16.0 +smmap==5.0.0 +snowballstemmer==2.2.0 +Sphinx==3.3.1 +sphinx-rtd-theme==0.5.0 +sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +SQLAlchemy==1.3.20 +sqlalchemy-migrate==0.13.0 +sqlparse==0.4.4 +statsd==4.0.1 +stevedore==5.0.0 +Tempita==0.5.2 +testfixtures==7.1.0 +testrepository==0.0.20 +testresources==2.0.1 +testscenarios==0.5.0 +testtools==2.5.0 +tiddlyweb==2.4.3 +tomli==2.0.1 +tomlkit==0.11.8 +typing-extensions==3.7.2 +urllib3==1.25.11 +uWSGI==2.0.21 +vine==1.3.0 +virtualenv==20.23.0 +virtualenv-clone==0.5.7 +wcwidth==0.2.6 +WebOb==1.8.7 +websocket-client==1.5.1 +Werkzeug==2.1.2 +wheel==0.40.0 +wrapt==1.15.0 +wsgi-intercept==1.11.0 +xmltodict==0.13.0 +yapf==0.28.0 +yappi==1.4.0 +yq==3.2.1 +zipp==3.15.0 diff --git a/tests/unit/cli/test_commands.py b/tests/unit/cli/test_commands.py index bb301a96..229d20e8 100644 --- a/tests/unit/cli/test_commands.py +++ b/tests/unit/cli/test_commands.py @@ -30,7 +30,7 @@ from tests.unit import test_utils TEST_PARAMS = { "site_name": "seaworthy", "site_type": "foundry", - "repo_rev": '342c9eedd58f046a322ee2dd6752a9ec8fa992bb', + "repo_rev": '23e4bfc80aa6a3c845b31750d7593898f6e55e82', "repo_name": "treasuremap", "repo_url": "https://review.opendev.org/airship/treasuremap.git", } @@ -756,7 +756,7 @@ class TestSiteSecretsActions(BaseCLIActionTest): class TestTypeCliActions(BaseCLIActionTest): """Tests type-level CLI actions.""" - def setup(self): + def setup_method(self, *args): self.expected_types = ['foundry'] def _assert_table_has_expected_sites(self, table_output): @@ -795,7 +795,7 @@ class TestTypeCliActions(BaseCLIActionTest): class TestSiteCliActionsWithSubdirectory(BaseCLIActionTest): """Tests site CLI actions with subdirectories in repository paths.""" - def setup(self): + def setup_method(self, *args): self.expected_sites = ['demo', 'gate-multinode', 'dev', 'dev-proxy'] def _assert_table_has_expected_sites(self, table_output): @@ -874,7 +874,7 @@ class TestCliSiteSubcommandsWithDecryptOption(BaseCLIActionTest): "PEGLEG_PASSPHRASE": 'ytrr89erARAiPE34692iwUMvWqqBvC', "PEGLEG_SALT": "MySecretSalt1234567890][" }) - def setup(self): + def setup_method(self, *args): pegleg_main.run_config( self.treasuremap_path, None, None, None, [], True, False) pegleg_main.run_encrypt('zuul-tester', None, self.site_name) diff --git a/tests/unit/engine/catalog/test_pki_utility.py b/tests/unit/engine/catalog/test_pki_utility.py index bd6bcb05..ed18670a 100644 --- a/tests/unit/engine/catalog/test_pki_utility.py +++ b/tests/unit/engine/catalog/test_pki_utility.py @@ -25,7 +25,8 @@ from pegleg.engine.common import managed_document CERT_HEADER = '-----BEGIN CERTIFICATE-----\n' CERT_KEY_HEADER = '-----BEGIN RSA PRIVATE KEY-----\n' PUBLIC_KEY_HEADER = '-----BEGIN PUBLIC KEY-----\n' -PRIVATE_KEY_HEADER = '-----BEGIN RSA PRIVATE KEY-----\n' +PRIVATE_KEY_HEADER_PKCS1 = '-----BEGIN RSA PRIVATE KEY-----\n' +PRIVATE_KEY_HEADER_PKCS8 = '-----BEGIN PRIVATE KEY-----\n' PEGLEG_MANAGED_DOC_SCHEMA = 'pegleg/PeglegManagedDocument/v1' CA_SCHEMA = 'deckhand/CertificateAuthority/v1' @@ -87,7 +88,8 @@ class TestPKIUtility(object): assert isinstance(priv_key, dict), priv_key assert PRIVATE_KEY_SCHEMA in priv_key['schema'] - assert PRIVATE_KEY_HEADER in priv_key['data'] + assert PRIVATE_KEY_HEADER_PKCS1 in priv_key['data'] or \ + PRIVATE_KEY_HEADER_PKCS8 in priv_key['data'] def test_generate_certificate(self): pki_obj = pki_utility.PKIUtility(duration=365) diff --git a/tests/unit/engine/test_selectable_linting.py b/tests/unit/engine/test_selectable_linting.py index f9c7913e..0fdc013d 100644 --- a/tests/unit/engine/test_selectable_linting.py +++ b/tests/unit/engine/test_selectable_linting.py @@ -32,7 +32,7 @@ For more information, see: https://storyboard.openstack.org/#!/story/2003762 class TestSelectableLinting(object): - def setup(self): + def setup_method(self, *args): self.site_yaml_path = os.path.join(os.getcwd(), 'site_yamls') def _exclude_all(self, except_code): diff --git a/tools/gate/playbooks/docker-image-build.yaml b/tools/gate/playbooks/docker-image-build.yaml index 8256f669..902e65b4 100644 --- a/tools/gate/playbooks/docker-image-build.yaml +++ b/tools/gate/playbooks/docker-image-build.yaml @@ -13,6 +13,13 @@ # limitations under the License. - hosts: primary + roles: + - clear-firewall + - bindep + - ensure-docker + - ensure-python + - ensure-pip + tasks: - include_vars: vars.yaml @@ -29,23 +36,14 @@ - debug: msg: "{{ tags | to_json }}" - - name: Set ubuntu bionic base image + - name: Set ubuntu focal base image set_fact: - base_image: "{{ base_image_bionic }}" - when: distro == 'ubuntu_bionic' + base_image: "{{ base_image_focal }}" + when: distro == 'ubuntu_focal' - - name: Set ubuntu xenial base image - set_fact: - base_image: "{{ base_image_xenial }}" - when: distro == 'ubuntu_xenial' - - - name: Set ubuntu opensuse base image - set_fact: - base_image: "{{ base_image_opensuse }}" - when: distro == 'opensuse_15' - name: Determine tags - shell: echo '{{ tags | to_json }}' | python {{ zuul.project.src_dir }}/tools/image_tags.py + shell: echo '{{ tags | to_json }}' | python3 {{ zuul.project.src_dir }}/tools/image_tags.py environment: BRANCH: "{{ zuul.branch | default('') }}" CHANGE: "{{ zuul.change | default('') }}" @@ -61,50 +59,12 @@ shell: rm /etc/pip.conf become: True - - name: Install Docker (Debian) - when: ansible_os_family == 'Debian' + - name: Install Docker python module for ansible docker login block: - - file: - path: "{{ item }}" - state: directory - with_items: - - /etc/docker/ - - /etc/systemd/system/docker.service.d/ - - /var/lib/docker/ - - mount: - path: /var/lib/docker/ - src: tmpfs - fstype: tmpfs - opts: size=25g - state: mounted - - copy: "{{ item }}" - with_items: - - content: "{{ docker_daemon | to_json }}" - dest: /etc/docker/daemon.json - - src: files/docker-systemd.conf - dest: /etc/systemd/system/docker.service.d/ - - apt_key: - url: https://download.docker.com/linux/ubuntu/gpg - - apt_repository: - repo: "deb http://{{ deb_docker_repo }} bionic stable" - - apt: - name: "{{ item }}" - allow_unauthenticated: True - with_items: - - docker-ce - - python3-pip - - python3-setuptools - pip: name: docker - version: 2.7.0 + version: 4.4.4 executable: pip3 - # NOTE(SamYaple): Allow all connections from containers to host so the - # containers can access the http server for git and wheels - - iptables: - action: insert - chain: INPUT - in_interface: docker0 - jump: ACCEPT become: True - name: Make images diff --git a/tools/gate/playbooks/files/docker-systemd.conf b/tools/gate/playbooks/files/docker-systemd.conf deleted file mode 100644 index 6b01af0f..00000000 --- a/tools/gate/playbooks/files/docker-systemd.conf +++ /dev/null @@ -1,8 +0,0 @@ -# NOTE(SamYaple): CentOS cannot be build with userns-remap enabled. httpd uses -# cap_set_file capability and there is no way to pass that in at build as of -# docker 17.06. -# TODO(SamYaple): Periodically check to see if this is possible in newer -# versions of Docker -[Service] -ExecStart= -ExecStart=/usr/bin/dockerd diff --git a/tools/gate/playbooks/lint-yaml.yaml b/tools/gate/playbooks/lint-yaml.yaml index 3a4b083f..a93ddd2f 100644 --- a/tools/gate/playbooks/lint-yaml.yaml +++ b/tools/gate/playbooks/lint-yaml.yaml @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -- hosts: ubuntu-bionic +- hosts: ubuntu-focal tasks: - name: lint-yaml shell: | diff --git a/tools/gate/run-cover-tests.sh b/tools/gate/run-cover-tests.sh new file mode 100755 index 00000000..18c6d99a --- /dev/null +++ b/tools/gate/run-cover-tests.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -e +posargs=$@ +# cross-platform way to derive the number of logical cores +readonly num_cores=$(python -c 'import multiprocessing as mp; print(mp.cpu_count())') +if [ ${#posargs} -ge 1 ]; then + PATH=$PATH:~/.local/bin; pytest -vv -k ${posargs} -n $num_cores --cov=pegleg --cov-report \ + html:cover --cov-report xml:cover/coverage.xml --cov-report term \ + --cov-fail-under 87 tests/ +else + pytest -n $num_cores + PATH=$PATH:~/.local/bin; pytest -vv -n $num_cores --cov=pegleg --cov-report \ + html:cover --cov-report xml:cover/coverage.xml --cov-report term \ + --cov-fail-under 87 tests/ +fi +set +e diff --git a/tools/gate/run-unit-tests.sh b/tools/gate/run-unit-tests.sh index 61fbf44f..99fb3f27 100755 --- a/tools/gate/run-unit-tests.sh +++ b/tools/gate/run-unit-tests.sh @@ -5,8 +5,8 @@ posargs=$@ # cross-platform way to derive the number of logical cores readonly num_cores=$(python -c 'import multiprocessing as mp; print(mp.cpu_count())') if [ ${#posargs} -ge 1 ]; then - pytest -k ${posargs} -n $num_cores + pytest -k ${posargs} -n $num_cores -vv else - pytest -n $num_cores + pytest -n $num_cores -vv fi set +e diff --git a/tools/pegleg.sh b/tools/pegleg.sh index 173f346e..3342531d 100755 --- a/tools/pegleg.sh +++ b/tools/pegleg.sh @@ -3,7 +3,7 @@ set -e : ${WORKSPACE:=$(pwd)} -: ${IMAGE:=quay.io/airshipit/pegleg:latest-ubuntu_xenial} +: ${IMAGE:=quay.io/airshipit/pegleg:latest-ubuntu_focal} : ${TERM_OPTS:=-it} diff --git a/tox.ini b/tox.ini index 6690fa2c..38a63fda 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] -envlist = py36,pep8,docs,cover -minversion = 2.3.1 +envlist = py38,pep8,docs,cover +minversion = 2.38.0 skipsdist = True [testenv] @@ -11,84 +11,75 @@ setenv = LC_ALL=en_US.utf-8 PIPENV_VERBOSITY=-1 PIPENV_IGNORE_PIPFILE=1 -deps = - pipenv - setuptools < 58.0.0 -passenv = http_proxy https_proxy HTTP_PROXY HTTPS_PROXY no_proxy NO_PROXY PBR_VERSION -whitelist_externals = +deps= + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt +passenv = + http_proxy + https_proxy + HTTP_PROXY + HTTPS_PROXY + no_proxy + NO_PROXY + PBR_VERSION +allowlist_externals = bash find commands = - pipenv install --dev find . -type f -name "*.pyc" -delete bash -c "{toxinidir}/tools/install-cfssl.sh" - {toxinidir}/tools/gate/run-unit-tests.sh '{posargs}' + bash -c "{toxinidir}/tools/gate/run-unit-tests.sh '{posargs}'" [testenv:fmt] basepython = python3 -deps = - pipenv - setuptools < 58.0.0 commands = - pipenv install --dev yapf -ir {toxinidir}/pegleg {toxinidir}/tests +allowlist_externals = + yapf [testenv:pep8] basepython = python3 -deps = - pipenv - setuptools < 58.0.0 - safety - bandit -commands = - pipenv install --dev +command = bash -c "{toxinidir}/tools/gate/whitespace-linter.sh" - bandit -r pegleg -n 5 + bandit --skip B105 -r pegleg -n 5 flake8 {toxinidir}/pegleg yapf -dr {toxinidir}/pegleg {toxinidir}/tests -whitelist_externals = +allowlist_externals = bash + bandit + flake8 + yapf + find + [testenv:docs] basepython = python3 -deps = - pipenv - setuptools < 58.0.0 - -r{toxinidir}/doc/requirements.txt +deps= + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + -r{toxinidir}/doc/requirements.txt commands = - pipenv install --dev bash -c "{toxinidir}/tools/gate/build-docs.sh" -whitelist_externals = +allowlist_externals = bash [testenv:bandit] basepython = python3 -deps = - bandit -commands = bandit -r pegleg -n 5 +commands = bandit --skip B105 -r pegleg -n 5 [testenv:safety] basepython = python3 deps = - pipenv - setuptools < 58.0.0 safety commands = - pipenv check safety check -r {toxinidir}/requirements.txt -r {toxinidir}/doc/requirements.txt --full-report [testenv:cover] basepython = python3 -deps = - pipenv - setuptools < 58.0.0 commands = - pipenv install --dev - {toxinidir}/tools/install-cfssl.sh - bash -c 'PATH=$PATH:~/.local/bin; pytest --cov=pegleg --cov-report \ - html:cover --cov-report xml:cover/coverage.xml --cov-report term \ - --cov-fail-under 87 tests/' -whitelist_externals = + bash -c {toxinidir}/tools/install-cfssl.sh + bash -c {toxinidir}/tools/gate/run-cover-tests.sh +allowlist_externals = bash [testenv:update-requirements] @@ -96,18 +87,27 @@ deps = pipenv setuptools < 58.0.0 commands = + rm -f Pipfile.lock + rm -f requirements.txt + rm -f test-requirements.txt pipenv lock --clear - bash -c "pipenv lock -r > {toxinidir}/requirements.txt" -whitelist_externals = - bash + sh -c "PIPENV_VERBOSITY=-1 pipenv requirements > requirements.txt" + pipenv install --dev + sh -c "pip freeze --all | grep -vE 'pegleg|pyinotify|pkg-resources==0.0.0' > test-requirements.txt" +allowlist_externals = + rm + sh [testenv:releasenotes] basepython = python3 -deps = -r{toxinidir}/doc/requirements.txt +deps= + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + -r{toxinidir}/doc/requirements.txt commands = rm -rf releasenotes/build sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html -whitelist_externals = +allowlist_externals = rm [testenv:venv] diff --git a/vcs-requirements.env b/vcs-requirements.env index 85075e03..31b93395 100644 --- a/vcs-requirements.env +++ b/vcs-requirements.env @@ -1,3 +1,3 @@ -DECKHAND_VERSION=commit/5cd799cc5d04527ac782270008ff647b3779ff05 -SHIPYARD_VERSION=commit/e3e71f7d1632c0dc13b436a32c238f9da76d6d88 -PROMENADE_VERSION=commit/c10165c144e0a18137596a3c89f1339d6ed30d0c +DECKHAND_VERSION=commit/03f6932e16aa0b72a32a10fc04a52125c45dd5d7 +SHIPYARD_VERSION=commit/154a099b2843b1b42a7b8afa5fa98383cf3c1b7c +PROMENADE_VERSION=commit/97e3721a03ca48d312891694972b827a53714bf9