From 075e2ee1ec6936f4e38e9a3bda86030a95ebd034 Mon Sep 17 00:00:00 2001 From: LirShindalman <49649760+lirshindalman@users.noreply.github.com> Date: Wed, 13 Sep 2023 14:01:55 +0300 Subject: [PATCH 1/5] feat(general): add rustworkx (#5511) * . * . * . * . * . * add _get_operation for rustworkx * add _get_operation for rustworkx * add _get_operation for rustworkx * . * . * . * . * . * . * . * . * . * . * . * fix typing * fix tests * fix linting * . * . * . * . * . --------- Co-authored-by: gruebel (cherry picked from commit ef1433e38944de520b5e183239ee12c95405a978) --- .github/workflows/pr-test.yml | 2 + Pipfile | 1 + Pipfile.lock | 207 ++++++++++++++++-- checkov/common/bridgecrew/wrapper.py | 23 +- .../base_attribute_solver.py | 12 +- .../complex_solvers/base_complex_solver.py | 14 +- .../base_connection_solver.py | 32 ++- .../connection_exists_solver.py | 204 +++++++++++------ checkov/common/graph/checks_infra/registry.py | 1 + .../graph/db_connectors/rustworkx/__init__.py | 0 .../rustworkx/rustworkx_db_connector.py | 52 +++++ checkov/common/graph/db_connectors/utils.py | 15 ++ checkov/common/output/cyclonedx.py | 2 +- checkov/common/runners/base_runner.py | 5 +- checkov/common/typing.py | 5 +- setup.py | 1 + .../checks/graph_checks/test_yaml_policies.py | 11 +- .../checks/test_yaml_policies.py | 11 +- .../bicep/graph/checks/test_yaml_policies.py | 12 +- .../graph/checks/test_yaml_policies.py | 11 +- .../checks/test_yaml_policies.py | 13 +- .../checks/graph_checks/test_yaml_policies.py | 11 +- .../graph/checks/test_yaml_policies.py | 11 +- .../contains_solver/test_solver.py | 3 +- .../ending_with_solver/test_solver.py | 3 +- .../equals_ignore_case_solver/test_solver.py | 3 +- .../equals_solver/test_solver.py | 3 +- .../exists_solver/test_solver.py | 3 +- .../greater_than_solver/test_solver.py | 3 +- .../intersects_solver/test_solver.py | 3 +- .../is_empty_solver/test_solver.py | 3 +- .../is_false_solver/test_solver.py | 3 +- .../is_not_empty_solver/test_solver.py | 3 +- .../is_true_solver/test_solver.py | 3 +- .../jsonpath_equals_solver/test_solver.py | 3 +- .../jsonpath_exists_solver/test_solver.py | 3 +- .../jsonpath_not_equals_solver/test_solver.py | 3 +- .../jsonpath_not_exists_solver/test_solver.py | 3 +- .../length_equals_solver/test_solver.py | 3 +- .../test_solver.py | 3 +- .../length_greater_than_solver/test_solver.py | 3 +- .../test_solver.py | 3 +- .../length_less_than_solver/test_solver.py | 3 +- .../length_not_equals_solver/test_solver.py | 3 +- .../not_contains_solver/test_solver.py | 3 +- .../not_ending_with_solver/test_solver.py | 3 +- .../test_solver.py | 3 +- .../not_equals_solver/test_solver.py | 3 +- .../not_exists_solver/test_solver.py | 3 +- .../not_intersects_solver/test_solver.py | 3 +- .../not_regex_match_solver/test_solver.py | 3 +- .../not_starting_with_solver/test_solver.py | 3 +- .../not_subset_solver/test_solver.py | 3 +- .../not_within_solver/test_solver.py | 3 +- .../test_solver.py | 3 +- .../test_solver.py | 3 +- .../test_solver.py | 3 +- .../test_solver.py | 3 +- .../test_solver.py | 3 +- .../test_solver.py | 3 +- .../range_includes_solver/test_solver.py | 3 +- .../range_not_includes_solver/test_solver.py | 3 +- .../regex_match_solver/test_solver.py | 3 +- .../starting_with_solver/test_solver.py | 3 +- .../subset_solver/test_solver.py | 3 +- .../within_solver/test_solver.py | 3 +- .../complex_solvers/and_solver/test_solver.py | 3 +- .../complex_solvers/not_solver/test_solver.py | 3 +- .../complex_solvers/or_solver/test_solver.py | 3 +- .../and_connection_solver/test_solver.py | 3 +- .../connection_exist_solver/test_solver.py | 3 +- .../test_solver.py | 3 +- .../connection_one_exists/test_solver.py | 3 +- .../or_connection_solver/test_solver.py | 3 +- .../db_connector/test_graph_connector.py | 10 + .../graph/graph_builder/test_graph_builder.py | 39 ++++ tests/terraform/runner/test_plan_runner.py | 4 +- tests/terraform/runner/test_runner.py | 11 +- 78 files changed, 674 insertions(+), 199 deletions(-) create mode 100644 checkov/common/graph/db_connectors/rustworkx/__init__.py create mode 100644 checkov/common/graph/db_connectors/rustworkx/rustworkx_db_connector.py create mode 100644 checkov/common/graph/db_connectors/utils.py diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml index fe2861be4bc..41049b34957 100644 --- a/.github/workflows/pr-test.yml +++ b/.github/workflows/pr-test.yml @@ -45,6 +45,8 @@ jobs: mypy: uses: bridgecrewio/gha-reusable-workflows/.github/workflows/mypy.yaml@main + with: + python-version: "3.8" unit-tests: strategy: diff --git a/Pipfile b/Pipfile index c0f062bcbe0..0d8d47c62df 100644 --- a/Pipfile +++ b/Pipfile @@ -89,6 +89,7 @@ yarl = "*" openai = "*" spdx-tools = ">=0.8.0,<0.9.0" license-expression = "*" +rustworkx = "*" [requires] python_version = "3.7" diff --git a/Pipfile.lock b/Pipfile.lock index 178c45b9b7f..051a68fe2f6 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "e3292c84a8a0aeda530b01306a096696fc3ced355d8ce8b952aae80d3ef60895" + "sha256": "8bdba01ac3002e586bae0f00bf5701f115ce9498b7b171273af6a9838b5fc0ca" }, "pipfile-spec": 6, "requires": { @@ -115,6 +115,7 @@ "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.8.5" }, "aiomultiprocess": { @@ -123,6 +124,7 @@ "sha256:3036c4c881cfbc63674686e036097f22309017c6bf96b04722a542ac9cac7423" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==0.9.0" }, "aiosignal": { @@ -139,6 +141,7 @@ "sha256:6c4c563f14f01440aaffa3eae13441c5db2357b5eec639abe7c0b15334627dff" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.1.1" }, "async-timeout": { @@ -171,6 +174,7 @@ "sha256:99fd6a7e5033ea3a4532d3ccc11b3f669c447da0109e0cb9d66998f4131dba0c" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.4.30" }, "bc-jsonpath-ng": { @@ -179,6 +183,7 @@ "sha256:5e72d78887521469f8a52966f6f0664ec3d59dcb2cebf85b8131867a241c84ec" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.5.9" }, "bc-python-hcl2": { @@ -187,6 +192,7 @@ "sha256:ab72880dd58689a4ee9a47f229788311a2b4d607fe034a819a40a63dab432644" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.3.51" }, "beartype": { @@ -214,19 +220,20 @@ }, "boto3": { "hashes": [ - "sha256:6ff9a5b815e106656596064d51c9b6ba97a307807baa5f89634384b7d3f7ecc6", - "sha256:bd7c760afb195eaeaab907dc6b2c21fa64ddbba3fed4a869e80d820ddbd6cc70" + "sha256:c53c92dfe22489ba31e918c2e7b59ff43e2e778bd3d3559e62351a739382bb5c", + "sha256:eea3b07e0f28c9f92bccab972af24a3b0dd951c69d93da75227b8ecd3e18f6c4" ], "index": "pypi", - "version": "==1.28.40" + "markers": "python_version >= '3.7'", + "version": "==1.28.44" }, "botocore": { "hashes": [ - "sha256:ce22a82ef8674f49691477d09558992cc87e7331f65c6a5b0da897ab192240ca", - "sha256:df766969f0d9ef9eda1a9c9946e0e173c10199f37a9e4c92861f11ddb5c9e702" + "sha256:83d61c1ca781e6ede19fcc4d5dd73004eee3825a2b220f0d7727e32069209d98", + "sha256:84f90919fecb4a4f417fd10145c8a87ff2c4b14d6381cd34d9babf02110b3315" ], "markers": "python_version >= '3.7'", - "version": "==1.31.40" + "version": "==1.31.44" }, "cached-property": { "hashes": [ @@ -241,6 +248,7 @@ "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==5.3.1" }, "certifi": { @@ -399,6 +407,7 @@ "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" ], "index": "pypi", + "markers": "python_full_version >= '3.7.0'", "version": "==3.2.0" }, "click": { @@ -407,6 +416,7 @@ "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==8.1.7" }, "click-option-group": { @@ -423,6 +433,7 @@ "sha256:afa27770d97720dc4bddb3c11f50bd287f1ab1fdd908538e896e23c70a0d9c5f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==0.6.1" }, "colorama": { @@ -431,6 +442,7 @@ "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": { @@ -439,6 +451,7 @@ "sha256:e7067471884de5478c58a511e529f0f9bd1c66bfef1dea90935438d6c23306d1" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==1.7" }, "contextlib2": { @@ -455,6 +468,7 @@ "sha256:8981ca462fba91469c268d684a03f72c89c7a807674d884f83a28d8c2822a9b6" ], "index": "pypi", + "markers": "python_version >= '3.6' and python_version < '4.0'", "version": "==3.1.5" }, "decorator": { @@ -479,6 +493,7 @@ "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==6.1.3" }, "dockerfile-parse": { @@ -487,6 +502,7 @@ "sha256:bdffd126d2eb26acf1066acb54cb2e336682e1d72b974a40894fac76a4df17f6" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==2.0.1" }, "dpath": { @@ -495,6 +511,7 @@ "sha256:d9560e03ccd83b3c6f29988b0162ce9b34fd28b9d8dbda46663b20c68d9cdae3" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.1.3" }, "frozenlist": { @@ -587,11 +604,12 @@ }, "gitpython": { "hashes": [ - "sha256:5d3802b98a3bae1c2b8ae0e1ff2e4aa16bcdf02c145da34d092324f599f01395", - "sha256:85f7d365d1f6bf677ae51039c1ef67ca59091c7ebd5a3509aa399d4eda02d6dd" + "sha256:9cbefbd1789a5fe9bcf621bb34d3f441f3a90c8461d377f84eda73e721d9b06b", + "sha256:c19b4292d7a1d3c0f653858db273ff8a6614100d1eb1528b014ec97286193c09" ], "index": "pypi", - "version": "==3.1.34" + "markers": "python_version >= '3.7'", + "version": "==3.1.35" }, "idna": { "hashes": [ @@ -655,6 +673,7 @@ "sha256:f375b5e9faea3381c9bb878195cbfc83444a13fb357f8e6c5767d2d9e3745e26" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.10.6" }, "importlib-metadata": { @@ -663,6 +682,7 @@ "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.13.0" }, "importlib-resources": { @@ -694,6 +714,7 @@ "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.0.1" }, "jsonschema": { @@ -702,6 +723,7 @@ "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.17.3" }, "junit-xml": { @@ -726,6 +748,7 @@ "sha256:8d7e5e2de0d04fc104a4f952c440e8f08a5ba63480a0dad015b294770b7e58ec" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==30.1.1" }, "markdown": { @@ -742,8 +765,11 @@ "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e", "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686", + "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c", "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc", + "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb", + "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939", "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c", "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0", "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4", @@ -751,6 +777,7 @@ "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba", "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d", + "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd", "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3", "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155", @@ -759,6 +786,7 @@ "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8", "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b", + "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007", "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24", "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea", "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198", @@ -766,9 +794,12 @@ "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee", "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be", "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2", + "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1", "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707", "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", + "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c", "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58", + "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823", "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636", "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", @@ -787,7 +818,9 @@ "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9", "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc", - "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2" + "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc", + "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2", + "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11" ], "markers": "python_version >= '3.7'", "version": "==2.1.3" @@ -878,14 +911,53 @@ "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.6.3" }, + "numpy": { + "hashes": [ + "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac", + "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3", + "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6", + "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1", + "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a", + "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b", + "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470", + "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1", + "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab", + "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46", + "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673", + "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7", + "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db", + "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e", + "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786", + "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552", + "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25", + "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6", + "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2", + "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a", + "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf", + "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f", + "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c", + "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4", + "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b", + "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0", + "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3", + "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656", + "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0", + "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb", + "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e" + ], + "markers": "python_version < '3.11' and python_version >= '3.7'", + "version": "==1.21.6" + }, "openai": { "hashes": [ "sha256:417b78c4c2864ba696aedaf1ccff77be1f04a581ab1739f0a56e0aae19e5a794", "sha256:d207ece78469be5648eb87b825753282225155a29d0eec6e02013ddbf8c31c0c" ], "index": "pypi", + "markers": "python_full_version >= '3.7.1'", "version": "==0.28.0" }, "packageurl-python": { @@ -894,6 +966,7 @@ "sha256:799acfe8d9e6e3534bbc19660be97d5b66754bc033e62c39f1e2f16323fcfa84" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.11.2" }, "packaging": { @@ -902,6 +975,7 @@ "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==23.1" }, "pkgutil-resolve-name": { @@ -933,6 +1007,7 @@ "sha256:7920896195af163230635f1a5cee0958f56003ef8c421f805ec81f134f80a57c" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.5.1.20230817" }, "prettytable": { @@ -941,6 +1016,7 @@ "sha256:f4aaf2ed6e6062a82fd2e6e5289bbbe705ec2788fe401a3a1f62a1cea55526d2" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.7.0" }, "pycares": { @@ -1006,6 +1082,7 @@ "sha256:a3edd1c3d280c283d614c865a854a693daf56c35cd4095b373016c214baa76dd" ], "index": "pypi", + "markers": "python_version >= '3.7' and python_version < '4.0'", "version": "==0.4.1" }, "pycparser": { @@ -1162,6 +1239,7 @@ "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==6.0.1" }, "rdflib": { @@ -1272,8 +1350,57 @@ "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.31.0" }, + "rustworkx": { + "hashes": [ + "sha256:030203b24c5742e3f3425266cc7d12f82223d97900a5beacdcd18c35383df318", + "sha256:0847a4464902f8154c8cb89ed5ebcc4a49542b004cfc71eeb4ed0b1e0547d10c", + "sha256:0b3a09b78bd4ac589c5e2f0413c777e7dec94c704e47e39fa5a1737f7c31715d", + "sha256:115e892dd5a38f0a9b81e188cef64136e59734cb27b5e27dcd677d0491829425", + "sha256:156ea240f3a5f6d80dd23d198162ad997359da11b80257aa36fcd891889edfcf", + "sha256:1ac7aa312779d913f4f8159fdc9b7d31eca7667afa4a20c0bebb97d5e06be703", + "sha256:1f6828ec18d47d0e435492aef2825739f68afecf1f8686ddee8b4c88c5fd3af0", + "sha256:1fc94714c3738bde40c772c82c3efa8c8bdf0dac711fe8bb3cf2306839d97ec1", + "sha256:40784246b0176f1b6a3ff74914f849dccfefee5213ab41c020abe1f8ded488b8", + "sha256:42ad8c94ede16c8a325d661ebee7dacef11f409a2bcb5125840ebe80d9629c36", + "sha256:48e9a1d05e9909b7a5fb0dac2324b0fb621222e4b0a830b7ed30f1c0001ec39e", + "sha256:4b152061872053edea38ad543b582d071cf09cc494d4b15f5310874b905179cf", + "sha256:4b3570369bf90b76dd1ac87c077aecc9ca7e9c7d8083d658c12f98acbb94d6a3", + "sha256:5207507bbebc034006c117cf568009eb18ebe1b47ef550d77781fccb5f089a97", + "sha256:58990e9596c02643941c940a20be99013defcc05dac2eb4ae21cc2f7b3143832", + "sha256:5f978007be9c10c211985d2abb680c019d99cb23c46c56d2712968c1c4dabb0d", + "sha256:64fee8e7d25d1648d1bdcb25907539c6c9d2e5ec7f22ed76f8c9dd9b6479ffa1", + "sha256:689cc3476f27b57fd4cc8f47140410496b811eab0325fd30b21721772e6e5e4f", + "sha256:6a4008cccf2efe9441322b95fdd503ace77798c14515fa97a8920a426c5d1015", + "sha256:6c910ccd1e7ca7fa2d60436122e2a0f0a4f23a32a1c56e05b6a850741b6e3ac6", + "sha256:7acab7603e9c14f2207c3de4efb62bfeddcb4780c5cf037aac374b209d3b85cb", + "sha256:7b33861d68807eeef1d188eb05540be878bb8b67bab74d74243e0bcbe2c0a54a", + "sha256:86fc5db9da1c1d2748442b533a3eeaa55b672127a04f2a339436a12c056ccc52", + "sha256:87b54064cbd1a778ea8101c5713a1175cbfcbf694fba28b05c1339267a54be4b", + "sha256:87c6e77ffe565bd7a00d12814e2212dcbcd519d21539005d68f94e199d1fed0a", + "sha256:87cfa52047f77d5cb31c6e8537800bcc95f817e6481fe73fbd2db9643b896ab7", + "sha256:8bf3f636ffba33832f73dbb5937cfad37113a38b8c169be15e9d54c396fc33a8", + "sha256:97f0f6ad00374a21b2597ec0861aea6b5ae93f9464b74e34521a09516a6b13df", + "sha256:a1513124d021e91d965ebf09e30e2ddae47abcc785a72944522fd02db835edce", + "sha256:a1cf5894a8a03e431d106d174052feb37b45514e7a9c9300cc1ec95cf42d7acd", + "sha256:a2436e9b67a77ef88d024437de4c36477ac7c60c1c9a4244108d5af54b55688b", + "sha256:a61504a383afc112c2e137607dd519b204e74b3f7d1f31dc6e1230a23faee42a", + "sha256:ab0dd3ca9b450c3151258fb3c914841e2d72d3413628c19ceb3471a29581b483", + "sha256:ae06d002c3a52eae507517527735d6b23b222c66fbc6fc085481565e59c84291", + "sha256:b3f4b7ee14d206f6a899f82fd5e719b6fb0fdb5862133446939c63dc2a72b498", + "sha256:d1e69b0c33130a64b4fe062239ba8908720a202775642bc0bce80878016bbd28", + "sha256:da43ac860de5cebe464f3c8e4ee5e5d1665907299df36f6da22078419157c03a", + "sha256:dad268861aaddf93ad453ce88af153f3c3e622cc8ec6899fb167e1a5f8835b9c", + "sha256:e76c67896030c9edd9823c2937ac6bfa1ce58bae580a8214596b687b6011a487", + "sha256:ecf19818eb71ce2ce15044164fdd4c03d952a2ad05a38ca2df06c90fc35cf1f9", + "sha256:f2d968ba9da4cbf343ff7aee80a7e97e0d127fa0d5d4a2f456b86bfd3c324d58" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==0.13.1" + }, "s3transfer": { "hashes": [ "sha256:b014be3a8a2aab98cfe1abc7229cc5a9a0cf05eb9c1f2b86b230fd8df3f78084", @@ -1296,6 +1423,7 @@ "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177" ], "index": "pypi", + "markers": "python_version >= '2.7'", "version": "==2.10.0" }, "setuptools": { @@ -1343,6 +1471,7 @@ "sha256:c83652cd65b5726058dcbdaab85839dbe484c43ea6f61046137516aa1b8428ae" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.8.1" }, "tabulate": { @@ -1351,6 +1480,7 @@ "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.9.0" }, "termcolor": { @@ -1359,6 +1489,7 @@ "sha256:b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.3.0" }, "texttable": { @@ -1382,6 +1513,7 @@ "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.66.1" }, "typing-extensions": { @@ -1390,6 +1522,7 @@ "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.7.1" }, "unidiff": { @@ -1524,6 +1657,7 @@ "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.9.2" }, "zipp": { @@ -1627,6 +1761,7 @@ "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.8.5" }, "aioresponses": { @@ -1675,6 +1810,7 @@ "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.7.5" }, "boto3-stubs-lite": { @@ -1682,19 +1818,19 @@ "s3" ], "hashes": [ - "sha256:314ca9a377418a7edf243e2d014b87901e814fd10494b2e86be6c48b1bd5a4c5", - "sha256:a0f63333888f6ded33d92f5ef3a1cdeed313498e51b0d47ab2b0026cc7c94954" + "sha256:2a62fe3ef41e10aeb55d80012591613be5cc5014601b6548bb4da2e533aefe1a", + "sha256:35504bf2b4f316a8d664e1d4c948eb208700ce00f9d5334bf75a02eeac8eff2f" ], - "index": "pypi", - "version": "==1.28.40" + "markers": "python_version >= '3.7'", + "version": "==1.28.44" }, "botocore-stubs": { "hashes": [ - "sha256:2001a253daf4ae2e171e6137b9982a00a7fbfc7a53449a16856dc049e7cd5214", - "sha256:aab534d7e7949cd543bc9b2fadc1a36712033cb00e6f31e2475eefe8486d19ae" + "sha256:18ca8902e150d777d609485580bde7858a5b1078f4264cd21ac855c507cb970c", + "sha256:a1f9fe86d5b89e3e898466c803b8b8098a8f905535eb7043ff0946b564aebbca" ], "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==1.31.40" + "version": "==1.31.44" }, "certifi": { "hashes": [ @@ -1791,6 +1927,7 @@ "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" ], "index": "pypi", + "markers": "python_full_version >= '3.7.0'", "version": "==3.2.0" }, "coverage": { @@ -1849,6 +1986,7 @@ "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": { @@ -1903,6 +2041,7 @@ "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248" ], "index": "pypi", + "markers": "python_full_version >= '3.6.1'", "version": "==5.0.4" }, "flake8-bugbear": { @@ -1911,6 +2050,7 @@ "sha256:e3e7f74c8a49ad3794a7183353026dabd68c74030d5f46571f84c1fb0eb79363" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==23.3.12" }, "freezegun": { @@ -1919,6 +2059,7 @@ "sha256:ea1b963b993cb9ea195adbd893a48d573fda951b0da64f60883d7e988b606c9f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==1.2.2" }, "frozenlist": { @@ -2011,11 +2152,12 @@ }, "gitpython": { "hashes": [ - "sha256:5d3802b98a3bae1c2b8ae0e1ff2e4aa16bcdf02c145da34d092324f599f01395", - "sha256:85f7d365d1f6bf677ae51039c1ef67ca59091c7ebd5a3509aa399d4eda02d6dd" + "sha256:9cbefbd1789a5fe9bcf621bb34d3f441f3a90c8461d377f84eda73e721d9b06b", + "sha256:c19b4292d7a1d3c0f653858db273ff8a6614100d1eb1528b014ec97286193c09" ], "index": "pypi", - "version": "==3.1.34" + "markers": "python_version >= '3.7'", + "version": "==3.1.35" }, "identify": { "hashes": [ @@ -2039,6 +2181,7 @@ "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.13.0" }, "importlib-resources": { @@ -2063,6 +2206,7 @@ "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.17.3" }, "markdown-it-py": { @@ -2095,6 +2239,7 @@ "sha256:5e96aad5ccda4718e0a229ed94b2024df75cc2d55575ba5762d31f5767b8767d" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==5.1.0" }, "multidict": { @@ -2207,6 +2352,7 @@ "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.4.1" }, "mypy-boto3-s3": { @@ -2238,6 +2384,7 @@ "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==23.1" }, "parameterized": { @@ -2246,6 +2393,7 @@ "sha256:7fc905272cefa4f364c1a3429cbbe9c0f98b793988efb5bf90aac80f08db09b1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.9.0" }, "pbr": { @@ -2286,6 +2434,7 @@ "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.21.0" }, "pycodestyle": { @@ -2347,11 +2496,12 @@ }, "pytest": { "hashes": [ - "sha256:2f2301e797521b23e4d2585a0a3d7b5e50fdddaaf7e7d6773ea26ddb17c213ab", - "sha256:460c9a59b14e27c602eb5ece2e47bec99dc5fc5f6513cf924a7d03a578991b1f" + "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002", + "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069" ], "index": "pypi", - "version": "==7.4.1" + "markers": "python_version >= '3.7'", + "version": "==7.4.2" }, "pytest-asyncio": { "hashes": [ @@ -2359,6 +2509,7 @@ "sha256:8666c1c8ac02631d7c51ba282e0c69a8a452b211ffedf2599099845da5c5c37b" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.21.1" }, "pytest-cov": { @@ -2367,6 +2518,7 @@ "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.1.0" }, "pytest-mock": { @@ -2375,6 +2527,7 @@ "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.11.1" }, "pytest-xdist": { @@ -2383,6 +2536,7 @@ "sha256:ff9daa7793569e6a68544850fd3927cd257cc03a7ef76c95e86915355e82b5f2" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.3.1" }, "python-dateutil": { @@ -2447,6 +2601,7 @@ "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==6.0.1" }, "requests": { @@ -2455,6 +2610,7 @@ "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.31.0" }, "responses": { @@ -2463,6 +2619,7 @@ "sha256:e6fbcf5d82172fecc0aa1860fd91e58cbfd96cee5e96da5b63fa6eb3caa10dd3" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.23.3" }, "rich": { @@ -2662,6 +2819,7 @@ "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.7.1" }, "urllib3": { @@ -2766,6 +2924,7 @@ "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.9.2" }, "zipp": { diff --git a/checkov/common/bridgecrew/wrapper.py b/checkov/common/bridgecrew/wrapper.py index 17dde199b96..8b279c3cb4b 100644 --- a/checkov/common/bridgecrew/wrapper.py +++ b/checkov/common/bridgecrew/wrapper.py @@ -11,6 +11,7 @@ import dpath from igraph import Graph +from rustworkx import PyDiGraph, digraph_node_link_json # type: ignore try: from networkx import DiGraph, node_link_data @@ -19,6 +20,7 @@ DiGraph = str node_link_data = lambda G : {} + from checkov.common.bridgecrew.check_type import CheckType from checkov.common.models.consts import SUPPORTED_FILE_EXTENSIONS from checkov.common.typing import _ReducedScanReport @@ -38,6 +40,10 @@ secrets_check_reduced_keys = check_reduced_keys + ('validation_status',) check_metadata_keys = ('evaluations', 'code_block', 'workflow_name', 'triggers', 'job') +FILE_NAME_NETWORKX = 'graph_networkx.json' +FILE_NAME_IGRAPH = 'graph_igraph.json' +FILE_NAME_RUSTWORKX = 'graph_rustworkx.json' + def _is_scanned_file(file: str) -> bool: file_ending = os.path.splitext(file)[1] @@ -146,15 +152,24 @@ def enrich_and_persist_checks_metadata( return checks_metadata_paths -def persist_graphs(graphs: dict[str, DiGraph | Graph], s3_client: S3Client, bucket: str, full_repo_object_key: str, - timeout: int, absolute_root_folder: str = '') -> None: +def persist_graphs( + graphs: dict[str, DiGraph | Graph | PyDiGraph[Any, Any]], + s3_client: S3Client, + bucket: str, + full_repo_object_key: str, + timeout: int, + absolute_root_folder: str = '', +) -> None: def _upload_graph(check_type: str, graph: DiGraph | Graph, _absolute_root_folder: str = '') -> None: if isinstance(graph, DiGraph): json_obj = node_link_data(graph) - graph_file_name = 'graph_networkx.json' + graph_file_name = FILE_NAME_NETWORKX elif isinstance(graph, Graph): json_obj = serialize_to_json(graph, _absolute_root_folder) - graph_file_name = 'graph_igraph.json' + graph_file_name = FILE_NAME_IGRAPH + elif isinstance(graph, PyDiGraph): + json_obj = digraph_node_link_json(graph) + graph_file_name = FILE_NAME_RUSTWORKX else: logging.error(f"unsupported graph type '{graph.__class__.__name__}'") return diff --git a/checkov/common/checks_infra/solvers/attribute_solvers/base_attribute_solver.py b/checkov/common/checks_infra/solvers/attribute_solvers/base_attribute_solver.py index 46366133c16..637d24a2718 100644 --- a/checkov/common/checks_infra/solvers/attribute_solvers/base_attribute_solver.py +++ b/checkov/common/checks_infra/solvers/attribute_solvers/base_attribute_solver.py @@ -8,6 +8,7 @@ from igraph import Graph from bc_jsonpath_ng.ext import parse +from networkx import DiGraph from checkov.common.graph.checks_infra import debug from checkov.common.graph.checks_infra.enums import SolverType @@ -65,8 +66,17 @@ def run(self, graph_connector: LibraryGraph) -> Tuple[List[Dict[str, Any]], List failed_vertices.append(data) return passed_vertices, failed_vertices, unknown_vertices + elif isinstance(graph_connector, DiGraph): + for _, data in graph_connector.nodes(data=True): + if (not self.resource_types or data.get(CustomAttributes.RESOURCE_TYPE) in self.resource_types) \ + and data.get(CustomAttributes.BLOCK_TYPE) in SUPPORTED_BLOCK_TYPES: + jobs.append(executer.submit( + self._process_node, data, passed_vertices, failed_vertices, unknown_vertices)) + + concurrent.futures.wait(jobs) + return passed_vertices, failed_vertices, unknown_vertices - for _, data in graph_connector.nodes(data=True): + for _, data in graph_connector.nodes(): if (not self.resource_types or data.get(CustomAttributes.RESOURCE_TYPE) in self.resource_types) \ and data.get(CustomAttributes.BLOCK_TYPE) in SUPPORTED_BLOCK_TYPES: jobs.append(executer.submit( diff --git a/checkov/common/checks_infra/solvers/complex_solvers/base_complex_solver.py b/checkov/common/checks_infra/solvers/complex_solvers/base_complex_solver.py index a98cccbfe8d..92a4e049191 100644 --- a/checkov/common/checks_infra/solvers/complex_solvers/base_complex_solver.py +++ b/checkov/common/checks_infra/solvers/complex_solvers/base_complex_solver.py @@ -4,6 +4,7 @@ from typing import List, Any, Tuple, Dict, TYPE_CHECKING, Optional from igraph import Graph +from networkx import DiGraph from checkov.common.graph.checks_infra import debug from checkov.common.graph.checks_infra.enums import SolverType @@ -59,8 +60,19 @@ def run(self, graph_connector: LibraryGraph) -> Tuple[List[Dict[str, Any]], List ) return passed_vertices, failed_vertices, unknown_vertices + elif isinstance(graph_connector, DiGraph): + for _, data in graph_connector.nodes(data=True): + if self.resource_type_pred(data, self.resource_types): + result = self.get_operation(data) + if result is None: + unknown_vertices.append(data) + elif result: + passed_vertices.append(data) + else: + failed_vertices.append(data) + return passed_vertices, failed_vertices, unknown_vertices - for _, data in graph_connector.nodes(data=True): + for _, data in graph_connector.nodes(): if self.resource_type_pred(data, self.resource_types): result = self.get_operation(data) if result is None: diff --git a/checkov/common/checks_infra/solvers/connections_solvers/base_connection_solver.py b/checkov/common/checks_infra/solvers/connections_solvers/base_connection_solver.py index 2b43310af98..cd6508a6108 100644 --- a/checkov/common/checks_infra/solvers/connections_solvers/base_connection_solver.py +++ b/checkov/common/checks_infra/solvers/connections_solvers/base_connection_solver.py @@ -4,6 +4,7 @@ from typing import Any, List, Dict, Optional, Tuple, TYPE_CHECKING from igraph import Graph +from networkx import DiGraph from checkov.common.graph.checks_infra.enums import SolverType from checkov.common.graph.checks_infra.solvers.base_solver import BaseSolver @@ -61,7 +62,7 @@ def set_vertices(self, graph_connector: LibraryGraph, exclude_vertices: List[Dic self.vertices_under_connected_resources_types = [ data for data in graph_connector.vs.select(resource_type_in=self.connected_resources_types)["attr"] ] - else: + elif isinstance(graph_connector, DiGraph): self.vertices_under_resource_types = [ v for _, v in graph_connector.nodes(data=True) if self.resource_type_pred(v, self.resource_types) ] @@ -69,6 +70,16 @@ def set_vertices(self, graph_connector: LibraryGraph, exclude_vertices: List[Dic v for _, v in graph_connector.nodes(data=True) if self.resource_type_pred(v, self.connected_resources_types) ] + # isinstance(graph_connector, PyDiGraph): + else: + self.vertices_under_resource_types = [ + v for _, v in graph_connector.nodes() if self.resource_type_pred(v, self.resource_types) + ] + self.vertices_under_connected_resources_types = [ + v for _, v in graph_connector.nodes() if + self.resource_type_pred(v, self.connected_resources_types) + ] + self.excluded_vertices = [ v for v in itertools.chain(self.vertices_under_resource_types, self.vertices_under_connected_resources_types) @@ -92,7 +103,7 @@ def reduce_graph_by_target_types(self, graph_connector: LibraryGraph) -> Library connection_nodes = { vertex for vertex in graph_connector.vs.select(block_type__in=BaseConnectionSolver.SUPPORTED_CONNECTION_BLOCK_TYPES) } - else: + elif isinstance(graph_connector, DiGraph): resource_nodes = { node for node, resource_type in graph_connector.nodes(data=CustomAttributes.RESOURCE_TYPE) @@ -106,9 +117,24 @@ def reduce_graph_by_target_types(self, graph_connector: LibraryGraph) -> Library if block_type in BaseConnectionSolver.SUPPORTED_CONNECTION_BLOCK_TYPES } + # isinstance(graph_connector, PyDiGraph): + else: + resource_nodes = { + index + for index, node in graph_connector.nodes() + if self.resource_type_pred(node, list(self.targeted_resources_types)) + } + + # tuple needs to be adjusted, if more connection block types are supported + connection_nodes = { + index + for index, node in graph_connector.nodes() + if node['block_type_'] in BaseConnectionSolver.SUPPORTED_CONNECTION_BLOCK_TYPES + } + resource_nodes.update(connection_nodes) - return graph_connector.subgraph(resource_nodes) + return graph_connector.subgraph(list(resource_nodes)) def populate_checks_results(self, origin_attributes: Dict[str, Any], destination_attributes: Dict[str, Any], passed: List[Dict[str, Any]], failed: List[Dict[str, Any]], unknown: List[Dict[str, Any]]) -> None: if origin_attributes in self.excluded_vertices or destination_attributes in self.excluded_vertices: diff --git a/checkov/common/checks_infra/solvers/connections_solvers/connection_exists_solver.py b/checkov/common/checks_infra/solvers/connections_solvers/connection_exists_solver.py index a0c26a02613..1cafb97a64b 100644 --- a/checkov/common/checks_infra/solvers/connections_solvers/connection_exists_solver.py +++ b/checkov/common/checks_infra/solvers/connections_solvers/connection_exists_solver.py @@ -1,13 +1,16 @@ +from __future__ import annotations + import itertools import logging from typing import List, Optional, Dict, Any, Tuple from igraph import Graph +from rustworkx import PyDiGraph from checkov.common.graph.checks_infra import debug try: - from networkx import edge_dfs + from networkx import edge_dfs, DiGraph except ImportError: logging.info("Not able to import networkx") edge_dfs = lambda G : [] @@ -63,71 +66,13 @@ def _get_operation( return passed, failed, unknown if isinstance(graph_connector, Graph): - - for root_vertex in graph_connector.vs: - inverted = False - origin_attributes = None - destination_attributes_list = [] - for vertex in graph_connector.dfsiter(root_vertex.index): - resource_type = vertex[CustomAttributes.RESOURCE_TYPE] - attributes = vertex["attr"] - if resource_type in self.resource_types and attributes in self.vertices_under_resource_types: - if not origin_attributes: - origin_attributes = attributes - elif inverted: - destination_attributes_list.append(attributes) - elif resource_type in self.connected_resources_types and attributes in self.vertices_under_connected_resources_types: - if not origin_attributes: - origin_attributes = attributes - inverted = True - else: - destination_attributes_list.append(attributes) - - if origin_attributes and destination_attributes_list: - for destination_attributes in destination_attributes_list: - self.populate_checks_results( - origin_attributes=origin_attributes, - destination_attributes=destination_attributes, - passed=passed, - failed=failed, - unknown=unknown, - ) + self.get_igraph_operation(graph_connector=graph_connector, passed=passed, failed=failed, unknown=unknown) + elif isinstance(graph_connector, DiGraph): + self.get_networkx_operation(graph_connector=graph_connector, passed=passed, failed=failed, unknown=unknown) + elif isinstance(graph_connector, PyDiGraph): + self.get_rustworkx_operation(graph_connector=graph_connector, passed=passed, failed=failed, unknown=unknown) else: - for u, v in edge_dfs(graph_connector): - origin_attributes = graph_connector.nodes(data=True)[u] - opposite_vertices = None - if origin_attributes in self.vertices_under_resource_types: - opposite_vertices = self.vertices_under_connected_resources_types - elif origin_attributes in self.vertices_under_connected_resources_types: - opposite_vertices = self.vertices_under_resource_types - if not opposite_vertices: - continue - - destination_attributes = graph_connector.nodes(data=True)[v] - if destination_attributes in opposite_vertices: - self.populate_checks_results( - origin_attributes=origin_attributes, - destination_attributes=destination_attributes, - passed=passed, - failed=failed, - unknown=unknown, - ) - destination_attributes["connected_node"] = origin_attributes - continue - - destination_block_type = destination_attributes.get(CustomAttributes.BLOCK_TYPE) - if destination_block_type == BlockType.OUTPUT: - try: - output_edges = graph_connector.edges(v, data=True) - _, output_destination, _ = next(iter(output_edges)) - output_destination = graph_connector.nodes(data=True)[output_destination] - output_destination_type = output_destination.get(CustomAttributes.RESOURCE_TYPE) - if self.is_associated_edge( - origin_attributes.get(CustomAttributes.RESOURCE_TYPE), output_destination_type - ): - passed.extend([origin_attributes, output_destination]) - except StopIteration: - continue + raise Exception(f"Graph type {type(graph_connector)} not supported") failed.extend( [ @@ -140,3 +85,132 @@ def _get_operation( ) return passed, failed, unknown + + def get_igraph_operation( + self, + graph_connector: Graph, + passed: list[dict[str, Any]], + failed: list[dict[str, Any]], + unknown: list[dict[str, Any]], + ) -> None: + for root_vertex in graph_connector.vs: + inverted = False + origin_attributes = None + destination_attributes_list = [] + for vertex in graph_connector.dfsiter(root_vertex.index): + resource_type = vertex[CustomAttributes.RESOURCE_TYPE] + attributes = vertex["attr"] + if resource_type in self.resource_types and attributes in self.vertices_under_resource_types: + if not origin_attributes: + origin_attributes = attributes + elif inverted: + destination_attributes_list.append(attributes) + elif ( + resource_type in self.connected_resources_types + and attributes in self.vertices_under_connected_resources_types + ): + if not origin_attributes: + origin_attributes = attributes + inverted = True + else: + destination_attributes_list.append(attributes) + + if origin_attributes and destination_attributes_list: + for destination_attributes in destination_attributes_list: + self.populate_checks_results( + origin_attributes=origin_attributes, + destination_attributes=destination_attributes, + passed=passed, + failed=failed, + unknown=unknown, + ) + + def get_networkx_operation( + self, + graph_connector: DiGraph, + passed: list[dict[str, Any]], + failed: list[dict[str, Any]], + unknown: list[dict[str, Any]], + ) -> None: + for u, v in edge_dfs(graph_connector): + origin_attributes = graph_connector.nodes(data=True)[u] + opposite_vertices = None + if origin_attributes in self.vertices_under_resource_types: + opposite_vertices = self.vertices_under_connected_resources_types + elif origin_attributes in self.vertices_under_connected_resources_types: + opposite_vertices = self.vertices_under_resource_types + if not opposite_vertices: + continue + + destination_attributes = graph_connector.nodes(data=True)[v] + if destination_attributes in opposite_vertices: + self.populate_checks_results( + origin_attributes=origin_attributes, + destination_attributes=destination_attributes, + passed=passed, + failed=failed, + unknown=unknown, + ) + destination_attributes["connected_node"] = origin_attributes + continue + if origin_attributes.get(CustomAttributes.BLOCK_TYPE) == BlockType.OUTPUT: + print(1) + destination_block_type = destination_attributes.get(CustomAttributes.BLOCK_TYPE) + if destination_block_type == BlockType.OUTPUT: + try: + output_edges = graph_connector.edges(v, data=True) + _, output_destination, _ = next(iter(output_edges)) + output_destination = graph_connector.nodes(data=True)[output_destination] + output_destination_type = output_destination.get(CustomAttributes.RESOURCE_TYPE) + if self.is_associated_edge( + origin_attributes.get(CustomAttributes.RESOURCE_TYPE), output_destination_type + ): + passed.extend([origin_attributes, output_destination]) + except StopIteration: + continue + + def get_rustworkx_operation( + self, + graph_connector: PyDiGraph[Any, Any], + passed: list[dict[str, Any]], + failed: list[dict[str, Any]], + unknown: list[dict[str, Any]], + ) -> None: + for edge in graph_connector.edge_list(): + u, v = edge + origin_attributes = graph_connector.nodes()[u][1] + opposite_vertices = None + if origin_attributes in self.vertices_under_resource_types: + opposite_vertices = self.vertices_under_connected_resources_types + elif origin_attributes in self.vertices_under_connected_resources_types: + opposite_vertices = self.vertices_under_resource_types + if not opposite_vertices: + continue + + destination_attributes = graph_connector.nodes()[v][1] + if destination_attributes in opposite_vertices: + self.populate_checks_results( + origin_attributes=origin_attributes, + destination_attributes=destination_attributes, + passed=passed, + failed=failed, + unknown=unknown, + ) + destination_attributes["connected_node"] = origin_attributes + continue + + destination_block_type = destination_attributes.get(CustomAttributes.BLOCK_TYPE) + if destination_block_type == BlockType.OUTPUT: + try: + output_edges = graph_connector.adj_direction( + v, False + ) # True means inbound edges and False means outbound edges + output_destination_index = next(iter(output_edges)) + output_destination = graph_connector.nodes()[output_destination_index][1] + output_destination_type = output_destination.get(CustomAttributes.RESOURCE_TYPE) + if self.is_associated_edge( + origin_attributes.get(CustomAttributes.RESOURCE_TYPE), output_destination_type + ): + passed.extend([origin_attributes, output_destination]) + except StopIteration: + continue diff --git a/checkov/common/graph/checks_infra/registry.py b/checkov/common/graph/checks_infra/registry.py index 8fec809f7a7..933f843a7bc 100644 --- a/checkov/common/graph/checks_infra/registry.py +++ b/checkov/common/graph/checks_infra/registry.py @@ -26,6 +26,7 @@ def run_checks( ) -> dict[BaseGraphCheck, list[_CheckResult]]: check_results: "dict[BaseGraphCheck, list[_CheckResult]]" = {} + checks_to_run = [c for c in self.checks if runner_filter.should_run_check(c, report_type=report_type)] with concurrent.futures.ThreadPoolExecutor() as executor: concurrent.futures.wait( diff --git a/checkov/common/graph/db_connectors/rustworkx/__init__.py b/checkov/common/graph/db_connectors/rustworkx/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/checkov/common/graph/db_connectors/rustworkx/rustworkx_db_connector.py b/checkov/common/graph/db_connectors/rustworkx/rustworkx_db_connector.py new file mode 100644 index 00000000000..c55170cb181 --- /dev/null +++ b/checkov/common/graph/db_connectors/rustworkx/rustworkx_db_connector.py @@ -0,0 +1,52 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, TypeVar, Any # noqa + +import rustworkx as rx + +from checkov.common.graph.db_connectors.db_connector import DBConnector + +if TYPE_CHECKING: + from checkov.common.graph.graph_builder.graph_components.blocks import Block # noqa + from checkov.common.graph.graph_builder.local_graph import LocalGraph + +_Block = TypeVar("_Block", bound="Block") + + +class RustworkxConnector(DBConnector["rx.PyDiGraph[Any, Any]"]): + def __init__(self) -> None: + self.graph = rx.PyDiGraph() # type: ignore + + def save_graph(self, local_graph: LocalGraph[_Block], add_bulk_edges: bool = False) -> rx.PyDiGraph: # type: ignore + return self.rustworkx_from_local_graph(local_graph) + + def get_reader_endpoint(self) -> rx.PyDiGraph: # type: ignore + return self.graph + + def get_writer_endpoint(self) -> rx.PyDiGraph: # type: ignore + return self.graph + + def rustworkx_from_local_graph(self, local_graph: LocalGraph[_Block]) -> rx.PyDiGraph: # type: ignore + self.graph = rx.PyDiGraph() + vertices_to_add = [] + for index, vertex in enumerate(local_graph.vertices): + attr = vertex.get_attribute_dict() + vertices_to_add.append((index, attr)) + + edges_to_add = [ + ( + e.origin, + e.dest, + {"label": e.label}, + ) + for e in local_graph.edges + ] + + self.graph.add_nodes_from(vertices_to_add) + self.graph.add_edges_from(edges_to_add) + + return self.graph + + def disconnect(self) -> None: + # not used, but is an abstractmethod + return None diff --git a/checkov/common/graph/db_connectors/utils.py b/checkov/common/graph/db_connectors/utils.py new file mode 100644 index 00000000000..b33cfaaa5d6 --- /dev/null +++ b/checkov/common/graph/db_connectors/utils.py @@ -0,0 +1,15 @@ +from typing import Any + +from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector +from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector + + +def set_db_connector_by_graph_framework(graph_framework: str) -> Any: + if graph_framework == 'NETWORKX': + return NetworkxConnector() + elif graph_framework == 'IGRAPH': + return IgraphConnector() + elif graph_framework == 'RUSTWORKX': + return RustworkxConnector() + return None diff --git a/checkov/common/output/cyclonedx.py b/checkov/common/output/cyclonedx.py index a90fedefb0e..bad5b96c9cb 100644 --- a/checkov/common/output/cyclonedx.py +++ b/checkov/common/output/cyclonedx.py @@ -71,7 +71,7 @@ def create_bom(self) -> Bom: bom = Bom() try: - version = meta_version("checkov") # type:ignore[no-untyped-call] + version = meta_version("checkov") except Exception: # Unable to determine current version of 'checkov' version = "UNKNOWN" diff --git a/checkov/common/runners/base_runner.py b/checkov/common/runners/base_runner.py index 65b1d082edf..3ce6de5dc5a 100644 --- a/checkov/common/runners/base_runner.py +++ b/checkov/common/runners/base_runner.py @@ -67,13 +67,16 @@ def __init__(self, file_extensions: Iterable[str] | None = None, file_names: Ite self.file_extensions = file_extensions or [] self.file_names = file_names or [] self.pbar = ProgressBar(self.check_type) - db_connector_class: "type[NetworkxConnector | IgraphConnector]" = IgraphConnector + db_connector_class: "type[NetworkxConnector | IgraphConnector | RustworkxConnector]" = IgraphConnector graph_framework = os.getenv("CHECKOV_GRAPH_FRAMEWORK", "IGRAPH") if graph_framework == "IGRAPH": db_connector_class = IgraphConnector elif graph_framework == "NETWORKX": from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector db_connector_class = NetworkxConnector + elif graph_framework == "RUSTWORKX": + from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector + db_connector_class = RustworkxConnector self.db_connector = db_connector_class() diff --git a/checkov/common/typing.py b/checkov/common/typing.py index 7ff8db1b6be..37f36f362c8 100644 --- a/checkov/common/typing.py +++ b/checkov/common/typing.py @@ -11,6 +11,7 @@ from checkov.common.runners.base_runner import BaseRunner # noqa from networkx import DiGraph from igraph import Graph + from rustworkx import PyDiGraph from checkov.terraform.modules.module_objects import TFDefinitionKey _BaseRunner = TypeVar("_BaseRunner", bound="BaseRunner[Any, Any, Any]") @@ -22,8 +23,8 @@ _Resource: TypeAlias = str _Attributes: TypeAlias = Set[str] ResourceAttributesToOmit: TypeAlias = Dict[_Resource, _Attributes] -LibraryGraph: TypeAlias = "Union[DiGraph, Graph]" -LibraryGraphConnector: TypeAlias = "Union[DBConnector[DiGraph], DBConnector[Graph]]" +LibraryGraph: TypeAlias = "Union[DiGraph, Graph, PyDiGraph]" +LibraryGraphConnector: TypeAlias = "Union[DBConnector[DiGraph], DBConnector[Graph], DBConnector[PyDiGraph]]" # TODO Remove this type and only use TFDefinitionKey TFDefinitionKeyType: TypeAlias = "Union[str, TFDefinitionKey]" diff --git a/setup.py b/setup.py index 4e53dfc56ca..63410b2da2b 100644 --- a/setup.py +++ b/setup.py @@ -111,6 +111,7 @@ def run(self) -> None: "openai", "spdx-tools>=0.8.0,<0.9.0", "license-expression", + "rustworkx", ], dependency_links=[], # keep it empty, needed for pipenv-setup license="Apache License 2.0", diff --git a/tests/ansible/checks/graph_checks/test_yaml_policies.py b/tests/ansible/checks/graph_checks/test_yaml_policies.py index fc115cee0e6..952828f1220 100644 --- a/tests/ansible/checks/graph_checks/test_yaml_policies.py +++ b/tests/ansible/checks/graph_checks/test_yaml_policies.py @@ -6,6 +6,8 @@ from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector +from checkov.common.graph.db_connectors.utils import set_db_connector_by_graph_framework from checkov.common.graph.graph_builder import CustomAttributes from checkov.common.models.enums import CheckResult @@ -19,15 +21,12 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestYamlPolicies(TestYamlPoliciesBase): def __init__(self, args): - db_connector = None - if self.graph_framework == 'NETWORKX': - db_connector = NetworkxConnector() - elif self.graph_framework == 'IGRAPH': - db_connector = IgraphConnector() + db_connector = set_db_connector_by_graph_framework(self.graph_framework) graph_manager = ObjectGraphManager(db_connector=db_connector, source="Ansible") super().__init__( graph_manager=graph_manager, diff --git a/tests/arm/graph_builder/checks/test_yaml_policies.py b/tests/arm/graph_builder/checks/test_yaml_policies.py index a11c2de68b3..30586e9e8f8 100644 --- a/tests/arm/graph_builder/checks/test_yaml_policies.py +++ b/tests/arm/graph_builder/checks/test_yaml_policies.py @@ -6,7 +6,8 @@ from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector from parameterized import parameterized_class from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector - +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector +from checkov.common.graph.db_connectors.utils import set_db_connector_by_graph_framework from checkov.common.graph.graph_builder import CustomAttributes from checkov.common.models.enums import CheckResult @@ -20,15 +21,13 @@ [ {"graph_framework": "NETWORKX"}, {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"}, ] ) class TestYamlPolicies(TestYamlPoliciesBase): def __init__(self, args): - db_connector = None - if self.graph_framework == "NETWORKX": - db_connector = NetworkxConnector() - elif self.graph_framework == "IGRAPH": - db_connector = IgraphConnector() + db_connector = set_db_connector_by_graph_framework(self.graph_framework) + graph_manager = ArmGraphManager(db_connector=db_connector) super().__init__( graph_manager=graph_manager, diff --git a/tests/bicep/graph/checks/test_yaml_policies.py b/tests/bicep/graph/checks/test_yaml_policies.py index d25c9b4f27d..62ee7eb4ba0 100644 --- a/tests/bicep/graph/checks/test_yaml_policies.py +++ b/tests/bicep/graph/checks/test_yaml_policies.py @@ -6,7 +6,8 @@ from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector from parameterized import parameterized_class from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector - +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector +from checkov.common.graph.db_connectors.utils import set_db_connector_by_graph_framework from checkov.common.graph.graph_builder import CustomAttributes from checkov.common.models.enums import CheckResult @@ -17,15 +18,12 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestYamlPolicies(TestYamlPoliciesBase): def __init__(self, args): - db_connector = None - if self.graph_framework == 'NETWORKX': - db_connector = NetworkxConnector() - elif self.graph_framework == 'IGRAPH': - db_connector = IgraphConnector() + db_connector = set_db_connector_by_graph_framework(self.graph_framework) graph_manager = BicepGraphManager(db_connector=db_connector) super().__init__( graph_manager=graph_manager, diff --git a/tests/cloudformation/graph/checks/test_yaml_policies.py b/tests/cloudformation/graph/checks/test_yaml_policies.py index dcad260ef64..2e1e9f7305b 100644 --- a/tests/cloudformation/graph/checks/test_yaml_policies.py +++ b/tests/cloudformation/graph/checks/test_yaml_policies.py @@ -8,6 +8,8 @@ from checkov.cloudformation.graph_manager import CloudformationGraphManager from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector +from checkov.common.graph.db_connectors.utils import set_db_connector_by_graph_framework from checkov.common.graph.graph_builder import CustomAttributes from checkov.common.models.enums import CheckResult from checkov.common.output.record import Record @@ -20,15 +22,12 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestYamlPolicies(TestYamlPoliciesBase): def __init__(self, args): - db_connector = None - if self.graph_framework == 'NETWORKX': - db_connector = NetworkxConnector() - elif self.graph_framework == 'IGRAPH': - db_connector = IgraphConnector() + db_connector = set_db_connector_by_graph_framework(self.graph_framework) graph_manager = CloudformationGraphManager(db_connector=db_connector) super().__init__(graph_manager, os.path.abspath(os.path.join(file_dir, "../../../../checkov/cloudformation/checks/graph_checks")), diff --git a/tests/dockerfile/graph_builder/checks/test_yaml_policies.py b/tests/dockerfile/graph_builder/checks/test_yaml_policies.py index d641a089b7e..3b2352cd6dd 100644 --- a/tests/dockerfile/graph_builder/checks/test_yaml_policies.py +++ b/tests/dockerfile/graph_builder/checks/test_yaml_policies.py @@ -6,6 +6,8 @@ from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector +from checkov.common.graph.db_connectors.utils import set_db_connector_by_graph_framework from checkov.common.graph.graph_builder import CustomAttributes from checkov.common.models.enums import CheckResult from checkov.common.output.record import Record @@ -17,17 +19,14 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestYamlPolicies(TestYamlPoliciesBase): def __init__(self, args): - db_connector = None - if self.graph_framework == 'NETWORKX': - db_connector = NetworkxConnector - elif self.graph_framework == 'IGRAPH': - db_connector = IgraphConnector + db_connector = set_db_connector_by_graph_framework(self.graph_framework) - graph_manager = DockerfileGraphManager(db_connector=db_connector()) + graph_manager = DockerfileGraphManager(db_connector=db_connector) super().__init__( graph_manager=graph_manager, real_graph_checks_path=str( diff --git a/tests/github_actions/checks/graph_checks/test_yaml_policies.py b/tests/github_actions/checks/graph_checks/test_yaml_policies.py index 5c901ca66f3..c900dbb093f 100644 --- a/tests/github_actions/checks/graph_checks/test_yaml_policies.py +++ b/tests/github_actions/checks/graph_checks/test_yaml_policies.py @@ -6,6 +6,8 @@ from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector +from checkov.common.graph.db_connectors.utils import set_db_connector_by_graph_framework from checkov.common.graph.graph_builder import CustomAttributes from checkov.common.models.enums import CheckResult from checkov.common.output.record import Record @@ -18,15 +20,12 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestYamlPolicies(TestYamlPoliciesBase): def __init__(self, args): - db_connector = None - if self.graph_framework == 'NETWORKX': - db_connector = NetworkxConnector() - elif self.graph_framework == 'IGRAPH': - db_connector = IgraphConnector() + db_connector = set_db_connector_by_graph_framework(self.graph_framework) graph_manager = ObjectGraphManager(db_connector=db_connector, source="GitHubActions") super().__init__( diff --git a/tests/kubernetes/graph/checks/test_yaml_policies.py b/tests/kubernetes/graph/checks/test_yaml_policies.py index ae1937dabda..6454c4b31a5 100644 --- a/tests/kubernetes/graph/checks/test_yaml_policies.py +++ b/tests/kubernetes/graph/checks/test_yaml_policies.py @@ -6,6 +6,8 @@ from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector +from checkov.common.graph.db_connectors.utils import set_db_connector_by_graph_framework from checkov.common.graph.graph_builder import CustomAttributes from checkov.common.models.enums import CheckResult from checkov.common.output.record import Record @@ -16,18 +18,15 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestYamlPolicies(TestYamlPoliciesBase): def tearDown(self) -> None: self.get_checks_registry().checks = [] def __init__(self, args): - db_connector = None - if self.graph_framework == 'NETWORKX': - db_connector = NetworkxConnector() - elif self.graph_framework == 'IGRAPH': - db_connector = IgraphConnector() + db_connector = set_db_connector_by_graph_framework(self.graph_framework) graph_manager = KubernetesGraphManager(db_connector=db_connector) real_graph_checks_relative_path = "checkov/kubernetes/checks/graph_checks" real_graph_checks_path = os.path.join(os.path.dirname(__file__), '..', '..', '..', '..', diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/test_solver.py index 1cbd63e63d6..3aac35e3a45 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/contains_solver/test_solver.py @@ -8,7 +8,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestContainsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/test_solver.py index a2fa5511b73..d1f7c477b23 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/ending_with_solver/test_solver.py @@ -7,7 +7,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestEndingWithSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/equals_ignore_case_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/equals_ignore_case_solver/test_solver.py index 40d5b7271d5..aad3dfebf2a 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/equals_ignore_case_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/equals_ignore_case_solver/test_solver.py @@ -7,7 +7,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestEqualsIgnoreCaseSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/test_solver.py index 28aa9b53eb9..b7c0cc4b0f3 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/equals_solver/test_solver.py @@ -7,7 +7,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestEqualsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/test_solver.py index 73211b87e93..ec8a0393146 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/exists_solver/test_solver.py @@ -7,7 +7,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class ExistsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/test_solver.py index c30400303ef..7c98ac22dee 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/greater_than_solver/test_solver.py @@ -14,7 +14,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestGreaterThanLessThanSolvers(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/test_solver.py index 6323ad5e808..c0d0f109c3a 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/intersects_solver/test_solver.py @@ -8,7 +8,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestIntersectsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/test_solver.py index 05066ebec8c..2700ff03773 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/is_empty_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestIsEmptySolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/is_false_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/is_false_solver/test_solver.py index f7c85ccba0c..b3445ebdc7b 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/is_false_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/is_false_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestIsFalse(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/is_not_empty_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/is_not_empty_solver/test_solver.py index 3b7acf466c5..d117883bf47 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/is_not_empty_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/is_not_empty_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestIsNotEmptySolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/is_true_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/is_true_solver/test_solver.py index 744fe3b37ed..89b4ffd20a0 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/is_true_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/is_true_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestIsTrue(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/test_solver.py index 98a063674f7..2cc8f85b23d 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_equals_solver/test_solver.py @@ -8,7 +8,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestJsonpathEqualsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/test_solver.py index 9b2e2148409..adcc7c3850a 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_exists_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestJsonpathExistsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/test_solver.py index c205341778b..2fd9cf5d5c5 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_equals_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestJsonpathNotEqualsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/test_solver.py index 3b83992ba05..94232830783 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/jsonpath_not_exists_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestJsonpathNotExistsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/test_solver.py index 8376d5f42e5..41f95223155 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/length_equals_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestLengthEquals(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/test_solver.py index 4e5c2975a6d..783793868e7 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_or_equal_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestLengthGreaterThanOrEqual(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/test_solver.py index 627ffe89f9e..0aa0cc755d7 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/length_greater_than_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestLengthGreaterThan(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/test_solver.py index dbac232169e..f2116a9fc96 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_or_equal_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestLengthLessThanOrEqual(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/test_solver.py index 484ebf811f3..9195885a5cf 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/length_less_than_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestLengthLessThan(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/test_solver.py index 5fe4a1971a4..f00fae27ca4 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/length_not_equals_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestLengthNotEquals(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/test_solver.py index 3fa9383ab97..f722bff395d 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_contains_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotContainsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_ending_with_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_ending_with_solver/test_solver.py index c138a210386..203721feec4 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_ending_with_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_ending_with_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotEndingWithSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_equals_ignore_case_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_equals_ignore_case_solver/test_solver.py index 0002e4ab75b..a157ea96f1d 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_equals_ignore_case_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_equals_ignore_case_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotEqualsIgnoreCaseSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/test_solver.py index 4dcd2127d5e..179ae2767b3 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_equals_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotEqualsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/test_solver.py index d14ca68b98b..91efeb67509 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_exists_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotExistsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/test_solver.py index 39a30280603..02198f39f46 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_intersects_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotIntersectsSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_regex_match_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_regex_match_solver/test_solver.py index 7220867063c..e6181bff96d 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_regex_match_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_regex_match_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestRegexMatchSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_starting_with_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_starting_with_solver/test_solver.py index 8e0c5caca15..0d97997a992 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_starting_with_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_starting_with_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotStartingWithSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_subset_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_subset_solver/test_solver.py index 9e0421ef0b5..353616558d4 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_subset_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_subset_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotSubsetSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/not_within_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/not_within_solver/test_solver.py index 3c36f430f17..ac50349c2ff 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/not_within_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/not_within_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotWithinSolver(TestBaseSolver): def setUp(self) -> None: diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_equals_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_equals_solver/test_solver.py index 37825ddc404..9a75567841d 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_equals_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_equals_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNumberOfNotWordsEquals(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_or_equal_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_or_equal_solver/test_solver.py index 6cc434370a6..df50445a062 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_or_equal_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_or_equal_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNumberOfWordsGreaterThanOrEqual(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_solver/test_solver.py index f92c00536d6..a20a0b43292 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_greater_than_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNumberOfWordsGreaterThan(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_or_equal_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_or_equal_solver/test_solver.py index 69411780179..2bdfec5ebd9 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_or_equal_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_or_equal_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNumberOfWordsLessThanOrEqual(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_solver/test_solver.py index a586e04ee2a..04936b50836 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_less_than_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNumberOfWordsLessThan(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_not_equals_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_not_equals_solver/test_solver.py index 825818e6749..4959d0e4883 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_not_equals_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/number_of_words_not_equals_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNumberOfWordsEquals(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/test_solver.py index ce3953dbe5a..637b2c6ee3f 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/range_includes_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestRangeIncludesSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/test_solver.py index f5a2bcf0cf3..ed4a4a60ea8 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/range_not_includes_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestRangeNotIncludesSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/regex_match_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/regex_match_solver/test_solver.py index c5187a452bb..d42fd3a8dff 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/regex_match_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/regex_match_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestRegexMatchSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/starting_with_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/starting_with_solver/test_solver.py index 461cc740c6e..f2d4228060c 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/starting_with_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/starting_with_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestStartingWithSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/subset_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/subset_solver/test_solver.py index 64fced43e83..5ba0e904335 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/subset_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/subset_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestSubsetSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/attribute_solvers/within_solver/test_solver.py b/tests/terraform/graph/checks_infra/attribute_solvers/within_solver/test_solver.py index 33a476c5bdf..fdcee5439e3 100644 --- a/tests/terraform/graph/checks_infra/attribute_solvers/within_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/attribute_solvers/within_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestWithinSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/complex_solvers/and_solver/test_solver.py b/tests/terraform/graph/checks_infra/complex_solvers/and_solver/test_solver.py index a37e3e20ff8..267b40a6cff 100644 --- a/tests/terraform/graph/checks_infra/complex_solvers/and_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/complex_solvers/and_solver/test_solver.py @@ -7,7 +7,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestAndQuery(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/complex_solvers/not_solver/test_solver.py b/tests/terraform/graph/checks_infra/complex_solvers/not_solver/test_solver.py index fda2aac5be2..95534b8e9b7 100644 --- a/tests/terraform/graph/checks_infra/complex_solvers/not_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/complex_solvers/not_solver/test_solver.py @@ -7,7 +7,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestNotQuery(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/complex_solvers/or_solver/test_solver.py b/tests/terraform/graph/checks_infra/complex_solvers/or_solver/test_solver.py index 2ecdef96f1c..c0fe75023c8 100644 --- a/tests/terraform/graph/checks_infra/complex_solvers/or_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/complex_solvers/or_solver/test_solver.py @@ -7,7 +7,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class TestOrQuery(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/connection_solvers/and_connection_solver/test_solver.py b/tests/terraform/graph/checks_infra/connection_solvers/and_connection_solver/test_solver.py index efe1e7daab2..749f427e30d 100644 --- a/tests/terraform/graph/checks_infra/connection_solvers/and_connection_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/connection_solvers/and_connection_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class ConnectionSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/test_solver.py b/tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/test_solver.py index 60a7c23c2fc..852e76c662a 100644 --- a/tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/connection_solvers/connection_exist_solver/test_solver.py @@ -11,7 +11,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class ConnectionSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/connection_solvers/connection_not_exist_solver/test_solver.py b/tests/terraform/graph/checks_infra/connection_solvers/connection_not_exist_solver/test_solver.py index 8664600a235..7e015deb80b 100644 --- a/tests/terraform/graph/checks_infra/connection_solvers/connection_not_exist_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/connection_solvers/connection_not_exist_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class ConnectionSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/connection_solvers/connection_one_exists/test_solver.py b/tests/terraform/graph/checks_infra/connection_solvers/connection_one_exists/test_solver.py index ed1c97ee919..63dc3011c19 100644 --- a/tests/terraform/graph/checks_infra/connection_solvers/connection_one_exists/test_solver.py +++ b/tests/terraform/graph/checks_infra/connection_solvers/connection_one_exists/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class ConnectionSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/checks_infra/connection_solvers/or_connection_solver/test_solver.py b/tests/terraform/graph/checks_infra/connection_solvers/or_connection_solver/test_solver.py index 0de8bc8a70b..278edd0a475 100644 --- a/tests/terraform/graph/checks_infra/connection_solvers/or_connection_solver/test_solver.py +++ b/tests/terraform/graph/checks_infra/connection_solvers/or_connection_solver/test_solver.py @@ -9,7 +9,8 @@ @parameterized_class([ {"graph_framework": "NETWORKX"}, - {"graph_framework": "IGRAPH"} + {"graph_framework": "IGRAPH"}, + {"graph_framework": "RUSTWORKX"} ]) class ConnectionSolver(TestBaseSolver): def setUp(self): diff --git a/tests/terraform/graph/db_connector/test_graph_connector.py b/tests/terraform/graph/db_connector/test_graph_connector.py index c0732e39928..c3391fda6f1 100644 --- a/tests/terraform/graph/db_connector/test_graph_connector.py +++ b/tests/terraform/graph/db_connector/test_graph_connector.py @@ -3,6 +3,7 @@ from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector from checkov.terraform.graph_builder.local_graph import TerraformLocalGraph from checkov.terraform.tf_parser import TFParser @@ -27,3 +28,12 @@ def test_creating_igraph_graph(self): local_graph._create_vertices() igc = IgraphConnector() igc.save_graph(local_graph) + + def test_creating_rustworkx_graph(self): + resources_dir = os.path.realpath(os.path.join(TEST_DIRNAME, '../resources/encryption')) + hcl_config_parser = TFParser() + module, _ = hcl_config_parser.parse_hcl_module(resources_dir, 'AWS') + local_graph = TerraformLocalGraph(module) + local_graph._create_vertices() + igc = RustworkxConnector() + igc.save_graph(local_graph) diff --git a/tests/terraform/graph/graph_builder/test_graph_builder.py b/tests/terraform/graph/graph_builder/test_graph_builder.py index 61ccb068ebc..f5dd975d485 100644 --- a/tests/terraform/graph/graph_builder/test_graph_builder.py +++ b/tests/terraform/graph/graph_builder/test_graph_builder.py @@ -3,6 +3,7 @@ from unittest import TestCase, mock from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector from checkov.terraform.graph_builder.graph_components.block_types import BlockType from checkov.terraform.graph_builder.graph_to_tf_definitions import convert_graph_vertices_to_tf_definitions from checkov.terraform.graph_manager import TerraformGraphManager @@ -334,6 +335,44 @@ def test_build_graph_for_each_with_variables_and_dynamic_not_crash(self): # Shouldn't throw exception graph_manager.build_graph_from_source_directory(resources_dir) + def test_build_rustworkx_graph(self): + resources_dir = os.path.join(TEST_DIRNAME, '../resources/general_example') + + graph_manager = TerraformGraphManager(db_connector=RustworkxConnector()) + graph, tf_definitions = graph_manager.build_graph_from_source_directory(resources_dir) + + expected_num_of_var_nodes = 3 + expected_num_of_locals_nodes = 1 + expected_num_of_resources_nodes = 1 + expected_num_of_provider_nodes = 1 + vertices_by_block_type = graph.vertices_by_block_type + self.assertEqual(expected_num_of_var_nodes, len(vertices_by_block_type[BlockType.VARIABLE])) + self.assertEqual(expected_num_of_locals_nodes, len(vertices_by_block_type[BlockType.LOCALS])) + self.assertEqual(expected_num_of_resources_nodes, len(vertices_by_block_type[BlockType.RESOURCE])) + self.assertEqual(expected_num_of_provider_nodes, len(vertices_by_block_type[BlockType.PROVIDER])) + + provider_node = graph.vertices[vertices_by_block_type[BlockType.PROVIDER][0]] + resource_node = graph.vertices[vertices_by_block_type[BlockType.RESOURCE][0]] + local_node = graph.vertices[graph.vertices_block_name_map[BlockType.LOCALS]["bucket_name"][0]] + + var_bucket_name_node = None + var_region_node = None + var_aws_profile_node = None + for index in vertices_by_block_type[BlockType.VARIABLE]: + var_node = graph.vertices[index] + if var_node.name == 'aws_profile': + var_aws_profile_node = var_node + if var_node.name == 'bucket_name': + var_bucket_name_node = var_node + if var_node.name == 'region': + var_region_node = var_node + + self.check_edge(graph, resource_node, local_node, 'bucket') + self.check_edge(graph, resource_node, provider_node, 'provider') + self.check_edge(graph, resource_node, var_region_node, 'region') + self.check_edge(graph, provider_node, var_aws_profile_node, 'profile') + self.check_edge(graph, local_node, var_bucket_name_node, 'bucket_name') + def build_new_key_for_tf_definition(key): key = key.tf_source_modules diff --git a/tests/terraform/runner/test_plan_runner.py b/tests/terraform/runner/test_plan_runner.py index b4b4efa9de0..ef27ae85faf 100644 --- a/tests/terraform/runner/test_plan_runner.py +++ b/tests/terraform/runner/test_plan_runner.py @@ -16,6 +16,7 @@ from checkov.common.bridgecrew.severities import BcSeverities, Severities from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector from checkov.common.models.enums import CheckCategories, CheckResult from checkov.runner_filter import RunnerFilter from checkov.terraform import TFDefinitionKey @@ -25,7 +26,8 @@ @parameterized_class([ {"db_connector": NetworkxConnector}, - {"db_connector": IgraphConnector} + {"db_connector": IgraphConnector}, + {"db_connector": RustworkxConnector}, ]) class TestRunnerValid(unittest.TestCase): @classmethod diff --git a/tests/terraform/runner/test_runner.py b/tests/terraform/runner/test_runner.py index 726d71c3d2d..e83d1ea946e 100644 --- a/tests/terraform/runner/test_runner.py +++ b/tests/terraform/runner/test_runner.py @@ -12,6 +12,7 @@ from igraph import Graph from networkx import DiGraph from parameterized import parameterized, parameterized_class +from rustworkx import PyDiGraph from checkov.common.bridgecrew.check_type import CheckType from checkov.common.bridgecrew.severities import Severities, BcSeverities @@ -19,6 +20,7 @@ from checkov.common.checks_infra.registry import get_graph_checks_registry from checkov.common.graph.db_connectors.igraph.igraph_db_connector import IgraphConnector from checkov.common.graph.db_connectors.networkx.networkx_db_connector import NetworkxConnector +from checkov.common.graph.db_connectors.rustworkx.rustworkx_db_connector import RustworkxConnector from checkov.common.graph.graph_builder import CustomAttributes from checkov.common.models.enums import CheckCategories, CheckResult from checkov.common.output.report import Report @@ -46,6 +48,8 @@ {"db_connector": NetworkxConnector, "tf_split_graph": "False", "graph": "NETWORKX"}, {"db_connector": IgraphConnector, "tf_split_graph": "True", "graph": "IGRAPH"}, {"db_connector": IgraphConnector, "tf_split_graph": "False", "graph": "IGRAPH"}, + {"db_connector": RustworkxConnector, "tf_split_graph": "True", "graph": "RUSTWORKX"}, + {"db_connector": RustworkxConnector, "tf_split_graph": "False", "graph": "RUSTWORKX"}, ]) class TestRunnerValid(unittest.TestCase): def setUp(self) -> None: @@ -1593,7 +1597,8 @@ def tearDown(self): @parameterized.expand([ (NetworkxConnector,), - (IgraphConnector,) + (IgraphConnector,), + (RustworkxConnector,) ]) def test_get_graph_resource_entity_config(self, graph_connector): current_dir = os.path.dirname(os.path.realpath(__file__)) @@ -1610,6 +1615,10 @@ def test_get_graph_resource_entity_config(self, graph_connector): for data in graph_connector.vs.select()["attr"]: config = Runner.get_graph_resource_entity_config(data) self.assertIn(CustomAttributes.TF_RESOURCE_ADDRESS, config) + if isinstance(graph_connector, PyDiGraph): + for _, data in graph_connector.nodes(): + config = Runner.get_graph_resource_entity_config(data) + self.assertIn(CustomAttributes.TF_RESOURCE_ADDRESS, config) @mock.patch.dict(os.environ, {"ENABLE_DEFINITION_KEY": "True"}) def test_entity_context_fetching_with_TFDefinitionKey(self): From 9b8750189abd729b495b804dbc9fd4e702bd3814 Mon Sep 17 00:00:00 2001 From: lirshindalman Date: Thu, 14 Sep 2023 08:16:03 +0300 Subject: [PATCH 2/5] . --- Pipfile | 2 +- Pipfile.lock | 1142 +++++++++++++++++++++++++++----------------------- 2 files changed, 608 insertions(+), 536 deletions(-) diff --git a/Pipfile b/Pipfile index 0d8d47c62df..d9157e49b58 100644 --- a/Pipfile +++ b/Pipfile @@ -92,4 +92,4 @@ license-expression = "*" rustworkx = "*" [requires] -python_version = "3.7" +python_version = "3.8" diff --git a/Pipfile.lock b/Pipfile.lock index 051a68fe2f6..78d35af49c5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "8bdba01ac3002e586bae0f00bf5701f115ce9498b7b171273af6a9838b5fc0ca" + "sha256": "a4b0f4a578e3780d3bc73303958d713386c1986b295a3db052491a47d4b354e8" }, "pipfile-spec": 6, "requires": { - "python_version": "3.7" + "python_version": "3.8" }, "sources": [ { @@ -152,14 +152,6 @@ "markers": "python_version >= '3.7'", "version": "==4.0.3" }, - "asynctest": { - "hashes": [ - "sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676", - "sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac" - ], - "markers": "python_version < '3.8'", - "version": "==0.13.0" - }, "attrs": { "hashes": [ "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", @@ -197,11 +189,11 @@ }, "beartype": { "hashes": [ - "sha256:0f70fccdb8eb6d7ddfaa3ffe3a0b66cf2edeb13452bd71ad46615775c2fa34f6", - "sha256:23df4715d19cebb2ce60e53c3cf44cd925843f00c71938222d777ea6332de3cb" + "sha256:2af6a8d8a7267ccf7d271e1a3bd908afbc025d2a09aa51123567d7d7b37438df", + "sha256:52cd2edea72fdd84e4e7f8011a9e3007bf0125c3d6d7219e937b9d8868169177" ], - "markers": "python_full_version >= '3.7.0'", - "version": "==0.14.1" + "markers": "python_full_version >= '3.8.0'", + "version": "==0.15.0" }, "beautifulsoup4": { "hashes": [ @@ -220,20 +212,20 @@ }, "boto3": { "hashes": [ - "sha256:c53c92dfe22489ba31e918c2e7b59ff43e2e778bd3d3559e62351a739382bb5c", - "sha256:eea3b07e0f28c9f92bccab972af24a3b0dd951c69d93da75227b8ecd3e18f6c4" + "sha256:27560da44099e7e2ee961d3971d8ea659de2e0dc24e78043d1c3027d89b2d8a2", + "sha256:be69cd28e3732b63ad61f6d2429b1eac92428588911a5a7367faa4e129a4738d" ], "index": "pypi", "markers": "python_version >= '3.7'", - "version": "==1.28.44" + "version": "==1.28.47" }, "botocore": { "hashes": [ - "sha256:83d61c1ca781e6ede19fcc4d5dd73004eee3825a2b220f0d7727e32069209d98", - "sha256:84f90919fecb4a4f417fd10145c8a87ff2c4b14d6381cd34d9babf02110b3315" + "sha256:6a60f9601270458102529b17fdcba5551b918f9eedc32bbc2f467e63edfb2662", + "sha256:a0ba5629eb17a37bf449bccda9df6ae652d5755f73145519d5eb244f6963b31b" ], "markers": "python_version >= '3.7'", - "version": "==1.31.44" + "version": "==1.31.47" }, "cached-property": { "hashes": [ @@ -516,83 +508,70 @@ }, "frozenlist": { "hashes": [ - "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", - "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", - "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", - "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", - "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", - "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", - "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", - "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", - "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", - "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", - "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", - "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", - "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", - "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", - "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", - "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", - "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", - "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", - "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", - "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", - "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", - "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", - "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", - "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", - "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", - "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", - "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", - "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", - "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", - "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", - "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", - "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", - "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", - "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", - "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", - "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", - "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", - "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", - "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", - "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", - "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", - "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", - "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", - "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", - "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", - "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", - "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", - "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", - "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", - "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", - "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", - "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", - "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", - "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", - "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", - "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", - "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", - "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", - "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", - "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", - "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", - "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", - "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", - "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", - "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", - "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", - "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", - "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", - "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", - "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", - "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", - "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", - "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", - "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" - ], - "markers": "python_version >= '3.7'", - "version": "==1.3.3" + "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6", + "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01", + "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251", + "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9", + "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b", + "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87", + "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf", + "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f", + "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0", + "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2", + "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b", + "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc", + "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c", + "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467", + "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9", + "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1", + "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a", + "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79", + "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167", + "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300", + "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf", + "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea", + "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2", + "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab", + "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3", + "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb", + "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087", + "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc", + "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8", + "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62", + "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f", + "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326", + "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c", + "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431", + "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963", + "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7", + "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef", + "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3", + "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956", + "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781", + "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472", + "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc", + "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839", + "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672", + "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3", + "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503", + "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d", + "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8", + "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b", + "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc", + "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f", + "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559", + "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b", + "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95", + "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb", + "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963", + "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919", + "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f", + "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3", + "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1", + "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e" + ], + "markers": "python_version >= '3.8'", + "version": "==1.4.0" }, "gitdb": { "hashes": [ @@ -604,12 +583,12 @@ }, "gitpython": { "hashes": [ - "sha256:9cbefbd1789a5fe9bcf621bb34d3f441f3a90c8461d377f84eda73e721d9b06b", - "sha256:c19b4292d7a1d3c0f653858db273ff8a6614100d1eb1528b014ec97286193c09" + "sha256:4bb0c2a6995e85064140d31a33289aa5dce80133a23d36fcd372d716c54d3ebf", + "sha256:8d22b5cfefd17c79914226982bb7851d6ade47545b1735a9d010a2a4c26d8388" ], "index": "pypi", "markers": "python_version >= '3.7'", - "version": "==3.1.35" + "version": "==3.1.36" }, "idna": { "hashes": [ @@ -621,77 +600,77 @@ }, "igraph": { "hashes": [ - "sha256:053cdff880e46dca5a754777a5b2d68e904e82e831c6eb8ba7fdaed8d004a888", - "sha256:06ca4879236cbb52dd33ddb8e5d562b387f91607fe2bc5f277054778560448c2", - "sha256:0a753a48f96c48d01944221f189b989a03151f6e0e37862675248612e45ddd18", - "sha256:169d7f1f8f1a39d1fa965dba0cab69b0d03de4b5e3272b196c60c3104a7e2735", - "sha256:1a21dae12de610474b5b64f92822f3da4af2cedd60413b56aa55cc165dc0c763", - "sha256:1a3dcf7b23e05dc7b1cf258bd82a52ed9a71e36ccc091480475bfe210ab60a17", - "sha256:1deb496ccf6a71d07f4952e05b6aea3dd10e18abae9aadcbfd88f640cc804fa1", - "sha256:26ae1fe7e4e55a851cdffcd302d9ad530303e47676424ee422dbede7450f948f", - "sha256:2913d91d9aeae107295fe238e1fe73d1150fca51b4e863c0442904dfb36f0d5a", - "sha256:3296e013c695488c313daa218aa5861dcd3623f298935f2f6f48b2bf1e65e5d0", - "sha256:3bb368af87b5ea1877baf0cc337e6d83bb688f1f81c9f75973da92c30a4106c3", - "sha256:3e93a2d6ac310d8f6b258aa659f1e2c36ed6a5c2982f79425e33a0d370df95c6", - "sha256:409f377ea828d73bdf8da1e8372492db570efea765508eb091ec827492604ab7", - "sha256:434f71859d39bfe7285c1ff02486492cf0d9236e50d2b0efd3f3fb316f106ebe", - "sha256:47637170741eb48550a18dc1072d354476866a3d6bc30b260a23acc04d15168f", - "sha256:4c743703ff6a9907deddf3f15ddb7a4e0d525a0055e5cf29ac2143b865fdf6c2", - "sha256:4f1a33d7bf8ebaaa0f6401db437e23c3fe90b13c042897fa6123e0cf63605149", - "sha256:521e9a1ab869d65cdc7713f2649794e8076c2d6b210dcad37ac6bcaffaf858de", - "sha256:527319db746f22adefba3ccbe1e7fba485edd14339af7c953e34e329f04d423f", - "sha256:53c0d0000f57c920549626b48e4b81685c268795df3657251763e50b83e8dac5", - "sha256:547f5e815063e68acd1efedf31ccb3f204a7d6e80fdddd96cb18b11610744912", - "sha256:6142060215c7bc5007f65ceffaa2ae1d84d0ef45bd9cbe8bc0670380200beb0f", - "sha256:62a39bcebfe863c607642e110c4846de9631caa4ce1c6e2e11fae9b1d66904dd", - "sha256:69d21b26599c86c6b937138280b13306f9b4e380498cc13896c603985c5ee80a", - "sha256:71a03c57550066a5cbf6fc6621d470fbf4abcf33ecb975a21e13e09cf45b965b", - "sha256:76f7aad294514412f835366a7d9a9c1e7a34c3e6ef0a6c3a1a835234323228e8", - "sha256:7e737d4946e30bf561272a394d3c35181d453ab605a9650812200510b92b58b8", - "sha256:7edef14bed493d104213e95a21252f6ac9374fb1383966244c9fb3c615927317", - "sha256:81c4809ae45406cb81f985b643d8c9516c0394fa5f0aabe9a617f6506501c97e", - "sha256:81fbd93bbe81127aa98247a777a4eb2902443079254696d5aaa0a146cff88663", - "sha256:82bacc57b40e6f2f1e7550073a283af38ed1ca9654f68796376eea1413988768", - "sha256:868b558ca3d3363e0864246c20a9e937f849125103bd5e1e45e5f233121c1632", - "sha256:936c681b3d6c507f3d1008c37d7ce6ef570d0ad932a94af1d512609da72a8ec1", - "sha256:95b1b02a3d0c321339f2ed7283f37a22591c3b6a084393748369d5815aafe0a9", - "sha256:96cdb8fdd9be3e4bd741b71436286f011f39bf7477cf7406d0d5ad9afa55f812", - "sha256:a1cc73149e5ae448054c04050e5cfcdd9d886f72883ec9ca11185e16f62df2b1", - "sha256:a4d88c6b392e70d1e8b9fb7747b545c9837b0232105ace379e63a6b08d987f23", - "sha256:ad8a9245d1d27f50003c387105a52a9794b070fcc448f23fd58f7288126500ea", - "sha256:b3e038f78324e138869358bf17f9e57bcd665f7ddf6ed4b5f83fcbfc782f5059", - "sha256:b40da28b2ed1b35d24794996ff38ed3292ddaeea8cbeb48da146df0bf32021ae", - "sha256:c08023eb9a3df384e5d8285ec8a60d0e5c1738c6d139a0b51ac5da024538d466", - "sha256:c21f39fd40f7a0534442cb52e7dc07ee59aad4e52238a3b1c5fcb76f880d9648", - "sha256:ca05a065108d126771d4867c1e6867fdc340f86f9634978de1326aa2de782138", - "sha256:d1a935f7cb7a7490eef225bb5072ba3208cddf4a26aab9395f21a5a6082ed48f", - "sha256:da6009f347bdf14191bb65352a9eb5b1e2ba9014d928306b60b460dc549d21c8", - "sha256:ddbbdaab269700d35969feaab73b9cbf7c55daa7711aaa01e0f9c598c9b8fbe1", - "sha256:e1d3a0882224dafadb259a0e660650779a7714f3d931a03127af43ef05a4d6e2", - "sha256:eb97640e9e71913015e7073341a5f6b4017fe025222950873c507d4ee97670f9", - "sha256:eca5d01773a8b48bb585fb972c8afcf0cbfb791627a6706ccf56c0685b8ccca7", - "sha256:f375b5e9faea3381c9bb878195cbfc83444a13fb357f8e6c5767d2d9e3745e26" - ], - "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==0.10.6" + "sha256:00ae729d928d2218822a1f1f07d1286918456f9d587691a4c1c743b2206dadd6", + "sha256:03f5ab062e2caa092da901266258193963cc38690964e4c75b5ef2b457b86f35", + "sha256:06f9e40959ff7760cd426f7c53ee7645ae8d32192899b43c0a6862eb9daee86c", + "sha256:0e5d00251082fe7e4044aa58b153b7f6250dbbff49b97f3c7f2400f31f456456", + "sha256:14142ba6bbb4cbbc211b2abf42f06b3771bd806836eb101c8a174cf5e175d455", + "sha256:15927b565094bd5d3ec3a89ce4abd6087c3d07bf03dd6d506dd05f2678de963d", + "sha256:16ab9181fce33b8f04af99b08a81af45e606a3acd1e128ac61e927aa876d36f2", + "sha256:1b658e128eca02a7402719712d99b3511dd2e45468048cf17bc68401c706b8db", + "sha256:1df0e91843214196e60d0053ee54019da342a5415e828ae71990e662f387fd2a", + "sha256:275ccbfc0dcc039af3d3f396017c34175f6d49ec62e87837de29c602cbff6585", + "sha256:27c47695fe37f4cecbbe84c56326c6aed1ef876a62838c995cc7f7dd6fc8d408", + "sha256:2e06c95127a3a1accaae70c3e3941d7118d2ae2c69cc5cff2d92cc9f88566780", + "sha256:2e84717cbffc93561a625c6e9460eeea858f2399f44dda6c1aa3d76186efb75d", + "sha256:307dad89a4898f621b457268d67d1a6717acaeffc0041bddcdcab38ecca7cc48", + "sha256:31c492ee77e11677e951c48d727c76fb5caf1e8f8e251329d8fa77c491cb5b13", + "sha256:32118060a9e86533cd108481af23b6d7d8010808775634ae41ece51a0e4d0899", + "sha256:3cc8349311d9ffe225f752e093cebf5d21929f1bfa7281e510248706b6516199", + "sha256:41ce1dd8c4d0e4069c52bf414ddae2bb4a307b6764496905c8985c5d457e1877", + "sha256:42fb6b69de069d0dc66a8606ad486aae19b500b01268cb1e64877ea931bd7ad7", + "sha256:473af40ebae68d522a245b5076164153d4b15eb3d47f31941753a11569441bcc", + "sha256:4a7c9a210681c7c7b70d35f46da52fed4415049c5557625127bf738434270763", + "sha256:4b788969af5bd3bb51eac510cef6ed635d8a194713b46a3c4aa1c7af4b61c008", + "sha256:547c2db0cd7bc59e20bcd794e1d53d9778b7950cee0ce9ada79bc61646fbb28a", + "sha256:5a25bb782bfb1ac1f6d7f5815d1036a3e93bac2b4990edf135a07b4aa8008355", + "sha256:5f3e29f89ae9ce5c60ef09a0a5d3ea41aac6bf54cce0110f4e8dfcc782eb4f90", + "sha256:7432c99134e0e8efb52d583221fd2cdac1f3955fcf07f720e2b72daec9bcf933", + "sha256:76e4397b9f9f94ef08353e12f335e762a7fd39a72970de11f5bc97e178aea9c5", + "sha256:7a4f97e2a1b4aa9cc5e18d18fbc7813c6fae3faa19fcd54323a2fd9e1e2d2c18", + "sha256:7e496a31373416ecbae7468cd8a6462034a622b593834684d3e1f166e1562225", + "sha256:7ee4e9cb183a92524f336399b548d2540f5150ab7ce6a270618709efa9e04c58", + "sha256:84d9c4bccdb3fdba5f2dea33d79a073f01d759ddef37787a29caba45743265ef", + "sha256:883f99668c78a7e388b00048c1a78048ac01725ea07329c2fdc01759b4cae808", + "sha256:88ee0d0ab83481f365ef4e56f9f9e9f70001d90ebd6ed98e368060494481d022", + "sha256:89fca31ca33957dae5df4ecf032c08eb1e897cbc5856cdaad52b67c6ace3f074", + "sha256:8bde908a00291d32eafe02f502d82a62698cc7740933e3744c1cbd3f848a52ed", + "sha256:922c85e2c6a29c09b8fadac3c92e0e38eecaaff48b5c569b82cf006409c4ba4a", + "sha256:9b961bf2ddd998308ee54b85fafaeb02e358a548515362d537dfc57b25c3855b", + "sha256:9f816bf387fbd9fc31a13271d031ddaf8c0c00da416ebced6701cba7856d7ac1", + "sha256:a405bdb885e2bd3f213e39ba3ee6e0cd3d1722beeb54afd60051f6b269228b0f", + "sha256:c13c1eb644c20213d93dc9aee3016530ff1a9b9d7e8cf2a4ead3224b8a06e517", + "sha256:ccfb1232c72d0eb56876b7e9a8e04fc8158102b73160215b0f5f672c1c8c2588", + "sha256:d1bb61e475dc637f7cb4a9175c79c77ee212374ce1225c7b41f643ed22a5451a", + "sha256:d3b7893573060d117917e4f2121e524ed849bbf9f9a63a082001e1a4c5225b46", + "sha256:d7bd3455c93486b2f443f6f177792a358540207334b66dc73681d63972e1f1d9", + "sha256:df99402198764a9621f18e561f82b151ab295044d6a595d5a70d7eabfb8e0c5b", + "sha256:e2ce856489ae76ebc286535a64833d141f7ea43a106ba3485cd7ea9bbd47871c", + "sha256:e5c692fce053ba79b9d4b82b40e092b83a2bd14e04a09871c8e4a68c39932010", + "sha256:eb9951bd3a35ca17253d47f5e7f5bc3609028f29255bdfd79bbcdbb902568b63", + "sha256:f32725d6ba54f371e7a626b9eabac873f6ae6f212e6ee35a6c602a64a5b8e865", + "sha256:fc4021242f00adb150e759692da065bddef5af22afea387cd5a726461946b93b" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==0.10.8" }, "importlib-metadata": { "hashes": [ - "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116", - "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d" + "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb", + "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==4.13.0" + "markers": "python_version >= '3.8'", + "version": "==6.8.0" }, "importlib-resources": { "hashes": [ - "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6", - "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a" + "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf", + "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4" ], "markers": "python_version < '3.9'", - "version": "==5.12.0" + "version": "==6.0.1" }, "isodate": { "hashes": [ @@ -719,12 +698,20 @@ }, "jsonschema": { "hashes": [ - "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", - "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" + "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb", + "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==4.17.3" + "markers": "python_version >= '3.8'", + "version": "==4.19.0" + }, + "jsonschema-specifications": { + "hashes": [ + "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1", + "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb" + ], + "markers": "python_version >= '3.8'", + "version": "==2023.7.1" }, "junit-xml": { "hashes": [ @@ -916,40 +903,37 @@ }, "numpy": { "hashes": [ - "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac", - "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3", - "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6", - "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1", - "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a", - "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b", - "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470", - "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1", - "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab", - "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46", - "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673", - "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7", - "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db", - "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e", - "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786", - "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552", - "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25", - "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6", - "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2", - "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a", - "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf", - "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f", - "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c", - "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4", - "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b", - "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0", - "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3", - "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656", - "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0", - "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb", - "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e" - ], - "markers": "python_version < '3.11' and python_version >= '3.7'", - "version": "==1.21.6" + "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f", + "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61", + "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7", + "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400", + "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef", + "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2", + "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d", + "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc", + "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835", + "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706", + "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5", + "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4", + "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6", + "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", + "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a", + "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f", + "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e", + "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e", + "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694", + "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8", + "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64", + "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d", + "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc", + "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254", + "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2", + "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1", + "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810", + "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9" + ], + "markers": "python_version >= '3.8'", + "version": "==1.24.4" }, "openai": { "hashes": [ @@ -1012,12 +996,12 @@ }, "prettytable": { "hashes": [ - "sha256:ef8334ee40b7ec721651fc4d37ecc7bb2ef55fde5098d994438f0dfdaa385c0c", - "sha256:f4aaf2ed6e6062a82fd2e6e5289bbbe705ec2788fe401a3a1f62a1cea55526d2" + "sha256:a71292ab7769a5de274b146b276ce938786f56c31cf7cea88b6f3775d82fe8c8", + "sha256:f4ed94803c23073a90620b201965e5dc0bccf1760b7a7eaf3158cab8aaffdf34" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==3.7.0" + "markers": "python_version >= '3.8'", + "version": "==3.9.0" }, "pycares": { "hashes": [ @@ -1100,39 +1084,6 @@ "markers": "python_full_version >= '3.6.8'", "version": "==3.1.1" }, - "pyrsistent": { - "hashes": [ - "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.7'", - "version": "==0.19.3" - }, "pyston": { "hashes": [ "sha256:30caaee3b58d92817efa2cd4f32c24289dd5f4ddf9b5b4ec5b62ed564230ca8a", @@ -1244,11 +1195,19 @@ }, "rdflib": { "hashes": [ - "sha256:36b4e74a32aa1e4fa7b8719876fb192f19ecd45ff932ea5ebbd2e417a0247e63", - "sha256:72af591ff704f4caacea7ecc0c5a9056b8553e0489dd4f35a9bc52dbd41522e0" + "sha256:0438920912a642c866a513de6fe8a0001bd86ef975057d6962c79ce4771687cd", + "sha256:9995eb8569428059b8c1affd26b25eac510d64f5043d9ce8c84e0d0036e995ae" ], - "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==6.3.2" + "markers": "python_full_version >= '3.8.1' and python_full_version < '4.0.0'", + "version": "==7.0.0" + }, + "referencing": { + "hashes": [ + "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf", + "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0" + ], + "markers": "python_version >= '3.8'", + "version": "==0.30.2" }, "regex": { "hashes": [ @@ -1353,6 +1312,109 @@ "markers": "python_version >= '3.7'", "version": "==2.31.0" }, + "rpds-py": { + "hashes": [ + "sha256:015de2ce2af1586ff5dc873e804434185199a15f7d96920ce67e50604592cae9", + "sha256:061c3ff1f51ecec256e916cf71cc01f9975af8fb3af9b94d3c0cc8702cfea637", + "sha256:08a80cf4884920863623a9ee9a285ee04cef57ebedc1cc87b3e3e0f24c8acfe5", + "sha256:09362f86ec201288d5687d1dc476b07bf39c08478cde837cb710b302864e7ec9", + "sha256:0bb4f48bd0dd18eebe826395e6a48b7331291078a879295bae4e5d053be50d4c", + "sha256:106af1653007cc569d5fbb5f08c6648a49fe4de74c2df814e234e282ebc06957", + "sha256:11fdd1192240dda8d6c5d18a06146e9045cb7e3ba7c06de6973000ff035df7c6", + "sha256:16a472300bc6c83fe4c2072cc22b3972f90d718d56f241adabc7ae509f53f154", + "sha256:176287bb998fd1e9846a9b666e240e58f8d3373e3bf87e7642f15af5405187b8", + "sha256:177914f81f66c86c012311f8c7f46887ec375cfcfd2a2f28233a3053ac93a569", + "sha256:177c9dd834cdf4dc39c27436ade6fdf9fe81484758885f2d616d5d03c0a83bd2", + "sha256:187700668c018a7e76e89424b7c1042f317c8df9161f00c0c903c82b0a8cac5c", + "sha256:1d9b5ee46dcb498fa3e46d4dfabcb531e1f2e76b477e0d99ef114f17bbd38453", + "sha256:22da15b902f9f8e267020d1c8bcfc4831ca646fecb60254f7bc71763569f56b1", + "sha256:24cd91a03543a0f8d09cb18d1cb27df80a84b5553d2bd94cba5979ef6af5c6e7", + "sha256:255f1a10ae39b52122cce26ce0781f7a616f502feecce9e616976f6a87992d6b", + "sha256:271c360fdc464fe6a75f13ea0c08ddf71a321f4c55fc20a3fe62ea3ef09df7d9", + "sha256:2ed83d53a8c5902ec48b90b2ac045e28e1698c0bea9441af9409fc844dc79496", + "sha256:2f3e1867dd574014253b4b8f01ba443b9c914e61d45f3674e452a915d6e929a3", + "sha256:35fbd23c1c8732cde7a94abe7fb071ec173c2f58c0bd0d7e5b669fdfc80a2c7b", + "sha256:37d0c59548ae56fae01c14998918d04ee0d5d3277363c10208eef8c4e2b68ed6", + "sha256:39d05e65f23a0fe897b6ac395f2a8d48c56ac0f583f5d663e0afec1da89b95da", + "sha256:3ad59efe24a4d54c2742929001f2d02803aafc15d6d781c21379e3f7f66ec842", + "sha256:3aed39db2f0ace76faa94f465d4234aac72e2f32b009f15da6492a561b3bbebd", + "sha256:3bbac1953c17252f9cc675bb19372444aadf0179b5df575ac4b56faaec9f6294", + "sha256:40bc802a696887b14c002edd43c18082cb7b6f9ee8b838239b03b56574d97f71", + "sha256:42f712b4668831c0cd85e0a5b5a308700fe068e37dcd24c0062904c4e372b093", + "sha256:448a66b8266de0b581246ca7cd6a73b8d98d15100fb7165974535fa3b577340e", + "sha256:485301ee56ce87a51ccb182a4b180d852c5cb2b3cb3a82f7d4714b4141119d8c", + "sha256:485747ee62da83366a44fbba963c5fe017860ad408ccd6cd99aa66ea80d32b2e", + "sha256:4cf0855a842c5b5c391dd32ca273b09e86abf8367572073bd1edfc52bc44446b", + "sha256:4eca20917a06d2fca7628ef3c8b94a8c358f6b43f1a621c9815243462dcccf97", + "sha256:4ed172d0c79f156c1b954e99c03bc2e3033c17efce8dd1a7c781bc4d5793dfac", + "sha256:5267cfda873ad62591b9332fd9472d2409f7cf02a34a9c9cb367e2c0255994bf", + "sha256:52b5cbc0469328e58180021138207e6ec91d7ca2e037d3549cc9e34e2187330a", + "sha256:53d7a3cd46cdc1689296348cb05ffd4f4280035770aee0c8ead3bbd4d6529acc", + "sha256:563646d74a4b4456d0cf3b714ca522e725243c603e8254ad85c3b59b7c0c4bf0", + "sha256:570cc326e78ff23dec7f41487aa9c3dffd02e5ee9ab43a8f6ccc3df8f9327623", + "sha256:5aca759ada6b1967fcfd4336dcf460d02a8a23e6abe06e90ea7881e5c22c4de6", + "sha256:5de11c041486681ce854c814844f4ce3282b6ea1656faae19208ebe09d31c5b8", + "sha256:5e271dd97c7bb8eefda5cca38cd0b0373a1fea50f71e8071376b46968582af9b", + "sha256:642ed0a209ced4be3a46f8cb094f2d76f1f479e2a1ceca6de6346a096cd3409d", + "sha256:6446002739ca29249f0beaaf067fcbc2b5aab4bc7ee8fb941bd194947ce19aff", + "sha256:691d50c99a937709ac4c4cd570d959a006bd6a6d970a484c84cc99543d4a5bbb", + "sha256:69b857a7d8bd4f5d6e0db4086da8c46309a26e8cefdfc778c0c5cc17d4b11e08", + "sha256:6ac3fefb0d168c7c6cab24fdfc80ec62cd2b4dfd9e65b84bdceb1cb01d385c33", + "sha256:6c9141af27a4e5819d74d67d227d5047a20fa3c7d4d9df43037a955b4c748ec5", + "sha256:7170cbde4070dc3c77dec82abf86f3b210633d4f89550fa0ad2d4b549a05572a", + "sha256:763ad59e105fca09705d9f9b29ecffb95ecdc3b0363be3bb56081b2c6de7977a", + "sha256:77076bdc8776a2b029e1e6ffbe6d7056e35f56f5e80d9dc0bad26ad4a024a762", + "sha256:7cd020b1fb41e3ab7716d4d2c3972d4588fdfbab9bfbbb64acc7078eccef8860", + "sha256:821392559d37759caa67d622d0d2994c7a3f2fb29274948ac799d496d92bca73", + "sha256:829e91f3a8574888b73e7a3feb3b1af698e717513597e23136ff4eba0bc8387a", + "sha256:850c272e0e0d1a5c5d73b1b7871b0a7c2446b304cec55ccdb3eaac0d792bb065", + "sha256:87d9b206b1bd7a0523375dc2020a6ce88bca5330682ae2fe25e86fd5d45cea9c", + "sha256:8bd01ff4032abaed03f2db702fa9a61078bee37add0bd884a6190b05e63b028c", + "sha256:8d54bbdf5d56e2c8cf81a1857250f3ea132de77af543d0ba5dce667183b61fec", + "sha256:8efaeb08ede95066da3a3e3c420fcc0a21693fcd0c4396d0585b019613d28515", + "sha256:8f94fdd756ba1f79f988855d948ae0bad9ddf44df296770d9a58c774cfbcca72", + "sha256:95cde244e7195b2c07ec9b73fa4c5026d4a27233451485caa1cd0c1b55f26dbd", + "sha256:975382d9aa90dc59253d6a83a5ca72e07f4ada3ae3d6c0575ced513db322b8ec", + "sha256:9dd9d9d9e898b9d30683bdd2b6c1849449158647d1049a125879cb397ee9cd12", + "sha256:a019a344312d0b1f429c00d49c3be62fa273d4a1094e1b224f403716b6d03be1", + "sha256:a4d9bfda3f84fc563868fe25ca160c8ff0e69bc4443c5647f960d59400ce6557", + "sha256:a657250807b6efd19b28f5922520ae002a54cb43c2401e6f3d0230c352564d25", + "sha256:a771417c9c06c56c9d53d11a5b084d1de75de82978e23c544270ab25e7c066ff", + "sha256:aad6ed9e70ddfb34d849b761fb243be58c735be6a9265b9060d6ddb77751e3e8", + "sha256:ae87137951bb3dc08c7d8bfb8988d8c119f3230731b08a71146e84aaa919a7a9", + "sha256:af247fd4f12cca4129c1b82090244ea5a9d5bb089e9a82feb5a2f7c6a9fe181d", + "sha256:b5d4bdd697195f3876d134101c40c7d06d46c6ab25159ed5cbd44105c715278a", + "sha256:b9255e7165083de7c1d605e818025e8860636348f34a79d84ec533546064f07e", + "sha256:c22211c165166de6683de8136229721f3d5c8606cc2c3d1562da9a3a5058049c", + "sha256:c55f9821f88e8bee4b7a72c82cfb5ecd22b6aad04033334f33c329b29bfa4da0", + "sha256:c7aed97f2e676561416c927b063802c8a6285e9b55e1b83213dfd99a8f4f9e48", + "sha256:cd2163f42868865597d89399a01aa33b7594ce8e2c4a28503127c81a2f17784e", + "sha256:ce5e7504db95b76fc89055c7f41e367eaadef5b1d059e27e1d6eabf2b55ca314", + "sha256:cff7351c251c7546407827b6a37bcef6416304fc54d12d44dbfecbb717064717", + "sha256:d27aa6bbc1f33be920bb7adbb95581452cdf23005d5611b29a12bb6a3468cc95", + "sha256:d3b52a67ac66a3a64a7e710ba629f62d1e26ca0504c29ee8cbd99b97df7079a8", + "sha256:de61e424062173b4f70eec07e12469edde7e17fa180019a2a0d75c13a5c5dc57", + "sha256:e10e6a1ed2b8661201e79dff5531f8ad4cdd83548a0f81c95cf79b3184b20c33", + "sha256:e1a0ffc39f51aa5f5c22114a8f1906b3c17eba68c5babb86c5f77d8b1bba14d1", + "sha256:e22491d25f97199fc3581ad8dd8ce198d8c8fdb8dae80dea3512e1ce6d5fa99f", + "sha256:e626b864725680cd3904414d72e7b0bd81c0e5b2b53a5b30b4273034253bb41f", + "sha256:e8c71ea77536149e36c4c784f6d420ffd20bea041e3ba21ed021cb40ce58e2c9", + "sha256:e8d0f0eca087630d58b8c662085529781fd5dc80f0a54eda42d5c9029f812599", + "sha256:ea65b59882d5fa8c74a23f8960db579e5e341534934f43f3b18ec1839b893e41", + "sha256:ea93163472db26ac6043e8f7f93a05d9b59e0505c760da2a3cd22c7dd7111391", + "sha256:eab75a8569a095f2ad470b342f2751d9902f7944704f0571c8af46bede438475", + "sha256:ed8313809571a5463fd7db43aaca68ecb43ca7a58f5b23b6e6c6c5d02bdc7882", + "sha256:ef5fddfb264e89c435be4adb3953cef5d2936fdeb4463b4161a6ba2f22e7b740", + "sha256:ef750a20de1b65657a1425f77c525b0183eac63fe7b8f5ac0dd16f3668d3e64f", + "sha256:efb9ece97e696bb56e31166a9dd7919f8f0c6b31967b454718c6509f29ef6fee", + "sha256:f4c179a7aeae10ddf44c6bac87938134c1379c49c884529f090f9bf05566c836", + "sha256:f602881d80ee4228a2355c68da6b296a296cd22bbb91e5418d54577bbf17fa7c", + "sha256:fc2200e79d75b5238c8d69f6a30f8284290c777039d331e7340b6c17cad24a5a", + "sha256:fcc1ebb7561a3e24a6588f7c6ded15d80aec22c66a070c757559b57b17ffd1cb" + ], + "markers": "python_version >= '3.8'", + "version": "==0.10.3" + }, "rustworkx": { "hashes": [ "sha256:030203b24c5742e3f3425266cc7d12f82223d97900a5beacdcd18c35383df318", @@ -1428,11 +1490,11 @@ }, "setuptools": { "hashes": [ - "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f", - "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235" + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" ], - "markers": "python_version >= '3.7'", - "version": "==68.0.0" + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "six": { "hashes": [ @@ -1459,11 +1521,11 @@ }, "soupsieve": { "hashes": [ - "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8", - "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea" + "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690", + "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7" ], - "markers": "python_version >= '3.7'", - "version": "==2.4.1" + "markers": "python_version >= '3.8'", + "version": "==2.5" }, "spdx-tools": { "hashes": [ @@ -1565,11 +1627,11 @@ }, "websocket-client": { "hashes": [ - "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd", - "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d" + "sha256:3aad25d31284266bcfcfd1fd8a743f63282305a364b8d0948a43bd606acc652f", + "sha256:6cfc30d051ebabb73a5fa246efdcc14c8fbebbd0330f8984ac3bb6d9edd2ad03" ], - "markers": "python_version >= '3.7'", - "version": "==1.6.1" + "markers": "python_version >= '3.8'", + "version": "==1.6.3" }, "xmltodict": { "hashes": [ @@ -1662,11 +1724,11 @@ }, "zipp": { "hashes": [ - "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", - "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" + "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0", + "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147" ], - "markers": "python_version >= '3.7'", - "version": "==3.15.0" + "markers": "python_version >= '3.8'", + "version": "==3.16.2" } }, "develop": { @@ -1788,14 +1850,6 @@ "markers": "python_version >= '3.7'", "version": "==4.0.3" }, - "asynctest": { - "hashes": [ - "sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676", - "sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac" - ], - "markers": "python_version < '3.8'", - "version": "==0.13.0" - }, "attrs": { "hashes": [ "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", @@ -1818,19 +1872,19 @@ "s3" ], "hashes": [ - "sha256:2a62fe3ef41e10aeb55d80012591613be5cc5014601b6548bb4da2e533aefe1a", - "sha256:35504bf2b4f316a8d664e1d4c948eb208700ce00f9d5334bf75a02eeac8eff2f" + "sha256:30e5cf16811782c9fe885e539ca37af4756df768fdbedc8fae379f7f21c06bd5", + "sha256:ef721672f2a5e0a71e918e023719db808897d54b3cef65c4cd8a2a31e6cb9f62" ], "markers": "python_version >= '3.7'", - "version": "==1.28.44" + "version": "==1.28.47" }, "botocore-stubs": { "hashes": [ - "sha256:18ca8902e150d777d609485580bde7858a5b1078f4264cd21ac855c507cb970c", - "sha256:a1f9fe86d5b89e3e898466c803b8b8098a8f905535eb7043ff0946b564aebbca" + "sha256:4818b377b2a161458db5ee97c08ca38246b521e8f713ed593907a1c68a5157a8", + "sha256:d23977cc1b7a0f53b9f1ce3971ae974dc2e537976d1ebc10b1f922aae6b27bb0" ], "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==1.31.44" + "version": "==1.31.47" }, "certifi": { "hashes": [ @@ -1842,11 +1896,11 @@ }, "cfgv": { "hashes": [ - "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426", - "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736" + "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", + "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560" ], - "markers": "python_full_version >= '3.6.1'", - "version": "==3.3.1" + "markers": "python_version >= '3.8'", + "version": "==3.4.0" }, "charset-normalizer": { "hashes": [ @@ -2029,29 +2083,29 @@ }, "filelock": { "hashes": [ - "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81", - "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec" + "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4", + "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd" ], - "markers": "python_version >= '3.7'", - "version": "==3.12.2" + "markers": "python_version >= '3.8'", + "version": "==3.12.4" }, "flake8": { "hashes": [ - "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db", - "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248" + "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23", + "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5" ], "index": "pypi", - "markers": "python_full_version >= '3.6.1'", - "version": "==5.0.4" + "markers": "python_full_version >= '3.8.1'", + "version": "==6.1.0" }, "flake8-bugbear": { "hashes": [ - "sha256:beb5c7efcd7ccc2039ef66a77bb8db925e7be3531ff1cb4d0b7030d0e2113d72", - "sha256:e3e7f74c8a49ad3794a7183353026dabd68c74030d5f46571f84c1fb0eb79363" + "sha256:0ebdc7d8ec1ca8bd49347694562381f099f4de2f8ec6bda7a7dca65555d9e0d4", + "sha256:d99d005114020fbef47ed5e4aebafd22f167f9a0fbd0d8bf3c9e90612cb25c34" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==23.3.12" + "markers": "python_full_version >= '3.8.1'", + "version": "==23.7.10" }, "freezegun": { "hashes": [ @@ -2064,83 +2118,70 @@ }, "frozenlist": { "hashes": [ - "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", - "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", - "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", - "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", - "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", - "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", - "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", - "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", - "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", - "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", - "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", - "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", - "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", - "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", - "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", - "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", - "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", - "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", - "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", - "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", - "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", - "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", - "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", - "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", - "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", - "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", - "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", - "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", - "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", - "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", - "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", - "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", - "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", - "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", - "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", - "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", - "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", - "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", - "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", - "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", - "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", - "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", - "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", - "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", - "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", - "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", - "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", - "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", - "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", - "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", - "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", - "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", - "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", - "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", - "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", - "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", - "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", - "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", - "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", - "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", - "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", - "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", - "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", - "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", - "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", - "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", - "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", - "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", - "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", - "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", - "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", - "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", - "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", - "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" - ], - "markers": "python_version >= '3.7'", - "version": "==1.3.3" + "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6", + "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01", + "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251", + "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9", + "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b", + "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87", + "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf", + "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f", + "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0", + "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2", + "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b", + "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc", + "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c", + "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467", + "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9", + "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1", + "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a", + "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79", + "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167", + "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300", + "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf", + "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea", + "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2", + "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab", + "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3", + "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb", + "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087", + "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc", + "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8", + "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62", + "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f", + "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326", + "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c", + "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431", + "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963", + "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7", + "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef", + "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3", + "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956", + "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781", + "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472", + "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc", + "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839", + "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672", + "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3", + "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503", + "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d", + "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8", + "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b", + "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc", + "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f", + "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559", + "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b", + "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95", + "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb", + "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963", + "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919", + "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f", + "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3", + "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1", + "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e" + ], + "markers": "python_version >= '3.8'", + "version": "==1.4.0" }, "gitdb": { "hashes": [ @@ -2152,20 +2193,20 @@ }, "gitpython": { "hashes": [ - "sha256:9cbefbd1789a5fe9bcf621bb34d3f441f3a90c8461d377f84eda73e721d9b06b", - "sha256:c19b4292d7a1d3c0f653858db273ff8a6614100d1eb1528b014ec97286193c09" + "sha256:4bb0c2a6995e85064140d31a33289aa5dce80133a23d36fcd372d716c54d3ebf", + "sha256:8d22b5cfefd17c79914226982bb7851d6ade47545b1735a9d010a2a4c26d8388" ], "index": "pypi", "markers": "python_version >= '3.7'", - "version": "==3.1.35" + "version": "==3.1.36" }, "identify": { "hashes": [ - "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4", - "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d" + "sha256:87816de144bf46d161bd5b3e8f5596b16cade3b80be537087334b26bc5c177f3", + "sha256:94bb59643083ebd60dc996d043497479ee554381fbc5307763915cda49b0e78f" ], - "markers": "python_version >= '3.7'", - "version": "==2.5.24" + "markers": "python_version >= '3.8'", + "version": "==2.5.28" }, "idna": { "hashes": [ @@ -2175,22 +2216,13 @@ "markers": "python_version >= '3.5'", "version": "==3.4" }, - "importlib-metadata": { - "hashes": [ - "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116", - "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d" - ], - "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==4.13.0" - }, "importlib-resources": { "hashes": [ - "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6", - "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a" + "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf", + "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4" ], "markers": "python_version < '3.9'", - "version": "==5.12.0" + "version": "==6.0.1" }, "iniconfig": { "hashes": [ @@ -2202,20 +2234,28 @@ }, "jsonschema": { "hashes": [ - "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", - "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" + "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb", + "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==4.17.3" + "markers": "python_version >= '3.8'", + "version": "==4.19.0" + }, + "jsonschema-specifications": { + "hashes": [ + "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1", + "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb" + ], + "markers": "python_version >= '3.8'", + "version": "==2023.7.1" }, "markdown-it-py": { "hashes": [ - "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30", - "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1" + "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", + "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb" ], - "markers": "python_version >= '3.7'", - "version": "==2.2.0" + "markers": "python_version >= '3.8'", + "version": "==3.0.0" }, "mccabe": { "hashes": [ @@ -2324,36 +2364,37 @@ }, "mypy": { "hashes": [ - "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042", - "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd", - "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2", - "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01", - "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7", - "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3", - "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816", - "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3", - "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc", - "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4", - "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b", - "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8", - "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c", - "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462", - "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7", - "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc", - "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258", - "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b", - "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9", - "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6", - "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f", - "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1", - "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828", - "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878", - "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f", - "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b" - ], - "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==1.4.1" + "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315", + "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0", + "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373", + "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a", + "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161", + "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275", + "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693", + "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb", + "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65", + "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4", + "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb", + "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243", + "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14", + "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4", + "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1", + "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a", + "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160", + "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25", + "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12", + "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d", + "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92", + "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770", + "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2", + "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70", + "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb", + "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5", + "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==1.5.1" }, "mypy-boto3-s3": { "hashes": [ @@ -2414,44 +2455,44 @@ }, "platformdirs": { "hashes": [ - "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490", - "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2" + "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d", + "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d" ], "markers": "python_version >= '3.7'", - "version": "==2.6.2" + "version": "==3.10.0" }, "pluggy": { "hashes": [ - "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849", - "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3" + "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12", + "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" ], - "markers": "python_version >= '3.7'", - "version": "==1.2.0" + "markers": "python_version >= '3.8'", + "version": "==1.3.0" }, "pre-commit": { "hashes": [ - "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658", - "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad" + "sha256:6bbd5129a64cad4c0dfaeeb12cd8f7ea7e15b77028d985341478c8af3c759522", + "sha256:96d529a951f8b677f730a7212442027e8ba53f9b04d217c4c67dc56c393ad945" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==2.21.0" + "markers": "python_version >= '3.8'", + "version": "==3.4.0" }, "pycodestyle": { "hashes": [ - "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785", - "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b" + "sha256:259bcc17857d8a8b3b4a2327324b79e5f020a13c16074670f9c8c8f872ea76d0", + "sha256:5d1013ba8dc7895b548be5afb05740ca82454fd899971563d2ef625d090326f8" ], - "markers": "python_version >= '3.6'", - "version": "==2.9.1" + "markers": "python_version >= '3.8'", + "version": "==2.11.0" }, "pyflakes": { "hashes": [ - "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2", - "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3" + "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774", + "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc" ], - "markers": "python_version >= '3.6'", - "version": "==2.5.0" + "markers": "python_version >= '3.8'", + "version": "==3.1.0" }, "pygments": { "hashes": [ @@ -2461,39 +2502,6 @@ "markers": "python_version >= '3.7'", "version": "==2.16.1" }, - "pyrsistent": { - "hashes": [ - "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.7'", - "version": "==0.19.3" - }, "pytest": { "hashes": [ "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002", @@ -2604,6 +2612,14 @@ "markers": "python_version >= '3.6'", "version": "==6.0.1" }, + "referencing": { + "hashes": [ + "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf", + "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0" + ], + "markers": "python_version >= '3.8'", + "version": "==0.30.2" + }, "requests": { "hashes": [ "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", @@ -2630,13 +2646,116 @@ "markers": "python_full_version >= '3.7.0'", "version": "==13.5.2" }, + "rpds-py": { + "hashes": [ + "sha256:015de2ce2af1586ff5dc873e804434185199a15f7d96920ce67e50604592cae9", + "sha256:061c3ff1f51ecec256e916cf71cc01f9975af8fb3af9b94d3c0cc8702cfea637", + "sha256:08a80cf4884920863623a9ee9a285ee04cef57ebedc1cc87b3e3e0f24c8acfe5", + "sha256:09362f86ec201288d5687d1dc476b07bf39c08478cde837cb710b302864e7ec9", + "sha256:0bb4f48bd0dd18eebe826395e6a48b7331291078a879295bae4e5d053be50d4c", + "sha256:106af1653007cc569d5fbb5f08c6648a49fe4de74c2df814e234e282ebc06957", + "sha256:11fdd1192240dda8d6c5d18a06146e9045cb7e3ba7c06de6973000ff035df7c6", + "sha256:16a472300bc6c83fe4c2072cc22b3972f90d718d56f241adabc7ae509f53f154", + "sha256:176287bb998fd1e9846a9b666e240e58f8d3373e3bf87e7642f15af5405187b8", + "sha256:177914f81f66c86c012311f8c7f46887ec375cfcfd2a2f28233a3053ac93a569", + "sha256:177c9dd834cdf4dc39c27436ade6fdf9fe81484758885f2d616d5d03c0a83bd2", + "sha256:187700668c018a7e76e89424b7c1042f317c8df9161f00c0c903c82b0a8cac5c", + "sha256:1d9b5ee46dcb498fa3e46d4dfabcb531e1f2e76b477e0d99ef114f17bbd38453", + "sha256:22da15b902f9f8e267020d1c8bcfc4831ca646fecb60254f7bc71763569f56b1", + "sha256:24cd91a03543a0f8d09cb18d1cb27df80a84b5553d2bd94cba5979ef6af5c6e7", + "sha256:255f1a10ae39b52122cce26ce0781f7a616f502feecce9e616976f6a87992d6b", + "sha256:271c360fdc464fe6a75f13ea0c08ddf71a321f4c55fc20a3fe62ea3ef09df7d9", + "sha256:2ed83d53a8c5902ec48b90b2ac045e28e1698c0bea9441af9409fc844dc79496", + "sha256:2f3e1867dd574014253b4b8f01ba443b9c914e61d45f3674e452a915d6e929a3", + "sha256:35fbd23c1c8732cde7a94abe7fb071ec173c2f58c0bd0d7e5b669fdfc80a2c7b", + "sha256:37d0c59548ae56fae01c14998918d04ee0d5d3277363c10208eef8c4e2b68ed6", + "sha256:39d05e65f23a0fe897b6ac395f2a8d48c56ac0f583f5d663e0afec1da89b95da", + "sha256:3ad59efe24a4d54c2742929001f2d02803aafc15d6d781c21379e3f7f66ec842", + "sha256:3aed39db2f0ace76faa94f465d4234aac72e2f32b009f15da6492a561b3bbebd", + "sha256:3bbac1953c17252f9cc675bb19372444aadf0179b5df575ac4b56faaec9f6294", + "sha256:40bc802a696887b14c002edd43c18082cb7b6f9ee8b838239b03b56574d97f71", + "sha256:42f712b4668831c0cd85e0a5b5a308700fe068e37dcd24c0062904c4e372b093", + "sha256:448a66b8266de0b581246ca7cd6a73b8d98d15100fb7165974535fa3b577340e", + "sha256:485301ee56ce87a51ccb182a4b180d852c5cb2b3cb3a82f7d4714b4141119d8c", + "sha256:485747ee62da83366a44fbba963c5fe017860ad408ccd6cd99aa66ea80d32b2e", + "sha256:4cf0855a842c5b5c391dd32ca273b09e86abf8367572073bd1edfc52bc44446b", + "sha256:4eca20917a06d2fca7628ef3c8b94a8c358f6b43f1a621c9815243462dcccf97", + "sha256:4ed172d0c79f156c1b954e99c03bc2e3033c17efce8dd1a7c781bc4d5793dfac", + "sha256:5267cfda873ad62591b9332fd9472d2409f7cf02a34a9c9cb367e2c0255994bf", + "sha256:52b5cbc0469328e58180021138207e6ec91d7ca2e037d3549cc9e34e2187330a", + "sha256:53d7a3cd46cdc1689296348cb05ffd4f4280035770aee0c8ead3bbd4d6529acc", + "sha256:563646d74a4b4456d0cf3b714ca522e725243c603e8254ad85c3b59b7c0c4bf0", + "sha256:570cc326e78ff23dec7f41487aa9c3dffd02e5ee9ab43a8f6ccc3df8f9327623", + "sha256:5aca759ada6b1967fcfd4336dcf460d02a8a23e6abe06e90ea7881e5c22c4de6", + "sha256:5de11c041486681ce854c814844f4ce3282b6ea1656faae19208ebe09d31c5b8", + "sha256:5e271dd97c7bb8eefda5cca38cd0b0373a1fea50f71e8071376b46968582af9b", + "sha256:642ed0a209ced4be3a46f8cb094f2d76f1f479e2a1ceca6de6346a096cd3409d", + "sha256:6446002739ca29249f0beaaf067fcbc2b5aab4bc7ee8fb941bd194947ce19aff", + "sha256:691d50c99a937709ac4c4cd570d959a006bd6a6d970a484c84cc99543d4a5bbb", + "sha256:69b857a7d8bd4f5d6e0db4086da8c46309a26e8cefdfc778c0c5cc17d4b11e08", + "sha256:6ac3fefb0d168c7c6cab24fdfc80ec62cd2b4dfd9e65b84bdceb1cb01d385c33", + "sha256:6c9141af27a4e5819d74d67d227d5047a20fa3c7d4d9df43037a955b4c748ec5", + "sha256:7170cbde4070dc3c77dec82abf86f3b210633d4f89550fa0ad2d4b549a05572a", + "sha256:763ad59e105fca09705d9f9b29ecffb95ecdc3b0363be3bb56081b2c6de7977a", + "sha256:77076bdc8776a2b029e1e6ffbe6d7056e35f56f5e80d9dc0bad26ad4a024a762", + "sha256:7cd020b1fb41e3ab7716d4d2c3972d4588fdfbab9bfbbb64acc7078eccef8860", + "sha256:821392559d37759caa67d622d0d2994c7a3f2fb29274948ac799d496d92bca73", + "sha256:829e91f3a8574888b73e7a3feb3b1af698e717513597e23136ff4eba0bc8387a", + "sha256:850c272e0e0d1a5c5d73b1b7871b0a7c2446b304cec55ccdb3eaac0d792bb065", + "sha256:87d9b206b1bd7a0523375dc2020a6ce88bca5330682ae2fe25e86fd5d45cea9c", + "sha256:8bd01ff4032abaed03f2db702fa9a61078bee37add0bd884a6190b05e63b028c", + "sha256:8d54bbdf5d56e2c8cf81a1857250f3ea132de77af543d0ba5dce667183b61fec", + "sha256:8efaeb08ede95066da3a3e3c420fcc0a21693fcd0c4396d0585b019613d28515", + "sha256:8f94fdd756ba1f79f988855d948ae0bad9ddf44df296770d9a58c774cfbcca72", + "sha256:95cde244e7195b2c07ec9b73fa4c5026d4a27233451485caa1cd0c1b55f26dbd", + "sha256:975382d9aa90dc59253d6a83a5ca72e07f4ada3ae3d6c0575ced513db322b8ec", + "sha256:9dd9d9d9e898b9d30683bdd2b6c1849449158647d1049a125879cb397ee9cd12", + "sha256:a019a344312d0b1f429c00d49c3be62fa273d4a1094e1b224f403716b6d03be1", + "sha256:a4d9bfda3f84fc563868fe25ca160c8ff0e69bc4443c5647f960d59400ce6557", + "sha256:a657250807b6efd19b28f5922520ae002a54cb43c2401e6f3d0230c352564d25", + "sha256:a771417c9c06c56c9d53d11a5b084d1de75de82978e23c544270ab25e7c066ff", + "sha256:aad6ed9e70ddfb34d849b761fb243be58c735be6a9265b9060d6ddb77751e3e8", + "sha256:ae87137951bb3dc08c7d8bfb8988d8c119f3230731b08a71146e84aaa919a7a9", + "sha256:af247fd4f12cca4129c1b82090244ea5a9d5bb089e9a82feb5a2f7c6a9fe181d", + "sha256:b5d4bdd697195f3876d134101c40c7d06d46c6ab25159ed5cbd44105c715278a", + "sha256:b9255e7165083de7c1d605e818025e8860636348f34a79d84ec533546064f07e", + "sha256:c22211c165166de6683de8136229721f3d5c8606cc2c3d1562da9a3a5058049c", + "sha256:c55f9821f88e8bee4b7a72c82cfb5ecd22b6aad04033334f33c329b29bfa4da0", + "sha256:c7aed97f2e676561416c927b063802c8a6285e9b55e1b83213dfd99a8f4f9e48", + "sha256:cd2163f42868865597d89399a01aa33b7594ce8e2c4a28503127c81a2f17784e", + "sha256:ce5e7504db95b76fc89055c7f41e367eaadef5b1d059e27e1d6eabf2b55ca314", + "sha256:cff7351c251c7546407827b6a37bcef6416304fc54d12d44dbfecbb717064717", + "sha256:d27aa6bbc1f33be920bb7adbb95581452cdf23005d5611b29a12bb6a3468cc95", + "sha256:d3b52a67ac66a3a64a7e710ba629f62d1e26ca0504c29ee8cbd99b97df7079a8", + "sha256:de61e424062173b4f70eec07e12469edde7e17fa180019a2a0d75c13a5c5dc57", + "sha256:e10e6a1ed2b8661201e79dff5531f8ad4cdd83548a0f81c95cf79b3184b20c33", + "sha256:e1a0ffc39f51aa5f5c22114a8f1906b3c17eba68c5babb86c5f77d8b1bba14d1", + "sha256:e22491d25f97199fc3581ad8dd8ce198d8c8fdb8dae80dea3512e1ce6d5fa99f", + "sha256:e626b864725680cd3904414d72e7b0bd81c0e5b2b53a5b30b4273034253bb41f", + "sha256:e8c71ea77536149e36c4c784f6d420ffd20bea041e3ba21ed021cb40ce58e2c9", + "sha256:e8d0f0eca087630d58b8c662085529781fd5dc80f0a54eda42d5c9029f812599", + "sha256:ea65b59882d5fa8c74a23f8960db579e5e341534934f43f3b18ec1839b893e41", + "sha256:ea93163472db26ac6043e8f7f93a05d9b59e0505c760da2a3cd22c7dd7111391", + "sha256:eab75a8569a095f2ad470b342f2751d9902f7944704f0571c8af46bede438475", + "sha256:ed8313809571a5463fd7db43aaca68ecb43ca7a58f5b23b6e6c6c5d02bdc7882", + "sha256:ef5fddfb264e89c435be4adb3953cef5d2936fdeb4463b4161a6ba2f22e7b740", + "sha256:ef750a20de1b65657a1425f77c525b0183eac63fe7b8f5ac0dd16f3668d3e64f", + "sha256:efb9ece97e696bb56e31166a9dd7919f8f0c6b31967b454718c6509f29ef6fee", + "sha256:f4c179a7aeae10ddf44c6bac87938134c1379c49c884529f090f9bf05566c836", + "sha256:f602881d80ee4228a2355c68da6b296a296cd22bbb91e5418d54577bbf17fa7c", + "sha256:fc2200e79d75b5238c8d69f6a30f8284290c777039d331e7340b6c17cad24a5a", + "sha256:fcc1ebb7561a3e24a6588f7c6ded15d80aec22c66a070c757559b57b17ffd1cb" + ], + "markers": "python_version >= '3.8'", + "version": "==0.10.3" + }, "setuptools": { "hashes": [ - "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f", - "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235" + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" ], - "markers": "python_version >= '3.7'", - "version": "==68.0.0" + "markers": "python_version >= '3.8'", + "version": "==68.2.2" }, "six": { "hashes": [ @@ -2656,11 +2775,11 @@ }, "stevedore": { "hashes": [ - "sha256:cf99f41fc0d5a4f185ca4d3d42b03be9011b0a1ec1a4ea1a282be1b4b306dcc2", - "sha256:fa2630e3d0ad3e22d4914aff2501445815b9a4467a6edc49387c667a38faf5bf" + "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d", + "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c" ], - "markers": "python_version >= '3.6'", - "version": "==3.5.2" + "markers": "python_version >= '3.8'", + "version": "==5.1.0" }, "toml": { "hashes": [ @@ -2678,53 +2797,6 @@ "markers": "python_version < '3.11'", "version": "==2.0.1" }, - "typed-ast": { - "hashes": [ - "sha256:042eb665ff6bf020dd2243307d11ed626306b82812aba21836096d229fdc6a10", - "sha256:045f9930a1550d9352464e5149710d56a2aed23a2ffe78946478f7b5416f1ede", - "sha256:0635900d16ae133cab3b26c607586131269f88266954eb04ec31535c9a12ef1e", - "sha256:118c1ce46ce58fda78503eae14b7664163aa735b620b64b5b725453696f2a35c", - "sha256:16f7313e0a08c7de57f2998c85e2a69a642e97cb32f87eb65fbfe88381a5e44d", - "sha256:1efebbbf4604ad1283e963e8915daa240cb4bf5067053cf2f0baadc4d4fb51b8", - "sha256:2188bc33d85951ea4ddad55d2b35598b2709d122c11c75cffd529fbc9965508e", - "sha256:2b946ef8c04f77230489f75b4b5a4a6f24c078be4aed241cfabe9cbf4156e7e5", - "sha256:335f22ccb244da2b5c296e6f96b06ee9bed46526db0de38d2f0e5a6597b81155", - "sha256:381eed9c95484ceef5ced626355fdc0765ab51d8553fec08661dce654a935db4", - "sha256:429ae404f69dc94b9361bb62291885894b7c6fb4640d561179548c849f8492ba", - "sha256:44f214394fc1af23ca6d4e9e744804d890045d1643dd7e8229951e0ef39429b5", - "sha256:48074261a842acf825af1968cd912f6f21357316080ebaca5f19abbb11690c8a", - "sha256:4bc1efe0ce3ffb74784e06460f01a223ac1f6ab31c6bc0376a21184bf5aabe3b", - "sha256:57bfc3cf35a0f2fdf0a88a3044aafaec1d2f24d8ae8cd87c4f58d615fb5b6311", - "sha256:597fc66b4162f959ee6a96b978c0435bd63791e31e4f410622d19f1686d5e769", - "sha256:5f7a8c46a8b333f71abd61d7ab9255440d4a588f34a21f126bbfc95f6049e686", - "sha256:5fe83a9a44c4ce67c796a1b466c270c1272e176603d5e06f6afbc101a572859d", - "sha256:61443214d9b4c660dcf4b5307f15c12cb30bdfe9588ce6158f4a005baeb167b2", - "sha256:622e4a006472b05cf6ef7f9f2636edc51bda670b7bbffa18d26b255269d3d814", - "sha256:6eb936d107e4d474940469e8ec5b380c9b329b5f08b78282d46baeebd3692dc9", - "sha256:7f58fabdde8dcbe764cef5e1a7fcb440f2463c1bbbec1cf2a86ca7bc1f95184b", - "sha256:83509f9324011c9a39faaef0922c6f720f9623afe3fe220b6d0b15638247206b", - "sha256:8c524eb3024edcc04e288db9541fe1f438f82d281e591c548903d5b77ad1ddd4", - "sha256:94282f7a354f36ef5dbce0ef3467ebf6a258e370ab33d5b40c249fa996e590dd", - "sha256:b445c2abfecab89a932b20bd8261488d574591173d07827c1eda32c457358b18", - "sha256:be4919b808efa61101456e87f2d4c75b228f4e52618621c77f1ddcaae15904fa", - "sha256:bfd39a41c0ef6f31684daff53befddae608f9daf6957140228a08e51f312d7e6", - "sha256:c631da9710271cb67b08bd3f3813b7af7f4c69c319b75475436fcab8c3d21bee", - "sha256:cc95ffaaab2be3b25eb938779e43f513e0e538a84dd14a5d844b8f2932593d88", - "sha256:d09d930c2d1d621f717bb217bf1fe2584616febb5138d9b3e8cdd26506c3f6d4", - "sha256:d40c10326893ecab8a80a53039164a224984339b2c32a6baf55ecbd5b1df6431", - "sha256:d41b7a686ce653e06c2609075d397ebd5b969d821b9797d029fccd71fdec8e04", - "sha256:d5c0c112a74c0e5db2c75882a0adf3133adedcdbfd8cf7c9d6ed77365ab90a1d", - "sha256:e1a976ed4cc2d71bb073e1b2a250892a6e968ff02aa14c1f40eba4f365ffec02", - "sha256:e48bf27022897577d8479eaed64701ecaf0467182448bd95759883300ca818c8", - "sha256:ed4a1a42df8a3dfb6b40c3d2de109e935949f2f66b19703eafade03173f8f437", - "sha256:f0aefdd66f1784c58f65b502b6cf8b121544680456d1cebbd300c2c813899274", - "sha256:fc2b8c4e1bc5cd96c1a823a885e6b158f8451cf6f5530e1829390b4d27d0807f", - "sha256:fd946abf3c31fb50eee07451a6aedbfff912fcd13cf357363f5b4e834cc5e71a", - "sha256:fe58ef6a764de7b4b36edfc8592641f56e69b7163bba9f9c8089838ee596bfb2" - ], - "markers": "python_version < '3.8'", - "version": "==1.5.5" - }, "types-awscrt": { "hashes": [ "sha256:61833aa140e724a9098025610f4b8cde3dcf65b842631d7447378f9f5db4e1fd", @@ -2840,11 +2912,11 @@ }, "virtualenv": { "hashes": [ - "sha256:0ef5be6d07181946891f5abc8047fda8bc2f0b4b9bf222c64e6e8963baee76db", - "sha256:635b272a8e2f77cb051946f46c60a54ace3cb5e25568228bd6b57fc70eca9ff3" + "sha256:b80039f280f4919c77b30f1c23294ae357c4c8701042086e3fc005963e4e537b", + "sha256:e8361967f6da6fbdf1426483bfe9fca8287c242ac0bc30429905721cefbff752" ], - "markers": "python_version >= '3.6'", - "version": "==20.16.2" + "markers": "python_version >= '3.7'", + "version": "==20.24.5" }, "yarl": { "hashes": [ @@ -2929,11 +3001,11 @@ }, "zipp": { "hashes": [ - "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", - "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" + "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0", + "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147" ], - "markers": "python_version >= '3.7'", - "version": "==3.15.0" + "markers": "python_version >= '3.8'", + "version": "==3.16.2" } } } From 7b7982689b724708067678708e9247265b592492 Mon Sep 17 00:00:00 2001 From: lirshindalman Date: Thu, 14 Sep 2023 09:39:17 +0300 Subject: [PATCH 3/5] . --- Pipfile | 2 +- Pipfile.lock | 967 +++++++++++++++++++++++---------------------------- 2 files changed, 430 insertions(+), 539 deletions(-) diff --git a/Pipfile b/Pipfile index d9157e49b58..0d8d47c62df 100644 --- a/Pipfile +++ b/Pipfile @@ -92,4 +92,4 @@ license-expression = "*" rustworkx = "*" [requires] -python_version = "3.8" +python_version = "3.7" diff --git a/Pipfile.lock b/Pipfile.lock index 78d35af49c5..62ef06d8149 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "a4b0f4a578e3780d3bc73303958d713386c1986b295a3db052491a47d4b354e8" + "sha256": "8bdba01ac3002e586bae0f00bf5701f115ce9498b7b171273af6a9838b5fc0ca" }, "pipfile-spec": 6, "requires": { - "python_version": "3.8" + "python_version": "3.7" }, "sources": [ { @@ -152,6 +152,14 @@ "markers": "python_version >= '3.7'", "version": "==4.0.3" }, + "asynctest": { + "hashes": [ + "sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676", + "sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac" + ], + "markers": "python_version < '3.8'", + "version": "==0.13.0" + }, "attrs": { "hashes": [ "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", @@ -189,11 +197,11 @@ }, "beartype": { "hashes": [ - "sha256:2af6a8d8a7267ccf7d271e1a3bd908afbc025d2a09aa51123567d7d7b37438df", - "sha256:52cd2edea72fdd84e4e7f8011a9e3007bf0125c3d6d7219e937b9d8868169177" + "sha256:0f70fccdb8eb6d7ddfaa3ffe3a0b66cf2edeb13452bd71ad46615775c2fa34f6", + "sha256:23df4715d19cebb2ce60e53c3cf44cd925843f00c71938222d777ea6332de3cb" ], - "markers": "python_full_version >= '3.8.0'", - "version": "==0.15.0" + "markers": "python_full_version >= '3.7.0'", + "version": "==0.14.1" }, "beautifulsoup4": { "hashes": [ @@ -508,70 +516,83 @@ }, "frozenlist": { "hashes": [ - "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6", - "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01", - "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251", - "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9", - "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b", - "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87", - "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf", - "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f", - "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0", - "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2", - "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b", - "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc", - "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c", - "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467", - "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9", - "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1", - "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a", - "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79", - "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167", - "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300", - "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf", - "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea", - "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2", - "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab", - "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3", - "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb", - "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087", - "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc", - "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8", - "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62", - "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f", - "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326", - "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c", - "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431", - "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963", - "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7", - "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef", - "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3", - "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956", - "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781", - "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472", - "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc", - "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839", - "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672", - "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3", - "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503", - "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d", - "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8", - "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b", - "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc", - "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f", - "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559", - "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b", - "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95", - "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb", - "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963", - "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919", - "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f", - "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3", - "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1", - "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e" - ], - "markers": "python_version >= '3.8'", - "version": "==1.4.0" + "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", + "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", + "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", + "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", + "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", + "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", + "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", + "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", + "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", + "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", + "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", + "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", + "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", + "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", + "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", + "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", + "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", + "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", + "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", + "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", + "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", + "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", + "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", + "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", + "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", + "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", + "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", + "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", + "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", + "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", + "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", + "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", + "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", + "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", + "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", + "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", + "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", + "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", + "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", + "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", + "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", + "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", + "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", + "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", + "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", + "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", + "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", + "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", + "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", + "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", + "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", + "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", + "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", + "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", + "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", + "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", + "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", + "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", + "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", + "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", + "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", + "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", + "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", + "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", + "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", + "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", + "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", + "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", + "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", + "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", + "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", + "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", + "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", + "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.3" }, "gitdb": { "hashes": [ @@ -657,20 +678,20 @@ }, "importlib-metadata": { "hashes": [ - "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb", - "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" + "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116", + "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==6.8.0" + "markers": "python_version >= '3.7'", + "version": "==4.13.0" }, "importlib-resources": { "hashes": [ - "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf", - "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4" + "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6", + "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a" ], "markers": "python_version < '3.9'", - "version": "==6.0.1" + "version": "==5.12.0" }, "isodate": { "hashes": [ @@ -698,20 +719,12 @@ }, "jsonschema": { "hashes": [ - "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb", - "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f" + "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", + "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==4.19.0" - }, - "jsonschema-specifications": { - "hashes": [ - "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1", - "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb" - ], - "markers": "python_version >= '3.8'", - "version": "==2023.7.1" + "markers": "python_version >= '3.7'", + "version": "==4.17.3" }, "junit-xml": { "hashes": [ @@ -901,40 +914,6 @@ "markers": "python_version >= '3.7'", "version": "==2.6.3" }, - "numpy": { - "hashes": [ - "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f", - "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61", - "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7", - "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400", - "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef", - "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2", - "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d", - "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc", - "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835", - "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706", - "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5", - "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4", - "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6", - "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", - "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a", - "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f", - "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e", - "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e", - "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694", - "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8", - "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64", - "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d", - "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc", - "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254", - "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2", - "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1", - "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810", - "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9" - ], - "markers": "python_version >= '3.8'", - "version": "==1.24.4" - }, "openai": { "hashes": [ "sha256:417b78c4c2864ba696aedaf1ccff77be1f04a581ab1739f0a56e0aae19e5a794", @@ -996,12 +975,12 @@ }, "prettytable": { "hashes": [ - "sha256:a71292ab7769a5de274b146b276ce938786f56c31cf7cea88b6f3775d82fe8c8", - "sha256:f4ed94803c23073a90620b201965e5dc0bccf1760b7a7eaf3158cab8aaffdf34" + "sha256:ef8334ee40b7ec721651fc4d37ecc7bb2ef55fde5098d994438f0dfdaa385c0c", + "sha256:f4aaf2ed6e6062a82fd2e6e5289bbbe705ec2788fe401a3a1f62a1cea55526d2" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==3.9.0" + "markers": "python_version >= '3.7'", + "version": "==3.7.0" }, "pycares": { "hashes": [ @@ -1084,6 +1063,39 @@ "markers": "python_full_version >= '3.6.8'", "version": "==3.1.1" }, + "pyrsistent": { + "hashes": [ + "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.7'", + "version": "==0.19.3" + }, "pyston": { "hashes": [ "sha256:30caaee3b58d92817efa2cd4f32c24289dd5f4ddf9b5b4ec5b62ed564230ca8a", @@ -1195,19 +1207,11 @@ }, "rdflib": { "hashes": [ - "sha256:0438920912a642c866a513de6fe8a0001bd86ef975057d6962c79ce4771687cd", - "sha256:9995eb8569428059b8c1affd26b25eac510d64f5043d9ce8c84e0d0036e995ae" + "sha256:36b4e74a32aa1e4fa7b8719876fb192f19ecd45ff932ea5ebbd2e417a0247e63", + "sha256:72af591ff704f4caacea7ecc0c5a9056b8553e0489dd4f35a9bc52dbd41522e0" ], - "markers": "python_full_version >= '3.8.1' and python_full_version < '4.0.0'", - "version": "==7.0.0" - }, - "referencing": { - "hashes": [ - "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf", - "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0" - ], - "markers": "python_version >= '3.8'", - "version": "==0.30.2" + "markers": "python_version >= '3.7' and python_version < '4.0'", + "version": "==6.3.2" }, "regex": { "hashes": [ @@ -1312,109 +1316,6 @@ "markers": "python_version >= '3.7'", "version": "==2.31.0" }, - "rpds-py": { - "hashes": [ - "sha256:015de2ce2af1586ff5dc873e804434185199a15f7d96920ce67e50604592cae9", - "sha256:061c3ff1f51ecec256e916cf71cc01f9975af8fb3af9b94d3c0cc8702cfea637", - "sha256:08a80cf4884920863623a9ee9a285ee04cef57ebedc1cc87b3e3e0f24c8acfe5", - "sha256:09362f86ec201288d5687d1dc476b07bf39c08478cde837cb710b302864e7ec9", - "sha256:0bb4f48bd0dd18eebe826395e6a48b7331291078a879295bae4e5d053be50d4c", - "sha256:106af1653007cc569d5fbb5f08c6648a49fe4de74c2df814e234e282ebc06957", - "sha256:11fdd1192240dda8d6c5d18a06146e9045cb7e3ba7c06de6973000ff035df7c6", - "sha256:16a472300bc6c83fe4c2072cc22b3972f90d718d56f241adabc7ae509f53f154", - "sha256:176287bb998fd1e9846a9b666e240e58f8d3373e3bf87e7642f15af5405187b8", - "sha256:177914f81f66c86c012311f8c7f46887ec375cfcfd2a2f28233a3053ac93a569", - "sha256:177c9dd834cdf4dc39c27436ade6fdf9fe81484758885f2d616d5d03c0a83bd2", - "sha256:187700668c018a7e76e89424b7c1042f317c8df9161f00c0c903c82b0a8cac5c", - "sha256:1d9b5ee46dcb498fa3e46d4dfabcb531e1f2e76b477e0d99ef114f17bbd38453", - "sha256:22da15b902f9f8e267020d1c8bcfc4831ca646fecb60254f7bc71763569f56b1", - "sha256:24cd91a03543a0f8d09cb18d1cb27df80a84b5553d2bd94cba5979ef6af5c6e7", - "sha256:255f1a10ae39b52122cce26ce0781f7a616f502feecce9e616976f6a87992d6b", - "sha256:271c360fdc464fe6a75f13ea0c08ddf71a321f4c55fc20a3fe62ea3ef09df7d9", - "sha256:2ed83d53a8c5902ec48b90b2ac045e28e1698c0bea9441af9409fc844dc79496", - "sha256:2f3e1867dd574014253b4b8f01ba443b9c914e61d45f3674e452a915d6e929a3", - "sha256:35fbd23c1c8732cde7a94abe7fb071ec173c2f58c0bd0d7e5b669fdfc80a2c7b", - "sha256:37d0c59548ae56fae01c14998918d04ee0d5d3277363c10208eef8c4e2b68ed6", - "sha256:39d05e65f23a0fe897b6ac395f2a8d48c56ac0f583f5d663e0afec1da89b95da", - "sha256:3ad59efe24a4d54c2742929001f2d02803aafc15d6d781c21379e3f7f66ec842", - "sha256:3aed39db2f0ace76faa94f465d4234aac72e2f32b009f15da6492a561b3bbebd", - "sha256:3bbac1953c17252f9cc675bb19372444aadf0179b5df575ac4b56faaec9f6294", - "sha256:40bc802a696887b14c002edd43c18082cb7b6f9ee8b838239b03b56574d97f71", - "sha256:42f712b4668831c0cd85e0a5b5a308700fe068e37dcd24c0062904c4e372b093", - "sha256:448a66b8266de0b581246ca7cd6a73b8d98d15100fb7165974535fa3b577340e", - "sha256:485301ee56ce87a51ccb182a4b180d852c5cb2b3cb3a82f7d4714b4141119d8c", - "sha256:485747ee62da83366a44fbba963c5fe017860ad408ccd6cd99aa66ea80d32b2e", - "sha256:4cf0855a842c5b5c391dd32ca273b09e86abf8367572073bd1edfc52bc44446b", - "sha256:4eca20917a06d2fca7628ef3c8b94a8c358f6b43f1a621c9815243462dcccf97", - "sha256:4ed172d0c79f156c1b954e99c03bc2e3033c17efce8dd1a7c781bc4d5793dfac", - "sha256:5267cfda873ad62591b9332fd9472d2409f7cf02a34a9c9cb367e2c0255994bf", - "sha256:52b5cbc0469328e58180021138207e6ec91d7ca2e037d3549cc9e34e2187330a", - "sha256:53d7a3cd46cdc1689296348cb05ffd4f4280035770aee0c8ead3bbd4d6529acc", - "sha256:563646d74a4b4456d0cf3b714ca522e725243c603e8254ad85c3b59b7c0c4bf0", - "sha256:570cc326e78ff23dec7f41487aa9c3dffd02e5ee9ab43a8f6ccc3df8f9327623", - "sha256:5aca759ada6b1967fcfd4336dcf460d02a8a23e6abe06e90ea7881e5c22c4de6", - "sha256:5de11c041486681ce854c814844f4ce3282b6ea1656faae19208ebe09d31c5b8", - "sha256:5e271dd97c7bb8eefda5cca38cd0b0373a1fea50f71e8071376b46968582af9b", - "sha256:642ed0a209ced4be3a46f8cb094f2d76f1f479e2a1ceca6de6346a096cd3409d", - "sha256:6446002739ca29249f0beaaf067fcbc2b5aab4bc7ee8fb941bd194947ce19aff", - "sha256:691d50c99a937709ac4c4cd570d959a006bd6a6d970a484c84cc99543d4a5bbb", - "sha256:69b857a7d8bd4f5d6e0db4086da8c46309a26e8cefdfc778c0c5cc17d4b11e08", - "sha256:6ac3fefb0d168c7c6cab24fdfc80ec62cd2b4dfd9e65b84bdceb1cb01d385c33", - "sha256:6c9141af27a4e5819d74d67d227d5047a20fa3c7d4d9df43037a955b4c748ec5", - "sha256:7170cbde4070dc3c77dec82abf86f3b210633d4f89550fa0ad2d4b549a05572a", - "sha256:763ad59e105fca09705d9f9b29ecffb95ecdc3b0363be3bb56081b2c6de7977a", - "sha256:77076bdc8776a2b029e1e6ffbe6d7056e35f56f5e80d9dc0bad26ad4a024a762", - "sha256:7cd020b1fb41e3ab7716d4d2c3972d4588fdfbab9bfbbb64acc7078eccef8860", - "sha256:821392559d37759caa67d622d0d2994c7a3f2fb29274948ac799d496d92bca73", - "sha256:829e91f3a8574888b73e7a3feb3b1af698e717513597e23136ff4eba0bc8387a", - "sha256:850c272e0e0d1a5c5d73b1b7871b0a7c2446b304cec55ccdb3eaac0d792bb065", - "sha256:87d9b206b1bd7a0523375dc2020a6ce88bca5330682ae2fe25e86fd5d45cea9c", - "sha256:8bd01ff4032abaed03f2db702fa9a61078bee37add0bd884a6190b05e63b028c", - "sha256:8d54bbdf5d56e2c8cf81a1857250f3ea132de77af543d0ba5dce667183b61fec", - "sha256:8efaeb08ede95066da3a3e3c420fcc0a21693fcd0c4396d0585b019613d28515", - "sha256:8f94fdd756ba1f79f988855d948ae0bad9ddf44df296770d9a58c774cfbcca72", - "sha256:95cde244e7195b2c07ec9b73fa4c5026d4a27233451485caa1cd0c1b55f26dbd", - "sha256:975382d9aa90dc59253d6a83a5ca72e07f4ada3ae3d6c0575ced513db322b8ec", - "sha256:9dd9d9d9e898b9d30683bdd2b6c1849449158647d1049a125879cb397ee9cd12", - "sha256:a019a344312d0b1f429c00d49c3be62fa273d4a1094e1b224f403716b6d03be1", - "sha256:a4d9bfda3f84fc563868fe25ca160c8ff0e69bc4443c5647f960d59400ce6557", - "sha256:a657250807b6efd19b28f5922520ae002a54cb43c2401e6f3d0230c352564d25", - "sha256:a771417c9c06c56c9d53d11a5b084d1de75de82978e23c544270ab25e7c066ff", - "sha256:aad6ed9e70ddfb34d849b761fb243be58c735be6a9265b9060d6ddb77751e3e8", - "sha256:ae87137951bb3dc08c7d8bfb8988d8c119f3230731b08a71146e84aaa919a7a9", - "sha256:af247fd4f12cca4129c1b82090244ea5a9d5bb089e9a82feb5a2f7c6a9fe181d", - "sha256:b5d4bdd697195f3876d134101c40c7d06d46c6ab25159ed5cbd44105c715278a", - "sha256:b9255e7165083de7c1d605e818025e8860636348f34a79d84ec533546064f07e", - "sha256:c22211c165166de6683de8136229721f3d5c8606cc2c3d1562da9a3a5058049c", - "sha256:c55f9821f88e8bee4b7a72c82cfb5ecd22b6aad04033334f33c329b29bfa4da0", - "sha256:c7aed97f2e676561416c927b063802c8a6285e9b55e1b83213dfd99a8f4f9e48", - "sha256:cd2163f42868865597d89399a01aa33b7594ce8e2c4a28503127c81a2f17784e", - "sha256:ce5e7504db95b76fc89055c7f41e367eaadef5b1d059e27e1d6eabf2b55ca314", - "sha256:cff7351c251c7546407827b6a37bcef6416304fc54d12d44dbfecbb717064717", - "sha256:d27aa6bbc1f33be920bb7adbb95581452cdf23005d5611b29a12bb6a3468cc95", - "sha256:d3b52a67ac66a3a64a7e710ba629f62d1e26ca0504c29ee8cbd99b97df7079a8", - "sha256:de61e424062173b4f70eec07e12469edde7e17fa180019a2a0d75c13a5c5dc57", - "sha256:e10e6a1ed2b8661201e79dff5531f8ad4cdd83548a0f81c95cf79b3184b20c33", - "sha256:e1a0ffc39f51aa5f5c22114a8f1906b3c17eba68c5babb86c5f77d8b1bba14d1", - "sha256:e22491d25f97199fc3581ad8dd8ce198d8c8fdb8dae80dea3512e1ce6d5fa99f", - "sha256:e626b864725680cd3904414d72e7b0bd81c0e5b2b53a5b30b4273034253bb41f", - "sha256:e8c71ea77536149e36c4c784f6d420ffd20bea041e3ba21ed021cb40ce58e2c9", - "sha256:e8d0f0eca087630d58b8c662085529781fd5dc80f0a54eda42d5c9029f812599", - "sha256:ea65b59882d5fa8c74a23f8960db579e5e341534934f43f3b18ec1839b893e41", - "sha256:ea93163472db26ac6043e8f7f93a05d9b59e0505c760da2a3cd22c7dd7111391", - "sha256:eab75a8569a095f2ad470b342f2751d9902f7944704f0571c8af46bede438475", - "sha256:ed8313809571a5463fd7db43aaca68ecb43ca7a58f5b23b6e6c6c5d02bdc7882", - "sha256:ef5fddfb264e89c435be4adb3953cef5d2936fdeb4463b4161a6ba2f22e7b740", - "sha256:ef750a20de1b65657a1425f77c525b0183eac63fe7b8f5ac0dd16f3668d3e64f", - "sha256:efb9ece97e696bb56e31166a9dd7919f8f0c6b31967b454718c6509f29ef6fee", - "sha256:f4c179a7aeae10ddf44c6bac87938134c1379c49c884529f090f9bf05566c836", - "sha256:f602881d80ee4228a2355c68da6b296a296cd22bbb91e5418d54577bbf17fa7c", - "sha256:fc2200e79d75b5238c8d69f6a30f8284290c777039d331e7340b6c17cad24a5a", - "sha256:fcc1ebb7561a3e24a6588f7c6ded15d80aec22c66a070c757559b57b17ffd1cb" - ], - "markers": "python_version >= '3.8'", - "version": "==0.10.3" - }, "rustworkx": { "hashes": [ "sha256:030203b24c5742e3f3425266cc7d12f82223d97900a5beacdcd18c35383df318", @@ -1490,11 +1391,11 @@ }, "setuptools": { "hashes": [ - "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", - "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" + "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f", + "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235" ], - "markers": "python_version >= '3.8'", - "version": "==68.2.2" + "markers": "python_version >= '3.7'", + "version": "==68.0.0" }, "six": { "hashes": [ @@ -1521,11 +1422,11 @@ }, "soupsieve": { "hashes": [ - "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690", - "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7" + "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8", + "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea" ], - "markers": "python_version >= '3.8'", - "version": "==2.5" + "markers": "python_version >= '3.7'", + "version": "==2.4.1" }, "spdx-tools": { "hashes": [ @@ -1627,11 +1528,11 @@ }, "websocket-client": { "hashes": [ - "sha256:3aad25d31284266bcfcfd1fd8a743f63282305a364b8d0948a43bd606acc652f", - "sha256:6cfc30d051ebabb73a5fa246efdcc14c8fbebbd0330f8984ac3bb6d9edd2ad03" + "sha256:c951af98631d24f8df89ab1019fc365f2227c0892f12fd150e935607c79dd0dd", + "sha256:f1f9f2ad5291f0225a49efad77abf9e700b6fef553900623060dad6e26503b9d" ], - "markers": "python_version >= '3.8'", - "version": "==1.6.3" + "markers": "python_version >= '3.7'", + "version": "==1.6.1" }, "xmltodict": { "hashes": [ @@ -1724,11 +1625,11 @@ }, "zipp": { "hashes": [ - "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0", - "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147" + "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", + "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" ], - "markers": "python_version >= '3.8'", - "version": "==3.16.2" + "markers": "python_version >= '3.7'", + "version": "==3.15.0" } }, "develop": { @@ -1850,6 +1751,14 @@ "markers": "python_version >= '3.7'", "version": "==4.0.3" }, + "asynctest": { + "hashes": [ + "sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676", + "sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac" + ], + "markers": "python_version < '3.8'", + "version": "==0.13.0" + }, "attrs": { "hashes": [ "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", @@ -1896,11 +1805,11 @@ }, "cfgv": { "hashes": [ - "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", - "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560" + "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426", + "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736" ], - "markers": "python_version >= '3.8'", - "version": "==3.4.0" + "markers": "python_full_version >= '3.6.1'", + "version": "==3.3.1" }, "charset-normalizer": { "hashes": [ @@ -2083,29 +1992,29 @@ }, "filelock": { "hashes": [ - "sha256:08c21d87ded6e2b9da6728c3dff51baf1dcecf973b768ef35bcbc3447edb9ad4", - "sha256:2e6f249f1f3654291606e046b09f1fd5eac39b360664c27f5aad072012f8bcbd" + "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81", + "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec" ], - "markers": "python_version >= '3.8'", - "version": "==3.12.4" + "markers": "python_version >= '3.7'", + "version": "==3.12.2" }, "flake8": { "hashes": [ - "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23", - "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5" + "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db", + "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248" ], "index": "pypi", - "markers": "python_full_version >= '3.8.1'", - "version": "==6.1.0" + "markers": "python_full_version >= '3.6.1'", + "version": "==5.0.4" }, "flake8-bugbear": { "hashes": [ - "sha256:0ebdc7d8ec1ca8bd49347694562381f099f4de2f8ec6bda7a7dca65555d9e0d4", - "sha256:d99d005114020fbef47ed5e4aebafd22f167f9a0fbd0d8bf3c9e90612cb25c34" + "sha256:beb5c7efcd7ccc2039ef66a77bb8db925e7be3531ff1cb4d0b7030d0e2113d72", + "sha256:e3e7f74c8a49ad3794a7183353026dabd68c74030d5f46571f84c1fb0eb79363" ], "index": "pypi", - "markers": "python_full_version >= '3.8.1'", - "version": "==23.7.10" + "markers": "python_version >= '3.7'", + "version": "==23.3.12" }, "freezegun": { "hashes": [ @@ -2118,70 +2027,83 @@ }, "frozenlist": { "hashes": [ - "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6", - "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01", - "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251", - "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9", - "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b", - "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87", - "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf", - "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f", - "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0", - "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2", - "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b", - "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc", - "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c", - "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467", - "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9", - "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1", - "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a", - "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79", - "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167", - "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300", - "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf", - "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea", - "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2", - "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab", - "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3", - "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb", - "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087", - "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc", - "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8", - "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62", - "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f", - "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326", - "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c", - "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431", - "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963", - "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7", - "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef", - "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3", - "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956", - "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781", - "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472", - "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc", - "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839", - "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672", - "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3", - "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503", - "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d", - "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8", - "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b", - "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc", - "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f", - "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559", - "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b", - "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95", - "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb", - "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963", - "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919", - "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f", - "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3", - "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1", - "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e" - ], - "markers": "python_version >= '3.8'", - "version": "==1.4.0" + "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", + "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", + "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", + "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", + "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", + "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", + "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", + "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", + "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", + "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", + "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", + "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", + "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", + "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", + "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", + "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", + "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", + "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", + "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", + "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", + "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", + "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", + "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", + "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", + "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", + "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", + "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", + "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", + "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", + "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", + "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", + "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", + "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", + "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", + "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", + "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", + "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", + "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", + "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", + "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", + "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", + "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", + "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", + "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", + "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", + "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", + "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", + "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", + "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", + "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", + "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", + "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", + "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", + "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", + "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", + "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", + "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", + "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", + "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", + "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", + "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", + "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", + "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", + "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", + "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", + "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", + "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", + "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", + "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", + "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", + "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", + "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", + "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", + "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.3" }, "gitdb": { "hashes": [ @@ -2202,11 +2124,11 @@ }, "identify": { "hashes": [ - "sha256:87816de144bf46d161bd5b3e8f5596b16cade3b80be537087334b26bc5c177f3", - "sha256:94bb59643083ebd60dc996d043497479ee554381fbc5307763915cda49b0e78f" + "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4", + "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d" ], - "markers": "python_version >= '3.8'", - "version": "==2.5.28" + "markers": "python_version >= '3.7'", + "version": "==2.5.24" }, "idna": { "hashes": [ @@ -2216,13 +2138,22 @@ "markers": "python_version >= '3.5'", "version": "==3.4" }, + "importlib-metadata": { + "hashes": [ + "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116", + "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==4.13.0" + }, "importlib-resources": { "hashes": [ - "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf", - "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4" + "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6", + "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a" ], "markers": "python_version < '3.9'", - "version": "==6.0.1" + "version": "==5.12.0" }, "iniconfig": { "hashes": [ @@ -2234,28 +2165,20 @@ }, "jsonschema": { "hashes": [ - "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb", - "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f" + "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", + "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==4.19.0" - }, - "jsonschema-specifications": { - "hashes": [ - "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1", - "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb" - ], - "markers": "python_version >= '3.8'", - "version": "==2023.7.1" + "markers": "python_version >= '3.7'", + "version": "==4.17.3" }, "markdown-it-py": { "hashes": [ - "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", - "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb" + "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30", + "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1" ], - "markers": "python_version >= '3.8'", - "version": "==3.0.0" + "markers": "python_version >= '3.7'", + "version": "==2.2.0" }, "mccabe": { "hashes": [ @@ -2364,37 +2287,36 @@ }, "mypy": { "hashes": [ - "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315", - "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0", - "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373", - "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a", - "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161", - "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275", - "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693", - "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb", - "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65", - "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4", - "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb", - "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243", - "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14", - "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4", - "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1", - "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a", - "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160", - "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25", - "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12", - "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d", - "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92", - "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770", - "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2", - "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70", - "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb", - "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5", - "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f" - ], - "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==1.5.1" + "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042", + "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd", + "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2", + "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01", + "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7", + "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3", + "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816", + "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3", + "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc", + "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4", + "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b", + "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8", + "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c", + "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462", + "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7", + "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc", + "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258", + "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b", + "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9", + "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6", + "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f", + "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1", + "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828", + "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878", + "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f", + "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==1.4.1" }, "mypy-boto3-s3": { "hashes": [ @@ -2455,44 +2377,44 @@ }, "platformdirs": { "hashes": [ - "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d", - "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d" + "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490", + "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2" ], "markers": "python_version >= '3.7'", - "version": "==3.10.0" + "version": "==2.6.2" }, "pluggy": { "hashes": [ - "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12", - "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7" + "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849", + "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3" ], - "markers": "python_version >= '3.8'", - "version": "==1.3.0" + "markers": "python_version >= '3.7'", + "version": "==1.2.0" }, "pre-commit": { "hashes": [ - "sha256:6bbd5129a64cad4c0dfaeeb12cd8f7ea7e15b77028d985341478c8af3c759522", - "sha256:96d529a951f8b677f730a7212442027e8ba53f9b04d217c4c67dc56c393ad945" + "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658", + "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==3.4.0" + "markers": "python_version >= '3.7'", + "version": "==2.21.0" }, "pycodestyle": { "hashes": [ - "sha256:259bcc17857d8a8b3b4a2327324b79e5f020a13c16074670f9c8c8f872ea76d0", - "sha256:5d1013ba8dc7895b548be5afb05740ca82454fd899971563d2ef625d090326f8" + "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785", + "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b" ], - "markers": "python_version >= '3.8'", - "version": "==2.11.0" + "markers": "python_version >= '3.6'", + "version": "==2.9.1" }, "pyflakes": { "hashes": [ - "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774", - "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc" + "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2", + "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3" ], - "markers": "python_version >= '3.8'", - "version": "==3.1.0" + "markers": "python_version >= '3.6'", + "version": "==2.5.0" }, "pygments": { "hashes": [ @@ -2502,6 +2424,39 @@ "markers": "python_version >= '3.7'", "version": "==2.16.1" }, + "pyrsistent": { + "hashes": [ + "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.7'", + "version": "==0.19.3" + }, "pytest": { "hashes": [ "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002", @@ -2612,14 +2567,6 @@ "markers": "python_version >= '3.6'", "version": "==6.0.1" }, - "referencing": { - "hashes": [ - "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf", - "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0" - ], - "markers": "python_version >= '3.8'", - "version": "==0.30.2" - }, "requests": { "hashes": [ "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", @@ -2646,116 +2593,13 @@ "markers": "python_full_version >= '3.7.0'", "version": "==13.5.2" }, - "rpds-py": { - "hashes": [ - "sha256:015de2ce2af1586ff5dc873e804434185199a15f7d96920ce67e50604592cae9", - "sha256:061c3ff1f51ecec256e916cf71cc01f9975af8fb3af9b94d3c0cc8702cfea637", - "sha256:08a80cf4884920863623a9ee9a285ee04cef57ebedc1cc87b3e3e0f24c8acfe5", - "sha256:09362f86ec201288d5687d1dc476b07bf39c08478cde837cb710b302864e7ec9", - "sha256:0bb4f48bd0dd18eebe826395e6a48b7331291078a879295bae4e5d053be50d4c", - "sha256:106af1653007cc569d5fbb5f08c6648a49fe4de74c2df814e234e282ebc06957", - "sha256:11fdd1192240dda8d6c5d18a06146e9045cb7e3ba7c06de6973000ff035df7c6", - "sha256:16a472300bc6c83fe4c2072cc22b3972f90d718d56f241adabc7ae509f53f154", - "sha256:176287bb998fd1e9846a9b666e240e58f8d3373e3bf87e7642f15af5405187b8", - "sha256:177914f81f66c86c012311f8c7f46887ec375cfcfd2a2f28233a3053ac93a569", - "sha256:177c9dd834cdf4dc39c27436ade6fdf9fe81484758885f2d616d5d03c0a83bd2", - "sha256:187700668c018a7e76e89424b7c1042f317c8df9161f00c0c903c82b0a8cac5c", - "sha256:1d9b5ee46dcb498fa3e46d4dfabcb531e1f2e76b477e0d99ef114f17bbd38453", - "sha256:22da15b902f9f8e267020d1c8bcfc4831ca646fecb60254f7bc71763569f56b1", - "sha256:24cd91a03543a0f8d09cb18d1cb27df80a84b5553d2bd94cba5979ef6af5c6e7", - "sha256:255f1a10ae39b52122cce26ce0781f7a616f502feecce9e616976f6a87992d6b", - "sha256:271c360fdc464fe6a75f13ea0c08ddf71a321f4c55fc20a3fe62ea3ef09df7d9", - "sha256:2ed83d53a8c5902ec48b90b2ac045e28e1698c0bea9441af9409fc844dc79496", - "sha256:2f3e1867dd574014253b4b8f01ba443b9c914e61d45f3674e452a915d6e929a3", - "sha256:35fbd23c1c8732cde7a94abe7fb071ec173c2f58c0bd0d7e5b669fdfc80a2c7b", - "sha256:37d0c59548ae56fae01c14998918d04ee0d5d3277363c10208eef8c4e2b68ed6", - "sha256:39d05e65f23a0fe897b6ac395f2a8d48c56ac0f583f5d663e0afec1da89b95da", - "sha256:3ad59efe24a4d54c2742929001f2d02803aafc15d6d781c21379e3f7f66ec842", - "sha256:3aed39db2f0ace76faa94f465d4234aac72e2f32b009f15da6492a561b3bbebd", - "sha256:3bbac1953c17252f9cc675bb19372444aadf0179b5df575ac4b56faaec9f6294", - "sha256:40bc802a696887b14c002edd43c18082cb7b6f9ee8b838239b03b56574d97f71", - "sha256:42f712b4668831c0cd85e0a5b5a308700fe068e37dcd24c0062904c4e372b093", - "sha256:448a66b8266de0b581246ca7cd6a73b8d98d15100fb7165974535fa3b577340e", - "sha256:485301ee56ce87a51ccb182a4b180d852c5cb2b3cb3a82f7d4714b4141119d8c", - "sha256:485747ee62da83366a44fbba963c5fe017860ad408ccd6cd99aa66ea80d32b2e", - "sha256:4cf0855a842c5b5c391dd32ca273b09e86abf8367572073bd1edfc52bc44446b", - "sha256:4eca20917a06d2fca7628ef3c8b94a8c358f6b43f1a621c9815243462dcccf97", - "sha256:4ed172d0c79f156c1b954e99c03bc2e3033c17efce8dd1a7c781bc4d5793dfac", - "sha256:5267cfda873ad62591b9332fd9472d2409f7cf02a34a9c9cb367e2c0255994bf", - "sha256:52b5cbc0469328e58180021138207e6ec91d7ca2e037d3549cc9e34e2187330a", - "sha256:53d7a3cd46cdc1689296348cb05ffd4f4280035770aee0c8ead3bbd4d6529acc", - "sha256:563646d74a4b4456d0cf3b714ca522e725243c603e8254ad85c3b59b7c0c4bf0", - "sha256:570cc326e78ff23dec7f41487aa9c3dffd02e5ee9ab43a8f6ccc3df8f9327623", - "sha256:5aca759ada6b1967fcfd4336dcf460d02a8a23e6abe06e90ea7881e5c22c4de6", - "sha256:5de11c041486681ce854c814844f4ce3282b6ea1656faae19208ebe09d31c5b8", - "sha256:5e271dd97c7bb8eefda5cca38cd0b0373a1fea50f71e8071376b46968582af9b", - "sha256:642ed0a209ced4be3a46f8cb094f2d76f1f479e2a1ceca6de6346a096cd3409d", - "sha256:6446002739ca29249f0beaaf067fcbc2b5aab4bc7ee8fb941bd194947ce19aff", - "sha256:691d50c99a937709ac4c4cd570d959a006bd6a6d970a484c84cc99543d4a5bbb", - "sha256:69b857a7d8bd4f5d6e0db4086da8c46309a26e8cefdfc778c0c5cc17d4b11e08", - "sha256:6ac3fefb0d168c7c6cab24fdfc80ec62cd2b4dfd9e65b84bdceb1cb01d385c33", - "sha256:6c9141af27a4e5819d74d67d227d5047a20fa3c7d4d9df43037a955b4c748ec5", - "sha256:7170cbde4070dc3c77dec82abf86f3b210633d4f89550fa0ad2d4b549a05572a", - "sha256:763ad59e105fca09705d9f9b29ecffb95ecdc3b0363be3bb56081b2c6de7977a", - "sha256:77076bdc8776a2b029e1e6ffbe6d7056e35f56f5e80d9dc0bad26ad4a024a762", - "sha256:7cd020b1fb41e3ab7716d4d2c3972d4588fdfbab9bfbbb64acc7078eccef8860", - "sha256:821392559d37759caa67d622d0d2994c7a3f2fb29274948ac799d496d92bca73", - "sha256:829e91f3a8574888b73e7a3feb3b1af698e717513597e23136ff4eba0bc8387a", - "sha256:850c272e0e0d1a5c5d73b1b7871b0a7c2446b304cec55ccdb3eaac0d792bb065", - "sha256:87d9b206b1bd7a0523375dc2020a6ce88bca5330682ae2fe25e86fd5d45cea9c", - "sha256:8bd01ff4032abaed03f2db702fa9a61078bee37add0bd884a6190b05e63b028c", - "sha256:8d54bbdf5d56e2c8cf81a1857250f3ea132de77af543d0ba5dce667183b61fec", - "sha256:8efaeb08ede95066da3a3e3c420fcc0a21693fcd0c4396d0585b019613d28515", - "sha256:8f94fdd756ba1f79f988855d948ae0bad9ddf44df296770d9a58c774cfbcca72", - "sha256:95cde244e7195b2c07ec9b73fa4c5026d4a27233451485caa1cd0c1b55f26dbd", - "sha256:975382d9aa90dc59253d6a83a5ca72e07f4ada3ae3d6c0575ced513db322b8ec", - "sha256:9dd9d9d9e898b9d30683bdd2b6c1849449158647d1049a125879cb397ee9cd12", - "sha256:a019a344312d0b1f429c00d49c3be62fa273d4a1094e1b224f403716b6d03be1", - "sha256:a4d9bfda3f84fc563868fe25ca160c8ff0e69bc4443c5647f960d59400ce6557", - "sha256:a657250807b6efd19b28f5922520ae002a54cb43c2401e6f3d0230c352564d25", - "sha256:a771417c9c06c56c9d53d11a5b084d1de75de82978e23c544270ab25e7c066ff", - "sha256:aad6ed9e70ddfb34d849b761fb243be58c735be6a9265b9060d6ddb77751e3e8", - "sha256:ae87137951bb3dc08c7d8bfb8988d8c119f3230731b08a71146e84aaa919a7a9", - "sha256:af247fd4f12cca4129c1b82090244ea5a9d5bb089e9a82feb5a2f7c6a9fe181d", - "sha256:b5d4bdd697195f3876d134101c40c7d06d46c6ab25159ed5cbd44105c715278a", - "sha256:b9255e7165083de7c1d605e818025e8860636348f34a79d84ec533546064f07e", - "sha256:c22211c165166de6683de8136229721f3d5c8606cc2c3d1562da9a3a5058049c", - "sha256:c55f9821f88e8bee4b7a72c82cfb5ecd22b6aad04033334f33c329b29bfa4da0", - "sha256:c7aed97f2e676561416c927b063802c8a6285e9b55e1b83213dfd99a8f4f9e48", - "sha256:cd2163f42868865597d89399a01aa33b7594ce8e2c4a28503127c81a2f17784e", - "sha256:ce5e7504db95b76fc89055c7f41e367eaadef5b1d059e27e1d6eabf2b55ca314", - "sha256:cff7351c251c7546407827b6a37bcef6416304fc54d12d44dbfecbb717064717", - "sha256:d27aa6bbc1f33be920bb7adbb95581452cdf23005d5611b29a12bb6a3468cc95", - "sha256:d3b52a67ac66a3a64a7e710ba629f62d1e26ca0504c29ee8cbd99b97df7079a8", - "sha256:de61e424062173b4f70eec07e12469edde7e17fa180019a2a0d75c13a5c5dc57", - "sha256:e10e6a1ed2b8661201e79dff5531f8ad4cdd83548a0f81c95cf79b3184b20c33", - "sha256:e1a0ffc39f51aa5f5c22114a8f1906b3c17eba68c5babb86c5f77d8b1bba14d1", - "sha256:e22491d25f97199fc3581ad8dd8ce198d8c8fdb8dae80dea3512e1ce6d5fa99f", - "sha256:e626b864725680cd3904414d72e7b0bd81c0e5b2b53a5b30b4273034253bb41f", - "sha256:e8c71ea77536149e36c4c784f6d420ffd20bea041e3ba21ed021cb40ce58e2c9", - "sha256:e8d0f0eca087630d58b8c662085529781fd5dc80f0a54eda42d5c9029f812599", - "sha256:ea65b59882d5fa8c74a23f8960db579e5e341534934f43f3b18ec1839b893e41", - "sha256:ea93163472db26ac6043e8f7f93a05d9b59e0505c760da2a3cd22c7dd7111391", - "sha256:eab75a8569a095f2ad470b342f2751d9902f7944704f0571c8af46bede438475", - "sha256:ed8313809571a5463fd7db43aaca68ecb43ca7a58f5b23b6e6c6c5d02bdc7882", - "sha256:ef5fddfb264e89c435be4adb3953cef5d2936fdeb4463b4161a6ba2f22e7b740", - "sha256:ef750a20de1b65657a1425f77c525b0183eac63fe7b8f5ac0dd16f3668d3e64f", - "sha256:efb9ece97e696bb56e31166a9dd7919f8f0c6b31967b454718c6509f29ef6fee", - "sha256:f4c179a7aeae10ddf44c6bac87938134c1379c49c884529f090f9bf05566c836", - "sha256:f602881d80ee4228a2355c68da6b296a296cd22bbb91e5418d54577bbf17fa7c", - "sha256:fc2200e79d75b5238c8d69f6a30f8284290c777039d331e7340b6c17cad24a5a", - "sha256:fcc1ebb7561a3e24a6588f7c6ded15d80aec22c66a070c757559b57b17ffd1cb" - ], - "markers": "python_version >= '3.8'", - "version": "==0.10.3" - }, "setuptools": { "hashes": [ - "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", - "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" + "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f", + "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235" ], - "markers": "python_version >= '3.8'", - "version": "==68.2.2" + "markers": "python_version >= '3.7'", + "version": "==68.0.0" }, "six": { "hashes": [ @@ -2775,11 +2619,11 @@ }, "stevedore": { "hashes": [ - "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d", - "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c" + "sha256:cf99f41fc0d5a4f185ca4d3d42b03be9011b0a1ec1a4ea1a282be1b4b306dcc2", + "sha256:fa2630e3d0ad3e22d4914aff2501445815b9a4467a6edc49387c667a38faf5bf" ], - "markers": "python_version >= '3.8'", - "version": "==5.1.0" + "markers": "python_version >= '3.6'", + "version": "==3.5.2" }, "toml": { "hashes": [ @@ -2797,6 +2641,53 @@ "markers": "python_version < '3.11'", "version": "==2.0.1" }, + "typed-ast": { + "hashes": [ + "sha256:042eb665ff6bf020dd2243307d11ed626306b82812aba21836096d229fdc6a10", + "sha256:045f9930a1550d9352464e5149710d56a2aed23a2ffe78946478f7b5416f1ede", + "sha256:0635900d16ae133cab3b26c607586131269f88266954eb04ec31535c9a12ef1e", + "sha256:118c1ce46ce58fda78503eae14b7664163aa735b620b64b5b725453696f2a35c", + "sha256:16f7313e0a08c7de57f2998c85e2a69a642e97cb32f87eb65fbfe88381a5e44d", + "sha256:1efebbbf4604ad1283e963e8915daa240cb4bf5067053cf2f0baadc4d4fb51b8", + "sha256:2188bc33d85951ea4ddad55d2b35598b2709d122c11c75cffd529fbc9965508e", + "sha256:2b946ef8c04f77230489f75b4b5a4a6f24c078be4aed241cfabe9cbf4156e7e5", + "sha256:335f22ccb244da2b5c296e6f96b06ee9bed46526db0de38d2f0e5a6597b81155", + "sha256:381eed9c95484ceef5ced626355fdc0765ab51d8553fec08661dce654a935db4", + "sha256:429ae404f69dc94b9361bb62291885894b7c6fb4640d561179548c849f8492ba", + "sha256:44f214394fc1af23ca6d4e9e744804d890045d1643dd7e8229951e0ef39429b5", + "sha256:48074261a842acf825af1968cd912f6f21357316080ebaca5f19abbb11690c8a", + "sha256:4bc1efe0ce3ffb74784e06460f01a223ac1f6ab31c6bc0376a21184bf5aabe3b", + "sha256:57bfc3cf35a0f2fdf0a88a3044aafaec1d2f24d8ae8cd87c4f58d615fb5b6311", + "sha256:597fc66b4162f959ee6a96b978c0435bd63791e31e4f410622d19f1686d5e769", + "sha256:5f7a8c46a8b333f71abd61d7ab9255440d4a588f34a21f126bbfc95f6049e686", + "sha256:5fe83a9a44c4ce67c796a1b466c270c1272e176603d5e06f6afbc101a572859d", + "sha256:61443214d9b4c660dcf4b5307f15c12cb30bdfe9588ce6158f4a005baeb167b2", + "sha256:622e4a006472b05cf6ef7f9f2636edc51bda670b7bbffa18d26b255269d3d814", + "sha256:6eb936d107e4d474940469e8ec5b380c9b329b5f08b78282d46baeebd3692dc9", + "sha256:7f58fabdde8dcbe764cef5e1a7fcb440f2463c1bbbec1cf2a86ca7bc1f95184b", + "sha256:83509f9324011c9a39faaef0922c6f720f9623afe3fe220b6d0b15638247206b", + "sha256:8c524eb3024edcc04e288db9541fe1f438f82d281e591c548903d5b77ad1ddd4", + "sha256:94282f7a354f36ef5dbce0ef3467ebf6a258e370ab33d5b40c249fa996e590dd", + "sha256:b445c2abfecab89a932b20bd8261488d574591173d07827c1eda32c457358b18", + "sha256:be4919b808efa61101456e87f2d4c75b228f4e52618621c77f1ddcaae15904fa", + "sha256:bfd39a41c0ef6f31684daff53befddae608f9daf6957140228a08e51f312d7e6", + "sha256:c631da9710271cb67b08bd3f3813b7af7f4c69c319b75475436fcab8c3d21bee", + "sha256:cc95ffaaab2be3b25eb938779e43f513e0e538a84dd14a5d844b8f2932593d88", + "sha256:d09d930c2d1d621f717bb217bf1fe2584616febb5138d9b3e8cdd26506c3f6d4", + "sha256:d40c10326893ecab8a80a53039164a224984339b2c32a6baf55ecbd5b1df6431", + "sha256:d41b7a686ce653e06c2609075d397ebd5b969d821b9797d029fccd71fdec8e04", + "sha256:d5c0c112a74c0e5db2c75882a0adf3133adedcdbfd8cf7c9d6ed77365ab90a1d", + "sha256:e1a976ed4cc2d71bb073e1b2a250892a6e968ff02aa14c1f40eba4f365ffec02", + "sha256:e48bf27022897577d8479eaed64701ecaf0467182448bd95759883300ca818c8", + "sha256:ed4a1a42df8a3dfb6b40c3d2de109e935949f2f66b19703eafade03173f8f437", + "sha256:f0aefdd66f1784c58f65b502b6cf8b121544680456d1cebbd300c2c813899274", + "sha256:fc2b8c4e1bc5cd96c1a823a885e6b158f8451cf6f5530e1829390b4d27d0807f", + "sha256:fd946abf3c31fb50eee07451a6aedbfff912fcd13cf357363f5b4e834cc5e71a", + "sha256:fe58ef6a764de7b4b36edfc8592641f56e69b7163bba9f9c8089838ee596bfb2" + ], + "markers": "python_version < '3.8'", + "version": "==1.5.5" + }, "types-awscrt": { "hashes": [ "sha256:61833aa140e724a9098025610f4b8cde3dcf65b842631d7447378f9f5db4e1fd", @@ -2912,11 +2803,11 @@ }, "virtualenv": { "hashes": [ - "sha256:b80039f280f4919c77b30f1c23294ae357c4c8701042086e3fc005963e4e537b", - "sha256:e8361967f6da6fbdf1426483bfe9fca8287c242ac0bc30429905721cefbff752" + "sha256:0ef5be6d07181946891f5abc8047fda8bc2f0b4b9bf222c64e6e8963baee76db", + "sha256:635b272a8e2f77cb051946f46c60a54ace3cb5e25568228bd6b57fc70eca9ff3" ], - "markers": "python_version >= '3.7'", - "version": "==20.24.5" + "markers": "python_version >= '3.6'", + "version": "==20.16.2" }, "yarl": { "hashes": [ @@ -3001,11 +2892,11 @@ }, "zipp": { "hashes": [ - "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0", - "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147" + "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", + "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" ], - "markers": "python_version >= '3.8'", - "version": "==3.16.2" + "markers": "python_version >= '3.7'", + "version": "==3.15.0" } } } From c869da520721908f4d7258450bdbd5566e37c886 Mon Sep 17 00:00:00 2001 From: lirshindalman Date: Thu, 14 Sep 2023 11:09:07 +0300 Subject: [PATCH 4/5] . --- Pipfile.lock | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/Pipfile.lock b/Pipfile.lock index 62ef06d8149..edc1fd1ad36 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -914,6 +914,43 @@ "markers": "python_version >= '3.7'", "version": "==2.6.3" }, + "numpy": { + "hashes": [ + "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac", + "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3", + "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6", + "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1", + "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a", + "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b", + "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470", + "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1", + "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab", + "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46", + "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673", + "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7", + "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db", + "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e", + "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786", + "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552", + "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25", + "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6", + "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2", + "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a", + "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf", + "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f", + "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c", + "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4", + "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b", + "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0", + "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3", + "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656", + "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0", + "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb", + "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e" + ], + "markers": "python_version < '3.11' and python_version >= '3.7'", + "version": "==1.21.6" + }, "openai": { "hashes": [ "sha256:417b78c4c2864ba696aedaf1ccff77be1f04a581ab1739f0a56e0aae19e5a794", From 4efbb11617e966c372dd8faf9317711a604ddffc Mon Sep 17 00:00:00 2001 From: Barak Fatal Date: Tue, 26 Sep 2023 10:33:05 +0300 Subject: [PATCH 5/5] Relocked pipfile with python3.8 --- Pipfile.lock | 160 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 123 insertions(+), 37 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index da9f8597c97..9207728b851 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -115,6 +115,7 @@ "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.8.5" }, "aiomultiprocess": { @@ -123,6 +124,7 @@ "sha256:3036c4c881cfbc63674686e036097f22309017c6bf96b04722a542ac9cac7423" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==0.9.0" }, "aiosignal": { @@ -139,6 +141,7 @@ "sha256:d97c036d12a752d1079f190bc1521c545b941fda89ad85d15afa909b4d1b9a99" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.1.2" }, "async-timeout": { @@ -163,6 +166,7 @@ "sha256:99fd6a7e5033ea3a4532d3ccc11b3f669c447da0109e0cb9d66998f4131dba0c" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.4.30" }, "bc-jsonpath-ng": { @@ -171,6 +175,7 @@ "sha256:5e72d78887521469f8a52966f6f0664ec3d59dcb2cebf85b8131867a241c84ec" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.5.9" }, "bc-python-hcl2": { @@ -179,6 +184,7 @@ "sha256:ab72880dd58689a4ee9a47f229788311a2b4d607fe034a819a40a63dab432644" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.3.51" }, "beartype": { @@ -210,6 +216,7 @@ "sha256:3cb2aee317a1b8686e3b23674e4099b8ff7451bd8acc61b9719acff86fa024d1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.28.54" }, "botocore": { @@ -233,6 +240,7 @@ "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==5.3.1" }, "certifi": { @@ -391,6 +399,7 @@ "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" ], "index": "pypi", + "markers": "python_full_version >= '3.7.0'", "version": "==3.2.0" }, "click": { @@ -399,6 +408,7 @@ "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==8.1.7" }, "click-option-group": { @@ -415,6 +425,7 @@ "sha256:afa27770d97720dc4bddb3c11f50bd287f1ab1fdd908538e896e23c70a0d9c5f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==0.6.1" }, "colorama": { @@ -423,6 +434,7 @@ "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": { @@ -431,6 +443,7 @@ "sha256:e7067471884de5478c58a511e529f0f9bd1c66bfef1dea90935438d6c23306d1" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==1.7" }, "contextlib2": { @@ -447,6 +460,7 @@ "sha256:8981ca462fba91469c268d684a03f72c89c7a807674d884f83a28d8c2822a9b6" ], "index": "pypi", + "markers": "python_version >= '3.6' and python_version < '4.0'", "version": "==3.1.5" }, "decorator": { @@ -471,6 +485,7 @@ "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==6.1.3" }, "dockerfile-parse": { @@ -479,6 +494,7 @@ "sha256:bdffd126d2eb26acf1066acb54cb2e336682e1d72b974a40894fac76a4df17f6" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==2.0.1" }, "dpath": { @@ -487,6 +503,7 @@ "sha256:d9560e03ccd83b3c6f29988b0162ce9b34fd28b9d8dbda46663b20c68d9cdae3" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.1.3" }, "frozenlist": { @@ -570,6 +587,7 @@ "sha256:f9b9ddc0761c125d5780eab2d64be4873fc6817c2899cbcb34b02344bdc7bc54" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.1.37" }, "idna": { @@ -634,6 +652,7 @@ "sha256:fc4021242f00adb150e759692da065bddef5af22afea387cd5a726461946b93b" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.10.8" }, "importlib-metadata": { @@ -642,8 +661,17 @@ "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==6.8.0" }, + "importlib-resources": { + "hashes": [ + "sha256:9d48dcccc213325e810fd723e7fbb45ccb39f6cf5c31f00cf2b965f5f10f3cb9", + "sha256:aa50258bbfa56d4e33fbd8aa3ef48ded10d1735f11532b8df95388cc6bdb7e83" + ], + "markers": "python_version < '3.9'", + "version": "==6.1.0" + }, "isodate": { "hashes": [ "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96", @@ -665,6 +693,7 @@ "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.0.1" }, "jsonschema": { @@ -673,6 +702,7 @@ "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==4.19.1" }, "jsonschema-specifications": { @@ -705,6 +735,7 @@ "sha256:8d7e5e2de0d04fc104a4f952c440e8f08a5ba63480a0dad015b294770b7e58ec" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==30.1.1" }, "markdown": { @@ -867,45 +898,42 @@ "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.6.3" }, "numpy": { "hashes": [ - "sha256:020cdbee66ed46b671429c7265cf00d8ac91c046901c55684954c3958525dab2", - "sha256:0621f7daf973d34d18b4e4bafb210bbaf1ef5e0100b5fa750bd9cde84c7ac292", - "sha256:0792824ce2f7ea0c82ed2e4fecc29bb86bee0567a080dacaf2e0a01fe7654369", - "sha256:09aaee96c2cbdea95de76ecb8a586cb687d281c881f5f17bfc0fb7f5890f6b91", - "sha256:166b36197e9debc4e384e9c652ba60c0bacc216d0fc89e78f973a9760b503388", - "sha256:186ba67fad3c60dbe8a3abff3b67a91351100f2661c8e2a80364ae6279720299", - "sha256:306545e234503a24fe9ae95ebf84d25cba1fdc27db971aa2d9f1ab6bba19a9dd", - "sha256:436c8e9a4bdeeee84e3e59614d38c3dbd3235838a877af8c211cfcac8a80b8d3", - "sha256:4a873a8180479bc829313e8d9798d5234dfacfc2e8a7ac188418189bb8eafbd2", - "sha256:4acc65dd65da28060e206c8f27a573455ed724e6179941edb19f97e58161bb69", - "sha256:51be5f8c349fdd1a5568e72713a21f518e7d6707bcf8503b528b88d33b57dc68", - "sha256:546b7dd7e22f3c6861463bebb000646fa730e55df5ee4a0224408b5694cc6148", - "sha256:5671338034b820c8d58c81ad1dafc0ed5a00771a82fccc71d6438df00302094b", - "sha256:637c58b468a69869258b8ae26f4a4c6ff8abffd4a8334c830ffb63e0feefe99a", - "sha256:767254ad364991ccfc4d81b8152912e53e103ec192d1bb4ea6b1f5a7117040be", - "sha256:7d484292eaeb3e84a51432a94f53578689ffdea3f90e10c8b203a99be5af57d8", - "sha256:7f6bad22a791226d0a5c7c27a80a20e11cfe09ad5ef9084d4d3fc4a299cca505", - "sha256:86f737708b366c36b76e953c46ba5827d8c27b7a8c9d0f471810728e5a2fe57c", - "sha256:8c6adc33561bd1d46f81131d5352348350fc23df4d742bb246cdfca606ea1208", - "sha256:914b28d3215e0c721dc75db3ad6d62f51f630cb0c277e6b3bcb39519bed10bd8", - "sha256:b44e6a09afc12952a7d2a58ca0a2429ee0d49a4f89d83a0a11052da696440e49", - "sha256:bb0d9a1aaf5f1cb7967320e80690a1d7ff69f1d47ebc5a9bea013e3a21faec95", - "sha256:c0b45c8b65b79337dee5134d038346d30e109e9e2e9d43464a2970e5c0e93229", - "sha256:c2e698cb0c6dda9372ea98a0344245ee65bdc1c9dd939cceed6bb91256837896", - "sha256:c78a22e95182fb2e7874712433eaa610478a3caf86f28c621708d35fa4fd6e7f", - "sha256:e062aa24638bb5018b7841977c360d2f5917268d125c833a686b7cbabbec496c", - "sha256:e5e18e5b14a7560d8acf1c596688f4dfd19b4f2945b245a71e5af4ddb7422feb", - "sha256:eae430ecf5794cb7ae7fa3808740b015aa80747e5266153128ef055975a72b99", - "sha256:ee84ca3c58fe48b8ddafdeb1db87388dce2c3c3f701bf447b05e4cfcc3679112", - "sha256:f042f66d0b4ae6d48e70e28d487376204d3cbf43b84c03bac57e28dac6151581", - "sha256:f8db2f125746e44dce707dd44d4f4efeea8d7e2b43aace3f8d1f235cfa2733dd", - "sha256:f93fc78fe8bf15afe2b8d6b6499f1c73953169fad1e9a8dd086cdff3190e7fdf" - ], - "markers": "python_version < '3.13' and python_version >= '3.9'", - "version": "==1.26.0" + "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f", + "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61", + "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7", + "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400", + "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef", + "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2", + "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d", + "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc", + "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835", + "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706", + "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5", + "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4", + "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6", + "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463", + "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a", + "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f", + "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e", + "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e", + "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694", + "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8", + "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64", + "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d", + "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc", + "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254", + "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2", + "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1", + "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810", + "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9" + ], + "markers": "python_version >= '3.8'", + "version": "==1.24.4" }, "openai": { "hashes": [ @@ -913,6 +941,7 @@ "sha256:d18690f9e3d31eedb66b57b88c2165d760b24ea0a01f150dd3f068155088ce68" ], "index": "pypi", + "markers": "python_full_version >= '3.7.1'", "version": "==0.28.1" }, "packageurl-python": { @@ -921,6 +950,7 @@ "sha256:799acfe8d9e6e3534bbc19660be97d5b66754bc033e62c39f1e2f16323fcfa84" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.11.2" }, "packaging": { @@ -929,8 +959,17 @@ "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==23.1" }, + "pkgutil-resolve-name": { + "hashes": [ + "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174", + "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e" + ], + "markers": "python_version < '3.9'", + "version": "==1.3.10" + }, "ply": { "hashes": [ "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", @@ -952,6 +991,7 @@ "sha256:7920896195af163230635f1a5cee0958f56003ef8c421f805ec81f134f80a57c" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.5.1.20230817" }, "prettytable": { @@ -960,6 +1000,7 @@ "sha256:f4ed94803c23073a90620b201965e5dc0bccf1760b7a7eaf3158cab8aaffdf34" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==3.9.0" }, "pycares": { @@ -1025,6 +1066,7 @@ "sha256:a3edd1c3d280c283d614c865a854a693daf56c35cd4095b373016c214baa76dd" ], "index": "pypi", + "markers": "python_version >= '3.7' and python_version < '4.0'", "version": "==0.4.1" }, "pycparser": { @@ -1060,6 +1102,7 @@ "sha256:eb1f88d0594edc40b7d7fc4880e0aef33a69c97b4af0b14c91e8b5f4847ac618", "sha256:f983b89f0f79ee527f2cadf167bc8c72b3e1c40574f71f12717a4cb13c75ed47" ], + "index": "pypi", "markers": "python_version < '3.11' and (sys_platform == 'linux' or sys_platform == 'darwin') and platform_machine == 'x86_64' and implementation_name == 'cpython'", "version": "==2.3.5" }, @@ -1081,6 +1124,7 @@ "sha256:f2c191a1cbcee2ed70d65510dd540edb5d5d2b3288b74be89be401456ae747d1", "sha256:fbedb3013c93d52959c543bc9493572401d8f8e928bc265af6fdf6a2fb0258e8" ], + "index": "pypi", "markers": "python_version < '3.11' and (sys_platform == 'linux' or sys_platform == 'darwin') and platform_machine == 'x86_64' and implementation_name == 'cpython'", "version": "==2.3.5" }, @@ -1146,6 +1190,7 @@ "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==6.0.1" }, "rdflib": { @@ -1264,6 +1309,7 @@ "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.31.0" }, "rpds-py": { @@ -1414,6 +1460,7 @@ "sha256:f2d968ba9da4cbf343ff7aee80a7e97e0d127fa0d5d4a2f456b86bfd3c324d58" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.13.1" }, "s3transfer": { @@ -1438,6 +1485,7 @@ "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177" ], "index": "pypi", + "markers": "python_version >= '2.7'", "version": "==2.10.0" }, "setuptools": { @@ -1485,6 +1533,7 @@ "sha256:c83652cd65b5726058dcbdaab85839dbe484c43ea6f61046137516aa1b8428ae" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.8.1" }, "tabulate": { @@ -1493,6 +1542,7 @@ "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.9.0" }, "termcolor": { @@ -1501,6 +1551,7 @@ "sha256:b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.3.0" }, "texttable": { @@ -1524,6 +1575,7 @@ "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.66.1" }, "typing-extensions": { @@ -1532,6 +1584,7 @@ "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==4.8.0" }, "unidiff": { @@ -1666,6 +1719,7 @@ "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.9.2" }, "zipp": { @@ -1769,6 +1823,7 @@ "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.8.5" }, "aioresponses": { @@ -1809,6 +1864,7 @@ "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.7.5" }, "boto3-stubs-lite": { @@ -1819,7 +1875,7 @@ "sha256:3894e31ea93b30d1798e0cb79a7471b42ea721396daed2a5a7ba4cd6304dee1b", "sha256:f015f3ad7457647835999d069198ed7610942c6e38865d763301e872ee84e9f5" ], - "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.28.54" }, "botocore-stubs": { @@ -1925,6 +1981,7 @@ "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" ], "index": "pypi", + "markers": "python_full_version >= '3.7.0'", "version": "==3.2.0" }, "coverage": { @@ -1983,6 +2040,7 @@ "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": { @@ -2037,6 +2095,7 @@ "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5" ], "index": "pypi", + "markers": "python_full_version >= '3.8.1'", "version": "==6.1.0" }, "flake8-bugbear": { @@ -2045,6 +2104,7 @@ "sha256:b182cf96ea8f7a8595b2f87321d7d9b28728f4d9c3318012d896543d19742cb5" ], "index": "pypi", + "markers": "python_full_version >= '3.8.1'", "version": "==23.9.16" }, "freezegun": { @@ -2053,6 +2113,7 @@ "sha256:ea1b963b993cb9ea195adbd893a48d573fda951b0da64f60883d7e988b606c9f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==1.2.2" }, "frozenlist": { @@ -2136,6 +2197,7 @@ "sha256:f9b9ddc0761c125d5780eab2d64be4873fc6817c2899cbcb34b02344bdc7bc54" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.1.37" }, "identify": { @@ -2159,7 +2221,7 @@ "sha256:9d48dcccc213325e810fd723e7fbb45ccb39f6cf5c31f00cf2b965f5f10f3cb9", "sha256:aa50258bbfa56d4e33fbd8aa3ef48ded10d1735f11532b8df95388cc6bdb7e83" ], - "index": "pypi", + "markers": "python_version < '3.9'", "version": "==6.1.0" }, "iniconfig": { @@ -2176,6 +2238,7 @@ "sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==4.19.1" }, "jsonschema-specifications": { @@ -2216,6 +2279,7 @@ "sha256:5e96aad5ccda4718e0a229ed94b2024df75cc2d55575ba5762d31f5767b8767d" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==5.1.0" }, "multidict": { @@ -2329,6 +2393,7 @@ "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==1.5.1" }, "mypy-boto3-s3": { @@ -2360,6 +2425,7 @@ "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==23.1" }, "parameterized": { @@ -2368,6 +2434,7 @@ "sha256:7fc905272cefa4f364c1a3429cbbe9c0f98b793988efb5bf90aac80f08db09b1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.9.0" }, "pbr": { @@ -2378,6 +2445,14 @@ "markers": "python_version >= '2.6'", "version": "==5.11.1" }, + "pkgutil-resolve-name": { + "hashes": [ + "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174", + "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e" + ], + "markers": "python_version < '3.9'", + "version": "==1.3.10" + }, "platformdirs": { "hashes": [ "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d", @@ -2400,6 +2475,7 @@ "sha256:96d529a951f8b677f730a7212442027e8ba53f9b04d217c4c67dc56c393ad945" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==3.4.0" }, "pycodestyle": { @@ -2432,6 +2508,7 @@ "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==7.4.2" }, "pytest-asyncio": { @@ -2440,6 +2517,7 @@ "sha256:8666c1c8ac02631d7c51ba282e0c69a8a452b211ffedf2599099845da5c5c37b" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.21.1" }, "pytest-cov": { @@ -2448,6 +2526,7 @@ "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.1.0" }, "pytest-mock": { @@ -2456,6 +2535,7 @@ "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.11.1" }, "pytest-xdist": { @@ -2464,6 +2544,7 @@ "sha256:ff9daa7793569e6a68544850fd3927cd257cc03a7ef76c95e86915355e82b5f2" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.3.1" }, "python-dateutil": { @@ -2528,6 +2609,7 @@ "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==6.0.1" }, "referencing": { @@ -2544,6 +2626,7 @@ "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.31.0" }, "responses": { @@ -2552,6 +2635,7 @@ "sha256:e6fbcf5d82172fecc0aa1860fd91e58cbfd96cee5e96da5b63fa6eb3caa10dd3" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.23.3" }, "rich": { @@ -2807,6 +2891,7 @@ "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==4.8.0" }, "urllib3": { @@ -2911,6 +2996,7 @@ "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.9.2" }, "zipp": {