From 37ec834cf620acd16756375dd7705aac48c34e97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Gr=C3=BCbel?= Date: Wed, 4 Oct 2023 08:45:20 +0200 Subject: [PATCH] break(general): remove Python 3.7 (#5605) * remove Python 3.7 and replace deep_merge * fix lint * remove deep-merge from setup.py --- .github/workflows/pr-test.yml | 9 +- Pipfile | 1 - Pipfile.lock | 617 ++++++++---------- .../graph_components/block_types.py | 9 +- .../graph_components/block_types.py | 3 +- checkov/bicep/graph_builder/local_graph.py | 4 +- checkov/bicep/runner.py | 3 +- .../variable_rendering/renderer.py | 4 +- .../graph_components/block_types.py | 5 +- checkov/common/multi_signature.py | 3 +- checkov/common/output/cyclonedx.py | 10 +- checkov/common/output/spdx.py | 14 +- checkov/common/runners/object_runner.py | 4 +- checkov/common/runners/runner_registry.py | 4 +- checkov/common/typing.py | 4 +- checkov/common/util/deep_merge.py | 122 ++++ checkov/common/util/http_utils.py | 8 +- checkov/dockerfile/utils.py | 3 +- checkov/main.py | 3 +- checkov/secrets/coordinator.py | 3 +- checkov/secrets/git_history_store.py | 3 +- checkov/secrets/git_types.py | 3 +- .../secrets/plugins/custom_regex_detector.py | 1 - .../terraform/graph_builder/local_graph.py | 4 +- checkov/terraform/tf_parser.py | 6 +- extra_stubs/boolean/__init__.pyi | 6 + extra_stubs/boolean/boolean.py | 6 + extra_stubs/license_expression/__init__.pyi | 16 + mypy.ini | 6 - setup.py | 4 +- 30 files changed, 475 insertions(+), 413 deletions(-) create mode 100644 checkov/common/util/deep_merge.py create mode 100644 extra_stubs/boolean/__init__.pyi create mode 100644 extra_stubs/boolean/boolean.py create mode 100644 extra_stubs/license_expression/__init__.pyi diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml index 555a4bff09d..1b291bec4cc 100644 --- a/.github/workflows/pr-test.yml +++ b/.github/workflows/pr-test.yml @@ -54,7 +54,7 @@ jobs: strategy: fail-fast: true matrix: - python: ["3.7", "3.8", "3.9", "3.10", "3.11"] # TODO: remove 3.7 end of September + python: ["3.8", "3.9", "3.10", "3.11"] runs-on: ubuntu-latest timeout-minutes: 30 steps: @@ -79,12 +79,7 @@ jobs: # remove venv, if exists pipenv --rm || true pipenv --python ${{ matrix.python }} - # TODO: remove 3.7 end of September - if [ ${{ matrix.python }} == '3.7' ]; then - pipenv install --skip-lock --dev -v - else - pipenv install --dev -v - fi + pipenv install --dev -v pipenv run pip install redefine --index-url https://pip.redefine.dev - name: Unit tests env: diff --git a/Pipfile b/Pipfile index d9157e49b58..dce19416354 100644 --- a/Pipfile +++ b/Pipfile @@ -46,7 +46,6 @@ boto3-stubs-lite = {extras = ["s3"], version = "*"} bc-python-hcl2 = "==0.3.51" bc-detect-secrets = "==1.4.30" bc-jsonpath-ng = "==1.5.9" -deep-merge = "*" tabulate = "*" colorama="*" termcolor="*" diff --git a/Pipfile.lock b/Pipfile.lock index 9207728b851..a4bb1b6b424 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a4b0f4a578e3780d3bc73303958d713386c1986b295a3db052491a47d4b354e8" + "sha256": "a5c36a72168a777a2e1c96b8c889ed819b5d272d01475ce2908c34a2af9d486b" }, "pipfile-spec": 6, "requires": { @@ -115,7 +115,6 @@ "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==3.8.5" }, "aiomultiprocess": { @@ -124,7 +123,6 @@ "sha256:3036c4c881cfbc63674686e036097f22309017c6bf96b04722a542ac9cac7423" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==0.9.0" }, "aiosignal": { @@ -141,7 +139,6 @@ "sha256:d97c036d12a752d1079f190bc1521c545b941fda89ad85d15afa909b4d1b9a99" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==3.1.2" }, "async-timeout": { @@ -166,7 +163,6 @@ "sha256:99fd6a7e5033ea3a4532d3ccc11b3f669c447da0109e0cb9d66998f4131dba0c" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==1.4.30" }, "bc-jsonpath-ng": { @@ -175,7 +171,6 @@ "sha256:5e72d78887521469f8a52966f6f0664ec3d59dcb2cebf85b8131867a241c84ec" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==1.5.9" }, "bc-python-hcl2": { @@ -184,7 +179,6 @@ "sha256:ab72880dd58689a4ee9a47f229788311a2b4d607fe034a819a40a63dab432644" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.3.51" }, "beartype": { @@ -212,20 +206,19 @@ }, "boto3": { "hashes": [ - "sha256:22e37d8c4f2d97b5e5c6ccc1d9edc7760717990b0ba8b8ea17a58cc87e57c5c9", - "sha256:3cb2aee317a1b8686e3b23674e4099b8ff7451bd8acc61b9719acff86fa024d1" + "sha256:5ddf24cf52c7fb6aaa332eaa08ae8c2afc8f2d1e8860680728533dd573904e32", + "sha256:e2d2824ba6459b330d097e94039a9c4f96ae3f4bcdc731d620589ad79dcd16d3" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==1.28.54" + "version": "==1.28.57" }, "botocore": { "hashes": [ - "sha256:71fdb337ddcdb6bf378e1211cba9ce754c35f12b1524c7d0c0c147b2310356c7", - "sha256:c98e78a9490c4166b205f87912b46770e156bfe7d53bae54ccbd49c68a336ec6" + "sha256:301436174635bec739b225b840fc365ca00e5c1a63e5b2a19ee679d204e01b78", + "sha256:af006248276ff8e19e3ec7214478f6257035eb40aed865e405486500471ae71b" ], "markers": "python_version >= '3.7'", - "version": "==1.31.54" + "version": "==1.31.57" }, "cached-property": { "hashes": [ @@ -240,7 +233,6 @@ "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==5.3.1" }, "certifi": { @@ -253,154 +245,157 @@ }, "cffi": { "hashes": [ - "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", - "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", - "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", - "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", - "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", - "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", - "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", - "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", - "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", - "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", - "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", - "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", - "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", - "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", - "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", - "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", - "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", - "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", - "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", - "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", - "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", - "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", - "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", - "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", - "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", - "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", - "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", - "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", - "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", - "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", - "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", - "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", - "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", - "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", - "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", - "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", - "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", - "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", - "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", - "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", - "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", - "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", - "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", - "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", - "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", - "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", - "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", - "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", - "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", - "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", - "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", - "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", - "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", - "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", - "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", - "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", - "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", - "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", - "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", - "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", - "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", - "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", - "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", - "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" - ], - "version": "==1.15.1" + "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", + "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", + "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", + "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", + "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", + "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", + "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", + "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", + "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", + "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", + "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", + "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", + "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", + "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", + "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", + "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", + "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", + "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", + "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", + "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", + "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", + "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", + "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", + "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", + "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", + "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", + "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", + "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", + "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", + "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", + "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", + "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", + "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", + "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", + "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", + "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", + "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", + "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", + "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", + "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", + "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", + "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", + "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", + "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", + "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", + "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", + "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", + "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", + "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", + "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", + "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", + "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" + ], + "markers": "python_version >= '3.8'", + "version": "==1.16.0" }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" - ], - "index": "pypi", - "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843", + "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786", + "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e", + "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8", + "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4", + "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa", + "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d", + "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82", + "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7", + "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895", + "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d", + "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a", + "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382", + "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678", + "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b", + "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e", + "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741", + "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4", + "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596", + "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9", + "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69", + "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c", + "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77", + "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13", + "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459", + "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e", + "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7", + "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908", + "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a", + "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f", + "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8", + "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482", + "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d", + "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d", + "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545", + "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34", + "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86", + "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6", + "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe", + "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e", + "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc", + "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7", + "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd", + "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c", + "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557", + "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a", + "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89", + "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078", + "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e", + "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4", + "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403", + "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0", + "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89", + "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115", + "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9", + "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05", + "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a", + "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec", + "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56", + "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38", + "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479", + "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c", + "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e", + "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd", + "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186", + "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455", + "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c", + "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65", + "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78", + "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287", + "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df", + "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43", + "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1", + "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7", + "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989", + "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a", + "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63", + "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884", + "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649", + "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810", + "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828", + "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4", + "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2", + "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd", + "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5", + "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe", + "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293", + "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e", + "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e", + "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8" + ], + "index": "pypi", + "version": "==3.3.0" }, "click": { "hashes": [ @@ -408,7 +403,6 @@ "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==8.1.7" }, "click-option-group": { @@ -425,7 +419,6 @@ "sha256:afa27770d97720dc4bddb3c11f50bd287f1ab1fdd908538e896e23c70a0d9c5f" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==0.6.1" }, "colorama": { @@ -434,7 +427,6 @@ "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" ], "index": "pypi", - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", "version": "==0.4.6" }, "configargparse": { @@ -443,7 +435,6 @@ "sha256:e7067471884de5478c58a511e529f0f9bd1c66bfef1dea90935438d6c23306d1" ], "index": "pypi", - "markers": "python_version >= '3.5'", "version": "==1.7" }, "contextlib2": { @@ -460,7 +451,6 @@ "sha256:8981ca462fba91469c268d684a03f72c89c7a807674d884f83a28d8c2822a9b6" ], "index": "pypi", - "markers": "python_version >= '3.6' and python_version < '4.0'", "version": "==3.1.5" }, "decorator": { @@ -471,21 +461,12 @@ "markers": "python_version >= '3.5'", "version": "==5.1.1" }, - "deep-merge": { - "hashes": [ - "sha256:8056b4b43c6dfddf5c7b1feb3a09f1ab1cbd74e8382e43736ea8c5619e8e5a4e", - "sha256:b54415f90934c42e334114e2864cb4d4e7335b34ad396e35ad8610c96065a47e" - ], - "index": "pypi", - "version": "==0.0.4" - }, "docker": { "hashes": [ "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20", "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==6.1.3" }, "dockerfile-parse": { @@ -494,7 +475,6 @@ "sha256:bdffd126d2eb26acf1066acb54cb2e336682e1d72b974a40894fac76a4df17f6" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==2.0.1" }, "dpath": { @@ -503,7 +483,6 @@ "sha256:d9560e03ccd83b3c6f29988b0162ce9b34fd28b9d8dbda46663b20c68d9cdae3" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==2.1.3" }, "frozenlist": { @@ -587,7 +566,6 @@ "sha256:f9b9ddc0761c125d5780eab2d64be4873fc6817c2899cbcb34b02344bdc7bc54" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==3.1.37" }, "idna": { @@ -652,7 +630,6 @@ "sha256:fc4021242f00adb150e759692da065bddef5af22afea387cd5a726461946b93b" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.10.8" }, "importlib-metadata": { @@ -661,7 +638,6 @@ "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==6.8.0" }, "importlib-resources": { @@ -693,7 +669,6 @@ "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==1.0.1" }, "jsonschema": { @@ -702,7 +677,6 @@ "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==4.19.1" }, "jsonschema-specifications": { @@ -735,7 +709,6 @@ "sha256:8d7e5e2de0d04fc104a4f952c440e8f08a5ba63480a0dad015b294770b7e58ec" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==30.1.1" }, "markdown": { @@ -898,7 +871,6 @@ "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==2.6.3" }, "numpy": { @@ -941,7 +913,6 @@ "sha256:d18690f9e3d31eedb66b57b88c2165d760b24ea0a01f150dd3f068155088ce68" ], "index": "pypi", - "markers": "python_full_version >= '3.7.1'", "version": "==0.28.1" }, "packageurl-python": { @@ -950,7 +921,6 @@ "sha256:799acfe8d9e6e3534bbc19660be97d5b66754bc033e62c39f1e2f16323fcfa84" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.11.2" }, "packaging": { @@ -959,7 +929,6 @@ "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==23.1" }, "pkgutil-resolve-name": { @@ -991,7 +960,6 @@ "sha256:7920896195af163230635f1a5cee0958f56003ef8c421f805ec81f134f80a57c" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==1.5.1.20230817" }, "prettytable": { @@ -1000,7 +968,6 @@ "sha256:f4ed94803c23073a90620b201965e5dc0bccf1760b7a7eaf3158cab8aaffdf34" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==3.9.0" }, "pycares": { @@ -1066,7 +1033,6 @@ "sha256:a3edd1c3d280c283d614c865a854a693daf56c35cd4095b373016c214baa76dd" ], "index": "pypi", - "markers": "python_version >= '3.7' and python_version < '4.0'", "version": "==0.4.1" }, "pycparser": { @@ -1133,7 +1099,7 @@ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "pyyaml": { @@ -1190,7 +1156,6 @@ "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==6.0.1" }, "rdflib": { @@ -1309,7 +1274,6 @@ "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==2.31.0" }, "rpds-py": { @@ -1460,16 +1424,15 @@ "sha256:f2d968ba9da4cbf343ff7aee80a7e97e0d127fa0d5d4a2f456b86bfd3c324d58" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.13.1" }, "s3transfer": { "hashes": [ - "sha256:b014be3a8a2aab98cfe1abc7229cc5a9a0cf05eb9c1f2b86b230fd8df3f78084", - "sha256:cab66d3380cca3e70939ef2255d01cd8aece6a4907a9528740f668c4b0611861" + "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a", + "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e" ], "markers": "python_version >= '3.7'", - "version": "==0.6.2" + "version": "==0.7.0" }, "schema": { "hashes": [ @@ -1485,7 +1448,6 @@ "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177" ], "index": "pypi", - "markers": "python_version >= '2.7'", "version": "==2.10.0" }, "setuptools": { @@ -1501,7 +1463,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "smmap": { @@ -1533,7 +1495,6 @@ "sha256:c83652cd65b5726058dcbdaab85839dbe484c43ea6f61046137516aa1b8428ae" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.8.1" }, "tabulate": { @@ -1542,7 +1503,6 @@ "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.9.0" }, "termcolor": { @@ -1551,7 +1511,6 @@ "sha256:b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==2.3.0" }, "texttable": { @@ -1566,7 +1525,7 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, "tqdm": { @@ -1575,7 +1534,6 @@ "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==4.66.1" }, "typing-extensions": { @@ -1584,7 +1542,6 @@ "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==4.8.0" }, "unidiff": { @@ -1620,10 +1577,10 @@ }, "wcwidth": { "hashes": [ - "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e", - "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0" + "sha256:77f719e01648ed600dfa5402c347481c0992263b81a027344f3e1ba25493a704", + "sha256:8705c569999ffbb4f6a87c6d1b80f324bd6db952f5eb0b95bc07517f4c1813d4" ], - "version": "==0.2.6" + "version": "==0.2.8" }, "websocket-client": { "hashes": [ @@ -1719,7 +1676,6 @@ "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==1.9.2" }, "zipp": { @@ -1823,7 +1779,6 @@ "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==3.8.5" }, "aioresponses": { @@ -1864,7 +1819,6 @@ "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==1.7.5" }, "boto3-stubs-lite": { @@ -1872,19 +1826,19 @@ "s3" ], "hashes": [ - "sha256:3894e31ea93b30d1798e0cb79a7471b42ea721396daed2a5a7ba4cd6304dee1b", - "sha256:f015f3ad7457647835999d069198ed7610942c6e38865d763301e872ee84e9f5" + "sha256:7bf6af1a994f70c31e0fbabd5053494ad233e8b450238aea6831de02564e45b0", + "sha256:94055f94b3179e7ee956172614792ed9749ed1c330913fb5fe2063788cb092dd" ], - "markers": "python_version >= '3.7'", - "version": "==1.28.54" + "index": "pypi", + "version": "==1.28.57" }, "botocore-stubs": { "hashes": [ - "sha256:6e3e015ba4d2172c6a9bd5ff5131c39c995991559a567dce6c8534884f83ded1", - "sha256:96223fdf87a68037dd1ed366ffe28b5b744aca495a365f4535e2179c9a88455c" + "sha256:bce87eb261f6ad9a43ae1d6946fa48582a99685642a9edb9a56b50ac113b3177", + "sha256:e28f3ca7a6279f01dcec4663980be80aa93dc4eb2efcc2396859ceb647623b83" ], "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==1.31.54" + "version": "==1.31.57" }, "certifi": { "hashes": [ @@ -1904,85 +1858,99 @@ }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" - ], - "index": "pypi", - "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843", + "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786", + "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e", + "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8", + "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4", + "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa", + "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d", + "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82", + "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7", + "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895", + "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d", + "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a", + "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382", + "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678", + "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b", + "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e", + "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741", + "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4", + "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596", + "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9", + "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69", + "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c", + "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77", + "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13", + "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459", + "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e", + "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7", + "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908", + "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a", + "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f", + "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8", + "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482", + "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d", + "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d", + "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545", + "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34", + "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86", + "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6", + "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe", + "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e", + "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc", + "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7", + "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd", + "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c", + "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557", + "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a", + "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89", + "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078", + "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e", + "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4", + "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403", + "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0", + "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89", + "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115", + "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9", + "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05", + "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a", + "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec", + "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56", + "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38", + "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479", + "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c", + "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e", + "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd", + "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186", + "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455", + "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c", + "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65", + "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78", + "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287", + "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df", + "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43", + "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1", + "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7", + "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989", + "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a", + "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63", + "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884", + "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649", + "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810", + "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828", + "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4", + "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2", + "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd", + "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5", + "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe", + "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293", + "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e", + "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e", + "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8" + ], + "index": "pypi", + "version": "==3.3.0" }, "coverage": { "hashes": [ @@ -2040,7 +2008,6 @@ "sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6" ], "index": "pypi", - "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": "==5.5" }, "coverage-badge": { @@ -2095,7 +2062,6 @@ "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5" ], "index": "pypi", - "markers": "python_full_version >= '3.8.1'", "version": "==6.1.0" }, "flake8-bugbear": { @@ -2104,7 +2070,6 @@ "sha256:b182cf96ea8f7a8595b2f87321d7d9b28728f4d9c3318012d896543d19742cb5" ], "index": "pypi", - "markers": "python_full_version >= '3.8.1'", "version": "==23.9.16" }, "freezegun": { @@ -2113,7 +2078,6 @@ "sha256:ea1b963b993cb9ea195adbd893a48d573fda951b0da64f60883d7e988b606c9f" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==1.2.2" }, "frozenlist": { @@ -2197,16 +2161,15 @@ "sha256:f9b9ddc0761c125d5780eab2d64be4873fc6817c2899cbcb34b02344bdc7bc54" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==3.1.37" }, "identify": { "hashes": [ - "sha256:24437fbf6f4d3fe6efd0eb9d67e24dd9106db99af5ceb27996a5f7895f24bf1b", - "sha256:d43d52b86b15918c137e3a74fff5224f60385cd0e9c38e99d07c257f02f151a5" + "sha256:afe67f26ae29bab007ec21b03d4114f41316ab9dd15aa8736a167481e108da54", + "sha256:f302a4256a15c849b91cfcdcec052a8ce914634b2f77ae87dad29cd749f2d88d" ], "markers": "python_version >= '3.8'", - "version": "==2.5.29" + "version": "==2.5.30" }, "idna": { "hashes": [ @@ -2238,7 +2201,6 @@ "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==4.19.1" }, "jsonschema-specifications": { @@ -2279,7 +2241,6 @@ "sha256:5e96aad5ccda4718e0a229ed94b2024df75cc2d55575ba5762d31f5767b8767d" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==5.1.0" }, "multidict": { @@ -2393,15 +2354,14 @@ "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==1.5.1" }, "mypy-boto3-s3": { "hashes": [ - "sha256:179cb7542cc5ef656f1323ad51eb237afcba77d1e5ed07d21a013fe36effb8b2", - "sha256:a75cd5ff28f1cb5109dd50db94259436701208fa97c61b5a2cc0689e169b7cba" + "sha256:11a3db97398973d4ae28489b94c010778a0a5c65f99e00268456c3fea67eca79", + "sha256:b008809f448e74075012d4fc54b0176de0b4f49bc38e39de30ca0e764eb75056" ], - "version": "==1.28.52" + "version": "==1.28.55" }, "mypy-extensions": { "hashes": [ @@ -2425,7 +2385,6 @@ "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==23.1" }, "parameterized": { @@ -2434,7 +2393,6 @@ "sha256:7fc905272cefa4f364c1a3429cbbe9c0f98b793988efb5bf90aac80f08db09b1" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.9.0" }, "pbr": { @@ -2475,7 +2433,6 @@ "sha256:96d529a951f8b677f730a7212442027e8ba53f9b04d217c4c67dc56c393ad945" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==3.4.0" }, "pycodestyle": { @@ -2508,7 +2465,6 @@ "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==7.4.2" }, "pytest-asyncio": { @@ -2517,7 +2473,6 @@ "sha256:8666c1c8ac02631d7c51ba282e0c69a8a452b211ffedf2599099845da5c5c37b" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.21.1" }, "pytest-cov": { @@ -2526,7 +2481,6 @@ "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==4.1.0" }, "pytest-mock": { @@ -2535,7 +2489,6 @@ "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==3.11.1" }, "pytest-xdist": { @@ -2544,7 +2497,6 @@ "sha256:ff9daa7793569e6a68544850fd3927cd257cc03a7ef76c95e86915355e82b5f2" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==3.3.1" }, "python-dateutil": { @@ -2552,7 +2504,7 @@ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "pyyaml": { @@ -2609,7 +2561,6 @@ "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "index": "pypi", - "markers": "python_version >= '3.6'", "version": "==6.0.1" }, "referencing": { @@ -2626,7 +2577,6 @@ "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==2.31.0" }, "responses": { @@ -2635,16 +2585,15 @@ "sha256:e6fbcf5d82172fecc0aa1860fd91e58cbfd96cee5e96da5b63fa6eb3caa10dd3" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==0.23.3" }, "rich": { "hashes": [ - "sha256:87b43e0543149efa1253f485cd845bb7ee54df16c9617b8a893650ab84b4acb6", - "sha256:9257b468badc3d347e146a4faa268ff229039d4c2d176ab0cffb4c4fbc73d5d9" + "sha256:2b38e2fe9ca72c9a00170a1a2d20c63c790d0e10ef1fe35eba76e1e7b1d7d245", + "sha256:5c14d22737e6d5084ef4771b62d5d4363165b403455a30a1c8ca39dc7b644bef" ], "markers": "python_full_version >= '3.7.0'", - "version": "==13.5.3" + "version": "==13.6.0" }, "rpds-py": { "hashes": [ @@ -2762,7 +2711,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, "smmap": { @@ -2786,7 +2735,7 @@ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, "tomli": { @@ -2847,19 +2796,19 @@ }, "types-requests": { "hashes": [ - "sha256:e2523825754b2832e04cdc1e731423390e731457890113a201ebca8ad9b40427", - "sha256:e4153c2a4e48dcc661600fa5f199b483cdcbd21965de0b5e2df26e93343c0f57" + "sha256:a2db9cb228a81da8348b49ad6db3f5519452dd20a9c1e1a868c83c5fe88fd1a9", + "sha256:cd74ce3b53c461f1228a9b783929ac73a666658f223e28ed29753771477b3bd0" ], "index": "pypi", - "version": "==2.31.0.5" + "version": "==2.31.0.6" }, "types-s3transfer": { "hashes": [ - "sha256:1068877b6e59be5226fa3006ae64371ac9d5bc590dfdbd9c66fd0a075d3254ac", - "sha256:4ba9b483796fdcd026aa162ee03bdcedd2bf7d08e9387c820dcdd158b0102057" + "sha256:aca0f2486d0a3a5037cd5b8f3e20a4522a29579a8dd183281ff0aa1c4e2c8aa7", + "sha256:ae9ed9273465d9f43da8b96307383da410c6b59c3b2464c88d20b578768e97c6" ], "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==0.6.2" + "version": "==0.7.0" }, "types-tabulate": { "hashes": [ @@ -2891,7 +2840,6 @@ "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], "index": "pypi", - "markers": "python_version >= '3.8'", "version": "==4.8.0" }, "urllib3": { @@ -2996,7 +2944,6 @@ "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "index": "pypi", - "markers": "python_version >= '3.7'", "version": "==1.9.2" }, "zipp": { diff --git a/checkov/arm/graph_builder/graph_components/block_types.py b/checkov/arm/graph_builder/graph_components/block_types.py index ab5a1080f58..bf8022f4e54 100644 --- a/checkov/arm/graph_builder/graph_components/block_types.py +++ b/checkov/arm/graph_builder/graph_components/block_types.py @@ -1,12 +1,11 @@ +from __future__ import annotations + from dataclasses import dataclass -from typing import TYPE_CHECKING +from typing import Literal from checkov.common.graph.graph_builder.graph_components.block_types import BlockType as CommonBlockType -if TYPE_CHECKING: - from typing_extensions import Literal - @dataclass class BlockType(CommonBlockType): - PARAMETER: 'Literal["parameter"]' = "parameter" + PARAMETER: Literal["parameter"] = "parameter" diff --git a/checkov/bicep/graph_builder/graph_components/block_types.py b/checkov/bicep/graph_builder/graph_components/block_types.py index 0894196ca15..95a6b567d8c 100644 --- a/checkov/bicep/graph_builder/graph_components/block_types.py +++ b/checkov/bicep/graph_builder/graph_components/block_types.py @@ -1,6 +1,7 @@ from dataclasses import dataclass +from typing import Literal -from typing_extensions import Literal, TypeAlias +from typing_extensions import TypeAlias # noqa[TC002] from checkov.common.graph.graph_builder.graph_components.block_types import BlockType as CommonBlockType diff --git a/checkov/bicep/graph_builder/local_graph.py b/checkov/bicep/graph_builder/local_graph.py index 0f3f851d2e3..0bf98d1cb13 100644 --- a/checkov/bicep/graph_builder/local_graph.py +++ b/checkov/bicep/graph_builder/local_graph.py @@ -3,10 +3,10 @@ import logging from enum import Enum from pathlib import Path -from typing import Any, TYPE_CHECKING, overload +from typing import Any, TYPE_CHECKING, overload, Literal from pycep.transformer import BicepElement -from typing_extensions import Literal, TypeAlias +from typing_extensions import TypeAlias # noqa[TC002] from checkov.bicep.graph_builder.graph_components.block_types import BlockType from checkov.bicep.graph_builder.graph_components.blocks import BicepBlock diff --git a/checkov/bicep/runner.py b/checkov/bicep/runner.py index 668ff8d5752..5c8aa2a538f 100644 --- a/checkov/bicep/runner.py +++ b/checkov/bicep/runner.py @@ -3,7 +3,7 @@ import os import logging from pathlib import Path -from typing import cast, Type, TYPE_CHECKING, Any +from typing import cast, Type, TYPE_CHECKING, Any, Literal from typing_extensions import TypeAlias # noqa[TC002] @@ -40,7 +40,6 @@ from checkov.common.images.image_referencer import Image from networkx import DiGraph from pycep.typing import BicepJson - from typing_extensions import Literal _BicepContext: TypeAlias = "dict[str, dict[str, Any]]" _BicepDefinitions: TypeAlias = "dict[Path, BicepJson]" diff --git a/checkov/cloudformation/graph_builder/variable_rendering/renderer.py b/checkov/cloudformation/graph_builder/variable_rendering/renderer.py index c7781af7905..63db342dd68 100644 --- a/checkov/cloudformation/graph_builder/variable_rendering/renderer.py +++ b/checkov/cloudformation/graph_builder/variable_rendering/renderer.py @@ -1,9 +1,7 @@ from __future__ import annotations import logging -from typing import TYPE_CHECKING, Tuple, List, Any, Dict, Optional, Callable - -from typing_extensions import TypedDict +from typing import TYPE_CHECKING, Tuple, List, Any, Dict, Optional, Callable, TypedDict from checkov.cloudformation.graph_builder.graph_components.block_types import BlockType from checkov.cloudformation.graph_builder.utils import get_referenced_vertices_in_value, find_all_interpolations diff --git a/checkov/common/graph/graph_builder/graph_components/block_types.py b/checkov/common/graph/graph_builder/graph_components/block_types.py index 702d3d2b151..c882ade3088 100644 --- a/checkov/common/graph/graph_builder/graph_components/block_types.py +++ b/checkov/common/graph/graph_builder/graph_components/block_types.py @@ -1,10 +1,7 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast, TYPE_CHECKING - -if TYPE_CHECKING: - from typing_extensions import Literal +from typing import cast, Literal @dataclass diff --git a/checkov/common/multi_signature.py b/checkov/common/multi_signature.py index 41ec280a805..07d2740a9fc 100644 --- a/checkov/common/multi_signature.py +++ b/checkov/common/multi_signature.py @@ -4,8 +4,7 @@ from abc import ABCMeta from functools import update_wrapper from types import CodeType -from typing import Callable, Any, TypeVar, cast -from typing_extensions import Protocol +from typing import Callable, Any, TypeVar, cast, Protocol _MultiT = TypeVar("_MultiT") diff --git a/checkov/common/output/cyclonedx.py b/checkov/common/output/cyclonedx.py index bad5b96c9cb..f414a34adbf 100644 --- a/checkov/common/output/cyclonedx.py +++ b/checkov/common/output/cyclonedx.py @@ -3,11 +3,10 @@ import itertools import logging import os -import sys from datetime import datetime +from importlib.metadata import version as meta_version from pathlib import Path from typing import TYPE_CHECKING, cast, Any -from checkov.common.output.common import format_string_to_licenses, validate_lines from cyclonedx.model import ( XsUri, @@ -33,7 +32,7 @@ from cyclonedx.output import get_instance, OutputFormat from packageurl import PackageURL -from checkov.common.output.common import ImageDetails +from checkov.common.output.common import format_string_to_licenses, validate_lines, ImageDetails from checkov.common.output.report import CheckType from checkov.common.output.cyclonedx_consts import ( SCA_CHECKTYPES, @@ -48,11 +47,6 @@ from checkov.common.output.record import SCA_PACKAGE_SCAN_CHECK_NAME from checkov.common.sca.commons import UNFIXABLE_VERSION, get_fix_version -if sys.version_info >= (3, 8): - from importlib.metadata import version as meta_version -else: - from importlib_metadata import version as meta_version - if TYPE_CHECKING: from checkov.common.output.extra_resource import ExtraResource from checkov.common.output.record import Record diff --git a/checkov/common/output/spdx.py b/checkov/common/output/spdx.py index 45dd56f7865..903c2a8de82 100644 --- a/checkov/common/output/spdx.py +++ b/checkov/common/output/spdx.py @@ -4,6 +4,7 @@ import logging from datetime import datetime, timezone from io import StringIO +from typing import TYPE_CHECKING from uuid import uuid4 from license_expression import get_spdx_licensing @@ -19,6 +20,11 @@ from checkov.common.output.report import Report from checkov.version import version +if TYPE_CHECKING: + from boolean import Expression as LicenseExpression + from spdx_tools.spdx.model import SpdxNoAssertion + + DOCUMENT_NAME = "checkov-sbom" SPDXREF = "SPDXRef-" @@ -60,14 +66,16 @@ def get_tag_value_output(self) -> str: def validate_licenses(self, package: Package, license_: str) -> None: if license_ and license_ not in ["Unknown license", "NOT_FOUND", "Unknown"]: split_licenses = license_.split(",") - licenses = [] + licenses: list[LicenseExpression | SpdxNoAssertion | SpdxNone] = [] for lic in split_licenses: lic = lic.strip('"') try: - licenses.append(get_spdx_licensing().parse(lic)) + license_expression = get_spdx_licensing().parse(lic) + if license_expression is not None: + licenses.append(license_expression) except Exception as e: - logging.info(f"error occured when trying to parse the license:{split_licenses} due to error {e}") + logging.info(f"error occurred when trying to parse the license:{split_licenses} due to error {e}") package.license_info_from_files = licenses def create_package(self, check: Record | ExtraResource) -> Package: diff --git a/checkov/common/runners/object_runner.py b/checkov/common/runners/object_runner.py index 6604942f297..6bc367d4e15 100644 --- a/checkov/common/runners/object_runner.py +++ b/checkov/common/runners/object_runner.py @@ -7,8 +7,8 @@ from abc import abstractmethod from collections.abc import Iterable from pathlib import Path -from typing import Any, TYPE_CHECKING, Callable -from typing_extensions import TypedDict, TypeAlias +from typing import Any, TYPE_CHECKING, Callable, TypedDict +from typing_extensions import TypeAlias # noqa[TC002] from checkov.common.checks_infra.registry import get_graph_checks_registry from checkov.common.models.enums import CheckResult diff --git a/checkov/common/runners/runner_registry.py b/checkov/common/runners/runner_registry.py index b095c3e524e..6b3fdc442ee 100644 --- a/checkov/common/runners/runner_registry.py +++ b/checkov/common/runners/runner_registry.py @@ -12,9 +12,7 @@ from collections import defaultdict from collections.abc import Iterable from pathlib import Path -from typing import List, Dict, Any, Optional, cast, TYPE_CHECKING, Type - -from typing_extensions import Literal +from typing import List, Dict, Any, Optional, cast, TYPE_CHECKING, Type, Literal from checkov.common.bridgecrew.code_categories import CodeCategoryMapping, CodeCategoryType from checkov.common.bridgecrew.platform_integration import bc_integration diff --git a/checkov/common/typing.py b/checkov/common/typing.py index 37f36f362c8..a57367a42b5 100644 --- a/checkov/common/typing.py +++ b/checkov/common/typing.py @@ -1,7 +1,7 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Callable, Dict, TypeVar, Set, Union -from typing_extensions import TypeAlias, TypedDict +from typing import TYPE_CHECKING, Any, Callable, Dict, TypeVar, Set, Union, TypedDict +from typing_extensions import TypeAlias # noqa[TC002] if TYPE_CHECKING: from checkov.common.bridgecrew.severities import Severity diff --git a/checkov/common/util/deep_merge.py b/checkov/common/util/deep_merge.py new file mode 100644 index 00000000000..0a48530bfbd --- /dev/null +++ b/checkov/common/util/deep_merge.py @@ -0,0 +1,122 @@ +"""Original code: https://github.com/halfak/deep_merge""" +from __future__ import annotations + +from typing import Any, TypeVar, Callable, Protocol + +from typing_extensions import TypeAlias # noqa[TC002] + +from checkov.common.util.data_structures_utils import pickle_deepcopy + +_T = TypeVar("_T") +_MergeDict = TypeVar("_MergeDict", bound="dict[Any, Any]") +_OverwriteFunc: TypeAlias = "Callable[..., Any]" + + +class _MergeDictsFunc(Protocol): + def __call__( + self, + d1: _MergeDict, + d2: _MergeDict, + *, + merge_lists: _OverwriteFunc, + merge_ints: _OverwriteFunc, + merge_floats: _OverwriteFunc, + merge_strings: _OverwriteFunc, + merge_other: _OverwriteFunc, + ) -> _MergeDict: + ... + + +def overwrite(v1: _T, v2: _T, **kwargs: Any) -> _T: + """ + Completely overwrites one value with another. + """ + return pickle_deepcopy(v2) + + +def merge_dicts( + d1: _MergeDict, + d2: _MergeDict, + merge_lists: _OverwriteFunc = overwrite, + merge_ints: _OverwriteFunc = overwrite, + merge_floats: _OverwriteFunc = overwrite, + merge_strings: _OverwriteFunc = overwrite, + merge_other: _OverwriteFunc = overwrite, +) -> _MergeDict: + """ + Recursively merges values from d2 into d1. + """ + kwargs = { + "merge_lists": merge_lists, + "merge_ints": merge_ints, + "merge_floats": merge_floats, + "merge_strings": merge_strings, + "merge_other": merge_other, + } + for key in d2: + if key in d1: + if isinstance(d1[key], dict) and isinstance(d2[key], dict): + d1[key] = merge_dicts(d1[key], d2[key], **kwargs) + elif isinstance(d1[key], list) and isinstance(d2[key], list): + d1[key] = merge_lists(d1[key], d2[key], **kwargs) + elif isinstance(d1[key], int) and isinstance(d2[key], int): + d1[key] = merge_ints(d1[key], d2[key], **kwargs) + elif isinstance(d1[key], float) and isinstance(d2[key], float): + d1[key] = merge_ints(d1[key], d2[key], **kwargs) + elif isinstance(d1[key], str) and isinstance(d2[key], str): + d1[key] = merge_strings(d1[key], d2[key], **kwargs) + else: + d1[key] = merge_other(d1[key], d2[key], **kwargs) + else: + d1[key] = overwrite(None, d2[key]) + + return d1 + + +def pickle_deep_merge( + *dicts: _MergeDict, + merge_dicts: _MergeDictsFunc = merge_dicts, + merge_lists: _OverwriteFunc = overwrite, + merge_ints: _OverwriteFunc = overwrite, + merge_floats: _OverwriteFunc = overwrite, + merge_strings: _OverwriteFunc = overwrite, + merge_other: _OverwriteFunc = overwrite, +) -> _MergeDict: + """ + Recursively merges dictionaries and the datastructures they contain. + + :Parameters: + *dicts : `dict` + Dictionaries to be merged. Items that appear last will take higher + precedence when merging. + merge_dicts : `func` + The function to apply when merging dictionaries. + merge_lists : `func` + The function to apply when merging lists. + merge_ints : `func` + The function to apply when merging integers. + merge_floats : `func` + The function to apply when merging floats. + merge_strings : `func` + The function to apply when merging strings. + merge_other : `func` + The function to apply when merging other types or types that do not + match. + """ + for param in dicts: + if not isinstance(param, dict): + raise TypeError("{0} is not a dict".format(param)) + + d = dicts[0] + for d_update in dicts[1:]: + d = merge_dicts( + d, + d_update, + merge_lists=merge_lists, + merge_ints=merge_ints, + merge_floats=merge_floats, + merge_strings=merge_strings, + merge_other=merge_other, + ) + + return d diff --git a/checkov/common/util/http_utils.py b/checkov/common/util/http_utils.py index 165ae06519a..42ceb011dee 100644 --- a/checkov/common/util/http_utils.py +++ b/checkov/common/util/http_utils.py @@ -208,16 +208,10 @@ async def aiohttp_client_session_wrapper( request_max_tries = int(os.getenv('REQUEST_MAX_TRIES', 3)) sleep_between_request_tries = float(os.getenv('SLEEP_BETWEEN_REQUEST_TRIES', 1)) - try: # TODO: test again, when Python 3.11 is out - import aiodns # type: ignore[import] # noqa: F401 - resolver: "aiohttp.abc.AbstractResolver" = aiohttp.AsyncResolver() - except ImportError: - resolver = aiohttp.ThreadedResolver() - # adding retry mechanism for avoiding the next repeated unexpected issues: # 1. Gateway Timeout from the server # 2. ClientOSError - async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(resolver=resolver)) as session: + async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(resolver=aiohttp.AsyncResolver())) as session: for i in range(request_max_tries): logging.info( f"[http_utils](aiohttp_client_session_wrapper) reporting attempt {i + 1} out of {request_max_tries}") diff --git a/checkov/dockerfile/utils.py b/checkov/dockerfile/utils.py index a7745293f3a..24cb50e39d4 100644 --- a/checkov/dockerfile/utils.py +++ b/checkov/dockerfile/utils.py @@ -4,7 +4,7 @@ import os from collections.abc import Iterable from pathlib import Path -from typing import TYPE_CHECKING, Callable, Any +from typing import TYPE_CHECKING, Callable, Any, Literal from dockerfile_parse.constants import COMMENT_INSTRUCTION @@ -15,7 +15,6 @@ if TYPE_CHECKING: from dockerfile_parse.parser import _Instruction # only in extra_stubs - from typing_extensions import Literal DOCKERFILE_STARTLINE: Literal["startline"] = "startline" DOCKERFILE_ENDLINE: Literal["endline"] = "endline" diff --git a/checkov/main.py b/checkov/main.py index f4eb9191d93..0009e1109c6 100755 --- a/checkov/main.py +++ b/checkov/main.py @@ -12,7 +12,7 @@ import platform from collections import defaultdict from pathlib import Path -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING, Literal, Optional import argcomplete import configargparse @@ -83,7 +83,6 @@ if TYPE_CHECKING: from checkov.common.output.report import Report from configargparse import Namespace - from typing_extensions import Literal signal.signal(signal.SIGINT, lambda x, y: sys.exit('')) diff --git a/checkov/secrets/coordinator.py b/checkov/secrets/coordinator.py index cc207a048dd..e2b5e6f389f 100644 --- a/checkov/secrets/coordinator.py +++ b/checkov/secrets/coordinator.py @@ -1,6 +1,5 @@ from __future__ import annotations -from typing import Iterable -from typing_extensions import TypedDict +from typing import Iterable, TypedDict class EnrichedSecret(TypedDict): diff --git a/checkov/secrets/git_history_store.py b/checkov/secrets/git_history_store.py index 24f6732124d..b4409637620 100644 --- a/checkov/secrets/git_history_store.py +++ b/checkov/secrets/git_history_store.py @@ -2,8 +2,7 @@ import logging from collections import defaultdict -from typing import TYPE_CHECKING, Dict, List, Optional -from typing_extensions import TypedDict +from typing import TYPE_CHECKING, Dict, List, Optional, TypedDict from checkov.common.util.data_structures_utils import pickle_deepcopy from checkov.common.util.secrets import omit_secret_value_from_line diff --git a/checkov/secrets/git_types.py b/checkov/secrets/git_types.py index fb7056cc8cd..1f6556e455a 100644 --- a/checkov/secrets/git_types.py +++ b/checkov/secrets/git_types.py @@ -1,8 +1,7 @@ from __future__ import annotations import logging -from typing import Optional, TYPE_CHECKING -from typing_extensions import TypedDict +from typing import Optional, TYPE_CHECKING, TypedDict if TYPE_CHECKING: from detect_secrets.core.potential_secret import PotentialSecret diff --git a/checkov/secrets/plugins/custom_regex_detector.py b/checkov/secrets/plugins/custom_regex_detector.py index f5e4dba8d63..b444dc977ce 100644 --- a/checkov/secrets/plugins/custom_regex_detector.py +++ b/checkov/secrets/plugins/custom_regex_detector.py @@ -83,7 +83,6 @@ def analyze_line( **kwargs ) - # ToDo: Comment out once fix performence # type: ignore if filename not in self._analyzed_files: self._analyzed_files.add(filename) # We only want to read file if: there is regex supporting it & file size is not over MAX_FILE_SIZE diff --git a/checkov/terraform/graph_builder/local_graph.py b/checkov/terraform/graph_builder/local_graph.py index 0ce7ae8b635..c2232771f85 100644 --- a/checkov/terraform/graph_builder/local_graph.py +++ b/checkov/terraform/graph_builder/local_graph.py @@ -5,9 +5,7 @@ from collections import defaultdict from functools import partial from pathlib import Path -from typing import List, Optional, Union, Any, Dict, overload - -from typing_extensions import TypedDict +from typing import List, Optional, Union, Any, Dict, overload, TypedDict import checkov.terraform.graph_builder.foreach.consts from checkov.common.graph.graph_builder import Edge diff --git a/checkov/terraform/tf_parser.py b/checkov/terraform/tf_parser.py index d6c2c2a626b..0099e1dd063 100644 --- a/checkov/terraform/tf_parser.py +++ b/checkov/terraform/tf_parser.py @@ -7,12 +7,12 @@ from pathlib import Path from typing import Optional, Dict, Mapping, Set, Tuple, Callable, Any, List, cast, TYPE_CHECKING, overload -import deep_merge import hcl2 from checkov.common.runners.base_runner import filter_ignored_paths, IGNORE_HIDDEN_DIRECTORY_ENV from checkov.common.util.consts import DEFAULT_EXTERNAL_MODULES_DIR, RESOLVED_MODULE_ENTRY_NAME from checkov.common.util.data_structures_utils import pickle_deepcopy +from checkov.common.util.deep_merge import pickle_deep_merge from checkov.common.util.type_forcers import force_list from checkov.common.variables.context import EvaluationContext from checkov.terraform import validate_malformed_definitions, clean_bad_definitions @@ -299,7 +299,7 @@ def _load_modules(self, root_dir: str, module_loader_registry: ModuleLoaderRegis resolved_loc_list.append(new_key) if all_module_definitions: - deep_merge.merge(all_module_definitions, module_definitions) + pickle_deep_merge(all_module_definitions, module_definitions) else: all_module_definitions = module_definitions @@ -308,7 +308,7 @@ def _load_modules(self, root_dir: str, module_loader_registry: ModuleLoaderRegis logging.warning(f"Unable to load module - source: {source}, version: {version}, error: {str(e)}") if all_module_definitions: - deep_merge.merge(self.out_definitions, all_module_definitions) + pickle_deep_merge(self.out_definitions, all_module_definitions) return skipped_a_module def parse_hcl_module( diff --git a/extra_stubs/boolean/__init__.pyi b/extra_stubs/boolean/__init__.pyi new file mode 100644 index 00000000000..9138bdd97db --- /dev/null +++ b/extra_stubs/boolean/__init__.pyi @@ -0,0 +1,6 @@ +from .boolean import BooleanAlgebra, Expression + +__all__ = [ + "BooleanAlgebra", + "Expression", +] diff --git a/extra_stubs/boolean/boolean.py b/extra_stubs/boolean/boolean.py new file mode 100644 index 00000000000..f294ff50749 --- /dev/null +++ b/extra_stubs/boolean/boolean.py @@ -0,0 +1,6 @@ +class BooleanAlgebra: + ... + + +class Expression: + ... diff --git a/extra_stubs/license_expression/__init__.pyi b/extra_stubs/license_expression/__init__.pyi new file mode 100644 index 00000000000..f7b4e4e6df9 --- /dev/null +++ b/extra_stubs/license_expression/__init__.pyi @@ -0,0 +1,16 @@ +from pathlib import Path +from typing import Any + +from boolean import BooleanAlgebra, Expression as LicenseExpression + +class Licensing(BooleanAlgebra): + def parse( + self, + expression: bytes | str | LicenseExpression | None, + validate: bool = ..., + strict: bool = ..., + simple: bool = ..., + **kwargs: Any, + ) -> LicenseExpression | None: ... + +def get_spdx_licensing(license_index_location: str | Path = ...) -> Licensing: ... diff --git a/mypy.ini b/mypy.ini index 35c5b77a381..ae4635cd329 100644 --- a/mypy.ini +++ b/mypy.ini @@ -11,9 +11,6 @@ show_error_codes = True [mypy-configargparse.*] ignore_missing_imports = True -[mypy-deep_merge.*] -ignore_missing_imports = True - [mypy-docker.*] ignore_missing_imports = True @@ -26,8 +23,5 @@ ignore_missing_imports = True [mypy-networkx.*] ignore_missing_imports = True -[mypy-license_expression.*] -ignore_missing_imports = True - [mypy-checkov.*] follow_imports = skip diff --git a/setup.py b/setup.py index 68753055ebe..c5e02696da5 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,6 @@ def run(self) -> None: "bc-python-hcl2==0.3.51", "bc-detect-secrets==1.4.30", "bc-jsonpath-ng==1.5.9", - "deep-merge", "tabulate", "colorama", "termcolor", @@ -117,7 +116,7 @@ def run(self) -> None: license="Apache License 2.0", name="checkov", version=version, - python_requires=">=3.7", # TODO: change to 3.8 end of September + python_requires=">=3.8", description="Infrastructure as code static analysis", author="bridgecrew", author_email="meet@bridgecrew.io", @@ -153,7 +152,6 @@ def run(self) -> None: "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10",