From 2a3be7ccb84a3987288a908c49094c99df866518 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 5 Oct 2023 12:09:44 +0600 Subject: [PATCH 001/245] chore: remove jinja2 --- Pipfile | 1 - requirements-dev.txt | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Pipfile b/Pipfile index 3bcbe159..166cbbcc 100644 --- a/Pipfile +++ b/Pipfile @@ -10,7 +10,6 @@ requests = "*" cerberus = "*" defusedxml = "*" xmltodict = "*" -jinja2 = "*" python-dotenv = "*" [dev-packages] diff --git a/requirements-dev.txt b/requirements-dev.txt index 52118a17..0a4b6909 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -23,7 +23,7 @@ mypy==1.11.1; python_version >= '3.8' mypy-extensions==1.0.0; python_version >= '3.5' packaging==24.1; python_version >= '3.8' pathspec==0.12.1; python_version >= '3.8' -platformdirs==4.2.2; python_version >= '3.8' +platformdirs==4.2.1; python_version >= '3.8' pluggy==1.5.0; python_version >= '3.8' pycodestyle==2.12.1; python_version >= '3.8' pyflakes==3.2.0; python_version >= '3.8' @@ -39,9 +39,12 @@ urllib3==2.2.2; python_version >= '3.8' var-dump==1.2 yarl==1.9.4; python_version >= '3.7' cerberus==1.3.5 +certifi==2024.2.2; python_version >= '3.6' +charset-normalizer==3.3.2; python_full_version >= '3.7.0' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' jinja2==3.1.4; python_version >= '3.7' markupsafe==2.1.5; python_version >= '3.7' python-dotenv==1.0.1; python_version >= '3.8' -pyyaml==6.0.2; python_version >= '3.8' +pyyaml==6.0.1; python_version >= '3.6' +requests==2.31.0; python_version >= '3.7' xmltodict==0.13.0; python_version >= '3.4' From 3056b03426472b3586d067a13e51812c994ccfbd Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 5 Oct 2023 12:11:45 +0600 Subject: [PATCH 002/245] chore: add better debugging tool - remove var-dump - add icecream --- Pipfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Pipfile b/Pipfile index 166cbbcc..caf6ef93 100644 --- a/Pipfile +++ b/Pipfile @@ -23,6 +23,7 @@ types-pyyaml = "*" types-requests = "*" pytest-cov = "*" coveralls = "*" +icecream = "*" [requires] python_version = "3.11" From 4e637076f80fe20911cc35703dd712cc1dd0ff63 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 5 Oct 2023 15:07:38 +0600 Subject: [PATCH 003/245] chore: add pydentic pkg --- Pipfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Pipfile b/Pipfile index caf6ef93..37492dbd 100644 --- a/Pipfile +++ b/Pipfile @@ -11,6 +11,7 @@ cerberus = "*" defusedxml = "*" xmltodict = "*" python-dotenv = "*" +pydantic = "*" [dev-packages] pytest = "*" From c0a989be1eb192160b5e3ddca4ca06c8fa298efd Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 7 Oct 2023 12:00:20 +0600 Subject: [PATCH 004/245] feat: reusable test fixtures --- tests/__init__.py | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/tests/__init__.py b/tests/__init__.py index 22dfd953..2bea4955 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,5 +1,42 @@ +# type: ignore """ common config """ +import pytest -RES_DIR = './tests/resources/storage/sample_config/' +from chk.infrastructure.file_loader import FileLoader, FileContext, ExecuteContext + +RES_DIR = "./tests/resources/storage/sample_config/" +SPEC_DIR = "./tests/resources/storage/spec_docs/" + + +@pytest.fixture +def load_chk_file(): + def wrapper(file_path): + if FileLoader.is_file_ok(file_path): + return FileLoader.load_yaml(file_path) + + raise RuntimeError("Issue with file loading.") + + return wrapper + + +@pytest.fixture +def load_file_ctx_for_file(load_chk_file): + def wrapper(filepath): + return FileContext(document=load_chk_file(filepath), filepath=filepath) + + return wrapper + + +@pytest.fixture +def get_exec_ctx(): + def wrapper(format=True): + return ExecuteContext( + options={ + "dump": True, + "format": format, + } + ) + + return wrapper From b48a2832c2cdb579c8ba6c8ab606483566fb4e60 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 7 Oct 2023 12:01:24 +0600 Subject: [PATCH 005/245] feat: workflow document with test --- chk/modules/workflow/domain.py | 38 ++++++++++++++++++++++++ tests/modules/workflow/wf_domain_test.py | 28 +++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 chk/modules/workflow/domain.py create mode 100644 tests/modules/workflow/wf_domain_test.py diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py new file mode 100644 index 00000000..cdae172b --- /dev/null +++ b/chk/modules/workflow/domain.py @@ -0,0 +1,38 @@ +""" +Domain logics for workflow module +""" + +import typing +from os.path import splitext + +from pydantic import BaseModel, Field + +from chk.infrastructure.file_loader import FileContext +from chk.infrastructure.helper import data_get + +VERSION_SCOPE = ["workflow"] + + +class VersionedDocument(BaseModel): + context: tuple = Field(default_factory=tuple) + version: str = Field(default_factory=str) + + +class WorkflowDocument(VersionedDocument): + """WorkflowDocument""" + + id: str = Field(default_factory=str) + + @staticmethod + def from_file_context(ctx: FileContext) -> "WorkflowDocument": + """Create a WorkflowDocument from FileContext""" + + if not (version_str := data_get(ctx.document, "version")): + raise RuntimeError("`version:` not found.") + + id_str = data_get(ctx.document, "id", splitext(ctx.filepath)[0]) + + if not (tasks_dct := data_get(ctx.document, "tasks")): + raise RuntimeError("`tasks:` not found.") + + return WorkflowDocument(context=tuple(ctx), version=version_str, id=id_str) diff --git a/tests/modules/workflow/wf_domain_test.py b/tests/modules/workflow/wf_domain_test.py new file mode 100644 index 00000000..9f9efaae --- /dev/null +++ b/tests/modules/workflow/wf_domain_test.py @@ -0,0 +1,28 @@ +# type: ignore +""" +Domain test code +""" + +from chk.modules.workflow import WorkflowDocument + +from tests import load_chk_file, load_file_ctx_for_file, SPEC_DIR + + +class TestWorkflowDocument: + @staticmethod + def test_from_file_context_pass(load_chk_file, load_file_ctx_for_file): + filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" + file_ctx = load_file_ctx_for_file(filepath) + + wfdoc = WorkflowDocument.from_file_context(file_ctx) + wfdoc.id == "simpleBtcWf" + + @staticmethod + def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): + filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" + file_ctx = load_file_ctx_for_file(filepath) + + del file_ctx.document["id"] # remove document id + + wfdoc = WorkflowDocument.from_file_context(file_ctx) + wfdoc.id == "simple-btc-wf" # check if document id defaults to file name From 569c17e785a68ad40ac92b5e800feecad0ee7cff Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 7 Oct 2023 12:01:47 +0600 Subject: [PATCH 006/245] feat: workflow driver with tests --- chk/modules/workflow/__init__.py | 33 +++++++++++++++++++ tests/modules/workflow/wf_module_test.py | 19 +++++++++++ .../spec_docs/workflow/simple-btc-wf.chk | 15 +++++++++ 3 files changed, 67 insertions(+) create mode 100644 tests/modules/workflow/wf_module_test.py create mode 100644 tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 9f09a92e..e85672cc 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -1,3 +1,36 @@ """ Workflow module """ + +from collections import abc + +from icecream import ic + +from chk.infrastructure.file_loader import FileContext, ExecuteContext +from chk.infrastructure.version import DocumentVersionMaker +from chk.modules.workflow.domain import WorkflowDocument + +VERSION_SCOPE = ["workflow"] + + +def execute( + ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... +) -> None: + """Run a workflow document + + Args: + ctx: FileContext object to handle + exec_ctx: ExecuteContext + cb: Callable + """ + + wflow_doc = WorkflowDocument.from_file_context(ctx) + ic(wflow_doc) + + # DocumentVersionMaker.verify_if_allowed( + # DocumentVersionMaker.from_dict(wflow_doc.as_dict), VERSION_SCOPE + # ) + + # VersionedDocumentSupport.validate_with_schema( + # HttpDocumentSupport.build_schema(), http_doc + # ) diff --git a/tests/modules/workflow/wf_module_test.py b/tests/modules/workflow/wf_module_test.py new file mode 100644 index 00000000..25072acc --- /dev/null +++ b/tests/modules/workflow/wf_module_test.py @@ -0,0 +1,19 @@ +# type: ignore +""" +Workflow module test +""" + +from chk.infrastructure.file_loader import ExecuteContext +from chk.modules.workflow import execute + +from tests import load_chk_file, load_file_ctx_for_file, get_exec_ctx, SPEC_DIR + + +class TestWorkflowExecute: + @staticmethod + def test_execute(load_chk_file, load_file_ctx_for_file, get_exec_ctx): + filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" + file_ctx = load_file_ctx_for_file(filepath) + execution_ctx = get_exec_ctx(False) + + execute(file_ctx, execution_ctx) diff --git a/tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk b/tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk new file mode 100644 index 00000000..f576a5fd --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk @@ -0,0 +1,15 @@ +version: default:workflow:0.8.0 +id: simpleBtcWf + +tasks: + - name: Fetch some content from URL + uses: fetch + file: ../fetch/bitcoin-usd.chk +# variables: { "var": 2 } + + - name: Validate the content is okay + uses: validate + file: ../validate/btc-usd-validate.chk +# variables: { "var": 2 } +# arguments: +# data: <% _tasks.0._expose.0 %> From f0510a9fa8f919fa91e711bfd87a04f5480d24ab Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Oct 2023 09:45:17 +0600 Subject: [PATCH 007/245] refactor: update file name parse logic --- chk/modules/workflow/domain.py | 6 ++---- tests/modules/workflow/wf_domain_test.py | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py index cdae172b..508c0690 100644 --- a/chk/modules/workflow/domain.py +++ b/chk/modules/workflow/domain.py @@ -1,9 +1,7 @@ """ Domain logics for workflow module """ - -import typing -from os.path import splitext +import pathlib from pydantic import BaseModel, Field @@ -30,7 +28,7 @@ def from_file_context(ctx: FileContext) -> "WorkflowDocument": if not (version_str := data_get(ctx.document, "version")): raise RuntimeError("`version:` not found.") - id_str = data_get(ctx.document, "id", splitext(ctx.filepath)[0]) + id_str = data_get(ctx.document, "id", pathlib.Path(ctx.filepath).stem) if not (tasks_dct := data_get(ctx.document, "tasks")): raise RuntimeError("`tasks:` not found.") diff --git a/tests/modules/workflow/wf_domain_test.py b/tests/modules/workflow/wf_domain_test.py index 9f9efaae..72d22e9a 100644 --- a/tests/modules/workflow/wf_domain_test.py +++ b/tests/modules/workflow/wf_domain_test.py @@ -15,7 +15,7 @@ def test_from_file_context_pass(load_chk_file, load_file_ctx_for_file): file_ctx = load_file_ctx_for_file(filepath) wfdoc = WorkflowDocument.from_file_context(file_ctx) - wfdoc.id == "simpleBtcWf" + assert wfdoc.id == "simpleBtcWf" @staticmethod def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): @@ -25,4 +25,4 @@ def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): del file_ctx.document["id"] # remove document id wfdoc = WorkflowDocument.from_file_context(file_ctx) - wfdoc.id == "simple-btc-wf" # check if document id defaults to file name + assert wfdoc.id == "simple-btc-wf" # check if document id defaults to file name From 47bdfdeeb2d8385e94b23e2705cc8d14c7469e1d Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Oct 2023 12:59:37 +0600 Subject: [PATCH 008/245] feat: entity for internal chkware tasks --- chk/modules/workflow/entities.py | 24 ++++++++++++++++++++++ tests/modules/workflow/wf_entities_test.py | 14 +++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 chk/modules/workflow/entities.py create mode 100644 tests/modules/workflow/wf_entities_test.py diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py new file mode 100644 index 00000000..a9c33345 --- /dev/null +++ b/chk/modules/workflow/entities.py @@ -0,0 +1,24 @@ +""" +Entities for workflow +""" +import enum +import typing + +from pydantic import BaseModel, Field + + +class ChkwareTask(BaseModel): + """Chkware task""" + + uses: str + file: str + variables: dict = Field(default_factory=dict) + + @staticmethod + def from_dict(data: dict) -> "ChkwareTask": + """constractor""" + + if not data: + raise AttributeError("ChkwareTask:from_dict Empty data given") + + return ChkwareTask(**data) diff --git a/tests/modules/workflow/wf_entities_test.py b/tests/modules/workflow/wf_entities_test.py new file mode 100644 index 00000000..7bfca8d2 --- /dev/null +++ b/tests/modules/workflow/wf_entities_test.py @@ -0,0 +1,14 @@ +# type: ignore +""" +Testing Entities for workflow +""" +from chk.modules.workflow.entities import ChkwareTask + + +class TestChkwareTask: + @staticmethod + def test_from_dict_pass(): + task = ChkwareTask.from_dict({"uses": "fetch", "file": "file.chk"}) + + assert task.uses == "fetch" + assert task.file == "file.chk" From c18e11543184c15cff560186328d7337c5914be6 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Oct 2023 13:00:15 +0600 Subject: [PATCH 009/245] feat: entity for internal chkware validate task --- chk/modules/workflow/entities.py | 20 ++++++++++++++++++ tests/modules/workflow/wf_entities_test.py | 24 +++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index a9c33345..cc4f12d9 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -22,3 +22,23 @@ def from_dict(data: dict) -> "ChkwareTask": raise AttributeError("ChkwareTask:from_dict Empty data given") return ChkwareTask(**data) + + +class ChkwareValidateTask(ChkwareTask): + """Chkware validation task""" + + class ChkwareTaskDataArgument(BaseModel): + """Chkware task data argument""" + + data: dict + + arguments: typing.Optional[ChkwareTaskDataArgument] = Field(default=None) + + @staticmethod + def from_dict(data: dict) -> "ChkwareValidateTask": + """constractor""" + + if not data: + raise AttributeError("ChkwareValidateTask:from_dict Empty data given") + + return ChkwareValidateTask(**data) diff --git a/tests/modules/workflow/wf_entities_test.py b/tests/modules/workflow/wf_entities_test.py index 7bfca8d2..bdff3d53 100644 --- a/tests/modules/workflow/wf_entities_test.py +++ b/tests/modules/workflow/wf_entities_test.py @@ -2,7 +2,7 @@ """ Testing Entities for workflow """ -from chk.modules.workflow.entities import ChkwareTask +from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask class TestChkwareTask: @@ -12,3 +12,25 @@ def test_from_dict_pass(): assert task.uses == "fetch" assert task.file == "file.chk" + + +class TestChkwareValidateTask: + @staticmethod + def test_from_dict_pass(): + task = ChkwareValidateTask.from_dict( + {"uses": "validate", "file": "validate-file.chk"} + ) + + assert task.uses == "validate" + assert task.file == "validate-file.chk" + assert task.arguments is None + + task = ChkwareValidateTask.from_dict( + { + "uses": "validate", + "file": "validate-file.chk", + "arguments": {"data": {"some": 12, "data": [1, "a"]}}, + } + ) + + assert task.arguments and "data" in task.arguments.model_dump() From 756158ef0f6d37acff40e5e04eb227f5429df815 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Oct 2023 13:04:01 +0600 Subject: [PATCH 010/245] feat: parsing tasks in workflow --- chk/modules/workflow/domain.py | 41 ++++++++++++++++++++++-- tests/modules/workflow/wf_domain_test.py | 12 +++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py index 508c0690..8720d48e 100644 --- a/chk/modules/workflow/domain.py +++ b/chk/modules/workflow/domain.py @@ -2,11 +2,13 @@ Domain logics for workflow module """ import pathlib +import typing from pydantic import BaseModel, Field from chk.infrastructure.file_loader import FileContext from chk.infrastructure.helper import data_get +from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask VERSION_SCOPE = ["workflow"] @@ -16,10 +18,21 @@ class VersionedDocument(BaseModel): version: str = Field(default_factory=str) +class ParsedTask(BaseModel): + """Parsed tasks""" + + name: str + uses: str + file: str + variables: dict = Field(default_factory=dict) + arguments: dict = Field(default=None) + + class WorkflowDocument(VersionedDocument): """WorkflowDocument""" id: str = Field(default_factory=str) + tasks: list[ChkwareTask | ChkwareValidateTask] @staticmethod def from_file_context(ctx: FileContext) -> "WorkflowDocument": @@ -30,7 +43,31 @@ def from_file_context(ctx: FileContext) -> "WorkflowDocument": id_str = data_get(ctx.document, "id", pathlib.Path(ctx.filepath).stem) - if not (tasks_dct := data_get(ctx.document, "tasks")): + if not (tasks_lst := data_get(ctx.document, "tasks")): raise RuntimeError("`tasks:` not found.") - return WorkflowDocument(context=tuple(ctx), version=version_str, id=id_str) + if not isinstance(tasks_lst, list): + raise RuntimeError("`tasks:` is not list.") + + tasks = [] + for task in tasks_lst: + if not isinstance(task, dict): + raise RuntimeError("`tasks.*.item` should be map.") + + parsed_task = ParsedTask(**task) + + match parsed_task.uses: + case "fetch": + tasks.append(ChkwareTask.from_dict(parsed_task.model_dump())) + case "validate": + tasks.append( + ChkwareValidateTask.from_dict(parsed_task.model_dump()) + ) + + return WorkflowDocument( + context=tuple(ctx), version=version_str, id=id_str, tasks=tasks + ) + + +class WorkflowDocumentSupport: + """Workflow document support""" diff --git a/tests/modules/workflow/wf_domain_test.py b/tests/modules/workflow/wf_domain_test.py index 72d22e9a..f5f5a0bf 100644 --- a/tests/modules/workflow/wf_domain_test.py +++ b/tests/modules/workflow/wf_domain_test.py @@ -2,8 +2,10 @@ """ Domain test code """ +from icecream import ic from chk.modules.workflow import WorkflowDocument +from chk.modules.workflow.entities import ChkwareTask from tests import load_chk_file, load_file_ctx_for_file, SPEC_DIR @@ -17,12 +19,18 @@ def test_from_file_context_pass(load_chk_file, load_file_ctx_for_file): wfdoc = WorkflowDocument.from_file_context(file_ctx) assert wfdoc.id == "simpleBtcWf" + assert isinstance(wfdoc.tasks, list) + assert all(isinstance(i, ChkwareTask) for i in wfdoc.tasks) + @staticmethod def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" file_ctx = load_file_ctx_for_file(filepath) - del file_ctx.document["id"] # remove document id + del file_ctx.document["id"] # remove document id wfdoc = WorkflowDocument.from_file_context(file_ctx) - assert wfdoc.id == "simple-btc-wf" # check if document id defaults to file name + assert wfdoc.id == "simple-btc-wf" # check if document id defaults to file name + + assert isinstance(wfdoc.tasks, list) + assert all(isinstance(i, ChkwareTask) for i in wfdoc.tasks) From 7f896903227ae8b5197f8b6a8220979ee10733e5 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Oct 2023 14:29:33 +0600 Subject: [PATCH 011/245] refactor: remove unused --- chk/modules/workflow/domain.py | 1 - tests/modules/workflow/wf_module_test.py | 1 - 2 files changed, 2 deletions(-) diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py index 8720d48e..d4e3a142 100644 --- a/chk/modules/workflow/domain.py +++ b/chk/modules/workflow/domain.py @@ -2,7 +2,6 @@ Domain logics for workflow module """ import pathlib -import typing from pydantic import BaseModel, Field diff --git a/tests/modules/workflow/wf_module_test.py b/tests/modules/workflow/wf_module_test.py index 25072acc..3a838390 100644 --- a/tests/modules/workflow/wf_module_test.py +++ b/tests/modules/workflow/wf_module_test.py @@ -3,7 +3,6 @@ Workflow module test """ -from chk.infrastructure.file_loader import ExecuteContext from chk.modules.workflow import execute from tests import load_chk_file, load_file_ctx_for_file, get_exec_ctx, SPEC_DIR From e8013f034857b42c451ee96297a48bb6dfdc525a Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 12 Oct 2023 19:20:24 +0600 Subject: [PATCH 012/245] chore: package version update --- Pipfile.lock | 380 ++++++++++++++++++++++--------------------- requirements-dev.txt | 15 +- requirements.txt | 1 + 3 files changed, 208 insertions(+), 188 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 3948920e..e2e2ee46 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -154,7 +154,7 @@ "markers": "python_version >= '3.5'", "version": "==3.7" }, - "jinja2": { + "pydantic": { "hashes": [ "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d" @@ -163,7 +163,7 @@ "markers": "python_version >= '3.7'", "version": "==3.1.4" }, - "markupsafe": { + "pydantic-core": { "hashes": [ "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", @@ -307,6 +307,14 @@ "markers": "python_version >= '3.8'", "version": "==2.32.3" }, + "typing-extensions": { + "hashes": [ + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" + ], + "markers": "python_version >= '3.8'", + "version": "==4.8.0" + }, "urllib3": { "hashes": [ "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", @@ -688,6 +696,14 @@ "markers": "python_version < '3.13' and python_version >= '3.8'", "version": "==4.0.1" }, + "colorama": { + "hashes": [ + "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", + "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" + ], + "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" + }, "dill": { "hashes": [ "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca", @@ -696,6 +712,13 @@ "markers": "python_version >= '3.11'", "version": "==0.3.8" }, + "executing": { + "hashes": [ + "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657", + "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08" + ], + "version": "==2.0.0" + }, "docopt": { "hashes": [ "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" @@ -713,86 +736,78 @@ }, "frozenlist": { "hashes": [ - "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", - "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98", - "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad", - "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5", - "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae", - "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e", - "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a", - "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701", - "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d", - "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6", - "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6", - "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106", - "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75", - "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868", - "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a", - "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0", - "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1", - "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826", - "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec", - "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6", - "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950", - "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19", - "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0", - "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8", - "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a", - "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09", - "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86", - "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c", - "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5", - "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b", - "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b", - "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d", - "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0", - "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea", - "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776", - "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a", - "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897", - "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7", - "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09", - "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9", - "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe", - "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd", - "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742", - "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09", - "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0", - "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932", - "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1", - "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a", - "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49", - "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d", - "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7", - "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480", - "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89", - "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e", - "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b", - "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82", - "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb", - "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068", - "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8", - "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b", - "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb", - "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2", - "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11", - "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b", - "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc", - "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0", - "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497", - "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17", - "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0", - "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2", - "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439", - "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5", - "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac", - "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825", - "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887", - "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced", - "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74" + "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.1" + "version": "==1.4.0" + }, + "icecream": { + "hashes": [ + "sha256:0aa4a7c3374ec36153a1d08f81e3080e83d8ac1eefd97d2f4fe9544e8f9b49de", + "sha256:757aec31ad4488b949bc4f499d18e6e5973c40cc4d4fc607229e78cfaec94c34" + ], + "index": "pypi", + "version": "==2.1.3" }, "idna": { "hashes": [ @@ -812,11 +827,11 @@ }, "isort": { "hashes": [ - "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", - "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6" + "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504", + "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" ], "markers": "python_full_version >= '3.8.0'", - "version": "==5.13.2" + "version": "==5.12.0" }, "mccabe": { "hashes": [ @@ -974,11 +989,11 @@ }, "pathspec": { "hashes": [ - "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", - "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" + "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", + "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" ], - "markers": "python_version >= '3.8'", - "version": "==0.12.1" + "markers": "python_version >= '3.7'", + "version": "==0.11.2" }, "platformdirs": { "hashes": [ @@ -1012,6 +1027,14 @@ "markers": "python_version >= '3.8'", "version": "==3.2.0" }, + "pygments": { + "hashes": [ + "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692", + "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29" + ], + "markers": "python_version >= '3.7'", + "version": "==2.16.1" + }, "pylint": { "hashes": [ "sha256:03c8e3baa1d9fb995b12c1dbe00aa6c4bcef210c2a2634374aedeb22fb4a8f8f", @@ -1048,6 +1071,14 @@ "markers": "python_version >= '3.8'", "version": "==2.32.3" }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, "tomlkit": { "hashes": [ "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", @@ -1090,108 +1121,85 @@ "markers": "python_version >= '3.8'", "version": "==2.2.2" }, - "var-dump": { - "hashes": [ - "sha256:9031944c174f8ce971b71a047fc56a81dfa1ce05d354fff3a16d781391d020ae" - ], - "index": "pypi", - "version": "==1.2" - }, "yarl": { "hashes": [ - "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", - "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce", - "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559", - "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0", - "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81", - "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc", - "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4", - "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c", - "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130", - "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136", - "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e", - "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec", - "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7", - "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1", - "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455", - "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099", - "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129", - "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10", - "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142", - "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98", - "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa", - "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7", - "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525", - "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c", - "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9", - "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c", - "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8", - "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b", - "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf", - "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23", - "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd", - "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27", - "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f", - "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece", - "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434", - "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec", - "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff", - "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78", - "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d", - "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863", - "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53", - "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31", - "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15", - "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5", - "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b", - "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57", - "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3", - "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1", - "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f", - "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad", - "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c", - "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7", - "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2", - "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b", - "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2", - "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b", - "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9", - "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be", - "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e", - "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984", - "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4", - "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074", - "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2", - "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392", - "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91", - "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541", - "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf", - "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572", - "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66", - "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575", - "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14", - "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5", - "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1", - "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e", - "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551", - "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17", - "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead", - "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0", - "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe", - "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234", - "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0", - "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7", - "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34", - "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42", - "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385", - "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78", - "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be", - "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958", - "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749", - "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec" + "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", + "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", + "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", + "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", + "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", + "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", + "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", + "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", + "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", + "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", + "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", + "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", + "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", + "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", + "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", + "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", + "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", + "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", + "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", + "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", + "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", + "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", + "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", + "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", + "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", + "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", + "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", + "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", + "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", + "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", + "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", + "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", + "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", + "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", + "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", + "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", + "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", + "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", + "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", + "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", + "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", + "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", + "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", + "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", + "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", + "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", + "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", + "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", + "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", + "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", + "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", + "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", + "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", + "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", + "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", + "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", + "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", + "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", + "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", + "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", + "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", + "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", + "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", + "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", + "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", + "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", + "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", + "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", + "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", + "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", + "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", + "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", + "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", + "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "markers": "python_version >= '3.7'", - "version": "==1.9.4" + "version": "==1.9.2" } } -} +} \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index 0a4b6909..8b6d6d28 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -15,8 +15,15 @@ docopt==0.6.2 flake8==7.1.1; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' idna==3.7; python_version >= '3.5' +colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' +dill==0.3.7; python_version >= '3.11' +executing==2.0.0 +flake8==6.1.0; python_full_version >= '3.8.1' +frozenlist==1.4.0; python_version >= '3.8' +icecream==2.1.3 +idna==3.4; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' -isort==5.13.2; python_full_version >= '3.8.0' +isort==5.12.0; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' multidict==6.0.5; python_version >= '3.7' mypy==1.11.1; python_version >= '3.8' @@ -37,7 +44,8 @@ types-requests==2.32.0.20240712; python_version >= '3.8' typing-extensions==4.12.2; python_version >= '3.8' urllib3==2.2.2; python_version >= '3.8' var-dump==1.2 -yarl==1.9.4; python_version >= '3.7' +yarl==1.9.2; python_version >= '3.7' +annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 certifi==2024.2.2; python_version >= '3.6' charset-normalizer==3.3.2; python_full_version >= '3.7.0' @@ -45,6 +53,9 @@ defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, jinja2==3.1.4; python_version >= '3.7' markupsafe==2.1.5; python_version >= '3.7' python-dotenv==1.0.1; python_version >= '3.8' +pydantic==2.4.2; python_version >= '3.7' +pydantic-core==2.10.1; python_version >= '3.7' +python-dotenv==1.0.0; python_version >= '3.8' pyyaml==6.0.1; python_version >= '3.6' requests==2.31.0; python_version >= '3.7' xmltodict==0.13.0; python_version >= '3.4' diff --git a/requirements.txt b/requirements.txt index 3b818fb9..2e0fb411 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 certifi==2024.7.4; python_version >= '3.6' charset-normalizer==3.3.2; python_full_version >= '3.7.0' From f4ecb06be9232185562186deee30ffadead185d9 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 14 Oct 2023 09:56:13 +0600 Subject: [PATCH 013/245] refactor: versioned document v2 moved to core document --- chk/infrastructure/document.py | 10 ++++++++++ chk/modules/workflow/domain.py | 6 +----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/chk/infrastructure/document.py b/chk/infrastructure/document.py index 672ee153..37a5083b 100644 --- a/chk/infrastructure/document.py +++ b/chk/infrastructure/document.py @@ -4,6 +4,7 @@ import dataclasses import cerberus +from pydantic import BaseModel, Field from chk.infrastructure.file_loader import FileContext @@ -18,6 +19,15 @@ class VersionedDocument: version: str = dataclasses.field(default_factory=str) +class VersionedDocumentV2(BaseModel): + """ + versioned document entity + """ + + context: tuple = Field(default_factory=tuple) + version: str = Field(default_factory=str) + + class VersionedDocumentSupport: """DocumentVersionSupport""" diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py index d4e3a142..bf44d587 100644 --- a/chk/modules/workflow/domain.py +++ b/chk/modules/workflow/domain.py @@ -5,6 +5,7 @@ from pydantic import BaseModel, Field +from chk.infrastructure.document import VersionedDocumentV2 as VersionedDocument from chk.infrastructure.file_loader import FileContext from chk.infrastructure.helper import data_get from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask @@ -12,11 +13,6 @@ VERSION_SCOPE = ["workflow"] -class VersionedDocument(BaseModel): - context: tuple = Field(default_factory=tuple) - version: str = Field(default_factory=str) - - class ParsedTask(BaseModel): """Parsed tasks""" From 6a8cb5153f0cc190ec5357642365b40fde2f972b Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 14 Oct 2023 09:58:21 +0600 Subject: [PATCH 014/245] feat: support versioned document v2 in VariableTableManager.handle --- chk/infrastructure/symbol_table.py | 6 ++++-- chk/modules/workflow/__init__.py | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 40bd999a..577234d7 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -5,7 +5,7 @@ from collections import UserDict from collections.abc import Callable -from chk.infrastructure.document import VersionedDocument +from chk.infrastructure.document import VersionedDocument, VersionedDocumentV2 from chk.infrastructure.file_loader import FileContext, ExecuteContext from chk.infrastructure.helper import data_get from chk.infrastructure.templating import StrTemplate @@ -81,7 +81,9 @@ class VariableTableManager: @staticmethod def handle( - variable_doc: Variables, document: VersionedDocument, exec_ctx: ExecuteContext + variable_doc: Variables, + document: VersionedDocument | VersionedDocumentV2, + exec_ctx: ExecuteContext, ) -> None: """Handles variable handling diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index e85672cc..277e44a7 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -7,8 +7,7 @@ from icecream import ic from chk.infrastructure.file_loader import FileContext, ExecuteContext -from chk.infrastructure.version import DocumentVersionMaker -from chk.modules.workflow.domain import WorkflowDocument +from chk.infrastructure.symbol_table import Variables, VariableTableManager VERSION_SCOPE = ["workflow"] @@ -27,6 +26,8 @@ def execute( wflow_doc = WorkflowDocument.from_file_context(ctx) ic(wflow_doc) + variable_doc = Variables() + VariableTableManager.handle(variable_doc, wflow_doc, exec_ctx) # DocumentVersionMaker.verify_if_allowed( # DocumentVersionMaker.from_dict(wflow_doc.as_dict), VERSION_SCOPE # ) From ee6b0b005dd1e85fedfe2ae48bbbc576bc7f4e22 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 14 Oct 2023 09:58:47 +0600 Subject: [PATCH 015/245] feat: process task signature --- chk/modules/workflow/__init__.py | 5 +++++ chk/modules/workflow/domain.py | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 277e44a7..74964c2d 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -8,6 +8,7 @@ from chk.infrastructure.file_loader import FileContext, ExecuteContext from chk.infrastructure.symbol_table import Variables, VariableTableManager +from chk.modules.workflow.domain import WorkflowDocument, WorkflowDocumentSupport VERSION_SCOPE = ["workflow"] @@ -28,6 +29,10 @@ def execute( variable_doc = Variables() VariableTableManager.handle(variable_doc, wflow_doc, exec_ctx) + + service = WorkflowDocumentSupport() + service.process_task_template(wflow_doc, variable_doc) + # DocumentVersionMaker.verify_if_allowed( # DocumentVersionMaker.from_dict(wflow_doc.as_dict), VERSION_SCOPE # ) diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py index bf44d587..b4b7f8f2 100644 --- a/chk/modules/workflow/domain.py +++ b/chk/modules/workflow/domain.py @@ -8,6 +8,7 @@ from chk.infrastructure.document import VersionedDocumentV2 as VersionedDocument from chk.infrastructure.file_loader import FileContext from chk.infrastructure.helper import data_get +from chk.infrastructure.symbol_table import Variables from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask VERSION_SCOPE = ["workflow"] @@ -66,3 +67,9 @@ def from_file_context(ctx: FileContext) -> "WorkflowDocument": class WorkflowDocumentSupport: """Workflow document support""" + + @classmethod + def process_task_template( + cls, document: WorkflowDocument, variables: Variables + ) -> None: + ... From 39678cdee8c8256d3ab50ece16b63ce821030a2f Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 29 Oct 2023 08:23:59 +0600 Subject: [PATCH 016/245] chore: update packages --- requirements-dev.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements-dev.txt b/requirements-dev.txt index 8b6d6d28..a8a31018 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -44,6 +44,7 @@ types-requests==2.32.0.20240712; python_version >= '3.8' typing-extensions==4.12.2; python_version >= '3.8' urllib3==2.2.2; python_version >= '3.8' var-dump==1.2 +urllib3==2.0.7; python_version >= '3.7' yarl==1.9.2; python_version >= '3.7' annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 From 9a357d507a58d0db732f3056bb0f865db7a4cbce Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 29 Oct 2023 14:11:00 +0600 Subject: [PATCH 017/245] feat: disallow extra data in input yaml --- chk/modules/workflow/entities.py | 9 +++++-- tests/modules/workflow/wf_entities_test.py | 31 ++++++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index cc4f12d9..864595e7 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -1,15 +1,16 @@ """ Entities for workflow """ -import enum import typing -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, ConfigDict class ChkwareTask(BaseModel): """Chkware task""" + model_config = ConfigDict(extra="forbid") + uses: str file: str variables: dict = Field(default_factory=dict) @@ -30,8 +31,12 @@ class ChkwareValidateTask(ChkwareTask): class ChkwareTaskDataArgument(BaseModel): """Chkware task data argument""" + model_config = ConfigDict(extra="forbid") + data: dict + model_config = ConfigDict(extra="forbid") + arguments: typing.Optional[ChkwareTaskDataArgument] = Field(default=None) @staticmethod diff --git a/tests/modules/workflow/wf_entities_test.py b/tests/modules/workflow/wf_entities_test.py index bdff3d53..6ec0caf8 100644 --- a/tests/modules/workflow/wf_entities_test.py +++ b/tests/modules/workflow/wf_entities_test.py @@ -2,6 +2,9 @@ """ Testing Entities for workflow """ +import pytest +from pydantic import ValidationError + from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask @@ -18,11 +21,11 @@ class TestChkwareValidateTask: @staticmethod def test_from_dict_pass(): task = ChkwareValidateTask.from_dict( - {"uses": "validate", "file": "validate-file.chk"} + {"uses": "validate", "file": "validate-file-1.chk"} ) assert task.uses == "validate" - assert task.file == "validate-file.chk" + assert task.file == "validate-file-1.chk" assert task.arguments is None task = ChkwareValidateTask.from_dict( @@ -34,3 +37,27 @@ def test_from_dict_pass(): ) assert task.arguments and "data" in task.arguments.model_dump() + + @staticmethod + def test_from_dict_fail(): + with pytest.raises(ValidationError): + ChkwareValidateTask.from_dict( + { + "uses": "validate", + "file": "validate-file.chk", + "arguments": { + "data": {"some": 12, "data": [1, "a"]}, + "other_data": 1, + }, + } + ) + + with pytest.raises(ValidationError): + ChkwareValidateTask.from_dict( + { + "uses": "validate", + "file": "validate-file.chk", + "other_data": 1, + "arguments": {"data": {"some": 12, "data": [1, "a"]}}, + } + ) From 9bc548925598503e437a20868aa27676cf219072 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 29 Oct 2023 14:45:23 +0600 Subject: [PATCH 018/245] feat: move ParsedTask to entities --- chk/modules/workflow/domain.py | 10 ---------- chk/modules/workflow/entities.py | 10 ++++++++++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py index b4b7f8f2..c633a012 100644 --- a/chk/modules/workflow/domain.py +++ b/chk/modules/workflow/domain.py @@ -14,16 +14,6 @@ VERSION_SCOPE = ["workflow"] -class ParsedTask(BaseModel): - """Parsed tasks""" - - name: str - uses: str - file: str - variables: dict = Field(default_factory=dict) - arguments: dict = Field(default=None) - - class WorkflowDocument(VersionedDocument): """WorkflowDocument""" diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 864595e7..e8618c5e 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -6,6 +6,16 @@ from pydantic import BaseModel, Field, ConfigDict +class ParsedTask(BaseModel): + """Parsed tasks""" + + name: str + uses: str + file: str + variables: dict = Field(default_factory=dict) + arguments: dict = Field(default=None) + + class ChkwareTask(BaseModel): """Chkware task""" From 489d0d47e61c269dc9cd44864b8d82ca8ff0f83e Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 29 Oct 2023 14:45:58 +0600 Subject: [PATCH 019/245] refactor: use __future__.annotations --- chk/modules/workflow/domain.py | 3 ++- chk/modules/workflow/entities.py | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py index c633a012..0643c892 100644 --- a/chk/modules/workflow/domain.py +++ b/chk/modules/workflow/domain.py @@ -1,6 +1,7 @@ """ Domain logics for workflow module """ +from __future__ import annotations import pathlib from pydantic import BaseModel, Field @@ -21,7 +22,7 @@ class WorkflowDocument(VersionedDocument): tasks: list[ChkwareTask | ChkwareValidateTask] @staticmethod - def from_file_context(ctx: FileContext) -> "WorkflowDocument": + def from_file_context(ctx: FileContext) -> WorkflowDocument: """Create a WorkflowDocument from FileContext""" if not (version_str := data_get(ctx.document, "version")): diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index e8618c5e..33261013 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -1,6 +1,7 @@ """ Entities for workflow """ +from __future__ import annotations import typing from pydantic import BaseModel, Field, ConfigDict @@ -26,7 +27,7 @@ class ChkwareTask(BaseModel): variables: dict = Field(default_factory=dict) @staticmethod - def from_dict(data: dict) -> "ChkwareTask": + def from_dict(data: dict) -> ChkwareTask: """constractor""" if not data: @@ -50,7 +51,7 @@ class ChkwareTaskDataArgument(BaseModel): arguments: typing.Optional[ChkwareTaskDataArgument] = Field(default=None) @staticmethod - def from_dict(data: dict) -> "ChkwareValidateTask": + def from_dict(data: dict) -> ChkwareValidateTask: """constractor""" if not data: From 1d8828aa0e5d616486fbf599f968a341c498f715 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 29 Oct 2023 14:46:08 +0600 Subject: [PATCH 020/245] fix: add missing field --- chk/modules/workflow/entities.py | 1 + 1 file changed, 1 insertion(+) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 33261013..0ac7be1f 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -22,6 +22,7 @@ class ChkwareTask(BaseModel): model_config = ConfigDict(extra="forbid") + name: str uses: str file: str variables: dict = Field(default_factory=dict) From 622cbd9594954cb05a99d51e1786e0c6e4c9c066 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 29 Oct 2023 15:24:57 +0600 Subject: [PATCH 021/245] feat: use parsed task instead of dict --- chk/modules/workflow/domain.py | 10 ++++------ chk/modules/workflow/entities.py | 14 ++++++++++++++ tests/modules/workflow/wf_entities_test.py | 13 +++++++++++-- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py index 0643c892..9b677272 100644 --- a/chk/modules/workflow/domain.py +++ b/chk/modules/workflow/domain.py @@ -4,13 +4,13 @@ from __future__ import annotations import pathlib -from pydantic import BaseModel, Field +from pydantic import Field from chk.infrastructure.document import VersionedDocumentV2 as VersionedDocument from chk.infrastructure.file_loader import FileContext from chk.infrastructure.helper import data_get from chk.infrastructure.symbol_table import Variables -from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask +from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask, ParsedTask VERSION_SCOPE = ["workflow"] @@ -45,11 +45,9 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: match parsed_task.uses: case "fetch": - tasks.append(ChkwareTask.from_dict(parsed_task.model_dump())) + tasks.append(ChkwareTask.from_parsed_task(parsed_task)) case "validate": - tasks.append( - ChkwareValidateTask.from_dict(parsed_task.model_dump()) - ) + tasks.append(ChkwareValidateTask.from_parsed_task(parsed_task)) return WorkflowDocument( context=tuple(ctx), version=version_str, id=id_str, tasks=tasks diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 0ac7be1f..933967c7 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -36,6 +36,14 @@ def from_dict(data: dict) -> ChkwareTask: return ChkwareTask(**data) + @staticmethod + def from_parsed_task(task: ParsedTask) -> ChkwareTask: + """Create new instance from ParsedTask""" + + return ChkwareTask( + name=task.name, uses=task.uses, file=task.file, variables=task.variables + ) + class ChkwareValidateTask(ChkwareTask): """Chkware validation task""" @@ -59,3 +67,9 @@ def from_dict(data: dict) -> ChkwareValidateTask: raise AttributeError("ChkwareValidateTask:from_dict Empty data given") return ChkwareValidateTask(**data) + + @staticmethod + def from_parsed_task(task: ParsedTask) -> ChkwareValidateTask: + """Create new instance from ParsedTask""" + + return ChkwareValidateTask.from_dict(task.model_dump()) diff --git a/tests/modules/workflow/wf_entities_test.py b/tests/modules/workflow/wf_entities_test.py index 6ec0caf8..88c5ea33 100644 --- a/tests/modules/workflow/wf_entities_test.py +++ b/tests/modules/workflow/wf_entities_test.py @@ -11,7 +11,9 @@ class TestChkwareTask: @staticmethod def test_from_dict_pass(): - task = ChkwareTask.from_dict({"uses": "fetch", "file": "file.chk"}) + task = ChkwareTask.from_dict( + {"name": "Sample fetch", "uses": "fetch", "file": "file.chk"} + ) assert task.uses == "fetch" assert task.file == "file.chk" @@ -21,7 +23,11 @@ class TestChkwareValidateTask: @staticmethod def test_from_dict_pass(): task = ChkwareValidateTask.from_dict( - {"uses": "validate", "file": "validate-file-1.chk"} + { + "name": "Sample validate", + "uses": "validate", + "file": "validate-file-1.chk", + } ) assert task.uses == "validate" @@ -30,6 +36,7 @@ def test_from_dict_pass(): task = ChkwareValidateTask.from_dict( { + "name": "Sample validate - 2", "uses": "validate", "file": "validate-file.chk", "arguments": {"data": {"some": 12, "data": [1, "a"]}}, @@ -43,6 +50,7 @@ def test_from_dict_fail(): with pytest.raises(ValidationError): ChkwareValidateTask.from_dict( { + "name": "Sample validate - 3", "uses": "validate", "file": "validate-file.chk", "arguments": { @@ -55,6 +63,7 @@ def test_from_dict_fail(): with pytest.raises(ValidationError): ChkwareValidateTask.from_dict( { + "name": "Sample validate - 4", "uses": "validate", "file": "validate-file.chk", "other_data": 1, From 8fa7af29be0393c0ea0ea1b00d8b96f784e48957 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 1 Nov 2023 14:47:36 +0600 Subject: [PATCH 022/245] refactor: move all domain code to main module --- chk/modules/workflow/__init__.py | 53 +++++++++++++++++++++++++- chk/modules/workflow/domain.py | 64 -------------------------------- 2 files changed, 52 insertions(+), 65 deletions(-) delete mode 100644 chk/modules/workflow/domain.py diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 74964c2d..a9504b2d 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -2,17 +2,68 @@ Workflow module """ +from __future__ import annotations from collections import abc +import pathlib +from pydantic import Field, ConfigDict from icecream import ic +from chk.infrastructure.document import VersionedDocumentV2 as VersionedDocument +from chk.modules.workflow.entities import ( + ChkwareTask, + ChkwareValidateTask, + ParsedTask, + WorkflowUses, +) from chk.infrastructure.file_loader import FileContext, ExecuteContext +from chk.infrastructure.helper import data_get from chk.infrastructure.symbol_table import Variables, VariableTableManager -from chk.modules.workflow.domain import WorkflowDocument, WorkflowDocumentSupport + VERSION_SCOPE = ["workflow"] +class WorkflowDocument(VersionedDocument): + """WorkflowDocument""" + + model_config = ConfigDict(extra="forbid") + + id: str = Field(default_factory=str) + tasks: list[ChkwareTask | ChkwareValidateTask] + + @staticmethod + def from_file_context(ctx: FileContext) -> WorkflowDocument: + """Create a WorkflowDocument from FileContext""" + + if not (version_str := data_get(ctx.document, "version")): + raise RuntimeError("`version:` not found.") + + id_str = data_get(ctx.document, "id", pathlib.Path(ctx.filepath).stem) + + if not (tasks_lst := data_get(ctx.document, "tasks")): + raise RuntimeError("`tasks:` not found.") + + if not isinstance(tasks_lst, list): + raise RuntimeError("`tasks:` is not list.") + + tasks = [] + for task in tasks_lst: + if not isinstance(task, dict): + raise RuntimeError("`tasks.*.item` should be map.") + + parsed_task = ParsedTask(**task) + + match parsed_task.uses: + case "fetch": + tasks.append(ChkwareTask.from_parsed_task(parsed_task)) + case "validate": + tasks.append(ChkwareValidateTask.from_parsed_task(parsed_task)) + + return WorkflowDocument( + context=tuple(ctx), version=version_str, id=id_str, tasks=tasks + ) + def execute( ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... ) -> None: diff --git a/chk/modules/workflow/domain.py b/chk/modules/workflow/domain.py deleted file mode 100644 index 9b677272..00000000 --- a/chk/modules/workflow/domain.py +++ /dev/null @@ -1,64 +0,0 @@ -""" -Domain logics for workflow module -""" -from __future__ import annotations -import pathlib - -from pydantic import Field - -from chk.infrastructure.document import VersionedDocumentV2 as VersionedDocument -from chk.infrastructure.file_loader import FileContext -from chk.infrastructure.helper import data_get -from chk.infrastructure.symbol_table import Variables -from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask, ParsedTask - -VERSION_SCOPE = ["workflow"] - - -class WorkflowDocument(VersionedDocument): - """WorkflowDocument""" - - id: str = Field(default_factory=str) - tasks: list[ChkwareTask | ChkwareValidateTask] - - @staticmethod - def from_file_context(ctx: FileContext) -> WorkflowDocument: - """Create a WorkflowDocument from FileContext""" - - if not (version_str := data_get(ctx.document, "version")): - raise RuntimeError("`version:` not found.") - - id_str = data_get(ctx.document, "id", pathlib.Path(ctx.filepath).stem) - - if not (tasks_lst := data_get(ctx.document, "tasks")): - raise RuntimeError("`tasks:` not found.") - - if not isinstance(tasks_lst, list): - raise RuntimeError("`tasks:` is not list.") - - tasks = [] - for task in tasks_lst: - if not isinstance(task, dict): - raise RuntimeError("`tasks.*.item` should be map.") - - parsed_task = ParsedTask(**task) - - match parsed_task.uses: - case "fetch": - tasks.append(ChkwareTask.from_parsed_task(parsed_task)) - case "validate": - tasks.append(ChkwareValidateTask.from_parsed_task(parsed_task)) - - return WorkflowDocument( - context=tuple(ctx), version=version_str, id=id_str, tasks=tasks - ) - - -class WorkflowDocumentSupport: - """Workflow document support""" - - @classmethod - def process_task_template( - cls, document: WorkflowDocument, variables: Variables - ) -> None: - ... From 25ed22ffed3ea98c7b8527c9bc50ffa6d96b9e2e Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 2 Nov 2023 15:41:31 +0600 Subject: [PATCH 023/245] feat: add ExecResponse to capture generic response --- chk/infrastructure/symbol_table.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 577234d7..ba26001d 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -5,6 +5,8 @@ from collections import UserDict from collections.abc import Callable +from pydantic import BaseModel, ConfigDict + from chk.infrastructure.document import VersionedDocument, VersionedDocumentV2 from chk.infrastructure.file_loader import FileContext, ExecuteContext from chk.infrastructure.helper import data_get @@ -59,6 +61,17 @@ class ExposableVariables(UserDict): """Holds data for a expose data""" +class ExecResponse(BaseModel): + """ExecResponse""" + + model_config = ConfigDict(arbitrary_types_allowed=True) + + file_ctx: FileContext + exec_ctx: ExecuteContext + variables_exec: ExposableVariables + variables: Variables + + def replace_value(doc: dict | list, var_s: dict) -> dict | list: """ replace variables with values From 3bf5bd47c0f8b7151bf15eacc6971cbf3deff38e Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 2 Nov 2023 15:41:52 +0600 Subject: [PATCH 024/245] feat: add call api to fetch module --- chk/modules/fetch.py | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index a5717c6f..47e4703a 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -25,6 +25,7 @@ EXPOSE_SCHEMA as EXP_SCHEMA, ExposeManager, ExposableVariables, + ExecResponse, ) from chk.infrastructure.third_party.http_fetcher import ( @@ -508,18 +509,10 @@ def display(expose_list: list, exec_ctx: ExecuteContext) -> None: formatter(_to_display, dump=exec_ctx.options["dump"]) -def execute( - ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... -) -> None: - """Run a http document - - Args: - ctx: FileContext object to handle - exec_ctx: ExecuteContext - cb: Callable - """ +def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: + """Call a http document""" - http_doc = HttpDocument.from_file_context(ctx) + http_doc = HttpDocument.from_file_context(file_ctx) DocumentVersionMaker.verify_if_allowed( DocumentVersionMaker.from_dict(http_doc.as_dict), VERSION_SCOPE @@ -536,9 +529,32 @@ def execute( response = HttpDocumentSupport.execute_request(http_doc) output_data = ExposableVariables({"_response": response.data}) + return ExecResponse( + file_ctx=file_ctx, + exec_ctx=exec_ctx, + variables_exec=output_data, + variables=variable_doc, + ) + + +def execute( + ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... +) -> None: + """Call with a http document + + Args: + ctx: FileContext object to handle + exec_ctx: ExecuteContext + cb: Callable + """ + + exec_response = call(file_ctx=ctx, exec_ctx=exec_ctx) + + http_doc = HttpDocument.from_file_context(exec_response.file_ctx) exposed_data = ExposeManager.get_exposed_replaced_data( - http_doc, {**variable_doc.data, **output_data.data} + http_doc, + {**exec_response.variables.data, **exec_response.variables_exec.data}, ) - cb({ctx.filepath_hash: output_data.data}) + cb({ctx.filepath_hash: exec_response.variables_exec.data}) HttpDocumentSupport.display(exposed_data, exec_ctx) From 87a086161008e443ad3de74939957ea06df3e253 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 2 Nov 2023 15:48:48 +0600 Subject: [PATCH 025/245] refactor: type isolation on replace_value --- chk/infrastructure/symbol_table.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index ba26001d..e05c5048 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -2,6 +2,7 @@ Symbol and variable management """ import enum +import typing from collections import UserDict from collections.abc import Callable @@ -72,6 +73,16 @@ class ExecResponse(BaseModel): variables: Variables +@typing.overload +def replace_value(doc: dict, var_s: dict) -> dict: + ... + + +@typing.overload +def replace_value(doc: list, var_s: dict) -> list: + ... + + def replace_value(doc: dict | list, var_s: dict) -> dict | list: """ replace variables with values From e5a743fe9787c491b3abdf5d1c880a255746e217 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 2 Nov 2023 19:15:06 +0600 Subject: [PATCH 026/245] feat: tests for fetch.call --- tests/modules/fetch/fetch_module_test.py | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/modules/fetch/fetch_module_test.py diff --git a/tests/modules/fetch/fetch_module_test.py b/tests/modules/fetch/fetch_module_test.py new file mode 100644 index 00000000..3bd16c24 --- /dev/null +++ b/tests/modules/fetch/fetch_module_test.py @@ -0,0 +1,31 @@ +# type: ignore + +""" +Fetch module tests +""" +from chk.infrastructure.file_loader import FileContext, ExecuteContext +from chk.modules.fetch import call + + +class TestFetchCall: + @staticmethod + def test_call_pass(): + file_ctx = FileContext( + document={ + "version": "default:http:0.7.2", + "request": { + "url": "https://jsonplaceholder.typicode.com/albums/1", + "method": "GET", + }, + } + ) + + exec_ctx = ExecuteContext( + options={ + "dump": True, + "format": False, + } + ) + + er = call(file_ctx, exec_ctx) + assert "_response" in er.variables_exec From 1035b4d3892bda2ce32089f8cee4a9f3e5942252 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 3 Nov 2023 11:41:52 +0600 Subject: [PATCH 027/245] refactor: convert static method to class method for VariableTableManager --- chk/infrastructure/symbol_table.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index e05c5048..05fc96ca 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -103,7 +103,7 @@ def replace_value(doc: dict | list, var_s: dict) -> dict | list: class VariableTableManager: """VariableTableManager""" - @staticmethod + @classmethod def handle( variable_doc: Variables, document: VersionedDocument | VersionedDocumentV2, @@ -121,15 +121,15 @@ def handle( file_ctx = FileContext(*document.context) if variables := data_get(file_ctx.document, VariableConfigNode.VARIABLES): - VariableTableManager.handle_absolute(variable_doc, variables) + cls.handle_absolute(variable_doc, variables) - VariableTableManager.handle_execute_context(variable_doc, exec_ctx) + cls.handle_execute_context(variable_doc, exec_ctx) if variables: - VariableTableManager.handle_composite(variable_doc, variables) + cls.handle_composite(variable_doc, variables) - @staticmethod - def handle_absolute(variable_doc: Variables, document: dict) -> None: + @classmethod + def handle_absolute(cls, variable_doc: Variables, document: dict) -> None: """Handles absolute variables and values from document Args: @@ -143,8 +143,9 @@ def handle_absolute(variable_doc: Variables, document: dict) -> None: variable_doc[key] = val - @staticmethod + @classmethod def handle_composite( + cls, variable_doc: Variables, document: dict, replace_callback: Callable = replace_value, @@ -169,9 +170,9 @@ def handle_composite( for key, val in replaced_values.items(): variable_doc[key] = val - @staticmethod + @classmethod def handle_execute_context( - variable_doc: Variables, exec_ctx: ExecuteContext + cls, variable_doc: Variables, exec_ctx: ExecuteContext ) -> None: """Handle variables passed from external context From e9bc860865ca370833a007d7a55d489e3f6ba24f Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 3 Nov 2023 11:45:03 +0600 Subject: [PATCH 028/245] refactor: move loading envvars in handle_environment --- chk/console/main.py | 6 +----- chk/infrastructure/symbol_table.py | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/chk/console/main.py b/chk/console/main.py index c1e8e41a..50ec162a 100644 --- a/chk/console/main.py +++ b/chk/console/main.py @@ -1,10 +1,8 @@ """Commands""" import typing -from os import environ import click -from dotenv import load_dotenv import chk.modules.fetch as fetch_executor import chk.modules.validate as validate_executor @@ -30,9 +28,7 @@ def combine_initial_variables(external_vars: str, **kwargs: typing.Any) -> dict: """Reads a json string and converts to dict, and combines with env and dotenv variables""" - load_dotenv() - - return load_variables_as_dict(external_vars, **kwargs) | {"_ENV": dict(environ)} + return load_variables_as_dict(external_vars, **kwargs) def after_hook(resp: object) -> None: diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 05fc96ca..2798a213 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -2,10 +2,12 @@ Symbol and variable management """ import enum +import os import typing from collections import UserDict from collections.abc import Callable +from dotenv import load_dotenv from pydantic import BaseModel, ConfigDict from chk.infrastructure.document import VersionedDocument, VersionedDocumentV2 @@ -105,6 +107,7 @@ class VariableTableManager: @classmethod def handle( + cls, variable_doc: Variables, document: VersionedDocument | VersionedDocumentV2, exec_ctx: ExecuteContext, @@ -116,8 +119,10 @@ def handle( document: VersionedDocument of document data exec_ctx: ExecuteContext; passed ExecuteContext """ + # load environment variables + cls.handle_environment(variable_doc) - # make file contexts out od tuple + # make file contexts out of tuple file_ctx = FileContext(*document.context) if variables := data_get(file_ctx.document, VariableConfigNode.VARIABLES): @@ -186,6 +191,17 @@ def handle_execute_context( for key, val in ext_vars.items(): variable_doc[key] = val + @classmethod + def handle_environment(cls, variable_doc: Variables) -> None: + """Handle variables passed from external context + + Args: + variable_doc: Variables; Variable store + exec_ctx: ExecuteContext; passed external context + """ + load_dotenv() + variable_doc["_ENV"] = dict(os.environ) + class ExposeManager: """ExposeManager handles all expose related functionality""" From 602ce1dd90744b7fb58ed011dc128c4f44880655 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 3 Nov 2023 11:47:49 +0600 Subject: [PATCH 029/245] refactor: reflect new api change from platform --- tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk b/tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk index 28f0e9ac..1973269f 100644 --- a/tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk +++ b/tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk @@ -2,8 +2,10 @@ version: default:http:0.7.2 request: - url: https://api.coinstats.app/public/v1/coins/bitcoin?currency=USD + url: https://openapiv1.coinstats.app/coins/bitcoin?currency=USD method: GET + headers: + "X-API-KEY": <% _ENV.COINSTATS_API_KEY %> expose: - <% _response %> From 530437a87da87b8301b86d53ed1234d21dd10cf8 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 3 Nov 2023 12:57:50 +0600 Subject: [PATCH 030/245] feat: add slugify helper method --- chk/infrastructure/helper.py | 14 ++++++++++++++ tests/infrastructure/helper_test.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/chk/infrastructure/helper.py b/chk/infrastructure/helper.py index d2cfd6ec..e60b2194 100644 --- a/chk/infrastructure/helper.py +++ b/chk/infrastructure/helper.py @@ -2,6 +2,7 @@ Helper functions module """ import ast +import re from collections.abc import Callable from typing import Any @@ -175,3 +176,16 @@ def formatter(message: object, cb: Callable = str, dump: bool = True) -> str: click.echo(printable) return printable + + +def slugify(string: str) -> str: + """Make slug out of string""" + + if not isinstance(string, str): + raise TypeError("slugify: only string value supported.") + + string = string.lower().strip() + string = re.sub(r"[^\w\s-]", "", string) + string = re.sub(r"[\s_-]+", "-", string) + string = re.sub(r"^-+|-+$", "", string) + return string diff --git a/tests/infrastructure/helper_test.py b/tests/infrastructure/helper_test.py index ced73b1c..c9ab8658 100644 --- a/tests/infrastructure/helper_test.py +++ b/tests/infrastructure/helper_test.py @@ -14,6 +14,7 @@ is_scalar, Cast, formatter, + slugify, ) @@ -276,3 +277,30 @@ def fmt(val): # assert assert out == "Hello, I am Some One. I am 43 years old.\n" + + +class TestSlugify: + @staticmethod + def test_slugify_pass(): + a = "Some one goes here" + assert slugify(a) == "some-one-goes-here" + + a = "Some ONE GOES HERE" + assert slugify(a) == "some-one-goes-here" + + a = "So'me ONE GO_ES HERE" + assert slugify(a) == "some-one-go-es-here" + + @staticmethod + def test_slugify_fail(): + a = {} + with pytest.raises(TypeError): + slugify(a) + + a = [] + with pytest.raises(TypeError): + slugify(a) + + a = 1 + with pytest.raises(TypeError): + slugify(a) From 1a2d09f43fb0f24ba3ba55cc93ffc0a998a487a1 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 3 Nov 2023 12:59:20 +0600 Subject: [PATCH 031/245] feat: type of workflow supported stirngs --- chk/modules/workflow/entities.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 933967c7..40f392ab 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -2,11 +2,20 @@ Entities for workflow """ from __future__ import annotations + +import enum import typing from pydantic import BaseModel, Field, ConfigDict +class WorkflowUses(enum.StrEnum): + """Types of Workflow Uses""" + + fetch = enum.auto() + validate = enum.auto() + + class ParsedTask(BaseModel): """Parsed tasks""" From 665e9ed1993d2231548a765bbddf992878da16c5 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 3 Nov 2023 13:00:30 +0600 Subject: [PATCH 032/245] feat: support name and id for workflow refactor: improved name and id parsing --- chk/modules/workflow/__init__.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index a9504b2d..0cb50494 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -29,6 +29,7 @@ class WorkflowDocument(VersionedDocument): model_config = ConfigDict(extra="forbid") + name: str = Field(default_factory=str) id: str = Field(default_factory=str) tasks: list[ChkwareTask | ChkwareValidateTask] @@ -36,11 +37,26 @@ class WorkflowDocument(VersionedDocument): def from_file_context(ctx: FileContext) -> WorkflowDocument: """Create a WorkflowDocument from FileContext""" + # version if not (version_str := data_get(ctx.document, "version")): raise RuntimeError("`version:` not found.") - id_str = data_get(ctx.document, "id", pathlib.Path(ctx.filepath).stem) - + # id, name + if name_str := data_get(ctx.document, "name"): + name_str = str(name_str).strip() + + if id_str := data_get(ctx.document, "id"): + id_str = slugify(str(id_str).strip()) + else: + id_str = ( + slugify(name_str) + if name_str and len(name_str) > 0 + else pathlib.Path(ctx.filepath).stem, + ) + if not name_str: + name_str = id_str + + # tasks if not (tasks_lst := data_get(ctx.document, "tasks")): raise RuntimeError("`tasks:` not found.") @@ -61,7 +77,11 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: tasks.append(ChkwareValidateTask.from_parsed_task(parsed_task)) return WorkflowDocument( - context=tuple(ctx), version=version_str, id=id_str, tasks=tasks + context=tuple(ctx), + version=version_str, + name=name_str, + id=id_str, + tasks=tasks, ) def execute( From 70f9a40f16d7a9376c23bd3362c42ff01a2e65b3 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 3 Nov 2023 13:01:38 +0600 Subject: [PATCH 033/245] feat: add name and id to workflow doc --- tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk b/tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk index f576a5fd..47af6d4b 100644 --- a/tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk +++ b/tests/resources/storage/spec_docs/workflow/simple-btc-wf.chk @@ -1,5 +1,7 @@ version: default:workflow:0.8.0 -id: simpleBtcWf + +name: simple Btc workflow +id: simple Btc workflow 1 tasks: - name: Fetch some content from URL From 2607c523b1e6f88cf80f5a4041bf68811e7c6c90 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 3 Nov 2023 19:50:51 +0600 Subject: [PATCH 034/245] feat: initial workflow run for fetch done --- chk/modules/workflow/__init__.py | 55 +++++++++++++++++++++++- tests/modules/workflow/wf_domain_test.py | 13 +++++- 2 files changed, 65 insertions(+), 3 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 0cb50494..f9fc0ca7 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -10,14 +10,15 @@ from icecream import ic from chk.infrastructure.document import VersionedDocumentV2 as VersionedDocument +from chk.modules import validate, fetch from chk.modules.workflow.entities import ( ChkwareTask, ChkwareValidateTask, ParsedTask, WorkflowUses, ) -from chk.infrastructure.file_loader import FileContext, ExecuteContext -from chk.infrastructure.helper import data_get +from chk.infrastructure.file_loader import FileContext, ExecuteContext, PathFrom +from chk.infrastructure.helper import data_get, formatter, slugify from chk.infrastructure.symbol_table import Variables, VariableTableManager @@ -84,6 +85,56 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: tasks=tasks, ) + +class WorkflowDocumentSupport: + """Workflow document support""" + + @classmethod + def process_task_template( + cls, document: WorkflowDocument, variables: Variables + ) -> None: + ic(document) + formatter(f"\n\nExecuting: {document.name}") + + # fixme: for lenth of above string, repeat + formatter("-" * 10) + + for task in document.tasks: + fcx = FileContext(*document.context) + file_path = PathFrom(pathlib.Path(fcx.filepath)) + file_ctx: FileContext = FileContext.from_file(file_path.absolute(task.file)) + + del fcx, file_path + + execution_ctx = ExecuteContext( + {"dump": True, "format": True}, + # { + # "variables": combine_initial_variables( + # variables, + # except_msg="-V, --variables accept values as JSON object", + # ), + # "data": load_variables_as_dict( + # data, + # except_msg="-D, --data accept values as JSON object", + # ), + # }, + ) + + match task.uses: + case WorkflowUses.fetch.value: + formatter(f"\nTask: {task.name}") + exec_resp = fetch.call(file_ctx, execution_ctx) + + __method = data_get(exec_resp.file_ctx.document, "request.method") + __url = data_get(exec_resp.file_ctx.document, "request.url") + + formatter(f"\n{__method} {__url}") + + case WorkflowUses.validate.value: + print(WorkflowUses.validate.value) + # validate.execute(file_ctx, execution_ctx) + + def execute( ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... ) -> None: diff --git a/tests/modules/workflow/wf_domain_test.py b/tests/modules/workflow/wf_domain_test.py index f5f5a0bf..392ec886 100644 --- a/tests/modules/workflow/wf_domain_test.py +++ b/tests/modules/workflow/wf_domain_test.py @@ -4,7 +4,7 @@ """ from icecream import ic -from chk.modules.workflow import WorkflowDocument +from chk.modules.workflow import WorkflowDocument, WorkflowDocumentSupport from chk.modules.workflow.entities import ChkwareTask from tests import load_chk_file, load_file_ctx_for_file, SPEC_DIR @@ -34,3 +34,14 @@ def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): assert isinstance(wfdoc.tasks, list) assert all(isinstance(i, ChkwareTask) for i in wfdoc.tasks) + + +class TestWorkflowDocumentSupport: + @staticmethod + def test_process_task_template_pass(load_chk_file, load_file_ctx_for_file): + filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" + file_ctx = load_file_ctx_for_file(filepath) + + wfdoc = WorkflowDocument.from_file_context(file_ctx) + + WorkflowDocumentSupport.process_task_template(wfdoc, ...) From 6f6ed0d5d00f4807ede3028817d8ddc908c1043e Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 09:24:04 +0600 Subject: [PATCH 035/245] fix: tests for WorkflowDocument --- chk/modules/workflow/__init__.py | 3 ++- tests/modules/workflow/wf_domain_test.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index f9fc0ca7..2daae06d 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -52,8 +52,9 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: id_str = ( slugify(name_str) if name_str and len(name_str) > 0 - else pathlib.Path(ctx.filepath).stem, + else pathlib.Path(ctx.filepath).stem ) + if not name_str: name_str = id_str diff --git a/tests/modules/workflow/wf_domain_test.py b/tests/modules/workflow/wf_domain_test.py index 392ec886..64bc4af4 100644 --- a/tests/modules/workflow/wf_domain_test.py +++ b/tests/modules/workflow/wf_domain_test.py @@ -17,7 +17,7 @@ def test_from_file_context_pass(load_chk_file, load_file_ctx_for_file): file_ctx = load_file_ctx_for_file(filepath) wfdoc = WorkflowDocument.from_file_context(file_ctx) - assert wfdoc.id == "simpleBtcWf" + assert wfdoc.id == "simple-btc-workflow-1" assert isinstance(wfdoc.tasks, list) assert all(isinstance(i, ChkwareTask) for i in wfdoc.tasks) @@ -28,9 +28,10 @@ def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): file_ctx = load_file_ctx_for_file(filepath) del file_ctx.document["id"] # remove document id - wfdoc = WorkflowDocument.from_file_context(file_ctx) - assert wfdoc.id == "simple-btc-wf" # check if document id defaults to file name + + # check if document id defaults to file name + assert wfdoc.id == "simple-btc-workflow" assert isinstance(wfdoc.tasks, list) assert all(isinstance(i, ChkwareTask) for i in wfdoc.tasks) From e1519774faa468ca6a07eca8e4fec6de55a2a2d5 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 09:25:51 +0600 Subject: [PATCH 036/245] fix: remove load env test for combine_initial_variables --- tests/console/main_test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/console/main_test.py b/tests/console/main_test.py index 47c3c344..9605b6d6 100644 --- a/tests/console/main_test.py +++ b/tests/console/main_test.py @@ -34,7 +34,6 @@ def test_pass(): dct = combine_initial_variables(external_vars) assert isinstance(dct, dict) - assert "_ENV" in dct @staticmethod def test_fail_for_invalid_json(): From 2e3a448892afeed0bc6a04186c0cfb23cb6a64fc Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 12:03:18 +0600 Subject: [PATCH 037/245] feat: remove unused param doc --- chk/infrastructure/symbol_table.py | 1 - 1 file changed, 1 deletion(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 2798a213..26e61afc 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -197,7 +197,6 @@ def handle_environment(cls, variable_doc: Variables) -> None: Args: variable_doc: Variables; Variable store - exec_ctx: ExecuteContext; passed external context """ load_dotenv() variable_doc["_ENV"] = dict(os.environ) From df6e8dc166be85bcf76734a779f6f42743f491fb Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 12:03:39 +0600 Subject: [PATCH 038/245] fix: update json data struct as the API changed --- .../storage/spec_docs/validate/btc-usd-validate.chk | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/tests/resources/storage/spec_docs/validate/btc-usd-validate.chk b/tests/resources/storage/spec_docs/validate/btc-usd-validate.chk index cc651594..6b4f6729 100644 --- a/tests/resources/storage/spec_docs/validate/btc-usd-validate.chk +++ b/tests/resources/storage/spec_docs/validate/btc-usd-validate.chk @@ -3,16 +3,13 @@ version: default:validation:0.7.2 asserts: - { type: Equal, actual: <% _data.code %>, expected: 200, msg_pass: 'Response was successful with code `{type_actual}({value_actual})`' } - - { type: List, actual: <% _data.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } + - { type: Map, actual: <% _data.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } - { type: Str, actual: <% _data.code %>, msg_pass: 'Code `{type_actual}({value_actual})` is a string', msg_fail: 'Code `{type_actual}({value_actual})` is not a string', cast_actual_to: int } - { type: StrHave, actual: <% _data.info %>, other: "200 OK" } - - { type: Map, actual: <% _data.body.coin %> } - - { type: Map, actual: <% _data.body.coin %> } - - { type: List, actual: <% _data.body.coin.exp %> } - - { type: List, actual: <% _data.body.coin.exp %> } - - { type: Float, actual: <% _data.body.coin.price %> } - - { type: Float, actual: <% _data.body.coin.price %> } - - { type: MapHasKeys, actual: <% _data.body.coin %>, expected: [ "price", "priceBtc", "priceChange1d", "priceChange1h", "priceChange1w" ] } + - { type: Map, actual: <% _data.body %> } + - { type: List, actual: <% _data.body.explorers %> } + - { type: Float, actual: <% _data.body.price %> } + - { type: MapHasKeys, actual: <% _data.body %>, expected: [ "price", "priceBtc", "priceChange1d", "priceChange1h", "priceChange1w" ] } expose: - <% _asserts_response %> From 7191d4fe83aeb6dbdd5d784a6bc36441e220f80c Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 12:44:01 +0600 Subject: [PATCH 039/245] feat: use class signature from return --- chk/infrastructure/file_loader.py | 3 ++- chk/infrastructure/third_party/http_fetcher.py | 4 ++-- chk/modules/fetch.py | 5 +++-- chk/modules/validate/__init__.py | 5 ++--- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index e1189a58..85c592a2 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -1,6 +1,7 @@ """ File loader utility """ +from __future__ import annotations import hashlib from typing import NamedTuple from pathlib import Path @@ -81,7 +82,7 @@ class FileContext(NamedTuple): filepath_hash: str = "" @staticmethod - def from_file(file: str, **kwarg: dict) -> "FileContext": + def from_file(file: str, **kwarg: dict) -> FileContext: FileLoader.is_file_ok(file) absolute_path = str(Path(file).absolute()) fpath_hash = hashlib.sha256(absolute_path.encode("utf-8")).hexdigest() diff --git a/chk/infrastructure/third_party/http_fetcher.py b/chk/infrastructure/third_party/http_fetcher.py index 629d15f5..7763ec8b 100644 --- a/chk/infrastructure/third_party/http_fetcher.py +++ b/chk/infrastructure/third_party/http_fetcher.py @@ -1,7 +1,7 @@ """ Driver to handle requests library (https://pypi.org/project/requests/) """ - +from __future__ import annotations from collections import UserDict import requests @@ -37,7 +37,7 @@ def as_fmt_str(self) -> str: return presentation @staticmethod - def from_response(response: requests.Response) -> "ApiResponse": + def from_response(response: requests.Response) -> ApiResponse: """Create a ApiResponse object from requests.Response object Args: diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 47e4703a..f94731e6 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -1,6 +1,7 @@ """ Fetch module """ +from __future__ import annotations import dataclasses import enum import json @@ -318,7 +319,7 @@ class HttpDocument(VersionedDocument): request: dict = dataclasses.field(default_factory=dict) @staticmethod - def from_file_context(ctx: FileContext) -> "HttpDocument": + def from_file_context(ctx: FileContext) -> HttpDocument: """Create a HttpDocument from FileContext :param ctx: FileContext to create the HttpDocument from """ @@ -349,7 +350,7 @@ class ApiResponseDict(UserDict): body_as_dict: dict @staticmethod - def from_api_response(resp: ApiResponse) -> "ApiResponseDict": + def from_api_response(resp: ApiResponse) -> ApiResponseDict: """Create JsonApiResponse from ApiResponse Args: diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index d63206ed..aabf9e0c 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -1,11 +1,10 @@ """ Validate module """ - +from __future__ import annotations import dataclasses import enum import json -import operator from collections import abc import cerberus @@ -75,7 +74,7 @@ class ValidationDocument(VersionedDocument): asserts: list = dataclasses.field(default_factory=list) @staticmethod - def from_file_context(ctx: FileContext) -> "ValidationDocument": + def from_file_context(ctx: FileContext) -> ValidationDocument: """Create a ValidationDocument from FileContext :param ctx: FileContext to create the ValidationDocument from """ From 1a7533e7cbc0649d5501598d32d40535cd2a32ea Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 12:44:25 +0600 Subject: [PATCH 040/245] feat: add extra data field for ExecResponse --- chk/infrastructure/symbol_table.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 26e61afc..2c66b7f8 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -8,7 +8,7 @@ from collections.abc import Callable from dotenv import load_dotenv -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel, ConfigDict, Field from chk.infrastructure.document import VersionedDocument, VersionedDocumentV2 from chk.infrastructure.file_loader import FileContext, ExecuteContext @@ -73,6 +73,7 @@ class ExecResponse(BaseModel): exec_ctx: ExecuteContext variables_exec: ExposableVariables variables: Variables + extra: object = Field(default=None) @typing.overload From ac4fba268bbea2188cf49444916647d28927e815 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 12:44:52 +0600 Subject: [PATCH 041/245] feat: call function in validate module --- chk/modules/validate/__init__.py | 62 ++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index aabf9e0c..e91fc40e 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -22,6 +22,7 @@ replace_value, ExposeManager, ExposableVariables, + ExecResponse, ) from chk.modules.validate.assertion_services import ( AssertionEntry, @@ -234,18 +235,10 @@ def display(expose_list: list, exec_ctx: ExecuteContext) -> None: ) -def execute( - ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... -) -> None: - """Run a validation document +def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: + """Call a validation document""" - Args: - ctx: FileContext object to handle - exec_ctx: ExecuteContext - cb: Callable - """ - - validate_doc = ValidationDocument.from_file_context(ctx) + validate_doc = ValidationDocument.from_file_context(file_ctx) DocumentVersionMaker.verify_if_allowed( DocumentVersionMaker.from_dict(validate_doc.as_dict), VERSION_SCOPE @@ -267,20 +260,43 @@ def execute( ) test_run_result = AssertionEntryListRunner.test_run(assert_list, variable_doc.data) + output_data = ExposableVariables( + { + "_asserts_response": test_run_result.as_dict, + "_data": variable_doc["_data"], + } + ) - exposed_data = ExposeManager.get_exposed_replaced_data( - validate_doc, - {**variable_doc.data, **{"_asserts_response": test_run_result}}, + return ExecResponse( + file_ctx=file_ctx, + exec_ctx=exec_ctx, + variables_exec=output_data, + variables=variable_doc, + extra=test_run_result, ) - ValidationDocumentSupport.display(exposed_data, exec_ctx) - cb( + +def execute( + ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... +) -> None: + """Run a validation document + + Args: + ctx: FileContext object to handle + exec_ctx: ExecuteContext + cb: Callable + """ + + exec_response = call(file_ctx=ctx, exec_ctx=exec_ctx) + + validate_doc = ValidationDocument.from_file_context(ctx) + exposed_data = ExposeManager.get_exposed_replaced_data( + validate_doc, { - ctx.filepath_hash: ExposableVariables( - { - "_asserts_response": test_run_result.as_dict, - "_data": variable_doc["_data"], - } - ).data - } + **exec_response.variables.data, + **{"_asserts_response": exec_response.extra}, + }, ) + + cb({ctx.filepath_hash: exec_response.variables_exec.data}) + ValidationDocumentSupport.display(exposed_data, exec_ctx) From 6e71a59beadd389a5b0b42adc1cac6ea8f7c95c7 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 12:46:34 +0600 Subject: [PATCH 042/245] feat: simple data validation spec --- .../spec_docs/validate/simple-external-data-test.chk | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 tests/resources/storage/spec_docs/validate/simple-external-data-test.chk diff --git a/tests/resources/storage/spec_docs/validate/simple-external-data-test.chk b/tests/resources/storage/spec_docs/validate/simple-external-data-test.chk new file mode 100644 index 00000000..f53372f8 --- /dev/null +++ b/tests/resources/storage/spec_docs/validate/simple-external-data-test.chk @@ -0,0 +1,10 @@ +--- +version: default:validation:0.7.2 + +asserts: + - { type: Equal, actual: <% _data.code %>, expected: 200 } + - { type: IntegerGreaterOrEqual, actual: <% _data.age %>, other: 18 } + +expose: + - <% _asserts_response %> + - <% _data %> From 61d6877561764d335b93f4137a1d246d07d15f79 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 5 Nov 2023 13:00:57 +0600 Subject: [PATCH 043/245] feat: dumping output for workflow --- chk/modules/workflow/__init__.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 2daae06d..c3e250b8 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -94,11 +94,8 @@ class WorkflowDocumentSupport: def process_task_template( cls, document: WorkflowDocument, variables: Variables ) -> None: - ic(document) formatter(f"\n\nExecuting: {document.name}") - - # fixme: for lenth of above string, repeat - formatter("-" * 10) + formatter("-" * len(f"Executing: {document.name}")) for task in document.tasks: fcx = FileContext(*document.context) @@ -120,20 +117,28 @@ def process_task_template( # ), # }, ) + formatter(f"\nTask: {task.name}") match task.uses: case WorkflowUses.fetch.value: - formatter(f"\nTask: {task.name}") exec_resp = fetch.call(file_ctx, execution_ctx) __method = data_get(exec_resp.file_ctx.document, "request.method") __url = data_get(exec_resp.file_ctx.document, "request.url") - formatter(f"\n{__method} {__url}") + formatter(f"-> {__method} {__url}") case WorkflowUses.validate.value: - print(WorkflowUses.validate.value) - # validate.execute(file_ctx, execution_ctx) + exec_resp = validate.call(file_ctx, execution_ctx) + + __count_all = data_get( + exec_resp.variables_exec.data, "_asserts_response.count_all" + ) + __count_fail = data_get( + exec_resp.variables_exec.data, "_asserts_response.count_fail" + ) + + formatter(f"-> Total tests: {__count_all}, Failed: {__count_fail}") def execute( From 1b4066bea78aa1ae851cc9142b78437d55da226b Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 15 Nov 2023 09:35:13 +0600 Subject: [PATCH 044/245] chore: update packages --- Pipfile.lock | 7 ++++--- requirements-dev.txt | 7 +++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index e2e2ee46..0cdd95d8 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -714,10 +714,11 @@ }, "executing": { "hashes": [ - "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657", - "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08" + "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", + "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc" ], - "version": "==2.0.0" + "markers": "python_version >= '3.5'", + "version": "==2.0.1" }, "docopt": { "hashes": [ diff --git a/requirements-dev.txt b/requirements-dev.txt index a8a31018..f75be301 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -17,7 +17,7 @@ frozenlist==1.4.1; python_version >= '3.8' idna==3.7; python_version >= '3.5' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' dill==0.3.7; python_version >= '3.11' -executing==2.0.0 +executing==2.0.1; python_version >= '3.5' flake8==6.1.0; python_full_version >= '3.8.1' frozenlist==1.4.0; python_version >= '3.8' icecream==2.1.3 @@ -54,9 +54,8 @@ defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, jinja2==3.1.4; python_version >= '3.7' markupsafe==2.1.5; python_version >= '3.7' python-dotenv==1.0.1; python_version >= '3.8' -pydantic==2.4.2; python_version >= '3.7' -pydantic-core==2.10.1; python_version >= '3.7' -python-dotenv==1.0.0; python_version >= '3.8' +pydantic==2.5.0; python_version >= '3.7' +pydantic-core==2.14.1; python_version >= '3.7' pyyaml==6.0.1; python_version >= '3.6' requests==2.31.0; python_version >= '3.7' xmltodict==0.13.0; python_version >= '3.4' From b8fe45d73564da393ae4d7e81b7da42084d90dde Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 15 Nov 2023 10:01:55 +0600 Subject: [PATCH 045/245] refactor: update to avoid slow regular expressions is security-sensitive --- chk/infrastructure/helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/infrastructure/helper.py b/chk/infrastructure/helper.py index e60b2194..0a8386ed 100644 --- a/chk/infrastructure/helper.py +++ b/chk/infrastructure/helper.py @@ -187,5 +187,5 @@ def slugify(string: str) -> str: string = string.lower().strip() string = re.sub(r"[^\w\s-]", "", string) string = re.sub(r"[\s_-]+", "-", string) - string = re.sub(r"^-+|-+$", "", string) + string = re.sub(r"-{2,}", "", string) return string From 2d641d855307682e85190fc1bd9c5c56c3b469ad Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 21 Nov 2023 07:38:35 +0600 Subject: [PATCH 046/245] chore: package version update --- Pipfile.lock | 172 +++++++++++++++++++++++-------------------- requirements-dev.txt | 4 +- 2 files changed, 96 insertions(+), 80 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 0cdd95d8..3fdd9a95 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1030,11 +1030,11 @@ }, "pygments": { "hashes": [ - "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692", - "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29" + "sha256:1b37f1b1e1bff2af52ecaf28cc601e2ef7077000b227a0675da25aef85784bc4", + "sha256:e45a0e74bf9c530f564ca81b8952343be986a29f6afe7f5ad95c5f06b7bdf5e8" ], "markers": "python_version >= '3.7'", - "version": "==2.16.1" + "version": "==2.17.1" }, "pylint": { "hashes": [ @@ -1124,83 +1124,99 @@ }, "yarl": { "hashes": [ - "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", - "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", - "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", - "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", - "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", - "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", - "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", - "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", - "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", - "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", - "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", - "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", - "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", - "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", - "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", - "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", - "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", - "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", - "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", - "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", - "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", - "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", - "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", - "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", - "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", - "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", - "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", - "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", - "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", - "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", - "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", - "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", - "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", - "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", - "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", - "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", - "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", - "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", - "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", - "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", - "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", - "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", - "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", - "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", - "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", - "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", - "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", - "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", - "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", - "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", - "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", - "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", - "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", - "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", - "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", - "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", - "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", - "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", - "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", - "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", - "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", - "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", - "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", - "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", - "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", - "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", - "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", - "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", - "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", - "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", - "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", - "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", - "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", - "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" + "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4", + "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb", + "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d", + "sha256:126638ab961633f0940a06e1c9d59919003ef212a15869708dcb7305f91a6732", + "sha256:1a0a4f3aaa18580038cfa52a7183c8ffbbe7d727fe581300817efc1e96d1b0e9", + "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363", + "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613", + "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929", + "sha256:28a108cb92ce6cf867690a962372996ca332d8cda0210c5ad487fe996e76b8bb", + "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279", + "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f", + "sha256:2dad8166d41ebd1f76ce107cf6a31e39801aee3844a54a90af23278b072f1ccf", + "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17", + "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e", + "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab", + "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808", + "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9", + "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e", + "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd", + "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57", + "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e", + "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d", + "sha256:51382c72dd5377861b573bd55dcf680df54cea84147c8648b15ac507fbef984d", + "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff", + "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67", + "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a", + "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4", + "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a", + "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70", + "sha256:66a6dbf6ca7d2db03cc61cafe1ee6be838ce0fbc97781881a22a58a7c5efef42", + "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682", + "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7", + "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92", + "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65", + "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566", + "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6", + "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752", + "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361", + "sha256:7eaf13af79950142ab2bbb8362f8d8d935be9aaf8df1df89c86c3231e4ff238a", + "sha256:828235a2a169160ee73a2fcfb8a000709edf09d7511fccf203465c3d5acc59e4", + "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3", + "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7", + "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6", + "sha256:8dab30b21bd6fb17c3f4684868c7e6a9e8468078db00f599fb1c14e324b10fca", + "sha256:8f18a7832ff85dfcd77871fe677b169b1bc60c021978c90c3bb14f727596e0ae", + "sha256:946db4511b2d815979d733ac6a961f47e20a29c297be0d55b6d4b77ee4b298f6", + "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7", + "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8", + "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e", + "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d", + "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41", + "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196", + "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc", + "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce", + "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321", + "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90", + "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067", + "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281", + "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a", + "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225", + "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96", + "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de", + "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e", + "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a", + "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642", + "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10", + "sha256:c99ddaddb2fbe04953b84d1651149a0d85214780e4d0ee824e610ab549d98d92", + "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423", + "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3", + "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080", + "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93", + "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403", + "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6", + "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd", + "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f", + "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb", + "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d", + "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a", + "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f", + "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d", + "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f", + "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88", + "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b", + "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a", + "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696", + "sha256:fc391e3941045fd0987c77484b2799adffd08e4b6735c4ee5f054366a2e1551d", + "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130", + "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41", + "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7", + "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2" ], "markers": "python_version >= '3.7'", - "version": "==1.9.2" + "version": "==1.9.3" } } } \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index f75be301..f3fa9da1 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -54,8 +54,8 @@ defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, jinja2==3.1.4; python_version >= '3.7' markupsafe==2.1.5; python_version >= '3.7' python-dotenv==1.0.1; python_version >= '3.8' -pydantic==2.5.0; python_version >= '3.7' -pydantic-core==2.14.1; python_version >= '3.7' +pydantic==2.5.1; python_version >= '3.7' +pydantic-core==2.14.3; python_version >= '3.7' pyyaml==6.0.1; python_version >= '3.6' requests==2.31.0; python_version >= '3.7' xmltodict==0.13.0; python_version >= '3.4' From 5cd10ac3723cda88181fdcfef526fa24f24c6e0b Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 21 Nov 2023 08:01:22 +0600 Subject: [PATCH 047/245] feat: pass dict data from context --- chk/modules/workflow/__init__.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index c3e250b8..0f81fb8e 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -106,16 +106,15 @@ def process_task_template( execution_ctx = ExecuteContext( {"dump": True, "format": True}, - # { - # "variables": combine_initial_variables( - # variables, - # except_msg="-V, --variables accept values as JSON object", - # ), - # "data": load_variables_as_dict( - # data, - # except_msg="-D, --data accept values as JSON object", - # ), - # }, + { + # "variables": combine_initial_variables( + # variables, + # except_msg="-V, --variables accept values as JSON object", + # ), + "data": task.arguments.data + if isinstance(task, ChkwareValidateTask) and task.arguments + else {}, + }, ) formatter(f"\nTask: {task.name}") From 54d788697112ed8f8bb86eb4ccafe582d16e8a53 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 28 Nov 2023 21:02:35 +0600 Subject: [PATCH 048/245] refactor: separation of data parsing --- chk/modules/workflow/__init__.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 0f81fb8e..659e95ee 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -90,6 +90,15 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: class WorkflowDocumentSupport: """Workflow document support""" + @classmethod + def _prepare_validate_task_argument_data_(cls, task: ChkwareTask) -> dict: + """Prepare data for ChkwareValidateTask.arguments.data""" + + if isinstance(task, ChkwareValidateTask) and task.arguments: + return task.arguments.data + + return {} + @classmethod def process_task_template( cls, document: WorkflowDocument, variables: Variables @@ -111,9 +120,6 @@ def process_task_template( # variables, # except_msg="-V, --variables accept values as JSON object", # ), - "data": task.arguments.data - if isinstance(task, ChkwareValidateTask) and task.arguments - else {}, }, ) formatter(f"\nTask: {task.name}") @@ -128,6 +134,10 @@ def process_task_template( formatter(f"-> {__method} {__url}") case WorkflowUses.validate.value: + execution_ctx.arguments[ + "data" + ] = cls._prepare_validate_task_argument_data_(task) + exec_resp = validate.call(file_ctx, execution_ctx) __count_all = data_get( From a7bbe4135559f6e2251f031a04d725696c1b61ef Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 24 Dec 2023 18:51:04 +0600 Subject: [PATCH 049/245] chore: pkg version update after conflict resolve --- Pipfile.lock | 348 ++++++++++++++++++++++--------------------- requirements-dev.txt | 10 +- 2 files changed, 187 insertions(+), 171 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 3fdd9a95..d4017050 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -309,11 +309,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", - "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" + "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", + "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" ], "markers": "python_version >= '3.8'", - "version": "==4.8.0" + "version": "==4.9.0" }, "urllib3": { "hashes": [ @@ -737,70 +737,86 @@ }, "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" + "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", + "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98", + "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad", + "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5", + "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae", + "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e", + "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a", + "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701", + "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d", + "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6", + "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6", + "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106", + "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75", + "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868", + "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a", + "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0", + "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1", + "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826", + "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec", + "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6", + "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950", + "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19", + "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0", + "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8", + "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a", + "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09", + "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86", + "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c", + "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5", + "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b", + "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b", + "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d", + "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0", + "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea", + "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776", + "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a", + "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897", + "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7", + "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09", + "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9", + "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe", + "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd", + "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742", + "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09", + "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0", + "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932", + "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1", + "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a", + "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49", + "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d", + "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7", + "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480", + "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89", + "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e", + "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b", + "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82", + "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb", + "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068", + "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8", + "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b", + "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb", + "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2", + "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11", + "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b", + "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc", + "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0", + "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497", + "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17", + "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0", + "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2", + "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439", + "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5", + "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac", + "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825", + "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887", + "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced", + "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74" ], "markers": "python_version >= '3.8'", - "version": "==1.4.0" + "version": "==1.4.1" }, "icecream": { "hashes": [ @@ -828,11 +844,11 @@ }, "isort": { "hashes": [ - "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504", - "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" + "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", + "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6" ], "markers": "python_full_version >= '3.8.0'", - "version": "==5.12.0" + "version": "==5.13.2" }, "mccabe": { "hashes": [ @@ -990,11 +1006,11 @@ }, "pathspec": { "hashes": [ - "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", - "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" + "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", + "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" ], - "markers": "python_version >= '3.7'", - "version": "==0.11.2" + "markers": "python_version >= '3.8'", + "version": "==0.12.1" }, "platformdirs": { "hashes": [ @@ -1030,11 +1046,11 @@ }, "pygments": { "hashes": [ - "sha256:1b37f1b1e1bff2af52ecaf28cc601e2ef7077000b227a0675da25aef85784bc4", - "sha256:e45a0e74bf9c530f564ca81b8952343be986a29f6afe7f5ad95c5f06b7bdf5e8" + "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c", + "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" ], "markers": "python_version >= '3.7'", - "version": "==2.17.1" + "version": "==2.17.2" }, "pylint": { "hashes": [ @@ -1124,99 +1140,99 @@ }, "yarl": { "hashes": [ - "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4", - "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb", - "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d", - "sha256:126638ab961633f0940a06e1c9d59919003ef212a15869708dcb7305f91a6732", - "sha256:1a0a4f3aaa18580038cfa52a7183c8ffbbe7d727fe581300817efc1e96d1b0e9", - "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363", - "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613", - "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929", - "sha256:28a108cb92ce6cf867690a962372996ca332d8cda0210c5ad487fe996e76b8bb", - "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279", - "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f", - "sha256:2dad8166d41ebd1f76ce107cf6a31e39801aee3844a54a90af23278b072f1ccf", - "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17", - "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e", - "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab", - "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808", - "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9", - "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e", - "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd", - "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57", - "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e", - "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d", - "sha256:51382c72dd5377861b573bd55dcf680df54cea84147c8648b15ac507fbef984d", - "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff", - "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67", - "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a", - "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4", - "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a", - "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70", - "sha256:66a6dbf6ca7d2db03cc61cafe1ee6be838ce0fbc97781881a22a58a7c5efef42", - "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682", - "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7", - "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92", - "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65", - "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566", - "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6", - "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752", - "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361", - "sha256:7eaf13af79950142ab2bbb8362f8d8d935be9aaf8df1df89c86c3231e4ff238a", - "sha256:828235a2a169160ee73a2fcfb8a000709edf09d7511fccf203465c3d5acc59e4", - "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3", - "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7", - "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6", - "sha256:8dab30b21bd6fb17c3f4684868c7e6a9e8468078db00f599fb1c14e324b10fca", - "sha256:8f18a7832ff85dfcd77871fe677b169b1bc60c021978c90c3bb14f727596e0ae", - "sha256:946db4511b2d815979d733ac6a961f47e20a29c297be0d55b6d4b77ee4b298f6", - "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7", - "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8", - "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e", - "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d", - "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41", - "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196", - "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc", - "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce", - "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321", - "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90", - "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067", - "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281", - "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a", - "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225", - "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96", - "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de", - "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e", - "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a", - "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642", - "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10", - "sha256:c99ddaddb2fbe04953b84d1651149a0d85214780e4d0ee824e610ab549d98d92", - "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423", - "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3", - "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080", - "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93", - "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403", - "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6", - "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd", - "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f", - "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb", - "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d", - "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a", - "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f", - "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d", - "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f", - "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88", - "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b", - "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a", - "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696", - "sha256:fc391e3941045fd0987c77484b2799adffd08e4b6735c4ee5f054366a2e1551d", - "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130", - "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41", - "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7", - "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2" + "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", + "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce", + "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559", + "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0", + "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81", + "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc", + "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4", + "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c", + "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130", + "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136", + "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e", + "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec", + "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7", + "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1", + "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455", + "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099", + "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129", + "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10", + "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142", + "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98", + "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa", + "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7", + "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525", + "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c", + "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9", + "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c", + "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8", + "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b", + "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf", + "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23", + "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd", + "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27", + "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f", + "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece", + "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434", + "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec", + "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff", + "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78", + "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d", + "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863", + "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53", + "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31", + "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15", + "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5", + "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b", + "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57", + "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3", + "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1", + "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f", + "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad", + "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c", + "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7", + "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2", + "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b", + "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2", + "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b", + "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9", + "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be", + "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e", + "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984", + "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4", + "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074", + "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2", + "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392", + "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91", + "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541", + "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf", + "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572", + "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66", + "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575", + "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14", + "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5", + "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1", + "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e", + "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551", + "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17", + "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead", + "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0", + "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe", + "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234", + "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0", + "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7", + "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34", + "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42", + "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385", + "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78", + "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be", + "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958", + "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749", + "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec" ], "markers": "python_version >= '3.7'", - "version": "==1.9.3" + "version": "==1.9.4" } } } \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index f3fa9da1..16d20055 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -19,11 +19,11 @@ colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3. dill==0.3.7; python_version >= '3.11' executing==2.0.1; python_version >= '3.5' flake8==6.1.0; python_full_version >= '3.8.1' -frozenlist==1.4.0; python_version >= '3.8' +frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 -idna==3.4; python_version >= '3.5' +idna==3.6; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' -isort==5.12.0; python_full_version >= '3.8.0' +isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' multidict==6.0.5; python_version >= '3.7' mypy==1.11.1; python_version >= '3.8' @@ -54,8 +54,8 @@ defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, jinja2==3.1.4; python_version >= '3.7' markupsafe==2.1.5; python_version >= '3.7' python-dotenv==1.0.1; python_version >= '3.8' -pydantic==2.5.1; python_version >= '3.7' -pydantic-core==2.14.3; python_version >= '3.7' +pydantic==2.5.3; python_version >= '3.7' +pydantic-core==2.14.6; python_version >= '3.7' pyyaml==6.0.1; python_version >= '3.6' requests==2.31.0; python_version >= '3.7' xmltodict==0.13.0; python_version >= '3.4' From f4374ee1ed4c0092351f559a46e6150c8733b0a0 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 1 May 2024 12:17:28 +0600 Subject: [PATCH 050/245] chore: package version update after rebase --- Pipfile.lock | 160 +++++++++++++++++++++++++------------------ requirements-dev.txt | 10 +-- requirements.txt | 6 +- 3 files changed, 103 insertions(+), 73 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index d4017050..18a03820 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -156,8 +156,8 @@ }, "pydantic": { "hashes": [ - "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", - "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d" + "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa", + "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90" ], "index": "pypi", "markers": "python_version >= '3.7'", @@ -165,69 +165,88 @@ }, "pydantic-core": { "hashes": [ - "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", - "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", - "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", - "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", - "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", - "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", - "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", - "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df", - "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", - "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", - "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", - "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", - "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", - "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371", - "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2", - "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", - "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52", - "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", - "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", - "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", - "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", - "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", - "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", - "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", - "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", - "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", - "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", - "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", - "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", - "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9", - "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", - "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", - "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", - "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", - "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", - "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", - "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a", - "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", - "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", - "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", - "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", - "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", - "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", - "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", - "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", - "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f", - "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50", - "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", - "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", - "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", - "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", - "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", - "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", - "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", - "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf", - "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", - "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", - "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", - "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", - "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68" + "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b", + "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a", + "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90", + "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d", + "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e", + "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d", + "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027", + "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804", + "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347", + "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400", + "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3", + "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399", + "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349", + "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd", + "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c", + "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e", + "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413", + "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3", + "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e", + "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3", + "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91", + "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce", + "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c", + "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb", + "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664", + "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6", + "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd", + "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3", + "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af", + "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043", + "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350", + "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7", + "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0", + "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563", + "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761", + "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72", + "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3", + "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb", + "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788", + "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b", + "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c", + "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038", + "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250", + "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec", + "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c", + "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74", + "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81", + "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439", + "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75", + "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0", + "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8", + "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150", + "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438", + "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae", + "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857", + "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038", + "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374", + "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f", + "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241", + "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592", + "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4", + "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d", + "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b", + "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b", + "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182", + "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e", + "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641", + "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70", + "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9", + "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a", + "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543", + "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b", + "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f", + "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38", + "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845", + "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2", + "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0", + "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4", + "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242" ], - "markers": "python_version >= '3.7'", - "version": "==2.1.5" + "markers": "python_version >= '3.8'", + "version": "==2.18.2" }, "python-dotenv": { "hashes": [ @@ -309,11 +328,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", + "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" ], "markers": "python_version >= '3.8'", - "version": "==4.9.0" + "version": "==4.11.0" }, "urllib3": { "hashes": [ @@ -454,6 +473,13 @@ "markers": "python_full_version >= '3.8.0'", "version": "==3.2.4" }, + "asttokens": { + "hashes": [ + "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", + "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0" + ], + "version": "==2.4.1" + }, "attrs": { "hashes": [ "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", diff --git a/requirements-dev.txt b/requirements-dev.txt index 16d20055..5e90678e 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -16,12 +16,12 @@ flake8==7.1.1; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' idna==3.7; python_version >= '3.5' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' -dill==0.3.7; python_version >= '3.11' +dill==0.3.8; python_version >= '3.11' executing==2.0.1; python_version >= '3.5' -flake8==6.1.0; python_full_version >= '3.8.1' +flake8==7.0.0; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 -idna==3.6; python_version >= '3.5' +idna==3.7; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' @@ -53,9 +53,9 @@ charset-normalizer==3.3.2; python_full_version >= '3.7.0' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' jinja2==3.1.4; python_version >= '3.7' markupsafe==2.1.5; python_version >= '3.7' +pydantic==2.7.1; python_version >= '3.8' +pydantic-core==2.18.2; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' -pydantic==2.5.3; python_version >= '3.7' -pydantic-core==2.14.6; python_version >= '3.7' pyyaml==6.0.1; python_version >= '3.6' requests==2.31.0; python_version >= '3.7' xmltodict==0.13.0; python_version >= '3.4' diff --git a/requirements.txt b/requirements.txt index 2e0fb411..639f30a5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,8 +7,12 @@ defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, idna==3.7; python_version >= '3.5' jinja2==3.1.4; python_version >= '3.7' markupsafe==2.1.5; python_version >= '3.7' +pydantic==2.7.1; python_version >= '3.8' +pydantic-core==2.18.2; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.2; python_version >= '3.8' requests==2.32.3; python_version >= '3.8' -urllib3==2.2.2; python_version >= '3.8' +requests==2.31.0; python_version >= '3.7' +typing-extensions==4.11.0; python_version >= '3.8' +urllib3==2.2.1; python_version >= '3.8' xmltodict==0.13.0; python_version >= '3.4' From d2a7c7cf4be63d083f459f7f63ea58c177160061 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 19 May 2024 11:26:36 +0600 Subject: [PATCH 051/245] chore: package update 19.MAY.2024 --- Pipfile.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 18a03820..7f594850 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -156,12 +156,12 @@ }, "pydantic": { "hashes": [ - "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa", - "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90" + "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5", + "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc" ], "index": "pypi", - "markers": "python_version >= '3.7'", - "version": "==3.1.4" + "markers": "python_version >= '3.8'", + "version": "==2.7.1" }, "pydantic-core": { "hashes": [ @@ -1072,11 +1072,11 @@ }, "pygments": { "hashes": [ - "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c", - "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" + "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", + "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a" ], - "markers": "python_version >= '3.7'", - "version": "==2.17.2" + "markers": "python_version >= '3.8'", + "version": "==2.18.0" }, "pylint": { "hashes": [ @@ -1261,4 +1261,4 @@ "version": "==1.9.4" } } -} \ No newline at end of file +} From a04af76b4f039ca3df75a43f8eabf4e5f4f23b56 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 1 Jun 2024 20:12:56 +0600 Subject: [PATCH 052/245] chore: package version update --- Pipfile.lock | 217 +++++++++++++++++++++++-------------------- requirements-dev.txt | 11 +-- requirements.txt | 11 +-- 3 files changed, 123 insertions(+), 116 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 7f594850..1ca2f555 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "87e664a0e25e7b0a590fdf2ef6c7be3266ff1e1081d362423814e68f053cb8d8" + "sha256": "f8c6919125a2785629423933df305e4dbc6c5ccf65b6284fd305a499effbfe4e" }, "pipfile-spec": 6, "requires": { @@ -16,6 +16,14 @@ ] }, "default": { + "annotated-types": { + "hashes": [ + "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", + "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89" + ], + "markers": "python_version >= '3.8'", + "version": "==0.7.0" + }, "cerberus": { "hashes": [ "sha256:7649a5815024d18eb7c6aa5e7a95355c649a53aacfc9b050e9d0bf6bfa2af372", @@ -156,97 +164,97 @@ }, "pydantic": { "hashes": [ - "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5", - "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc" + "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7", + "sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==2.7.1" + "version": "==2.7.2" }, "pydantic-core": { "hashes": [ - "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b", - "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a", - "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90", - "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d", - "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e", - "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d", - "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027", - "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804", - "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347", - "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400", - "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3", - "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399", - "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349", - "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd", - "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c", - "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e", - "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413", - "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3", - "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e", - "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3", - "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91", - "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce", - "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c", - "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb", - "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664", - "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6", - "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd", - "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3", - "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af", - "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043", - "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350", - "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7", - "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0", - "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563", - "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761", - "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72", - "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3", - "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb", - "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788", - "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b", - "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c", - "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038", - "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250", - "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec", - "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c", - "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74", - "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81", - "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439", - "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75", - "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0", - "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8", - "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150", - "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438", - "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae", - "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857", - "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038", - "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374", - "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f", - "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241", - "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592", - "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4", - "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d", - "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b", - "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b", - "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182", - "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e", - "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641", - "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70", - "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9", - "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a", - "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543", - "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b", - "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f", - "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38", - "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845", - "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2", - "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0", - "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4", - "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242" + "sha256:0bee9bb305a562f8b9271855afb6ce00223f545de3d68560b3c1649c7c5295e9", + "sha256:0ecce4b2360aa3f008da3327d652e74a0e743908eac306198b47e1c58b03dd2b", + "sha256:17954d784bf8abfc0ec2a633108207ebc4fa2df1a0e4c0c3ccbaa9bb01d2c426", + "sha256:19d2e725de0f90d8671f89e420d36c3dd97639b98145e42fcc0e1f6d492a46dc", + "sha256:1f9cd7f5635b719939019be9bda47ecb56e165e51dd26c9a217a433e3d0d59a9", + "sha256:200ad4e3133cb99ed82342a101a5abf3d924722e71cd581cc113fe828f727fbc", + "sha256:24b214b7ee3bd3b865e963dbed0f8bc5375f49449d70e8d407b567af3222aae4", + "sha256:2c44efdd3b6125419c28821590d7ec891c9cb0dff33a7a78d9d5c8b6f66b9702", + "sha256:2c8333f6e934733483c7eddffdb094c143b9463d2af7e6bd85ebcb2d4a1b82c6", + "sha256:2f7ef5f0ebb77ba24c9970da18b771711edc5feaf00c10b18461e0f5f5949231", + "sha256:304378b7bf92206036c8ddd83a2ba7b7d1a5b425acafff637172a3aa72ad7083", + "sha256:370059b7883485c9edb9655355ff46d912f4b03b009d929220d9294c7fd9fd60", + "sha256:37b40c05ced1ba4218b14986fe6f283d22e1ae2ff4c8e28881a70fb81fbfcda7", + "sha256:3d3e42bb54e7e9d72c13ce112e02eb1b3b55681ee948d748842171201a03a98a", + "sha256:3fc1c7f67f34c6c2ef9c213e0f2a351797cda98249d9ca56a70ce4ebcaba45f4", + "sha256:41dbdcb0c7252b58fa931fec47937edb422c9cb22528f41cb8963665c372caf6", + "sha256:432e999088d85c8f36b9a3f769a8e2b57aabd817bbb729a90d1fe7f18f6f1f39", + "sha256:45e4ffbae34f7ae30d0047697e724e534a7ec0a82ef9994b7913a412c21462a0", + "sha256:4afa5f5973e8572b5c0dcb4e2d4fda7890e7cd63329bd5cc3263a25c92ef0026", + "sha256:544a9a75622357076efb6b311983ff190fbfb3c12fc3a853122b34d3d358126c", + "sha256:5560dda746c44b48bf82b3d191d74fe8efc5686a9ef18e69bdabccbbb9ad9442", + "sha256:58ff8631dbab6c7c982e6425da8347108449321f61fe427c52ddfadd66642af7", + "sha256:5a64faeedfd8254f05f5cf6fc755023a7e1606af3959cfc1a9285744cc711044", + "sha256:60e4c625e6f7155d7d0dcac151edf5858102bc61bf959d04469ca6ee4e8381bd", + "sha256:616221a6d473c5b9aa83fa8982745441f6a4a62a66436be9445c65f241b86c94", + "sha256:63081a49dddc6124754b32a3774331467bfc3d2bd5ff8f10df36a95602560361", + "sha256:666e45cf071669fde468886654742fa10b0e74cd0fa0430a46ba6056b24fb0af", + "sha256:67bc078025d70ec5aefe6200ef094576c9d86bd36982df1301c758a9fff7d7f4", + "sha256:691018785779766127f531674fa82bb368df5b36b461622b12e176c18e119022", + "sha256:6a36f78674cbddc165abab0df961b5f96b14461d05feec5e1f78da58808b97e7", + "sha256:6afd5c867a74c4d314c557b5ea9520183fadfbd1df4c2d6e09fd0d990ce412cd", + "sha256:6b32c2a1f8032570842257e4c19288eba9a2bba4712af542327de9a1204faff8", + "sha256:6e59fca51ffbdd1638b3856779342ed69bcecb8484c1d4b8bdb237d0eb5a45e2", + "sha256:70cf099197d6b98953468461d753563b28e73cf1eade2ffe069675d2657ed1d5", + "sha256:73038d66614d2e5cde30435b5afdced2b473b4c77d4ca3a8624dd3e41a9c19be", + "sha256:744697428fcdec6be5670460b578161d1ffe34743a5c15656be7ea82b008197c", + "sha256:77319771a026f7c7d29c6ebc623de889e9563b7087911b46fd06c044a12aa5e9", + "sha256:7a20dded653e516a4655f4c98e97ccafb13753987434fe7cf044aa25f5b7d417", + "sha256:7e6382ce89a92bc1d0c0c5edd51e931432202b9080dc921d8d003e616402efd1", + "sha256:7fdd362f6a586e681ff86550b2379e532fee63c52def1c666887956748eaa326", + "sha256:80aea0ffeb1049336043d07799eace1c9602519fb3192916ff525b0287b2b1e4", + "sha256:82f2718430098bcdf60402136c845e4126a189959d103900ebabb6774a5d9fdb", + "sha256:855ec66589c68aa367d989da5c4755bb74ee92ccad4fdb6af942c3612c067e34", + "sha256:9128089da8f4fe73f7a91973895ebf2502539d627891a14034e45fb9e707e26d", + "sha256:929c24e9dea3990bc8bcd27c5f2d3916c0c86f5511d2caa69e0d5290115344a9", + "sha256:98ed737567d8f2ecd54f7c8d4f8572ca7c7921ede93a2e52939416170d357812", + "sha256:9a46795b1f3beb167eaee91736d5d17ac3a994bf2215a996aed825a45f897558", + "sha256:9f9e04afebd3ed8c15d67a564ed0a34b54e52136c6d40d14c5547b238390e779", + "sha256:a4e651e47d981c1b701dcc74ab8fec5a60a5b004650416b4abbef13db23bc7be", + "sha256:a62e437d687cc148381bdd5f51e3e81f5b20a735c55f690c5be94e05da2b0d5c", + "sha256:aaee40f25bba38132e655ffa3d1998a6d576ba7cf81deff8bfa189fb43fd2bbe", + "sha256:adf952c3f4100e203cbaf8e0c907c835d3e28f9041474e52b651761dc248a3c0", + "sha256:b367a73a414bbb08507da102dc2cde0fa7afe57d09b3240ce82a16d608a7679c", + "sha256:b8e20e15d18bf7dbb453be78a2d858f946f5cdf06c5072453dace00ab652e2b2", + "sha256:b95a0972fac2b1ff3c94629fc9081b16371dad870959f1408cc33b2f78ad347a", + "sha256:b9ebe8231726c49518b16b237b9fe0d7d361dd221302af511a83d4ada01183ab", + "sha256:ba905d184f62e7ddbb7a5a751d8a5c805463511c7b08d1aca4a3e8c11f2e5048", + "sha256:bd4435b8d83f0c9561a2a9585b1de78f1abb17cb0cef5f39bf6a4b47d19bafe3", + "sha256:bd7df92f28d351bb9f12470f4c533cf03d1b52ec5a6e5c58c65b183055a60106", + "sha256:c0037a92cf0c580ed14e10953cdd26528e8796307bb8bb312dc65f71547df04d", + "sha256:c0d9ff283cd3459fa0bf9b0256a2b6f01ac1ff9ffb034e24457b9035f75587cb", + "sha256:c56eca1686539fa0c9bda992e7bd6a37583f20083c37590413381acfc5f192d6", + "sha256:c6ac9ffccc9d2e69d9fba841441d4259cb668ac180e51b30d3632cd7abca2b9b", + "sha256:c826870b277143e701c9ccf34ebc33ddb4d072612683a044e7cce2d52f6c3fef", + "sha256:cd4a032bb65cc132cae1fe3e52877daecc2097965cd3914e44fbd12b00dae7c5", + "sha256:d33ce258e4e6e6038f2b9e8b8a631d17d017567db43483314993b3ca345dcbbb", + "sha256:d531076bdfb65af593326ffd567e6ab3da145020dafb9187a1d131064a55f97c", + "sha256:dccf3ef1400390ddd1fb55bf0632209d39140552d068ee5ac45553b556780e06", + "sha256:df11fa992e9f576473038510d66dd305bcd51d7dd508c163a8c8fe148454e059", + "sha256:e1a8376fef60790152564b0eab376b3e23dd6e54f29d84aad46f7b264ecca943", + "sha256:e201935d282707394f3668380e41ccf25b5794d1b131cdd96b07f615a33ca4b1", + "sha256:e2e253af04ceaebde8eb201eb3f3e3e7e390f2d275a88300d6a1959d710539e2", + "sha256:e862823be114387257dacbfa7d78547165a85d7add33b446ca4f4fae92c7ff5c", + "sha256:eecf63195be644b0396f972c82598cd15693550f0ff236dcf7ab92e2eb6d3522", + "sha256:f0928cde2ae416a2d1ebe6dee324709c6f73e93494d8c7aea92df99aab1fc40f", + "sha256:f9c08cabff68704a1b4667d33f534d544b8a07b8e5d039c37067fceb18789e78", + "sha256:fec02527e1e03257aa25b1a4dcbe697b40a22f1229f5d026503e8b7ff6d2eda7", + "sha256:ff58f379345603d940e461eae474b6bbb6dab66ed9a851ecd3cb3709bf4dcf6a", + "sha256:ffecbb5edb7f5ffae13599aec33b735e9e4c7676ca1633c60f2c606beb17efc5" ], "markers": "python_version >= '3.8'", - "version": "==2.18.2" + "version": "==2.18.3" }, "python-dotenv": { "hashes": [ @@ -328,11 +336,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", - "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" + "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8", + "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594" ], "markers": "python_version >= '3.8'", - "version": "==4.11.0" + "version": "==4.12.0" }, "urllib3": { "hashes": [ @@ -632,6 +640,14 @@ "markers": "python_version >= '3.7'", "version": "==8.1.7" }, + "colorama": { + "hashes": [ + "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", + "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" + ], + "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" + }, "coverage": { "extras": [ "toml" @@ -722,14 +738,6 @@ "markers": "python_version < '3.13' and python_version >= '3.8'", "version": "==4.0.1" }, - "colorama": { - "hashes": [ - "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", - "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" - ], - "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" - }, "dill": { "hashes": [ "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca", @@ -738,6 +746,12 @@ "markers": "python_version >= '3.11'", "version": "==0.3.8" }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, "executing": { "hashes": [ "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", @@ -746,12 +760,6 @@ "markers": "python_version >= '3.5'", "version": "==2.0.1" }, - "docopt": { - "hashes": [ - "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" - ], - "version": "==0.6.2" - }, "flake8": { "hashes": [ "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38", @@ -1164,6 +1172,13 @@ "markers": "python_version >= '3.8'", "version": "==2.2.2" }, + "var-dump": { + "hashes": [ + "sha256:9031944c174f8ce971b71a047fc56a81dfa1ce05d354fff3a16d781391d020ae" + ], + "index": "pypi", + "version": "==1.2" + }, "yarl": { "hashes": [ "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", diff --git a/requirements-dev.txt b/requirements-dev.txt index 5e90678e..fa45768f 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -30,7 +30,7 @@ mypy==1.11.1; python_version >= '3.8' mypy-extensions==1.0.0; python_version >= '3.5' packaging==24.1; python_version >= '3.8' pathspec==0.12.1; python_version >= '3.8' -platformdirs==4.2.1; python_version >= '3.8' +platformdirs==4.2.2; python_version >= '3.8' pluggy==1.5.0; python_version >= '3.8' pycodestyle==2.12.1; python_version >= '3.8' pyflakes==3.2.0; python_version >= '3.8' @@ -48,14 +48,9 @@ urllib3==2.0.7; python_version >= '3.7' yarl==1.9.2; python_version >= '3.7' annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 -certifi==2024.2.2; python_version >= '3.6' -charset-normalizer==3.3.2; python_full_version >= '3.7.0' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -jinja2==3.1.4; python_version >= '3.7' -markupsafe==2.1.5; python_version >= '3.7' -pydantic==2.7.1; python_version >= '3.8' -pydantic-core==2.18.2; python_version >= '3.8' +pydantic==2.7.2; python_version >= '3.8' +pydantic-core==2.18.3; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.1; python_version >= '3.6' -requests==2.31.0; python_version >= '3.7' xmltodict==0.13.0; python_version >= '3.4' diff --git a/requirements.txt b/requirements.txt index 639f30a5..af22f6d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,18 +1,15 @@ -annotated-types==0.6.0; python_version >= '3.8' +annotated-types==0.7.0; python_version >= '3.8' cerberus==1.3.5 certifi==2024.7.4; python_version >= '3.6' charset-normalizer==3.3.2; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' idna==3.7; python_version >= '3.5' -jinja2==3.1.4; python_version >= '3.7' -markupsafe==2.1.5; python_version >= '3.7' -pydantic==2.7.1; python_version >= '3.8' -pydantic-core==2.18.2; python_version >= '3.8' +pydantic==2.7.2; python_version >= '3.8' +pydantic-core==2.18.3; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.2; python_version >= '3.8' requests==2.32.3; python_version >= '3.8' -requests==2.31.0; python_version >= '3.7' -typing-extensions==4.11.0; python_version >= '3.8' +typing-extensions==4.12.0; python_version >= '3.8' urllib3==2.2.1; python_version >= '3.8' xmltodict==0.13.0; python_version >= '3.4' From 6e56fdc8fe83d858d4e45c61e133690b665a3a0a Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 5 Oct 2023 12:09:44 +0600 Subject: [PATCH 053/245] chore: remove jinja2 --- requirements-dev.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index fa45768f..322e03fc 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -19,9 +19,16 @@ colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3. dill==0.3.8; python_version >= '3.11' executing==2.0.1; python_version >= '3.5' flake8==7.0.0; python_full_version >= '3.8.1' +colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' +dill==0.3.7; python_version >= '3.11' +executing==2.0.0 +flake8==6.1.0; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 -idna==3.7; python_version >= '3.5' +idna==3.6; python_version >= '3.5' +frozenlist==1.4.0; python_version >= '3.8' +icecream==2.1.3 +idna==3.4; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' From de976f467a0895348e01c9c5c0b5dc065692c5ce Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 5 Oct 2023 12:11:45 +0600 Subject: [PATCH 054/245] chore: add better debugging tool - remove var-dump - add icecream --- Pipfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Pipfile b/Pipfile index 37492dbd..27115972 100644 --- a/Pipfile +++ b/Pipfile @@ -19,7 +19,6 @@ mypy = "*" pylint = "*" flake8 = "*" black = {extras = ["d"], version = "*"} -var-dump = "*" types-pyyaml = "*" types-requests = "*" pytest-cov = "*" From ae065807fbbb785a085614591fbd2050ff989663 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 12 Oct 2023 19:20:24 +0600 Subject: [PATCH 055/245] chore: package version update --- Pipfile.lock | 377 ++++++++++++++++++++++--------------------- requirements-dev.txt | 5 +- 2 files changed, 197 insertions(+), 185 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 1ca2f555..6b6932c5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -2,6 +2,7 @@ "_meta": { "hash": { "sha256": "f8c6919125a2785629423933df305e4dbc6c5ccf65b6284fd305a499effbfe4e" + "sha256": "a0c6935e78eee645c5ebcdc0a5a789774e01f118d5fdcc4d7059abf0564bde93" }, "pipfile-spec": 6, "requires": { @@ -342,6 +343,14 @@ "markers": "python_version >= '3.8'", "version": "==4.12.0" }, + "typing-extensions": { + "hashes": [ + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" + ], + "markers": "python_version >= '3.8'", + "version": "==4.8.0" + }, "urllib3": { "hashes": [ "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", @@ -648,6 +657,14 @@ "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" }, + "colorama": { + "hashes": [ + "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", + "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" + ], + "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" + }, "coverage": { "extras": [ "toml" @@ -746,6 +763,13 @@ "markers": "python_version >= '3.11'", "version": "==0.3.8" }, + "executing": { + "hashes": [ + "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657", + "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08" + ], + "version": "==2.0.0" + }, "docopt": { "hashes": [ "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" @@ -771,86 +795,78 @@ }, "frozenlist": { "hashes": [ - "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", - "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98", - "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad", - "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5", - "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae", - "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e", - "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a", - "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701", - "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d", - "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6", - "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6", - "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106", - "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75", - "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868", - "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a", - "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0", - "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1", - "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826", - "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec", - "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6", - "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950", - "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19", - "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0", - "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8", - "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a", - "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09", - "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86", - "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c", - "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5", - "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b", - "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b", - "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d", - "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0", - "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea", - "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776", - "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a", - "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897", - "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7", - "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09", - "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9", - "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe", - "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd", - "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742", - "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09", - "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0", - "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932", - "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1", - "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a", - "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49", - "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d", - "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7", - "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480", - "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89", - "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e", - "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b", - "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82", - "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb", - "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068", - "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8", - "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b", - "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb", - "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2", - "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11", - "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b", - "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc", - "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0", - "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497", - "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17", - "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0", - "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2", - "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439", - "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5", - "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac", - "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825", - "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887", - "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced", - "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74" + "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.1" + "version": "==1.4.0" + }, + "icecream": { + "hashes": [ + "sha256:0aa4a7c3374ec36153a1d08f81e3080e83d8ac1eefd97d2f4fe9544e8f9b49de", + "sha256:757aec31ad4488b949bc4f499d18e6e5973c40cc4d4fc607229e78cfaec94c34" + ], + "index": "pypi", + "version": "==2.1.3" }, "icecream": { "hashes": [ @@ -878,11 +894,11 @@ }, "isort": { "hashes": [ - "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", - "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6" + "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504", + "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" ], "markers": "python_full_version >= '3.8.0'", - "version": "==5.13.2" + "version": "==5.12.0" }, "mccabe": { "hashes": [ @@ -1040,11 +1056,11 @@ }, "pathspec": { "hashes": [ - "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", - "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" + "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", + "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" ], - "markers": "python_version >= '3.8'", - "version": "==0.12.1" + "markers": "python_version >= '3.7'", + "version": "==0.11.2" }, "platformdirs": { "hashes": [ @@ -1086,6 +1102,14 @@ "markers": "python_version >= '3.8'", "version": "==2.18.0" }, + "pygments": { + "hashes": [ + "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692", + "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29" + ], + "markers": "python_version >= '3.7'", + "version": "==2.16.1" + }, "pylint": { "hashes": [ "sha256:03c8e3baa1d9fb995b12c1dbe00aa6c4bcef210c2a2634374aedeb22fb4a8f8f", @@ -1130,6 +1154,14 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, "tomlkit": { "hashes": [ "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", @@ -1172,108 +1204,85 @@ "markers": "python_version >= '3.8'", "version": "==2.2.2" }, - "var-dump": { - "hashes": [ - "sha256:9031944c174f8ce971b71a047fc56a81dfa1ce05d354fff3a16d781391d020ae" - ], - "index": "pypi", - "version": "==1.2" - }, "yarl": { "hashes": [ - "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", - "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce", - "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559", - "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0", - "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81", - "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc", - "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4", - "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c", - "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130", - "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136", - "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e", - "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec", - "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7", - "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1", - "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455", - "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099", - "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129", - "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10", - "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142", - "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98", - "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa", - "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7", - "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525", - "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c", - "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9", - "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c", - "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8", - "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b", - "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf", - "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23", - "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd", - "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27", - "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f", - "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece", - "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434", - "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec", - "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff", - "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78", - "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d", - "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863", - "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53", - "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31", - "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15", - "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5", - "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b", - "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57", - "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3", - "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1", - "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f", - "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad", - "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c", - "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7", - "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2", - "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b", - "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2", - "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b", - "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9", - "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be", - "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e", - "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984", - "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4", - "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074", - "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2", - "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392", - "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91", - "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541", - "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf", - "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572", - "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66", - "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575", - "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14", - "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5", - "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1", - "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e", - "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551", - "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17", - "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead", - "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0", - "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe", - "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234", - "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0", - "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7", - "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34", - "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42", - "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385", - "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78", - "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be", - "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958", - "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749", - "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec" + "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", + "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", + "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", + "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", + "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", + "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", + "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", + "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", + "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", + "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", + "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", + "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", + "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", + "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", + "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", + "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", + "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", + "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", + "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", + "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", + "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", + "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", + "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", + "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", + "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", + "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", + "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", + "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", + "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", + "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", + "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", + "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", + "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", + "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", + "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", + "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", + "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", + "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", + "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", + "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", + "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", + "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", + "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", + "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", + "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", + "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", + "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", + "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", + "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", + "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", + "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", + "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", + "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", + "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", + "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", + "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", + "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", + "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", + "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", + "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", + "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", + "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", + "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", + "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", + "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", + "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", + "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", + "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", + "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", + "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", + "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", + "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", + "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", + "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "markers": "python_version >= '3.7'", - "version": "==1.9.4" + "version": "==1.9.2" } } -} +} \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index 322e03fc..545618f5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -30,7 +30,7 @@ frozenlist==1.4.0; python_version >= '3.8' icecream==2.1.3 idna==3.4; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' -isort==5.13.2; python_full_version >= '3.8.0' +isort==5.12.0; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' multidict==6.0.5; python_version >= '3.7' mypy==1.11.1; python_version >= '3.8' @@ -59,5 +59,8 @@ defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, pydantic==2.7.2; python_version >= '3.8' pydantic-core==2.18.3; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' +pydantic==2.4.2; python_version >= '3.7' +pydantic-core==2.10.1; python_version >= '3.7' +python-dotenv==1.0.0; python_version >= '3.8' pyyaml==6.0.1; python_version >= '3.6' xmltodict==0.13.0; python_version >= '3.4' From f99dec65af634b9ad429e025abbc5ebe4da973e6 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 15 Nov 2023 09:35:13 +0600 Subject: [PATCH 056/245] chore: update packages --- Pipfile.lock | 7 ++++--- requirements-dev.txt | 7 +++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 6b6932c5..ebc8192f 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -765,10 +765,11 @@ }, "executing": { "hashes": [ - "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657", - "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08" + "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", + "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc" ], - "version": "==2.0.0" + "markers": "python_version >= '3.5'", + "version": "==2.0.1" }, "docopt": { "hashes": [ diff --git a/requirements-dev.txt b/requirements-dev.txt index 545618f5..e99a8092 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -21,7 +21,7 @@ executing==2.0.1; python_version >= '3.5' flake8==7.0.0; python_full_version >= '3.8.1' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' dill==0.3.7; python_version >= '3.11' -executing==2.0.0 +executing==2.0.1; python_version >= '3.5' flake8==6.1.0; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 @@ -59,8 +59,7 @@ defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, pydantic==2.7.2; python_version >= '3.8' pydantic-core==2.18.3; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' -pydantic==2.4.2; python_version >= '3.7' -pydantic-core==2.10.1; python_version >= '3.7' -python-dotenv==1.0.0; python_version >= '3.8' +pydantic==2.5.0; python_version >= '3.7' +pydantic-core==2.14.1; python_version >= '3.7' pyyaml==6.0.1; python_version >= '3.6' xmltodict==0.13.0; python_version >= '3.4' From 24d8100da566ebca8b1b873891139cb6b5dd2208 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 1 May 2024 12:17:28 +0600 Subject: [PATCH 057/245] chore: package version update after rebase --- Pipfile.lock | 93 ++++++++++++++++++++++++++++++++++++++++++++ requirements-dev.txt | 9 +++-- 2 files changed, 99 insertions(+), 3 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index ebc8192f..f3aa6d19 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -167,6 +167,8 @@ "hashes": [ "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7", "sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7" + "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa", + "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90" ], "index": "pypi", "markers": "python_version >= '3.8'", @@ -174,6 +176,85 @@ }, "pydantic-core": { "hashes": [ + "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b", + "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a", + "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90", + "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d", + "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e", + "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d", + "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027", + "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804", + "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347", + "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400", + "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3", + "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399", + "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349", + "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd", + "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c", + "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e", + "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413", + "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3", + "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e", + "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3", + "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91", + "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce", + "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c", + "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb", + "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664", + "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6", + "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd", + "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3", + "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af", + "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043", + "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350", + "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7", + "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0", + "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563", + "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761", + "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72", + "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3", + "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb", + "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788", + "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b", + "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c", + "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038", + "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250", + "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec", + "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c", + "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74", + "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81", + "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439", + "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75", + "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0", + "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8", + "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150", + "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438", + "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae", + "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857", + "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038", + "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374", + "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f", + "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241", + "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592", + "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4", + "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d", + "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b", + "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b", + "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182", + "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e", + "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641", + "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70", + "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9", + "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a", + "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543", + "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b", + "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f", + "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38", + "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845", + "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2", + "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0", + "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4", + "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242" "sha256:0bee9bb305a562f8b9271855afb6ce00223f545de3d68560b3c1649c7c5295e9", "sha256:0ecce4b2360aa3f008da3327d652e74a0e743908eac306198b47e1c58b03dd2b", "sha256:17954d784bf8abfc0ec2a633108207ebc4fa2df1a0e4c0c3ccbaa9bb01d2c426", @@ -256,6 +337,8 @@ ], "markers": "python_version >= '3.8'", "version": "==2.18.3" + "markers": "python_version >= '3.8'", + "version": "==2.18.2" }, "python-dotenv": { "hashes": [ @@ -347,9 +430,12 @@ "hashes": [ "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" + "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", + "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" ], "markers": "python_version >= '3.8'", "version": "==4.8.0" + "version": "==4.11.0" }, "urllib3": { "hashes": [ @@ -497,6 +583,13 @@ ], "version": "==2.4.1" }, + "asttokens": { + "hashes": [ + "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", + "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0" + ], + "version": "==2.4.1" + }, "attrs": { "hashes": [ "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", diff --git a/requirements-dev.txt b/requirements-dev.txt index e99a8092..290b377d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -20,12 +20,12 @@ dill==0.3.8; python_version >= '3.11' executing==2.0.1; python_version >= '3.5' flake8==7.0.0; python_full_version >= '3.8.1' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' -dill==0.3.7; python_version >= '3.11' +dill==0.3.8; python_version >= '3.11' executing==2.0.1; python_version >= '3.5' -flake8==6.1.0; python_full_version >= '3.8.1' +flake8==7.0.0; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 -idna==3.6; python_version >= '3.5' +idna==3.7; python_version >= '3.5' frozenlist==1.4.0; python_version >= '3.8' icecream==2.1.3 idna==3.4; python_version >= '3.5' @@ -53,11 +53,14 @@ urllib3==2.2.2; python_version >= '3.8' var-dump==1.2 urllib3==2.0.7; python_version >= '3.7' yarl==1.9.2; python_version >= '3.7' +yarl==1.9.4; python_version >= '3.7' annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' pydantic==2.7.2; python_version >= '3.8' pydantic-core==2.18.3; python_version >= '3.8' +pydantic==2.7.1; python_version >= '3.8' +pydantic-core==2.18.2; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pydantic==2.5.0; python_version >= '3.7' pydantic-core==2.14.1; python_version >= '3.7' From bd08635fd0d9328a04dc5ca6ec6b23fdb3503134 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 19 May 2024 11:26:36 +0600 Subject: [PATCH 058/245] chore: package update 19.MAY.2024 --- Pipfile.lock | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index f3aa6d19..6a66685d 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -167,8 +167,8 @@ "hashes": [ "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7", "sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7" - "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa", - "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90" + "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5", + "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc" ], "index": "pypi", "markers": "python_version >= '3.8'", @@ -1203,6 +1203,8 @@ ], "markers": "python_version >= '3.7'", "version": "==2.16.1" + "markers": "python_version >= '3.8'", + "version": "==2.18.0" }, "pylint": { "hashes": [ @@ -1379,4 +1381,4 @@ "version": "==1.9.2" } } -} \ No newline at end of file +} From 4eb4a0be8e310a11e30d3e3a4b00da841b89338b Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 12 Oct 2023 19:20:24 +0600 Subject: [PATCH 059/245] chore: package version update --- Pipfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pipfile.lock b/Pipfile.lock index 6a66685d..bd2de5ba 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1381,4 +1381,4 @@ "version": "==1.9.2" } } -} +} \ No newline at end of file From cb009442bf37164ca4d94879f9516e7c9b914c81 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 21 Nov 2023 07:38:35 +0600 Subject: [PATCH 060/245] chore: package version update --- Pipfile.lock | 166 ++++++++++++++++++++++++++++----------------------- 1 file changed, 91 insertions(+), 75 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index bd2de5ba..11c18afc 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1302,83 +1302,99 @@ }, "yarl": { "hashes": [ - "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", - "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", - "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", - "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", - "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", - "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", - "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", - "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", - "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", - "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", - "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", - "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", - "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", - "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", - "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", - "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", - "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", - "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", - "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", - "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", - "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", - "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", - "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", - "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", - "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", - "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", - "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", - "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", - "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", - "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", - "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", - "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", - "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", - "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", - "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", - "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", - "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", - "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", - "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", - "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", - "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", - "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", - "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", - "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", - "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", - "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", - "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", - "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", - "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", - "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", - "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", - "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", - "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", - "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", - "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", - "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", - "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", - "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", - "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", - "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", - "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", - "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", - "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", - "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", - "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", - "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", - "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", - "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", - "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", - "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", - "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", - "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", - "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", - "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" + "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4", + "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb", + "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d", + "sha256:126638ab961633f0940a06e1c9d59919003ef212a15869708dcb7305f91a6732", + "sha256:1a0a4f3aaa18580038cfa52a7183c8ffbbe7d727fe581300817efc1e96d1b0e9", + "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363", + "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613", + "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929", + "sha256:28a108cb92ce6cf867690a962372996ca332d8cda0210c5ad487fe996e76b8bb", + "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279", + "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f", + "sha256:2dad8166d41ebd1f76ce107cf6a31e39801aee3844a54a90af23278b072f1ccf", + "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17", + "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e", + "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab", + "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808", + "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9", + "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e", + "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd", + "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57", + "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e", + "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d", + "sha256:51382c72dd5377861b573bd55dcf680df54cea84147c8648b15ac507fbef984d", + "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff", + "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67", + "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a", + "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4", + "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a", + "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70", + "sha256:66a6dbf6ca7d2db03cc61cafe1ee6be838ce0fbc97781881a22a58a7c5efef42", + "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682", + "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7", + "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92", + "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65", + "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566", + "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6", + "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752", + "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361", + "sha256:7eaf13af79950142ab2bbb8362f8d8d935be9aaf8df1df89c86c3231e4ff238a", + "sha256:828235a2a169160ee73a2fcfb8a000709edf09d7511fccf203465c3d5acc59e4", + "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3", + "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7", + "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6", + "sha256:8dab30b21bd6fb17c3f4684868c7e6a9e8468078db00f599fb1c14e324b10fca", + "sha256:8f18a7832ff85dfcd77871fe677b169b1bc60c021978c90c3bb14f727596e0ae", + "sha256:946db4511b2d815979d733ac6a961f47e20a29c297be0d55b6d4b77ee4b298f6", + "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7", + "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8", + "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e", + "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d", + "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41", + "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196", + "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc", + "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce", + "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321", + "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90", + "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067", + "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281", + "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a", + "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225", + "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96", + "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de", + "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e", + "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a", + "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642", + "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10", + "sha256:c99ddaddb2fbe04953b84d1651149a0d85214780e4d0ee824e610ab549d98d92", + "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423", + "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3", + "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080", + "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93", + "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403", + "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6", + "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd", + "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f", + "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb", + "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d", + "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a", + "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f", + "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d", + "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f", + "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88", + "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b", + "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a", + "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696", + "sha256:fc391e3941045fd0987c77484b2799adffd08e4b6735c4ee5f054366a2e1551d", + "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130", + "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41", + "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7", + "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2" ], "markers": "python_version >= '3.7'", - "version": "==1.9.2" + "version": "==1.9.3" } } } \ No newline at end of file From 422b1b91a9f2f5b93dc469c7e22a1cc59e74d64c Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 24 Dec 2023 18:51:04 +0600 Subject: [PATCH 061/245] chore: pkg version update after conflict resolve --- Pipfile.lock | 334 +++++++++++++++++++++++-------------------- requirements-dev.txt | 2 +- 2 files changed, 176 insertions(+), 160 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 11c18afc..e48bd6de 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -889,67 +889,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" + "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", + "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98", + "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad", + "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5", + "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae", + "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e", + "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a", + "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701", + "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d", + "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6", + "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6", + "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106", + "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75", + "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868", + "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a", + "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0", + "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1", + "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826", + "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec", + "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6", + "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950", + "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19", + "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0", + "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8", + "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a", + "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09", + "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86", + "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c", + "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5", + "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b", + "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b", + "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d", + "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0", + "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea", + "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776", + "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a", + "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897", + "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7", + "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09", + "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9", + "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe", + "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd", + "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742", + "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09", + "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0", + "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932", + "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1", + "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a", + "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49", + "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d", + "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7", + "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480", + "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89", + "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e", + "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b", + "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82", + "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb", + "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068", + "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8", + "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b", + "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb", + "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2", + "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11", + "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b", + "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc", + "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0", + "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497", + "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17", + "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0", + "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2", + "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439", + "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5", + "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac", + "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825", + "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887", + "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced", + "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74" ], "markers": "python_version >= '3.8'", "version": "==1.4.0" @@ -988,11 +1004,11 @@ }, "isort": { "hashes": [ - "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504", - "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" + "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", + "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6" ], "markers": "python_full_version >= '3.8.0'", - "version": "==5.12.0" + "version": "==5.13.2" }, "mccabe": { "hashes": [ @@ -1150,11 +1166,11 @@ }, "pathspec": { "hashes": [ - "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", - "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" + "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", + "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" ], - "markers": "python_version >= '3.7'", - "version": "==0.11.2" + "markers": "python_version >= '3.8'", + "version": "==0.12.1" }, "platformdirs": { "hashes": [ @@ -1302,99 +1318,99 @@ }, "yarl": { "hashes": [ - "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4", - "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb", - "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d", - "sha256:126638ab961633f0940a06e1c9d59919003ef212a15869708dcb7305f91a6732", - "sha256:1a0a4f3aaa18580038cfa52a7183c8ffbbe7d727fe581300817efc1e96d1b0e9", - "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363", - "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613", - "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929", - "sha256:28a108cb92ce6cf867690a962372996ca332d8cda0210c5ad487fe996e76b8bb", - "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279", - "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f", - "sha256:2dad8166d41ebd1f76ce107cf6a31e39801aee3844a54a90af23278b072f1ccf", - "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17", - "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e", - "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab", - "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808", - "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9", - "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e", - "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd", - "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57", - "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e", - "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d", - "sha256:51382c72dd5377861b573bd55dcf680df54cea84147c8648b15ac507fbef984d", - "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff", - "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67", - "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a", - "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4", - "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a", - "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70", - "sha256:66a6dbf6ca7d2db03cc61cafe1ee6be838ce0fbc97781881a22a58a7c5efef42", - "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682", - "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7", - "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92", - "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65", - "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566", - "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6", - "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752", - "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361", - "sha256:7eaf13af79950142ab2bbb8362f8d8d935be9aaf8df1df89c86c3231e4ff238a", - "sha256:828235a2a169160ee73a2fcfb8a000709edf09d7511fccf203465c3d5acc59e4", - "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3", - "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7", - "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6", - "sha256:8dab30b21bd6fb17c3f4684868c7e6a9e8468078db00f599fb1c14e324b10fca", - "sha256:8f18a7832ff85dfcd77871fe677b169b1bc60c021978c90c3bb14f727596e0ae", - "sha256:946db4511b2d815979d733ac6a961f47e20a29c297be0d55b6d4b77ee4b298f6", - "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7", - "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8", - "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e", - "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d", - "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41", - "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196", - "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc", - "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce", - "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321", - "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90", - "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067", - "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281", - "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a", - "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225", - "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96", - "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de", - "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e", - "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a", - "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642", - "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10", - "sha256:c99ddaddb2fbe04953b84d1651149a0d85214780e4d0ee824e610ab549d98d92", - "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423", - "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3", - "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080", - "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93", - "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403", - "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6", - "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd", - "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f", - "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb", - "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d", - "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a", - "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f", - "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d", - "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f", - "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88", - "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b", - "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a", - "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696", - "sha256:fc391e3941045fd0987c77484b2799adffd08e4b6735c4ee5f054366a2e1551d", - "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130", - "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41", - "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7", - "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2" + "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", + "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce", + "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559", + "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0", + "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81", + "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc", + "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4", + "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c", + "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130", + "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136", + "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e", + "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec", + "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7", + "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1", + "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455", + "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099", + "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129", + "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10", + "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142", + "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98", + "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa", + "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7", + "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525", + "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c", + "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9", + "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c", + "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8", + "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b", + "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf", + "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23", + "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd", + "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27", + "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f", + "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece", + "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434", + "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec", + "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff", + "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78", + "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d", + "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863", + "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53", + "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31", + "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15", + "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5", + "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b", + "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57", + "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3", + "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1", + "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f", + "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad", + "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c", + "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7", + "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2", + "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b", + "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2", + "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b", + "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9", + "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be", + "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e", + "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984", + "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4", + "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074", + "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2", + "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392", + "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91", + "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541", + "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf", + "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572", + "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66", + "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575", + "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14", + "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5", + "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1", + "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e", + "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551", + "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17", + "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead", + "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0", + "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe", + "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234", + "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0", + "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7", + "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34", + "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42", + "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385", + "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78", + "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be", + "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958", + "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749", + "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec" ], "markers": "python_version >= '3.7'", - "version": "==1.9.3" + "version": "==1.9.4" } } } \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index 290b377d..b5c861ef 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -30,7 +30,7 @@ frozenlist==1.4.0; python_version >= '3.8' icecream==2.1.3 idna==3.4; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' -isort==5.12.0; python_full_version >= '3.8.0' +isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' multidict==6.0.5; python_version >= '3.7' mypy==1.11.1; python_version >= '3.8' From d9103d080050c2e739c6e67d52433ea46ad8ddbb Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 1 May 2024 12:17:28 +0600 Subject: [PATCH 062/245] chore: package version update after rebase --- Pipfile.lock | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Pipfile.lock b/Pipfile.lock index e48bd6de..bebce48c 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -590,6 +590,13 @@ ], "version": "==2.4.1" }, + "asttokens": { + "hashes": [ + "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", + "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0" + ], + "version": "==2.4.1" + }, "attrs": { "hashes": [ "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", @@ -1413,4 +1420,4 @@ "version": "==1.9.4" } } -} \ No newline at end of file +} From 0a80e93e458aca8b6e473a4b15bb8cac8fc910a1 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 12 Oct 2023 19:20:24 +0600 Subject: [PATCH 063/245] chore: package version update --- Pipfile.lock | 335 ++++++++++++++++++++----------------------- requirements-dev.txt | 2 +- 2 files changed, 160 insertions(+), 177 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index bebce48c..be52ed84 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -885,6 +885,13 @@ "markers": "python_version >= '3.5'", "version": "==2.0.1" }, + "executing": { + "hashes": [ + "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657", + "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08" + ], + "version": "==2.0.0" + }, "flake8": { "hashes": [ "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38", @@ -896,83 +903,67 @@ }, "frozenlist": { "hashes": [ - "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", - "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98", - "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad", - "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5", - "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae", - "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e", - "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a", - "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701", - "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d", - "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6", - "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6", - "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106", - "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75", - "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868", - "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a", - "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0", - "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1", - "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826", - "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec", - "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6", - "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950", - "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19", - "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0", - "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8", - "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a", - "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09", - "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86", - "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c", - "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5", - "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b", - "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b", - "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d", - "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0", - "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea", - "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776", - "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a", - "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897", - "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7", - "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09", - "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9", - "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe", - "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd", - "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742", - "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09", - "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0", - "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932", - "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1", - "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a", - "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49", - "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d", - "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7", - "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480", - "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89", - "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e", - "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b", - "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82", - "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb", - "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068", - "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8", - "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b", - "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb", - "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2", - "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11", - "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b", - "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc", - "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0", - "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497", - "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17", - "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0", - "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2", - "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439", - "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5", - "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac", - "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825", - "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887", - "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced", - "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74" + "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" @@ -1011,11 +1002,11 @@ }, "isort": { "hashes": [ - "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", - "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6" + "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504", + "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" ], "markers": "python_full_version >= '3.8.0'", - "version": "==5.13.2" + "version": "==5.12.0" }, "mccabe": { "hashes": [ @@ -1173,11 +1164,11 @@ }, "pathspec": { "hashes": [ - "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", - "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" + "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", + "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" ], - "markers": "python_version >= '3.8'", - "version": "==0.12.1" + "markers": "python_version >= '3.7'", + "version": "==0.11.2" }, "platformdirs": { "hashes": [ @@ -1281,6 +1272,14 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, "tomlkit": { "hashes": [ "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", @@ -1325,99 +1324,83 @@ }, "yarl": { "hashes": [ - "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", - "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce", - "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559", - "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0", - "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81", - "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc", - "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4", - "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c", - "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130", - "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136", - "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e", - "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec", - "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7", - "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1", - "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455", - "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099", - "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129", - "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10", - "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142", - "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98", - "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa", - "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7", - "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525", - "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c", - "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9", - "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c", - "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8", - "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b", - "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf", - "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23", - "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd", - "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27", - "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f", - "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece", - "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434", - "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec", - "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff", - "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78", - "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d", - "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863", - "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53", - "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31", - "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15", - "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5", - "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b", - "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57", - "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3", - "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1", - "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f", - "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad", - "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c", - "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7", - "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2", - "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b", - "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2", - "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b", - "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9", - "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be", - "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e", - "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984", - "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4", - "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074", - "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2", - "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392", - "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91", - "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541", - "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf", - "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572", - "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66", - "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575", - "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14", - "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5", - "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1", - "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e", - "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551", - "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17", - "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead", - "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0", - "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe", - "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234", - "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0", - "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7", - "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34", - "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42", - "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385", - "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78", - "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be", - "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958", - "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749", - "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec" + "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", + "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", + "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", + "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", + "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", + "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", + "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", + "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", + "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", + "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", + "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", + "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", + "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", + "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", + "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", + "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", + "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", + "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", + "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", + "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", + "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", + "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", + "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", + "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", + "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", + "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", + "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", + "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", + "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", + "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", + "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", + "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", + "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", + "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", + "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", + "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", + "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", + "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", + "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", + "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", + "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", + "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", + "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", + "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", + "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", + "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", + "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", + "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", + "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", + "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", + "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", + "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", + "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", + "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", + "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", + "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", + "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", + "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", + "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", + "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", + "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", + "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", + "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", + "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", + "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", + "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", + "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", + "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", + "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", + "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", + "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", + "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", + "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", + "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" ], "markers": "python_version >= '3.7'", - "version": "==1.9.4" + "version": "==1.9.2" } } -} +} \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index b5c861ef..290b377d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -30,7 +30,7 @@ frozenlist==1.4.0; python_version >= '3.8' icecream==2.1.3 idna==3.4; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' -isort==5.13.2; python_full_version >= '3.8.0' +isort==5.12.0; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' multidict==6.0.5; python_version >= '3.7' mypy==1.11.1; python_version >= '3.8' From 75c33e29439ab466f5fc8b6902efdbdd79441eb4 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 15 Nov 2023 09:35:13 +0600 Subject: [PATCH 064/245] chore: update packages --- Pipfile.lock | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index be52ed84..f382f85b 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -887,10 +887,11 @@ }, "executing": { "hashes": [ - "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657", - "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08" + "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", + "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc" ], - "version": "==2.0.0" + "markers": "python_version >= '3.5'", + "version": "==2.0.1" }, "flake8": { "hashes": [ From c490542aa5a73eb20caefb8e6dfdaf9c8f43e572 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 21 Nov 2023 07:38:35 +0600 Subject: [PATCH 065/245] chore: package version update --- Pipfile.lock | 172 ++++++++++++++++++++++++++++----------------------- 1 file changed, 94 insertions(+), 78 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index f382f85b..05f8d579 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1213,11 +1213,11 @@ }, "pygments": { "hashes": [ - "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692", - "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29" + "sha256:1b37f1b1e1bff2af52ecaf28cc601e2ef7077000b227a0675da25aef85784bc4", + "sha256:e45a0e74bf9c530f564ca81b8952343be986a29f6afe7f5ad95c5f06b7bdf5e8" ], "markers": "python_version >= '3.7'", - "version": "==2.16.1" + "version": "==2.17.1" "markers": "python_version >= '3.8'", "version": "==2.18.0" }, @@ -1325,83 +1325,99 @@ }, "yarl": { "hashes": [ - "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", - "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", - "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", - "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", - "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", - "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", - "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", - "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", - "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", - "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", - "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", - "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", - "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", - "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", - "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", - "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", - "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", - "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", - "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", - "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", - "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", - "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", - "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", - "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", - "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", - "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", - "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", - "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", - "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", - "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", - "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", - "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", - "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", - "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", - "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", - "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", - "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", - "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", - "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", - "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", - "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", - "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", - "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", - "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", - "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", - "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", - "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", - "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", - "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", - "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", - "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", - "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", - "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", - "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", - "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", - "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", - "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", - "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", - "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", - "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", - "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", - "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", - "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", - "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", - "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", - "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", - "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", - "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", - "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", - "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", - "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", - "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", - "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", - "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" + "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4", + "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb", + "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d", + "sha256:126638ab961633f0940a06e1c9d59919003ef212a15869708dcb7305f91a6732", + "sha256:1a0a4f3aaa18580038cfa52a7183c8ffbbe7d727fe581300817efc1e96d1b0e9", + "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363", + "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613", + "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929", + "sha256:28a108cb92ce6cf867690a962372996ca332d8cda0210c5ad487fe996e76b8bb", + "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279", + "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f", + "sha256:2dad8166d41ebd1f76ce107cf6a31e39801aee3844a54a90af23278b072f1ccf", + "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17", + "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e", + "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab", + "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808", + "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9", + "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e", + "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd", + "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57", + "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e", + "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d", + "sha256:51382c72dd5377861b573bd55dcf680df54cea84147c8648b15ac507fbef984d", + "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff", + "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67", + "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a", + "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4", + "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a", + "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70", + "sha256:66a6dbf6ca7d2db03cc61cafe1ee6be838ce0fbc97781881a22a58a7c5efef42", + "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682", + "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7", + "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92", + "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65", + "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566", + "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6", + "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752", + "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361", + "sha256:7eaf13af79950142ab2bbb8362f8d8d935be9aaf8df1df89c86c3231e4ff238a", + "sha256:828235a2a169160ee73a2fcfb8a000709edf09d7511fccf203465c3d5acc59e4", + "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3", + "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7", + "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6", + "sha256:8dab30b21bd6fb17c3f4684868c7e6a9e8468078db00f599fb1c14e324b10fca", + "sha256:8f18a7832ff85dfcd77871fe677b169b1bc60c021978c90c3bb14f727596e0ae", + "sha256:946db4511b2d815979d733ac6a961f47e20a29c297be0d55b6d4b77ee4b298f6", + "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7", + "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8", + "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e", + "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d", + "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41", + "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196", + "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc", + "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce", + "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321", + "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90", + "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067", + "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281", + "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a", + "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225", + "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96", + "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de", + "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e", + "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a", + "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642", + "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10", + "sha256:c99ddaddb2fbe04953b84d1651149a0d85214780e4d0ee824e610ab549d98d92", + "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423", + "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3", + "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080", + "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93", + "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403", + "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6", + "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd", + "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f", + "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb", + "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d", + "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a", + "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f", + "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d", + "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f", + "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88", + "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b", + "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a", + "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696", + "sha256:fc391e3941045fd0987c77484b2799adffd08e4b6735c4ee5f054366a2e1551d", + "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130", + "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41", + "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7", + "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2" ], "markers": "python_version >= '3.7'", - "version": "==1.9.2" + "version": "==1.9.3" } } } \ No newline at end of file From 809d2c0ba83cd24371c8292ac4494bbd6d8f64e1 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 24 Dec 2023 18:51:04 +0600 Subject: [PATCH 066/245] chore: pkg version update after conflict resolve --- Pipfile.lock | 342 ++++++++++++++++++++++--------------------- requirements-dev.txt | 2 +- 2 files changed, 180 insertions(+), 164 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 05f8d579..94d929b8 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -904,70 +904,86 @@ }, "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" + "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", + "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98", + "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad", + "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5", + "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae", + "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e", + "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a", + "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701", + "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d", + "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6", + "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6", + "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106", + "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75", + "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868", + "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a", + "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0", + "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1", + "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826", + "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec", + "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6", + "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950", + "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19", + "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0", + "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8", + "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a", + "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09", + "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86", + "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c", + "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5", + "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b", + "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b", + "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d", + "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0", + "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea", + "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776", + "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a", + "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897", + "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7", + "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09", + "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9", + "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe", + "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd", + "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742", + "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09", + "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0", + "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932", + "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1", + "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a", + "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49", + "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d", + "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7", + "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480", + "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89", + "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e", + "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b", + "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82", + "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb", + "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068", + "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8", + "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b", + "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb", + "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2", + "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11", + "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b", + "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc", + "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0", + "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497", + "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17", + "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0", + "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2", + "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439", + "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5", + "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac", + "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825", + "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887", + "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced", + "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74" ], "markers": "python_version >= '3.8'", - "version": "==1.4.0" + "version": "==1.4.1" }, "icecream": { "hashes": [ @@ -1003,11 +1019,11 @@ }, "isort": { "hashes": [ - "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504", - "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" + "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", + "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6" ], "markers": "python_full_version >= '3.8.0'", - "version": "==5.12.0" + "version": "==5.13.2" }, "mccabe": { "hashes": [ @@ -1165,11 +1181,11 @@ }, "pathspec": { "hashes": [ - "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20", - "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3" + "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", + "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" ], - "markers": "python_version >= '3.7'", - "version": "==0.11.2" + "markers": "python_version >= '3.8'", + "version": "==0.12.1" }, "platformdirs": { "hashes": [ @@ -1213,11 +1229,11 @@ }, "pygments": { "hashes": [ - "sha256:1b37f1b1e1bff2af52ecaf28cc601e2ef7077000b227a0675da25aef85784bc4", - "sha256:e45a0e74bf9c530f564ca81b8952343be986a29f6afe7f5ad95c5f06b7bdf5e8" + "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c", + "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" ], "markers": "python_version >= '3.7'", - "version": "==2.17.1" + "version": "==2.17.2" "markers": "python_version >= '3.8'", "version": "==2.18.0" }, @@ -1325,99 +1341,99 @@ }, "yarl": { "hashes": [ - "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4", - "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb", - "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d", - "sha256:126638ab961633f0940a06e1c9d59919003ef212a15869708dcb7305f91a6732", - "sha256:1a0a4f3aaa18580038cfa52a7183c8ffbbe7d727fe581300817efc1e96d1b0e9", - "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363", - "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613", - "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929", - "sha256:28a108cb92ce6cf867690a962372996ca332d8cda0210c5ad487fe996e76b8bb", - "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279", - "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f", - "sha256:2dad8166d41ebd1f76ce107cf6a31e39801aee3844a54a90af23278b072f1ccf", - "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17", - "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e", - "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab", - "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808", - "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9", - "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e", - "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd", - "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57", - "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e", - "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d", - "sha256:51382c72dd5377861b573bd55dcf680df54cea84147c8648b15ac507fbef984d", - "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff", - "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67", - "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a", - "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4", - "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a", - "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70", - "sha256:66a6dbf6ca7d2db03cc61cafe1ee6be838ce0fbc97781881a22a58a7c5efef42", - "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682", - "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7", - "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92", - "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65", - "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566", - "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6", - "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752", - "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361", - "sha256:7eaf13af79950142ab2bbb8362f8d8d935be9aaf8df1df89c86c3231e4ff238a", - "sha256:828235a2a169160ee73a2fcfb8a000709edf09d7511fccf203465c3d5acc59e4", - "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3", - "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7", - "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6", - "sha256:8dab30b21bd6fb17c3f4684868c7e6a9e8468078db00f599fb1c14e324b10fca", - "sha256:8f18a7832ff85dfcd77871fe677b169b1bc60c021978c90c3bb14f727596e0ae", - "sha256:946db4511b2d815979d733ac6a961f47e20a29c297be0d55b6d4b77ee4b298f6", - "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7", - "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8", - "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e", - "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d", - "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41", - "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196", - "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc", - "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce", - "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321", - "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90", - "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067", - "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281", - "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a", - "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225", - "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96", - "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de", - "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e", - "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a", - "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642", - "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10", - "sha256:c99ddaddb2fbe04953b84d1651149a0d85214780e4d0ee824e610ab549d98d92", - "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423", - "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3", - "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080", - "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93", - "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403", - "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6", - "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd", - "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f", - "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb", - "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d", - "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a", - "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f", - "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d", - "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f", - "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88", - "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b", - "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a", - "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696", - "sha256:fc391e3941045fd0987c77484b2799adffd08e4b6735c4ee5f054366a2e1551d", - "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130", - "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41", - "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7", - "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2" + "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", + "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce", + "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559", + "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0", + "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81", + "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc", + "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4", + "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c", + "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130", + "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136", + "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e", + "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec", + "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7", + "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1", + "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455", + "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099", + "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129", + "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10", + "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142", + "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98", + "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa", + "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7", + "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525", + "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c", + "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9", + "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c", + "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8", + "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b", + "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf", + "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23", + "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd", + "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27", + "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f", + "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece", + "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434", + "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec", + "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff", + "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78", + "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d", + "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863", + "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53", + "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31", + "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15", + "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5", + "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b", + "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57", + "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3", + "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1", + "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f", + "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad", + "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c", + "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7", + "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2", + "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b", + "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2", + "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b", + "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9", + "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be", + "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e", + "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984", + "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4", + "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074", + "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2", + "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392", + "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91", + "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541", + "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf", + "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572", + "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66", + "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575", + "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14", + "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5", + "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1", + "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e", + "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551", + "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17", + "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead", + "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0", + "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe", + "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234", + "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0", + "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7", + "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34", + "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42", + "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385", + "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78", + "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be", + "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958", + "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749", + "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec" ], "markers": "python_version >= '3.7'", - "version": "==1.9.3" + "version": "==1.9.4" } } } \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index 290b377d..b5c861ef 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -30,7 +30,7 @@ frozenlist==1.4.0; python_version >= '3.8' icecream==2.1.3 idna==3.4; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' -isort==5.12.0; python_full_version >= '3.8.0' +isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' multidict==6.0.5; python_version >= '3.7' mypy==1.11.1; python_version >= '3.8' From 7eb297670bf49ad44a7fc1d81143ac04d0ad9eea Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 28 Dec 2023 18:03:43 +0600 Subject: [PATCH 067/245] feat: add property to get file path and dir path from file context --- chk/infrastructure/file_loader.py | 12 ++++ tests/infrastructure/file_loader_test.py | 70 ++++++++++++++++++------ 2 files changed, 66 insertions(+), 16 deletions(-) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index 85c592a2..e842b7db 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -96,6 +96,18 @@ def from_file(file: str, **kwarg: dict) -> FileContext: arguments=kwarg["arguments"] if "arguments" in kwarg else {}, ) + @property + def filepath_as_path(self) -> Path: + """Get filepath as Path""" + + return Path(self.filepath) + + @property + def filepath_base_as_path(self) -> Path: + """Get filepath parent or base as Path""" + + return Path(self.filepath).absolute().parent + class PathFrom: """Utility to expand to full path""" diff --git a/tests/infrastructure/file_loader_test.py b/tests/infrastructure/file_loader_test.py index e8ce8f15..2d7d10ee 100644 --- a/tests/infrastructure/file_loader_test.py +++ b/tests/infrastructure/file_loader_test.py @@ -15,10 +15,45 @@ from chk.infrastructure.typing_extras import JsonDecodingError +@pytest.fixture +def file_n(): + return "bitcoin-usd.chk" + + +@pytest.fixture +def options_n(): + return {"result": False} + + +@pytest.fixture +def arguments_n(): + return {"variables": {"var": 1}} + + +@pytest.fixture +def get_FileContext_v1(file_n): + file_path = tests.RES_DIR + file_n + return FileContext.from_file(file_path), file_path + + +@pytest.fixture +def get_FileContext_v2(file_n, options_n): + file_path = tests.RES_DIR + file_n + return FileContext.from_file(file_path, options=options_n), file_path + + +@pytest.fixture +def get_FileContext_v3(file_n, options_n, arguments_n): + file_path = tests.RES_DIR + file_n + return ( + FileContext.from_file(file_path, options=options_n, arguments=arguments_n), + file_path, + ) + + class TestFileContext: - def test_from_file_pass(self): - file_path = tests.RES_DIR + "bitcoin-usd.chk" - ctx = FileContext.from_file(file_path) + def test_from_file_pass(self, get_FileContext_v1): + (ctx, file_path) = get_FileContext_v1 if sys.platform.startswith("win"): file_path = file_path.replace("/", "\\") @@ -32,9 +67,8 @@ def test_from_file_pass(self): assert len(ctx.arguments) == 0 assert isinstance(ctx.arguments, dict) - def test_from_file_pass_with_opt_set(self): - file_path = tests.RES_DIR + "bitcoin-usd.chk" - ctx = FileContext.from_file(file_path, options={"result": False}) + def test_from_file_pass_with_opt_set(self, get_FileContext_v2): + ctx, file_path = get_FileContext_v2 if sys.platform.startswith("win"): file_path = file_path.replace("/", "\\") @@ -48,11 +82,8 @@ def test_from_file_pass_with_opt_set(self): assert len(ctx.arguments) == 0 assert isinstance(ctx.arguments, dict) - def test_from_file_pass_with_opt_arg_set(self): - file_path = tests.RES_DIR + "bitcoin-usd.chk" - ctx = FileContext.from_file( - file_path, options={"result": False}, arguments={"variables": {"var": 1}} - ) + def test_from_file_pass_with_opt_arg_set(self, get_FileContext_v3): + ctx, file_path = get_FileContext_v3 if sys.platform.startswith("win"): file_path = file_path.replace("/", "\\") @@ -67,11 +98,8 @@ def test_from_file_pass_with_opt_arg_set(self): assert isinstance(ctx.arguments["variables"], dict) assert ctx.arguments["variables"]["var"] == 1 - def test_from_file_pass_with_doc(self): - file_path = tests.RES_DIR + "bitcoin-usd.chk" - ctx = FileContext.from_file( - file_path, options={"result": False}, arguments={"variables": {"var": 1}} - ) + def test_from_file_pass_with_doc(self, get_FileContext_v3): + ctx, file_path = get_FileContext_v3 if sys.platform.startswith("win"): file_path = file_path.replace("/", "\\") @@ -80,6 +108,16 @@ def test_from_file_pass_with_doc(self): assert ctx.document == FileLoader.load_yaml(file_path) + def test_property_filepath_as_path_pass(self, get_FileContext_v3): + ctx, _ = get_FileContext_v3 + + assert isinstance(ctx.filepath_as_path, Path) + + def test_property_filepath_base_as_path_pass(self, get_FileContext_v3): + ctx, _ = get_FileContext_v3 + + assert isinstance(ctx.filepath_base_as_path, Path) + class TestPathFrom: """Test PathResolver""" From 1157fd884fca44f2dc3e6498c4fbe6ab9558acdf Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 28 Dec 2023 19:01:55 +0600 Subject: [PATCH 068/245] feat: make base out of dir support for PathFrom --- chk/infrastructure/file_loader.py | 2 +- tests/infrastructure/file_loader_test.py | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index e842b7db..04963ac5 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -113,7 +113,7 @@ class PathFrom: """Utility to expand to full path""" def __init__(self, base: Path): - self.base = base.absolute().parent + self.base = base.absolute().parent if base.is_file() else base.absolute() def absolute(self, target: str) -> str: """Find absolute in comparison to base URL""" diff --git a/tests/infrastructure/file_loader_test.py b/tests/infrastructure/file_loader_test.py index 2d7d10ee..df89977c 100644 --- a/tests/infrastructure/file_loader_test.py +++ b/tests/infrastructure/file_loader_test.py @@ -125,7 +125,7 @@ class TestPathFrom: @staticmethod def test_absolute_pass(): ctx = FileContext.from_file(tests.RES_DIR + "bitcoin-usd.chk") - p = PathFrom(Path(ctx.filepath)) + p = PathFrom(ctx.filepath_base_as_path) path_1 = "tests/resources/storage/sample_config/bitcoin-usd-testcase-data.chk" path_2 = "tests/resources/storage/sample_config/some-folder/bitcoin-usd-testcase-data.chk" @@ -146,6 +146,19 @@ def test_absolute_pass(): assert path_4 in p.absolute("../some-folder/./bitcoin-usd-testcase-data.chk") assert path_2 in p.absolute("./some-folder////bitcoin-usd-testcase-data.chk") + @staticmethod + def test_new_from_file(): + p = PathFrom(Path(tests.RES_DIR + "bitcoin-usd.chk")) + + assert str(p.base).endswith("/sample_config") + assert not str(p.base).endswith("bitcoin-usd.chk") + + @staticmethod + def test_new_from_dir(): + p = PathFrom(Path(tests.RES_DIR)) + + assert str(p.base).endswith("/sample_config") + FILE_PATH = "tests/resources/storage/sample_config/" From 2adedaaaf3c93c9f695b55f3d96f970f902cee6d Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 1 May 2024 13:47:03 +0600 Subject: [PATCH 069/245] chore: update package version --- Pipfile.lock | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 94d929b8..d0022678 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -993,14 +993,6 @@ "index": "pypi", "version": "==2.1.3" }, - "icecream": { - "hashes": [ - "sha256:0aa4a7c3374ec36153a1d08f81e3080e83d8ac1eefd97d2f4fe9544e8f9b49de", - "sha256:757aec31ad4488b949bc4f499d18e6e5973c40cc4d4fc607229e78cfaec94c34" - ], - "index": "pypi", - "version": "==2.1.3" - }, "idna": { "hashes": [ "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", @@ -1289,14 +1281,6 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, "tomlkit": { "hashes": [ "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", @@ -1436,4 +1420,4 @@ "version": "==1.9.4" } } -} \ No newline at end of file +} From 836ac531f5c11a3744265455ea8ef51b3997af27 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 19 May 2024 20:20:06 +0600 Subject: [PATCH 070/245] feat: update packages --- Pipfile.lock | 7 ------- requirements.txt | 1 + 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index d0022678..7fe889af 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -590,13 +590,6 @@ ], "version": "==2.4.1" }, - "asttokens": { - "hashes": [ - "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", - "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0" - ], - "version": "==2.4.1" - }, "attrs": { "hashes": [ "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", diff --git a/requirements.txt b/requirements.txt index af22f6d5..e4577a40 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +-i https://pypi.org/simple annotated-types==0.7.0; python_version >= '3.8' cerberus==1.3.5 certifi==2024.7.4; python_version >= '3.6' From 9708f390da76fd21fbf4b9b1013543e1728aa0f2 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 19 May 2024 20:20:34 +0600 Subject: [PATCH 071/245] feat: update signature for after_hook --- chk/console/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/console/main.py b/chk/console/main.py index 50ec162a..54ca93a5 100644 --- a/chk/console/main.py +++ b/chk/console/main.py @@ -31,7 +31,7 @@ def combine_initial_variables(external_vars: str, **kwargs: typing.Any) -> dict: return load_variables_as_dict(external_vars, **kwargs) -def after_hook(resp: object) -> None: +def after_hook(resp: dict) -> None: """Saves custom data from commands to global context bus Args: From 8bd0aa5279ac133b4ab592d9d2f6645321e857c1 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 26 May 2024 12:50:01 +0600 Subject: [PATCH 072/245] chore: install hence and update packages --- Pipfile | 1 + Pipfile.lock | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Pipfile b/Pipfile index 27115972..53494221 100644 --- a/Pipfile +++ b/Pipfile @@ -12,6 +12,7 @@ defusedxml = "*" xmltodict = "*" python-dotenv = "*" pydantic = "*" +hence = {ref = "v0.8.0", git = "git+https://github.com/0hsn/hence.git"} [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 7fe889af..9d56a978 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -2,7 +2,7 @@ "_meta": { "hash": { "sha256": "f8c6919125a2785629423933df305e4dbc6c5ccf65b6284fd305a499effbfe4e" - "sha256": "a0c6935e78eee645c5ebcdc0a5a789774e01f118d5fdcc4d7059abf0564bde93" + "sha256": "9b34c3e4fbd5f949e1c2f371a79ad92b3c4aea19abe1056e2a4622c5a85a8895" }, "pipfile-spec": 6, "requires": { @@ -155,6 +155,10 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==0.7.1" }, + "hence": { + "git": "git+https://github.com/0hsn/hence.git", + "ref": "f84ede4ef9b6957d6748b25ac22b16e0b793a4f4" + }, "idna": { "hashes": [ "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", @@ -163,6 +167,10 @@ "markers": "python_version >= '3.5'", "version": "==3.7" }, + "paradag": { + "git": "git+https://github.com/0hsn/paradag.git", + "ref": "38b0a0acf9cde9c56271262eba0b9f3d70db5313" + }, "pydantic": { "hashes": [ "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7", @@ -425,17 +433,19 @@ ], "markers": "python_version >= '3.8'", "version": "==4.12.0" + "markers": "python_version >= '3.8'", + "version": "==2.32.2" }, "typing-extensions": { "hashes": [ "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" - "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", - "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" + "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8", + "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594" ], "markers": "python_version >= '3.8'", "version": "==4.8.0" - "version": "==4.11.0" + "version": "==4.12.0" }, "urllib3": { "hashes": [ @@ -582,6 +592,7 @@ "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0" ], "version": "==2.4.1" + "version": "==3.2.2" }, "asttokens": { "hashes": [ @@ -1244,9 +1255,12 @@ "hashes": [ "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652", "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857" + "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd", + "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1" ], "index": "pypi", "markers": "python_version >= '3.8'", + "version": "==8.2.1" "version": "==5.0.0" }, "requests": { From 21dd45e51ab3dc71a7ca9c1310f4408d58e30c99 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 26 May 2024 12:58:36 +0600 Subject: [PATCH 073/245] refactor: naming update --- chk/modules/workflow/entities.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 40f392ab..7164bb6d 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -1,6 +1,7 @@ """ Entities for workflow """ + from __future__ import annotations import enum @@ -70,7 +71,7 @@ class ChkwareTaskDataArgument(BaseModel): @staticmethod def from_dict(data: dict) -> ChkwareValidateTask: - """constractor""" + """constructor""" if not data: raise AttributeError("ChkwareValidateTask:from_dict Empty data given") From 15f230b5302032fb94f36bc0ed9046071da2bf58 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 1 Jun 2024 20:30:34 +0600 Subject: [PATCH 074/245] chore: package version update --- Pipfile.lock | 152 +------------------------------------------ requirements-dev.txt | 12 +--- requirements.txt | 2 +- 3 files changed, 3 insertions(+), 163 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 9d56a978..78154121 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,8 +1,7 @@ { "_meta": { "hash": { - "sha256": "f8c6919125a2785629423933df305e4dbc6c5ccf65b6284fd305a499effbfe4e" - "sha256": "9b34c3e4fbd5f949e1c2f371a79ad92b3c4aea19abe1056e2a4622c5a85a8895" + "sha256": "71707dd179bf543fe34998fcfe0053bd975b1fc820294e8951fe76b682c3bc35" }, "pipfile-spec": 6, "requires": { @@ -175,8 +174,6 @@ "hashes": [ "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7", "sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7" - "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5", - "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc" ], "index": "pypi", "markers": "python_version >= '3.8'", @@ -184,85 +181,6 @@ }, "pydantic-core": { "hashes": [ - "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b", - "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a", - "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90", - "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d", - "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e", - "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d", - "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027", - "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804", - "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347", - "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400", - "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3", - "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399", - "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349", - "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd", - "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c", - "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e", - "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413", - "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3", - "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e", - "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3", - "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91", - "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce", - "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c", - "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb", - "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664", - "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6", - "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd", - "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3", - "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af", - "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043", - "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350", - "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7", - "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0", - "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563", - "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761", - "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72", - "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3", - "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb", - "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788", - "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b", - "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c", - "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038", - "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250", - "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec", - "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c", - "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74", - "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81", - "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439", - "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75", - "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0", - "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8", - "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150", - "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438", - "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae", - "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857", - "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038", - "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374", - "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f", - "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241", - "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592", - "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4", - "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d", - "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b", - "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b", - "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182", - "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e", - "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641", - "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70", - "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9", - "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a", - "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543", - "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b", - "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f", - "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38", - "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845", - "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2", - "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0", - "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4", - "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242" "sha256:0bee9bb305a562f8b9271855afb6ce00223f545de3d68560b3c1649c7c5295e9", "sha256:0ecce4b2360aa3f008da3327d652e74a0e743908eac306198b47e1c58b03dd2b", "sha256:17954d784bf8abfc0ec2a633108207ebc4fa2df1a0e4c0c3ccbaa9bb01d2c426", @@ -345,8 +263,6 @@ ], "markers": "python_version >= '3.8'", "version": "==2.18.3" - "markers": "python_version >= '3.8'", - "version": "==2.18.2" }, "python-dotenv": { "hashes": [ @@ -433,19 +349,6 @@ ], "markers": "python_version >= '3.8'", "version": "==4.12.0" - "markers": "python_version >= '3.8'", - "version": "==2.32.2" - }, - "typing-extensions": { - "hashes": [ - "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", - "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" - "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8", - "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594" - ], - "markers": "python_version >= '3.8'", - "version": "==4.8.0" - "version": "==4.12.0" }, "urllib3": { "hashes": [ @@ -586,14 +489,6 @@ "markers": "python_full_version >= '3.8.0'", "version": "==3.2.4" }, - "asttokens": { - "hashes": [ - "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", - "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0" - ], - "version": "==2.4.1" - "version": "==3.2.2" - }, "asttokens": { "hashes": [ "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", @@ -761,14 +656,6 @@ "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" }, - "colorama": { - "hashes": [ - "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", - "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" - ], - "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" - }, "coverage": { "extras": [ "toml" @@ -867,14 +754,6 @@ "markers": "python_version >= '3.11'", "version": "==0.3.8" }, - "executing": { - "hashes": [ - "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", - "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc" - ], - "markers": "python_version >= '3.5'", - "version": "==2.0.1" - }, "docopt": { "hashes": [ "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" @@ -889,14 +768,6 @@ "markers": "python_version >= '3.5'", "version": "==2.0.1" }, - "executing": { - "hashes": [ - "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", - "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc" - ], - "markers": "python_version >= '3.5'", - "version": "==2.0.1" - }, "flake8": { "hashes": [ "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38", @@ -1223,16 +1094,6 @@ "markers": "python_version >= '3.8'", "version": "==2.18.0" }, - "pygments": { - "hashes": [ - "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c", - "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" - ], - "markers": "python_version >= '3.7'", - "version": "==2.17.2" - "markers": "python_version >= '3.8'", - "version": "==2.18.0" - }, "pylint": { "hashes": [ "sha256:03c8e3baa1d9fb995b12c1dbe00aa6c4bcef210c2a2634374aedeb22fb4a8f8f", @@ -1255,12 +1116,9 @@ "hashes": [ "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652", "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857" - "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd", - "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==8.2.1" "version": "==5.0.0" }, "requests": { @@ -1280,14 +1138,6 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, "tomlkit": { "hashes": [ "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", diff --git a/requirements-dev.txt b/requirements-dev.txt index b5c861ef..d53d483d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -19,16 +19,9 @@ colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3. dill==0.3.8; python_version >= '3.11' executing==2.0.1; python_version >= '3.5' flake8==7.0.0; python_full_version >= '3.8.1' -colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' -dill==0.3.8; python_version >= '3.11' -executing==2.0.1; python_version >= '3.5' -flake8==7.0.0; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 idna==3.7; python_version >= '3.5' -frozenlist==1.4.0; python_version >= '3.8' -icecream==2.1.3 -idna==3.4; python_version >= '3.5' iniconfig==2.0.0; python_version >= '3.7' isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' @@ -57,12 +50,9 @@ yarl==1.9.4; python_version >= '3.7' annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +hence@ git+https://github.com/0hsn/hence.git@f84ede4ef9b6957d6748b25ac22b16e0b793a4f4 pydantic==2.7.2; python_version >= '3.8' pydantic-core==2.18.3; python_version >= '3.8' -pydantic==2.7.1; python_version >= '3.8' -pydantic-core==2.18.2; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' -pydantic==2.5.0; python_version >= '3.7' -pydantic-core==2.14.1; python_version >= '3.7' pyyaml==6.0.1; python_version >= '3.6' xmltodict==0.13.0; python_version >= '3.4' diff --git a/requirements.txt b/requirements.txt index e4577a40..d1d41e08 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,10 @@ --i https://pypi.org/simple annotated-types==0.7.0; python_version >= '3.8' cerberus==1.3.5 certifi==2024.7.4; python_version >= '3.6' charset-normalizer==3.3.2; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +hence@ git+https://github.com/0hsn/hence.git@f84ede4ef9b6957d6748b25ac22b16e0b793a4f4 idna==3.7; python_version >= '3.5' pydantic==2.7.2; python_version >= '3.8' pydantic-core==2.18.3; python_version >= '3.8' From 953d42f88b8a826d9735f151c3af06c26ce5309e Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 9 Jul 2024 12:23:18 +0600 Subject: [PATCH 075/245] chore: package updates --- Pipfile.lock | 184 +++++++++++++++++++++++++++------------------------ 1 file changed, 97 insertions(+), 87 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 78154121..788a5d46 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -172,97 +172,107 @@ }, "pydantic": { "hashes": [ - "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7", - "sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7" + "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a", + "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==2.7.2" + "version": "==2.8.2" }, "pydantic-core": { "hashes": [ - "sha256:0bee9bb305a562f8b9271855afb6ce00223f545de3d68560b3c1649c7c5295e9", - "sha256:0ecce4b2360aa3f008da3327d652e74a0e743908eac306198b47e1c58b03dd2b", - "sha256:17954d784bf8abfc0ec2a633108207ebc4fa2df1a0e4c0c3ccbaa9bb01d2c426", - "sha256:19d2e725de0f90d8671f89e420d36c3dd97639b98145e42fcc0e1f6d492a46dc", - "sha256:1f9cd7f5635b719939019be9bda47ecb56e165e51dd26c9a217a433e3d0d59a9", - "sha256:200ad4e3133cb99ed82342a101a5abf3d924722e71cd581cc113fe828f727fbc", - "sha256:24b214b7ee3bd3b865e963dbed0f8bc5375f49449d70e8d407b567af3222aae4", - "sha256:2c44efdd3b6125419c28821590d7ec891c9cb0dff33a7a78d9d5c8b6f66b9702", - "sha256:2c8333f6e934733483c7eddffdb094c143b9463d2af7e6bd85ebcb2d4a1b82c6", - "sha256:2f7ef5f0ebb77ba24c9970da18b771711edc5feaf00c10b18461e0f5f5949231", - "sha256:304378b7bf92206036c8ddd83a2ba7b7d1a5b425acafff637172a3aa72ad7083", - "sha256:370059b7883485c9edb9655355ff46d912f4b03b009d929220d9294c7fd9fd60", - "sha256:37b40c05ced1ba4218b14986fe6f283d22e1ae2ff4c8e28881a70fb81fbfcda7", - "sha256:3d3e42bb54e7e9d72c13ce112e02eb1b3b55681ee948d748842171201a03a98a", - "sha256:3fc1c7f67f34c6c2ef9c213e0f2a351797cda98249d9ca56a70ce4ebcaba45f4", - "sha256:41dbdcb0c7252b58fa931fec47937edb422c9cb22528f41cb8963665c372caf6", - "sha256:432e999088d85c8f36b9a3f769a8e2b57aabd817bbb729a90d1fe7f18f6f1f39", - "sha256:45e4ffbae34f7ae30d0047697e724e534a7ec0a82ef9994b7913a412c21462a0", - "sha256:4afa5f5973e8572b5c0dcb4e2d4fda7890e7cd63329bd5cc3263a25c92ef0026", - "sha256:544a9a75622357076efb6b311983ff190fbfb3c12fc3a853122b34d3d358126c", - "sha256:5560dda746c44b48bf82b3d191d74fe8efc5686a9ef18e69bdabccbbb9ad9442", - "sha256:58ff8631dbab6c7c982e6425da8347108449321f61fe427c52ddfadd66642af7", - "sha256:5a64faeedfd8254f05f5cf6fc755023a7e1606af3959cfc1a9285744cc711044", - "sha256:60e4c625e6f7155d7d0dcac151edf5858102bc61bf959d04469ca6ee4e8381bd", - "sha256:616221a6d473c5b9aa83fa8982745441f6a4a62a66436be9445c65f241b86c94", - "sha256:63081a49dddc6124754b32a3774331467bfc3d2bd5ff8f10df36a95602560361", - "sha256:666e45cf071669fde468886654742fa10b0e74cd0fa0430a46ba6056b24fb0af", - "sha256:67bc078025d70ec5aefe6200ef094576c9d86bd36982df1301c758a9fff7d7f4", - "sha256:691018785779766127f531674fa82bb368df5b36b461622b12e176c18e119022", - "sha256:6a36f78674cbddc165abab0df961b5f96b14461d05feec5e1f78da58808b97e7", - "sha256:6afd5c867a74c4d314c557b5ea9520183fadfbd1df4c2d6e09fd0d990ce412cd", - "sha256:6b32c2a1f8032570842257e4c19288eba9a2bba4712af542327de9a1204faff8", - "sha256:6e59fca51ffbdd1638b3856779342ed69bcecb8484c1d4b8bdb237d0eb5a45e2", - "sha256:70cf099197d6b98953468461d753563b28e73cf1eade2ffe069675d2657ed1d5", - "sha256:73038d66614d2e5cde30435b5afdced2b473b4c77d4ca3a8624dd3e41a9c19be", - "sha256:744697428fcdec6be5670460b578161d1ffe34743a5c15656be7ea82b008197c", - "sha256:77319771a026f7c7d29c6ebc623de889e9563b7087911b46fd06c044a12aa5e9", - "sha256:7a20dded653e516a4655f4c98e97ccafb13753987434fe7cf044aa25f5b7d417", - "sha256:7e6382ce89a92bc1d0c0c5edd51e931432202b9080dc921d8d003e616402efd1", - "sha256:7fdd362f6a586e681ff86550b2379e532fee63c52def1c666887956748eaa326", - "sha256:80aea0ffeb1049336043d07799eace1c9602519fb3192916ff525b0287b2b1e4", - "sha256:82f2718430098bcdf60402136c845e4126a189959d103900ebabb6774a5d9fdb", - "sha256:855ec66589c68aa367d989da5c4755bb74ee92ccad4fdb6af942c3612c067e34", - "sha256:9128089da8f4fe73f7a91973895ebf2502539d627891a14034e45fb9e707e26d", - "sha256:929c24e9dea3990bc8bcd27c5f2d3916c0c86f5511d2caa69e0d5290115344a9", - "sha256:98ed737567d8f2ecd54f7c8d4f8572ca7c7921ede93a2e52939416170d357812", - "sha256:9a46795b1f3beb167eaee91736d5d17ac3a994bf2215a996aed825a45f897558", - "sha256:9f9e04afebd3ed8c15d67a564ed0a34b54e52136c6d40d14c5547b238390e779", - "sha256:a4e651e47d981c1b701dcc74ab8fec5a60a5b004650416b4abbef13db23bc7be", - "sha256:a62e437d687cc148381bdd5f51e3e81f5b20a735c55f690c5be94e05da2b0d5c", - "sha256:aaee40f25bba38132e655ffa3d1998a6d576ba7cf81deff8bfa189fb43fd2bbe", - "sha256:adf952c3f4100e203cbaf8e0c907c835d3e28f9041474e52b651761dc248a3c0", - "sha256:b367a73a414bbb08507da102dc2cde0fa7afe57d09b3240ce82a16d608a7679c", - "sha256:b8e20e15d18bf7dbb453be78a2d858f946f5cdf06c5072453dace00ab652e2b2", - "sha256:b95a0972fac2b1ff3c94629fc9081b16371dad870959f1408cc33b2f78ad347a", - "sha256:b9ebe8231726c49518b16b237b9fe0d7d361dd221302af511a83d4ada01183ab", - "sha256:ba905d184f62e7ddbb7a5a751d8a5c805463511c7b08d1aca4a3e8c11f2e5048", - "sha256:bd4435b8d83f0c9561a2a9585b1de78f1abb17cb0cef5f39bf6a4b47d19bafe3", - "sha256:bd7df92f28d351bb9f12470f4c533cf03d1b52ec5a6e5c58c65b183055a60106", - "sha256:c0037a92cf0c580ed14e10953cdd26528e8796307bb8bb312dc65f71547df04d", - "sha256:c0d9ff283cd3459fa0bf9b0256a2b6f01ac1ff9ffb034e24457b9035f75587cb", - "sha256:c56eca1686539fa0c9bda992e7bd6a37583f20083c37590413381acfc5f192d6", - "sha256:c6ac9ffccc9d2e69d9fba841441d4259cb668ac180e51b30d3632cd7abca2b9b", - "sha256:c826870b277143e701c9ccf34ebc33ddb4d072612683a044e7cce2d52f6c3fef", - "sha256:cd4a032bb65cc132cae1fe3e52877daecc2097965cd3914e44fbd12b00dae7c5", - "sha256:d33ce258e4e6e6038f2b9e8b8a631d17d017567db43483314993b3ca345dcbbb", - "sha256:d531076bdfb65af593326ffd567e6ab3da145020dafb9187a1d131064a55f97c", - "sha256:dccf3ef1400390ddd1fb55bf0632209d39140552d068ee5ac45553b556780e06", - "sha256:df11fa992e9f576473038510d66dd305bcd51d7dd508c163a8c8fe148454e059", - "sha256:e1a8376fef60790152564b0eab376b3e23dd6e54f29d84aad46f7b264ecca943", - "sha256:e201935d282707394f3668380e41ccf25b5794d1b131cdd96b07f615a33ca4b1", - "sha256:e2e253af04ceaebde8eb201eb3f3e3e7e390f2d275a88300d6a1959d710539e2", - "sha256:e862823be114387257dacbfa7d78547165a85d7add33b446ca4f4fae92c7ff5c", - "sha256:eecf63195be644b0396f972c82598cd15693550f0ff236dcf7ab92e2eb6d3522", - "sha256:f0928cde2ae416a2d1ebe6dee324709c6f73e93494d8c7aea92df99aab1fc40f", - "sha256:f9c08cabff68704a1b4667d33f534d544b8a07b8e5d039c37067fceb18789e78", - "sha256:fec02527e1e03257aa25b1a4dcbe697b40a22f1229f5d026503e8b7ff6d2eda7", - "sha256:ff58f379345603d940e461eae474b6bbb6dab66ed9a851ecd3cb3709bf4dcf6a", - "sha256:ffecbb5edb7f5ffae13599aec33b735e9e4c7676ca1633c60f2c606beb17efc5" + "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d", + "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f", + "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686", + "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482", + "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006", + "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83", + "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6", + "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88", + "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86", + "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a", + "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6", + "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a", + "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6", + "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6", + "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43", + "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c", + "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4", + "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e", + "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203", + "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd", + "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1", + "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24", + "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc", + "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc", + "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3", + "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598", + "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98", + "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331", + "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2", + "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a", + "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6", + "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688", + "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91", + "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa", + "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b", + "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0", + "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840", + "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c", + "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd", + "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3", + "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231", + "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1", + "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953", + "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250", + "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a", + "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2", + "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20", + "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434", + "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab", + "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703", + "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a", + "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2", + "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac", + "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611", + "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121", + "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e", + "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b", + "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09", + "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906", + "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9", + "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7", + "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b", + "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987", + "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c", + "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b", + "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e", + "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237", + "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1", + "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19", + "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b", + "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad", + "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0", + "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94", + "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312", + "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f", + "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669", + "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1", + "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe", + "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99", + "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a", + "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a", + "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52", + "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c", + "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad", + "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1", + "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a", + "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f", + "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a", + "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27" ], "markers": "python_version >= '3.8'", - "version": "==2.18.3" + "version": "==2.20.1" }, "python-dotenv": { "hashes": [ @@ -344,11 +354,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8", - "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594" + "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", + "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8" ], - "markers": "python_version >= '3.8'", - "version": "==4.12.0" + "markers": "python_version < '3.13'", + "version": "==4.12.2" }, "urllib3": { "hashes": [ From 731ce91947a4d2f17d1416d0ccbd7c07d3adc823 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 9 Jul 2024 22:15:33 +0600 Subject: [PATCH 076/245] feat: hence version 0.9.0 update --- Pipfile | 2 +- Pipfile.lock | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Pipfile b/Pipfile index 53494221..e6e2cc0c 100644 --- a/Pipfile +++ b/Pipfile @@ -12,7 +12,7 @@ defusedxml = "*" xmltodict = "*" python-dotenv = "*" pydantic = "*" -hence = {ref = "v0.8.0", git = "git+https://github.com/0hsn/hence.git"} +hence = {ref = "v0.9.0", git = "git+https://github.com/0hsn/hence.git"} [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 788a5d46..b6a14396 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "71707dd179bf543fe34998fcfe0053bd975b1fc820294e8951fe76b682c3bc35" + "sha256": "9065a327209818ac6ead9bc336a6ee0f36f9d4bda41ea7bad25e18f85b5fc804" }, "pipfile-spec": 6, "requires": { @@ -156,7 +156,7 @@ }, "hence": { "git": "git+https://github.com/0hsn/hence.git", - "ref": "f84ede4ef9b6957d6748b25ac22b16e0b793a4f4" + "ref": "b7f5eb96ec69391e16e797a389f7a465e1958fd3" }, "idna": { "hashes": [ @@ -167,8 +167,11 @@ "version": "==3.7" }, "paradag": { - "git": "git+https://github.com/0hsn/paradag.git", - "ref": "38b0a0acf9cde9c56271262eba0b9f3d70db5313" + "hashes": [ + "sha256:3d2977892de62bd111c517c25f4c75750259c94c9711a190094b942723697ab7", + "sha256:dbd57185a1553970877c452aedf961912eb7825a9a25e8a71010e84660710c42" + ], + "version": "==1.2.0" }, "pydantic": { "hashes": [ From a1cfa896e2298be5877a74868978547ca0869ea0 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 16:12:59 +0600 Subject: [PATCH 077/245] chore: fix hence update --- Pipfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pipfile.lock b/Pipfile.lock index b6a14396..2dd731db 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -156,7 +156,7 @@ }, "hence": { "git": "git+https://github.com/0hsn/hence.git", - "ref": "b7f5eb96ec69391e16e797a389f7a465e1958fd3" + "ref": "46e443b2ad0d16cb872c64db086bc8976cdf8dd7" }, "idna": { "hashes": [ From 4a1cdbfc21d215947b26e485e7f58ccba7506e1a Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 16:13:21 +0600 Subject: [PATCH 078/245] feat: helper for finding absolute file path --- chk/infrastructure/file_loader.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index 04963ac5..6b8f2d0a 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -109,6 +109,36 @@ def filepath_base_as_path(self) -> Path: return Path(self.filepath).absolute().parent +# @TODO Need testing +def generate_abs_path(base_: str, target_: str) -> str: + """Generate absolute path in comparison to base path + Args: + base_: str, base path to calculate from + target_: str, file path that need absolute path + + Returns: + Absolute path for given filepath + """ + base = Path(base_) + base_abs = base.absolute().parent if base.is_file() else base.absolute() + + if not base_abs.exists(): + raise ValueError("Invalid base path.") + if not (target_.startswith("./") or target_.startswith("../")): + raise ValueError("Invalid target path.") + + to_path = base_abs + target_path_sp = target_.split("/") + + for part in target_path_sp: + if part == "..": + to_path = to_path.parent + else: + to_path = Path(str(to_path) + "/" + part) + + return str(to_path) + + class PathFrom: """Utility to expand to full path""" From cafe67b40351ccc51b66639e8a7fee23806410af Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 16:24:22 +0600 Subject: [PATCH 079/245] refactor: remove PathFrom - remove PathFrom - replace uses with generate_abs_path --- chk/infrastructure/file_loader.py | 27 ++------------ tests/infrastructure/file_loader_test.py | 45 +++++++++++------------- 2 files changed, 23 insertions(+), 49 deletions(-) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index 6b8f2d0a..de9f93cb 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -1,6 +1,7 @@ """ File loader utility """ + from __future__ import annotations import hashlib from typing import NamedTuple @@ -119,6 +120,7 @@ def generate_abs_path(base_: str, target_: str) -> str: Returns: Absolute path for given filepath """ + base = Path(base_) base_abs = base.absolute().parent if base.is_file() else base.absolute() @@ -139,31 +141,6 @@ def generate_abs_path(base_: str, target_: str) -> str: return str(to_path) -class PathFrom: - """Utility to expand to full path""" - - def __init__(self, base: Path): - self.base = base.absolute().parent if base.is_file() else base.absolute() - - def absolute(self, target: str) -> str: - """Find absolute in comparison to base URL""" - - if target.startswith("./") or target.startswith("../"): - if self.base.exists(): - to_path = self.base - - target_path_sp = target.split("/") - for part in target_path_sp: - if part == "..": - to_path = to_path.parent - else: - to_path = Path(str(to_path) + "/" + part) - - return str(to_path) - raise ValueError("Invalid base path.") - raise ValueError("Invalid target path.") - - class ExecuteContext(NamedTuple): """Information storage for execution context""" diff --git a/tests/infrastructure/file_loader_test.py b/tests/infrastructure/file_loader_test.py index df89977c..ef9c56a6 100644 --- a/tests/infrastructure/file_loader_test.py +++ b/tests/infrastructure/file_loader_test.py @@ -9,8 +9,8 @@ from chk.infrastructure.file_loader import ( FileContext, - PathFrom, FileLoader, + generate_abs_path, ) from chk.infrastructure.typing_extras import JsonDecodingError @@ -119,13 +119,13 @@ def test_property_filepath_base_as_path_pass(self, get_FileContext_v3): assert isinstance(ctx.filepath_base_as_path, Path) -class TestPathFrom: +class TestGenerateAbsPath: """Test PathResolver""" @staticmethod - def test_absolute_pass(): + def test_generate_abs_path_pass(): ctx = FileContext.from_file(tests.RES_DIR + "bitcoin-usd.chk") - p = PathFrom(ctx.filepath_base_as_path) + p_base = ctx.filepath path_1 = "tests/resources/storage/sample_config/bitcoin-usd-testcase-data.chk" path_2 = "tests/resources/storage/sample_config/some-folder/bitcoin-usd-testcase-data.chk" @@ -138,26 +138,23 @@ def test_absolute_pass(): path_3 = path_3.replace("/", "\\") path_4 = path_4.replace("/", "\\") - assert path_1 in p.absolute("./bitcoin-usd-testcase-data.chk") - assert path_2 in p.absolute("./some-folder/bitcoin-usd-testcase-data.chk") - assert path_3 in p.absolute("./../bitcoin-usd-testcase-data.chk") - assert path_1 in p.absolute("./some-folder/../bitcoin-usd-testcase-data.chk") - assert path_3 in p.absolute("../some-folder/../bitcoin-usd-testcase-data.chk") - assert path_4 in p.absolute("../some-folder/./bitcoin-usd-testcase-data.chk") - assert path_2 in p.absolute("./some-folder////bitcoin-usd-testcase-data.chk") - - @staticmethod - def test_new_from_file(): - p = PathFrom(Path(tests.RES_DIR + "bitcoin-usd.chk")) - - assert str(p.base).endswith("/sample_config") - assert not str(p.base).endswith("bitcoin-usd.chk") - - @staticmethod - def test_new_from_dir(): - p = PathFrom(Path(tests.RES_DIR)) - - assert str(p.base).endswith("/sample_config") + assert path_1 in generate_abs_path(p_base, "./bitcoin-usd-testcase-data.chk") + assert path_2 in generate_abs_path( + p_base, "./some-folder/bitcoin-usd-testcase-data.chk" + ) + assert path_3 in generate_abs_path(p_base, "./../bitcoin-usd-testcase-data.chk") + assert path_1 in generate_abs_path( + p_base, "./some-folder/../bitcoin-usd-testcase-data.chk" + ) + assert path_3 in generate_abs_path( + p_base, "../some-folder/../bitcoin-usd-testcase-data.chk" + ) + assert path_4 in generate_abs_path( + p_base, "../some-folder/./bitcoin-usd-testcase-data.chk" + ) + assert path_2 in generate_abs_path( + p_base, "./some-folder////bitcoin-usd-testcase-data.chk" + ) FILE_PATH = "tests/resources/storage/sample_config/" From a7031b66979201c20ed05199272e8fa76dcdcd38 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 17:10:24 +0600 Subject: [PATCH 080/245] feat: define task domain object --- chk/modules/fetch.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index f94731e6..c1d345fc 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -10,6 +10,7 @@ from collections import UserDict, abc from urllib.parse import unquote, urlparse +from pydantic import BaseModel, Field from requests.auth import HTTPBasicAuth from defusedxml.minidom import parseString @@ -203,6 +204,16 @@ def allowed_url(value: str) -> bool: return True +class FetchTask(BaseModel): + """Parsed FetchTask""" + + name: str + uses: str + file: str + variables: dict = Field(default_factory=dict) + arguments: dict = Field(default_factory=dict) + + class HttpRequestArgCompiler: """HttpRequestArgCompiler""" From 6065b6e4a05e33cead841d8c528f8cbdf8676252 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 17:11:15 +0600 Subject: [PATCH 081/245] refactor: code format update --- chk/modules/fetch.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index c1d345fc..a671cdd7 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -1,6 +1,7 @@ """ Fetch module """ + from __future__ import annotations import dataclasses import enum @@ -497,14 +498,16 @@ def display(expose_list: list, exec_ctx: ExecuteContext) -> None: if exec_ctx.options["format"]: formatter( - "\n---\n".join( - [ - item if isinstance(item, str) else str(item) - for item in display_item_list - ] - ) - if len(display_item_list) > 1 - else display_item_list.pop(), + ( + "\n---\n".join( + [ + item if isinstance(item, str) else str(item) + for item in display_item_list + ] + ) + if len(display_item_list) > 1 + else display_item_list.pop() + ), dump=exec_ctx.options["dump"], ) else: From 90a24b139e1cfdc7eaadc1ee9e79e162d0d8e6cb Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 17:12:00 +0600 Subject: [PATCH 082/245] feat: implement fetch task --- chk/modules/fetch.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index a671cdd7..aa9115fb 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -11,6 +11,7 @@ from collections import UserDict, abc from urllib.parse import unquote, urlparse +from hence import task from pydantic import BaseModel, Field from requests.auth import HTTPBasicAuth @@ -573,3 +574,21 @@ def execute( cb({ctx.filepath_hash: exec_response.variables_exec.data}) HttpDocumentSupport.display(exposed_data, exec_ctx) + + +@task(title="Fetch task") +def task_fetch(**kwargs: dict) -> ExecResponse: + """Task impl""" + + if not (doc := kwargs.get("task", {})): + raise ValueError("Wrong task format given.") + + _task = FetchTask(**doc) + + return call( + FileContext.from_file(_task.file), + ExecuteContext( + options={"dump": True, "format": True}, + arguments=_task.arguments | {"variables": _task.variables}, + ), + ) From 96666ab87a26bff9b5f6b9eee86f5b0c15913f04 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 18:01:57 +0600 Subject: [PATCH 083/245] feat: add ValidationTask domain class --- chk/modules/validate/assertion_services.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index 89e4ce2f..2ed62d83 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -9,6 +9,8 @@ from collections.abc import Callable from datetime import datetime +from pydantic import BaseModel, Field + import chk.modules.validate.assertion_function as asrt_f from chk.infrastructure.helper import Cast from chk.infrastructure.templating import StrTemplate @@ -327,3 +329,13 @@ def test_run( test_run_result["results"] = results return test_run_result + + +class ValidationTask(BaseModel): + """Parsed FetchTask""" + + name: str + uses: str + file: str + variables: dict = Field(default_factory=dict) + arguments: dict = Field(default_factory=dict) \ No newline at end of file From 52d75be7992dc08e948c0387a0bc10563c33ff0b Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 18:02:34 +0600 Subject: [PATCH 084/245] refactor: general code linting fix --- chk/modules/validate/__init__.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index e91fc40e..3b60b971 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -1,6 +1,7 @@ """ Validate module """ + from __future__ import annotations import dataclasses import enum @@ -221,16 +222,20 @@ def display(expose_list: list, exec_ctx: ExecuteContext) -> None: if exec_ctx.options["format"]: formatter( - "\n---\n".join([str(item) for item in display_item_list]) - if len(display_item_list) > 1 - else display_item_list.pop(), + ( + "\n---\n".join([str(item) for item in display_item_list]) + if len(display_item_list) > 1 + else display_item_list.pop() + ), dump=exec_ctx.options["dump"], ) else: formatter( - json.dumps(display_item_list) - if len(display_item_list) > 1 - else json.dumps(display_item_list.pop()), + ( + json.dumps(display_item_list) + if len(display_item_list) > 1 + else json.dumps(display_item_list.pop()) + ), dump=exec_ctx.options["dump"], ) From 923b3e827e3c4300bfbf8e0003452419c84ac58a Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 18:02:49 +0600 Subject: [PATCH 085/245] feat: create validation task --- chk/modules/validate/__init__.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 3b60b971..fc04fe5e 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -9,6 +9,7 @@ from collections import abc import cerberus +from hence import task from chk.infrastructure.document import VersionedDocument, VersionedDocumentSupport from chk.infrastructure.file_loader import FileContext, ExecuteContext @@ -29,6 +30,7 @@ AssertionEntry, AssertionEntryListRunner, AllTestRunResult, + ValidationTask, MAP_TYPE_TO_FN, ) from chk.modules.validate.assertion_validation import ( @@ -305,3 +307,21 @@ def execute( cb({ctx.filepath_hash: exec_response.variables_exec.data}) ValidationDocumentSupport.display(exposed_data, exec_ctx) + + +@task(title="Validate task") +def task_validation(**kwargs: dict) -> ExecResponse: + """Task impl""" + + if not (doc := kwargs.get("task", {})): + raise ValueError("Wrong task format given.") + + _task = ValidationTask(**doc) + + return call( + FileContext.from_file(_task.file), + ExecuteContext( + options={"dump": True, "format": True}, + arguments=_task.arguments | {"variables": _task.variables}, + ), + ) From 6bdd1b2b2927e7d28730422ee5774e6153cfbe0c Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 18:04:41 +0600 Subject: [PATCH 086/245] feat: implement task based workflow --- chk/modules/workflow/__init__.py | 54 ++++++++++++++++---------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 659e95ee..c0eca983 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -6,18 +6,24 @@ from collections import abc import pathlib +from hence import run_tasks, hence_config from pydantic import Field, ConfigDict from icecream import ic from chk.infrastructure.document import VersionedDocumentV2 as VersionedDocument -from chk.modules import validate, fetch +from chk.modules.fetch import task_fetch +from chk.modules.validate import task_validation from chk.modules.workflow.entities import ( ChkwareTask, ChkwareValidateTask, ParsedTask, WorkflowUses, ) -from chk.infrastructure.file_loader import FileContext, ExecuteContext, PathFrom +from chk.infrastructure.file_loader import ( + FileContext, + ExecuteContext, + generate_abs_path, +) from chk.infrastructure.helper import data_get, formatter, slugify from chk.infrastructure.symbol_table import Variables, VariableTableManager @@ -38,11 +44,13 @@ class WorkflowDocument(VersionedDocument): def from_file_context(ctx: FileContext) -> WorkflowDocument: """Create a WorkflowDocument from FileContext""" + # @TODO this should to VersionDoc # version if not (version_str := data_get(ctx.document, "version")): raise RuntimeError("`version:` not found.") # id, name + # @TODO Name and ID processing should have separate func if name_str := data_get(ctx.document, "name"): name_str = str(name_str).strip() @@ -67,6 +75,7 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: tasks = [] for task in tasks_lst: + # @TODO can this be done in ParsedTask class if not isinstance(task, dict): raise RuntimeError("`tasks.*.item` should be map.") @@ -106,12 +115,13 @@ def process_task_template( formatter(f"\n\nExecuting: {document.name}") formatter("-" * len(f"Executing: {document.name}")) - for task in document.tasks: - fcx = FileContext(*document.context) - file_path = PathFrom(pathlib.Path(fcx.filepath)) - file_ctx: FileContext = FileContext.from_file(file_path.absolute(task.file)) + base_filepath: str = FileContext(*document.context).filepath + task_executable_lst = [] - del fcx, file_path + for task in document.tasks: + ic(task) + _task_d = task.model_dump() + _task_d["file"] = generate_abs_path(base_filepath, task.file) execution_ctx = ExecuteContext( {"dump": True, "format": True}, @@ -122,32 +132,22 @@ def process_task_template( # ), }, ) + ic(_task_d) + _task_params = { + "task": _task_d, + "execution_context": execution_ctx, + } + formatter(f"\nTask: {task.name}") match task.uses: case WorkflowUses.fetch.value: - exec_resp = fetch.call(file_ctx, execution_ctx) - - __method = data_get(exec_resp.file_ctx.document, "request.method") - __url = data_get(exec_resp.file_ctx.document, "request.url") - - formatter(f"-> {__method} {__url}") - + task_executable_lst.append((task_fetch, _task_params)) case WorkflowUses.validate.value: - execution_ctx.arguments[ - "data" - ] = cls._prepare_validate_task_argument_data_(task) - - exec_resp = validate.call(file_ctx, execution_ctx) - - __count_all = data_get( - exec_resp.variables_exec.data, "_asserts_response.count_all" - ) - __count_fail = data_get( - exec_resp.variables_exec.data, "_asserts_response.count_fail" - ) + task_executable_lst.append((task_validation, _task_params)) - formatter(f"-> Total tests: {__count_all}, Failed: {__count_fail}") + run_tasks(task_executable_lst) + ic(hence_config.context) def execute( From f585fc0888c1d7de501cce1daff3ecc95435559f Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 10 Jul 2024 18:05:00 +0600 Subject: [PATCH 087/245] feat: update domain models for validation tasks --- chk/modules/workflow/entities.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 7164bb6d..f4f46273 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -24,7 +24,7 @@ class ParsedTask(BaseModel): uses: str file: str variables: dict = Field(default_factory=dict) - arguments: dict = Field(default=None) + arguments: dict = Field(default_factory=dict) class ChkwareTask(BaseModel): @@ -63,11 +63,11 @@ class ChkwareTaskDataArgument(BaseModel): model_config = ConfigDict(extra="forbid") - data: dict + data: dict = Field(default_factory=dict) model_config = ConfigDict(extra="forbid") - arguments: typing.Optional[ChkwareTaskDataArgument] = Field(default=None) + arguments: ChkwareTaskDataArgument = Field(default_factory=ChkwareTaskDataArgument) @staticmethod def from_dict(data: dict) -> ChkwareValidateTask: @@ -81,5 +81,4 @@ def from_dict(data: dict) -> ChkwareValidateTask: @staticmethod def from_parsed_task(task: ParsedTask) -> ChkwareValidateTask: """Create new instance from ParsedTask""" - return ChkwareValidateTask.from_dict(task.model_dump()) From 089dc149e7db86750e299111823bbd4978295166 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 17 Jul 2024 22:40:27 +0600 Subject: [PATCH 088/245] chore: package version update --- Pipfile | 2 +- Pipfile.lock | 12 ++++++++++-- requirements-dev.txt | 10 ++++++---- requirements.txt | 12 +++++++----- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/Pipfile b/Pipfile index e6e2cc0c..4c853853 100644 --- a/Pipfile +++ b/Pipfile @@ -12,7 +12,7 @@ defusedxml = "*" xmltodict = "*" python-dotenv = "*" pydantic = "*" -hence = {ref = "v0.9.0", git = "git+https://github.com/0hsn/hence.git"} +hence = {ref = "v0.9.5", git = "git+https://github.com/0hsn/hence.git"} [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 2dd731db..113f06fe 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "9065a327209818ac6ead9bc336a6ee0f36f9d4bda41ea7bad25e18f85b5fc804" + "sha256": "c3a689b8e1cc9bd9980e5afbbfe511da59ac2577d1a6329a3585e9368f73e8e4" }, "pipfile-spec": 6, "requires": { @@ -156,7 +156,7 @@ }, "hence": { "git": "git+https://github.com/0hsn/hence.git", - "ref": "46e443b2ad0d16cb872c64db086bc8976cdf8dd7" + "ref": "c671a79907c2fed46e89323fd411825d8697d416" }, "idna": { "hashes": [ @@ -166,6 +166,14 @@ "markers": "python_version >= '3.5'", "version": "==3.7" }, + "immutabledict": { + "hashes": [ + "sha256:d728b2c2410d698d95e6200237feb50a695584d20289ad3379a439aa3d90baba", + "sha256:e003fd81aad2377a5a758bf7e1086cf3b70b63e9a5cc2f46bce8d0a2b4727c5f" + ], + "markers": "python_version >= '3.8' and python_version < '4.0'", + "version": "==4.2.0" + }, "paradag": { "hashes": [ "sha256:3d2977892de62bd111c517c25f4c75750259c94c9711a190094b942723697ab7", diff --git a/requirements-dev.txt b/requirements-dev.txt index d53d483d..336feeca 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -18,7 +18,7 @@ idna==3.7; python_version >= '3.5' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' dill==0.3.8; python_version >= '3.11' executing==2.0.1; python_version >= '3.5' -flake8==7.0.0; python_full_version >= '3.8.1' +flake8==7.1.0; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 idna==3.7; python_version >= '3.5' @@ -50,9 +50,11 @@ yarl==1.9.4; python_version >= '3.7' annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -hence@ git+https://github.com/0hsn/hence.git@f84ede4ef9b6957d6748b25ac22b16e0b793a4f4 -pydantic==2.7.2; python_version >= '3.8' -pydantic-core==2.18.3; python_version >= '3.8' +hence@ git+https://github.com/0hsn/hence.git@c671a79907c2fed46e89323fd411825d8697d416 +immutabledict==4.2.0; python_version >= '3.8' and python_version < '4.0' +paradag==1.2.0 +pydantic==2.8.2; python_version >= '3.8' +pydantic-core==2.20.1; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.1; python_version >= '3.6' xmltodict==0.13.0; python_version >= '3.4' diff --git a/requirements.txt b/requirements.txt index d1d41e08..5b1dfa27 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,13 +4,15 @@ certifi==2024.7.4; python_version >= '3.6' charset-normalizer==3.3.2; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -hence@ git+https://github.com/0hsn/hence.git@f84ede4ef9b6957d6748b25ac22b16e0b793a4f4 +hence@ git+https://github.com/0hsn/hence.git@c671a79907c2fed46e89323fd411825d8697d416 idna==3.7; python_version >= '3.5' -pydantic==2.7.2; python_version >= '3.8' -pydantic-core==2.18.3; python_version >= '3.8' +immutabledict==4.2.0; python_version >= '3.8' and python_version < '4.0' +paradag==1.2.0 +pydantic==2.8.2; python_version >= '3.8' +pydantic-core==2.20.1; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.2; python_version >= '3.8' requests==2.32.3; python_version >= '3.8' -typing-extensions==4.12.0; python_version >= '3.8' -urllib3==2.2.1; python_version >= '3.8' +typing-extensions==4.12.2; python_version < '3.13' +urllib3==2.2.2; python_version >= '3.8' xmltodict==0.13.0; python_version >= '3.4' From 87aff7f80e8c0f8a2c037e5dffc188cf9421be76 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 18 Jul 2024 12:36:29 +0600 Subject: [PATCH 089/245] feat: remove ParsedTask and related utils --- chk/modules/workflow/__init__.py | 15 +++++++-------- chk/modules/workflow/entities.py | 23 ----------------------- 2 files changed, 7 insertions(+), 31 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index c0eca983..f70f5a0b 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -16,7 +16,6 @@ from chk.modules.workflow.entities import ( ChkwareTask, ChkwareValidateTask, - ParsedTask, WorkflowUses, ) from chk.infrastructure.file_loader import ( @@ -79,13 +78,13 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: if not isinstance(task, dict): raise RuntimeError("`tasks.*.item` should be map.") - parsed_task = ParsedTask(**task) - - match parsed_task.uses: - case "fetch": - tasks.append(ChkwareTask.from_parsed_task(parsed_task)) - case "validate": - tasks.append(ChkwareValidateTask.from_parsed_task(parsed_task)) + if "uses" in task: + if task["uses"] == "fetch": + tasks.append(ChkwareTask.from_dict(task)) + elif task["uses"] == "validate": + tasks.append(ChkwareValidateTask.from_dict(task)) + else: + raise RuntimeError("Malformed task item found.") return WorkflowDocument( context=tuple(ctx), diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index f4f46273..852d3b28 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -17,16 +17,6 @@ class WorkflowUses(enum.StrEnum): validate = enum.auto() -class ParsedTask(BaseModel): - """Parsed tasks""" - - name: str - uses: str - file: str - variables: dict = Field(default_factory=dict) - arguments: dict = Field(default_factory=dict) - - class ChkwareTask(BaseModel): """Chkware task""" @@ -46,14 +36,6 @@ def from_dict(data: dict) -> ChkwareTask: return ChkwareTask(**data) - @staticmethod - def from_parsed_task(task: ParsedTask) -> ChkwareTask: - """Create new instance from ParsedTask""" - - return ChkwareTask( - name=task.name, uses=task.uses, file=task.file, variables=task.variables - ) - class ChkwareValidateTask(ChkwareTask): """Chkware validation task""" @@ -77,8 +59,3 @@ def from_dict(data: dict) -> ChkwareValidateTask: raise AttributeError("ChkwareValidateTask:from_dict Empty data given") return ChkwareValidateTask(**data) - - @staticmethod - def from_parsed_task(task: ParsedTask) -> ChkwareValidateTask: - """Create new instance from ParsedTask""" - return ChkwareValidateTask.from_dict(task.model_dump()) From 31282ebdfdfd7c8c7be571afd2a07a90ac8a9541 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 18 Jul 2024 12:36:58 +0600 Subject: [PATCH 090/245] feat: add run_id to ChkwareTask --- chk/modules/workflow/entities.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 852d3b28..7626084b 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -6,6 +6,7 @@ import enum import typing +from uuid import uuid4 from pydantic import BaseModel, Field, ConfigDict @@ -25,6 +26,7 @@ class ChkwareTask(BaseModel): name: str uses: str file: str + run_id: str = Field(default_factory=lambda: str(uuid4())) variables: dict = Field(default_factory=dict) @staticmethod From b2f7db4c9279131ca76c4d45ecfdfa17e03f9833 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 24 Aug 2024 17:58:17 +0600 Subject: [PATCH 091/245] chore: hence version update with other package update --- Pipfile | 2 +- Pipfile.lock | 28 ++++++++++------------------ 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/Pipfile b/Pipfile index 4c853853..6b5525b8 100644 --- a/Pipfile +++ b/Pipfile @@ -12,7 +12,7 @@ defusedxml = "*" xmltodict = "*" python-dotenv = "*" pydantic = "*" -hence = {ref = "v0.9.5", git = "git+https://github.com/0hsn/hence.git"} +hence = {ref = "v0.10.1", git = "git+https://github.com/0hsn/hence.git"} [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 113f06fe..52bcc10b 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "c3a689b8e1cc9bd9980e5afbbfe511da59ac2577d1a6329a3585e9368f73e8e4" + "sha256": "69851935505471f0311c54705c6803b90f0ee6c22ffabd4380e260282e0b16b8" }, "pipfile-spec": 6, "requires": { @@ -156,23 +156,15 @@ }, "hence": { "git": "git+https://github.com/0hsn/hence.git", - "ref": "c671a79907c2fed46e89323fd411825d8697d416" + "ref": "c0697edf97bc67b563302223cdbd162d7144a69f" }, "idna": { "hashes": [ - "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", - "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0" + "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", + "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603" ], - "markers": "python_version >= '3.5'", - "version": "==3.7" - }, - "immutabledict": { - "hashes": [ - "sha256:d728b2c2410d698d95e6200237feb50a695584d20289ad3379a439aa3d90baba", - "sha256:e003fd81aad2377a5a758bf7e1086cf3b70b63e9a5cc2f46bce8d0a2b4727c5f" - ], - "markers": "python_version >= '3.8' and python_version < '4.0'", - "version": "==4.2.0" + "markers": "python_version >= '3.6'", + "version": "==3.8" }, "paradag": { "hashes": [ @@ -891,11 +883,11 @@ }, "idna": { "hashes": [ - "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc", - "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0" + "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", + "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603" ], - "markers": "python_version >= '3.5'", - "version": "==3.7" + "markers": "python_version >= '3.6'", + "version": "==3.8" }, "iniconfig": { "hashes": [ From 68116fbfc26baf9620c74122e6cbce643bf28ad7 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 26 Aug 2024 11:27:56 +0600 Subject: [PATCH 092/245] chore: package version update --- Pipfile.lock | 56 ++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 52bcc10b..c50732d1 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1011,37 +1011,37 @@ }, "mypy": { "hashes": [ - "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54", - "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a", - "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72", - "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69", - "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b", - "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe", - "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4", - "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd", - "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0", - "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525", - "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2", - "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c", - "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5", - "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de", - "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74", - "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c", - "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e", - "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58", - "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b", - "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417", - "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411", - "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb", - "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03", - "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca", - "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8", - "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08", - "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809" + "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36", + "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce", + "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6", + "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b", + "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca", + "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24", + "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383", + "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7", + "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86", + "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d", + "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4", + "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8", + "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987", + "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385", + "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79", + "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef", + "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6", + "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70", + "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca", + "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70", + "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12", + "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104", + "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a", + "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318", + "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1", + "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b", + "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.11.1" + "version": "==1.11.2" }, "mypy-extensions": { "hashes": [ From 2db7b57f97f446ed6f999332244b26bf886c2e71 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 26 Aug 2024 13:33:41 +0600 Subject: [PATCH 093/245] refactor: update title keys for updated hence version --- chk/modules/fetch.py | 2 +- chk/modules/validate/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index aa9115fb..5153d5b8 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -576,7 +576,7 @@ def execute( HttpDocumentSupport.display(exposed_data, exec_ctx) -@task(title="Fetch task") +@task(title="Fetch work :: {fn_task_key}") def task_fetch(**kwargs: dict) -> ExecResponse: """Task impl""" diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index fc04fe5e..e166a8a3 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -309,7 +309,7 @@ def execute( ValidationDocumentSupport.display(exposed_data, exec_ctx) -@task(title="Validate task") +@task(title="Validate task :: {fn_task_key}") def task_validation(**kwargs: dict) -> ExecResponse: """Task impl""" From 6beb8db22caf31cb23e9bea04fca4aa731f629df Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 26 Aug 2024 13:37:14 +0600 Subject: [PATCH 094/245] feat: task running with success and get result --- chk/modules/workflow/__init__.py | 57 +++++++++++++++++++++++++------- chk/modules/workflow/entities.py | 1 - 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index f70f5a0b..f6999541 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -5,8 +5,9 @@ from __future__ import annotations from collections import abc import pathlib +from uuid import uuid4 -from hence import run_tasks, hence_config +from hence import run_tasks, _context, Utils from pydantic import Field, ConfigDict from icecream import ic @@ -132,21 +133,53 @@ def process_task_template( }, ) ic(_task_d) - _task_params = { - "task": _task_d, - "execution_context": execution_ctx, - } - formatter(f"\nTask: {task.name}") + formatter(f"\nTask: {_task_d['name']}") - match task.uses: + _task_params = {"task": _task_d, "execution_context": execution_ctx} + match _task_d["uses"]: case WorkflowUses.fetch.value: - task_executable_lst.append((task_fetch, _task_params)) + task_executable_lst.append( + (task_fetch, _task_params) + ) case WorkflowUses.validate.value: - task_executable_lst.append((task_validation, _task_params)) - - run_tasks(task_executable_lst) - ic(hence_config.context) + task_executable_lst.append( + (task_validation, _task_params) + ) + + task_executable_keys = run_tasks(task_executable_lst, str(uuid4())) + # ic(task_executable_keys) + # ic(_context.context.get()) + + for tx_key in task_executable_keys: + f_task_ = Utils.get_task(tx_key) + ic(f_task_.result) + + # match task.uses: + # case WorkflowUses.fetch.value: + # task_executable_lst.append((task_fetch, {"file": target_file_path, "execution_context": execution_ctx})) + # exec_resp = fetch.call(file_ctx, execution_ctx) + # + # __method = data_get(exec_resp.file_ctx.document, "request.method") + # __url = data_get(exec_resp.file_ctx.document, "request.url") + # + # formatter(f"-> {__method} {__url}") + # + # case WorkflowUses.validate.value: + # execution_ctx.arguments["data"] = ( + # cls._prepare_validate_task_argument_data_(task) + # ) + # + # exec_resp = validate.call(file_ctx, execution_ctx) + # + # __count_all = data_get( + # exec_resp.variables_exec.data, "_asserts_response.count_all" + # ) + # __count_fail = data_get( + # exec_resp.variables_exec.data, "_asserts_response.count_fail" + # ) + # + # formatter(f"-> Total tests: {__count_all}, Failed: {__count_fail}") def execute( diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 7626084b..f2f5efb6 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -26,7 +26,6 @@ class ChkwareTask(BaseModel): name: str uses: str file: str - run_id: str = Field(default_factory=lambda: str(uuid4())) variables: dict = Field(default_factory=dict) @staticmethod From 0b6c279e7487f2f0cff4c0e7b8589ee5d308cfa0 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 27 Aug 2024 15:41:13 +0600 Subject: [PATCH 095/245] feat: print overall result --- chk/modules/workflow/__init__.py | 79 +++++++++++++++----------------- 1 file changed, 36 insertions(+), 43 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index f6999541..1a66cf3c 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -25,8 +25,11 @@ generate_abs_path, ) from chk.infrastructure.helper import data_get, formatter, slugify -from chk.infrastructure.symbol_table import Variables, VariableTableManager - +from chk.infrastructure.symbol_table import ( + Variables, + VariableTableManager, + ExecResponse, +) VERSION_SCOPE = ["workflow"] @@ -113,13 +116,13 @@ def process_task_template( cls, document: WorkflowDocument, variables: Variables ) -> None: formatter(f"\n\nExecuting: {document.name}") - formatter("-" * len(f"Executing: {document.name}")) + formatter("-" * 5) base_filepath: str = FileContext(*document.context).filepath task_executable_lst = [] for task in document.tasks: - ic(task) + # @TODO should be done in ChkwareTask calls _task_d = task.model_dump() _task_d["file"] = generate_abs_path(base_filepath, task.file) @@ -132,54 +135,44 @@ def process_task_template( # ), }, ) - ic(_task_d) - - formatter(f"\nTask: {_task_d['name']}") _task_params = {"task": _task_d, "execution_context": execution_ctx} match _task_d["uses"]: case WorkflowUses.fetch.value: - task_executable_lst.append( - (task_fetch, _task_params) - ) + task_executable_lst.append((task_fetch, _task_params)) case WorkflowUses.validate.value: - task_executable_lst.append( - (task_validation, _task_params) - ) + task_executable_lst.append((task_validation, _task_params)) task_executable_keys = run_tasks(task_executable_lst, str(uuid4())) - # ic(task_executable_keys) - # ic(_context.context.get()) for tx_key in task_executable_keys: - f_task_ = Utils.get_task(tx_key) - ic(f_task_.result) - - # match task.uses: - # case WorkflowUses.fetch.value: - # task_executable_lst.append((task_fetch, {"file": target_file_path, "execution_context": execution_ctx})) - # exec_resp = fetch.call(file_ctx, execution_ctx) - # - # __method = data_get(exec_resp.file_ctx.document, "request.method") - # __url = data_get(exec_resp.file_ctx.document, "request.url") - # - # formatter(f"-> {__method} {__url}") - # - # case WorkflowUses.validate.value: - # execution_ctx.arguments["data"] = ( - # cls._prepare_validate_task_argument_data_(task) - # ) - # - # exec_resp = validate.call(file_ctx, execution_ctx) - # - # __count_all = data_get( - # exec_resp.variables_exec.data, "_asserts_response.count_all" - # ) - # __count_fail = data_get( - # exec_resp.variables_exec.data, "_asserts_response.count_fail" - # ) - # - # formatter(f"-> Total tests: {__count_all}, Failed: {__count_fail}") + seq_id, _ = tx_key.split(".", 1) + formatter(f"\nTask: {document.tasks[int(seq_id)].name}") + + _task_res: ExecResponse = Utils.get_task(tx_key).result + __doc_version: str = data_get(_task_res.file_ctx.document, "version", "") + + if __doc_version.startswith("default:http"): + formatter( + "-> %s %s" + % ( + data_get(_task_res.file_ctx.document, "request.method"), + data_get(_task_res.file_ctx.document, "request.url"), + ) + ) + elif __doc_version.startswith("default:validation"): + formatter( + "-> Total tests: %s, Failed: %s" + % ( + data_get( + _task_res.variables_exec.data, "_asserts_response.count_all" + ), + data_get( + _task_res.variables_exec.data, + "_asserts_response.count_fail", + ), + ) + ) def execute( From 20602615b8bea075b753654a3b09c5212914380e Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 27 Aug 2024 20:25:26 +0600 Subject: [PATCH 096/245] feat: more test spec added --- .../get-req-vars/coinstats-usd-request.chk | 11 ++++++++++ .../get-req-vars/coinstats-usd-validate.chk | 20 +++++++++++++++++++ .../get-req-vars/coinstats-usd-workflow.chk | 17 ++++++++++++++++ .../simple/coinstats-usd-request.chk | 11 ++++++++++ .../simple/coinstats-usd-validate.chk | 20 +++++++++++++++++++ .../simple/coinstats-usd-workflow.chk | 16 +++++++++++++++ 6 files changed, 95 insertions(+) create mode 100644 tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-request.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-validate.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-request.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-validate.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-request.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-request.chk new file mode 100644 index 00000000..1973269f --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-request.chk @@ -0,0 +1,11 @@ +--- +version: default:http:0.7.2 + +request: + url: https://openapiv1.coinstats.app/coins/bitcoin?currency=USD + method: GET + headers: + "X-API-KEY": <% _ENV.COINSTATS_API_KEY %> + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-validate.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-validate.chk new file mode 100644 index 00000000..6b4f6729 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-validate.chk @@ -0,0 +1,20 @@ +--- +version: default:validation:0.7.2 + +asserts: + - { type: Equal, actual: <% _data.code %>, expected: 200, msg_pass: 'Response was successful with code `{type_actual}({value_actual})`' } + - { type: Map, actual: <% _data.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } + - { type: Str, actual: <% _data.code %>, msg_pass: 'Code `{type_actual}({value_actual})` is a string', msg_fail: 'Code `{type_actual}({value_actual})` is not a string', cast_actual_to: int } + - { type: StrHave, actual: <% _data.info %>, other: "200 OK" } + - { type: Map, actual: <% _data.body %> } + - { type: List, actual: <% _data.body.explorers %> } + - { type: Float, actual: <% _data.body.price %> } + - { type: MapHasKeys, actual: <% _data.body %>, expected: [ "price", "priceBtc", "priceChange1d", "priceChange1h", "priceChange1w" ] } + +expose: + - <% _asserts_response %> + - <% _data %> + +# --- shell command --- +# pipenv run python -m chk validate -nf tests/resources/storage/spec_docs/validate/btc-usd-validate.chk -D "$(pipenv run python -m chk fetch -nf tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk)" +# --- diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk new file mode 100644 index 00000000..aa05df78 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk @@ -0,0 +1,17 @@ +version: default:workflow:0.8.0 + +name: simple Btc workflow +id: simple Btc workflow 1 + +tasks: + - name: Fetch some content from URL + uses: fetch + file: ./coinstats-usd-request.chk +# variables: { "var": 2 } + + - name: Validate the content is okay + uses: validate + file: ./coinstats-usd-validate.chk +# variables: { "var": 2 } +# arguments: +# data: <% _tasks.0._expose.0 %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-request.chk b/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-request.chk new file mode 100644 index 00000000..1973269f --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-request.chk @@ -0,0 +1,11 @@ +--- +version: default:http:0.7.2 + +request: + url: https://openapiv1.coinstats.app/coins/bitcoin?currency=USD + method: GET + headers: + "X-API-KEY": <% _ENV.COINSTATS_API_KEY %> + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-validate.chk b/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-validate.chk new file mode 100644 index 00000000..6b4f6729 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-validate.chk @@ -0,0 +1,20 @@ +--- +version: default:validation:0.7.2 + +asserts: + - { type: Equal, actual: <% _data.code %>, expected: 200, msg_pass: 'Response was successful with code `{type_actual}({value_actual})`' } + - { type: Map, actual: <% _data.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } + - { type: Str, actual: <% _data.code %>, msg_pass: 'Code `{type_actual}({value_actual})` is a string', msg_fail: 'Code `{type_actual}({value_actual})` is not a string', cast_actual_to: int } + - { type: StrHave, actual: <% _data.info %>, other: "200 OK" } + - { type: Map, actual: <% _data.body %> } + - { type: List, actual: <% _data.body.explorers %> } + - { type: Float, actual: <% _data.body.price %> } + - { type: MapHasKeys, actual: <% _data.body %>, expected: [ "price", "priceBtc", "priceChange1d", "priceChange1h", "priceChange1w" ] } + +expose: + - <% _asserts_response %> + - <% _data %> + +# --- shell command --- +# pipenv run python -m chk validate -nf tests/resources/storage/spec_docs/validate/btc-usd-validate.chk -D "$(pipenv run python -m chk fetch -nf tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk)" +# --- diff --git a/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk new file mode 100644 index 00000000..8caa82f6 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk @@ -0,0 +1,16 @@ +version: default:workflow:0.8.0 + +name: simple Btc workflow +id: simple Btc workflow 1 + +tasks: + - name: Fetch some content from URL + uses: fetch + file: ./coinstats-usd-request.chk + + - name: Validate the content is okay + uses: validate + file: ./coinstats-usd-validate.chk +# variables: { "var": 2 } +# arguments: +# data: <% _tasks.0._expose.0 %> From 266d6f48ba3adba8eb80b407d9684e4986165ce5 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 28 Aug 2024 18:07:57 +0600 Subject: [PATCH 097/245] feat: workflow runs as expected for simple workflow --- tests/modules/workflow/wf_domain_test.py | 3 ++- .../spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/modules/workflow/wf_domain_test.py b/tests/modules/workflow/wf_domain_test.py index 64bc4af4..5655c4a5 100644 --- a/tests/modules/workflow/wf_domain_test.py +++ b/tests/modules/workflow/wf_domain_test.py @@ -40,7 +40,8 @@ def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): class TestWorkflowDocumentSupport: @staticmethod def test_process_task_template_pass(load_chk_file, load_file_ctx_for_file): - filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" + # filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" + filepath = f"{SPEC_DIR}workflow_cases/simple/coinstats-usd-workflow.chk" file_ctx = load_file_ctx_for_file(filepath) wfdoc = WorkflowDocument.from_file_context(file_ctx) diff --git a/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk index 8caa82f6..82455d15 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/simple/coinstats-usd-workflow.chk @@ -11,6 +11,3 @@ tasks: - name: Validate the content is okay uses: validate file: ./coinstats-usd-validate.chk -# variables: { "var": 2 } -# arguments: -# data: <% _tasks.0._expose.0 %> From 72bc93bb16543ba6ae61818ab7e49ddd43fb50b6 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 29 Aug 2024 12:40:23 +0600 Subject: [PATCH 098/245] refactor: add url params as separate section --- .../workflow_cases/get-req-vars/coinstats-usd-request.chk | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-request.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-request.chk index 1973269f..f368902c 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-request.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-request.chk @@ -1,8 +1,13 @@ --- version: default:http:0.7.2 +variables: + convertCurrency: USD + request: - url: https://openapiv1.coinstats.app/coins/bitcoin?currency=USD + url: "https://openapiv1.coinstats.app/coins/bitcoin" + url_params: + currency: <% convertCurrency %> method: GET headers: "X-API-KEY": <% _ENV.COINSTATS_API_KEY %> From 0d6e7a5c021bcd21bf91983849c85609b5810e5c Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 29 Aug 2024 19:02:19 +0600 Subject: [PATCH 099/245] refactor: to make similar sign as other module --- chk/modules/workflow/__init__.py | 36 ++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 1a66cf3c..45d58124 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -175,18 +175,10 @@ def process_task_template( ) -def execute( - ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... -) -> None: - """Run a workflow document - - Args: - ctx: FileContext object to handle - exec_ctx: ExecuteContext - cb: Callable - """ +def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: + """Call a workflow document""" - wflow_doc = WorkflowDocument.from_file_context(ctx) + wflow_doc = WorkflowDocument.from_file_context(file_ctx) ic(wflow_doc) variable_doc = Variables() @@ -202,3 +194,25 @@ def execute( # VersionedDocumentSupport.validate_with_schema( # HttpDocumentSupport.build_schema(), http_doc # ) + + return ExecResponse( + file_ctx=file_ctx, + exec_ctx=exec_ctx, + variables_exec={}, + variables=variable_doc, + extra={}, + ) + + +def execute( + ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... +) -> None: + """Run a workflow document + + Args: + ctx: FileContext object to handle + exec_ctx: ExecuteContext + cb: Callable + """ + + _ = call(file_ctx=ctx, exec_ctx=exec_ctx) From 3a08f827de8ea8cc2db32e6d84c40964ff5802d0 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 31 Aug 2024 16:36:27 +0600 Subject: [PATCH 100/245] refactor: handling obj init in contractor --- chk/modules/workflow/__init__.py | 4 ++-- chk/modules/workflow/entities.py | 20 ++++---------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 45d58124..8f7702e4 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -84,9 +84,9 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: if "uses" in task: if task["uses"] == "fetch": - tasks.append(ChkwareTask.from_dict(task)) + tasks.append(ChkwareTask(**task)) elif task["uses"] == "validate": - tasks.append(ChkwareValidateTask.from_dict(task)) + tasks.append(ChkwareValidateTask(**task)) else: raise RuntimeError("Malformed task item found.") diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index f2f5efb6..ed7469ea 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -28,14 +28,8 @@ class ChkwareTask(BaseModel): file: str variables: dict = Field(default_factory=dict) - @staticmethod - def from_dict(data: dict) -> ChkwareTask: - """constractor""" - - if not data: - raise AttributeError("ChkwareTask:from_dict Empty data given") - - return ChkwareTask(**data) + def __init__(self, **kwargs: dict) -> None: + super().__init__(**kwargs) class ChkwareValidateTask(ChkwareTask): @@ -52,11 +46,5 @@ class ChkwareTaskDataArgument(BaseModel): arguments: ChkwareTaskDataArgument = Field(default_factory=ChkwareTaskDataArgument) - @staticmethod - def from_dict(data: dict) -> ChkwareValidateTask: - """constructor""" - - if not data: - raise AttributeError("ChkwareValidateTask:from_dict Empty data given") - - return ChkwareValidateTask(**data) + def __init__(self, **kwargs: dict) -> None: + super().__init__(**kwargs) From c4b7d4faa33091f2240a94a3c1c6e6fa2a73988e Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 31 Aug 2024 17:18:41 +0600 Subject: [PATCH 101/245] feat: handle absolute path conversion in ChkwareTask --- chk/modules/workflow/__init__.py | 10 +++++----- chk/modules/workflow/entities.py | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 8f7702e4..affb43dc 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -77,6 +77,8 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: raise RuntimeError("`tasks:` is not list.") tasks = [] + base_fpath: str = ctx.filepath + for task in tasks_lst: # @TODO can this be done in ParsedTask class if not isinstance(task, dict): @@ -84,9 +86,9 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: if "uses" in task: if task["uses"] == "fetch": - tasks.append(ChkwareTask(**task)) + tasks.append(ChkwareTask(base_fpath, **task)) elif task["uses"] == "validate": - tasks.append(ChkwareValidateTask(**task)) + tasks.append(ChkwareValidateTask(base_fpath, **task)) else: raise RuntimeError("Malformed task item found.") @@ -118,13 +120,11 @@ def process_task_template( formatter(f"\n\nExecuting: {document.name}") formatter("-" * 5) - base_filepath: str = FileContext(*document.context).filepath task_executable_lst = [] for task in document.tasks: # @TODO should be done in ChkwareTask calls _task_d = task.model_dump() - _task_d["file"] = generate_abs_path(base_filepath, task.file) execution_ctx = ExecuteContext( {"dump": True, "format": True}, @@ -198,7 +198,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: return ExecResponse( file_ctx=file_ctx, exec_ctx=exec_ctx, - variables_exec={}, + variables_exec=ExposableVariables({}), variables=variable_doc, extra={}, ) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index ed7469ea..91969f36 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -5,11 +5,10 @@ from __future__ import annotations import enum -import typing -from uuid import uuid4 - from pydantic import BaseModel, Field, ConfigDict +from chk.infrastructure.file_loader import generate_abs_path + class WorkflowUses(enum.StrEnum): """Types of Workflow Uses""" @@ -28,7 +27,12 @@ class ChkwareTask(BaseModel): file: str variables: dict = Field(default_factory=dict) - def __init__(self, **kwargs: dict) -> None: + def __init__(self, basepath: str, /, **kwargs: dict) -> None: + """Constructor""" + + if isinstance(kwargs["file"], str) and len(kwargs["file"]) != 0: + kwargs["file"] = generate_abs_path(basepath, kwargs["file"]) + super().__init__(**kwargs) @@ -46,5 +50,7 @@ class ChkwareTaskDataArgument(BaseModel): arguments: ChkwareTaskDataArgument = Field(default_factory=ChkwareTaskDataArgument) - def __init__(self, **kwargs: dict) -> None: - super().__init__(**kwargs) + def __init__(self, basepath: str, /, **kwargs: dict) -> None: + """Constructor""" + + super().__init__(basepath, **kwargs) From 7ce77ebfd16680064bdaf5b66a935e7a13d2cb8a Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 1 Sep 2024 14:18:06 +0600 Subject: [PATCH 102/245] docs: added todo for next update --- chk/modules/fetch.py | 2 ++ chk/modules/validate/__init__.py | 2 ++ chk/modules/workflow/__init__.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 5153d5b8..78254d29 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -343,6 +343,8 @@ def from_file_context(ctx: FileContext) -> HttpDocument: if not (request_dct := data_get(ctx.document, "request")): raise RuntimeError("`request:` not found.") + # @TODO keep `context`, `version` as object + # @TODO implement __repr__ for WorkflowDocument return HttpDocument( context=tuple(ctx), version=version_str, diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index e166a8a3..7827a3ee 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -91,6 +91,8 @@ def from_file_context(ctx: FileContext) -> ValidationDocument: _data = data_get(ctx.document, ValidationConfigNode.DATA, {}) + # @TODO keep `context`, `version` as object + # @TODO implement __repr__ for WorkflowDocument return ValidationDocument( context=tuple(ctx), version=_version, diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index affb43dc..ef68e464 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -92,6 +92,8 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: else: raise RuntimeError("Malformed task item found.") + # @TODO keep `context`, `version` as object + # @TODO implement __repr__ for WorkflowDocument return WorkflowDocument( context=tuple(ctx), version=version_str, From b9086d408d0d1296256a4ee825e8c6741f2fed65 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 2 Sep 2024 16:05:46 +0600 Subject: [PATCH 103/245] refactor: improve checking --- chk/modules/workflow/entities.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 91969f36..19b0bc24 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -30,7 +30,11 @@ class ChkwareTask(BaseModel): def __init__(self, basepath: str, /, **kwargs: dict) -> None: """Constructor""" - if isinstance(kwargs["file"], str) and len(kwargs["file"]) != 0: + if ( + "file" in kwargs + and isinstance(kwargs["file"], str) + and len(kwargs["file"]) != 0 + ): kwargs["file"] = generate_abs_path(basepath, kwargs["file"]) super().__init__(**kwargs) From bd085a7f70efb7a49c05a7c46095ed417dc99f07 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 2 Sep 2024 16:06:19 +0600 Subject: [PATCH 104/245] refactor: move making task to separate function --- chk/modules/workflow/__init__.py | 42 ++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index ef68e464..9bfc7a4f 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -76,22 +76,6 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: if not isinstance(tasks_lst, list): raise RuntimeError("`tasks:` is not list.") - tasks = [] - base_fpath: str = ctx.filepath - - for task in tasks_lst: - # @TODO can this be done in ParsedTask class - if not isinstance(task, dict): - raise RuntimeError("`tasks.*.item` should be map.") - - if "uses" in task: - if task["uses"] == "fetch": - tasks.append(ChkwareTask(base_fpath, **task)) - elif task["uses"] == "validate": - tasks.append(ChkwareValidateTask(base_fpath, **task)) - else: - raise RuntimeError("Malformed task item found.") - # @TODO keep `context`, `version` as object # @TODO implement __repr__ for WorkflowDocument return WorkflowDocument( @@ -115,6 +99,32 @@ def _prepare_validate_task_argument_data_(cls, task: ChkwareTask) -> dict: return {} + @classmethod + def make_task(cls, task_d_: dict, /, **kwargs) -> ChkwareTask: + """validate task data""" + if "base_file_path" not in kwargs: + raise ValueError("`base_file_path` not passed.") + + if "uses" not in task_d_: + raise RuntimeError("Malformed task item found.") + + if task_d_["uses"] not in ( + WorkflowUses.fetch.value, + WorkflowUses.validate.value, + ): + raise RuntimeError("task.uses unsupported.") + + base_file_path = str(kwargs["base_file_path"]) + + return ( + ChkwareTask(base_file_path, **task_d_) + if task_d_["uses"] == "fetch" + else ChkwareValidateTask(base_file_path, **task_d_) + ) + + @classmethod + def exectute_tasks(cls, task_list: list[ChkwareTask]): ... + @classmethod def process_task_template( cls, document: WorkflowDocument, variables: Variables From 4741e8d503521302608d200d9f322d2d5a62d9f9 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 3 Sep 2024 12:11:10 +0600 Subject: [PATCH 105/245] chore: remove hence --- Pipfile | 1 - Pipfile.lock | 13 +------------ requirements-dev.txt | 9 +++------ requirements.txt | 5 +---- 4 files changed, 5 insertions(+), 23 deletions(-) diff --git a/Pipfile b/Pipfile index 6b5525b8..27115972 100644 --- a/Pipfile +++ b/Pipfile @@ -12,7 +12,6 @@ defusedxml = "*" xmltodict = "*" python-dotenv = "*" pydantic = "*" -hence = {ref = "v0.10.1", git = "git+https://github.com/0hsn/hence.git"} [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index c50732d1..7f43a670 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "69851935505471f0311c54705c6803b90f0ee6c22ffabd4380e260282e0b16b8" + "sha256": "392659112522bebd6fdaf2d24c384cc546c19f65e7c2b260538daf8cd70f43b3" }, "pipfile-spec": 6, "requires": { @@ -154,10 +154,6 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==0.7.1" }, - "hence": { - "git": "git+https://github.com/0hsn/hence.git", - "ref": "c0697edf97bc67b563302223cdbd162d7144a69f" - }, "idna": { "hashes": [ "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", @@ -166,13 +162,6 @@ "markers": "python_version >= '3.6'", "version": "==3.8" }, - "paradag": { - "hashes": [ - "sha256:3d2977892de62bd111c517c25f4c75750259c94c9711a190094b942723697ab7", - "sha256:dbd57185a1553970877c452aedf961912eb7825a9a25e8a71010e84660710c42" - ], - "version": "==1.2.0" - }, "pydantic": { "hashes": [ "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a", diff --git a/requirements-dev.txt b/requirements-dev.txt index 336feeca..7e879981 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -18,10 +18,10 @@ idna==3.7; python_version >= '3.5' colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' dill==0.3.8; python_version >= '3.11' executing==2.0.1; python_version >= '3.5' -flake8==7.1.0; python_full_version >= '3.8.1' +flake8==7.1.1; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 -idna==3.7; python_version >= '3.5' +idna==3.8; python_version >= '3.6' iniconfig==2.0.0; python_version >= '3.7' isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' @@ -50,11 +50,8 @@ yarl==1.9.4; python_version >= '3.7' annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -hence@ git+https://github.com/0hsn/hence.git@c671a79907c2fed46e89323fd411825d8697d416 -immutabledict==4.2.0; python_version >= '3.8' and python_version < '4.0' -paradag==1.2.0 pydantic==2.8.2; python_version >= '3.8' pydantic-core==2.20.1; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' -pyyaml==6.0.1; python_version >= '3.6' +pyyaml==6.0.2; python_version >= '3.8' xmltodict==0.13.0; python_version >= '3.4' diff --git a/requirements.txt b/requirements.txt index 5b1dfa27..539b07ea 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,10 +4,7 @@ certifi==2024.7.4; python_version >= '3.6' charset-normalizer==3.3.2; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -hence@ git+https://github.com/0hsn/hence.git@c671a79907c2fed46e89323fd411825d8697d416 -idna==3.7; python_version >= '3.5' -immutabledict==4.2.0; python_version >= '3.8' and python_version < '4.0' -paradag==1.2.0 +idna==3.8; python_version >= '3.6' pydantic==2.8.2; python_version >= '3.8' pydantic-core==2.20.1; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' From 0e2b9bcde8057a24bfd96cf1094513411b0ac759 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 3 Sep 2024 13:04:29 +0600 Subject: [PATCH 106/245] refactor: remove hence usages --- chk/modules/fetch.py | 2 -- chk/modules/validate/__init__.py | 2 -- chk/modules/workflow/__init__.py | 3 --- 3 files changed, 7 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 78254d29..9450fb2f 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -11,7 +11,6 @@ from collections import UserDict, abc from urllib.parse import unquote, urlparse -from hence import task from pydantic import BaseModel, Field from requests.auth import HTTPBasicAuth @@ -578,7 +577,6 @@ def execute( HttpDocumentSupport.display(exposed_data, exec_ctx) -@task(title="Fetch work :: {fn_task_key}") def task_fetch(**kwargs: dict) -> ExecResponse: """Task impl""" diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 7827a3ee..f0670c59 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -9,7 +9,6 @@ from collections import abc import cerberus -from hence import task from chk.infrastructure.document import VersionedDocument, VersionedDocumentSupport from chk.infrastructure.file_loader import FileContext, ExecuteContext @@ -311,7 +310,6 @@ def execute( ValidationDocumentSupport.display(exposed_data, exec_ctx) -@task(title="Validate task :: {fn_task_key}") def task_validation(**kwargs: dict) -> ExecResponse: """Task impl""" diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 9bfc7a4f..77f99b10 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -7,7 +7,6 @@ import pathlib from uuid import uuid4 -from hence import run_tasks, _context, Utils from pydantic import Field, ConfigDict from icecream import ic @@ -155,13 +154,11 @@ def process_task_template( case WorkflowUses.validate.value: task_executable_lst.append((task_validation, _task_params)) - task_executable_keys = run_tasks(task_executable_lst, str(uuid4())) for tx_key in task_executable_keys: seq_id, _ = tx_key.split(".", 1) formatter(f"\nTask: {document.tasks[int(seq_id)].name}") - _task_res: ExecResponse = Utils.get_task(tx_key).result __doc_version: str = data_get(_task_res.file_ctx.document, "version", "") if __doc_version.startswith("default:http"): From 116ff145182e47cdefeac8176833e92be7e49803 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 5 Sep 2024 14:38:19 +0600 Subject: [PATCH 107/245] feat: pass variable from wf to validation --- .../get-req-vars/coinstats-usd-validate.chk | 21 +++++++++++-------- .../get-req-vars/coinstats-usd-workflow.chk | 18 +++++++++------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-validate.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-validate.chk index 6b4f6729..db55b61e 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-validate.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-validate.chk @@ -1,19 +1,22 @@ --- version: default:validation:0.7.2 +variables: + vdata: ~ + asserts: - - { type: Equal, actual: <% _data.code %>, expected: 200, msg_pass: 'Response was successful with code `{type_actual}({value_actual})`' } - - { type: Map, actual: <% _data.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } - - { type: Str, actual: <% _data.code %>, msg_pass: 'Code `{type_actual}({value_actual})` is a string', msg_fail: 'Code `{type_actual}({value_actual})` is not a string', cast_actual_to: int } - - { type: StrHave, actual: <% _data.info %>, other: "200 OK" } - - { type: Map, actual: <% _data.body %> } - - { type: List, actual: <% _data.body.explorers %> } - - { type: Float, actual: <% _data.body.price %> } - - { type: MapHasKeys, actual: <% _data.body %>, expected: [ "price", "priceBtc", "priceChange1d", "priceChange1h", "priceChange1w" ] } + - { type: Equal, actual: <% vdata.code %>, expected: 200, msg_pass: 'Response was successful with code `{type_actual}({value_actual})`', cast_actual_to: int } + - { type: Map, actual: <% vdata.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } + - { type: Str, actual: <% vdata.code %>, msg_pass: 'Code `{type_actual}({value_actual})` is a string', msg_fail: 'Code `{type_actual}({value_actual})` is not a string', cast_actual_to: int } + - { type: StrHave, actual: <% vdata.info %>, other: "200 OK" } + - { type: Map, actual: <% vdata.body %> } + - { type: List, actual: <% vdata.body.explorers %> } + - { type: Float, actual: <% vdata.body.price %> } + - { type: MapHasKeys, actual: <% vdata.body %>, expected: [ "price", "priceBtc", "priceChange1d", "priceChange1h", "priceChange1w" ] } expose: - <% _asserts_response %> - - <% _data %> + - <% vdata %> # --- shell command --- # pipenv run python -m chk validate -nf tests/resources/storage/spec_docs/validate/btc-usd-validate.chk -D "$(pipenv run python -m chk fetch -nf tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk)" diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk index aa05df78..ca44fb47 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk @@ -1,17 +1,21 @@ version: default:workflow:0.8.0 name: simple Btc workflow -id: simple Btc workflow 1 +id: BtcWF1 + +variables: + group: coinstats + currency: GBP tasks: - name: Fetch some content from URL uses: fetch - file: ./coinstats-usd-request.chk -# variables: { "var": 2 } + file: "./<% group %>-usd-request.chk" + variables: + convertCurrency: <% currency %> - name: Validate the content is okay uses: validate - file: ./coinstats-usd-validate.chk -# variables: { "var": 2 } -# arguments: -# data: <% _tasks.0._expose.0 %> + file: "./<% group %>-usd-validate.chk" + variables: + vdata: <% _steps.0._response %> From 5d89786643642cb5aad72345a5eb8013feb3d17b Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 6 Sep 2024 12:18:19 +0600 Subject: [PATCH 108/245] refactor: formatting fix --- chk/infrastructure/symbol_table.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 2c66b7f8..5915a994 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -1,6 +1,7 @@ """ Symbol and variable management """ + import enum import os import typing @@ -77,13 +78,11 @@ class ExecResponse(BaseModel): @typing.overload -def replace_value(doc: dict, var_s: dict) -> dict: - ... +def replace_value(doc: dict, var_s: dict) -> dict: ... @typing.overload -def replace_value(doc: list, var_s: dict) -> list: - ... +def replace_value(doc: list, var_s: dict) -> list: ... def replace_value(doc: dict | list, var_s: dict) -> dict | list: From 51e0d06e5b42ea3ed6a0023a4483221280ddff42 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 6 Sep 2024 12:18:44 +0600 Subject: [PATCH 109/245] feat: expose data added for wf spec --- .../workflow_cases/get-req-vars/coinstats-usd-workflow.chk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk index ca44fb47..4ce74078 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk @@ -19,3 +19,6 @@ tasks: file: "./<% group %>-usd-validate.chk" variables: vdata: <% _steps.0._response %> + +expose: + - <% _steps.0 %> From 9aa028e5c5b030985a4cec51a724047cc6c38319 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 6 Sep 2024 12:19:12 +0600 Subject: [PATCH 110/245] feat: chkware task validation --- chk/modules/workflow/services.py | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 chk/modules/workflow/services.py diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py new file mode 100644 index 00000000..554b0662 --- /dev/null +++ b/chk/modules/workflow/services.py @@ -0,0 +1,33 @@ +""" +Workflow services module +""" + +from chk.modules.workflow import ChkwareTask, WorkflowUses, ChkwareValidateTask + + +class ChkwareTaskSupport: + """ChkwareTaskSupport""" + + @classmethod + def make_task(cls, task_d_: dict, /, **kwargs) -> ChkwareTask: + """validate task data""" + + if "base_file_path" not in kwargs: + raise ValueError("`base_file_path` not passed.") + + if "uses" not in task_d_: + raise RuntimeError("Malformed task item found.") + + if task_d_["uses"] not in ( + WorkflowUses.fetch.value, + WorkflowUses.validate.value, + ): + raise RuntimeError("task.uses unsupported.") + + base_file_path = str(kwargs["base_file_path"]) + + return ( + ChkwareTask(base_file_path, **task_d_) + if task_d_["uses"] == "fetch" + else ChkwareValidateTask(base_file_path, **task_d_) + ) From e68b62cced170adac95ac244f6734f5122f1fcaf Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 6 Sep 2024 12:22:43 +0600 Subject: [PATCH 111/245] feat: enum and task params entity --- chk/modules/workflow/entities.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 19b0bc24..08c4ae5e 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -5,9 +5,29 @@ from __future__ import annotations import enum +from typing import NamedTuple + from pydantic import BaseModel, Field, ConfigDict -from chk.infrastructure.file_loader import generate_abs_path +from chk.infrastructure.file_loader import generate_abs_path, ExecuteContext + + +class WorkflowConfigNode(enum.StrEnum): + """WorkflowConfigNode""" + + NODE = "_steps" + + +class TaskExecParam(NamedTuple): + """TaskExecParams""" + + task: ChkwareTask + exec_ctx: ExecuteContext + + def asdict(self) -> dict: + """Convert to dict""" + + return {"task": self.task.model_dump(), "execution_context": self.exec_ctx} class WorkflowUses(enum.StrEnum): From eb069640cd0d9c94b186ba4643014ff69d6b78fd Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 7 Sep 2024 17:02:52 +0600 Subject: [PATCH 112/245] feat: support for VersionedDocumentV2 on ExposeManager --- chk/infrastructure/symbol_table.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 5915a994..c7e3e8a2 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -238,7 +238,9 @@ def replace_values( return replace_callback(expose_doc, values) @staticmethod - def get_exposed_replaced_data(document: VersionedDocument, store: dict) -> list: + def get_exposed_replaced_data( + document: VersionedDocument | VersionedDocumentV2, store: dict + ) -> list: """Get expose doc from a `VersionedDocument`, and prepare it from the value of `Variables`, and `store`, and return From e47727989a8d315a8dae8f764831058a7110ee3e Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Sep 2024 11:47:01 +0600 Subject: [PATCH 113/245] refactor: remove ExposableVariables, use Variables instead --- chk/infrastructure/symbol_table.py | 4 ---- chk/modules/fetch.py | 3 +-- chk/modules/validate/__init__.py | 3 +-- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index c7e3e8a2..fd10b9e5 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -61,10 +61,6 @@ class Variables(UserDict): """Holds data for a variable""" -class ExposableVariables(UserDict): - """Holds data for a expose data""" - - class ExecResponse(BaseModel): """ExecResponse""" diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 9450fb2f..d11aa8bd 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -27,7 +27,6 @@ VARIABLE_SCHEMA as VAR_SCHEMA, EXPOSE_SCHEMA as EXP_SCHEMA, ExposeManager, - ExposableVariables, ExecResponse, ) @@ -544,7 +543,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: HttpDocumentSupport.process_request_template(http_doc, variable_doc) response = HttpDocumentSupport.execute_request(http_doc) - output_data = ExposableVariables({"_response": response.data}) + output_data = Variables({"_response": response.data}) return ExecResponse( file_ctx=file_ctx, diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index f0670c59..16a31780 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -22,7 +22,6 @@ VariableTableManager, replace_value, ExposeManager, - ExposableVariables, ExecResponse, ) from chk.modules.validate.assertion_services import ( @@ -268,7 +267,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: ) test_run_result = AssertionEntryListRunner.test_run(assert_list, variable_doc.data) - output_data = ExposableVariables( + output_data = Variables( { "_asserts_response": test_run_result.as_dict, "_data": variable_doc["_data"], From 0370b4e883a5e7496899c9c8805eeeccb693b8fc Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Sep 2024 11:48:28 +0600 Subject: [PATCH 114/245] feat: add extra data by category in ExecResponse --- chk/infrastructure/symbol_table.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index fd10b9e5..403b6dd5 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -68,9 +68,11 @@ class ExecResponse(BaseModel): file_ctx: FileContext exec_ctx: ExecuteContext - variables_exec: ExposableVariables variables: Variables + variables_exec: Variables + variables_disp: Variables = Field(default_factory=Variables) extra: object = Field(default=None) + exception: Exception | None = Field(default=None) @typing.overload From ca5de0493801d434e507e4466bd63d555ce9fc10 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Sep 2024 13:35:47 +0600 Subject: [PATCH 115/245] feat: new doc version and str dunder added --- chk/infrastructure/version.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/chk/infrastructure/version.py b/chk/infrastructure/version.py index 449ad70f..c8d52f03 100644 --- a/chk/infrastructure/version.py +++ b/chk/infrastructure/version.py @@ -14,12 +14,18 @@ VERSION_STORE = { "http": [ "0.7.2", + "0.8.0", ], "testcase": [ "0.7.2", + "0.8.0", ], "validation": [ "0.7.2", + "0.8.0", + ], + "workflow": [ + "0.8.0", ], } @@ -108,6 +114,11 @@ def verify_doc_type_ver(self) -> bool: return True + def __str__(self) -> str: + """str dunder""" + + return self.original_version_str + class DocumentVersionMaker: """Create document version object""" From 6e4f2273dde32b95815dd89fcdb63b12ff6e9ac5 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Sep 2024 15:46:04 +0600 Subject: [PATCH 116/245] feat: return all steps --- .../workflow_cases/get-req-vars/coinstats-usd-workflow.chk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk index 4ce74078..1ec10f85 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk @@ -21,4 +21,4 @@ tasks: vdata: <% _steps.0._response %> expose: - - <% _steps.0 %> + - <% _steps %> From 49f34687a218015eb3692036d872ff39c9b9928e Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 8 Sep 2024 15:46:38 +0600 Subject: [PATCH 117/245] feat: workflow run happy path success --- chk/modules/workflow/__init__.py | 171 +++++++++++++++++-------------- 1 file changed, 96 insertions(+), 75 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 77f99b10..78ef57c6 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -5,30 +5,39 @@ from __future__ import annotations from collections import abc import pathlib +from collections.abc import Callable from uuid import uuid4 from pydantic import Field, ConfigDict from icecream import ic -from chk.infrastructure.document import VersionedDocumentV2 as VersionedDocument +from chk.infrastructure.document import ( + VersionedDocumentV2 as VersionedDocument, + VersionedDocumentSupport, +) +from chk.infrastructure.version import DocumentVersionMaker from chk.modules.fetch import task_fetch from chk.modules.validate import task_validation from chk.modules.workflow.entities import ( ChkwareTask, ChkwareValidateTask, WorkflowUses, + TaskExecParam, + WorkflowConfigNode, ) from chk.infrastructure.file_loader import ( FileContext, ExecuteContext, - generate_abs_path, ) from chk.infrastructure.helper import data_get, formatter, slugify from chk.infrastructure.symbol_table import ( Variables, VariableTableManager, ExecResponse, + replace_value, + ExposeManager, ) +from chk.modules.workflow.services import ChkwareTaskSupport VERSION_SCOPE = ["workflow"] @@ -40,16 +49,15 @@ class WorkflowDocument(VersionedDocument): name: str = Field(default_factory=str) id: str = Field(default_factory=str) - tasks: list[ChkwareTask | ChkwareValidateTask] + tasks: list[dict] = Field(default="") @staticmethod def from_file_context(ctx: FileContext) -> WorkflowDocument: """Create a WorkflowDocument from FileContext""" - # @TODO this should to VersionDoc # version - if not (version_str := data_get(ctx.document, "version")): - raise RuntimeError("`version:` not found.") + doc_ver = DocumentVersionMaker.from_dict(ctx.document) + DocumentVersionMaker.verify_if_allowed(doc_ver, VERSION_SCOPE) # id, name # @TODO Name and ID processing should have separate func @@ -79,10 +87,10 @@ def from_file_context(ctx: FileContext) -> WorkflowDocument: # @TODO implement __repr__ for WorkflowDocument return WorkflowDocument( context=tuple(ctx), - version=version_str, + version=str(doc_ver), name=name_str, id=id_str, - tasks=tasks, + tasks=tasks_lst, ) @@ -99,43 +107,31 @@ def _prepare_validate_task_argument_data_(cls, task: ChkwareTask) -> dict: return {} @classmethod - def make_task(cls, task_d_: dict, /, **kwargs) -> ChkwareTask: - """validate task data""" - if "base_file_path" not in kwargs: - raise ValueError("`base_file_path` not passed.") - - if "uses" not in task_d_: - raise RuntimeError("Malformed task item found.") - - if task_d_["uses"] not in ( - WorkflowUses.fetch.value, - WorkflowUses.validate.value, - ): - raise RuntimeError("task.uses unsupported.") - - base_file_path = str(kwargs["base_file_path"]) - - return ( - ChkwareTask(base_file_path, **task_d_) - if task_d_["uses"] == "fetch" - else ChkwareValidateTask(base_file_path, **task_d_) - ) + def set_step_template(cls, variables: Variables) -> None: + """sets data or template""" - @classmethod - def exectute_tasks(cls, task_list: list[ChkwareTask]): ... + # @TODO implement data set functionality with validation for variables + variables[WorkflowConfigNode.NODE.value] = [] @classmethod def process_task_template( cls, document: WorkflowDocument, variables: Variables ) -> None: + """Process task block of document""" + formatter(f"\n\nExecuting: {document.name}") formatter("-" * 5) - task_executable_lst = [] + base_fpath: str = FileContext(*document.context).filepath for task in document.tasks: - # @TODO should be done in ChkwareTask calls - _task_d = task.model_dump() + if not isinstance(task, dict): + raise RuntimeError("`tasks.*.item` should be map.") + + # replace values in tasks + task_d_: dict = replace_value(task, variables.data) + # ic(task_d_) + task_o_ = ChkwareTaskSupport.make_task(task_d_, base_file_path=base_fpath) execution_ctx = ExecuteContext( {"dump": True, "format": True}, @@ -147,69 +143,86 @@ def process_task_template( }, ) - _task_params = {"task": _task_d, "execution_context": execution_ctx} - match _task_d["uses"]: + match task_o_.uses: case WorkflowUses.fetch.value: - task_executable_lst.append((task_fetch, _task_params)) + cls.execute_tasks( + task_fetch, + TaskExecParam(task=task_o_, exec_ctx=execution_ctx), + variables, + ) case WorkflowUses.validate.value: - task_executable_lst.append((task_validation, _task_params)) - - - for tx_key in task_executable_keys: - seq_id, _ = tx_key.split(".", 1) - formatter(f"\nTask: {document.tasks[int(seq_id)].name}") - - __doc_version: str = data_get(_task_res.file_ctx.document, "version", "") - - if __doc_version.startswith("default:http"): - formatter( - "-> %s %s" - % ( - data_get(_task_res.file_ctx.document, "request.method"), - data_get(_task_res.file_ctx.document, "request.url"), + cls.execute_tasks( + task_validation, + TaskExecParam(task=task_o_, exec_ctx=execution_ctx), + variables, ) + + @classmethod + def execute_tasks( + cls, task_fn: Callable, task_params: TaskExecParam, variables: Variables + ) -> ExecResponse: + """execute_tasks""" + + formatter(f"\nTask: {task_params.task.name}") + + _task_res: ExecResponse = task_fn(**task_params.asdict()) + variables[WorkflowConfigNode.NODE.value].append(_task_res.variables_exec.data) + + # TODO move the display logic to service + # @SECTION display + __doc_version: str = data_get(_task_res.file_ctx.document, "version", "") + + if __doc_version.startswith("default:http"): + formatter( + "-> %s %s" + % ( + data_get(_task_res.file_ctx.document, "request.method"), + data_get(_task_res.file_ctx.document, "request.url"), ) - elif __doc_version.startswith("default:validation"): - formatter( - "-> Total tests: %s, Failed: %s" - % ( - data_get( - _task_res.variables_exec.data, "_asserts_response.count_all" - ), - data_get( - _task_res.variables_exec.data, - "_asserts_response.count_fail", - ), - ) + ) + elif __doc_version.startswith("default:validation"): + formatter( + "-> Total tests: %s, Failed: %s" + % ( + data_get( + _task_res.variables_exec.data, + "_asserts_response.count_all", + ), + data_get( + _task_res.variables_exec.data, + "_asserts_response.count_fail", + ), ) + ) + # @SECTION display end + + return _task_res + + @classmethod + def display(cls, exposed_data: list, exec_ctx: ExecuteContext) -> None: ... def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a workflow document""" wflow_doc = WorkflowDocument.from_file_context(file_ctx) - ic(wflow_doc) variable_doc = Variables() VariableTableManager.handle(variable_doc, wflow_doc, exec_ctx) service = WorkflowDocumentSupport() + # @TODO make sure the document do not call self making it repeating + service.set_step_template(variable_doc) service.process_task_template(wflow_doc, variable_doc) - # DocumentVersionMaker.verify_if_allowed( - # DocumentVersionMaker.from_dict(wflow_doc.as_dict), VERSION_SCOPE - # ) - - # VersionedDocumentSupport.validate_with_schema( - # HttpDocumentSupport.build_schema(), http_doc - # ) + output_data = Variables({"_steps": variable_doc[WorkflowConfigNode.NODE.value]}) + # TODO also send failed_details (fail code, message, stacktrace, etc) return ExecResponse( file_ctx=file_ctx, exec_ctx=exec_ctx, - variables_exec=ExposableVariables({}), + variables_exec=output_data, variables=variable_doc, - extra={}, ) @@ -224,4 +237,12 @@ def execute( cb: Callable """ - _ = call(file_ctx=ctx, exec_ctx=exec_ctx) + exr = call(file_ctx=ctx, exec_ctx=exec_ctx) + + wf_doc = WorkflowDocument.from_file_context(ctx) + exposed_data = ExposeManager.get_exposed_replaced_data( + wf_doc, {**dict(exr.variables), **dict(exr.variables_exec)} + ) + + cb({ctx.filepath_hash: exr.variables_exec.data}) + WorkflowDocumentSupport.display(exposed_data, exec_ctx) From 470e17c9ce3021c55df5f435ede84ff34c4384fa Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 17 Sep 2024 13:40:28 +0600 Subject: [PATCH 118/245] refactor: reorder import --- chk/modules/workflow/__init__.py | 33 ++++++++++++++------------------ chk/modules/workflow/entities.py | 4 ++-- chk/modules/workflow/services.py | 4 +++- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 78ef57c6..fdac858d 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -3,17 +3,24 @@ """ from __future__ import annotations -from collections import abc + import pathlib +from collections import abc from collections.abc import Callable -from uuid import uuid4 -from pydantic import Field, ConfigDict -from icecream import ic +from pydantic import ConfigDict, Field from chk.infrastructure.document import ( VersionedDocumentV2 as VersionedDocument, - VersionedDocumentSupport, +) +from chk.infrastructure.file_loader import ExecuteContext, FileContext +from chk.infrastructure.helper import data_get, slugify +from chk.infrastructure.symbol_table import ( + ExecResponse, + ExposeManager, + VariableTableManager, + Variables, + replace_value, ) from chk.infrastructure.version import DocumentVersionMaker from chk.modules.fetch import task_fetch @@ -21,23 +28,11 @@ from chk.modules.workflow.entities import ( ChkwareTask, ChkwareValidateTask, - WorkflowUses, TaskExecParam, WorkflowConfigNode, + WorkflowUses, ) -from chk.infrastructure.file_loader import ( - FileContext, - ExecuteContext, -) -from chk.infrastructure.helper import data_get, formatter, slugify -from chk.infrastructure.symbol_table import ( - Variables, - VariableTableManager, - ExecResponse, - replace_value, - ExposeManager, -) -from chk.modules.workflow.services import ChkwareTaskSupport +from chk.modules.workflow.services import ChkwareTaskSupport, WorkflowPresenter VERSION_SCOPE = ["workflow"] diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 08c4ae5e..268c05c0 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -7,9 +7,9 @@ import enum from typing import NamedTuple -from pydantic import BaseModel, Field, ConfigDict +from pydantic import BaseModel, ConfigDict, Field -from chk.infrastructure.file_loader import generate_abs_path, ExecuteContext +from chk.infrastructure.file_loader import ExecuteContext, generate_abs_path class WorkflowConfigNode(enum.StrEnum): diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 554b0662..18ee6e6b 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -2,7 +2,9 @@ Workflow services module """ -from chk.modules.workflow import ChkwareTask, WorkflowUses, ChkwareValidateTask +from chk.infrastructure.helper import formatter +from chk.infrastructure.symbol_table import Variables +from chk.modules.workflow import ChkwareTask, ChkwareValidateTask, WorkflowUses class ChkwareTaskSupport: From 98c7a67f2c633eb191360b9dff6d726ea6879602 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 17 Sep 2024 13:41:30 +0600 Subject: [PATCH 119/245] feat: move presentation to separate display class --- chk/modules/workflow/__init__.py | 37 +++++------------------------ chk/modules/workflow/services.py | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 31 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index fdac858d..fcf8ecee 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -158,43 +158,18 @@ def execute_tasks( ) -> ExecResponse: """execute_tasks""" - formatter(f"\nTask: {task_params.task.name}") - _task_res: ExecResponse = task_fn(**task_params.asdict()) variables[WorkflowConfigNode.NODE.value].append(_task_res.variables_exec.data) - # TODO move the display logic to service - # @SECTION display - __doc_version: str = data_get(_task_res.file_ctx.document, "version", "") - - if __doc_version.startswith("default:http"): - formatter( - "-> %s %s" - % ( - data_get(_task_res.file_ctx.document, "request.method"), - data_get(_task_res.file_ctx.document, "request.url"), - ) - ) - elif __doc_version.startswith("default:validation"): - formatter( - "-> Total tests: %s, Failed: %s" - % ( - data_get( - _task_res.variables_exec.data, - "_asserts_response.count_all", - ), - data_get( - _task_res.variables_exec.data, - "_asserts_response.count_fail", - ), - ) - ) - # @SECTION display end - return _task_res @classmethod - def display(cls, exposed_data: list, exec_ctx: ExecuteContext) -> None: ... + def display(cls, ex_resp: ExecResponse, exec_ctx: ExecuteContext) -> None: + wfp = WorkflowPresenter(ex_resp.variables_exec) + if exec_ctx.options["format"]: + wfp.print() + else: + wfp.printjson() def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 18ee6e6b..958ce093 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -33,3 +33,43 @@ def make_task(cls, task_d_: dict, /, **kwargs) -> ChkwareTask: if task_d_["uses"] == "fetch" else ChkwareValidateTask(base_file_path, **task_d_) ) + + +class WorkflowPresenter: + """WorkflowPresenter""" + + __slots__ = ("data",) + + def __init__(self, var: Variables): + """Construct""" + + self.data: Variables = var + + def print(self) -> None: + """print to screen""" + + if "document" in self.data and "name" in self.data["document"]: + formatter(f"\n\nWorkflow: {self.data['document']['name']}") + formatter( + f"Steps total: {self.data['document']['step_count']}, " + f"failed: {self.data['document']['step_failed']}" + ) + formatter("-" * 5) + + exposed_data: list[dict] = [] + + if "steps" in self.data: + exposed_data = self.data["steps"] + + for one_exposed_data in exposed_data: + formatter(f"\nTask: {one_exposed_data['name']}") + if one_exposed_data["uses"] == "fetch": + formatter( + f"-> {one_exposed_data['request_method']} {one_exposed_data['request_url']}" + ) + elif one_exposed_data["uses"] == "validate": + formatter( + f"-> Total tests: {one_exposed_data['asserts_count_all']}, Failed: {one_exposed_data['asserts_count_fail']}" + ) + + def printjson(self) -> None: ... From bbfd634ea24ccb92c50dc2cb2943fd09906c1506 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 17 Sep 2024 14:11:52 +0600 Subject: [PATCH 120/245] feat: add step exposed data to response --- chk/infrastructure/symbol_table.py | 2 +- chk/modules/workflow/__init__.py | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 403b6dd5..07302266 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -70,9 +70,9 @@ class ExecResponse(BaseModel): exec_ctx: ExecuteContext variables: Variables variables_exec: Variables - variables_disp: Variables = Field(default_factory=Variables) extra: object = Field(default=None) exception: Exception | None = Field(default=None) + exposed: list[typing.Any] = Field(default_factory=list) @typing.overload diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index fcf8ecee..3db4e092 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -183,16 +183,22 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: service = WorkflowDocumentSupport() # @TODO make sure the document do not call self making it repeating service.set_step_template(variable_doc) - service.process_task_template(wflow_doc, variable_doc) + exec_responses = service.process_task_template(wflow_doc, variable_doc) output_data = Variables({"_steps": variable_doc[WorkflowConfigNode.NODE.value]}) + exposed_data = ExposeManager.get_exposed_replaced_data( + wflow_doc, {**variable_doc.data, **output_data.data} + ) + # TODO also send failed_details (fail code, message, stacktrace, etc) return ExecResponse( file_ctx=file_ctx, exec_ctx=exec_ctx, - variables_exec=output_data, variables=variable_doc, + variables_exec=output_data, + extra=exec_responses, + exposed=exposed_data, ) @@ -209,10 +215,5 @@ def execute( exr = call(file_ctx=ctx, exec_ctx=exec_ctx) - wf_doc = WorkflowDocument.from_file_context(ctx) - exposed_data = ExposeManager.get_exposed_replaced_data( - wf_doc, {**dict(exr.variables), **dict(exr.variables_exec)} - ) - cb({ctx.filepath_hash: exr.variables_exec.data}) - WorkflowDocumentSupport.display(exposed_data, exec_ctx) + WorkflowDocumentSupport.display(exr, exec_ctx) From 009179ccd0fc57630cad5de20fd89b237b84601d Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 17 Sep 2024 14:12:33 +0600 Subject: [PATCH 121/245] feat: pass step response as list of exec response --- chk/modules/workflow/__init__.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 3db4e092..60612162 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -111,13 +111,11 @@ def set_step_template(cls, variables: Variables) -> None: @classmethod def process_task_template( cls, document: WorkflowDocument, variables: Variables - ) -> None: + ) -> list[ExecResponse]: """Process task block of document""" - formatter(f"\n\nExecuting: {document.name}") - formatter("-" * 5) - base_fpath: str = FileContext(*document.context).filepath + exec_responses: list[ExecResponse] = [] for task in document.tasks: if not isinstance(task, dict): @@ -125,7 +123,6 @@ def process_task_template( # replace values in tasks task_d_: dict = replace_value(task, variables.data) - # ic(task_d_) task_o_ = ChkwareTaskSupport.make_task(task_d_, base_file_path=base_fpath) execution_ctx = ExecuteContext( @@ -140,18 +137,24 @@ def process_task_template( match task_o_.uses: case WorkflowUses.fetch.value: - cls.execute_tasks( + _r = cls.execute_tasks( task_fetch, TaskExecParam(task=task_o_, exec_ctx=execution_ctx), variables, ) + + exec_responses.append(_r) case WorkflowUses.validate.value: - cls.execute_tasks( + _r = cls.execute_tasks( task_validation, TaskExecParam(task=task_o_, exec_ctx=execution_ctx), variables, ) + exec_responses.append(_r) + + return exec_responses + @classmethod def execute_tasks( cls, task_fn: Callable, task_params: TaskExecParam, variables: Variables From cb233539c73b52e506b5dbb9e6f6e834c02af252 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 18 Sep 2024 14:12:16 +0600 Subject: [PATCH 122/245] feat: impl presentation service --- chk/infrastructure/view.py | 24 ++++++++++++++++++++++++ chk/modules/workflow/services.py | 19 +++++++++---------- 2 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 chk/infrastructure/view.py diff --git a/chk/infrastructure/view.py b/chk/infrastructure/view.py new file mode 100644 index 00000000..d97e23d2 --- /dev/null +++ b/chk/infrastructure/view.py @@ -0,0 +1,24 @@ +"""View related utility mod""" + +import abc +import typing + +from pydantic import BaseModel + + +class PresentationBuilder(BaseModel, abc.ABC): + """Presentable signature""" + + data: typing.Any + + @abc.abstractmethod + def dump_fmt(self) -> None: + """Signature to dump formatted string""" + + raise NotImplementedError("Signature to dump formatted string") + + @abc.abstractmethod + def dump_json(self) -> str: + """Signature to dump json""" + + raise NotImplementedError("Signature to dump json") diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 958ce093..3e0c484a 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -2,8 +2,11 @@ Workflow services module """ +import typing + from chk.infrastructure.helper import formatter from chk.infrastructure.symbol_table import Variables +from chk.infrastructure.view import PresentationBuilder from chk.modules.workflow import ChkwareTask, ChkwareValidateTask, WorkflowUses @@ -35,17 +38,10 @@ def make_task(cls, task_d_: dict, /, **kwargs) -> ChkwareTask: ) -class WorkflowPresenter: +class WorkflowPresenter(PresentationBuilder): """WorkflowPresenter""" - __slots__ = ("data",) - - def __init__(self, var: Variables): - """Construct""" - - self.data: Variables = var - - def print(self) -> None: + def dump_fmt(self) -> None: """print to screen""" if "document" in self.data and "name" in self.data["document"]: @@ -72,4 +68,7 @@ def print(self) -> None: f"-> Total tests: {one_exposed_data['asserts_count_all']}, Failed: {one_exposed_data['asserts_count_fail']}" ) - def printjson(self) -> None: ... + def dump_json(self) -> str: + """print json""" + + pass From ad6d91d39bb98177a2d909d3a95732e3099c61fd Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 18 Sep 2024 14:12:50 +0600 Subject: [PATCH 123/245] refactor: normalize code --- chk/modules/workflow/__init__.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 60612162..f6b27b62 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -135,23 +135,17 @@ def process_task_template( }, ) + task_fn = None + match task_o_.uses: case WorkflowUses.fetch.value: - _r = cls.execute_tasks( - task_fetch, - TaskExecParam(task=task_o_, exec_ctx=execution_ctx), - variables, - ) - - exec_responses.append(_r) + task_fn = task_fetch case WorkflowUses.validate.value: - _r = cls.execute_tasks( - task_validation, - TaskExecParam(task=task_o_, exec_ctx=execution_ctx), - variables, - ) + task_fn = task_validation - exec_responses.append(_r) + if task_fn: + te_param = TaskExecParam(task=task_o_, exec_ctx=execution_ctx) + exec_responses.append(cls.execute_tasks(task_fn, te_param, variables)) return exec_responses From 6ca3ccd801f407dc1a98e3fe0679abe702761ff4 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 18 Sep 2024 18:59:17 +0600 Subject: [PATCH 124/245] refactor: import reorder --- chk/modules/fetch.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index d11aa8bd..2bc6f751 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -3,37 +3,35 @@ """ from __future__ import annotations + import dataclasses import enum import json import pathlib - from collections import UserDict, abc from urllib.parse import unquote, urlparse +import xmltodict +from defusedxml.minidom import parseString from pydantic import BaseModel, Field from requests.auth import HTTPBasicAuth -from defusedxml.minidom import parseString -import xmltodict - from chk.infrastructure.document import VersionedDocument, VersionedDocumentSupport from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get, formatter from chk.infrastructure.symbol_table import ( + EXPOSE_SCHEMA as EXP_SCHEMA, + ExecResponse, + ExposeManager, + VARIABLE_SCHEMA as VAR_SCHEMA, VariableTableManager, Variables, replace_value, - VARIABLE_SCHEMA as VAR_SCHEMA, - EXPOSE_SCHEMA as EXP_SCHEMA, - ExposeManager, - ExecResponse, ) - from chk.infrastructure.third_party.http_fetcher import ( ApiResponse, - fetch, BearerAuthentication, + fetch, ) from chk.infrastructure.version import DocumentVersionMaker, SCHEMA as VER_SCHEMA From d0b9167fb349b8ea4b2225c42b8c543e5fc63afa Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 18 Sep 2024 19:00:04 +0600 Subject: [PATCH 125/245] feat: sent fetch expection in exec response --- chk/modules/fetch.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 2bc6f751..3156397b 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -526,6 +526,8 @@ def display(expose_list: list, exec_ctx: ExecuteContext) -> None: def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a http document""" + r_exception: Exception | None = None + http_doc = HttpDocument.from_file_context(file_ctx) DocumentVersionMaker.verify_if_allowed( @@ -540,7 +542,13 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: VariableTableManager.handle(variable_doc, http_doc, exec_ctx) HttpDocumentSupport.process_request_template(http_doc, variable_doc) - response = HttpDocumentSupport.execute_request(http_doc) + response = ApiResponse() + + try: + response = HttpDocumentSupport.execute_request(http_doc) + except Exception as ex: + r_exception = ex + output_data = Variables({"_response": response.data}) return ExecResponse( @@ -548,6 +556,8 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: exec_ctx=exec_ctx, variables_exec=output_data, variables=variable_doc, + exception=r_exception, + report={"is_success": r_exception is None}, ) From ec751e5c66640c371153e1d18811852541d19e43 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 18 Sep 2024 19:00:45 +0600 Subject: [PATCH 126/245] feat: add exposed data to exec response --- chk/infrastructure/symbol_table.py | 1 + chk/modules/fetch.py | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 07302266..8c869203 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -73,6 +73,7 @@ class ExecResponse(BaseModel): extra: object = Field(default=None) exception: Exception | None = Field(default=None) exposed: list[typing.Any] = Field(default_factory=list) + report: dict = Field(default_factory=dict) @typing.overload diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 3156397b..ad5fcf31 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -551,12 +551,18 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: output_data = Variables({"_response": response.data}) + exposed_data = ExposeManager.get_exposed_replaced_data( + http_doc, + {**variable_doc.data, **output_data.data}, + ) + return ExecResponse( file_ctx=file_ctx, exec_ctx=exec_ctx, variables_exec=output_data, variables=variable_doc, exception=r_exception, + exposed=exposed_data, report={"is_success": r_exception is None}, ) @@ -572,16 +578,12 @@ def execute( cb: Callable """ - exec_response = call(file_ctx=ctx, exec_ctx=exec_ctx) - - http_doc = HttpDocument.from_file_context(exec_response.file_ctx) - exposed_data = ExposeManager.get_exposed_replaced_data( - http_doc, - {**exec_response.variables.data, **exec_response.variables_exec.data}, - ) + exr = call(file_ctx=ctx, exec_ctx=exec_ctx) + if exr.exception is not None: + raise exr.exception - cb({ctx.filepath_hash: exec_response.variables_exec.data}) - HttpDocumentSupport.display(exposed_data, exec_ctx) + cb({ctx.filepath_hash: exr.variables_exec.data}) + HttpDocumentSupport.display(exr.exposed, exec_ctx) def task_fetch(**kwargs: dict) -> ExecResponse: From 9874e8ed0e27a8fd48d588ee2518c922791d3ee2 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 18 Sep 2024 19:05:16 +0600 Subject: [PATCH 127/245] feat: add exposed data to exec response --- chk/modules/validate/__init__.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 16a31780..6e5db765 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -274,12 +274,21 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: } ) + exposed_data = ExposeManager.get_exposed_replaced_data( + validate_doc, + { + **validate_doc.data, + **{"_asserts_response": test_run_result}, + }, + ) + return ExecResponse( file_ctx=file_ctx, exec_ctx=exec_ctx, variables_exec=output_data, variables=variable_doc, extra=test_run_result, + exposed=exposed_data, ) @@ -296,17 +305,8 @@ def execute( exec_response = call(file_ctx=ctx, exec_ctx=exec_ctx) - validate_doc = ValidationDocument.from_file_context(ctx) - exposed_data = ExposeManager.get_exposed_replaced_data( - validate_doc, - { - **exec_response.variables.data, - **{"_asserts_response": exec_response.extra}, - }, - ) - cb({ctx.filepath_hash: exec_response.variables_exec.data}) - ValidationDocumentSupport.display(exposed_data, exec_ctx) + ValidationDocumentSupport.display(exec_response.exposed, exec_ctx) def task_validation(**kwargs: dict) -> ExecResponse: From 1f5d24a4353e8bf67191a9384732008e9b9d90b0 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 19 Sep 2024 22:17:44 +0600 Subject: [PATCH 128/245] fix: dumping response for validate --- chk/modules/validate/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 6e5db765..a1ebcd7e 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -278,7 +278,10 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: validate_doc, { **validate_doc.data, - **{"_asserts_response": test_run_result}, + **{ + "_asserts_response": test_run_result, + "_data": variable_doc["_data"], + }, }, ) From 3f7adfb3382a8ee66ab37c554bba0f9f23430b0f Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 19 Sep 2024 22:33:50 +0600 Subject: [PATCH 129/245] feat: add report to validate exec response --- chk/modules/validate/__init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index a1ebcd7e..7e94efb1 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -292,6 +292,11 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: variables=variable_doc, extra=test_run_result, exposed=exposed_data, + report={ + "is_success": test_run_result["count_fail"] == 0, + "count_all": test_run_result["count_all"], + "count_fail": test_run_result["count_fail"], + }, ) From c362155314f59fffdf39f7e3ed3cf6f188828db0 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 19 Sep 2024 23:04:29 +0600 Subject: [PATCH 130/245] feat: save step results --- chk/modules/workflow/__init__.py | 12 +++++++++--- chk/modules/workflow/entities.py | 9 +++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index f6b27b62..ed01640f 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -28,6 +28,7 @@ from chk.modules.workflow.entities import ( ChkwareTask, ChkwareValidateTask, + StepResult, TaskExecParam, WorkflowConfigNode, WorkflowUses, @@ -116,6 +117,7 @@ def process_task_template( base_fpath: str = FileContext(*document.context).filepath exec_responses: list[ExecResponse] = [] + exec_report: list[StepResult] = [] for task in document.tasks: if not isinstance(task, dict): @@ -145,15 +147,19 @@ def process_task_template( if task_fn: te_param = TaskExecParam(task=task_o_, exec_ctx=execution_ctx) - exec_responses.append(cls.execute_tasks(task_fn, te_param, variables)) + task_resp: ExecResponse = cls.execute_task(task_fn, te_param, variables) + exec_report.append( + StepResult(name=task_o_.name, uses=task_o_.uses, **task_resp.report) + ) + exec_responses.append(task_resp) return exec_responses @classmethod - def execute_tasks( + def execute_task( cls, task_fn: Callable, task_params: TaskExecParam, variables: Variables ) -> ExecResponse: - """execute_tasks""" + """execute_task""" _task_res: ExecResponse = task_fn(**task_params.asdict()) variables[WorkflowConfigNode.NODE.value].append(_task_res.variables_exec.data) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 268c05c0..57b6addc 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -78,3 +78,12 @@ def __init__(self, basepath: str, /, **kwargs: dict) -> None: """Constructor""" super().__init__(basepath, **kwargs) + + +class StepResult(BaseModel): + """StepResult""" + + name: str + uses: str + is_success: bool + others: dict = Field(default_factory=dict) From 85e280c55db4237d8d7b33844036d776e1cac94a Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 20 Sep 2024 12:22:35 +0600 Subject: [PATCH 131/245] feat: pass presentation items --- chk/modules/fetch.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index ad5fcf31..8a343181 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -556,6 +556,10 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: {**variable_doc.data, **output_data.data}, ) + # TODO: instead if sending specific report items, and making presentable in other + # module, we should prepare and long and short form of presentable that can be + # loaded via other module + return ExecResponse( file_ctx=file_ctx, exec_ctx=exec_ctx, @@ -563,7 +567,11 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: variables=variable_doc, exception=r_exception, exposed=exposed_data, - report={"is_success": r_exception is None}, + report={ + "is_success": r_exception is None, + "request_method": file_ctx.document["request"]['method'], + "request_url": file_ctx.document["request"]['url'], + }, ) From d50251a536ff05ad5c7936aa1dc3b693d392a600 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 20 Sep 2024 12:53:15 +0600 Subject: [PATCH 132/245] feat: dump str final --- chk/modules/workflow/__init__.py | 35 ++++++++---- chk/modules/workflow/services.py | 97 +++++++++++++++++++++++--------- 2 files changed, 96 insertions(+), 36 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index ed01640f..ae973c53 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -23,6 +23,7 @@ replace_value, ) from chk.infrastructure.version import DocumentVersionMaker +from chk.infrastructure.view import PresentationBuilder from chk.modules.fetch import task_fetch from chk.modules.validate import task_validation from chk.modules.workflow.entities import ( @@ -112,7 +113,7 @@ def set_step_template(cls, variables: Variables) -> None: @classmethod def process_task_template( cls, document: WorkflowDocument, variables: Variables - ) -> list[ExecResponse]: + ) -> tuple[list[ExecResponse], list[StepResult]]: """Process task block of document""" base_fpath: str = FileContext(*document.context).filepath @@ -148,12 +149,18 @@ def process_task_template( if task_fn: te_param = TaskExecParam(task=task_o_, exec_ctx=execution_ctx) task_resp: ExecResponse = cls.execute_task(task_fn, te_param, variables) + exec_report.append( - StepResult(name=task_o_.name, uses=task_o_.uses, **task_resp.report) + StepResult( + name=task_o_.name, + uses=task_o_.uses, + is_success=task_resp.report.pop("is_success"), + others=task_resp.report, + ) ) exec_responses.append(task_resp) - return exec_responses + return exec_responses, exec_report @classmethod def execute_task( @@ -166,13 +173,21 @@ def execute_task( return _task_res + # @classmethod + # def prepare_step_results(cls, ) -> dict: + @classmethod - def display(cls, ex_resp: ExecResponse, exec_ctx: ExecuteContext) -> None: - wfp = WorkflowPresenter(ex_resp.variables_exec) + def display( + cls, + ex_resp: ExecResponse, + exec_ctx: ExecuteContext, + presenter: type[PresentationBuilder], + ) -> None: + wfp = presenter(data=ex_resp) if exec_ctx.options["format"]: - wfp.print() + wfp.dump_fmt() else: - wfp.printjson() + wfp.dump_json() def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: @@ -186,7 +201,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: service = WorkflowDocumentSupport() # @TODO make sure the document do not call self making it repeating service.set_step_template(variable_doc) - exec_responses = service.process_task_template(wflow_doc, variable_doc) + exec_responses, exec_report = service.process_task_template(wflow_doc, variable_doc) output_data = Variables({"_steps": variable_doc[WorkflowConfigNode.NODE.value]}) @@ -200,7 +215,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: exec_ctx=exec_ctx, variables=variable_doc, variables_exec=output_data, - extra=exec_responses, + extra=(exec_responses, exec_report), exposed=exposed_data, ) @@ -219,4 +234,4 @@ def execute( exr = call(file_ctx=ctx, exec_ctx=exec_ctx) cb({ctx.filepath_hash: exr.variables_exec.data}) - WorkflowDocumentSupport.display(exr, exec_ctx) + WorkflowDocumentSupport.display(exr, exec_ctx, WorkflowPresenter) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 3e0c484a..baecd5a5 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -2,12 +2,15 @@ Workflow services module """ -import typing +from __future__ import annotations -from chk.infrastructure.helper import formatter -from chk.infrastructure.symbol_table import Variables from chk.infrastructure.view import PresentationBuilder -from chk.modules.workflow import ChkwareTask, ChkwareValidateTask, WorkflowUses +from chk.modules.workflow import ( + ChkwareTask, + ChkwareValidateTask, + StepResult, + WorkflowUses, +) class ChkwareTaskSupport: @@ -41,34 +44,76 @@ def make_task(cls, task_d_: dict, /, **kwargs) -> ChkwareTask: class WorkflowPresenter(PresentationBuilder): """WorkflowPresenter""" - def dump_fmt(self) -> None: - """print to screen""" + def _prepare_dump_data(self) -> dict: + """prepare dump data""" + + _, exec_report = self.data.extra + _document = self.data.file_ctx.document + + r_dump = {} - if "document" in self.data and "name" in self.data["document"]: - formatter(f"\n\nWorkflow: {self.data['document']['name']}") - formatter( - f"Steps total: {self.data['document']['step_count']}, " - f"failed: {self.data['document']['step_failed']}" + if _document and "name" in _document: + r_dump["name"] = _document["name"] + + if exec_report: + r_dump["step_count"] = len(exec_report) + r_dump["step_failed"] = len( + [item for item in exec_report if not item.is_success] ) - formatter("-" * 5) - exposed_data: list[dict] = [] + r_dump["tasks"] = [] + + for item in exec_report: + item: StepResult # type: ignore + + response_task_dump = { + "name": item.name, + "uses": item.uses, + "is_success": item.is_success, + "fetch_request_method": ( + item.others["request_method"] + if "request_method" in item.others + else "" + ), + "fetch_request_url": ( + item.others["request_url"] if "request_url" in item.others else "" + ), + "validate_asserts_count_all": ( + item.others["count_all"] if "count_all" in item.others else "" + ), + "validate_asserts_count_fail": ( + item.others["count_fail"] if "count_fail" in item.others else "" + ), + } + + r_dump["tasks"].append(response_task_dump) + return r_dump + + def dump_fmt(self) -> str: + """print to screen""" + + dump_dct: dict = self._prepare_dump_data() - if "steps" in self.data: - exposed_data = self.data["steps"] + _computed_str = f"\n\nWorkflow: {dump_dct.get('name', '')}\n" + _computed_str += f"Steps total: {dump_dct.get('step_count', '')}, " + _computed_str += f"failed: {dump_dct.get('step_failed', '')}\n" + _computed_str += "------\n" - for one_exposed_data in exposed_data: - formatter(f"\nTask: {one_exposed_data['name']}") - if one_exposed_data["uses"] == "fetch": - formatter( - f"-> {one_exposed_data['request_method']} {one_exposed_data['request_url']}" - ) - elif one_exposed_data["uses"] == "validate": - formatter( - f"-> Total tests: {one_exposed_data['asserts_count_all']}, Failed: {one_exposed_data['asserts_count_fail']}" + tasks = dump_dct.get("tasks", []) + + for one_task in tasks: + _computed_str += "\n\n" + _computed_str += "+ " if one_task["is_success"] else "- " + _computed_str += f"Task: {one_task['name']}\n" + if one_task["uses"] == "fetch": + _computed_str += f">> {one_task['fetch_request_method']} {one_task['fetch_request_url']}" + elif one_task["uses"] == "validate": + _computed_str += ( + f">> Total tests: {one_task['validate_asserts_count_all']}, " ) + _computed_str += f"Failed: {one_task['validate_asserts_count_fail']}" + + return _computed_str def dump_json(self) -> str: """print json""" - - pass From 58da18238ab5d53ae5bb4b22e329e7a7bf06fa7b Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 21 Sep 2024 15:52:28 +0600 Subject: [PATCH 133/245] feat: print displaying wf response --- chk/infrastructure/view.py | 2 +- chk/modules/workflow/__init__.py | 6 +++--- chk/modules/workflow/services.py | 10 +++++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/chk/infrastructure/view.py b/chk/infrastructure/view.py index d97e23d2..fd181949 100644 --- a/chk/infrastructure/view.py +++ b/chk/infrastructure/view.py @@ -12,7 +12,7 @@ class PresentationBuilder(BaseModel, abc.ABC): data: typing.Any @abc.abstractmethod - def dump_fmt(self) -> None: + def dump_fmt(self) -> str: """Signature to dump formatted string""" raise NotImplementedError("Signature to dump formatted string") diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index ae973c53..71ce36e8 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -14,7 +14,7 @@ VersionedDocumentV2 as VersionedDocument, ) from chk.infrastructure.file_loader import ExecuteContext, FileContext -from chk.infrastructure.helper import data_get, slugify +from chk.infrastructure.helper import data_get, formatter, slugify from chk.infrastructure.symbol_table import ( ExecResponse, ExposeManager, @@ -185,9 +185,9 @@ def display( ) -> None: wfp = presenter(data=ex_resp) if exec_ctx.options["format"]: - wfp.dump_fmt() + formatter(wfp.dump_fmt(), dump=exec_ctx.options["dump"]) else: - wfp.dump_json() + formatter(wfp.dump_json(), dump=exec_ctx.options["dump"]) def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index baecd5a5..649b6316 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -4,6 +4,8 @@ from __future__ import annotations +import json + from chk.infrastructure.view import PresentationBuilder from chk.modules.workflow import ( ChkwareTask, @@ -17,7 +19,7 @@ class ChkwareTaskSupport: """ChkwareTaskSupport""" @classmethod - def make_task(cls, task_d_: dict, /, **kwargs) -> ChkwareTask: + def make_task(cls, task_d_: dict, /, **kwargs: dict) -> ChkwareTask: """validate task data""" if "base_file_path" not in kwargs: @@ -90,7 +92,7 @@ def _prepare_dump_data(self) -> dict: return r_dump def dump_fmt(self) -> str: - """print to screen""" + """return formatted string representation""" dump_dct: dict = self._prepare_dump_data() @@ -116,4 +118,6 @@ def dump_fmt(self) -> str: return _computed_str def dump_json(self) -> str: - """print json""" + """return json representation""" + + return json.dumps(self._prepare_dump_data()) From 02800ce1c5a25e74d1665709afb62fee328453b8 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 23 Sep 2024 18:13:52 +0600 Subject: [PATCH 134/245] feat: get_exposed_replaced_data v2 - supports key as exposed item name and value --- chk/infrastructure/symbol_table.py | 32 ++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 8c869203..25eb198c 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -2,6 +2,7 @@ Symbol and variable management """ +import copy import enum import os import typing @@ -12,7 +13,7 @@ from pydantic import BaseModel, ConfigDict, Field from chk.infrastructure.document import VersionedDocument, VersionedDocumentV2 -from chk.infrastructure.file_loader import FileContext, ExecuteContext +from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get from chk.infrastructure.templating import StrTemplate @@ -72,7 +73,7 @@ class ExecResponse(BaseModel): variables_exec: Variables extra: object = Field(default=None) exception: Exception | None = Field(default=None) - exposed: list[typing.Any] = Field(default_factory=list) + exposed: list | dict = Field(default_factory=list) report: dict = Field(default_factory=dict) @@ -257,3 +258,30 @@ def get_exposed_replaced_data( return ExposeManager.replace_values(expose_doc, store) return [] + + @staticmethod + def get_exposed_replaced_data_v2( + document: VersionedDocumentV2, store: dict + ) -> dict: + """ + Get expose doc from a `VersionedDocument`, and prepare it from the + value of `Variables`, and `store`, and return + + Args: + document: VersionedDocument to get expose definition from it + store: dict to use as value store + + Returns: + dict: list of expose data + """ + + file_ctx = FileContext(*document.context) + + if expose_doc := ExposeManager.get_expose_doc(file_ctx.document): + + exposed_doc_t = copy.copy(expose_doc) + + expose_val = ExposeManager.replace_values(expose_doc, store) + return dict(zip(exposed_doc_t, expose_val)) + + return {} From 6e0cfb20708bdfe3b418bc4e318acc30e605f648 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 23 Sep 2024 18:15:17 +0600 Subject: [PATCH 135/245] refactor: instead of passed task info, pass the task --- chk/modules/workflow/__init__.py | 21 +++++++++++---------- chk/modules/workflow/entities.py | 4 ++-- chk/modules/workflow/services.py | 6 +++--- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 71ce36e8..07f04106 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -113,11 +113,10 @@ def set_step_template(cls, variables: Variables) -> None: @classmethod def process_task_template( cls, document: WorkflowDocument, variables: Variables - ) -> tuple[list[ExecResponse], list[StepResult]]: + ) -> list: """Process task block of document""" base_fpath: str = FileContext(*document.context).filepath - exec_responses: list[ExecResponse] = [] exec_report: list[StepResult] = [] for task in document.tasks: @@ -126,7 +125,9 @@ def process_task_template( # replace values in tasks task_d_: dict = replace_value(task, variables.data) - task_o_ = ChkwareTaskSupport.make_task(task_d_, base_file_path=base_fpath) + task_o_ = ChkwareTaskSupport.make_task( + task_d_, **dict(base_file_path=base_fpath) + ) execution_ctx = ExecuteContext( {"dump": True, "format": True}, @@ -152,15 +153,14 @@ def process_task_template( exec_report.append( StepResult( - name=task_o_.name, - uses=task_o_.uses, + task=task_o_, is_success=task_resp.report.pop("is_success"), others=task_resp.report, + exposed=task_resp.exposed, ) ) - exec_responses.append(task_resp) - return exec_responses, exec_report + return exec_report @classmethod def execute_task( @@ -201,11 +201,12 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: service = WorkflowDocumentSupport() # @TODO make sure the document do not call self making it repeating service.set_step_template(variable_doc) - exec_responses, exec_report = service.process_task_template(wflow_doc, variable_doc) + exec_report = service.process_task_template(wflow_doc, variable_doc) + # output_data = Variables() output_data = Variables({"_steps": variable_doc[WorkflowConfigNode.NODE.value]}) - exposed_data = ExposeManager.get_exposed_replaced_data( + exposed_data: dict = ExposeManager.get_exposed_replaced_data_v2( wflow_doc, {**variable_doc.data, **output_data.data} ) @@ -215,7 +216,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: exec_ctx=exec_ctx, variables=variable_doc, variables_exec=output_data, - extra=(exec_responses, exec_report), + extra=exec_report, exposed=exposed_data, ) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 57b6addc..f8c3be6e 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -83,7 +83,7 @@ def __init__(self, basepath: str, /, **kwargs: dict) -> None: class StepResult(BaseModel): """StepResult""" - name: str - uses: str + task: ChkwareTask | ChkwareValidateTask is_success: bool others: dict = Field(default_factory=dict) + exposed: list | dict = Field(default_factory=list) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 649b6316..04aaa505 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -49,7 +49,7 @@ class WorkflowPresenter(PresentationBuilder): def _prepare_dump_data(self) -> dict: """prepare dump data""" - _, exec_report = self.data.extra + exec_report = self.data.extra _document = self.data.file_ctx.document r_dump = {} @@ -69,8 +69,8 @@ def _prepare_dump_data(self) -> dict: item: StepResult # type: ignore response_task_dump = { - "name": item.name, - "uses": item.uses, + "name": item.task.name, + "uses": item.task.uses, "is_success": item.is_success, "fetch_request_method": ( item.others["request_method"] From 14e6a2639de72e6194b5ec5bbb4430b67c442aa4 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 27 Sep 2024 23:09:12 +0600 Subject: [PATCH 136/245] feat: try to covert to dict service method --- chk/infrastructure/helper.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/chk/infrastructure/helper.py b/chk/infrastructure/helper.py index 0a8386ed..d2475ad8 100644 --- a/chk/infrastructure/helper.py +++ b/chk/infrastructure/helper.py @@ -1,6 +1,7 @@ """ Helper functions module """ + import ast import re from collections.abc import Callable @@ -158,6 +159,16 @@ def to_auto(var: str) -> Any: return var + @staticmethod + def try_dict(to_dict: Any, say_exception: bool = False) -> dict | Any: + try: + return dict(to_dict) + except ValueError as ex: + if say_exception: + raise ex + else: + return to_dict + def formatter(message: object, cb: Callable = str, dump: bool = True) -> str: """Format message with given callback From 30c60821051623687f5c8fc078db5ffeac3e86e0 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 27 Sep 2024 23:09:52 +0600 Subject: [PATCH 137/245] feat: update messaging for list for exportables --- chk/modules/workflow/services.py | 37 ++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 04aaa505..df65bfed 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -6,11 +6,13 @@ import json +from chk.infrastructure.helper import Cast from chk.infrastructure.view import PresentationBuilder from chk.modules.workflow import ( ChkwareTask, ChkwareValidateTask, StepResult, + WorkflowConfigNode, WorkflowUses, ) @@ -94,6 +96,25 @@ def _prepare_dump_data(self) -> dict: def dump_fmt(self) -> str: """return formatted string representation""" + exposed_fmt_str = [] + + for key in self.data.exposed: + _t_key = str(key).replace("%>", "").replace("<%", "").strip() + _t_marker = str(WorkflowConfigNode.NODE) + _str_to_append = "" + + if _t_marker in _t_key and len(_t_key) == len(_t_marker): + _str_to_append = self._prepare_dump_str_for_steps() + else: + _str_to_append = json.dumps(self.data.exposed[key]) + + exposed_fmt_str.append(_str_to_append) + + return "\n------\n".join(exposed_fmt_str) + + def _prepare_dump_str_for_steps(self) -> str: + """prepare dump str for steps""" + dump_dct: dict = self._prepare_dump_data() _computed_str = f"\n\nWorkflow: {dump_dct.get('name', '')}\n" @@ -104,7 +125,6 @@ def dump_fmt(self) -> str: tasks = dump_dct.get("tasks", []) for one_task in tasks: - _computed_str += "\n\n" _computed_str += "+ " if one_task["is_success"] else "- " _computed_str += f"Task: {one_task['name']}\n" if one_task["uses"] == "fetch": @@ -119,5 +139,18 @@ def dump_fmt(self) -> str: def dump_json(self) -> str: """return json representation""" + exposed_fmt_str = [] + + for key in self.data.exposed: + _t_key = str(key).replace("%>", "").replace("<%", "").strip() + _t_marker = str(WorkflowConfigNode.NODE) + _to_append = {} + + if _t_marker in _t_key and len(_t_key) == len(_t_marker): + _to_append = self._prepare_dump_data() + else: + _to_append = Cast.try_dict(self.data.exposed[key]) + + exposed_fmt_str.append(_to_append) - return json.dumps(self._prepare_dump_data()) + return json.dumps(exposed_fmt_str) From ac5993c2e01e596f94360ada8b3a2eea1b4e3e29 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 28 Sep 2024 12:34:08 +0600 Subject: [PATCH 138/245] refactor: reformation of spacing in output --- chk/modules/workflow/services.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index df65bfed..722376d5 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -110,21 +110,21 @@ def dump_fmt(self) -> str: exposed_fmt_str.append(_str_to_append) - return "\n------\n".join(exposed_fmt_str) + return "\n======\n".join(exposed_fmt_str) def _prepare_dump_str_for_steps(self) -> str: """prepare dump str for steps""" dump_dct: dict = self._prepare_dump_data() - _computed_str = f"\n\nWorkflow: {dump_dct.get('name', '')}\n" - _computed_str += f"Steps total: {dump_dct.get('step_count', '')}, " - _computed_str += f"failed: {dump_dct.get('step_failed', '')}\n" - _computed_str += "------\n" + _computed_str = f"\n\nWorkflow: {dump_dct.get('name', '')}" + _computed_str += f"\nSteps total: {dump_dct.get('step_count', '')}, " + _computed_str += f"failed: {dump_dct.get('step_failed', '')}" tasks = dump_dct.get("tasks", []) for one_task in tasks: + _computed_str += "\n------\n" _computed_str += "+ " if one_task["is_success"] else "- " _computed_str += f"Task: {one_task['name']}\n" if one_task["uses"] == "fetch": From 78b0de1a0e3cc7a6c0bf6b673f068fcf4746140a Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 29 Sep 2024 09:59:13 +0600 Subject: [PATCH 139/245] feat: using the value of the enum --- chk/modules/validate/__init__.py | 24 ++++++++++++++----- .../modules/validate/validate_entity_test.py | 12 +++++----- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 7e94efb1..0a896346 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -133,19 +133,19 @@ def set_data_template( """sets data or template""" data = data_get(exec_ctx.arguments, "data", {}) - variables[ValidationConfigNode.VAR_NODE] = data if data else validate_doc.data + variables[ValidationConfigNode.VAR_NODE.value] = data if data else validate_doc.data @staticmethod def process_data_template(variables: Variables) -> None: """process data or template before assertion""" - data = variables[ValidationConfigNode.VAR_NODE] + data = variables[ValidationConfigNode.VAR_NODE.value] tmp_variables = { key: val for key, val in variables.data.items() - if key != ValidationConfigNode.VAR_NODE + if key != ValidationConfigNode.VAR_NODE.value } - variables[ValidationConfigNode.VAR_NODE] = replace_value(data, tmp_variables) + variables[ValidationConfigNode.VAR_NODE.value] = replace_value(data, tmp_variables) @staticmethod def make_assertion_entry_list(assert_lst: list[dict]) -> list[AssertionEntry]: @@ -277,14 +277,26 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: exposed_data = ExposeManager.get_exposed_replaced_data( validate_doc, { - **validate_doc.data, + **variable_doc.data, **{ "_asserts_response": test_run_result, - "_data": variable_doc["_data"], + # "_data": variable_doc["_data"], }, }, ) + import icecream + + # icecream.ic(exposed_data) + icecream.ic(variable_doc.data) + # icecream.ic({ + # **variable_doc.data, + # **{ + # "_asserts_response": test_run_result, + # "_data": variable_doc["_data"], + # }, + # }) + return ExecResponse( file_ctx=file_ctx, exec_ctx=exec_ctx, diff --git a/tests/modules/validate/validate_entity_test.py b/tests/modules/validate/validate_entity_test.py index 021758b4..3fa7cac6 100644 --- a/tests/modules/validate/validate_entity_test.py +++ b/tests/modules/validate/validate_entity_test.py @@ -156,7 +156,7 @@ def test_set_data_template_pass_when_set_from_exec_ctx(self): variables = Variables() ValidationDocumentSupport.set_data_template(doc, variables, exec_ctx) - assert bool(variables[ValidationConfigNode.VAR_NODE]) + assert bool(variables[ValidationConfigNode.VAR_NODE.value]) def test_set_data_template_pass_when_set_from_doc(self): ctx = FileContext( @@ -185,7 +185,7 @@ def test_set_data_template_pass_when_set_from_doc(self): variables = Variables() ValidationDocumentSupport.set_data_template(doc, variables, exec_ctx) - assert bool(variables[ValidationConfigNode.VAR_NODE]) + assert bool(variables[ValidationConfigNode.VAR_NODE.value]) def test_set_data_template_pass_exec_ctx_prioritise(self): ctx = FileContext( @@ -215,8 +215,8 @@ def test_set_data_template_pass_exec_ctx_prioritise(self): variables = Variables() ValidationDocumentSupport.set_data_template(doc, variables, exec_ctx) - assert bool(variables[ValidationConfigNode.VAR_NODE]) - assert variables[ValidationConfigNode.VAR_NODE].get("name") == "Some Name Two" + assert bool(variables[ValidationConfigNode.VAR_NODE.value]) + assert variables[ValidationConfigNode.VAR_NODE.value].get("name") == "Some Name Two" @staticmethod def test_process_data_template_pass(): @@ -251,8 +251,8 @@ def test_process_data_template_pass(): ValidationDocumentSupport.set_data_template(doc, variables, exec_ctx) ValidationDocumentSupport.process_data_template(variables) - assert bool(variables[ValidationConfigNode.VAR_NODE]) - assert variables[ValidationConfigNode.VAR_NODE].get("greet") == "Hello Somebody" + assert bool(variables[ValidationConfigNode.VAR_NODE.value]) + assert variables[ValidationConfigNode.VAR_NODE.value].get("greet") == "Hello Somebody" @staticmethod def test_make_assertion_entry_list_pass(): From 44acf0267953a12f16b6a349a7e42b11dad7c58d Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 30 Sep 2024 19:45:47 +0600 Subject: [PATCH 140/245] refactor: remoce dumping --- chk/modules/validate/__init__.py | 47 ++++++++++++-------------------- 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 0a896346..d590c91e 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -3,37 +3,37 @@ """ from __future__ import annotations + import dataclasses import enum import json -from collections import abc import cerberus +from collections import abc from chk.infrastructure.document import VersionedDocument, VersionedDocumentSupport -from chk.infrastructure.file_loader import FileContext, ExecuteContext +from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get, formatter -from chk.infrastructure.version import DocumentVersionMaker, SCHEMA as VER_SCHEMA - from chk.infrastructure.symbol_table import ( - VARIABLE_SCHEMA as VAR_SCHEMA, EXPOSE_SCHEMA as EXP_SCHEMA, - Variables, + ExecResponse, + ExposeManager, + VARIABLE_SCHEMA as VAR_SCHEMA, VariableTableManager, + Variables, replace_value, - ExposeManager, - ExecResponse, ) +from chk.infrastructure.version import DocumentVersionMaker, SCHEMA as VER_SCHEMA from chk.modules.validate.assertion_services import ( + AllTestRunResult, AssertionEntry, AssertionEntryListRunner, - AllTestRunResult, - ValidationTask, MAP_TYPE_TO_FN, + ValidationTask, ) from chk.modules.validate.assertion_validation import ( - get_schema_map, AssertionEntityProperty, + get_schema_map, ) VERSION_SCOPE = ["validation"] @@ -133,7 +133,9 @@ def set_data_template( """sets data or template""" data = data_get(exec_ctx.arguments, "data", {}) - variables[ValidationConfigNode.VAR_NODE.value] = data if data else validate_doc.data + variables[ValidationConfigNode.VAR_NODE.value] = ( + data if data else validate_doc.data + ) @staticmethod def process_data_template(variables: Variables) -> None: @@ -145,7 +147,9 @@ def process_data_template(variables: Variables) -> None: if key != ValidationConfigNode.VAR_NODE.value } - variables[ValidationConfigNode.VAR_NODE.value] = replace_value(data, tmp_variables) + variables[ValidationConfigNode.VAR_NODE.value] = replace_value( + data, tmp_variables + ) @staticmethod def make_assertion_entry_list(assert_lst: list[dict]) -> list[AssertionEntry]: @@ -278,25 +282,10 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: validate_doc, { **variable_doc.data, - **{ - "_asserts_response": test_run_result, - # "_data": variable_doc["_data"], - }, + **{"_asserts_response": test_run_result}, }, ) - import icecream - - # icecream.ic(exposed_data) - icecream.ic(variable_doc.data) - # icecream.ic({ - # **variable_doc.data, - # **{ - # "_asserts_response": test_run_result, - # "_data": variable_doc["_data"], - # }, - # }) - return ExecResponse( file_ctx=file_ctx, exec_ctx=exec_ctx, From 35957340d4b1109657597e5cd16de4a8db00deb3 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 30 Sep 2024 22:35:16 +0600 Subject: [PATCH 141/245] refactor: change fn sign --- chk/modules/workflow/__init__.py | 1 + chk/modules/workflow/entities.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 07f04106..909d4285 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -170,6 +170,7 @@ def execute_task( _task_res: ExecResponse = task_fn(**task_params.asdict()) variables[WorkflowConfigNode.NODE.value].append(_task_res.variables_exec.data) + _task_res: ExecResponse = task_fn(**task_params.as_dict()) return _task_res diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index f8c3be6e..7ea556fb 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -24,7 +24,7 @@ class TaskExecParam(NamedTuple): task: ChkwareTask exec_ctx: ExecuteContext - def asdict(self) -> dict: + def as_dict(self) -> dict: """Convert to dict""" return {"task": self.task.model_dump(), "execution_context": self.exec_ctx} From 36c4c9e18038852d4fda7ce4f3ae4390e123a3df Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 2 Oct 2024 09:37:18 +0600 Subject: [PATCH 142/245] fix: json object dumping iissue --- chk/modules/workflow/services.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 722376d5..96e84032 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -98,7 +98,7 @@ def dump_fmt(self) -> str: exposed_fmt_str = [] - for key in self.data.exposed: + for key, value in self.data.exposed.items(): _t_key = str(key).replace("%>", "").replace("<%", "").strip() _t_marker = str(WorkflowConfigNode.NODE) _str_to_append = "" @@ -106,8 +106,15 @@ def dump_fmt(self) -> str: if _t_marker in _t_key and len(_t_key) == len(_t_marker): _str_to_append = self._prepare_dump_str_for_steps() else: - _str_to_append = json.dumps(self.data.exposed[key]) + _value = [] + for item in value: + if hasattr(item, "as_dict"): + _value.append(item.as_dict) + else: + _value.append(item) + + _str_to_append = json.dumps(_value) exposed_fmt_str.append(_str_to_append) return "\n======\n".join(exposed_fmt_str) @@ -141,7 +148,7 @@ def dump_json(self) -> str: """return json representation""" exposed_fmt_str = [] - for key in self.data.exposed: + for key, value in self.data.exposed.items(): _t_key = str(key).replace("%>", "").replace("<%", "").strip() _t_marker = str(WorkflowConfigNode.NODE) _to_append = {} @@ -149,7 +156,15 @@ def dump_json(self) -> str: if _t_marker in _t_key and len(_t_key) == len(_t_marker): _to_append = self._prepare_dump_data() else: - _to_append = Cast.try_dict(self.data.exposed[key]) + _value = [] + + for item in value: + if hasattr(item, "as_dict"): + _value.append(item.as_dict) + else: + _value.append(item) + + _to_append = Cast.try_dict(_value) exposed_fmt_str.append(_to_append) From 9ac925aab3ce78ec3b309849d14283c645899f1f Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 3 Oct 2024 12:50:58 +0600 Subject: [PATCH 143/245] feat: convert validation doc to v2 --- chk/modules/validate/__init__.py | 15 +++++++++------ chk/modules/workflow/__init__.py | 6 +++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index d590c91e..31129c02 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -7,11 +7,15 @@ import dataclasses import enum import json +from collections import abc import cerberus -from collections import abc +from pydantic import BaseModel, Field -from chk.infrastructure.document import VersionedDocument, VersionedDocumentSupport +from chk.infrastructure.document import ( + VersionedDocumentSupport, + VersionedDocumentV2, +) from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get, formatter from chk.infrastructure.symbol_table import ( @@ -66,14 +70,13 @@ class ValidationConfigNode(enum.StrEnum): } -@dataclasses.dataclass(slots=True) -class ValidationDocument(VersionedDocument): +class ValidationDocument(VersionedDocumentV2, BaseModel): """ Http document entity """ - data: dict = dataclasses.field(default_factory=dict) - asserts: list = dataclasses.field(default_factory=list) + data: dict = Field(default_factory=dict) + asserts: list = Field(default_factory=list) @staticmethod def from_file_context(ctx: FileContext) -> ValidationDocument: diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 909d4285..4ab77862 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -8,10 +8,10 @@ from collections import abc from collections.abc import Callable -from pydantic import ConfigDict, Field +from pydantic import BaseModel, ConfigDict, Field from chk.infrastructure.document import ( - VersionedDocumentV2 as VersionedDocument, + VersionedDocumentV2, ) from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get, formatter, slugify @@ -39,7 +39,7 @@ VERSION_SCOPE = ["workflow"] -class WorkflowDocument(VersionedDocument): +class WorkflowDocument(VersionedDocumentV2, BaseModel): """WorkflowDocument""" model_config = ConfigDict(extra="forbid") From 39802de2ed7dcb1206da6d6116a478753497211f Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 3 Oct 2024 12:58:20 +0600 Subject: [PATCH 144/245] feat: replace dataclass with basemodel --- chk/infrastructure/document.py | 5 ++++- chk/modules/validate/__init__.py | 9 +-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/chk/infrastructure/document.py b/chk/infrastructure/document.py index 37a5083b..2f592564 100644 --- a/chk/infrastructure/document.py +++ b/chk/infrastructure/document.py @@ -1,6 +1,7 @@ """ Base document and utility """ + import dataclasses import cerberus @@ -32,7 +33,9 @@ class VersionedDocumentSupport: """DocumentVersionSupport""" @staticmethod - def validate_with_schema(schema: dict, doc: VersionedDocument) -> bool: + def validate_with_schema( + schema: dict, doc: VersionedDocument | VersionedDocumentV2 + ) -> bool: """Validate a document with given schema Args: diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 31129c02..a962ced9 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -4,7 +4,6 @@ from __future__ import annotations -import dataclasses import enum import json from collections import abc @@ -101,12 +100,6 @@ def from_file_context(ctx: FileContext) -> ValidationDocument: data=_data, ) - @property - def as_dict(self) -> dict: - """Return a dict of the data""" - - return dataclasses.asdict(self) - class ValidationDocumentSupport: """Service class for ValidationDocument""" @@ -255,7 +248,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: validate_doc = ValidationDocument.from_file_context(file_ctx) DocumentVersionMaker.verify_if_allowed( - DocumentVersionMaker.from_dict(validate_doc.as_dict), VERSION_SCOPE + DocumentVersionMaker.from_dict(validate_doc.model_dump()), VERSION_SCOPE ) VersionedDocumentSupport.validate_with_schema( From 28bec14b189cb7012f19c67a6b49c2c78e1f0cad Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 3 Oct 2024 13:00:18 +0600 Subject: [PATCH 145/245] docs: add feature suggestion --- chk/modules/validate/assertion_services.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index 2ed62d83..90e5a732 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -65,7 +65,9 @@ @dataclasses.dataclass class AssertionEntry: - """AssertionEntry holds one assertion operation""" + """AssertionEntry holds one assertion operation + TODO: implement __iter__ for this class + """ assert_type: str actual: typing.Any @@ -123,6 +125,7 @@ def as_fmt_str(self) -> str: class AllTestRunResult(UserDict): """Result of a test run + TODO: implement __iter__ for this class keys: id, time_start, time_end, count_all, results, count_fail """ From 3de92aade5e41e5f27c7cc9cf5f729bec1e083c3 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 3 Oct 2024 16:41:26 +0600 Subject: [PATCH 146/245] feat: remove templating notation --- chk/infrastructure/symbol_table.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 25eb198c..f1054dfe 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -280,6 +280,10 @@ def get_exposed_replaced_data_v2( if expose_doc := ExposeManager.get_expose_doc(file_ctx.document): exposed_doc_t = copy.copy(expose_doc) + exposed_doc_t = [ + str(key).replace("%>", "").replace("<%", "").strip() + for key in exposed_doc_t + ] expose_val = ExposeManager.replace_values(expose_doc, store) return dict(zip(exposed_doc_t, expose_val)) From ba0fe6a2f165fd629f607ed569f7afcfd73b42fb Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 3 Oct 2024 16:42:07 +0600 Subject: [PATCH 147/245] feat: exposing dict based data in validation --- chk/modules/validate/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index a962ced9..430b56e6 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -274,7 +274,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: } ) - exposed_data = ExposeManager.get_exposed_replaced_data( + exposed_data = ExposeManager.get_exposed_replaced_data_v2( validate_doc, { **variable_doc.data, From f00619a7880a02926074b86b7642027879897328 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 3 Oct 2024 19:22:27 +0600 Subject: [PATCH 148/245] feat: convert dataclass to basemodel based doc --- chk/modules/fetch.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 8a343181..9e2ac2aa 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -4,7 +4,6 @@ from __future__ import annotations -import dataclasses import enum import json import pathlib @@ -16,7 +15,10 @@ from pydantic import BaseModel, Field from requests.auth import HTTPBasicAuth -from chk.infrastructure.document import VersionedDocument, VersionedDocumentSupport +from chk.infrastructure.document import ( + VersionedDocumentSupport, + VersionedDocumentV2, +) from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get, formatter from chk.infrastructure.symbol_table import ( @@ -319,13 +321,12 @@ def add_generic_args(request_data: dict, request_arg: dict) -> None: HttpRequestArgCompiler.add_body(request_data, request_arg) -@dataclasses.dataclass(slots=True) -class HttpDocument(VersionedDocument): +class HttpDocument(VersionedDocumentV2, BaseModel): """ Http document entity """ - request: dict = dataclasses.field(default_factory=dict) + request: dict = Field(default_factory=dict) @staticmethod def from_file_context(ctx: FileContext) -> HttpDocument: @@ -347,12 +348,6 @@ def from_file_context(ctx: FileContext) -> HttpDocument: request=request_dct, ) - @property - def as_dict(self) -> dict: - """Return a dict of the data""" - - return dataclasses.asdict(self) - class ApiResponseDict(UserDict): """Represents a API response with body in dict representation""" @@ -531,7 +526,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: http_doc = HttpDocument.from_file_context(file_ctx) DocumentVersionMaker.verify_if_allowed( - DocumentVersionMaker.from_dict(http_doc.as_dict), VERSION_SCOPE + DocumentVersionMaker.from_dict(http_doc.model_dump()), VERSION_SCOPE ) VersionedDocumentSupport.validate_with_schema( From bf2932207bdca691f6e810a81bc1ed8ef45c2fa0 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 3 Oct 2024 19:25:33 +0600 Subject: [PATCH 149/245] feat: use replace utils ver2 --- chk/modules/fetch.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 9e2ac2aa..52619e0b 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -546,7 +546,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: output_data = Variables({"_response": response.data}) - exposed_data = ExposeManager.get_exposed_replaced_data( + exposed_data = ExposeManager.get_exposed_replaced_data_v2( http_doc, {**variable_doc.data, **output_data.data}, ) @@ -564,8 +564,8 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: exposed=exposed_data, report={ "is_success": r_exception is None, - "request_method": file_ctx.document["request"]['method'], - "request_url": file_ctx.document["request"]['url'], + "request_method": file_ctx.document["request"]["method"], + "request_url": file_ctx.document["request"]["url"], }, ) From dc864cbe49fef79283152c6f704db75cc749ddb4 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 08:44:33 +0600 Subject: [PATCH 150/245] chore: package version update --- Pipfile.lock | 838 ++++++++++++++++++++++--------------------- requirements-dev.txt | 16 +- requirements.txt | 10 +- 3 files changed, 434 insertions(+), 430 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 7f43a670..814735ff 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -34,11 +34,11 @@ }, "certifi": { "hashes": [ - "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", - "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90" + "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9" ], "markers": "python_version >= '3.6'", - "version": "==2024.7.4" + "version": "==2024.8.30" }, "charset-normalizer": { "hashes": [ @@ -156,115 +156,115 @@ }, "idna": { "hashes": [ - "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", - "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603" + "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" ], "markers": "python_version >= '3.6'", - "version": "==3.8" + "version": "==3.10" }, "pydantic": { "hashes": [ - "sha256:6f62c13d067b0755ad1c21a34bdd06c0c12625a22b0fc09c6b149816604f7c2a", - "sha256:73ee9fddd406dc318b885c7a2eab8a6472b68b8fb5ba8150949fc3db939f23c8" + "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", + "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==2.8.2" + "version": "==2.9.2" }, "pydantic-core": { "hashes": [ - "sha256:035ede2e16da7281041f0e626459bcae33ed998cca6a0a007a5ebb73414ac72d", - "sha256:04024d270cf63f586ad41fff13fde4311c4fc13ea74676962c876d9577bcc78f", - "sha256:0827505a5c87e8aa285dc31e9ec7f4a17c81a813d45f70b1d9164e03a813a686", - "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482", - "sha256:10d4204d8ca33146e761c79f83cc861df20e7ae9f6487ca290a97702daf56006", - "sha256:11b71d67b4725e7e2a9f6e9c0ac1239bbc0c48cce3dc59f98635efc57d6dac83", - "sha256:150906b40ff188a3260cbee25380e7494ee85048584998c1e66df0c7a11c17a6", - "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88", - "sha256:177f55a886d74f1808763976ac4efd29b7ed15c69f4d838bbd74d9d09cf6fa86", - "sha256:19c0fa39fa154e7e0b7f82f88ef85faa2a4c23cc65aae2f5aea625e3c13c735a", - "sha256:1eedfeb6089ed3fad42e81a67755846ad4dcc14d73698c120a82e4ccf0f1f9f6", - "sha256:225b67a1f6d602de0ce7f6c1c3ae89a4aa25d3de9be857999e9124f15dab486a", - "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6", - "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6", - "sha256:25e9185e2d06c16ee438ed39bf62935ec436474a6ac4f9358524220f1b236e43", - "sha256:26ab812fa0c845df815e506be30337e2df27e88399b985d0bb4e3ecfe72df31c", - "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4", - "sha256:26dc97754b57d2fd00ac2b24dfa341abffc380b823211994c4efac7f13b9e90e", - "sha256:270755f15174fb983890c49881e93f8f1b80f0b5e3a3cc1394a255706cabd203", - "sha256:2aafc5a503855ea5885559eae883978c9b6d8c8993d67766ee73d82e841300dd", - "sha256:2d036c7187b9422ae5b262badb87a20a49eb6c5238b2004e96d4da1231badef1", - "sha256:33499e85e739a4b60c9dac710c20a08dc73cb3240c9a0e22325e671b27b70d24", - "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc", - "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc", - "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3", - "sha256:3c5ebac750d9d5f2706654c638c041635c385596caf68f81342011ddfa1e5598", - "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98", - "sha256:407653af5617f0757261ae249d3fba09504d7a71ab36ac057c938572d1bc9331", - "sha256:40a783fb7ee353c50bd3853e626f15677ea527ae556429453685ae32280c19c2", - "sha256:41e81317dd6a0127cabce83c0c9c3fbecceae981c8391e6f1dec88a77c8a569a", - "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6", - "sha256:469f29f9093c9d834432034d33f5fe45699e664f12a13bf38c04967ce233d688", - "sha256:4745f4ac52cc6686390c40eaa01d48b18997cb130833154801a442323cc78f91", - "sha256:4868f6bd7c9d98904b748a2653031fc9c2f85b6237009d475b1008bfaeb0a5aa", - "sha256:4aa223cd1e36b642092c326d694d8bf59b71ddddc94cdb752bbbb1c5c91d833b", - "sha256:4dd484681c15e6b9a977c785a345d3e378d72678fd5f1f3c0509608da24f2ac0", - "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840", - "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c", - "sha256:516d9227919612425c8ef1c9b869bbbee249bc91912c8aaffb66116c0b447ebd", - "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3", - "sha256:595ba5be69b35777474fa07f80fc260ea71255656191adb22a8c53aba4479231", - "sha256:5b5ff4911aea936a47d9376fd3ab17e970cc543d1b68921886e7f64bd28308d1", - "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953", - "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250", - "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a", - "sha256:635fee4e041ab9c479e31edda27fcf966ea9614fff1317e280d99eb3e5ab6fe2", - "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20", - "sha256:6b507132dcfc0dea440cce23ee2182c0ce7aba7054576efc65634f080dbe9434", - "sha256:6b9d9bb600328a1ce523ab4f454859e9d439150abb0906c5a1983c146580ebab", - "sha256:70c8daf4faca8da5a6d655f9af86faf6ec2e1768f4b8b9d0226c02f3d6209703", - "sha256:77bf3ac639c1ff567ae3b47f8d4cc3dc20f9966a2a6dd2311dcc055d3d04fb8a", - "sha256:784c1214cb6dd1e3b15dd8b91b9a53852aed16671cc3fbe4786f4f1db07089e2", - "sha256:7eb6a0587eded33aeefea9f916899d42b1799b7b14b8f8ff2753c0ac1741edac", - "sha256:7ed1b0132f24beeec5a78b67d9388656d03e6a7c837394f99257e2d55b461611", - "sha256:8ad4aeb3e9a97286573c03df758fc7627aecdd02f1da04516a86dc159bf70121", - "sha256:964faa8a861d2664f0c7ab0c181af0bea66098b1919439815ca8803ef136fc4e", - "sha256:9dc1b507c12eb0481d071f3c1808f0529ad41dc415d0ca11f7ebfc666e66a18b", - "sha256:9ebfef07dbe1d93efb94b4700f2d278494e9162565a54f124c404a5656d7ff09", - "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906", - "sha256:a4f55095ad087474999ee28d3398bae183a66be4823f753cd7d67dd0153427c9", - "sha256:a6d511cc297ff0883bc3708b465ff82d7560193169a8b93260f74ecb0a5e08a7", - "sha256:a8ad4c766d3f33ba8fd692f9aa297c9058970530a32c728a2c4bfd2616d3358b", - "sha256:aa2f457b4af386254372dfa78a2eda2563680d982422641a85f271c859df1987", - "sha256:b03f7941783b4c4a26051846dea594628b38f6940a2fdc0df00b221aed39314c", - "sha256:b0dae11d8f5ded51699c74d9548dcc5938e0804cc8298ec0aa0da95c21fff57b", - "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e", - "sha256:bc633a9fe1eb87e250b5c57d389cf28998e4292336926b0b6cdaee353f89a237", - "sha256:bebb4d6715c814597f85297c332297c6ce81e29436125ca59d1159b07f423eb1", - "sha256:c336a6d235522a62fef872c6295a42ecb0c4e1d0f1a3e500fe949415761b8a19", - "sha256:c6514f963b023aeee506678a1cf821fe31159b925c4b76fe2afa94cc70b3222b", - "sha256:c693e916709c2465b02ca0ad7b387c4f8423d1db7b4649c551f27a529181c5ad", - "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0", - "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94", - "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312", - "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f", - "sha256:d2fe69c5434391727efa54b47a1e7986bb0186e72a41b203df8f5b0a19a4f669", - "sha256:d3f3ed29cd9f978c604708511a1f9c2fdcb6c38b9aae36a51905b8811ee5cbf1", - "sha256:d573faf8eb7e6b1cbbcb4f5b247c60ca8be39fe2c674495df0eb4318303137fe", - "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99", - "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a", - "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a", - "sha256:e97fdf088d4b31ff4ba35db26d9cc472ac7ef4a2ff2badeabf8d727b3377fc52", - "sha256:e9fa4c9bf273ca41f940bceb86922a7667cd5bf90e95dbb157cbb8441008482c", - "sha256:eaad4ff2de1c3823fddf82f41121bdf453d922e9a238642b1dedb33c4e4f98ad", - "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1", - "sha256:f6d6cff3538391e8486a431569b77921adfcdef14eb18fbf19b7c0a5294d4e6a", - "sha256:f9aa05d09ecf4c75157197f27cdc9cfaeb7c5f15021c6373932bf3e124af029f", - "sha256:fa2fddcb7107e0d1808086ca306dcade7df60a13a6c347a7acf1ec139aa6789a", - "sha256:faa6b09ee09433b87992fb5a2859efd1c264ddc37280d2dd5db502126d0e7f27" + "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36", + "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05", + "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071", + "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327", + "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c", + "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36", + "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29", + "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744", + "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d", + "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec", + "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e", + "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e", + "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577", + "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232", + "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863", + "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6", + "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368", + "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480", + "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2", + "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2", + "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6", + "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769", + "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d", + "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2", + "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84", + "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166", + "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271", + "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5", + "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb", + "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13", + "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323", + "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556", + "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665", + "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef", + "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb", + "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119", + "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126", + "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510", + "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b", + "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87", + "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f", + "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc", + "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8", + "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21", + "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f", + "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6", + "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658", + "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b", + "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3", + "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb", + "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59", + "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24", + "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9", + "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3", + "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd", + "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753", + "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55", + "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad", + "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a", + "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605", + "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e", + "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b", + "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433", + "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8", + "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07", + "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728", + "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0", + "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327", + "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555", + "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64", + "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6", + "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea", + "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b", + "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df", + "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e", + "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd", + "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068", + "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3", + "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040", + "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12", + "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916", + "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f", + "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f", + "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801", + "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231", + "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5", + "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8", + "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee", + "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607" ], "markers": "python_version >= '3.8'", - "version": "==2.20.1" + "version": "==2.23.4" }, "python-dotenv": { "hashes": [ @@ -354,11 +354,11 @@ }, "urllib3": { "hashes": [ - "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", - "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168" + "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9" ], "markers": "python_version >= '3.8'", - "version": "==2.2.2" + "version": "==2.2.3" }, "xmltodict": { "hashes": [ @@ -373,107 +373,107 @@ "develop": { "aiohappyeyeballs": { "hashes": [ - "sha256:55a1714f084e63d49639800f95716da97a1f173d46a16dfcfda0016abb93b6b2", - "sha256:7ce92076e249169a13c2f49320d1967425eaf1f407522d707d59cac7628d62bd" + "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586", + "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572" ], "markers": "python_version >= '3.8'", - "version": "==2.4.0" + "version": "==2.4.3" }, "aiohttp": { "hashes": [ - "sha256:02594361128f780eecc2a29939d9dfc870e17b45178a867bf61a11b2a4367277", - "sha256:03f2645adbe17f274444953bdea69f8327e9d278d961d85657cb0d06864814c1", - "sha256:074d1bff0163e107e97bd48cad9f928fa5a3eb4b9d33366137ffce08a63e37fe", - "sha256:0912b8a8fadeb32ff67a3ed44249448c20148397c1ed905d5dac185b4ca547bb", - "sha256:0d277cfb304118079e7044aad0b76685d30ecb86f83a0711fc5fb257ffe832ca", - "sha256:0d93400c18596b7dc4794d48a63fb361b01a0d8eb39f28800dc900c8fbdaca91", - "sha256:123dd5b16b75b2962d0fff566effb7a065e33cd4538c1692fb31c3bda2bfb972", - "sha256:17e997105bd1a260850272bfb50e2a328e029c941c2708170d9d978d5a30ad9a", - "sha256:18a01eba2574fb9edd5f6e5fb25f66e6ce061da5dab5db75e13fe1558142e0a3", - "sha256:1923a5c44061bffd5eebeef58cecf68096e35003907d8201a4d0d6f6e387ccaa", - "sha256:1942244f00baaacaa8155eca94dbd9e8cc7017deb69b75ef67c78e89fdad3c77", - "sha256:1b2c16a919d936ca87a3c5f0e43af12a89a3ce7ccbce59a2d6784caba945b68b", - "sha256:1c19de68896747a2aa6257ae4cf6ef59d73917a36a35ee9d0a6f48cff0f94db8", - "sha256:1e72589da4c90337837fdfe2026ae1952c0f4a6e793adbbfbdd40efed7c63599", - "sha256:22c0a23a3b3138a6bf76fc553789cb1a703836da86b0f306b6f0dc1617398abc", - "sha256:2c634a3207a5445be65536d38c13791904fda0748b9eabf908d3fe86a52941cf", - "sha256:2d21ac12dc943c68135ff858c3a989f2194a709e6e10b4c8977d7fcd67dfd511", - "sha256:2f1f1c75c395991ce9c94d3e4aa96e5c59c8356a15b1c9231e783865e2772699", - "sha256:305be5ff2081fa1d283a76113b8df7a14c10d75602a38d9f012935df20731487", - "sha256:33e6bc4bab477c772a541f76cd91e11ccb6d2efa2b8d7d7883591dfb523e5987", - "sha256:349ef8a73a7c5665cca65c88ab24abe75447e28aa3bc4c93ea5093474dfdf0ff", - "sha256:380f926b51b92d02a34119d072f178d80bbda334d1a7e10fa22d467a66e494db", - "sha256:38172a70005252b6893088c0f5e8a47d173df7cc2b2bd88650957eb84fcf5022", - "sha256:391cc3a9c1527e424c6865e087897e766a917f15dddb360174a70467572ac6ce", - "sha256:3a1c32a19ee6bbde02f1cb189e13a71b321256cc1d431196a9f824050b160d5a", - "sha256:4120d7fefa1e2d8fb6f650b11489710091788de554e2b6f8347c7a20ceb003f5", - "sha256:424ae21498790e12eb759040bbb504e5e280cab64693d14775c54269fd1d2bb7", - "sha256:44b324a6b8376a23e6ba25d368726ee3bc281e6ab306db80b5819999c737d820", - "sha256:4790f0e15f00058f7599dab2b206d3049d7ac464dc2e5eae0e93fa18aee9e7bf", - "sha256:4aff049b5e629ef9b3e9e617fa6e2dfeda1bf87e01bcfecaf3949af9e210105e", - "sha256:4b38b1570242fbab8d86a84128fb5b5234a2f70c2e32f3070143a6d94bc854cf", - "sha256:4d46c7b4173415d8e583045fbc4daa48b40e31b19ce595b8d92cf639396c15d5", - "sha256:4f1c9866ccf48a6df2b06823e6ae80573529f2af3a0992ec4fe75b1a510df8a6", - "sha256:4f7acae3cf1a2a2361ec4c8e787eaaa86a94171d2417aae53c0cca6ca3118ff6", - "sha256:54d9ddea424cd19d3ff6128601a4a4d23d54a421f9b4c0fff740505813739a91", - "sha256:58718e181c56a3c02d25b09d4115eb02aafe1a732ce5714ab70326d9776457c3", - "sha256:5ede29d91a40ba22ac1b922ef510aab871652f6c88ef60b9dcdf773c6d32ad7a", - "sha256:61645818edd40cc6f455b851277a21bf420ce347baa0b86eaa41d51ef58ba23d", - "sha256:66bf9234e08fe561dccd62083bf67400bdbf1c67ba9efdc3dac03650e97c6088", - "sha256:673f988370f5954df96cc31fd99c7312a3af0a97f09e407399f61583f30da9bc", - "sha256:676f94c5480d8eefd97c0c7e3953315e4d8c2b71f3b49539beb2aa676c58272f", - "sha256:6c225286f2b13bab5987425558baa5cbdb2bc925b2998038fa028245ef421e75", - "sha256:7384d0b87d4635ec38db9263e6a3f1eb609e2e06087f0aa7f63b76833737b471", - "sha256:7e2fe37ac654032db1f3499fe56e77190282534810e2a8e833141a021faaab0e", - "sha256:7f2bfc0032a00405d4af2ba27f3c429e851d04fad1e5ceee4080a1c570476697", - "sha256:7f6b639c36734eaa80a6c152a238242bedcee9b953f23bb887e9102976343092", - "sha256:814375093edae5f1cb31e3407997cf3eacefb9010f96df10d64829362ae2df69", - "sha256:8224f98be68a84b19f48e0bdc14224b5a71339aff3a27df69989fa47d01296f3", - "sha256:898715cf566ec2869d5cb4d5fb4be408964704c46c96b4be267442d265390f32", - "sha256:8989f46f3d7ef79585e98fa991e6ded55d2f48ae56d2c9fa5e491a6e4effb589", - "sha256:8ba01ebc6175e1e6b7275c907a3a36be48a2d487549b656aa90c8a910d9f3178", - "sha256:8c5c6fa16412b35999320f5c9690c0f554392dc222c04e559217e0f9ae244b92", - "sha256:8c6a4e5e40156d72a40241a25cc226051c0a8d816610097a8e8f517aeacd59a2", - "sha256:8eaf44ccbc4e35762683078b72bf293f476561d8b68ec8a64f98cf32811c323e", - "sha256:8fb4fc029e135859f533025bc82047334e24b0d489e75513144f25408ecaf058", - "sha256:9093a81e18c45227eebe4c16124ebf3e0d893830c6aca7cc310bfca8fe59d857", - "sha256:94c4381ffba9cc508b37d2e536b418d5ea9cfdc2848b9a7fea6aebad4ec6aac1", - "sha256:94fac7c6e77ccb1ca91e9eb4cb0ac0270b9fb9b289738654120ba8cebb1189c6", - "sha256:95c4dc6f61d610bc0ee1edc6f29d993f10febfe5b76bb470b486d90bbece6b22", - "sha256:975218eee0e6d24eb336d0328c768ebc5d617609affaca5dbbd6dd1984f16ed0", - "sha256:ad146dae5977c4dd435eb31373b3fe9b0b1bf26858c6fc452bf6af394067e10b", - "sha256:afe16a84498441d05e9189a15900640a2d2b5e76cf4efe8cbb088ab4f112ee57", - "sha256:b1c43eb1ab7cbf411b8e387dc169acb31f0ca0d8c09ba63f9eac67829585b44f", - "sha256:b90078989ef3fc45cf9221d3859acd1108af7560c52397ff4ace8ad7052a132e", - "sha256:b98e698dc34966e5976e10bbca6d26d6724e6bdea853c7c10162a3235aba6e16", - "sha256:ba5a8b74c2a8af7d862399cdedce1533642fa727def0b8c3e3e02fcb52dca1b1", - "sha256:c31ad0c0c507894e3eaa843415841995bf8de4d6b2d24c6e33099f4bc9fc0d4f", - "sha256:c3b9162bab7e42f21243effc822652dc5bb5e8ff42a4eb62fe7782bcbcdfacf6", - "sha256:c58c6837a2c2a7cf3133983e64173aec11f9c2cd8e87ec2fdc16ce727bcf1a04", - "sha256:c83f7a107abb89a227d6c454c613e7606c12a42b9a4ca9c5d7dad25d47c776ae", - "sha256:cde98f323d6bf161041e7627a5fd763f9fd829bcfcd089804a5fdce7bb6e1b7d", - "sha256:ce91db90dbf37bb6fa0997f26574107e1b9d5ff939315247b7e615baa8ec313b", - "sha256:d00f3c5e0d764a5c9aa5a62d99728c56d455310bcc288a79cab10157b3af426f", - "sha256:d17920f18e6ee090bdd3d0bfffd769d9f2cb4c8ffde3eb203777a3895c128862", - "sha256:d55f011da0a843c3d3df2c2cf4e537b8070a419f891c930245f05d329c4b0689", - "sha256:d742c36ed44f2798c8d3f4bc511f479b9ceef2b93f348671184139e7d708042c", - "sha256:d9a487ef090aea982d748b1b0d74fe7c3950b109df967630a20584f9a99c0683", - "sha256:d9ef084e3dc690ad50137cc05831c52b6ca428096e6deb3c43e95827f531d5ef", - "sha256:da452c2c322e9ce0cfef392e469a26d63d42860f829026a63374fde6b5c5876f", - "sha256:dc4826823121783dccc0871e3f405417ac116055bf184ac04c36f98b75aacd12", - "sha256:de7a5299827253023c55ea549444e058c0eb496931fa05d693b95140a947cb73", - "sha256:e04a1f2a65ad2f93aa20f9ff9f1b672bf912413e5547f60749fa2ef8a644e061", - "sha256:e1ca1ef5ba129718a8fc827b0867f6aa4e893c56eb00003b7367f8a733a9b072", - "sha256:ee40b40aa753d844162dcc80d0fe256b87cba48ca0054f64e68000453caead11", - "sha256:f071854b47d39591ce9a17981c46790acb30518e2f83dfca8db2dfa091178691", - "sha256:f29930bc2921cef955ba39a3ff87d2c4398a0394ae217f41cb02d5c26c8b1b77", - "sha256:f489a2c9e6455d87eabf907ac0b7d230a9786be43fbe884ad184ddf9e9c1e385", - "sha256:f5bf3ead3cb66ab990ee2561373b009db5bc0e857549b6c9ba84b20bc462e172", - "sha256:f6f18898ace4bcd2d41a122916475344a87f1dfdec626ecde9ee802a711bc569", - "sha256:f8112fb501b1e0567a1251a2fd0747baae60a4ab325a871e975b7bb67e59221f", - "sha256:fd31f176429cecbc1ba499d4aba31aaccfea488f418d60376b911269d3b883c5" + "sha256:10c7932337285a6bfa3a5fe1fd4da90b66ebfd9d0cbd1544402e1202eb9a8c3e", + "sha256:177126e971782769b34933e94fddd1089cef0fe6b82fee8a885e539f5b0f0c6a", + "sha256:1ce46dfb49cfbf9e92818be4b761d4042230b1f0e05ffec0aad15b3eb162b905", + "sha256:1e7a6af57091056a79a35104d6ec29d98ec7f1fb7270ad9c6fff871b678d1ff8", + "sha256:21a72f4a9c69a8567a0aca12042f12bba25d3139fd5dd8eeb9931f4d9e8599cd", + "sha256:21c1925541ca84f7b5e0df361c0a813a7d6a56d3b0030ebd4b220b8d232015f9", + "sha256:21f8225f7dc187018e8433c9326be01477fb2810721e048b33ac49091b19fb4a", + "sha256:22cdeb684d8552490dd2697a5138c4ecb46f844892df437aaf94f7eea99af879", + "sha256:270e653b5a4b557476a1ed40e6b6ce82f331aab669620d7c95c658ef976c9c5e", + "sha256:2df786c96c57cd6b87156ba4c5f166af7b88f3fc05f9d592252fdc83d8615a3c", + "sha256:32710d6b3b6c09c60c794d84ca887a3a2890131c0b02b3cefdcc6709a2260a7c", + "sha256:33a68011a38020ed4ff41ae0dbf4a96a202562ecf2024bdd8f65385f1d07f6ef", + "sha256:365783e1b7c40b59ed4ce2b5a7491bae48f41cd2c30d52647a5b1ee8604c68ad", + "sha256:3a95d2686bc4794d66bd8de654e41b5339fab542b2bca9238aa63ed5f4f2ce82", + "sha256:3b2036479b6b94afaaca7d07b8a68dc0e67b0caf5f6293bb6a5a1825f5923000", + "sha256:3c7f270f4ca92760f98a42c45a58674fff488e23b144ec80b1cc6fa2effed377", + "sha256:3f6d47e392c27206701565c8df4cac6ebed28fdf6dcaea5b1eea7a4631d8e6db", + "sha256:40d2d719c3c36a7a65ed26400e2b45b2d9ed7edf498f4df38b2ae130f25a0d01", + "sha256:4618f0d2bf523043866a9ff8458900d8eb0a6d4018f251dae98e5f1fb699f3a8", + "sha256:471a8c47344b9cc309558b3fcc469bd2c12b49322b4b31eb386c4a2b2d44e44a", + "sha256:4954e6b06dd0be97e1a5751fc606be1f9edbdc553c5d9b57d72406a8fbd17f9d", + "sha256:497a7d20caea8855c5429db3cdb829385467217d7feb86952a6107e033e031b9", + "sha256:4b91f4f62ad39a8a42d511d66269b46cb2fb7dea9564c21ab6c56a642d28bff5", + "sha256:4dbf252ac19860e0ab56cd480d2805498f47c5a2d04f5995d8d8a6effd04b48c", + "sha256:4e10b04542d27e21538e670156e88766543692a0a883f243ba8fad9ddea82e53", + "sha256:5284997e3d88d0dfb874c43e51ae8f4a6f4ca5b90dcf22995035187253d430db", + "sha256:57359785f27394a8bcab0da6dcd46706d087dfebf59a8d0ad2e64a4bc2f6f94f", + "sha256:597128cb7bc5f068181b49a732961f46cb89f85686206289d6ccb5e27cb5fbe2", + "sha256:5aa1a073514cf59c81ad49a4ed9b5d72b2433638cd53160fd2f3a9cfa94718db", + "sha256:680dbcff5adc7f696ccf8bf671d38366a1f620b5616a1d333d0cb33956065395", + "sha256:6984dda9d79064361ab58d03f6c1e793ea845c6cfa89ffe1a7b9bb400dfd56bd", + "sha256:69de056022e7abf69cb9fec795515973cc3eeaff51e3ea8d72a77aa933a91c52", + "sha256:6c7efa6616a95e3bd73b8a69691012d2ef1f95f9ea0189e42f338fae080c2fc6", + "sha256:6d1ad868624f6cea77341ef2877ad4e71f7116834a6cd7ec36ec5c32f94ee6ae", + "sha256:713dff3f87ceec3bde4f3f484861464e722cf7533f9fa6b824ec82bb5a9010a7", + "sha256:71462f8eeca477cbc0c9700a9464e3f75f59068aed5e9d4a521a103692da72dc", + "sha256:7c38cfd355fd86c39b2d54651bd6ed7d63d4fe3b5553f364bae3306e2445f847", + "sha256:8296edd99d0dd9d0eb8b9e25b3b3506eef55c1854e9cc230f0b3f885f680410b", + "sha256:85431c9131a9a0f65260dc7a65c800ca5eae78c4c9931618f18c8e0933a0e0c1", + "sha256:85e4d7bd05d18e4b348441e7584c681eff646e3bf38f68b2626807f3add21aa2", + "sha256:8885ca09d3a9317219c0831276bfe26984b17b2c37b7bf70dd478d17092a4772", + "sha256:8960fabc20bfe4fafb941067cda8e23c8c17c98c121aa31c7bf0cdab11b07842", + "sha256:9443d9ebc5167ce1fbb552faf2d666fb22ef5716a8750be67efd140a7733738c", + "sha256:9721554bfa9e15f6e462da304374c2f1baede3cb06008c36c47fa37ea32f1dc4", + "sha256:98a4eb60e27033dee9593814ca320ee8c199489fbc6b2699d0f710584db7feb7", + "sha256:98fae99d5c2146f254b7806001498e6f9ffb0e330de55a35e72feb7cb2fa399b", + "sha256:9a281cba03bdaa341c70b7551b2256a88d45eead149f48b75a96d41128c240b3", + "sha256:a087c84b4992160ffef7afd98ef24177c8bd4ad61c53607145a8377457385100", + "sha256:a1ba7bc139592339ddeb62c06486d0fa0f4ca61216e14137a40d626c81faf10c", + "sha256:a3081246bab4d419697ee45e555cef5cd1def7ac193dff6f50be761d2e44f194", + "sha256:a72f89aea712c619b2ca32c6f4335c77125ede27530ad9705f4f349357833695", + "sha256:a78ba86d5a08207d1d1ad10b97aed6ea48b374b3f6831d02d0b06545ac0f181e", + "sha256:a961ee6f2cdd1a2be4735333ab284691180d40bad48f97bb598841bfcbfb94ec", + "sha256:ab1546fc8e00676febc81c548a876c7bde32f881b8334b77f84719ab2c7d28dc", + "sha256:ab2d6523575fc98896c80f49ac99e849c0b0e69cc80bf864eed6af2ae728a52b", + "sha256:aff048793d05e1ce05b62e49dccf81fe52719a13f4861530706619506224992b", + "sha256:b1a012677b8e0a39e181e218de47d6741c5922202e3b0b65e412e2ce47c39337", + "sha256:b667e2a03407d79a76c618dc30cedebd48f082d85880d0c9c4ec2faa3e10f43e", + "sha256:b91557ee0893da52794b25660d4f57bb519bcad8b7df301acd3898f7197c5d81", + "sha256:badb51d851358cd7535b647bb67af4854b64f3c85f0d089c737f75504d5910ec", + "sha256:c36074b26f3263879ba8e4dbd33db2b79874a3392f403a70b772701363148b9f", + "sha256:c4916070e12ae140110aa598031876c1bf8676a36a750716ea0aa5bd694aa2e7", + "sha256:c6769d71bfb1ed60321363a9bc05e94dcf05e38295ef41d46ac08919e5b00d19", + "sha256:c887019dbcb4af58a091a45ccf376fffe800b5531b45c1efccda4bedf87747ea", + "sha256:cd9716ef0224fe0d0336997eb242f40619f9f8c5c57e66b525a1ebf9f1d8cebe", + "sha256:ceacea31f8a55cdba02bc72c93eb2e1b77160e91f8abd605969c168502fd71eb", + "sha256:d088ca05381fd409793571d8e34eca06daf41c8c50a05aeed358d2d340c7af81", + "sha256:d3a79200a9d5e621c4623081ddb25380b713c8cf5233cd11c1aabad990bb9381", + "sha256:d82404a0e7b10e0d7f022cf44031b78af8a4f99bd01561ac68f7c24772fed021", + "sha256:d95ae4420669c871667aad92ba8cce6251d61d79c1a38504621094143f94a8b4", + "sha256:da57af0c54a302b7c655fa1ccd5b1817a53739afa39924ef1816e7b7c8a07ccb", + "sha256:ddb9b9764cfb4459acf01c02d2a59d3e5066b06a846a364fd1749aa168efa2be", + "sha256:de23085cf90911600ace512e909114385026b16324fa203cc74c81f21fd3276a", + "sha256:e1f0f7b27171b2956a27bd8f899751d0866ddabdd05cbddf3520f945130a908c", + "sha256:e32148b4a745e70a255a1d44b5664de1f2e24fcefb98a75b60c83b9e260ddb5b", + "sha256:e45fdfcb2d5bcad83373e4808825b7512953146d147488114575780640665027", + "sha256:e56bb7e31c4bc79956b866163170bc89fd619e0581ce813330d4ea46921a4881", + "sha256:e860985f30f3a015979e63e7ba1a391526cdac1b22b7b332579df7867848e255", + "sha256:ee3587506898d4a404b33bd19689286ccf226c3d44d7a73670c8498cd688e42c", + "sha256:ee97c4e54f457c366e1f76fbbf3e8effee9de57dae671084a161c00f481106ce", + "sha256:ef9b484604af05ca745b6108ca1aaa22ae1919037ae4f93aaf9a37ba42e0b835", + "sha256:f21e8f2abed9a44afc3d15bba22e0dfc71e5fa859bea916e42354c16102b036f", + "sha256:f23a6c1d09de5de89a33c9e9b229106cb70dcfdd55e81a3a3580eaadaa32bc92", + "sha256:f5d5d5401744dda50b943d8764508d0e60cc2d3305ac1e6420935861a9d544bc", + "sha256:f78e2a78432c537ae876a93013b7bc0027ba5b93ad7b3463624c4b6906489332", + "sha256:f8179855a4e4f3b931cb1764ec87673d3fbdcca2af496c8d30567d7b034a13db", + "sha256:fc0e7f91705445d79beafba9bb3057dd50830e40fe5417017a76a214af54e122", + "sha256:fe285a697c851734285369614443451462ce78aac2b77db23567507484b1dc6f", + "sha256:fe3d79d6af839ffa46fdc5d2cf34295390894471e9875050eafa584cb781508d", + "sha256:fecd55e7418fabd297fd836e65cbd6371aa4035a264998a091bbf13f94d9c44d", + "sha256:ffef3d763e4c8fc97e740da5b4d0f080b78630a3914f4e772a122bbfa608c1db" ], - "version": "==3.10.5" + "version": "==3.10.8" }, "aiosignal": { "hashes": [ @@ -485,11 +485,11 @@ }, "astroid": { "hashes": [ - "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a", - "sha256:413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25" + "sha256:5eba185467253501b62a9f113c263524b4f5d55e1b30456370eed4cdbd6438fd", + "sha256:e73d0b62dd680a7c07cb2cd0ce3c22570b044dd01bd994bc3a2dd16c6cbba162" ], - "markers": "python_full_version >= '3.8.0'", - "version": "==3.2.4" + "markers": "python_full_version >= '3.9.0'", + "version": "==3.3.4" }, "asttokens": { "hashes": [ @@ -539,11 +539,11 @@ }, "certifi": { "hashes": [ - "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", - "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90" + "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9" ], "markers": "python_version >= '3.6'", - "version": "==2024.7.4" + "version": "==2024.8.30" }, "charset-normalizer": { "hashes": [ @@ -750,11 +750,11 @@ }, "dill": { "hashes": [ - "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca", - "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7" + "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a", + "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c" ], "markers": "python_version >= '3.11'", - "version": "==0.3.8" + "version": "==0.3.9" }, "docopt": { "hashes": [ @@ -764,11 +764,11 @@ }, "executing": { "hashes": [ - "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147", - "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc" + "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf", + "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab" ], - "markers": "python_version >= '3.5'", - "version": "==2.0.1" + "markers": "python_version >= '3.8'", + "version": "==2.1.0" }, "flake8": { "hashes": [ @@ -872,11 +872,11 @@ }, "idna": { "hashes": [ - "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", - "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603" + "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" ], "markers": "python_version >= '3.6'", - "version": "==3.8" + "version": "==3.10" }, "iniconfig": { "hashes": [ @@ -904,99 +904,101 @@ }, "multidict": { "hashes": [ - "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556", - "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c", - "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29", - "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b", - "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8", - "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7", - "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd", - "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40", - "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6", - "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3", - "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c", - "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9", - "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5", - "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae", - "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442", - "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9", - "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc", - "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c", - "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea", - "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5", - "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50", - "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182", - "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453", - "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e", - "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600", - "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733", - "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda", - "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241", - "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461", - "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e", - "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e", - "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b", - "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e", - "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7", - "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386", - "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd", - "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9", - "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf", - "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee", - "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5", - "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a", - "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271", - "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54", - "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4", - "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496", - "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb", - "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319", - "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3", - "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f", - "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527", - "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed", - "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604", - "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef", - "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8", - "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5", - "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5", - "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626", - "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c", - "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d", - "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c", - "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc", - "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc", - "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b", - "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38", - "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450", - "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1", - "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f", - "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3", - "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755", - "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226", - "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a", - "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046", - "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf", - "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479", - "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e", - "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1", - "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a", - "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83", - "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929", - "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93", - "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a", - "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c", - "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44", - "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89", - "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba", - "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e", - "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da", - "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24", - "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423", - "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef" + "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", + "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056", + "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", + "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3", + "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", + "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", + "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748", + "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", + "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f", + "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", + "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6", + "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada", + "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", + "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2", + "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d", + "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", + "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef", + "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c", + "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", + "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60", + "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6", + "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4", + "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478", + "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81", + "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7", + "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56", + "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", + "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", + "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30", + "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", + "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", + "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0", + "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", + "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c", + "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6", + "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", + "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", + "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2", + "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", + "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2", + "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa", + "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", + "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3", + "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", + "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657", + "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581", + "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492", + "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43", + "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", + "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", + "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", + "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057", + "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc", + "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", + "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255", + "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1", + "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972", + "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53", + "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1", + "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", + "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a", + "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160", + "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c", + "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd", + "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", + "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5", + "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b", + "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa", + "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", + "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44", + "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4", + "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", + "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", + "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28", + "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d", + "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a", + "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", + "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008", + "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429", + "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", + "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", + "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", + "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392", + "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167", + "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c", + "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774", + "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", + "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76", + "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875", + "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd", + "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28", + "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db" ], - "markers": "python_version >= '3.7'", - "version": "==6.0.5" + "markers": "python_version >= '3.8'", + "version": "==6.1.0" }, "mypy": { "hashes": [ @@ -1058,11 +1060,11 @@ }, "platformdirs": { "hashes": [ - "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", - "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3" + "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", + "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb" ], "markers": "python_version >= '3.8'", - "version": "==4.2.2" + "version": "==4.3.6" }, "pluggy": { "hashes": [ @@ -1098,21 +1100,21 @@ }, "pylint": { "hashes": [ - "sha256:03c8e3baa1d9fb995b12c1dbe00aa6c4bcef210c2a2634374aedeb22fb4a8f8f", - "sha256:a5d01678349454806cff6d886fb072294f56a58c4761278c97fb557d708e1eb3" + "sha256:2f846a466dd023513240bc140ad2dd73bfc080a5d85a710afdb728c420a5a2b9", + "sha256:9f3dcc87b1203e612b78d91a896407787e708b3f189b5fa0b307712d49ff0c6e" ], "index": "pypi", - "markers": "python_full_version >= '3.8.0'", - "version": "==3.2.6" + "markers": "python_full_version >= '3.9.0'", + "version": "==3.3.1" }, "pytest": { "hashes": [ - "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5", - "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce" + "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", + "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==8.3.2" + "version": "==8.3.3" }, "pytest-cov": { "hashes": [ @@ -1150,21 +1152,21 @@ }, "types-pyyaml": { "hashes": [ - "sha256:b8f76ddbd7f65440a8bda5526a9607e4c7a322dc2f8e1a8c405644f9a6f4b9af", - "sha256:deda34c5c655265fc517b546c902aa6eed2ef8d3e921e4765fe606fe2afe8d35" + "sha256:392b267f1c0fe6022952462bf5d6523f31e37f6cea49b14cee7ad634b6301570", + "sha256:d1405a86f9576682234ef83bcb4e6fff7c9305c8b1fbad5e0bcd4f7dbdc9c587" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==6.0.12.20240808" + "version": "==6.0.12.20240917" }, "types-requests": { "hashes": [ - "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358", - "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3" + "sha256:2850e178db3919d9bf809e434eef65ba49d0e7e33ac92d588f4a5e295fffd405", + "sha256:59c2f673eb55f32a99b2894faf6020e1a9f4a402ad0f192bfee0b64469054310" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==2.32.0.20240712" + "version": "==2.32.0.20240914" }, "typing-extensions": { "hashes": [ @@ -1176,107 +1178,109 @@ }, "urllib3": { "hashes": [ - "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", - "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168" + "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9" ], "markers": "python_version >= '3.8'", - "version": "==2.2.2" + "version": "==2.2.3" }, "yarl": { "hashes": [ - "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", - "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce", - "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559", - "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0", - "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81", - "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc", - "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4", - "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c", - "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130", - "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136", - "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e", - "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec", - "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7", - "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1", - "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455", - "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099", - "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129", - "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10", - "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142", - "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98", - "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa", - "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7", - "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525", - "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c", - "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9", - "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c", - "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8", - "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b", - "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf", - "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23", - "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd", - "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27", - "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f", - "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece", - "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434", - "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec", - "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff", - "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78", - "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d", - "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863", - "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53", - "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31", - "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15", - "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5", - "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b", - "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57", - "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3", - "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1", - "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f", - "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad", - "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c", - "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7", - "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2", - "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b", - "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2", - "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b", - "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9", - "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be", - "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e", - "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984", - "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4", - "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074", - "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2", - "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392", - "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91", - "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541", - "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf", - "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572", - "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66", - "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575", - "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14", - "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5", - "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1", - "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e", - "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551", - "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17", - "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead", - "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0", - "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe", - "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234", - "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0", - "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7", - "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34", - "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42", - "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385", - "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78", - "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be", - "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958", - "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749", - "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec" + "sha256:08d7148ff11cb8e886d86dadbfd2e466a76d5dd38c7ea8ebd9b0e07946e76e4b", + "sha256:098b870c18f1341786f290b4d699504e18f1cd050ed179af8123fd8232513424", + "sha256:11b3ca8b42a024513adce810385fcabdd682772411d95bbbda3b9ed1a4257644", + "sha256:1891d69a6ba16e89473909665cd355d783a8a31bc84720902c5911dbb6373465", + "sha256:1bbb418f46c7f7355084833051701b2301092e4611d9e392360c3ba2e3e69f88", + "sha256:1d0828e17fa701b557c6eaed5edbd9098eb62d8838344486248489ff233998b8", + "sha256:1d8e3ca29f643dd121f264a7c89f329f0fcb2e4461833f02de6e39fef80f89da", + "sha256:1fa56f34b2236f5192cb5fceba7bbb09620e5337e0b6dfe2ea0ddbd19dd5b154", + "sha256:216a6785f296169ed52cd7dcdc2612f82c20f8c9634bf7446327f50398732a51", + "sha256:22b739f99c7e4787922903f27a892744189482125cc7b95b747f04dd5c83aa9f", + "sha256:2430cf996113abe5aee387d39ee19529327205cda975d2b82c0e7e96e5fdabdc", + "sha256:269c201bbc01d2cbba5b86997a1e0f73ba5e2f471cfa6e226bcaa7fd664b598d", + "sha256:298c1eecfd3257aa16c0cb0bdffb54411e3e831351cd69e6b0739be16b1bdaa8", + "sha256:2a93a4557f7fc74a38ca5a404abb443a242217b91cd0c4840b1ebedaad8919d4", + "sha256:2b2442a415a5f4c55ced0fade7b72123210d579f7d950e0b5527fc598866e62c", + "sha256:2db874dd1d22d4c2c657807562411ffdfabec38ce4c5ce48b4c654be552759dc", + "sha256:309c104ecf67626c033845b860d31594a41343766a46fa58c3309c538a1e22b2", + "sha256:31497aefd68036d8e31bfbacef915826ca2e741dbb97a8d6c7eac66deda3b606", + "sha256:373f16f38721c680316a6a00ae21cc178e3a8ef43c0227f88356a24c5193abd6", + "sha256:396e59b8de7e4d59ff5507fb4322d2329865b909f29a7ed7ca37e63ade7f835c", + "sha256:3bb83a0f12701c0b91112a11148b5217617982e1e466069d0555be9b372f2734", + "sha256:3de86547c820e4f4da4606d1c8ab5765dd633189791f15247706a2eeabc783ae", + "sha256:3fdbf0418489525231723cdb6c79e7738b3cbacbaed2b750cb033e4ea208f220", + "sha256:40c6e73c03a6befb85b72da213638b8aaa80fe4136ec8691560cf98b11b8ae6e", + "sha256:44a4c40a6f84e4d5955b63462a0e2a988f8982fba245cf885ce3be7618f6aa7d", + "sha256:44b07e1690f010c3c01d353b5790ec73b2f59b4eae5b0000593199766b3f7a5c", + "sha256:45d23c4668d4925688e2ea251b53f36a498e9ea860913ce43b52d9605d3d8177", + "sha256:45f209fb4bbfe8630e3d2e2052535ca5b53d4ce2d2026bed4d0637b0416830da", + "sha256:4afdf84610ca44dcffe8b6c22c68f309aff96be55f5ea2fa31c0c225d6b83e23", + "sha256:4feaaa4742517eaceafcbe74595ed335a494c84634d33961214b278126ec1485", + "sha256:576365c9f7469e1f6124d67b001639b77113cfd05e85ce0310f5f318fd02fe85", + "sha256:5820bd4178e6a639b3ef1db8b18500a82ceab6d8b89309e121a6859f56585b05", + "sha256:5989a38ba1281e43e4663931a53fbf356f78a0325251fd6af09dd03b1d676a09", + "sha256:5a9bacedbb99685a75ad033fd4de37129449e69808e50e08034034c0bf063f99", + "sha256:5b66c87da3c6da8f8e8b648878903ca54589038a0b1e08dde2c86d9cd92d4ac9", + "sha256:5c5e32fef09ce101fe14acd0f498232b5710effe13abac14cd95de9c274e689e", + "sha256:658e8449b84b92a4373f99305de042b6bd0d19bf2080c093881e0516557474a5", + "sha256:6a2acde25be0cf9be23a8f6cbd31734536a264723fca860af3ae5e89d771cd71", + "sha256:6a5185ad722ab4dd52d5fb1f30dcc73282eb1ed494906a92d1a228d3f89607b0", + "sha256:6b7f6e699304717fdc265a7e1922561b02a93ceffdaefdc877acaf9b9f3080b8", + "sha256:703b0f584fcf157ef87816a3c0ff868e8c9f3c370009a8b23b56255885528f10", + "sha256:7055bbade838d68af73aea13f8c86588e4bcc00c2235b4b6d6edb0dbd174e246", + "sha256:78f271722423b2d4851cf1f4fa1a1c4833a128d020062721ba35e1a87154a049", + "sha256:7addd26594e588503bdef03908fc207206adac5bd90b6d4bc3e3cf33a829f57d", + "sha256:81bad32c8f8b5897c909bf3468bf601f1b855d12f53b6af0271963ee67fff0d2", + "sha256:82e692fb325013a18a5b73a4fed5a1edaa7c58144dc67ad9ef3d604eccd451ad", + "sha256:84bbcdcf393139f0abc9f642bf03f00cac31010f3034faa03224a9ef0bb74323", + "sha256:86c438ce920e089c8c2388c7dcc8ab30dfe13c09b8af3d306bcabb46a053d6f7", + "sha256:8be8cdfe20787e6a5fcbd010f8066227e2bb9058331a4eccddec6c0db2bb85b2", + "sha256:8c723c91c94a3bc8033dd2696a0f53e5d5f8496186013167bddc3fb5d9df46a3", + "sha256:8ca53632007c69ddcdefe1e8cbc3920dd88825e618153795b57e6ebcc92e752a", + "sha256:8f722f30366474a99745533cc4015b1781ee54b08de73260b2bbe13316079851", + "sha256:942c80a832a79c3707cca46bd12ab8aa58fddb34b1626d42b05aa8f0bcefc206", + "sha256:94a993f976cdcb2dc1b855d8b89b792893220db8862d1a619efa7451817c836b", + "sha256:95c6737f28069153c399d875317f226bbdea939fd48a6349a3b03da6829fb550", + "sha256:9915300fe5a0aa663c01363db37e4ae8e7c15996ebe2c6cce995e7033ff6457f", + "sha256:9a18595e6a2ee0826bf7dfdee823b6ab55c9b70e8f80f8b77c37e694288f5de1", + "sha256:9c8854b9f80693d20cec797d8e48a848c2fb273eb6f2587b57763ccba3f3bd4b", + "sha256:9cec42a20eae8bebf81e9ce23fb0d0c729fc54cf00643eb251ce7c0215ad49fe", + "sha256:9d2e1626be8712333a9f71270366f4a132f476ffbe83b689dd6dc0d114796c74", + "sha256:9d74f3c335cfe9c21ea78988e67f18eb9822f5d31f88b41aec3a1ec5ecd32da5", + "sha256:9fb4134cc6e005b99fa29dbc86f1ea0a298440ab6b07c6b3ee09232a3b48f495", + "sha256:a0ae6637b173d0c40b9c1462e12a7a2000a71a3258fa88756a34c7d38926911c", + "sha256:a31d21089894942f7d9a8df166b495101b7258ff11ae0abec58e32daf8088813", + "sha256:a3442c31c11088e462d44a644a454d48110f0588de830921fd201060ff19612a", + "sha256:ab9524e45ee809a083338a749af3b53cc7efec458c3ad084361c1dbf7aaf82a2", + "sha256:b1481c048fe787f65e34cb06f7d6824376d5d99f1231eae4778bbe5c3831076d", + "sha256:b8c837ab90c455f3ea8e68bee143472ee87828bff19ba19776e16ff961425b57", + "sha256:bbf2c3f04ff50f16404ce70f822cdc59760e5e2d7965905f0e700270feb2bbfc", + "sha256:bbf9c2a589be7414ac4a534d54e4517d03f1cbb142c0041191b729c2fa23f320", + "sha256:bcd5bf4132e6a8d3eb54b8d56885f3d3a38ecd7ecae8426ecf7d9673b270de43", + "sha256:c14c16831b565707149c742d87a6203eb5597f4329278446d5c0ae7a1a43928e", + "sha256:c49f3e379177f4477f929097f7ed4b0622a586b0aa40c07ac8c0f8e40659a1ac", + "sha256:c92b89bffc660f1274779cb6fbb290ec1f90d6dfe14492523a0667f10170de26", + "sha256:cd66152561632ed4b2a9192e7f8e5a1d41e28f58120b4761622e0355f0fe034c", + "sha256:cf1ad338620249f8dd6d4b6a91a69d1f265387df3697ad5dc996305cf6c26fb2", + "sha256:d07b52c8c450f9366c34aa205754355e933922c79135125541daae6cbf31c799", + "sha256:d0d12fe78dcf60efa205e9a63f395b5d343e801cf31e5e1dda0d2c1fb618073d", + "sha256:d4ee1d240b84e2f213565f0ec08caef27a0e657d4c42859809155cf3a29d1735", + "sha256:d959fe96e5c2712c1876d69af0507d98f0b0e8d81bee14cfb3f6737470205419", + "sha256:dcaef817e13eafa547cdfdc5284fe77970b891f731266545aae08d6cce52161e", + "sha256:df4e82e68f43a07735ae70a2d84c0353e58e20add20ec0af611f32cd5ba43fb4", + "sha256:ec8cfe2295f3e5e44c51f57272afbd69414ae629ec7c6b27f5a410efc78b70a0", + "sha256:ec9dd328016d8d25702a24ee274932aebf6be9787ed1c28d021945d264235b3c", + "sha256:ef9b85fa1bc91c4db24407e7c4da93a5822a73dd4513d67b454ca7064e8dc6a3", + "sha256:f3bf60444269345d712838bb11cc4eadaf51ff1a364ae39ce87a5ca8ad3bb2c8", + "sha256:f452cc1436151387d3d50533523291d5f77c6bc7913c116eb985304abdbd9ec9", + "sha256:f7917697bcaa3bc3e83db91aa3a0e448bf5cde43c84b7fc1ae2427d2417c0224", + "sha256:f90575e9fe3aae2c1e686393a9689c724cd00045275407f71771ae5d690ccf38", + "sha256:fb382fd7b4377363cc9f13ba7c819c3c78ed97c36a82f16f3f92f108c787cbbf", + "sha256:fb9f59f3848edf186a76446eb8bcf4c900fe147cb756fbbd730ef43b2e67c6a7", + "sha256:fc2931ac9ce9c61c9968989ec831d3a5e6fcaaff9474e7cfa8de80b7aff5a093" ], - "markers": "python_version >= '3.7'", - "version": "==1.9.4" + "markers": "python_version >= '3.8'", + "version": "==1.13.1" } } } diff --git a/requirements-dev.txt b/requirements-dev.txt index 7e879981..98ef1906 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,16 +1,16 @@ -i https://pypi.org/simple -aiohappyeyeballs==2.4.0; python_version >= '3.8' -aiohttp==3.10.5 +aiohappyeyeballs==2.4.3; python_version >= '3.8' +aiohttp==3.10.8 aiosignal==1.3.1; python_version >= '3.7' astroid==3.2.4; python_full_version >= '3.8.0' attrs==24.2.0; python_version >= '3.7' black[d]==24.8.0; python_version >= '3.8' -certifi==2024.7.4; python_version >= '3.6' +certifi==2024.8.30; python_version >= '3.6' charset-normalizer==3.3.2; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' coverage[toml]==7.6.1; python_version >= '3.8' coveralls==4.0.1; python_version < '3.13' and python_version >= '3.8' -dill==0.3.8; python_version >= '3.11' +dill==0.3.9; python_version >= '3.11' docopt==0.6.2 flake8==7.1.1; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' @@ -21,7 +21,7 @@ executing==2.0.1; python_version >= '3.5' flake8==7.1.1; python_full_version >= '3.8.1' frozenlist==1.4.1; python_version >= '3.8' icecream==2.1.3 -idna==3.8; python_version >= '3.6' +idna==3.10; python_version >= '3.6' iniconfig==2.0.0; python_version >= '3.7' isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' @@ -30,7 +30,7 @@ mypy==1.11.1; python_version >= '3.8' mypy-extensions==1.0.0; python_version >= '3.5' packaging==24.1; python_version >= '3.8' pathspec==0.12.1; python_version >= '3.8' -platformdirs==4.2.2; python_version >= '3.8' +platformdirs==4.3.6; python_version >= '3.8' pluggy==1.5.0; python_version >= '3.8' pycodestyle==2.12.1; python_version >= '3.8' pyflakes==3.2.0; python_version >= '3.8' @@ -50,8 +50,8 @@ yarl==1.9.4; python_version >= '3.7' annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -pydantic==2.8.2; python_version >= '3.8' -pydantic-core==2.20.1; python_version >= '3.8' +pydantic==2.9.2; python_version >= '3.8' +pydantic-core==2.23.4; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.2; python_version >= '3.8' xmltodict==0.13.0; python_version >= '3.4' diff --git a/requirements.txt b/requirements.txt index 539b07ea..d2fb427b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,15 +1,15 @@ annotated-types==0.7.0; python_version >= '3.8' cerberus==1.3.5 -certifi==2024.7.4; python_version >= '3.6' +certifi==2024.8.30; python_version >= '3.6' charset-normalizer==3.3.2; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -idna==3.8; python_version >= '3.6' -pydantic==2.8.2; python_version >= '3.8' -pydantic-core==2.20.1; python_version >= '3.8' +idna==3.10; python_version >= '3.6' +pydantic==2.9.2; python_version >= '3.8' +pydantic-core==2.23.4; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.2; python_version >= '3.8' requests==2.32.3; python_version >= '3.8' typing-extensions==4.12.2; python_version < '3.13' -urllib3==2.2.2; python_version >= '3.8' +urllib3==2.2.3; python_version >= '3.8' xmltodict==0.13.0; python_version >= '3.4' From 9b798126f628f79c3a67afc0524a7a73aca69cff Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 09:38:32 +0600 Subject: [PATCH 151/245] feat: add duct converted value --- chk/modules/validate/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 430b56e6..28394365 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -278,7 +278,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: validate_doc, { **variable_doc.data, - **{"_asserts_response": test_run_result}, + **{"_asserts_response": test_run_result.as_dict}, }, ) From 8d8a786003075b2a8ca1d7aee5fa5ab60e5e9f19 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 09:38:59 +0600 Subject: [PATCH 152/245] feat: pass variables --- chk/modules/workflow/__init__.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 4ab77862..9debc668 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -4,12 +4,14 @@ from __future__ import annotations +import json import pathlib from collections import abc from collections.abc import Callable from pydantic import BaseModel, ConfigDict, Field +from chk.console.main import combine_initial_variables from chk.infrastructure.document import ( VersionedDocumentV2, ) @@ -131,12 +133,7 @@ def process_task_template( execution_ctx = ExecuteContext( {"dump": True, "format": True}, - { - # "variables": combine_initial_variables( - # variables, - # except_msg="-V, --variables accept values as JSON object", - # ), - }, + {"variables": combine_initial_variables(json.dumps(task_o_.variables))}, ) task_fn = None From 51fc4b0042477fff6b41f1b0ab71f474c87057d7 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 09:39:26 +0600 Subject: [PATCH 153/245] feat: use exposed value for dumping --- chk/modules/workflow/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 9debc668..b63cc18e 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -165,9 +165,8 @@ def execute_task( ) -> ExecResponse: """execute_task""" - _task_res: ExecResponse = task_fn(**task_params.asdict()) - variables[WorkflowConfigNode.NODE.value].append(_task_res.variables_exec.data) _task_res: ExecResponse = task_fn(**task_params.as_dict()) + variables[WorkflowConfigNode.NODE.value].append(_task_res.exposed) return _task_res From 0f1379a4027da88507891ba3473e4db458cc5f73 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 09:39:46 +0600 Subject: [PATCH 154/245] refactor: remove unused func --- chk/modules/workflow/__init__.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index b63cc18e..32d1d28b 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -170,9 +170,6 @@ def execute_task( return _task_res - # @classmethod - # def prepare_step_results(cls, ) -> dict: - @classmethod def display( cls, From ea91715b381b9ca1a7894c89337a43a014b397bc Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 09:40:42 +0600 Subject: [PATCH 155/245] refactor: remove output data in exposed data uses --- chk/modules/workflow/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 32d1d28b..464747f4 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -197,11 +197,10 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: service.set_step_template(variable_doc) exec_report = service.process_task_template(wflow_doc, variable_doc) - # output_data = Variables() output_data = Variables({"_steps": variable_doc[WorkflowConfigNode.NODE.value]}) exposed_data: dict = ExposeManager.get_exposed_replaced_data_v2( - wflow_doc, {**variable_doc.data, **output_data.data} + wflow_doc, variable_doc.data ) # TODO also send failed_details (fail code, message, stacktrace, etc) From af3ad673a842413f8082d05a015568402fe95226 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 10:07:42 +0600 Subject: [PATCH 156/245] feat: finalize formatted and json dump for wf --- chk/modules/workflow/services.py | 35 ++++++++------------------------ 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 96e84032..6185fdba 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -97,25 +97,15 @@ def dump_fmt(self) -> str: """return formatted string representation""" exposed_fmt_str = [] - for key, value in self.data.exposed.items(): - _t_key = str(key).replace("%>", "").replace("<%", "").strip() - _t_marker = str(WorkflowConfigNode.NODE) - _str_to_append = "" + node = str(WorkflowConfigNode.NODE) - if _t_marker in _t_key and len(_t_key) == len(_t_marker): - _str_to_append = self._prepare_dump_str_for_steps() + if node in key and len(key) == len(node): + to_append = self._prepare_dump_str_for_steps() else: - _value = [] - - for item in value: - if hasattr(item, "as_dict"): - _value.append(item.as_dict) - else: - _value.append(item) + to_append = json.dumps(value) - _str_to_append = json.dumps(_value) - exposed_fmt_str.append(_str_to_append) + exposed_fmt_str.append(to_append) return "\n======\n".join(exposed_fmt_str) @@ -149,22 +139,13 @@ def dump_json(self) -> str: exposed_fmt_str = [] for key, value in self.data.exposed.items(): - _t_key = str(key).replace("%>", "").replace("<%", "").strip() - _t_marker = str(WorkflowConfigNode.NODE) + node = str(WorkflowConfigNode.NODE) _to_append = {} - if _t_marker in _t_key and len(_t_key) == len(_t_marker): + if node in key and len(key) == len(node): _to_append = self._prepare_dump_data() else: - _value = [] - - for item in value: - if hasattr(item, "as_dict"): - _value.append(item.as_dict) - else: - _value.append(item) - - _to_append = Cast.try_dict(_value) + _to_append = value exposed_fmt_str.append(_to_append) From f2e7a0a54cd3a23cde63838a547c64b47022bb13 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 10:26:03 +0600 Subject: [PATCH 157/245] fix: document type change in test --- tests/modules/validate/validate_entity_test.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/modules/validate/validate_entity_test.py b/tests/modules/validate/validate_entity_test.py index 3fa7cac6..2e706a22 100644 --- a/tests/modules/validate/validate_entity_test.py +++ b/tests/modules/validate/validate_entity_test.py @@ -117,8 +117,8 @@ def test_as_dict_pass(): doc = ValidationDocument.from_file_context(ctx) - assert isinstance(doc.as_dict, dict) - assert len(doc.as_dict) == 4 + assert isinstance(doc.model_dump(), dict) + assert len(doc.model_dump()) == 4 class TestValidationDocumentSupport: @@ -216,7 +216,10 @@ def test_set_data_template_pass_exec_ctx_prioritise(self): ValidationDocumentSupport.set_data_template(doc, variables, exec_ctx) assert bool(variables[ValidationConfigNode.VAR_NODE.value]) - assert variables[ValidationConfigNode.VAR_NODE.value].get("name") == "Some Name Two" + assert ( + variables[ValidationConfigNode.VAR_NODE.value].get("name") + == "Some Name Two" + ) @staticmethod def test_process_data_template_pass(): @@ -252,7 +255,10 @@ def test_process_data_template_pass(): ValidationDocumentSupport.process_data_template(variables) assert bool(variables[ValidationConfigNode.VAR_NODE.value]) - assert variables[ValidationConfigNode.VAR_NODE.value].get("greet") == "Hello Somebody" + assert ( + variables[ValidationConfigNode.VAR_NODE.value].get("greet") + == "Hello Somebody" + ) @staticmethod def test_make_assertion_entry_list_pass(): From 9d7438d780c5a3a91fe79ebd341c1aa76eb65a62 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 12:54:22 +0600 Subject: [PATCH 158/245] fix: issues with object type change --- tests/modules/workflow/wf_domain_test.py | 27 ++++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/tests/modules/workflow/wf_domain_test.py b/tests/modules/workflow/wf_domain_test.py index 5655c4a5..2f20eada 100644 --- a/tests/modules/workflow/wf_domain_test.py +++ b/tests/modules/workflow/wf_domain_test.py @@ -2,17 +2,23 @@ """ Domain test code """ -from icecream import ic +from pydantic import BaseModel, Field +from chk.infrastructure.symbol_table import Variables from chk.modules.workflow import WorkflowDocument, WorkflowDocumentSupport -from chk.modules.workflow.entities import ChkwareTask - -from tests import load_chk_file, load_file_ctx_for_file, SPEC_DIR +from chk.modules.workflow.entities import ChkwareTask, WorkflowUses +from tests import SPEC_DIR, load_chk_file, load_file_ctx_for_file class TestWorkflowDocument: @staticmethod def test_from_file_context_pass(load_chk_file, load_file_ctx_for_file): + + class TaskDict(BaseModel): + file: str = Field(default=str) + name: str = Field(default=str) + uses: WorkflowUses + filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" file_ctx = load_file_ctx_for_file(filepath) @@ -20,10 +26,16 @@ def test_from_file_context_pass(load_chk_file, load_file_ctx_for_file): assert wfdoc.id == "simple-btc-workflow-1" assert isinstance(wfdoc.tasks, list) - assert all(isinstance(i, ChkwareTask) for i in wfdoc.tasks) + assert all(TaskDict(**i) for i in wfdoc.tasks) @staticmethod def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): + + class TaskDict(BaseModel): + file: str = Field(default=str) + name: str = Field(default=str) + uses: WorkflowUses + filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" file_ctx = load_file_ctx_for_file(filepath) @@ -34,7 +46,7 @@ def test_from_file_context_pass_noid(load_chk_file, load_file_ctx_for_file): assert wfdoc.id == "simple-btc-workflow" assert isinstance(wfdoc.tasks, list) - assert all(isinstance(i, ChkwareTask) for i in wfdoc.tasks) + assert all(TaskDict(**i) for i in wfdoc.tasks) class TestWorkflowDocumentSupport: @@ -46,4 +58,5 @@ def test_process_task_template_pass(load_chk_file, load_file_ctx_for_file): wfdoc = WorkflowDocument.from_file_context(file_ctx) - WorkflowDocumentSupport.process_task_template(wfdoc, ...) + rpt = WorkflowDocumentSupport.process_task_template(wfdoc, Variables({"_steps": []})) + assert isinstance(rpt, list) From 47cb740d7baae22d2eaa2aa8a1eebe1e379fabd0 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 12:54:34 +0600 Subject: [PATCH 159/245] feat: return inner data --- .../workflow_cases/get-req-vars/coinstats-usd-workflow.chk | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk index 1ec10f85..c091d7a3 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/get-req-vars/coinstats-usd-workflow.chk @@ -22,3 +22,4 @@ tasks: expose: - <% _steps %> + - <% _steps.1.vdata.body %> From 452c674e0087d35d11af289272e6bf3ac002c30f Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 16:35:46 +0600 Subject: [PATCH 160/245] fix: tests for wf tasks and services --- tests/modules/workflow/wf_entities_test.py | 54 +++++++++++++--------- tests/modules/workflow/wf_module_test.py | 29 +++++++++--- 2 files changed, 55 insertions(+), 28 deletions(-) diff --git a/tests/modules/workflow/wf_entities_test.py b/tests/modules/workflow/wf_entities_test.py index 88c5ea33..b3afe811 100644 --- a/tests/modules/workflow/wf_entities_test.py +++ b/tests/modules/workflow/wf_entities_test.py @@ -7,40 +7,50 @@ from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask +fp = "/Users/mlbdmba21/Works/chkware/cli/tests/resources/storage/spec_docs/workflow_cases/simple" + class TestChkwareTask: @staticmethod def test_from_dict_pass(): - task = ChkwareTask.from_dict( - {"name": "Sample fetch", "uses": "fetch", "file": "file.chk"} + + task = ChkwareTask( + fp, + **{ + "name": "Sample fetch", + "uses": "fetch", + "file": "./coinstats-usd-validate.chk", + }, ) assert task.uses == "fetch" - assert task.file == "file.chk" + assert task.file == f"{fp}/coinstats-usd-validate.chk" class TestChkwareValidateTask: @staticmethod def test_from_dict_pass(): - task = ChkwareValidateTask.from_dict( - { + task = ChkwareValidateTask( + fp, + **{ "name": "Sample validate", "uses": "validate", - "file": "validate-file-1.chk", - } + "file": "./coinstats-usd-validate.chk", + }, ) assert task.uses == "validate" - assert task.file == "validate-file-1.chk" - assert task.arguments is None + assert task.file == f"{fp}/coinstats-usd-validate.chk" + assert isinstance(task.arguments, ChkwareValidateTask.ChkwareTaskDataArgument) - task = ChkwareValidateTask.from_dict( - { + task = ChkwareValidateTask( + fp, + **{ "name": "Sample validate - 2", "uses": "validate", - "file": "validate-file.chk", + "file": "./coinstats-usd-validate.chk", "arguments": {"data": {"some": 12, "data": [1, "a"]}}, - } + }, ) assert task.arguments and "data" in task.arguments.model_dump() @@ -48,25 +58,27 @@ def test_from_dict_pass(): @staticmethod def test_from_dict_fail(): with pytest.raises(ValidationError): - ChkwareValidateTask.from_dict( - { + ChkwareValidateTask( + fp, + **{ "name": "Sample validate - 3", "uses": "validate", - "file": "validate-file.chk", + "file": "./coinstats-usd-validate.chk", "arguments": { "data": {"some": 12, "data": [1, "a"]}, "other_data": 1, }, - } + }, ) with pytest.raises(ValidationError): - ChkwareValidateTask.from_dict( - { + ChkwareValidateTask( + fp, + **{ "name": "Sample validate - 4", "uses": "validate", - "file": "validate-file.chk", + "file": "./coinstats-usd-validate.chk", "other_data": 1, "arguments": {"data": {"some": 12, "data": [1, "a"]}}, - } + }, ) diff --git a/tests/modules/workflow/wf_module_test.py b/tests/modules/workflow/wf_module_test.py index 3a838390..6fdd2e8d 100644 --- a/tests/modules/workflow/wf_module_test.py +++ b/tests/modules/workflow/wf_module_test.py @@ -2,17 +2,32 @@ """ Workflow module test """ - -from chk.modules.workflow import execute - -from tests import load_chk_file, load_file_ctx_for_file, get_exec_ctx, SPEC_DIR +from chk.infrastructure.symbol_table import ExecResponse +from chk.modules.workflow import call, execute +from tests import SPEC_DIR, get_exec_ctx, load_chk_file, load_file_ctx_for_file class TestWorkflowExecute: @staticmethod - def test_execute(load_chk_file, load_file_ctx_for_file, get_exec_ctx): - filepath = f"{SPEC_DIR}workflow/simple-btc-wf.chk" + def test_execute(load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys): + """test_execute""" + + filepath = f"{SPEC_DIR}workflow_cases/get-req-vars/coinstats-usd-workflow.chk" file_ctx = load_file_ctx_for_file(filepath) - execution_ctx = get_exec_ctx(False) + execution_ctx = get_exec_ctx(True) execute(file_ctx, execution_ctx) + + captured = capsys.readouterr() + assert "======" in captured.out + + @staticmethod + def test_call(load_chk_file, load_file_ctx_for_file, get_exec_ctx): + """test_call""" + + filepath = f"{SPEC_DIR}workflow_cases/get-req-vars/coinstats-usd-workflow.chk" + file_ctx = load_file_ctx_for_file(filepath) + execution_ctx = get_exec_ctx(True) + + er = call(file_ctx, execution_ctx) + assert isinstance(er, ExecResponse) From b87a69ac31b51e18db3092db1df95b046ea7b5f7 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 16:54:26 +0600 Subject: [PATCH 161/245] fix: path issue caught on ci --- tests/modules/workflow/wf_entities_test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/modules/workflow/wf_entities_test.py b/tests/modules/workflow/wf_entities_test.py index b3afe811..b07ae203 100644 --- a/tests/modules/workflow/wf_entities_test.py +++ b/tests/modules/workflow/wf_entities_test.py @@ -2,12 +2,14 @@ """ Testing Entities for workflow """ +from pathlib import Path + import pytest from pydantic import ValidationError from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask -fp = "/Users/mlbdmba21/Works/chkware/cli/tests/resources/storage/spec_docs/workflow_cases/simple" +fp = f"{Path.cwd()}/tests/resources/storage/spec_docs/workflow_cases/simple" class TestChkwareTask: From 727726fc7aea47f6a38883f6b25ab92f081f81ea Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 22:39:50 +0600 Subject: [PATCH 162/245] fix: OS neutral path --- tests/modules/workflow/wf_entities_test.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/modules/workflow/wf_entities_test.py b/tests/modules/workflow/wf_entities_test.py index b07ae203..e0f1ccd9 100644 --- a/tests/modules/workflow/wf_entities_test.py +++ b/tests/modules/workflow/wf_entities_test.py @@ -9,7 +9,17 @@ from chk.modules.workflow.entities import ChkwareTask, ChkwareValidateTask -fp = f"{Path.cwd()}/tests/resources/storage/spec_docs/workflow_cases/simple" +fp_p = ( + Path.cwd() + / "tests" + / "resources" + / "storage" + / "spec_docs" + / "workflow_cases" + / "simple" +) + +fp = str(fp_p) class TestChkwareTask: From 0aa4bd37c1934a16768a21ea1c076809b4109893 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 22:47:07 +0600 Subject: [PATCH 163/245] refactor: from str concat to path concat --- chk/infrastructure/file_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index de9f93cb..139c235f 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -136,7 +136,7 @@ def generate_abs_path(base_: str, target_: str) -> str: if part == "..": to_path = to_path.parent else: - to_path = Path(str(to_path) + "/" + part) + to_path = to_path / part return str(to_path) From e05df9bcea292bff1e2d898cf80582618f2cfeda Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 23:18:08 +0600 Subject: [PATCH 164/245] refactor: reorder imports --- chk/infrastructure/file_loader.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index 139c235f..7c7ccb38 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -3,11 +3,12 @@ """ from __future__ import annotations + import hashlib -from typing import NamedTuple +import json from pathlib import Path +from typing import NamedTuple -import json import yaml from chk.infrastructure.typing_extras import JsonDecodingError @@ -110,7 +111,6 @@ def filepath_base_as_path(self) -> Path: return Path(self.filepath).absolute().parent -# @TODO Need testing def generate_abs_path(base_: str, target_: str) -> str: """Generate absolute path in comparison to base path Args: From 25cb0dca6d7d184e6311446861dff573ae69933a Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 4 Oct 2024 23:22:46 +0600 Subject: [PATCH 165/245] refactor: update paths to OS deps --- tests/modules/workflow/wf_entities_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/modules/workflow/wf_entities_test.py b/tests/modules/workflow/wf_entities_test.py index e0f1ccd9..99080add 100644 --- a/tests/modules/workflow/wf_entities_test.py +++ b/tests/modules/workflow/wf_entities_test.py @@ -36,7 +36,7 @@ def test_from_dict_pass(): ) assert task.uses == "fetch" - assert task.file == f"{fp}/coinstats-usd-validate.chk" + assert task.file == str(fp_p / "coinstats-usd-validate.chk") class TestChkwareValidateTask: @@ -52,7 +52,7 @@ def test_from_dict_pass(): ) assert task.uses == "validate" - assert task.file == f"{fp}/coinstats-usd-validate.chk" + assert task.file == str(fp_p / "coinstats-usd-validate.chk") assert isinstance(task.arguments, ChkwareValidateTask.ChkwareTaskDataArgument) task = ChkwareValidateTask( From 13334bb93b02378748703f0371bb0382270e9788 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 5 Oct 2024 13:38:21 +0600 Subject: [PATCH 166/245] refactor: remove old get_exposed_replaced_data impl --- chk/infrastructure/symbol_table.py | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index f1054dfe..9f3858b5 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -237,28 +237,6 @@ def replace_values( return replace_callback(expose_doc, values) - @staticmethod - def get_exposed_replaced_data( - document: VersionedDocument | VersionedDocumentV2, store: dict - ) -> list: - """Get expose doc from a `VersionedDocument`, and prepare it from the - value of `Variables`, and `store`, and return - - Args: - document: VersionedDocument to get expose definition from it - store: dict to use as value store - - Returns: - dict: list of expose data - """ - - file_ctx = FileContext(*document.context) - - if expose_doc := ExposeManager.get_expose_doc(file_ctx.document): - return ExposeManager.replace_values(expose_doc, store) - - return [] - @staticmethod def get_exposed_replaced_data_v2( document: VersionedDocumentV2, store: dict From 095e2f4bbf99438d06b177a92d3c80b4c5873677 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 5 Oct 2024 13:39:21 +0600 Subject: [PATCH 167/245] refactor: rename all existing signature - replace get_exposed_replaced_data_v2 with get_exposed_replaced_data --- chk/infrastructure/symbol_table.py | 2 +- chk/modules/fetch.py | 2 +- chk/modules/validate/__init__.py | 2 +- chk/modules/workflow/__init__.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 9f3858b5..89361236 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -238,7 +238,7 @@ def replace_values( return replace_callback(expose_doc, values) @staticmethod - def get_exposed_replaced_data_v2( + def get_exposed_replaced_data( document: VersionedDocumentV2, store: dict ) -> dict: """ diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 52619e0b..ee046cc9 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -546,7 +546,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: output_data = Variables({"_response": response.data}) - exposed_data = ExposeManager.get_exposed_replaced_data_v2( + exposed_data = ExposeManager.get_exposed_replaced_data( http_doc, {**variable_doc.data, **output_data.data}, ) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 28394365..4ebea737 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -274,7 +274,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: } ) - exposed_data = ExposeManager.get_exposed_replaced_data_v2( + exposed_data = ExposeManager.get_exposed_replaced_data( validate_doc, { **variable_doc.data, diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 464747f4..1d3bce09 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -199,7 +199,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: output_data = Variables({"_steps": variable_doc[WorkflowConfigNode.NODE.value]}) - exposed_data: dict = ExposeManager.get_exposed_replaced_data_v2( + exposed_data: dict = ExposeManager.get_exposed_replaced_data( wflow_doc, variable_doc.data ) From 7ea65054a5ca57ad8ec44401c99d4b3e50fd76ca Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 5 Oct 2024 13:44:41 +0600 Subject: [PATCH 168/245] fix: test for get_exposed_replaced_data --- tests/infrastructure/symbol_table_test.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/tests/infrastructure/symbol_table_test.py b/tests/infrastructure/symbol_table_test.py index 38c8710a..8fcf0746 100644 --- a/tests/infrastructure/symbol_table_test.py +++ b/tests/infrastructure/symbol_table_test.py @@ -5,12 +5,12 @@ import json from chk.console.main import combine_initial_variables -from chk.infrastructure.file_loader import FileContext, ExecuteContext +from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.symbol_table import ( + ExposeManager, VariableConfigNode, - Variables, VariableTableManager, - ExposeManager, + Variables, replace_value, ) from chk.modules.fetch import HttpDocument @@ -276,9 +276,6 @@ def test_get_exposed_replaced_data_pass_returns_empty_list(): } file_ctx = FileContext(filepath_hash="ab12", document=document) - exec_ctx = ExecuteContext( - arguments={VariableConfigNode.VARIABLES: {"extension": ".org"}} - ) http_doc = HttpDocument.from_file_context(file_ctx) @@ -286,7 +283,7 @@ def test_get_exposed_replaced_data_pass_returns_empty_list(): http_doc, {"a": 1, "b": 2} ) - assert isinstance(exposed_data, list) + assert isinstance(exposed_data, dict) assert len(exposed_data) == 0 @staticmethod @@ -314,7 +311,7 @@ def test_get_exposed_replaced_data_pass_returns_nonempty_list(): http_doc, {**variable_doc.data, **{"_response": {"a": 1, "b": 2}}} ) - assert isinstance(exposed_data, list) + assert isinstance(exposed_data, dict) assert len(exposed_data) == 1 - assert isinstance(exposed_data[0], dict) - assert len(exposed_data[0]) == 2 + assert isinstance(exposed_data["_response"], dict) + assert len(exposed_data["_response"]) == 2 From d1c3bb67323ed7ed4df0fb73f45be1dd42fde6cf Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 5 Oct 2024 14:03:04 +0600 Subject: [PATCH 169/245] feat: add spec set for argument passing --- .../pass_data/coinstats-usd-request.chk | 16 ++++++++++++ .../pass_data/coinstats-usd-validate.chk | 23 ++++++++++++++++ .../pass_data/coinstats-usd-workflow.chk | 26 +++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-request.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-validate.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-workflow.chk diff --git a/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-request.chk b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-request.chk new file mode 100644 index 00000000..f368902c --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-request.chk @@ -0,0 +1,16 @@ +--- +version: default:http:0.7.2 + +variables: + convertCurrency: USD + +request: + url: "https://openapiv1.coinstats.app/coins/bitcoin" + url_params: + currency: <% convertCurrency %> + method: GET + headers: + "X-API-KEY": <% _ENV.COINSTATS_API_KEY %> + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-validate.chk b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-validate.chk new file mode 100644 index 00000000..db55b61e --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-validate.chk @@ -0,0 +1,23 @@ +--- +version: default:validation:0.7.2 + +variables: + vdata: ~ + +asserts: + - { type: Equal, actual: <% vdata.code %>, expected: 200, msg_pass: 'Response was successful with code `{type_actual}({value_actual})`', cast_actual_to: int } + - { type: Map, actual: <% vdata.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } + - { type: Str, actual: <% vdata.code %>, msg_pass: 'Code `{type_actual}({value_actual})` is a string', msg_fail: 'Code `{type_actual}({value_actual})` is not a string', cast_actual_to: int } + - { type: StrHave, actual: <% vdata.info %>, other: "200 OK" } + - { type: Map, actual: <% vdata.body %> } + - { type: List, actual: <% vdata.body.explorers %> } + - { type: Float, actual: <% vdata.body.price %> } + - { type: MapHasKeys, actual: <% vdata.body %>, expected: [ "price", "priceBtc", "priceChange1d", "priceChange1h", "priceChange1w" ] } + +expose: + - <% _asserts_response %> + - <% vdata %> + +# --- shell command --- +# pipenv run python -m chk validate -nf tests/resources/storage/spec_docs/validate/btc-usd-validate.chk -D "$(pipenv run python -m chk fetch -nf tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk)" +# --- diff --git a/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-workflow.chk new file mode 100644 index 00000000..605a3e8a --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-workflow.chk @@ -0,0 +1,26 @@ +version: default:workflow:0.8.0 + +name: simple Btc workflow +id: BtcWF1 + +variables: + group: coinstats + currency: GBP + +tasks: + - name: Fetch some content from URL + uses: fetch + file: "./<% group %>-usd-request.chk" + variables: + convertCurrency: <% currency %> + + - name: Validate the content is okay + uses: validate + file: "./<% group %>-usd-validate.chk" + arguments: + data: + vdata: <% _steps.0._response %> + +expose: + - <% _steps %> + - <% _steps.1.vdata.body %> From 5d8a2dce661b9cb219481cf1fff3f7820af05292 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 7 Oct 2024 21:43:50 +0600 Subject: [PATCH 170/245] feat: pass argument in wf --- chk/modules/workflow/__init__.py | 12 ++++++++---- tests/modules/workflow/wf_module_test.py | 15 ++++++++++++++- .../pass_data/coinstats-usd-validate.chk | 5 +---- .../pass_data/coinstats-usd-workflow.chk | 5 ++--- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 1d3bce09..09f3226d 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -131,10 +131,14 @@ def process_task_template( task_d_, **dict(base_file_path=base_fpath) ) - execution_ctx = ExecuteContext( - {"dump": True, "format": True}, - {"variables": combine_initial_variables(json.dumps(task_o_.variables))}, - ) + exctx_args = { + "variables": combine_initial_variables(json.dumps(task_o_.variables)) + } + + if isinstance(task_o_, ChkwareValidateTask): + exctx_args["arguments"] = task_o_.arguments.model_dump_json() + + execution_ctx = ExecuteContext({"dump": True, "format": True}, exctx_args) task_fn = None diff --git a/tests/modules/workflow/wf_module_test.py b/tests/modules/workflow/wf_module_test.py index 6fdd2e8d..fb70f43e 100644 --- a/tests/modules/workflow/wf_module_test.py +++ b/tests/modules/workflow/wf_module_test.py @@ -9,7 +9,7 @@ class TestWorkflowExecute: @staticmethod - def test_execute(load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys): + def test_execute_pass_vars(load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys): """test_execute""" filepath = f"{SPEC_DIR}workflow_cases/get-req-vars/coinstats-usd-workflow.chk" @@ -21,6 +21,19 @@ def test_execute(load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys): captured = capsys.readouterr() assert "======" in captured.out + @staticmethod + def test_execute_pass_args(load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys): + """test_execute""" + + filepath = f"{SPEC_DIR}workflow_cases/pass_data/coinstats-usd-workflow.chk" + file_ctx = load_file_ctx_for_file(filepath) + execution_ctx = get_exec_ctx(True) + + execute(file_ctx, execution_ctx) + + captured = capsys.readouterr() + assert "======" in captured.out + @staticmethod def test_call(load_chk_file, load_file_ctx_for_file, get_exec_ctx): """test_call""" diff --git a/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-validate.chk b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-validate.chk index db55b61e..fa09f69f 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-validate.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-validate.chk @@ -1,9 +1,6 @@ --- version: default:validation:0.7.2 -variables: - vdata: ~ - asserts: - { type: Equal, actual: <% vdata.code %>, expected: 200, msg_pass: 'Response was successful with code `{type_actual}({value_actual})`', cast_actual_to: int } - { type: Map, actual: <% vdata.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } @@ -16,7 +13,7 @@ asserts: expose: - <% _asserts_response %> - - <% vdata %> + - <% _data %> # --- shell command --- # pipenv run python -m chk validate -nf tests/resources/storage/spec_docs/validate/btc-usd-validate.chk -D "$(pipenv run python -m chk fetch -nf tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk)" diff --git a/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-workflow.chk index 605a3e8a..1bfbe045 100644 --- a/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-workflow.chk +++ b/tests/resources/storage/spec_docs/workflow_cases/pass_data/coinstats-usd-workflow.chk @@ -18,9 +18,8 @@ tasks: uses: validate file: "./<% group %>-usd-validate.chk" arguments: - data: - vdata: <% _steps.0._response %> + data: <% _steps.0._response %> expose: - <% _steps %> - - <% _steps.1.vdata.body %> + - <% _steps.1._data.code %> From 31a7335d2d3d71ad773a2659726baa7caf2d7e61 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 9 Oct 2024 10:16:38 +0600 Subject: [PATCH 171/245] refactor: update ExecResponse.exposed type --- chk/infrastructure/symbol_table.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/chk/infrastructure/symbol_table.py b/chk/infrastructure/symbol_table.py index 89361236..aa783a3b 100644 --- a/chk/infrastructure/symbol_table.py +++ b/chk/infrastructure/symbol_table.py @@ -73,7 +73,7 @@ class ExecResponse(BaseModel): variables_exec: Variables extra: object = Field(default=None) exception: Exception | None = Field(default=None) - exposed: list | dict = Field(default_factory=list) + exposed: dict = Field(default_factory=dict) report: dict = Field(default_factory=dict) @@ -238,9 +238,7 @@ def replace_values( return replace_callback(expose_doc, values) @staticmethod - def get_exposed_replaced_data( - document: VersionedDocumentV2, store: dict - ) -> dict: + def get_exposed_replaced_data(document: VersionedDocumentV2, store: dict) -> dict: """ Get expose doc from a `VersionedDocument`, and prepare it from the value of `Variables`, and `store`, and return From 24174e5a0a42a97090c68e0ac0dfc7b2fd734dfd Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 9 Oct 2024 10:21:25 +0600 Subject: [PATCH 172/245] fix: fetch presentation --- chk/modules/fetch.py | 8 ++++---- tests/modules/fetch/fetch_entities_test.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index ee046cc9..8904889b 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -455,20 +455,20 @@ def build_schema() -> dict: return {**VER_SCHEMA, **SCHEMA, **VAR_SCHEMA, **EXP_SCHEMA} @staticmethod - def display(expose_list: list, exec_ctx: ExecuteContext) -> None: + def display(exposed: dict, exec_ctx: ExecuteContext) -> None: """Displays the response based on the command response format Args: - expose_list: list + exposed: list exec_ctx: ExecuteContext """ - if not expose_list: + if not exposed: return display_item_list: list[object] = [] - for expose_item in expose_list: + for _, expose_item in exposed.items(): if isinstance(expose_item, (dict, list)): if {"code", "info", "headers", "body"}.issubset(expose_item): resp = ApiResponse(expose_item) diff --git a/tests/modules/fetch/fetch_entities_test.py b/tests/modules/fetch/fetch_entities_test.py index 9343fdc9..1a33dbf1 100644 --- a/tests/modules/fetch/fetch_entities_test.py +++ b/tests/modules/fetch/fetch_entities_test.py @@ -190,7 +190,7 @@ class SampleCls: old_stdout = sys.stdout sys.stdout = TextIOWrapper(BytesIO(), sys.stdout.encoding) - HttpDocumentSupport.display([api_response.data], execution_ctx) + HttpDocumentSupport.display({"_response": api_response.data}, execution_ctx) # get output sys.stdout.seek(0) # jump to the start From f6fc189397e7bb7ce7941c497799d220dc83ab91 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 9 Oct 2024 10:43:18 +0600 Subject: [PATCH 173/245] feat: new service for presentation - refactor: use the service in workflow --- chk/infrastructure/view.py | 21 +++++++++++++++++++++ chk/modules/workflow/__init__.py | 19 +++---------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/chk/infrastructure/view.py b/chk/infrastructure/view.py index fd181949..dd272b3c 100644 --- a/chk/infrastructure/view.py +++ b/chk/infrastructure/view.py @@ -5,6 +5,10 @@ from pydantic import BaseModel +from chk.infrastructure.file_loader import ExecuteContext +from chk.infrastructure.helper import formatter +from chk.infrastructure.symbol_table import ExecResponse + class PresentationBuilder(BaseModel, abc.ABC): """Presentable signature""" @@ -22,3 +26,20 @@ def dump_json(self) -> str: """Signature to dump json""" raise NotImplementedError("Signature to dump json") + + +class PresentationService: + """Comment service for presentation""" + + @classmethod + def display( + cls, + ex_resp: ExecResponse, + exec_ctx: ExecuteContext, + presenter: type[PresentationBuilder], + ) -> None: + wfp = presenter(data=ex_resp) + if exec_ctx.options["format"]: + formatter(wfp.dump_fmt(), dump=exec_ctx.options["dump"]) + else: + formatter(wfp.dump_json(), dump=exec_ctx.options["dump"]) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 09f3226d..b802bccf 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -16,7 +16,7 @@ VersionedDocumentV2, ) from chk.infrastructure.file_loader import ExecuteContext, FileContext -from chk.infrastructure.helper import data_get, formatter, slugify +from chk.infrastructure.helper import data_get, slugify from chk.infrastructure.symbol_table import ( ExecResponse, ExposeManager, @@ -25,7 +25,7 @@ replace_value, ) from chk.infrastructure.version import DocumentVersionMaker -from chk.infrastructure.view import PresentationBuilder +from chk.infrastructure.view import PresentationService from chk.modules.fetch import task_fetch from chk.modules.validate import task_validation from chk.modules.workflow.entities import ( @@ -174,19 +174,6 @@ def execute_task( return _task_res - @classmethod - def display( - cls, - ex_resp: ExecResponse, - exec_ctx: ExecuteContext, - presenter: type[PresentationBuilder], - ) -> None: - wfp = presenter(data=ex_resp) - if exec_ctx.options["format"]: - formatter(wfp.dump_fmt(), dump=exec_ctx.options["dump"]) - else: - formatter(wfp.dump_json(), dump=exec_ctx.options["dump"]) - def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a workflow document""" @@ -232,4 +219,4 @@ def execute( exr = call(file_ctx=ctx, exec_ctx=exec_ctx) cb({ctx.filepath_hash: exr.variables_exec.data}) - WorkflowDocumentSupport.display(exr, exec_ctx, WorkflowPresenter) + PresentationService.display(exr, exec_ctx, WorkflowPresenter) From cb048793c6a92e59350261d1f438f2820933608d Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 11 Oct 2024 15:51:38 +0600 Subject: [PATCH 174/245] refactor: move AssertionEntry to entities --- chk/modules/validate/assertion_services.py | 32 -------------- chk/modules/validate/entities.py | 43 +++++++++++++++++++ .../validate/assertion_services_test.py | 11 +++-- 3 files changed, 48 insertions(+), 38 deletions(-) create mode 100644 chk/modules/validate/entities.py diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index 90e5a732..762c3ca1 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -2,8 +2,6 @@ Assertion services """ -import dataclasses -import typing import uuid from collections import UserDict from collections.abc import Callable @@ -63,36 +61,6 @@ } -@dataclasses.dataclass -class AssertionEntry: - """AssertionEntry holds one assertion operation - TODO: implement __iter__ for this class - """ - - assert_type: str - actual: typing.Any - expected: typing.Any - msg_pass: str = dataclasses.field(default_factory=str) - msg_fail: str = dataclasses.field(default_factory=str) - cast_actual_to: str = dataclasses.field(default_factory=str) - actual_given: typing.Any = dataclasses.field(default=NotImplemented) - actual_b4_cast: typing.Any = dataclasses.field(default=NotImplemented) - extra_fields: dict = dataclasses.field(default_factory=dict) - - @property - def as_dict(self) -> dict: - """Return dict representation""" - - if self.actual_given == NotImplemented: - self.actual_given = "" - if self.actual_b4_cast == NotImplemented: - self.actual_b4_cast = "" - if self.expected == NotImplemented: - self.expected = "" - - return dataclasses.asdict(self) - - class SingleTestRunResult(UserDict): """Result of an assertion run diff --git a/chk/modules/validate/entities.py b/chk/modules/validate/entities.py new file mode 100644 index 00000000..ae80bd2c --- /dev/null +++ b/chk/modules/validate/entities.py @@ -0,0 +1,43 @@ +from typing import Any +class AssertionEntry(BaseModel): + """AssertionEntry holds one assertion operation + TODO: implement __iter__ for this class + """ + + assert_type: str + actual: Any + expected: Any + msg_pass: str = Field(default_factory=str) + msg_fail: str = Field(default_factory=str) + cast_actual_to: str = Field(default_factory=str) + actual_given: Any = Field(default=NotImplemented) + actual_b4_cast: Any = Field(default=NotImplemented) + extra_fields: dict = Field(default_factory=dict) + + def __iter__(self): + yield "assert_type", self.assert_type + yield "actual", self.actual + yield "expected", "" if self.expected == NotImplemented else self.expected + yield "msg_pass", self.msg_pass + yield "msg_fail", self.msg_fail + yield "cast_actual_to", self.cast_actual_to + yield "actual_given", ( + "" if self.actual_given == NotImplemented else self.actual_given + ) + yield "actual_b4_cast", ( + "" if self.actual_b4_cast == NotImplemented else self.actual_b4_cast + ) + yield "extra_fields", self.extra_fields + + @property + def as_dict(self) -> dict: + """Return dict representation""" + + if self.actual_given == NotImplemented: + self.actual_given = "" + if self.actual_b4_cast == NotImplemented: + self.actual_b4_cast = "" + if self.expected == NotImplemented: + self.expected = "" + + return self.model_dump() diff --git a/tests/modules/validate/assertion_services_test.py b/tests/modules/validate/assertion_services_test.py index f938aae7..f6011504 100644 --- a/tests/modules/validate/assertion_services_test.py +++ b/tests/modules/validate/assertion_services_test.py @@ -168,14 +168,13 @@ def test__prepare_test_run_result(setup_assertion_entry_list_pass_assert): assert_resp = AssertionEntryListRunner._call_assertion_method(assert_list[0]) assert_item = assert_list[0] - resp = SingleTestRunResult(assert_used=assert_item) - AssertionEntryListRunner._prepare_test_run_result( - resp, assert_item, assert_resp + resp = AssertionEntryListRunner._prepare_test_run_result( + assert_item, assert_resp ) - assert resp["assert_used"] == assert_item - assert not resp["is_pass"] - assert resp["message"] + assert resp.assert_entry == assert_item + assert not resp.is_pass + assert resp.message @pytest.fixture From 0241cfd575f578fe22b25cdc34b42dd5e16e1049 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 11 Oct 2024 15:54:08 +0600 Subject: [PATCH 175/245] chore: update package versions --- Pipfile.lock | 1068 +++++++++++++++++++++++------------------- requirements-dev.txt | 9 +- requirements.txt | 4 +- 3 files changed, 603 insertions(+), 478 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 814735ff..c976fc0c 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -42,99 +42,114 @@ }, "charset-normalizer": { "hashes": [ - "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", - "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", - "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", - "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", - "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", - "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", - "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", - "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", - "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", - "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", - "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", - "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", - "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", - "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", - "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", - "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", - "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", - "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", - "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", - "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", - "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", - "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", - "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", - "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", - "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", - "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", - "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", - "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", - "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", - "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", - "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", - "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", - "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", - "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", - "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", - "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", - "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", - "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", - "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", - "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", - "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", - "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", - "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", - "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", - "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", - "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", - "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", - "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", - "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", - "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", - "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", - "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", - "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", - "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", - "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", - "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", - "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", - "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", - "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", - "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", - "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", - "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", - "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", - "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", - "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", - "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", - "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", - "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", - "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", - "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", - "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", - "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", - "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", - "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", - "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", - "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", - "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", - "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", - "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", - "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", - "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", - "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", - "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", - "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", - "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", - "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", - "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", - "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", - "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", - "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" + "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621", + "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", + "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", + "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912", + "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b", + "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d", + "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d", + "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95", + "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e", + "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", + "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", + "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab", + "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be", + "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907", + "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0", + "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2", + "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62", + "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62", + "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", + "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", + "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca", + "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455", + "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858", + "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", + "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", + "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", + "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", + "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea", + "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6", + "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", + "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749", + "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", + "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd", + "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99", + "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242", + "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee", + "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", + "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51", + "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8", + "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", + "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613", + "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742", + "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe", + "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3", + "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", + "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", + "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7", + "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", + "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", + "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417", + "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", + "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", + "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca", + "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa", + "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", + "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149", + "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41", + "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574", + "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0", + "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f", + "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", + "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654", + "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3", + "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19", + "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", + "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578", + "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", + "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", + "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51", + "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", + "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a", + "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade", + "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc", + "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6", + "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", + "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6", + "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2", + "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12", + "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf", + "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", + "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7", + "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", + "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", + "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b", + "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", + "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", + "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4", + "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", + "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", + "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a", + "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748", + "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b", + "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.3.2" + "version": "==3.4.0" }, "click": { "hashes": [ @@ -362,12 +377,12 @@ }, "xmltodict": { "hashes": [ - "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56", - "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852" + "sha256:338c8431e4fc554517651972d62f06958718f6262b04316917008e8fd677a6b0", + "sha256:3ef4a7b71c08f19047fcbea572e1d7f4207ab269da1565b5d40e9823d3894e63" ], "index": "pypi", - "markers": "python_version >= '3.4'", - "version": "==0.13.0" + "markers": "python_version >= '3.6'", + "version": "==0.14.1" } }, "develop": { @@ -381,99 +396,99 @@ }, "aiohttp": { "hashes": [ - "sha256:10c7932337285a6bfa3a5fe1fd4da90b66ebfd9d0cbd1544402e1202eb9a8c3e", - "sha256:177126e971782769b34933e94fddd1089cef0fe6b82fee8a885e539f5b0f0c6a", - "sha256:1ce46dfb49cfbf9e92818be4b761d4042230b1f0e05ffec0aad15b3eb162b905", - "sha256:1e7a6af57091056a79a35104d6ec29d98ec7f1fb7270ad9c6fff871b678d1ff8", - "sha256:21a72f4a9c69a8567a0aca12042f12bba25d3139fd5dd8eeb9931f4d9e8599cd", - "sha256:21c1925541ca84f7b5e0df361c0a813a7d6a56d3b0030ebd4b220b8d232015f9", - "sha256:21f8225f7dc187018e8433c9326be01477fb2810721e048b33ac49091b19fb4a", - "sha256:22cdeb684d8552490dd2697a5138c4ecb46f844892df437aaf94f7eea99af879", - "sha256:270e653b5a4b557476a1ed40e6b6ce82f331aab669620d7c95c658ef976c9c5e", - "sha256:2df786c96c57cd6b87156ba4c5f166af7b88f3fc05f9d592252fdc83d8615a3c", - "sha256:32710d6b3b6c09c60c794d84ca887a3a2890131c0b02b3cefdcc6709a2260a7c", - "sha256:33a68011a38020ed4ff41ae0dbf4a96a202562ecf2024bdd8f65385f1d07f6ef", - "sha256:365783e1b7c40b59ed4ce2b5a7491bae48f41cd2c30d52647a5b1ee8604c68ad", - "sha256:3a95d2686bc4794d66bd8de654e41b5339fab542b2bca9238aa63ed5f4f2ce82", - "sha256:3b2036479b6b94afaaca7d07b8a68dc0e67b0caf5f6293bb6a5a1825f5923000", - "sha256:3c7f270f4ca92760f98a42c45a58674fff488e23b144ec80b1cc6fa2effed377", - "sha256:3f6d47e392c27206701565c8df4cac6ebed28fdf6dcaea5b1eea7a4631d8e6db", - "sha256:40d2d719c3c36a7a65ed26400e2b45b2d9ed7edf498f4df38b2ae130f25a0d01", - "sha256:4618f0d2bf523043866a9ff8458900d8eb0a6d4018f251dae98e5f1fb699f3a8", - "sha256:471a8c47344b9cc309558b3fcc469bd2c12b49322b4b31eb386c4a2b2d44e44a", - "sha256:4954e6b06dd0be97e1a5751fc606be1f9edbdc553c5d9b57d72406a8fbd17f9d", - "sha256:497a7d20caea8855c5429db3cdb829385467217d7feb86952a6107e033e031b9", - "sha256:4b91f4f62ad39a8a42d511d66269b46cb2fb7dea9564c21ab6c56a642d28bff5", - "sha256:4dbf252ac19860e0ab56cd480d2805498f47c5a2d04f5995d8d8a6effd04b48c", - "sha256:4e10b04542d27e21538e670156e88766543692a0a883f243ba8fad9ddea82e53", - "sha256:5284997e3d88d0dfb874c43e51ae8f4a6f4ca5b90dcf22995035187253d430db", - "sha256:57359785f27394a8bcab0da6dcd46706d087dfebf59a8d0ad2e64a4bc2f6f94f", - "sha256:597128cb7bc5f068181b49a732961f46cb89f85686206289d6ccb5e27cb5fbe2", - "sha256:5aa1a073514cf59c81ad49a4ed9b5d72b2433638cd53160fd2f3a9cfa94718db", - "sha256:680dbcff5adc7f696ccf8bf671d38366a1f620b5616a1d333d0cb33956065395", - "sha256:6984dda9d79064361ab58d03f6c1e793ea845c6cfa89ffe1a7b9bb400dfd56bd", - "sha256:69de056022e7abf69cb9fec795515973cc3eeaff51e3ea8d72a77aa933a91c52", - "sha256:6c7efa6616a95e3bd73b8a69691012d2ef1f95f9ea0189e42f338fae080c2fc6", - "sha256:6d1ad868624f6cea77341ef2877ad4e71f7116834a6cd7ec36ec5c32f94ee6ae", - "sha256:713dff3f87ceec3bde4f3f484861464e722cf7533f9fa6b824ec82bb5a9010a7", - "sha256:71462f8eeca477cbc0c9700a9464e3f75f59068aed5e9d4a521a103692da72dc", - "sha256:7c38cfd355fd86c39b2d54651bd6ed7d63d4fe3b5553f364bae3306e2445f847", - "sha256:8296edd99d0dd9d0eb8b9e25b3b3506eef55c1854e9cc230f0b3f885f680410b", - "sha256:85431c9131a9a0f65260dc7a65c800ca5eae78c4c9931618f18c8e0933a0e0c1", - "sha256:85e4d7bd05d18e4b348441e7584c681eff646e3bf38f68b2626807f3add21aa2", - "sha256:8885ca09d3a9317219c0831276bfe26984b17b2c37b7bf70dd478d17092a4772", - "sha256:8960fabc20bfe4fafb941067cda8e23c8c17c98c121aa31c7bf0cdab11b07842", - "sha256:9443d9ebc5167ce1fbb552faf2d666fb22ef5716a8750be67efd140a7733738c", - "sha256:9721554bfa9e15f6e462da304374c2f1baede3cb06008c36c47fa37ea32f1dc4", - "sha256:98a4eb60e27033dee9593814ca320ee8c199489fbc6b2699d0f710584db7feb7", - "sha256:98fae99d5c2146f254b7806001498e6f9ffb0e330de55a35e72feb7cb2fa399b", - "sha256:9a281cba03bdaa341c70b7551b2256a88d45eead149f48b75a96d41128c240b3", - "sha256:a087c84b4992160ffef7afd98ef24177c8bd4ad61c53607145a8377457385100", - "sha256:a1ba7bc139592339ddeb62c06486d0fa0f4ca61216e14137a40d626c81faf10c", - "sha256:a3081246bab4d419697ee45e555cef5cd1def7ac193dff6f50be761d2e44f194", - "sha256:a72f89aea712c619b2ca32c6f4335c77125ede27530ad9705f4f349357833695", - "sha256:a78ba86d5a08207d1d1ad10b97aed6ea48b374b3f6831d02d0b06545ac0f181e", - "sha256:a961ee6f2cdd1a2be4735333ab284691180d40bad48f97bb598841bfcbfb94ec", - "sha256:ab1546fc8e00676febc81c548a876c7bde32f881b8334b77f84719ab2c7d28dc", - "sha256:ab2d6523575fc98896c80f49ac99e849c0b0e69cc80bf864eed6af2ae728a52b", - "sha256:aff048793d05e1ce05b62e49dccf81fe52719a13f4861530706619506224992b", - "sha256:b1a012677b8e0a39e181e218de47d6741c5922202e3b0b65e412e2ce47c39337", - "sha256:b667e2a03407d79a76c618dc30cedebd48f082d85880d0c9c4ec2faa3e10f43e", - "sha256:b91557ee0893da52794b25660d4f57bb519bcad8b7df301acd3898f7197c5d81", - "sha256:badb51d851358cd7535b647bb67af4854b64f3c85f0d089c737f75504d5910ec", - "sha256:c36074b26f3263879ba8e4dbd33db2b79874a3392f403a70b772701363148b9f", - "sha256:c4916070e12ae140110aa598031876c1bf8676a36a750716ea0aa5bd694aa2e7", - "sha256:c6769d71bfb1ed60321363a9bc05e94dcf05e38295ef41d46ac08919e5b00d19", - "sha256:c887019dbcb4af58a091a45ccf376fffe800b5531b45c1efccda4bedf87747ea", - "sha256:cd9716ef0224fe0d0336997eb242f40619f9f8c5c57e66b525a1ebf9f1d8cebe", - "sha256:ceacea31f8a55cdba02bc72c93eb2e1b77160e91f8abd605969c168502fd71eb", - "sha256:d088ca05381fd409793571d8e34eca06daf41c8c50a05aeed358d2d340c7af81", - "sha256:d3a79200a9d5e621c4623081ddb25380b713c8cf5233cd11c1aabad990bb9381", - "sha256:d82404a0e7b10e0d7f022cf44031b78af8a4f99bd01561ac68f7c24772fed021", - "sha256:d95ae4420669c871667aad92ba8cce6251d61d79c1a38504621094143f94a8b4", - "sha256:da57af0c54a302b7c655fa1ccd5b1817a53739afa39924ef1816e7b7c8a07ccb", - "sha256:ddb9b9764cfb4459acf01c02d2a59d3e5066b06a846a364fd1749aa168efa2be", - "sha256:de23085cf90911600ace512e909114385026b16324fa203cc74c81f21fd3276a", - "sha256:e1f0f7b27171b2956a27bd8f899751d0866ddabdd05cbddf3520f945130a908c", - "sha256:e32148b4a745e70a255a1d44b5664de1f2e24fcefb98a75b60c83b9e260ddb5b", - "sha256:e45fdfcb2d5bcad83373e4808825b7512953146d147488114575780640665027", - "sha256:e56bb7e31c4bc79956b866163170bc89fd619e0581ce813330d4ea46921a4881", - "sha256:e860985f30f3a015979e63e7ba1a391526cdac1b22b7b332579df7867848e255", - "sha256:ee3587506898d4a404b33bd19689286ccf226c3d44d7a73670c8498cd688e42c", - "sha256:ee97c4e54f457c366e1f76fbbf3e8effee9de57dae671084a161c00f481106ce", - "sha256:ef9b484604af05ca745b6108ca1aaa22ae1919037ae4f93aaf9a37ba42e0b835", - "sha256:f21e8f2abed9a44afc3d15bba22e0dfc71e5fa859bea916e42354c16102b036f", - "sha256:f23a6c1d09de5de89a33c9e9b229106cb70dcfdd55e81a3a3580eaadaa32bc92", - "sha256:f5d5d5401744dda50b943d8764508d0e60cc2d3305ac1e6420935861a9d544bc", - "sha256:f78e2a78432c537ae876a93013b7bc0027ba5b93ad7b3463624c4b6906489332", - "sha256:f8179855a4e4f3b931cb1764ec87673d3fbdcca2af496c8d30567d7b034a13db", - "sha256:fc0e7f91705445d79beafba9bb3057dd50830e40fe5417017a76a214af54e122", - "sha256:fe285a697c851734285369614443451462ce78aac2b77db23567507484b1dc6f", - "sha256:fe3d79d6af839ffa46fdc5d2cf34295390894471e9875050eafa584cb781508d", - "sha256:fecd55e7418fabd297fd836e65cbd6371aa4035a264998a091bbf13f94d9c44d", - "sha256:ffef3d763e4c8fc97e740da5b4d0f080b78630a3914f4e772a122bbfa608c1db" + "sha256:007ec22fbc573e5eb2fb7dec4198ef8f6bf2fe4ce20020798b2eb5d0abda6138", + "sha256:00819de9e45d42584bed046314c40ea7e9aea95411b38971082cad449392b08c", + "sha256:01948b1d570f83ee7bbf5a60ea2375a89dfb09fd419170e7f5af029510033d24", + "sha256:038f514fe39e235e9fef6717fbf944057bfa24f9b3db9ee551a7ecf584b5b480", + "sha256:03a42ac7895406220124c88911ebee31ba8b2d24c98507f4a8bf826b2937c7f2", + "sha256:05646ebe6b94cc93407b3bf34b9eb26c20722384d068eb7339de802154d61bc5", + "sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a", + "sha256:0b00807e2605f16e1e198f33a53ce3c4523114059b0c09c337209ae55e3823a8", + "sha256:0e1b370d8007c4ae31ee6db7f9a2fe801a42b146cec80a86766e7ad5c4a259cf", + "sha256:15ecd889a709b0080f02721255b3f80bb261c2293d3c748151274dfea93ac871", + "sha256:1b66ccafef7336a1e1f0e389901f60c1d920102315a56df85e49552308fc0486", + "sha256:1bbb122c557a16fafc10354b9d99ebf2f2808a660d78202f10ba9d50786384b9", + "sha256:1eb89d3d29adaf533588f209768a9c02e44e4baf832b08118749c5fad191781d", + "sha256:258c5dd01afc10015866114e210fb7365f0d02d9d059c3c3415382ab633fcbcb", + "sha256:2609e9ab08474702cc67b7702dbb8a80e392c54613ebe80db7e8dbdb79837c68", + "sha256:274cfa632350225ce3fdeb318c23b4a10ec25c0e2c880eff951a3842cf358ac1", + "sha256:28529e08fde6f12eba8677f5a8608500ed33c086f974de68cc65ab218713a59d", + "sha256:2b606353da03edcc71130b52388d25f9a30a126e04caef1fd637e31683033abd", + "sha256:30ca7c3b94708a9d7ae76ff281b2f47d8eaf2579cd05971b5dc681db8caac6e1", + "sha256:333cf6cf8e65f6a1e06e9eb3e643a0c515bb850d470902274239fea02033e9a8", + "sha256:3455522392fb15ff549d92fbf4b73b559d5e43dc522588f7eb3e54c3f38beee7", + "sha256:362f641f9071e5f3ee6f8e7d37d5ed0d95aae656adf4ef578313ee585b585959", + "sha256:3bcd391d083f636c06a68715e69467963d1f9600f85ef556ea82e9ef25f043f7", + "sha256:3dffb610a30d643983aeb185ce134f97f290f8935f0abccdd32c77bed9388b42", + "sha256:3fe407bf93533a6fa82dece0e74dbcaaf5d684e5a51862887f9eaebe6372cd79", + "sha256:413251f6fcf552a33c981c4709a6bba37b12710982fec8e558ae944bfb2abd38", + "sha256:438cd072f75bb6612f2aca29f8bd7cdf6e35e8f160bc312e49fbecab77c99e3a", + "sha256:4470c73c12cd9109db8277287d11f9dd98f77fc54155fc71a7738a83ffcc8ea8", + "sha256:45c3b868724137f713a38376fef8120c166d1eadd50da1855c112fe97954aed8", + "sha256:486f7aabfa292719a2753c016cc3a8f8172965cabb3ea2e7f7436c7f5a22a151", + "sha256:4f05e9727ce409358baa615dbeb9b969db94324a79b5a5cea45d39bdb01d82e6", + "sha256:50aed5155f819873d23520919e16703fc8925e509abbb1a1491b0087d1cd969e", + "sha256:50edbcad60d8f0e3eccc68da67f37268b5144ecc34d59f27a02f9611c1d4eec7", + "sha256:54ca74df1be3c7ca1cf7f4c971c79c2daf48d9aa65dea1a662ae18926f5bc8ce", + "sha256:578a4b875af3e0daaf1ac6fa983d93e0bbfec3ead753b6d6f33d467100cdc67b", + "sha256:597a079284b7ee65ee102bc3a6ea226a37d2b96d0418cc9047490f231dc09fe8", + "sha256:59bb3c54aa420521dc4ce3cc2c3fe2ad82adf7b09403fa1f48ae45c0cbde6628", + "sha256:5c6a5b8c7926ba5d8545c7dd22961a107526562da31a7a32fa2456baf040939f", + "sha256:64f6c17757251e2b8d885d728b6433d9d970573586a78b78ba8929b0f41d045a", + "sha256:679abe5d3858b33c2cf74faec299fda60ea9de62916e8b67e625d65bf069a3b7", + "sha256:741a46d58677d8c733175d7e5aa618d277cd9d880301a380fd296975a9cdd7bc", + "sha256:7789050d9e5d0c309c706953e5e8876e38662d57d45f936902e176d19f1c58ab", + "sha256:77abf6665ae54000b98b3c742bc6ea1d1fb31c394bcabf8b5d2c1ac3ebfe7f3b", + "sha256:79019094f87c9fb44f8d769e41dbb664d6e8fcfd62f665ccce36762deaa0e911", + "sha256:7b06b7843929e41a94ea09eb1ce3927865387e3e23ebe108e0d0d09b08d25be9", + "sha256:7e338c0523d024fad378b376a79faff37fafb3c001872a618cde1d322400a572", + "sha256:7ea7ffc6d6d6f8a11e6f40091a1040995cdff02cfc9ba4c2f30a516cb2633554", + "sha256:8105fd8a890df77b76dd3054cddf01a879fc13e8af576805d667e0fa0224c35d", + "sha256:84afcdea18eda514c25bc68b9af2a2b1adea7c08899175a51fe7c4fb6d551257", + "sha256:9294bbb581f92770e6ed5c19559e1e99255e4ca604a22c5c6397b2f9dd3ee42c", + "sha256:93429602396f3383a797a2a70e5f1de5df8e35535d7806c9f91df06f297e109b", + "sha256:9627cc1a10c8c409b5822a92d57a77f383b554463d1884008e051c32ab1b3742", + "sha256:998f3bd3cfc95e9424a6acd7840cbdd39e45bc09ef87533c006f94ac47296090", + "sha256:9c72109213eb9d3874f7ac8c0c5fa90e072d678e117d9061c06e30c85b4cf0e6", + "sha256:9fc1500fd2a952c5c8e3b29aaf7e3cc6e27e9cfc0a8819b3bce48cc1b849e4cc", + "sha256:a3f00003de6eba42d6e94fabb4125600d6e484846dbf90ea8e48a800430cc142", + "sha256:a45d85cf20b5e0d0aa5a8dca27cce8eddef3292bc29d72dcad1641f4ed50aa16", + "sha256:a7d8d14fe962153fc681f6366bdec33d4356f98a3e3567782aac1b6e0e40109a", + "sha256:a8fa23fe62c436ccf23ff930149c047f060c7126eae3ccea005f0483f27b2e28", + "sha256:aa6658732517ddabe22c9036479eabce6036655ba87a0224c612e1ae6af2087e", + "sha256:aafc8ee9b742ce75044ae9a4d3e60e3d918d15a4c2e08a6c3c3e38fa59b92d94", + "sha256:ab5a5a0c7a7991d90446a198689c0535be89bbd6b410a1f9a66688f0880ec026", + "sha256:acd48d5b80ee80f9432a165c0ac8cbf9253eaddb6113269a5e18699b33958dbb", + "sha256:ad7593bb24b2ab09e65e8a1d385606f0f47c65b5a2ae6c551db67d6653e78c28", + "sha256:baa42524a82f75303f714108fea528ccacf0386af429b69fff141ffef1c534f9", + "sha256:bdfcf6443637c148c4e1a20c48c566aa694fa5e288d34b20fcdc58507882fed3", + "sha256:be7443669ae9c016b71f402e43208e13ddf00912f47f623ee5994e12fc7d4b3f", + "sha256:c02a30b904282777d872266b87b20ed8cc0d1501855e27f831320f471d54d983", + "sha256:c1277cd707c465cd09572a774559a3cc7c7a28802eb3a2a9472588f062097205", + "sha256:c30a0eafc89d28e7f959281b58198a9fa5e99405f716c0289b7892ca345fe45f", + "sha256:c5ce2ce7c997e1971b7184ee37deb6ea9922ef5163c6ee5aa3c274b05f9e12fa", + "sha256:c823bc3971c44ab93e611ab1a46b1eafeae474c0c844aff4b7474287b75fe49c", + "sha256:ce0cdc074d540265bfeb31336e678b4e37316849d13b308607efa527e981f5c2", + "sha256:d1720b4f14c78a3089562b8875b53e36b51c97c51adc53325a69b79b4b48ebcb", + "sha256:d183cf9c797a5291e8301790ed6d053480ed94070637bfaad914dd38b0981f67", + "sha256:d9010c31cd6fa59438da4e58a7f19e4753f7f264300cd152e7f90d4602449762", + "sha256:d9e5e4a85bdb56d224f412d9c98ae4cbd032cc4f3161818f692cd81766eee65a", + "sha256:da1dee8948d2137bb51fbb8a53cce6b1bcc86003c6b42565f008438b806cccd8", + "sha256:df9270660711670e68803107d55c2b5949c2e0f2e4896da176e1ecfc068b974a", + "sha256:e00e3505cd80440f6c98c6d69269dcc2a119f86ad0a9fd70bccc59504bebd68a", + "sha256:e48d5021a84d341bcaf95c8460b152cfbad770d28e5fe14a768988c461b821bc", + "sha256:e7f8b04d83483577fd9200461b057c9f14ced334dcb053090cea1da9c8321a91", + "sha256:edfe3341033a6b53a5c522c802deb2079eee5cbfbb0af032a55064bd65c73a23", + "sha256:ef9c33cc5cbca35808f6c74be11eb7f5f6b14d2311be84a15b594bd3e58b5527", + "sha256:f2d4324a98062be0525d16f768a03e0bbb3b9fe301ceee99611dc9a7953124e6", + "sha256:f3935f82f6f4a3820270842e90456ebad3af15810cf65932bd24da4463bc0a4c", + "sha256:f614ab0c76397661b90b6851a030004dac502e48260ea10f2441abd2207fbcc7", + "sha256:f7db54c7914cc99d901d93a34704833568d86c20925b2762f9fa779f9cd2e70f", + "sha256:fbc6264158392bad9df19537e872d476f7c57adf718944cc1e4495cbabf38e2a", + "sha256:fe2fb38c2ed905a2582948e2de560675e9dfbee94c6d5ccdb1301c6d0a5bf092", + "sha256:ffe595f10566f8276b76dc3a11ae4bb7eba1aac8ddd75811736a15b0d5311414" ], - "version": "==3.10.8" + "version": "==3.10.10" }, "aiosignal": { "hashes": [ @@ -485,11 +500,11 @@ }, "astroid": { "hashes": [ - "sha256:5eba185467253501b62a9f113c263524b4f5d55e1b30456370eed4cdbd6438fd", - "sha256:e73d0b62dd680a7c07cb2cd0ce3c22570b044dd01bd994bc3a2dd16c6cbba162" + "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d", + "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8" ], "markers": "python_full_version >= '3.9.0'", - "version": "==3.3.4" + "version": "==3.3.5" }, "asttokens": { "hashes": [ @@ -511,31 +526,31 @@ "d" ], "hashes": [ - "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6", - "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e", - "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f", - "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018", - "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e", - "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd", - "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4", - "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed", - "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2", - "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42", - "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af", - "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb", - "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368", - "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb", - "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af", - "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed", - "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47", - "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2", - "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a", - "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c", - "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920", - "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1" + "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f", + "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd", + "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea", + "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981", + "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b", + "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7", + "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8", + "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175", + "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d", + "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392", + "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad", + "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f", + "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f", + "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b", + "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875", + "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3", + "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800", + "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65", + "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2", + "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812", + "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50", + "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e" ], - "markers": "python_version >= '3.8'", - "version": "==24.8.0" + "markers": "python_version >= '3.9'", + "version": "==24.10.0" }, "certifi": { "hashes": [ @@ -547,99 +562,114 @@ }, "charset-normalizer": { "hashes": [ - "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", - "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", - "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", - "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", - "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", - "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", - "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", - "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", - "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", - "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", - "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", - "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", - "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", - "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", - "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", - "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", - "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", - "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", - "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", - "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", - "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", - "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", - "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", - "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", - "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", - "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", - "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", - "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", - "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", - "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", - "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", - "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", - "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", - "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", - "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", - "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", - "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", - "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", - "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", - "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", - "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", - "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", - "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", - "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", - "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", - "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", - "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", - "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", - "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", - "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", - "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", - "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", - "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", - "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", - "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", - "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", - "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", - "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", - "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", - "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", - "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", - "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", - "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", - "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", - "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", - "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", - "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", - "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", - "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", - "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", - "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", - "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", - "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", - "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", - "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", - "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", - "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", - "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", - "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", - "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", - "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", - "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", - "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", - "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", - "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", - "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", - "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", - "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", - "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", - "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" + "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621", + "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", + "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", + "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912", + "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b", + "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d", + "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d", + "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95", + "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e", + "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", + "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", + "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab", + "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be", + "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907", + "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0", + "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2", + "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62", + "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62", + "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", + "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", + "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca", + "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455", + "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858", + "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", + "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", + "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", + "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", + "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea", + "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6", + "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", + "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749", + "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", + "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd", + "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99", + "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242", + "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee", + "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", + "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51", + "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8", + "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", + "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613", + "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742", + "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe", + "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3", + "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", + "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", + "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7", + "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", + "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", + "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417", + "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", + "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", + "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca", + "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa", + "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", + "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149", + "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41", + "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574", + "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0", + "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f", + "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", + "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654", + "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3", + "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19", + "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", + "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578", + "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", + "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", + "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51", + "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", + "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a", + "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade", + "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc", + "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6", + "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", + "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6", + "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2", + "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12", + "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf", + "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", + "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7", + "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", + "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", + "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b", + "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", + "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", + "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4", + "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", + "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", + "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a", + "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748", + "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b", + "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.3.2" + "version": "==3.4.0" }, "click": { "hashes": [ @@ -663,81 +693,71 @@ "toml" ], "hashes": [ - "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca", - "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d", - "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6", - "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989", - "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c", - "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b", - "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223", - "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f", - "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56", - "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3", - "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8", - "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb", - "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388", - "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0", - "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a", - "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8", - "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f", - "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a", - "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962", - "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8", - "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391", - "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc", - "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2", - "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155", - "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb", - "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0", - "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c", - "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a", - "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004", - "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060", - "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232", - "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93", - "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129", - "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163", - "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de", - "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6", - "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23", - "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569", - "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d", - "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778", - "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d", - "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36", - "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a", - "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6", - "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34", - "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704", - "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106", - "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9", - "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862", - "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b", - "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255", - "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16", - "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3", - "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133", - "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb", - "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657", - "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d", - "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca", - "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36", - "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c", - "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e", - "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff", - "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7", - "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5", - "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02", - "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c", - "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df", - "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3", - "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a", - "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959", - "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234", - "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc" + "sha256:078a87519057dacb5d77e333f740708ec2a8f768655f1db07f8dfd28d7a005f0", + "sha256:087932079c065d7b8ebadd3a0160656c55954144af6439886c8bcf78bbbcde7f", + "sha256:0bbae11c138585c89fb4e991faefb174a80112e1a7557d507aaa07675c62e66b", + "sha256:0ff2ef83d6d0b527b5c9dad73819b24a2f76fdddcfd6c4e7a4d7e73ecb0656b4", + "sha256:12179eb0575b8900912711688e45474f04ab3934aaa7b624dea7b3c511ecc90f", + "sha256:1e5e92e3e84a8718d2de36cd8387459cba9a4508337b8c5f450ce42b87a9e760", + "sha256:2186369a654a15628e9c1c9921409a6b3eda833e4b91f3ca2a7d9f77abb4987c", + "sha256:21c0ea0d4db8a36b275cb6fb2437a3715697a4ba3cb7b918d3525cc75f726304", + "sha256:24500f4b0e03aab60ce575c85365beab64b44d4db837021e08339f61d1fbfe52", + "sha256:2b636a301e53964550e2f3094484fa5a96e699db318d65398cfba438c5c92171", + "sha256:343056c5e0737487a5291f5691f4dfeb25b3e3c8699b4d36b92bb0e586219d14", + "sha256:35a51598f29b2a19e26d0908bd196f771a9b1c5d9a07bf20be0adf28f1ad4f77", + "sha256:39d3b964abfe1519b9d313ab28abf1d02faea26cd14b27f5283849bf59479ff5", + "sha256:3ec528ae69f0a139690fad6deac8a7d33629fa61ccce693fdd07ddf7e9931fba", + "sha256:47ccb6e99a3031ffbbd6e7cc041e70770b4fe405370c66a54dbf26a500ded80b", + "sha256:4eea60c79d36a8f39475b1af887663bc3ae4f31289cd216f514ce18d5938df40", + "sha256:536f77f2bf5797983652d1d55f1a7272a29afcc89e3ae51caa99b2db4e89d658", + "sha256:5ed69befa9a9fc796fe015a7040c9398722d6b97df73a6b608e9e275fa0932b0", + "sha256:62ab4231c01e156ece1b3a187c87173f31cbeee83a5e1f6dff17f288dca93345", + "sha256:667952739daafe9616db19fbedbdb87917eee253ac4f31d70c7587f7ab531b4e", + "sha256:69f251804e052fc46d29d0e7348cdc5fcbfc4861dc4a1ebedef7e78d241ad39e", + "sha256:6c2ba1e0c24d8fae8f2cf0aeb2fc0a2a7f69b6d20bd8d3749fd6b36ecef5edf0", + "sha256:6e85830eed5b5263ffa0c62428e43cb844296f3b4461f09e4bdb0d44ec190bc2", + "sha256:7571e8bbecc6ac066256f9de40365ff833553e2e0c0c004f4482facb131820ef", + "sha256:7781f4f70c9b0b39e1b129b10c7d43a4e0c91f90c60435e6da8288efc2b73438", + "sha256:7926d8d034e06b479797c199747dd774d5e86179f2ce44294423327a88d66ca7", + "sha256:7b80fbb0da3aebde102a37ef0138aeedff45997e22f8962e5f16ae1742852676", + "sha256:7fca4a92c8a7a73dee6946471bce6d1443d94155694b893b79e19ca2a540d86e", + "sha256:84c4315577f7cd511d6250ffd0f695c825efe729f4205c0340f7004eda51191f", + "sha256:8d9c5d13927d77af4fbe453953810db766f75401e764727e73a6ee4f82527b3e", + "sha256:9681516288e3dcf0aa7c26231178cc0be6cac9705cac06709f2353c5b406cfea", + "sha256:97df87e1a20deb75ac7d920c812e9326096aa00a9a4b6d07679b4f1f14b06c90", + "sha256:9bcd51eeca35a80e76dc5794a9dd7cb04b97f0e8af620d54711793bfc1fbba4b", + "sha256:9c6b0c1cafd96213a0327cf680acb39f70e452caf8e9a25aeb05316db9c07f89", + "sha256:a5f81e68aa62bc0cfca04f7b19eaa8f9c826b53fc82ab9e2121976dc74f131f3", + "sha256:a663b180b6669c400b4630a24cc776f23a992d38ce7ae72ede2a397ce6b0f170", + "sha256:a7b2e437fbd8fae5bc7716b9c7ff97aecc95f0b4d56e4ca08b3c8d8adcaadb84", + "sha256:a867d26f06bcd047ef716175b2696b315cb7571ccb951006d61ca80bbc356e9e", + "sha256:aa68a6cdbe1bc6793a9dbfc38302c11599bbe1837392ae9b1d238b9ef3dafcf1", + "sha256:ab31fdd643f162c467cfe6a86e9cb5f1965b632e5e65c072d90854ff486d02cf", + "sha256:ad4ef1c56b47b6b9024b939d503ab487231df1f722065a48f4fc61832130b90e", + "sha256:b92f9ca04b3e719d69b02dc4a69debb795af84cb7afd09c5eb5d54b4a1ae2191", + "sha256:bb21bac7783c1bf6f4bbe68b1e0ff0d20e7e7732cfb7995bc8d96e23aa90fc7b", + "sha256:bf4eeecc9e10f5403ec06138978235af79c9a79af494eb6b1d60a50b49ed2869", + "sha256:bfde025e2793a22efe8c21f807d276bd1d6a4bcc5ba6f19dbdfc4e7a12160909", + "sha256:c37faddc8acd826cfc5e2392531aba734b229741d3daec7f4c777a8f0d4993e5", + "sha256:c71965d1ced48bf97aab79fad56df82c566b4c498ffc09c2094605727c4b7e36", + "sha256:c9192925acc33e146864b8cf037e2ed32a91fdf7644ae875f5d46cd2ef086a5f", + "sha256:c9df1950fb92d49970cce38100d7e7293c84ed3606eaa16ea0b6bc27175bb667", + "sha256:cdfcf2e914e2ba653101157458afd0ad92a16731eeba9a611b5cbb3e7124e74b", + "sha256:d03a060ac1a08e10589c27d509bbdb35b65f2d7f3f8d81cf2fa199877c7bc58a", + "sha256:d20c3d1f31f14d6962a4e2f549c21d31e670b90f777ef4171be540fb7fb70f02", + "sha256:e4ee15b267d2dad3e8759ca441ad450c334f3733304c55210c2a44516e8d5530", + "sha256:e8ea055b3ea046c0f66217af65bc193bbbeca1c8661dc5fd42698db5795d2627", + "sha256:ebabdf1c76593a09ee18c1a06cd3022919861365219ea3aca0247ededf6facd6", + "sha256:ebc94fadbd4a3f4215993326a6a00e47d79889391f5659bf310f55fe5d9f581c", + "sha256:ed5ac02126f74d190fa2cc14a9eb2a5d9837d5863920fa472b02eb1595cdc925", + "sha256:f01e53575f27097d75d42de33b1b289c74b16891ce576d767ad8c48d17aeb5e0", + "sha256:f361296ca7054f0936b02525646b2731b32c8074ba6defab524b79b2b7eeac72", + "sha256:f9035695dadfb397bee9eeaf1dc7fbeda483bf7664a7397a629846800ce6e276", + "sha256:fcad7d5d2bbfeae1026b395036a8aa5abf67e8038ae7e6a25c7d0f88b10a8e6a", + "sha256:ff797320dcbff57caa6b2301c3913784a010e13b1f6cf4ab3f563f3c5e7919db" ], - "markers": "python_version >= '3.8'", - "version": "==7.6.1" + "markers": "python_version >= '3.9'", + "version": "==7.6.2" }, "coveralls": { "hashes": [ @@ -1074,6 +1094,110 @@ "markers": "python_version >= '3.8'", "version": "==1.5.0" }, + "propcache": { + "hashes": [ + "sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9", + "sha256:0e53cb83fdd61cbd67202735e6a6687a7b491c8742dfc39c9e01e80354956763", + "sha256:1235c01ddaa80da8235741e80815ce381c5267f96cc49b1477fdcf8c047ef325", + "sha256:140fbf08ab3588b3468932974a9331aff43c0ab8a2ec2c608b6d7d1756dbb6cb", + "sha256:191db28dc6dcd29d1a3e063c3be0b40688ed76434622c53a284e5427565bbd9b", + "sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09", + "sha256:1ec43d76b9677637a89d6ab86e1fef70d739217fefa208c65352ecf0282be957", + "sha256:20a617c776f520c3875cf4511e0d1db847a076d720714ae35ffe0df3e440be68", + "sha256:218db2a3c297a3768c11a34812e63b3ac1c3234c3a086def9c0fee50d35add1f", + "sha256:22aa8f2272d81d9317ff5756bb108021a056805ce63dd3630e27d042c8092798", + "sha256:25a1f88b471b3bc911d18b935ecb7115dff3a192b6fef46f0bfaf71ff4f12418", + "sha256:25c8d773a62ce0451b020c7b29a35cfbc05de8b291163a7a0f3b7904f27253e6", + "sha256:2a60ad3e2553a74168d275a0ef35e8c0a965448ffbc3b300ab3a5bb9956c2162", + "sha256:2a66df3d4992bc1d725b9aa803e8c5a66c010c65c741ad901e260ece77f58d2f", + "sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036", + "sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8", + "sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2", + "sha256:33ac8f098df0585c0b53009f039dfd913b38c1d2edafed0cedcc0c32a05aa110", + "sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23", + "sha256:363ea8cd3c5cb6679f1c2f5f1f9669587361c062e4899fce56758efa928728f8", + "sha256:375a12d7556d462dc64d70475a9ee5982465fbb3d2b364f16b86ba9135793638", + "sha256:388f3217649d6d59292b722d940d4d2e1e6a7003259eb835724092a1cca0203a", + "sha256:3947483a381259c06921612550867b37d22e1df6d6d7e8361264b6d037595f44", + "sha256:39e104da444a34830751715f45ef9fc537475ba21b7f1f5b0f4d71a3b60d7fe2", + "sha256:3c997f8c44ec9b9b0bcbf2d422cc00a1d9b9c681f56efa6ca149a941e5560da2", + "sha256:3dfafb44f7bb35c0c06eda6b2ab4bfd58f02729e7c4045e179f9a861b07c9850", + "sha256:3ebbcf2a07621f29638799828b8d8668c421bfb94c6cb04269130d8de4fb7136", + "sha256:3f88a4095e913f98988f5b338c1d4d5d07dbb0b6bad19892fd447484e483ba6b", + "sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887", + "sha256:4569158070180c3855e9c0791c56be3ceeb192defa2cdf6a3f39e54319e56b89", + "sha256:466c219deee4536fbc83c08d09115249db301550625c7fef1c5563a584c9bc87", + "sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348", + "sha256:4c7dde9e533c0a49d802b4f3f218fa9ad0a1ce21f2c2eb80d5216565202acab4", + "sha256:53d1bd3f979ed529f0805dd35ddaca330f80a9a6d90bc0121d2ff398f8ed8861", + "sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e", + "sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c", + "sha256:56bb5c98f058a41bb58eead194b4db8c05b088c93d94d5161728515bd52b052b", + "sha256:5a5b3bb545ead161be780ee85a2b54fdf7092815995661947812dde94a40f6fb", + "sha256:5f2564ec89058ee7c7989a7b719115bdfe2a2fb8e7a4543b8d1c0cc4cf6478c1", + "sha256:608cce1da6f2672a56b24a015b42db4ac612ee709f3d29f27a00c943d9e851de", + "sha256:63f13bf09cc3336eb04a837490b8f332e0db41da66995c9fd1ba04552e516354", + "sha256:662dd62358bdeaca0aee5761de8727cfd6861432e3bb828dc2a693aa0471a563", + "sha256:676135dcf3262c9c5081cc8f19ad55c8a64e3f7282a21266d05544450bffc3a5", + "sha256:67aeb72e0f482709991aa91345a831d0b707d16b0257e8ef88a2ad246a7280bf", + "sha256:67b69535c870670c9f9b14a75d28baa32221d06f6b6fa6f77a0a13c5a7b0a5b9", + "sha256:682a7c79a2fbf40f5dbb1eb6bfe2cd865376deeac65acf9beb607505dced9e12", + "sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4", + "sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5", + "sha256:6e2e54267980349b723cff366d1e29b138b9a60fa376664a157a342689553f71", + "sha256:73e4b40ea0eda421b115248d7e79b59214411109a5bc47d0d48e4c73e3b8fcf9", + "sha256:74acd6e291f885678631b7ebc85d2d4aec458dd849b8c841b57ef04047833bed", + "sha256:7665f04d0c7f26ff8bb534e1c65068409bf4687aa2534faf7104d7182debb336", + "sha256:7735e82e3498c27bcb2d17cb65d62c14f1100b71723b68362872bca7d0913d90", + "sha256:77a86c261679ea5f3896ec060be9dc8e365788248cc1e049632a1be682442063", + "sha256:7cf18abf9764746b9c8704774d8b06714bcb0a63641518a3a89c7f85cc02c2ad", + "sha256:83928404adf8fb3d26793665633ea79b7361efa0287dfbd372a7e74311d51ee6", + "sha256:8e40876731f99b6f3c897b66b803c9e1c07a989b366c6b5b475fafd1f7ba3fb8", + "sha256:8f188cfcc64fb1266f4684206c9de0e80f54622c3f22a910cbd200478aeae61e", + "sha256:91997d9cb4a325b60d4e3f20967f8eb08dfcb32b22554d5ef78e6fd1dda743a2", + "sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7", + "sha256:92fe151145a990c22cbccf9ae15cae8ae9eddabfc949a219c9f667877e40853d", + "sha256:945db8ee295d3af9dbdbb698cce9bbc5c59b5c3fe328bbc4387f59a8a35f998d", + "sha256:9517d5e9e0731957468c29dbfd0f976736a0e55afaea843726e887f36fe017df", + "sha256:952e0d9d07609d9c5be361f33b0d6d650cd2bae393aabb11d9b719364521984b", + "sha256:97a58a28bcf63284e8b4d7b460cbee1edaab24634e82059c7b8c09e65284f178", + "sha256:97e48e8875e6c13909c800fa344cd54cc4b2b0db1d5f911f840458a500fde2c2", + "sha256:9e0f07b42d2a50c7dd2d8675d50f7343d998c64008f1da5fef888396b7f84630", + "sha256:a3dc1a4b165283bd865e8f8cb5f0c64c05001e0718ed06250d8cac9bec115b48", + "sha256:a3ebe9a75be7ab0b7da2464a77bb27febcb4fab46a34f9288f39d74833db7f61", + "sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89", + "sha256:a6ed8db0a556343d566a5c124ee483ae113acc9a557a807d439bcecc44e7dfbb", + "sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3", + "sha256:b33d7a286c0dc1a15f5fc864cc48ae92a846df287ceac2dd499926c3801054a6", + "sha256:bc092ba439d91df90aea38168e11f75c655880c12782facf5cf9c00f3d42b562", + "sha256:c436130cc779806bdf5d5fae0d848713105472b8566b75ff70048c47d3961c5b", + "sha256:c5869b8fd70b81835a6f187c5fdbe67917a04d7e52b6e7cc4e5fe39d55c39d58", + "sha256:c5ecca8f9bab618340c8e848d340baf68bcd8ad90a8ecd7a4524a81c1764b3db", + "sha256:cfac69017ef97db2438efb854edf24f5a29fd09a536ff3a992b75990720cdc99", + "sha256:d2f0d0f976985f85dfb5f3d685697ef769faa6b71993b46b295cdbbd6be8cc37", + "sha256:d5bed7f9805cc29c780f3aee05de3262ee7ce1f47083cfe9f77471e9d6777e83", + "sha256:d6a21ef516d36909931a2967621eecb256018aeb11fc48656e3257e73e2e247a", + "sha256:d9b6ddac6408194e934002a69bcaadbc88c10b5f38fb9307779d1c629181815d", + "sha256:db47514ffdbd91ccdc7e6f8407aac4ee94cc871b15b577c1c324236b013ddd04", + "sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70", + "sha256:e4a91d44379f45f5e540971d41e4626dacd7f01004826a18cb048e7da7e96544", + "sha256:e63e3e1e0271f374ed489ff5ee73d4b6e7c60710e1f76af5f0e1a6117cd26394", + "sha256:e70fac33e8b4ac63dfc4c956fd7d85a0b1139adcfc0d964ce288b7c527537fea", + "sha256:ecddc221a077a8132cf7c747d5352a15ed763b674c0448d811f408bf803d9ad7", + "sha256:f45eec587dafd4b2d41ac189c2156461ebd0c1082d2fe7013571598abb8505d1", + "sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793", + "sha256:f571aea50ba5623c308aa146eb650eebf7dbe0fd8c5d946e28343cb3b5aad577", + "sha256:f60f0ac7005b9f5a6091009b09a419ace1610e163fa5deaba5ce3484341840e7", + "sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57", + "sha256:f6d5749fdd33d90e34c2efb174c7e236829147a2713334d708746e94c4bde40d", + "sha256:f902804113e032e2cdf8c71015651c97af6418363bea8d78dc0911d56c335032", + "sha256:fa1076244f54bb76e65e22cb6910365779d5c3d71d1f18b275f1dfc7b0d71b4d", + "sha256:fc2db02409338bf36590aa985a461b2c96fce91f8e7e0f14c50c5fcc4f229016", + "sha256:ffcad6c564fe6b9b8916c1aefbb37a362deebf9394bd2974e9d84232e3e08504" + ], + "markers": "python_version >= '3.8'", + "version": "==0.2.0" + }, "pycodestyle": { "hashes": [ "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3", @@ -1186,101 +1310,101 @@ }, "yarl": { "hashes": [ - "sha256:08d7148ff11cb8e886d86dadbfd2e466a76d5dd38c7ea8ebd9b0e07946e76e4b", - "sha256:098b870c18f1341786f290b4d699504e18f1cd050ed179af8123fd8232513424", - "sha256:11b3ca8b42a024513adce810385fcabdd682772411d95bbbda3b9ed1a4257644", - "sha256:1891d69a6ba16e89473909665cd355d783a8a31bc84720902c5911dbb6373465", - "sha256:1bbb418f46c7f7355084833051701b2301092e4611d9e392360c3ba2e3e69f88", - "sha256:1d0828e17fa701b557c6eaed5edbd9098eb62d8838344486248489ff233998b8", - "sha256:1d8e3ca29f643dd121f264a7c89f329f0fcb2e4461833f02de6e39fef80f89da", - "sha256:1fa56f34b2236f5192cb5fceba7bbb09620e5337e0b6dfe2ea0ddbd19dd5b154", - "sha256:216a6785f296169ed52cd7dcdc2612f82c20f8c9634bf7446327f50398732a51", - "sha256:22b739f99c7e4787922903f27a892744189482125cc7b95b747f04dd5c83aa9f", - "sha256:2430cf996113abe5aee387d39ee19529327205cda975d2b82c0e7e96e5fdabdc", - "sha256:269c201bbc01d2cbba5b86997a1e0f73ba5e2f471cfa6e226bcaa7fd664b598d", - "sha256:298c1eecfd3257aa16c0cb0bdffb54411e3e831351cd69e6b0739be16b1bdaa8", - "sha256:2a93a4557f7fc74a38ca5a404abb443a242217b91cd0c4840b1ebedaad8919d4", - "sha256:2b2442a415a5f4c55ced0fade7b72123210d579f7d950e0b5527fc598866e62c", - "sha256:2db874dd1d22d4c2c657807562411ffdfabec38ce4c5ce48b4c654be552759dc", - "sha256:309c104ecf67626c033845b860d31594a41343766a46fa58c3309c538a1e22b2", - "sha256:31497aefd68036d8e31bfbacef915826ca2e741dbb97a8d6c7eac66deda3b606", - "sha256:373f16f38721c680316a6a00ae21cc178e3a8ef43c0227f88356a24c5193abd6", - "sha256:396e59b8de7e4d59ff5507fb4322d2329865b909f29a7ed7ca37e63ade7f835c", - "sha256:3bb83a0f12701c0b91112a11148b5217617982e1e466069d0555be9b372f2734", - "sha256:3de86547c820e4f4da4606d1c8ab5765dd633189791f15247706a2eeabc783ae", - "sha256:3fdbf0418489525231723cdb6c79e7738b3cbacbaed2b750cb033e4ea208f220", - "sha256:40c6e73c03a6befb85b72da213638b8aaa80fe4136ec8691560cf98b11b8ae6e", - "sha256:44a4c40a6f84e4d5955b63462a0e2a988f8982fba245cf885ce3be7618f6aa7d", - "sha256:44b07e1690f010c3c01d353b5790ec73b2f59b4eae5b0000593199766b3f7a5c", - "sha256:45d23c4668d4925688e2ea251b53f36a498e9ea860913ce43b52d9605d3d8177", - "sha256:45f209fb4bbfe8630e3d2e2052535ca5b53d4ce2d2026bed4d0637b0416830da", - "sha256:4afdf84610ca44dcffe8b6c22c68f309aff96be55f5ea2fa31c0c225d6b83e23", - "sha256:4feaaa4742517eaceafcbe74595ed335a494c84634d33961214b278126ec1485", - "sha256:576365c9f7469e1f6124d67b001639b77113cfd05e85ce0310f5f318fd02fe85", - "sha256:5820bd4178e6a639b3ef1db8b18500a82ceab6d8b89309e121a6859f56585b05", - "sha256:5989a38ba1281e43e4663931a53fbf356f78a0325251fd6af09dd03b1d676a09", - "sha256:5a9bacedbb99685a75ad033fd4de37129449e69808e50e08034034c0bf063f99", - "sha256:5b66c87da3c6da8f8e8b648878903ca54589038a0b1e08dde2c86d9cd92d4ac9", - "sha256:5c5e32fef09ce101fe14acd0f498232b5710effe13abac14cd95de9c274e689e", - "sha256:658e8449b84b92a4373f99305de042b6bd0d19bf2080c093881e0516557474a5", - "sha256:6a2acde25be0cf9be23a8f6cbd31734536a264723fca860af3ae5e89d771cd71", - "sha256:6a5185ad722ab4dd52d5fb1f30dcc73282eb1ed494906a92d1a228d3f89607b0", - "sha256:6b7f6e699304717fdc265a7e1922561b02a93ceffdaefdc877acaf9b9f3080b8", - "sha256:703b0f584fcf157ef87816a3c0ff868e8c9f3c370009a8b23b56255885528f10", - "sha256:7055bbade838d68af73aea13f8c86588e4bcc00c2235b4b6d6edb0dbd174e246", - "sha256:78f271722423b2d4851cf1f4fa1a1c4833a128d020062721ba35e1a87154a049", - "sha256:7addd26594e588503bdef03908fc207206adac5bd90b6d4bc3e3cf33a829f57d", - "sha256:81bad32c8f8b5897c909bf3468bf601f1b855d12f53b6af0271963ee67fff0d2", - "sha256:82e692fb325013a18a5b73a4fed5a1edaa7c58144dc67ad9ef3d604eccd451ad", - "sha256:84bbcdcf393139f0abc9f642bf03f00cac31010f3034faa03224a9ef0bb74323", - "sha256:86c438ce920e089c8c2388c7dcc8ab30dfe13c09b8af3d306bcabb46a053d6f7", - "sha256:8be8cdfe20787e6a5fcbd010f8066227e2bb9058331a4eccddec6c0db2bb85b2", - "sha256:8c723c91c94a3bc8033dd2696a0f53e5d5f8496186013167bddc3fb5d9df46a3", - "sha256:8ca53632007c69ddcdefe1e8cbc3920dd88825e618153795b57e6ebcc92e752a", - "sha256:8f722f30366474a99745533cc4015b1781ee54b08de73260b2bbe13316079851", - "sha256:942c80a832a79c3707cca46bd12ab8aa58fddb34b1626d42b05aa8f0bcefc206", - "sha256:94a993f976cdcb2dc1b855d8b89b792893220db8862d1a619efa7451817c836b", - "sha256:95c6737f28069153c399d875317f226bbdea939fd48a6349a3b03da6829fb550", - "sha256:9915300fe5a0aa663c01363db37e4ae8e7c15996ebe2c6cce995e7033ff6457f", - "sha256:9a18595e6a2ee0826bf7dfdee823b6ab55c9b70e8f80f8b77c37e694288f5de1", - "sha256:9c8854b9f80693d20cec797d8e48a848c2fb273eb6f2587b57763ccba3f3bd4b", - "sha256:9cec42a20eae8bebf81e9ce23fb0d0c729fc54cf00643eb251ce7c0215ad49fe", - "sha256:9d2e1626be8712333a9f71270366f4a132f476ffbe83b689dd6dc0d114796c74", - "sha256:9d74f3c335cfe9c21ea78988e67f18eb9822f5d31f88b41aec3a1ec5ecd32da5", - "sha256:9fb4134cc6e005b99fa29dbc86f1ea0a298440ab6b07c6b3ee09232a3b48f495", - "sha256:a0ae6637b173d0c40b9c1462e12a7a2000a71a3258fa88756a34c7d38926911c", - "sha256:a31d21089894942f7d9a8df166b495101b7258ff11ae0abec58e32daf8088813", - "sha256:a3442c31c11088e462d44a644a454d48110f0588de830921fd201060ff19612a", - "sha256:ab9524e45ee809a083338a749af3b53cc7efec458c3ad084361c1dbf7aaf82a2", - "sha256:b1481c048fe787f65e34cb06f7d6824376d5d99f1231eae4778bbe5c3831076d", - "sha256:b8c837ab90c455f3ea8e68bee143472ee87828bff19ba19776e16ff961425b57", - "sha256:bbf2c3f04ff50f16404ce70f822cdc59760e5e2d7965905f0e700270feb2bbfc", - "sha256:bbf9c2a589be7414ac4a534d54e4517d03f1cbb142c0041191b729c2fa23f320", - "sha256:bcd5bf4132e6a8d3eb54b8d56885f3d3a38ecd7ecae8426ecf7d9673b270de43", - "sha256:c14c16831b565707149c742d87a6203eb5597f4329278446d5c0ae7a1a43928e", - "sha256:c49f3e379177f4477f929097f7ed4b0622a586b0aa40c07ac8c0f8e40659a1ac", - "sha256:c92b89bffc660f1274779cb6fbb290ec1f90d6dfe14492523a0667f10170de26", - "sha256:cd66152561632ed4b2a9192e7f8e5a1d41e28f58120b4761622e0355f0fe034c", - "sha256:cf1ad338620249f8dd6d4b6a91a69d1f265387df3697ad5dc996305cf6c26fb2", - "sha256:d07b52c8c450f9366c34aa205754355e933922c79135125541daae6cbf31c799", - "sha256:d0d12fe78dcf60efa205e9a63f395b5d343e801cf31e5e1dda0d2c1fb618073d", - "sha256:d4ee1d240b84e2f213565f0ec08caef27a0e657d4c42859809155cf3a29d1735", - "sha256:d959fe96e5c2712c1876d69af0507d98f0b0e8d81bee14cfb3f6737470205419", - "sha256:dcaef817e13eafa547cdfdc5284fe77970b891f731266545aae08d6cce52161e", - "sha256:df4e82e68f43a07735ae70a2d84c0353e58e20add20ec0af611f32cd5ba43fb4", - "sha256:ec8cfe2295f3e5e44c51f57272afbd69414ae629ec7c6b27f5a410efc78b70a0", - "sha256:ec9dd328016d8d25702a24ee274932aebf6be9787ed1c28d021945d264235b3c", - "sha256:ef9b85fa1bc91c4db24407e7c4da93a5822a73dd4513d67b454ca7064e8dc6a3", - "sha256:f3bf60444269345d712838bb11cc4eadaf51ff1a364ae39ce87a5ca8ad3bb2c8", - "sha256:f452cc1436151387d3d50533523291d5f77c6bc7913c116eb985304abdbd9ec9", - "sha256:f7917697bcaa3bc3e83db91aa3a0e448bf5cde43c84b7fc1ae2427d2417c0224", - "sha256:f90575e9fe3aae2c1e686393a9689c724cd00045275407f71771ae5d690ccf38", - "sha256:fb382fd7b4377363cc9f13ba7c819c3c78ed97c36a82f16f3f92f108c787cbbf", - "sha256:fb9f59f3848edf186a76446eb8bcf4c900fe147cb756fbbd730ef43b2e67c6a7", - "sha256:fc2931ac9ce9c61c9968989ec831d3a5e6fcaaff9474e7cfa8de80b7aff5a093" + "sha256:047b258e00b99091b6f90355521f026238c63bd76dcf996d93527bb13320eefd", + "sha256:06ff23462398333c78b6f4f8d3d70410d657a471c2c5bbe6086133be43fc8f1a", + "sha256:07f9eaf57719d6721ab15805d85f4b01a5b509a0868d7320134371bcb652152d", + "sha256:0aa92e3e30a04f9462a25077db689c4ac5ea9ab6cc68a2e563881b987d42f16d", + "sha256:0cf21f46a15d445417de8fc89f2568852cf57fe8ca1ab3d19ddb24d45c0383ae", + "sha256:0fd7b941dd1b00b5f0acb97455fea2c4b7aac2dd31ea43fb9d155e9bc7b78664", + "sha256:147e36331f6f63e08a14640acf12369e041e0751bb70d9362df68c2d9dcf0c87", + "sha256:16a682a127930f3fc4e42583becca6049e1d7214bcad23520c590edd741d2114", + "sha256:176110bff341b6730f64a1eb3a7070e12b373cf1c910a9337e7c3240497db76f", + "sha256:19268b4fec1d7760134f2de46ef2608c2920134fb1fa61e451f679e41356dc55", + "sha256:1b16f6c75cffc2dc0616ea295abb0e1967601bd1fb1e0af6a1de1c6c887f3439", + "sha256:1bfc25aa6a7c99cf86564210f79a0b7d4484159c67e01232b116e445b3036547", + "sha256:1ca3894e9e9f72da93544f64988d9c052254a338a9f855165f37f51edb6591de", + "sha256:1dda53508df0de87b6e6b0a52d6718ff6c62a5aca8f5552748404963df639269", + "sha256:217a782020b875538eebf3948fac3a7f9bbbd0fd9bf8538f7c2ad7489e80f4e8", + "sha256:2192f718db4a8509f63dd6d950f143279211fa7e6a2c612edc17d85bf043d36e", + "sha256:29a84a46ec3ebae7a1c024c055612b11e9363a8a23238b3e905552d77a2bc51b", + "sha256:3007a5b75cb50140708420fe688c393e71139324df599434633019314ceb8b59", + "sha256:30600ba5db60f7c0820ef38a2568bb7379e1418ecc947a0f76fd8b2ff4257a97", + "sha256:337912bcdcf193ade64b9aae5a4017a0a1950caf8ca140362e361543c6773f21", + "sha256:37001e5d4621cef710c8dc1429ca04e189e572f128ab12312eab4e04cf007132", + "sha256:3d569f877ed9a708e4c71a2d13d2940cb0791da309f70bd970ac1a5c088a0a92", + "sha256:4009def9be3a7e5175db20aa2d7307ecd00bbf50f7f0f989300710eee1d0b0b9", + "sha256:46a9772a1efa93f9cd170ad33101c1817c77e0e9914d4fe33e2da299d7cf0f9b", + "sha256:47eede5d11d669ab3759b63afb70d28d5328c14744b8edba3323e27dc52d298d", + "sha256:498b3c55087b9d762636bca9b45f60d37e51d24341786dc01b81253f9552a607", + "sha256:4e0d45ebf975634468682c8bec021618b3ad52c37619e5c938f8f831fa1ac5c0", + "sha256:4f24f08b6c9b9818fd80612c97857d28f9779f0d1211653ece9844fc7b414df2", + "sha256:55c144d363ad4626ca744556c049c94e2b95096041ac87098bb363dcc8635e8d", + "sha256:582cedde49603f139be572252a318b30dc41039bc0b8165f070f279e5d12187f", + "sha256:587c3cc59bc148a9b1c07a019346eda2549bc9f468acd2f9824d185749acf0a6", + "sha256:5cd5dad8366e0168e0fd23d10705a603790484a6dbb9eb272b33673b8f2cce72", + "sha256:5d02d700705d67e09e1f57681f758f0b9d4412eeb70b2eb8d96ca6200b486db3", + "sha256:625f207b1799e95e7c823f42f473c1e9dbfb6192bd56bba8695656d92be4535f", + "sha256:659603d26d40dd4463200df9bfbc339fbfaed3fe32e5c432fe1dc2b5d4aa94b4", + "sha256:689a99a42ee4583fcb0d3a67a0204664aa1539684aed72bdafcbd505197a91c4", + "sha256:68ac1a09392ed6e3fd14be880d39b951d7b981fd135416db7d18a6208c536561", + "sha256:6a615cad11ec3428020fb3c5a88d85ce1b5c69fd66e9fcb91a7daa5e855325dd", + "sha256:73bedd2be05f48af19f0f2e9e1353921ce0c83f4a1c9e8556ecdcf1f1eae4892", + "sha256:742aef0a99844faaac200564ea6f5e08facb285d37ea18bd1a5acf2771f3255a", + "sha256:75ff4c819757f9bdb35de049a509814d6ce851fe26f06eb95a392a5640052482", + "sha256:781e2495e408a81e4eaeedeb41ba32b63b1980dddf8b60dbbeff6036bcd35049", + "sha256:7a9f917966d27f7ce30039fe8d900f913c5304134096554fd9bea0774bcda6d1", + "sha256:7e2637d75e92763d1322cb5041573279ec43a80c0f7fbbd2d64f5aee98447b17", + "sha256:8089d4634d8fa2b1806ce44fefa4979b1ab2c12c0bc7ef3dfa45c8a374811348", + "sha256:816d24f584edefcc5ca63428f0b38fee00b39fe64e3c5e558f895a18983efe96", + "sha256:8385ab36bf812e9d37cf7613999a87715f27ef67a53f0687d28c44b819df7cb0", + "sha256:85cb3e40eaa98489f1e2e8b29f5ad02ee1ee40d6ce6b88d50cf0f205de1d9d2c", + "sha256:8648180b34faaea4aa5b5ca7e871d9eb1277033fa439693855cf0ea9195f85f1", + "sha256:8892fa575ac9b1b25fae7b221bc4792a273877b9b56a99ee2d8d03eeb3dbb1d2", + "sha256:88c7d9d58aab0724b979ab5617330acb1c7030b79379c8138c1c8c94e121d1b3", + "sha256:8a2f8fb7f944bcdfecd4e8d855f84c703804a594da5123dd206f75036e536d4d", + "sha256:8f4e475f29a9122f908d0f1f706e1f2fc3656536ffd21014ff8a6f2e1b14d1d8", + "sha256:8f50eb3837012a937a2b649ec872b66ba9541ad9d6f103ddcafb8231cfcafd22", + "sha256:91d875f75fabf76b3018c5f196bf3d308ed2b49ddcb46c1576d6b075754a1393", + "sha256:94b2bb9bcfd5be9d27004ea4398fb640373dd0c1a9e219084f42c08f77a720ab", + "sha256:9557c9322aaa33174d285b0c1961fb32499d65ad1866155b7845edc876c3c835", + "sha256:95e16e9eaa2d7f5d87421b8fe694dd71606aa61d74b824c8d17fc85cc51983d1", + "sha256:96952f642ac69075e44c7d0284528938fdff39422a1d90d3e45ce40b72e5e2d9", + "sha256:985623575e5c4ea763056ffe0e2d63836f771a8c294b3de06d09480538316b13", + "sha256:99ff3744f5fe48288be6bc402533b38e89749623a43208e1d57091fc96b783b9", + "sha256:9abe80ae2c9d37c17599557b712e6515f4100a80efb2cda15f5f070306477cd2", + "sha256:a152751af7ef7b5d5fa6d215756e508dd05eb07d0cf2ba51f3e740076aa74373", + "sha256:a2e4725a08cb2b4794db09e350c86dee18202bb8286527210e13a1514dc9a59a", + "sha256:a56fbe3d7f3bce1d060ea18d2413a2ca9ca814eea7cedc4d247b5f338d54844e", + "sha256:ab3abc0b78a5dfaa4795a6afbe7b282b6aa88d81cf8c1bb5e394993d7cae3457", + "sha256:b03384eed107dbeb5f625a99dc3a7de8be04fc8480c9ad42fccbc73434170b20", + "sha256:b0547ab1e9345dc468cac8368d88ea4c5bd473ebc1d8d755347d7401982b5dd8", + "sha256:b4c1ecba93e7826dc71ddba75fb7740cdb52e7bd0be9f03136b83f54e6a1f511", + "sha256:b693c63e7e64b524f54aa4888403c680342d1ad0d97be1707c531584d6aeeb4f", + "sha256:b6d0147574ce2e7b812c989e50fa72bbc5338045411a836bd066ce5fc8ac0bce", + "sha256:b9cfef3f14f75bf6aba73a76caf61f9d00865912a04a4393c468a7ce0981b519", + "sha256:b9f805e37ed16cc212fdc538a608422d7517e7faf539bedea4fe69425bc55d76", + "sha256:bab03192091681d54e8225c53f270b0517637915d9297028409a2a5114ff4634", + "sha256:bc24f968b82455f336b79bf37dbb243b7d76cd40897489888d663d4e028f5069", + "sha256:c14b504a74e58e2deb0378b3eca10f3d076635c100f45b113c18c770b4a47a50", + "sha256:c2089a9afef887664115f7fa6d3c0edd6454adaca5488dba836ca91f60401075", + "sha256:c8ed4034f0765f8861620c1f2f2364d2e58520ea288497084dae880424fc0d9f", + "sha256:cd2660c01367eb3ef081b8fa0a5da7fe767f9427aa82023a961a5f28f0d4af6c", + "sha256:d8361c7d04e6a264481f0b802e395f647cd3f8bbe27acfa7c12049efea675bd1", + "sha256:d9baec588f015d0ee564057aa7574313c53a530662ffad930b7886becc85abdf", + "sha256:dbd9ff43a04f8ffe8a959a944c2dca10d22f5f99fc6a459f49c3ebfb409309d9", + "sha256:e3f8bfc1db82589ef965ed234b87de30d140db8b6dc50ada9e33951ccd8ec07a", + "sha256:e6a2c5c5bb2556dfbfffffc2bcfb9c235fd2b566d5006dfb2a37afc7e3278a07", + "sha256:e749af6c912a7bb441d105c50c1a3da720474e8acb91c89350080dd600228f0e", + "sha256:e85d86527baebb41a214cc3b45c17177177d900a2ad5783dbe6f291642d4906f", + "sha256:ee2c68e4f2dd1b1c15b849ba1c96fac105fca6ffdb7c1e8be51da6fabbdeafb9", + "sha256:f3ab950f8814f3b7b5e3eebc117986f817ec933676f68f0a6c5b2137dd7c9c69", + "sha256:f4f4547944d4f5cfcdc03f3f097d6f05bbbc915eaaf80a2ee120d0e756de377d", + "sha256:f72a0d746d38cb299b79ce3d4d60ba0892c84bbc905d0d49c13df5bace1b65f8", + "sha256:fc2c80bc87fba076e6cbb926216c27fba274dae7100a7b9a0983b53132dd99f2", + "sha256:fe4d2536c827f508348d7b40c08767e8c7071614250927233bf0c92170451c0a" ], "markers": "python_version >= '3.8'", - "version": "==1.13.1" + "version": "==1.14.0" } } } diff --git a/requirements-dev.txt b/requirements-dev.txt index 98ef1906..441420c6 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,12 +1,12 @@ -i https://pypi.org/simple aiohappyeyeballs==2.4.3; python_version >= '3.8' -aiohttp==3.10.8 +aiohttp==3.10.10 aiosignal==1.3.1; python_version >= '3.7' astroid==3.2.4; python_full_version >= '3.8.0' attrs==24.2.0; python_version >= '3.7' -black[d]==24.8.0; python_version >= '3.8' +black[d]==24.10.0; python_version >= '3.9' certifi==2024.8.30; python_version >= '3.6' -charset-normalizer==3.3.2; python_full_version >= '3.7.0' +charset-normalizer==3.4.0; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' coverage[toml]==7.6.1; python_version >= '3.8' coveralls==4.0.1; python_version < '3.13' and python_version >= '3.8' @@ -32,6 +32,7 @@ packaging==24.1; python_version >= '3.8' pathspec==0.12.1; python_version >= '3.8' platformdirs==4.3.6; python_version >= '3.8' pluggy==1.5.0; python_version >= '3.8' +propcache==0.2.0; python_version >= '3.8' pycodestyle==2.12.1; python_version >= '3.8' pyflakes==3.2.0; python_version >= '3.8' pylint==3.2.6; python_full_version >= '3.8.0' @@ -54,4 +55,4 @@ pydantic==2.9.2; python_version >= '3.8' pydantic-core==2.23.4; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.2; python_version >= '3.8' -xmltodict==0.13.0; python_version >= '3.4' +xmltodict==0.14.1; python_version >= '3.6' diff --git a/requirements.txt b/requirements.txt index d2fb427b..ac68868d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ annotated-types==0.7.0; python_version >= '3.8' cerberus==1.3.5 certifi==2024.8.30; python_version >= '3.6' -charset-normalizer==3.3.2; python_full_version >= '3.7.0' +charset-normalizer==3.4.0; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' idna==3.10; python_version >= '3.6' @@ -12,4 +12,4 @@ pyyaml==6.0.2; python_version >= '3.8' requests==2.32.3; python_version >= '3.8' typing-extensions==4.12.2; python_version < '3.13' urllib3==2.2.3; python_version >= '3.8' -xmltodict==0.13.0; python_version >= '3.4' +xmltodict==0.14.1; python_version >= '3.6' From 2bfb2d013e3af491af15c58c5895d609a1127798 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 11 Oct 2024 20:34:00 +0600 Subject: [PATCH 176/245] refactor: remove AllTestRunResult and SingleTestRunResult --- chk/modules/validate/assertion_services.py | 80 ------------------- .../validate/assertion_services_test.py | 75 ----------------- 2 files changed, 155 deletions(-) diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index 762c3ca1..34f94a00 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -61,86 +61,6 @@ } -class SingleTestRunResult(UserDict): - """Result of an assertion run - - keys: is_pass, message, assert_used - """ - - @property - def as_dict(self) -> dict: - """Convert SingleTestRunResult to a dict""" - - return { - key: value.as_dict if key == "assert_used" else value - for key, value in self.items() - } - - @property - def as_fmt_str(self) -> str: - """String representation of ApiResponse - - Returns: - str: String representation - """ - - return ( - "\n" - f"{'+' if self['is_pass'] else '-'} {self['assert_used'].assert_type} " - + f"{'PASSED' if self['is_pass'] else 'FAILED'}, {self['message']}" - ) - - -class AllTestRunResult(UserDict): - """Result of a test run - TODO: implement __iter__ for this class - - keys: id, time_start, time_end, count_all, results, count_fail - """ - - @property - def as_dict(self) -> dict: - """Convert AllTestRunResult to a dict""" - _as_dict: dict = { - key: value for key, value in self.items() if not key.startswith("time_") - } - - _as_dict |= { - key: value.timestamp() - for key, value in self.items() - if key.startswith("time_") - } - - if len(self["results"]) > 0: - _as_dict["results"] = [ - test_result.as_dict - for test_result in self["results"] - if isinstance(test_result, SingleTestRunResult) - ] - - return _as_dict - - @property - def as_fmt_str(self) -> str: - """String representation of ApiResponse - - Returns: - str: String representation - """ - - _display = ( - f"Test run id: {self['id']}, time taken {self['time_end'] - self['time_start']}\n" - + f"Total tests: {self['count_all']}, " - + f"Total tests failed: {self['count_fail']}\n" - ) - _display += "\n> Test run result(s):" - - for one_result in self["results"]: - _display += one_result.as_fmt_str - - return _display - - class AssertionEntryListRunner: """AssertionAntiquary is service class that run assertion""" diff --git a/tests/modules/validate/assertion_services_test.py b/tests/modules/validate/assertion_services_test.py index f6011504..6eb427ca 100644 --- a/tests/modules/validate/assertion_services_test.py +++ b/tests/modules/validate/assertion_services_test.py @@ -14,8 +14,6 @@ from chk.modules.validate import ValidationDocument, ValidationDocumentSupport from chk.modules.validate.assertion_services import ( AssertionEntryListRunner, - AllTestRunResult, - SingleTestRunResult, AssertionEntry, ) @@ -177,79 +175,6 @@ def test__prepare_test_run_result(setup_assertion_entry_list_pass_assert): assert resp.message -@pytest.fixture -def setup_new_single_test_run_result(): - s = SingleTestRunResult() - - s["is_pass"] = True - s["message"] = "Ok" - s["assert_used"] = AssertionEntry( - assert_type="Empty", - actual="39", - actual_given="<% _data.roll %>", - expected=39, - ) - - return s - - -class TestSingleTestRunResult: - @staticmethod - def test_create(setup_new_single_test_run_result): - s = SingleTestRunResult() - assert len(s) == 0 - - s = setup_new_single_test_run_result - assert len(s) == 3 - - @staticmethod - def test_as_dict(setup_new_single_test_run_result): - s = setup_new_single_test_run_result - assert isinstance(s.as_dict, dict) - - @staticmethod - def test_as_fmt_str(setup_new_single_test_run_result): - s = setup_new_single_test_run_result - - assert isinstance(s.as_fmt_str, str) - assert s.as_fmt_str == "\n+ Empty PASSED, Ok" - - -@pytest.fixture -def setup_new_all_test_run_result(setup_new_single_test_run_result): - s = AllTestRunResult() - - s["id"] = uuid.uuid4() - s["time_start"] = datetime.datetime.now() - s["time_end"] = datetime.datetime.now() - s["count_all"] = 1 - s["results"] = [setup_new_single_test_run_result] - s["count_fail"] = 0 - - return s - - -class TestAllTestRunResult: - @staticmethod - def test_create(setup_new_all_test_run_result): - s = AllTestRunResult() - assert len(s) == 0 - - s = setup_new_all_test_run_result - assert len(s) == 6 - - @staticmethod - def test_as_dict(setup_new_all_test_run_result): - s = setup_new_all_test_run_result - assert isinstance(s.as_dict, dict) - - @staticmethod - def test_as_fmt_str(setup_new_all_test_run_result): - s = setup_new_all_test_run_result - - assert isinstance(s.as_fmt_str, str) - - class TestAssertionEntry: @staticmethod def test_create(): From 045b488592af807ada5f19fc9ff9c7221e2fe65b Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 11 Oct 2024 20:37:30 +0600 Subject: [PATCH 177/245] feat: use TestRunReport and TestRunDetails --- chk/modules/validate/__init__.py | 9 +- chk/modules/validate/assertion_services.py | 72 ++++-------- chk/modules/validate/entities.py | 107 ++++++++++++++++++ .../validate/assertion_services_test.py | 3 +- 4 files changed, 133 insertions(+), 58 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 4ebea737..70752f39 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -28,7 +28,6 @@ ) from chk.infrastructure.version import DocumentVersionMaker, SCHEMA as VER_SCHEMA from chk.modules.validate.assertion_services import ( - AllTestRunResult, AssertionEntry, AssertionEntryListRunner, MAP_TYPE_TO_FN, @@ -278,7 +277,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: validate_doc, { **variable_doc.data, - **{"_asserts_response": test_run_result.as_dict}, + **{"_asserts_response": dict(test_run_result)}, }, ) @@ -290,9 +289,9 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: extra=test_run_result, exposed=exposed_data, report={ - "is_success": test_run_result["count_fail"] == 0, - "count_all": test_run_result["count_all"], - "count_fail": test_run_result["count_fail"], + "is_success": test_run_result.count_fail == 0, + "count_all": test_run_result.count_all, + "count_fail": test_run_result.count_fail, }, ) diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index 34f94a00..371681ac 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -2,18 +2,15 @@ Assertion services """ -import uuid -from collections import UserDict from collections.abc import Callable from datetime import datetime -from pydantic import BaseModel, Field - import chk.modules.validate.assertion_function as asrt_f from chk.infrastructure.helper import Cast from chk.infrastructure.templating import StrTemplate from chk.modules.validate.assertion_message import get_assert_msg_for from chk.modules.validate.assertion_validation import AssertionEntityType +from chk.modules.validate.entities import AssertionEntry, TestRunDetail, TestRunReport MAP_TYPE_TO_FN: dict[str, Callable] = { AssertionEntityType.Accepted: asrt_f.accepted, @@ -115,26 +112,15 @@ def _replace_assertion_values( @staticmethod def _prepare_test_run_result( - resp: SingleTestRunResult, assert_item: AssertionEntry, asrt_resp: ValueError | bool, - ) -> None: - def _prepare_message_values() -> dict: - return { - "assert_type": assert_item.assert_type, - "type_actual": assert_item.actual.__class__.__name__, - "type_expected": assert_item.expected.__class__.__name__, - "value_actual": assert_item.actual, - "value_expected": assert_item.expected, - "value_actual_given": assert_item.actual_given, - "value_actual_b4_cast": assert_item.actual_b4_cast, - "extra_fields": assert_item.extra_fields, - } - + ) -> TestRunDetail: def _prepare_message() -> str: + asrt_fn_name = MAP_TYPE_TO_FN[assert_item.assert_type].__name__ + if isinstance(asrt_resp, ValueError): return get_assert_msg_for(f"{asrt_fn_name}.{str(asrt_resp)}").format( - **_prepare_message_values() + **detail.get_message_values() ) if asrt_resp: @@ -150,16 +136,18 @@ def _prepare_message() -> str: else assert_item.msg_fail ) - return message.format(**_prepare_message_values()) + return message.format(**detail.get_message_values()) - asrt_fn_name = MAP_TYPE_TO_FN[assert_item.assert_type].__name__ + detail = TestRunDetail(assert_entry=assert_item) if isinstance(asrt_resp, ValueError): - resp["is_pass"] = False - resp["message"] = _prepare_message() + detail.is_pass = False + detail.message = _prepare_message() else: - resp["is_pass"] = asrt_resp - resp["message"] = _prepare_message() + detail.is_pass = asrt_resp + detail.message = _prepare_message() + + return detail @staticmethod def _call_assertion_method( @@ -177,9 +165,7 @@ def _call_assertion_method( return asrt_fn(**assert_item.as_dict) @staticmethod - def test_run( - assert_list: list[AssertionEntry], variables: dict - ) -> AllTestRunResult: + def test_run(assert_list: list[AssertionEntry], variables: dict) -> TestRunReport: """Run the tests Args: @@ -187,40 +173,22 @@ def test_run( variables: dict Returns: - AllTestRunResult: Test run result + TestRunReport: Test run report """ - test_run_result = AllTestRunResult( - id=str(uuid.uuid4()), - time_start=datetime.now(), - count_all=len(assert_list), - count_fail=0, - ) - - results: list[SingleTestRunResult] = [] + run_report = TestRunReport(count_all=len(assert_list)) for assert_item in assert_list: assert_item = AssertionEntryListRunner._replace_assertion_values( assert_item, variables ) - resp = SingleTestRunResult(assert_used=assert_item) - asrt_resp = AssertionEntryListRunner._call_assertion_method(assert_item) - - AssertionEntryListRunner._prepare_test_run_result( - resp, assert_item, asrt_resp + resp: TestRunDetail = AssertionEntryListRunner._prepare_test_run_result( + assert_item, + AssertionEntryListRunner._call_assertion_method(assert_item), ) - if resp["is_pass"] is False: - test_run_result["count_fail"] += 1 - - results.append(resp) - - test_run_result["time_end"] = datetime.now() - test_run_result["results"] = results - - return test_run_result - + run_report.add_run_detail(resp) class ValidationTask(BaseModel): """Parsed FetchTask""" diff --git a/chk/modules/validate/entities.py b/chk/modules/validate/entities.py index ae80bd2c..ced44bc3 100644 --- a/chk/modules/validate/entities.py +++ b/chk/modules/validate/entities.py @@ -1,4 +1,14 @@ +""" +Validate module entities +""" + +import uuid +from datetime import datetime from typing import Any + +from pydantic import BaseModel, Field, UUID4 + + class AssertionEntry(BaseModel): """AssertionEntry holds one assertion operation TODO: implement __iter__ for this class @@ -41,3 +51,100 @@ def as_dict(self) -> dict: self.expected = "" return self.model_dump() + + +class TestRunDetail(BaseModel): + """TestRunDetail stores one single run result""" + + assert_entry: AssertionEntry = Field(default=NotImplemented) + is_pass: bool = Field(default=False) + message: str = Field(default_factory=str) + + def as_fmt_str(self) -> str: + """String representation of ApiResponse + + Returns: + str: String representation + """ + + if self.assert_entry == NotImplemented: + raise NotImplementedError("AssertionEntry not set.") + + return ( + "\n" + f"{'+' if self.is_pass else '-'} {self.assert_entry.assert_type} " + + f"{'PASSED' if self.is_pass else 'FAILED'}, {self.message}" + ) + + def get_message_values(self) -> dict: + """Get tokens for template messages""" + + if self.assert_entry == NotImplemented: + raise NotImplementedError("AssertionEntry not set.") + + return { + "assert_type": self.assert_entry.assert_type, + "type_actual": self.assert_entry.actual.__class__.__name__, + "type_expected": self.assert_entry.expected.__class__.__name__, + "value_actual": self.assert_entry.actual, + "value_expected": self.assert_entry.expected, + "value_actual_given": self.assert_entry.actual_given, + "value_actual_b4_cast": self.assert_entry.actual_b4_cast, + "extra_fields": self.assert_entry.extra_fields, + } + + +class TestRunReport(BaseModel): + """TestRunReport stores overall test run report""" + + id: UUID4 = Field(default_factory=uuid.uuid4) + time_start: datetime = Field(default_factory=datetime.now) + time_end: datetime = Field(default_factory=datetime.now) + count_all: int = Field(default=0) + count_fail: int = Field(default=0) + details: list[TestRunDetail] = Field(default_factory=list) + + def __iter__(self): + """Implement __iter__""" + + yield "id", str(self.id) + yield "time_start", self.time_start.timestamp() + yield "time_end", self.time_end.timestamp() + yield "count_all", self.count_all + yield "count_fail", self.count_fail + yield "details", [detail.model_dump() for detail in self.details] + + def add_run_detail(self, run_dtl: TestRunDetail) -> None: + """Append a TestRunDetail""" + + if not isinstance(run_dtl, TestRunDetail): + raise TypeError("TestRunDetail expected.") + + self.details.append(run_dtl) + + if run_dtl.is_pass: + self.count_fail += 1 + + def as_fmt_str(self, only_incl_errors: bool = False) -> str: + """String representation of ApiResponse + + Returns: + str: String representation + """ + + _display = ( + f"Test run id: {self.id}, time taken {self.time_end - self.time_start}\n" + + f"Total tests: {self.count_all}, " + + f"Total tests failed: {self.count_fail}\n" + ) + _display += "\n> Test run result(s):" + + if only_incl_errors: + for detail in self.details: + if not detail.is_pass: + _display += detail.as_fmt_str() + else: + for detail in self.details: + _display += detail.as_fmt_str() + + return _display diff --git a/tests/modules/validate/assertion_services_test.py b/tests/modules/validate/assertion_services_test.py index 6eb427ca..7b64bbce 100644 --- a/tests/modules/validate/assertion_services_test.py +++ b/tests/modules/validate/assertion_services_test.py @@ -16,6 +16,7 @@ AssertionEntryListRunner, AssertionEntry, ) +from chk.modules.validate.entities import TestRunReport @pytest.fixture @@ -119,7 +120,7 @@ def test_test_run_pass(setup_assertion_entry_list_pass_assert): assert_list, variables = setup_assertion_entry_list_pass_assert test_run_result = AssertionEntryListRunner.test_run(assert_list, variables.data) - assert isinstance(test_run_result, AllTestRunResult) + assert isinstance(test_run_result, TestRunReport) @staticmethod def test__replace_assertion_values_pass(setup_assertion_entry_list_pass_assert): From 133ace8ff44426165e49bfa8d4e265a72762c54e Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 11 Oct 2024 20:37:57 +0600 Subject: [PATCH 178/245] refactor: move ValidationTask to entities --- chk/modules/validate/assertion_services.py | 11 +++-------- chk/modules/validate/entities.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index 371681ac..ffc61210 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -190,11 +190,6 @@ def test_run(assert_list: list[AssertionEntry], variables: dict) -> TestRunRepor run_report.add_run_detail(resp) -class ValidationTask(BaseModel): - """Parsed FetchTask""" - - name: str - uses: str - file: str - variables: dict = Field(default_factory=dict) - arguments: dict = Field(default_factory=dict) \ No newline at end of file + run_report.time_end = datetime.now() + + return run_report diff --git a/chk/modules/validate/entities.py b/chk/modules/validate/entities.py index ced44bc3..542062bb 100644 --- a/chk/modules/validate/entities.py +++ b/chk/modules/validate/entities.py @@ -148,3 +148,13 @@ def as_fmt_str(self, only_incl_errors: bool = False) -> str: _display += detail.as_fmt_str() return _display + + +class ValidationTask(BaseModel): + """Parsed FetchTask""" + + name: str + uses: str + file: str + variables: dict = Field(default_factory=dict) + arguments: dict = Field(default_factory=dict) From 1dcfa51bdaa44bbfba1c47036e8c6de39dea9981 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 11 Oct 2024 23:01:30 +0600 Subject: [PATCH 179/245] feat: use presentation service to dump --- chk/modules/validate/__init__.py | 24 +++++++++++----------- chk/modules/validate/services.py | 34 ++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 11 deletions(-) create mode 100644 chk/modules/validate/services.py diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 70752f39..6879c3bf 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -27,16 +27,18 @@ replace_value, ) from chk.infrastructure.version import DocumentVersionMaker, SCHEMA as VER_SCHEMA +from chk.infrastructure.view import PresentationService from chk.modules.validate.assertion_services import ( AssertionEntry, AssertionEntryListRunner, MAP_TYPE_TO_FN, - ValidationTask, ) from chk.modules.validate.assertion_validation import ( AssertionEntityProperty, get_schema_map, ) +from chk.modules.validate.entities import ValidationTask +from chk.modules.validate.services import ValidatePresenter VERSION_SCOPE = ["validation"] @@ -199,20 +201,20 @@ def make_assertion_entry_list(assert_lst: list[dict]) -> list[AssertionEntry]: return new_assertion_lst @staticmethod - def display(expose_list: list, exec_ctx: ExecuteContext) -> None: + def display(exposed: dict, exec_ctx: ExecuteContext) -> None: """Displays the response based on the command response format Args: - expose_list: list + exposed: list exec_ctx: ExecuteContext """ - if not expose_list: + if not exposed: return display_item_list: list[object] = [] - for expose_item in expose_list: + for _, expose_item in exposed.items(): if isinstance(expose_item, AllTestRunResult): if exec_ctx.options["format"]: display_item_list.append(expose_item.as_fmt_str) @@ -224,7 +226,7 @@ def display(expose_list: list, exec_ctx: ExecuteContext) -> None: if exec_ctx.options["format"]: formatter( ( - "\n---\n".join([str(item) for item in display_item_list]) + "\n======\n".join([str(item) for item in display_item_list]) if len(display_item_list) > 1 else display_item_list.pop() ), @@ -268,7 +270,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: test_run_result = AssertionEntryListRunner.test_run(assert_list, variable_doc.data) output_data = Variables( { - "_asserts_response": test_run_result.as_dict, + "_asserts_response": test_run_result, "_data": variable_doc["_data"], } ) @@ -277,7 +279,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: validate_doc, { **variable_doc.data, - **{"_asserts_response": dict(test_run_result)}, + **{"_asserts_response": test_run_result}, }, ) @@ -307,10 +309,10 @@ def execute( cb: Callable """ - exec_response = call(file_ctx=ctx, exec_ctx=exec_ctx) + exr = call(file_ctx=ctx, exec_ctx=exec_ctx) - cb({ctx.filepath_hash: exec_response.variables_exec.data}) - ValidationDocumentSupport.display(exec_response.exposed, exec_ctx) + cb({ctx.filepath_hash: exr.variables_exec.data}) + PresentationService.display(exr, exec_ctx, ValidatePresenter) def task_validation(**kwargs: dict) -> ExecResponse: diff --git a/chk/modules/validate/services.py b/chk/modules/validate/services.py new file mode 100644 index 00000000..f6148c6b --- /dev/null +++ b/chk/modules/validate/services.py @@ -0,0 +1,34 @@ +""" +General validation services +""" + +from json import dumps + +from chk.infrastructure.view import PresentationBuilder +from chk.modules.validate.entities import TestRunReport + + +class ValidatePresenter(PresentationBuilder): + + def dump_fmt(self) -> str: + """dump formatted string""" + + display_items: list[str] = [] + + for key, item in self.data.exposed.items(): + if key == "_asserts_response" and isinstance(item, TestRunReport): + display_items.append(item.as_fmt_str()) + else: + display_items.append(dumps(item)) + + return "\n======\n".join(display_items) + + def dump_json(self) -> str: + """dump json""" + + display_items: list[dict] = [] + + for key, item in self.data.exposed.items(): + display_items.append(dict(item)) + + return dumps(display_items) From a83b9eb293924e7b69d82e3f6d9a5ee754eb1ac4 Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 11 Oct 2024 23:03:17 +0600 Subject: [PATCH 180/245] refactor: remove old display method --- chk/modules/validate/__init__.py | 45 +------------------------------- 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 6879c3bf..86253461 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -5,7 +5,6 @@ from __future__ import annotations import enum -import json from collections import abc import cerberus @@ -16,7 +15,7 @@ VersionedDocumentV2, ) from chk.infrastructure.file_loader import ExecuteContext, FileContext -from chk.infrastructure.helper import data_get, formatter +from chk.infrastructure.helper import data_get from chk.infrastructure.symbol_table import ( EXPOSE_SCHEMA as EXP_SCHEMA, ExecResponse, @@ -200,48 +199,6 @@ def make_assertion_entry_list(assert_lst: list[dict]) -> list[AssertionEntry]: return new_assertion_lst - @staticmethod - def display(exposed: dict, exec_ctx: ExecuteContext) -> None: - """Displays the response based on the command response format - - Args: - exposed: list - exec_ctx: ExecuteContext - """ - - if not exposed: - return - - display_item_list: list[object] = [] - - for _, expose_item in exposed.items(): - if isinstance(expose_item, AllTestRunResult): - if exec_ctx.options["format"]: - display_item_list.append(expose_item.as_fmt_str) - else: - display_item_list.append(expose_item.as_dict) - else: - display_item_list.append(expose_item) - - if exec_ctx.options["format"]: - formatter( - ( - "\n======\n".join([str(item) for item in display_item_list]) - if len(display_item_list) > 1 - else display_item_list.pop() - ), - dump=exec_ctx.options["dump"], - ) - else: - formatter( - ( - json.dumps(display_item_list) - if len(display_item_list) > 1 - else json.dumps(display_item_list.pop()) - ), - dump=exec_ctx.options["dump"], - ) - def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a validation document""" From 37bcb69815150baca53d6d5fa72508b84cd3c18e Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 12:13:55 +0600 Subject: [PATCH 181/245] refactor: rename TestRunDetail to RunDetail for pytest collision --- chk/modules/validate/assertion_services.py | 8 ++++---- chk/modules/validate/entities.py | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index ffc61210..0c146b72 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -10,7 +10,7 @@ from chk.infrastructure.templating import StrTemplate from chk.modules.validate.assertion_message import get_assert_msg_for from chk.modules.validate.assertion_validation import AssertionEntityType -from chk.modules.validate.entities import AssertionEntry, TestRunDetail, TestRunReport +from chk.modules.validate.entities import AssertionEntry, RunDetail, TestRunReport MAP_TYPE_TO_FN: dict[str, Callable] = { AssertionEntityType.Accepted: asrt_f.accepted, @@ -114,7 +114,7 @@ def _replace_assertion_values( def _prepare_test_run_result( assert_item: AssertionEntry, asrt_resp: ValueError | bool, - ) -> TestRunDetail: + ) -> RunDetail: def _prepare_message() -> str: asrt_fn_name = MAP_TYPE_TO_FN[assert_item.assert_type].__name__ @@ -138,7 +138,7 @@ def _prepare_message() -> str: return message.format(**detail.get_message_values()) - detail = TestRunDetail(assert_entry=assert_item) + detail = RunDetail(assert_entry=assert_item) if isinstance(asrt_resp, ValueError): detail.is_pass = False @@ -183,7 +183,7 @@ def test_run(assert_list: list[AssertionEntry], variables: dict) -> TestRunRepor assert_item, variables ) - resp: TestRunDetail = AssertionEntryListRunner._prepare_test_run_result( + resp: RunDetail = AssertionEntryListRunner._prepare_test_run_result( assert_item, AssertionEntryListRunner._call_assertion_method(assert_item), ) diff --git a/chk/modules/validate/entities.py b/chk/modules/validate/entities.py index 542062bb..4005b623 100644 --- a/chk/modules/validate/entities.py +++ b/chk/modules/validate/entities.py @@ -10,8 +10,8 @@ class AssertionEntry(BaseModel): - """AssertionEntry holds one assertion operation - TODO: implement __iter__ for this class + """ + AssertionEntry holds one assertion operation """ assert_type: str @@ -53,8 +53,8 @@ def as_dict(self) -> dict: return self.model_dump() -class TestRunDetail(BaseModel): - """TestRunDetail stores one single run result""" +class RunDetail(BaseModel): + """RunDetail stores one single run result""" assert_entry: AssertionEntry = Field(default=NotImplemented) is_pass: bool = Field(default=False) @@ -102,7 +102,7 @@ class TestRunReport(BaseModel): time_end: datetime = Field(default_factory=datetime.now) count_all: int = Field(default=0) count_fail: int = Field(default=0) - details: list[TestRunDetail] = Field(default_factory=list) + details: list[RunDetail] = Field(default_factory=list) def __iter__(self): """Implement __iter__""" @@ -114,11 +114,11 @@ def __iter__(self): yield "count_fail", self.count_fail yield "details", [detail.model_dump() for detail in self.details] - def add_run_detail(self, run_dtl: TestRunDetail) -> None: - """Append a TestRunDetail""" + def add_run_detail(self, run_dtl: RunDetail) -> None: + """Append a RunDetail""" - if not isinstance(run_dtl, TestRunDetail): - raise TypeError("TestRunDetail expected.") + if not isinstance(run_dtl, RunDetail): + raise TypeError("RunDetail expected.") self.details.append(run_dtl) From dd8d3391ec5744d7d63b17f7bac025a477e00590 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 12:16:17 +0600 Subject: [PATCH 182/245] refactor: rename TestRunReport to RunReport for pytest collision --- chk/modules/validate/assertion_services.py | 8 ++++---- chk/modules/validate/entities.py | 4 ++-- chk/modules/validate/services.py | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index 0c146b72..2b65cab2 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -10,7 +10,7 @@ from chk.infrastructure.templating import StrTemplate from chk.modules.validate.assertion_message import get_assert_msg_for from chk.modules.validate.assertion_validation import AssertionEntityType -from chk.modules.validate.entities import AssertionEntry, RunDetail, TestRunReport +from chk.modules.validate.entities import AssertionEntry, RunDetail, RunReport MAP_TYPE_TO_FN: dict[str, Callable] = { AssertionEntityType.Accepted: asrt_f.accepted, @@ -165,7 +165,7 @@ def _call_assertion_method( return asrt_fn(**assert_item.as_dict) @staticmethod - def test_run(assert_list: list[AssertionEntry], variables: dict) -> TestRunReport: + def test_run(assert_list: list[AssertionEntry], variables: dict) -> RunReport: """Run the tests Args: @@ -173,10 +173,10 @@ def test_run(assert_list: list[AssertionEntry], variables: dict) -> TestRunRepor variables: dict Returns: - TestRunReport: Test run report + RunReport: Test run report """ - run_report = TestRunReport(count_all=len(assert_list)) + run_report = RunReport(count_all=len(assert_list)) for assert_item in assert_list: assert_item = AssertionEntryListRunner._replace_assertion_values( diff --git a/chk/modules/validate/entities.py b/chk/modules/validate/entities.py index 4005b623..7772fa71 100644 --- a/chk/modules/validate/entities.py +++ b/chk/modules/validate/entities.py @@ -94,8 +94,8 @@ def get_message_values(self) -> dict: } -class TestRunReport(BaseModel): - """TestRunReport stores overall test run report""" +class RunReport(BaseModel): + """RunReport stores overall test run report""" id: UUID4 = Field(default_factory=uuid.uuid4) time_start: datetime = Field(default_factory=datetime.now) diff --git a/chk/modules/validate/services.py b/chk/modules/validate/services.py index f6148c6b..11ba1a4d 100644 --- a/chk/modules/validate/services.py +++ b/chk/modules/validate/services.py @@ -5,7 +5,7 @@ from json import dumps from chk.infrastructure.view import PresentationBuilder -from chk.modules.validate.entities import TestRunReport +from chk.modules.validate.entities import RunReport class ValidatePresenter(PresentationBuilder): @@ -16,7 +16,7 @@ def dump_fmt(self) -> str: display_items: list[str] = [] for key, item in self.data.exposed.items(): - if key == "_asserts_response" and isinstance(item, TestRunReport): + if key == "_asserts_response" and isinstance(item, RunReport): display_items.append(item.as_fmt_str()) else: display_items.append(dumps(item)) From e41daa28b6c7e2d0789f7ff8e2299cd121044433 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 12:35:40 +0600 Subject: [PATCH 183/245] refactor: remove AssertionEntry.as_dict and it's impl --- chk/modules/validate/assertion_services.py | 2 +- chk/modules/validate/entities.py | 13 ------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index 2b65cab2..bf2476f5 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -162,7 +162,7 @@ def _call_assertion_method( """ asrt_fn = MAP_TYPE_TO_FN[assert_item.assert_type] - return asrt_fn(**assert_item.as_dict) + return asrt_fn(**dict(assert_item)) @staticmethod def test_run(assert_list: list[AssertionEntry], variables: dict) -> RunReport: diff --git a/chk/modules/validate/entities.py b/chk/modules/validate/entities.py index 7772fa71..9ff661f7 100644 --- a/chk/modules/validate/entities.py +++ b/chk/modules/validate/entities.py @@ -39,19 +39,6 @@ def __iter__(self): ) yield "extra_fields", self.extra_fields - @property - def as_dict(self) -> dict: - """Return dict representation""" - - if self.actual_given == NotImplemented: - self.actual_given = "" - if self.actual_b4_cast == NotImplemented: - self.actual_b4_cast = "" - if self.expected == NotImplemented: - self.expected = "" - - return self.model_dump() - class RunDetail(BaseModel): """RunDetail stores one single run result""" From aaae7976c13c9a0bd35e48909087d11771d39233 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 12:58:25 +0600 Subject: [PATCH 184/245] fix: validate tests --- .../validate/assertion_services_test.py | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/tests/modules/validate/assertion_services_test.py b/tests/modules/validate/assertion_services_test.py index 7b64bbce..64e1bb9c 100644 --- a/tests/modules/validate/assertion_services_test.py +++ b/tests/modules/validate/assertion_services_test.py @@ -3,20 +3,18 @@ Test assertion_services """ import copy -import datetime import types -import uuid import pytest -from chk.infrastructure.file_loader import FileContext, ExecuteContext -from chk.infrastructure.symbol_table import Variables, VariableTableManager +from chk.infrastructure.file_loader import ExecuteContext, FileContext +from chk.infrastructure.symbol_table import VariableTableManager, Variables from chk.modules.validate import ValidationDocument, ValidationDocumentSupport from chk.modules.validate.assertion_services import ( - AssertionEntryListRunner, AssertionEntry, + AssertionEntryListRunner, ) -from chk.modules.validate.entities import TestRunReport +from chk.modules.validate.entities import RunReport @pytest.fixture @@ -120,7 +118,7 @@ def test_test_run_pass(setup_assertion_entry_list_pass_assert): assert_list, variables = setup_assertion_entry_list_pass_assert test_run_result = AssertionEntryListRunner.test_run(assert_list, variables.data) - assert isinstance(test_run_result, TestRunReport) + assert isinstance(test_run_result, RunReport) @staticmethod def test__replace_assertion_values_pass(setup_assertion_entry_list_pass_assert): @@ -180,9 +178,9 @@ class TestAssertionEntry: @staticmethod def test_create(): ae = AssertionEntry( - "Empty", - "10", - 10, + assert_type="Empty", + actual="10", + expected=10, ) assert isinstance(ae, AssertionEntry) @@ -192,7 +190,11 @@ def test_create(): @staticmethod def test_copy(): ae = AssertionEntry( - "Empty", "10", 10, cast_actual_to="int", extra_fields={"a": 1} + assert_type="Empty", + actual="10", + expected=10, + cast_actual_to="int", + extra_fields={"a": 1}, ) ar = copy.copy(ae) From 6b99b3036a60c922e47b24d1009b156f094a89f1 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 15:47:29 +0600 Subject: [PATCH 185/245] refactor: update WF dumping for fmt str and json --- chk/modules/validate/entities.py | 13 ++++++++++--- chk/modules/workflow/services.py | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/chk/modules/validate/entities.py b/chk/modules/validate/entities.py index 9ff661f7..991c1d9a 100644 --- a/chk/modules/validate/entities.py +++ b/chk/modules/validate/entities.py @@ -47,6 +47,13 @@ class RunDetail(BaseModel): is_pass: bool = Field(default=False) message: str = Field(default_factory=str) + def __iter__(self): + """implement __iter__""" + + yield "assert_entry", dict(self.assert_entry) + yield "is_pass", self.is_pass + yield "message", self.message + def as_fmt_str(self) -> str: """String representation of ApiResponse @@ -95,11 +102,11 @@ def __iter__(self): """Implement __iter__""" yield "id", str(self.id) - yield "time_start", self.time_start.timestamp() - yield "time_end", self.time_end.timestamp() + yield "time_start", str(self.time_start.timestamp()) + yield "time_end", str(self.time_end.timestamp()) yield "count_all", self.count_all yield "count_fail", self.count_fail - yield "details", [detail.model_dump() for detail in self.details] + yield "details", [dict(detail) for detail in self.details] def add_run_detail(self, run_dtl: RunDetail) -> None: """Append a RunDetail""" diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 6185fdba..85686a63 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -6,7 +6,8 @@ import json -from chk.infrastructure.helper import Cast +from pydantic import BaseModel + from chk.infrastructure.view import PresentationBuilder from chk.modules.workflow import ( ChkwareTask, @@ -103,6 +104,13 @@ def dump_fmt(self) -> str: if node in key and len(key) == len(node): to_append = self._prepare_dump_str_for_steps() else: + # TODO: Need a json.Encoder for specific PresentableExposeTypes + # PresentableExposeTypes for RunReport, ApiResponse, etc + if isinstance(value, dict): + for _k, _v in value.items(): + if isinstance(_v, BaseModel): + value[_k] = dict(_v) + to_append = json.dumps(value) exposed_fmt_str.append(to_append) @@ -145,6 +153,11 @@ def dump_json(self) -> str: if node in key and len(key) == len(node): _to_append = self._prepare_dump_data() else: + if isinstance(value, dict): + for _k, _v in value.items(): + if isinstance(_v, BaseModel): + value[_k] = dict(_v) + _to_append = value exposed_fmt_str.append(_to_append) From 2a30162691e723a354a35c53986931a8f0a1004d Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 19:19:58 +0600 Subject: [PATCH 186/245] refactor: check for iterable --- chk/modules/workflow/services.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 85686a63..5a8a4c28 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -5,8 +5,7 @@ from __future__ import annotations import json - -from pydantic import BaseModel +from collections.abc import Iterable from chk.infrastructure.view import PresentationBuilder from chk.modules.workflow import ( @@ -108,7 +107,7 @@ def dump_fmt(self) -> str: # PresentableExposeTypes for RunReport, ApiResponse, etc if isinstance(value, dict): for _k, _v in value.items(): - if isinstance(_v, BaseModel): + if isinstance(_v, Iterable): value[_k] = dict(_v) to_append = json.dumps(value) @@ -155,7 +154,7 @@ def dump_json(self) -> str: else: if isinstance(value, dict): for _k, _v in value.items(): - if isinstance(_v, BaseModel): + if isinstance(_v, Iterable): value[_k] = dict(_v) _to_append = value From ccd3168efc3a7ef51de0c3608b33551dbb2779c6 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 23:05:12 +0600 Subject: [PATCH 187/245] feat: allow yaml and yml extension --- chk/infrastructure/file_loader.py | 2 +- tests/infrastructure/file_loader_test.py | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index 7c7ccb38..06a93906 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -28,7 +28,7 @@ def is_file_ok(file_name: str, allowed_list: list | None = None) -> bool: """ if not allowed_list: - allowed_list = [".chk"] + allowed_list = [".chk", ".yaml", ".yal"] if not Path(file_name).is_file(): raise FileNotFoundError("File not found") diff --git a/tests/infrastructure/file_loader_test.py b/tests/infrastructure/file_loader_test.py index ef9c56a6..c7974408 100644 --- a/tests/infrastructure/file_loader_test.py +++ b/tests/infrastructure/file_loader_test.py @@ -5,8 +5,8 @@ from pathlib import Path import pytest -import tests +import tests from chk.infrastructure.file_loader import ( FileContext, FileLoader, @@ -173,12 +173,6 @@ def test_fail_with_default_allowed_list_file_not_found(self): with pytest.raises(FileNotFoundError): FileLoader.is_file_ok(file_name) - def test_fail_with_default_allowed_list_not_allowed_file(self): - file_name = FILE_PATH + "UserOk.yaml" - - with pytest.raises(LookupError): - FileLoader.is_file_ok(file_name) - def test_pass_with_given_allowed_list(self): file_name = FILE_PATH + "UserOk.yaml" assert FileLoader.is_file_ok(file_name, [".chk", ".yaml", ".yml"]) is True From 5afc2b93f8b63312b808e3406a184e071ed6039b Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 23:05:34 +0600 Subject: [PATCH 188/245] fix: circular import issue --- chk/modules/workflow/__init__.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index b802bccf..91ee190b 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -11,7 +11,6 @@ from pydantic import BaseModel, ConfigDict, Field -from chk.console.main import combine_initial_variables from chk.infrastructure.document import ( VersionedDocumentV2, ) @@ -131,9 +130,7 @@ def process_task_template( task_d_, **dict(base_file_path=base_fpath) ) - exctx_args = { - "variables": combine_initial_variables(json.dumps(task_o_.variables)) - } + exctx_args = {"variables": json.dumps(task_o_.variables)} if isinstance(task_o_, ChkwareValidateTask): exctx_args["arguments"] = task_o_.arguments.model_dump_json() From 4417d59744419fbd3fb63e6ec5111f7235ca1418 Mon Sep 17 00:00:00 2001 From: HSN Date: Sat, 12 Oct 2024 23:07:38 +0600 Subject: [PATCH 189/245] feat: setup workflow command --- chk/console/main.py | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/chk/console/main.py b/chk/console/main.py index 54ca93a5..16b6a41f 100644 --- a/chk/console/main.py +++ b/chk/console/main.py @@ -6,7 +6,7 @@ import chk.modules.fetch as fetch_executor import chk.modules.validate as validate_executor - +import chk.modules.workflow as workflow_executor from chk.infrastructure.file_loader import ExecuteContext, FileContext, FileLoader from chk.infrastructure.typing_extras import JsonDecodingError @@ -112,7 +112,7 @@ def fetch(file: str, no_format: bool, variables: str) -> None: @click.option("-D", "--data", type=str, help="Pass data as JSON") def validate(file: str, no_format: bool, variables: str, data: str) -> None: """\b - Command to run Http config files. + Command to run Validation specification files. FILE: Any .chk file, that has any of the following versions: \b @@ -138,3 +138,36 @@ def validate(file: str, no_format: bool, variables: str, data: str) -> None: ) validate_executor.execute(ctx, execution_ctx, after_hook) + + +# run validate sub-command +@chk.command() +@click.argument("file", type=click.Path(exists=True)) +@click.option( + "-nf", "--no-format", is_flag=True, help="No formatting to show the output" +) +@click.option("-V", "--variables", type=str, help="Pass variable(s) as JSON object") +def workflow(file: str, no_format: bool, variables: str) -> None: + """\b + Command to run Workflow specification files. + FILE: Any .chk file, that has any of the following versions: + + \b + - default.http.*""" + + ctx: FileContext = FileContext.from_file(file) + + execution_ctx = ExecuteContext( + { + "dump": True, + "format": not no_format, + }, + { + "variables": combine_initial_variables( + variables, + except_msg="-V, --variables accept values as JSON object", + ), + }, + ) + + workflow_executor.execute(ctx, execution_ctx, after_hook) From 5df8afaf7770c69802844bd813e95c2f7e02bdb2 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 13 Oct 2024 11:10:24 +0600 Subject: [PATCH 190/245] chore: package version update --- Pipfile.lock | 192 ++++++++++++++++++++++++++------------------------- 1 file changed, 99 insertions(+), 93 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index c976fc0c..2113e674 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1310,101 +1310,107 @@ }, "yarl": { "hashes": [ - "sha256:047b258e00b99091b6f90355521f026238c63bd76dcf996d93527bb13320eefd", - "sha256:06ff23462398333c78b6f4f8d3d70410d657a471c2c5bbe6086133be43fc8f1a", - "sha256:07f9eaf57719d6721ab15805d85f4b01a5b509a0868d7320134371bcb652152d", - "sha256:0aa92e3e30a04f9462a25077db689c4ac5ea9ab6cc68a2e563881b987d42f16d", - "sha256:0cf21f46a15d445417de8fc89f2568852cf57fe8ca1ab3d19ddb24d45c0383ae", - "sha256:0fd7b941dd1b00b5f0acb97455fea2c4b7aac2dd31ea43fb9d155e9bc7b78664", - "sha256:147e36331f6f63e08a14640acf12369e041e0751bb70d9362df68c2d9dcf0c87", - "sha256:16a682a127930f3fc4e42583becca6049e1d7214bcad23520c590edd741d2114", - "sha256:176110bff341b6730f64a1eb3a7070e12b373cf1c910a9337e7c3240497db76f", - "sha256:19268b4fec1d7760134f2de46ef2608c2920134fb1fa61e451f679e41356dc55", - "sha256:1b16f6c75cffc2dc0616ea295abb0e1967601bd1fb1e0af6a1de1c6c887f3439", - "sha256:1bfc25aa6a7c99cf86564210f79a0b7d4484159c67e01232b116e445b3036547", - "sha256:1ca3894e9e9f72da93544f64988d9c052254a338a9f855165f37f51edb6591de", - "sha256:1dda53508df0de87b6e6b0a52d6718ff6c62a5aca8f5552748404963df639269", - "sha256:217a782020b875538eebf3948fac3a7f9bbbd0fd9bf8538f7c2ad7489e80f4e8", - "sha256:2192f718db4a8509f63dd6d950f143279211fa7e6a2c612edc17d85bf043d36e", - "sha256:29a84a46ec3ebae7a1c024c055612b11e9363a8a23238b3e905552d77a2bc51b", - "sha256:3007a5b75cb50140708420fe688c393e71139324df599434633019314ceb8b59", - "sha256:30600ba5db60f7c0820ef38a2568bb7379e1418ecc947a0f76fd8b2ff4257a97", - "sha256:337912bcdcf193ade64b9aae5a4017a0a1950caf8ca140362e361543c6773f21", - "sha256:37001e5d4621cef710c8dc1429ca04e189e572f128ab12312eab4e04cf007132", - "sha256:3d569f877ed9a708e4c71a2d13d2940cb0791da309f70bd970ac1a5c088a0a92", - "sha256:4009def9be3a7e5175db20aa2d7307ecd00bbf50f7f0f989300710eee1d0b0b9", - "sha256:46a9772a1efa93f9cd170ad33101c1817c77e0e9914d4fe33e2da299d7cf0f9b", - "sha256:47eede5d11d669ab3759b63afb70d28d5328c14744b8edba3323e27dc52d298d", - "sha256:498b3c55087b9d762636bca9b45f60d37e51d24341786dc01b81253f9552a607", - "sha256:4e0d45ebf975634468682c8bec021618b3ad52c37619e5c938f8f831fa1ac5c0", - "sha256:4f24f08b6c9b9818fd80612c97857d28f9779f0d1211653ece9844fc7b414df2", - "sha256:55c144d363ad4626ca744556c049c94e2b95096041ac87098bb363dcc8635e8d", - "sha256:582cedde49603f139be572252a318b30dc41039bc0b8165f070f279e5d12187f", - "sha256:587c3cc59bc148a9b1c07a019346eda2549bc9f468acd2f9824d185749acf0a6", - "sha256:5cd5dad8366e0168e0fd23d10705a603790484a6dbb9eb272b33673b8f2cce72", - "sha256:5d02d700705d67e09e1f57681f758f0b9d4412eeb70b2eb8d96ca6200b486db3", - "sha256:625f207b1799e95e7c823f42f473c1e9dbfb6192bd56bba8695656d92be4535f", - "sha256:659603d26d40dd4463200df9bfbc339fbfaed3fe32e5c432fe1dc2b5d4aa94b4", - "sha256:689a99a42ee4583fcb0d3a67a0204664aa1539684aed72bdafcbd505197a91c4", - "sha256:68ac1a09392ed6e3fd14be880d39b951d7b981fd135416db7d18a6208c536561", - "sha256:6a615cad11ec3428020fb3c5a88d85ce1b5c69fd66e9fcb91a7daa5e855325dd", - "sha256:73bedd2be05f48af19f0f2e9e1353921ce0c83f4a1c9e8556ecdcf1f1eae4892", - "sha256:742aef0a99844faaac200564ea6f5e08facb285d37ea18bd1a5acf2771f3255a", - "sha256:75ff4c819757f9bdb35de049a509814d6ce851fe26f06eb95a392a5640052482", - "sha256:781e2495e408a81e4eaeedeb41ba32b63b1980dddf8b60dbbeff6036bcd35049", - "sha256:7a9f917966d27f7ce30039fe8d900f913c5304134096554fd9bea0774bcda6d1", - "sha256:7e2637d75e92763d1322cb5041573279ec43a80c0f7fbbd2d64f5aee98447b17", - "sha256:8089d4634d8fa2b1806ce44fefa4979b1ab2c12c0bc7ef3dfa45c8a374811348", - "sha256:816d24f584edefcc5ca63428f0b38fee00b39fe64e3c5e558f895a18983efe96", - "sha256:8385ab36bf812e9d37cf7613999a87715f27ef67a53f0687d28c44b819df7cb0", - "sha256:85cb3e40eaa98489f1e2e8b29f5ad02ee1ee40d6ce6b88d50cf0f205de1d9d2c", - "sha256:8648180b34faaea4aa5b5ca7e871d9eb1277033fa439693855cf0ea9195f85f1", - "sha256:8892fa575ac9b1b25fae7b221bc4792a273877b9b56a99ee2d8d03eeb3dbb1d2", - "sha256:88c7d9d58aab0724b979ab5617330acb1c7030b79379c8138c1c8c94e121d1b3", - "sha256:8a2f8fb7f944bcdfecd4e8d855f84c703804a594da5123dd206f75036e536d4d", - "sha256:8f4e475f29a9122f908d0f1f706e1f2fc3656536ffd21014ff8a6f2e1b14d1d8", - "sha256:8f50eb3837012a937a2b649ec872b66ba9541ad9d6f103ddcafb8231cfcafd22", - "sha256:91d875f75fabf76b3018c5f196bf3d308ed2b49ddcb46c1576d6b075754a1393", - "sha256:94b2bb9bcfd5be9d27004ea4398fb640373dd0c1a9e219084f42c08f77a720ab", - "sha256:9557c9322aaa33174d285b0c1961fb32499d65ad1866155b7845edc876c3c835", - "sha256:95e16e9eaa2d7f5d87421b8fe694dd71606aa61d74b824c8d17fc85cc51983d1", - "sha256:96952f642ac69075e44c7d0284528938fdff39422a1d90d3e45ce40b72e5e2d9", - "sha256:985623575e5c4ea763056ffe0e2d63836f771a8c294b3de06d09480538316b13", - "sha256:99ff3744f5fe48288be6bc402533b38e89749623a43208e1d57091fc96b783b9", - "sha256:9abe80ae2c9d37c17599557b712e6515f4100a80efb2cda15f5f070306477cd2", - "sha256:a152751af7ef7b5d5fa6d215756e508dd05eb07d0cf2ba51f3e740076aa74373", - "sha256:a2e4725a08cb2b4794db09e350c86dee18202bb8286527210e13a1514dc9a59a", - "sha256:a56fbe3d7f3bce1d060ea18d2413a2ca9ca814eea7cedc4d247b5f338d54844e", - "sha256:ab3abc0b78a5dfaa4795a6afbe7b282b6aa88d81cf8c1bb5e394993d7cae3457", - "sha256:b03384eed107dbeb5f625a99dc3a7de8be04fc8480c9ad42fccbc73434170b20", - "sha256:b0547ab1e9345dc468cac8368d88ea4c5bd473ebc1d8d755347d7401982b5dd8", - "sha256:b4c1ecba93e7826dc71ddba75fb7740cdb52e7bd0be9f03136b83f54e6a1f511", - "sha256:b693c63e7e64b524f54aa4888403c680342d1ad0d97be1707c531584d6aeeb4f", - "sha256:b6d0147574ce2e7b812c989e50fa72bbc5338045411a836bd066ce5fc8ac0bce", - "sha256:b9cfef3f14f75bf6aba73a76caf61f9d00865912a04a4393c468a7ce0981b519", - "sha256:b9f805e37ed16cc212fdc538a608422d7517e7faf539bedea4fe69425bc55d76", - "sha256:bab03192091681d54e8225c53f270b0517637915d9297028409a2a5114ff4634", - "sha256:bc24f968b82455f336b79bf37dbb243b7d76cd40897489888d663d4e028f5069", - "sha256:c14b504a74e58e2deb0378b3eca10f3d076635c100f45b113c18c770b4a47a50", - "sha256:c2089a9afef887664115f7fa6d3c0edd6454adaca5488dba836ca91f60401075", - "sha256:c8ed4034f0765f8861620c1f2f2364d2e58520ea288497084dae880424fc0d9f", - "sha256:cd2660c01367eb3ef081b8fa0a5da7fe767f9427aa82023a961a5f28f0d4af6c", - "sha256:d8361c7d04e6a264481f0b802e395f647cd3f8bbe27acfa7c12049efea675bd1", - "sha256:d9baec588f015d0ee564057aa7574313c53a530662ffad930b7886becc85abdf", - "sha256:dbd9ff43a04f8ffe8a959a944c2dca10d22f5f99fc6a459f49c3ebfb409309d9", - "sha256:e3f8bfc1db82589ef965ed234b87de30d140db8b6dc50ada9e33951ccd8ec07a", - "sha256:e6a2c5c5bb2556dfbfffffc2bcfb9c235fd2b566d5006dfb2a37afc7e3278a07", - "sha256:e749af6c912a7bb441d105c50c1a3da720474e8acb91c89350080dd600228f0e", - "sha256:e85d86527baebb41a214cc3b45c17177177d900a2ad5783dbe6f291642d4906f", - "sha256:ee2c68e4f2dd1b1c15b849ba1c96fac105fca6ffdb7c1e8be51da6fabbdeafb9", - "sha256:f3ab950f8814f3b7b5e3eebc117986f817ec933676f68f0a6c5b2137dd7c9c69", - "sha256:f4f4547944d4f5cfcdc03f3f097d6f05bbbc915eaaf80a2ee120d0e756de377d", - "sha256:f72a0d746d38cb299b79ce3d4d60ba0892c84bbc905d0d49c13df5bace1b65f8", - "sha256:fc2c80bc87fba076e6cbb926216c27fba274dae7100a7b9a0983b53132dd99f2", - "sha256:fe4d2536c827f508348d7b40c08767e8c7071614250927233bf0c92170451c0a" + "sha256:007531e85ca8d9fc35819709a52a6f0d133deecc3e2247f0e2b8350de36a3356", + "sha256:027bbf2e616ed072ee5f9344240c8d908c3c5a8c30cea31e8fa9899b42a6a51b", + "sha256:02e1c9e36528de270c22c06aac6a5a1de8cc870fafefb5e90e5b35cb8985d0b2", + "sha256:03344b592468257494a253b35f7b67c243397286dd0ae6be03af35eb34333139", + "sha256:04cb3e3a0f0fbf2a9614c88fef811c0f10449415a1ff532f437aec9bcc6b9da5", + "sha256:069de3a78672043e84b37078dbc250c5fff1b16ee1b584de5d684d402cc51703", + "sha256:0c4a3d28a0888bdc8529824e73afa8e5362c79ef2a68bec53fd040cb2ad84e39", + "sha256:0ea3ca97a5aa00943604f93919bc0741769b900dd3217d02f9d29274371fd758", + "sha256:1181f8912e0d1bb31cae5ab630d350ad2e79aab4196faea3669c3599e05af44b", + "sha256:1a6e972ee42b2c868985db62dd592629594c47279579372a64d7666b6d14683d", + "sha256:1bc9f6a7b0ede16fd2ed6bbdf89e78377b1f00f0e48806c5356c4d3174ae5906", + "sha256:2206775a9a2831c044ecc0863cb63e4e8cf5f8d4fce0fc3c900e5a51e9d57e87", + "sha256:28a865a4a06b90ea6ca985a530b7d95c795b4c63062f759fe88de90ae5f66198", + "sha256:2969fba35b5cd0418f343c363a3ae6c5dc847e3c2861a4ac857d004882a805d4", + "sha256:2aa01bb3f91a64aa1d42db9b704674f6ed7c19d2a296f1e3bd25ade9e97dbeb9", + "sha256:2c8c4ea31d28f47d7af24f44e5a2090ec4245ac3f3e34ce55ab1188d92e98a71", + "sha256:2ce9052e9f4196e44221e3d3d51cdcfa3b1afea05afbd896cefdd233e9606d08", + "sha256:3044230cd78f236f6b9c6e06cb7d618dd1cffebfb97600fb98e0a562f0f456ef", + "sha256:31397f4ea5700dfcb1b3ce6fdb24407ea874494fd546926f13a7449999180b67", + "sha256:35921994c4d23d3679d3999ca0fdd05b27e33363bc80e1c24681c9ba108eb874", + "sha256:3b7177ba5c965a436bb97d4db0841302075eb9fa77a6a806aa44975c5ff619fb", + "sha256:3c5782135b3a762e265b11dbb13df878d1a331ef498866036f743786adf70371", + "sha256:3d7c2224b6e8f40b39a61643212e5d974172394aae0244a9840f62aed4452ee4", + "sha256:41037ae2992cc3b0fa088ffe609e3c2f066284f9329035f26e853230e8f7ae13", + "sha256:41b2be15daf51cd8d50f54d2277f17ac6e6fed198f105956a48d8240f10b154b", + "sha256:4510ae890f55a685d7d8b55cf80f6a35799fbe682b8546a0aed67565f86793ce", + "sha256:45d986f872258bcd4f417b474e1c35e8bba14d69fb124432c417bd256adde38b", + "sha256:46091072123e7295b0f4a88c6c24f0386b3e45e54efddd141069d5e16e372ce6", + "sha256:46448214e3b7099ab8cfba576b71b7742ce13a1cec7824eebe7a71fc8903b304", + "sha256:49db3c1a5e11241c1de2133efaa87a28ae9ac20583ad1ec16737761d9d8324a0", + "sha256:5268b43abf47053dc0bbff72d78f69192dbe453fee9517036fc0a0cc84f341d7", + "sha256:54eef7907bb868e20ddcf4078e9a106e2c56a84ba31611038d28b9934ccb2a2c", + "sha256:566669cfcf4f89f9e8dafc06a81472122cd2b8c00cca24a2c662cb5c7fbe9edf", + "sha256:59aaa919f9898352cd3bf32d3a1bfc7d2aa399f83dd91b1915eaa684e27553b7", + "sha256:60c8b36f7ed73aeaa2948f27f9a8a905c23bf62e291b7b9fc53348b4789b180c", + "sha256:65a41d40b34391aeb3b973410ed0ed86b3023e5371dce6e7ff1c57af5794391d", + "sha256:699ce4edbc471bf39ffdb2060c643f1750a7ccb4b7a34a45dccb389c0ec4996b", + "sha256:6a976eeaea67b1d53dce91174968f077ae7f3a0a05ede80a099bc584ea748bdd", + "sha256:6c3968e4ec6b44af29562824c7973c12c22041b2dc080613a7c41c7c09901579", + "sha256:6ce6768a192aa3af22a9b58d1b07226e9313b3e6e179bdb8de215d99a6baef86", + "sha256:6e3959cfba2bb48a0d8b83f370452b400710dd0900f9fdad0ce9e913e6d65b8f", + "sha256:6e75b66019709dce95a4a7b47fe3b072f1d7eb8bd0c323e5e62332c84a05aa50", + "sha256:6f3595518f4e8b97c0a2d01030e27937d22f2506a1503282b8965ae1dcd0dec6", + "sha256:70b34ba1be6d0726efdc0da9c477e5363132d2ac97d0951926b6046a7c24c70e", + "sha256:72d312f74665006911c4de95e1633c6e9e4b1f003ef4f76d4b36e01cfa7ed820", + "sha256:759f18151f785888344ec1f28d5a2bd61ca2ccb80d04b65ab9548d524b1b9acb", + "sha256:7d94d8a3927516c10be9958caa72a4148d9c99fc4de3442fa00873870d58d430", + "sha256:7e3b2e7518d6789b577793912b0037f36fdcff28a73a1f5c1affc34759852b4f", + "sha256:839f1056ceca5b2019174f8c15ba131c3eebece241b228d46a469760953e8049", + "sha256:860fc2726e32b4ac3b0a44535853a9b1ea14975a8c4207609f2883dcfcbd5ecc", + "sha256:87593714a38a4a51efc967b0477c72f55a08ed6b801bfcf68656e68f233047c7", + "sha256:889993b2bc2f04308d4ebe12424fecccc22062aa06c61771d3e9302527a0bdec", + "sha256:8dda10d4525517e32dc33c5fe98c5b877b9807ce0ecd8acef93c09f1406b4fe4", + "sha256:8ecf1511b7db6a09681765c70952503418468deff5d8c34100f44c8318755836", + "sha256:974fa4829a09fa0d7a6375d40f39ad9265904d7c1754e2b9dc302ceedc54388d", + "sha256:9d60326a87fcd9c1b1ccc18344b036ecdaa5e92c52c163560759df50fc0d39f6", + "sha256:a3e237e19fca6b4aa18e6bc7702d27c4e9460f1d0f3a792cdf4aefdc10d52411", + "sha256:a6dd351c2f38c8168b6860338f4c30e9c160a0fb474dcbedf2224c63a86a7512", + "sha256:a86cb224d1f31ed4c6ba79188b571d517fdc730c6edcf6baf6e71805d88f183f", + "sha256:ab5140fd448ce090c73b651bedbbf26de42317466f70210648480e2d63fedf04", + "sha256:ac28421ab71ec2d50eb7dff76a64ef81de92fb9738a81de2500b031b6f5f6038", + "sha256:af1741bedd1b3a1100635a30c2fa5850bc95e5647be3d221e28684b66d16f655", + "sha256:b169b0edb76e72b46373fcc1b4b9820a3680639f92ad506c2b7de9450546bea6", + "sha256:b28dc68741c2eda94ac2ce9fb16c73aa9b90c0c0cdf99cf8a7c86dec94dc5de2", + "sha256:b5f27f515f69dea928cc16577844762226893098426ba54223fc62c70af5863a", + "sha256:b79a4df7029446ae8062f74c093a2f6c305f65b3ec89fa8ce3e064c0eeb36f3f", + "sha256:bd735297b9e9afba34bf05a3580e80e4145031d319723777e58f169d7ef553bb", + "sha256:bd756524c387478f0788937dfbe132d01663e783e1424f7d3a72df552521c995", + "sha256:bd9c7873f26065a0ff3189c5002fb5c8e41d3e49741e0e903a11f12be27c841b", + "sha256:c1b1dc71d6b4d6ab785e1f7a916960eb094be6300bc92e515d7a04709b2fad6b", + "sha256:c261d807048b9e17b0a3c413d4926c34b5563c6b94f95c17daff6053901d0ab0", + "sha256:c551571a5941093b86c0c05fdf136fafbe4308b83cd4fc77d92b21c6726f7c13", + "sha256:c7b85ad874cf6eaad545f2bd838b3782db30cecb9364ade0214b9a7e9462d051", + "sha256:cbe2765f54e5940c705c8c1c125f12c84f7bd486f7925bcb7abc6740b97fdd5c", + "sha256:cc5fbe7629e454d3c4a621c8416e9a1956d7f2523296142d46edc17d7d54901e", + "sha256:cd5857354c53d023fd97d06fb01b6c0f176cfc73ae03460a1812455095e214d6", + "sha256:cda340ed6afd475d4e58d8f34d3f08a4dda956cde86930f51827972ed4e98f3d", + "sha256:d2376327a557661424599278fbf3a1bcb96b90c8316743ba3d9ad831e794e11a", + "sha256:d25da5fc7a2993e1d9818e4dfdc67c95c771678e0d3499a1d67e42bfa75890ba", + "sha256:d44ec44b4771544b815cff0efa05f6d58e9f87e9b05aa15d13739111ae53df1e", + "sha256:d6b646d8eae5fb38b9401daac98e40335228306305d491f52914b161f6cf319c", + "sha256:d7251c8185c49c17270d756da2c97de5c076790d64450a56c4814b3a40f3807f", + "sha256:d8e5a1ee05b5d742accc42512a1d6a8c59f6906db1dd298d98e1a6ab98470373", + "sha256:dab310e5fa1ec359bf105d03f2e1227ade8952b78961ccd1b17f9f9acb3f49ae", + "sha256:dce3ed94298b3e6a5dad8b86633ba70564411f459ce5d0e4bf57e973ef3fc158", + "sha256:dfeba6be776409230aebf12bd01539097459886c925ae20fac2c3b736ba0284a", + "sha256:e328110c15b4d2dbb00861feaa7e0ce5aebfc355406e0f6d9e46adcb5abe9a55", + "sha256:e5b1e400252498d3de94b19197039422539c62f081c21f3b785e184cdd041a85", + "sha256:e5c0b30bdc6668d3a1c9ecebae4dc22fd90b02c7ea68f7907db315fd81853f06", + "sha256:e9672cdc71bb44d45240b8447793efb83a76a046000dafb6e2ac827db9dfbdda", + "sha256:e9dec42480ee079581faafb05fa55731ec80693310a6775e8adbf83edc52fd24", + "sha256:ee09963524b5327e2bfe3dfecd19d0403d2b1afbd11a49a00d4d379c1551406e", + "sha256:ef6b02ebc4b05c9d5575ae6120af173421f1bc653452967c8ae47f6e820d2f75", + "sha256:f1cd16833ff1d6250350794c3df1be2ce0960fa64740699dfa688769aa1c6a89", + "sha256:f313ce3a41c8c280f90ec0770dc2bd464a8b24f5c785daa70f71654b1334295b", + "sha256:f9a3a53622f0e905a7f3557b770d48e737b8a38141c81eecbcc947fac164d1f9", + "sha256:fa0c603f007bf3f54bcd7f011f46134995a129a8f0c8e70f0ad8330228ff02d7", + "sha256:fa72a0e5037c2c91d1b945ff20698c01a7897b10ab93c0979b8543e2ad0b1d76" ], "markers": "python_version >= '3.8'", - "version": "==1.14.0" + "version": "==1.15.1" } } } From 6283b3a86e73c346ae02d7190a0a256aa44050f0 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 14 Oct 2024 15:09:17 +0600 Subject: [PATCH 191/245] feat: setup exception in validate --- chk/modules/validate/__init__.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 86253461..59db8750 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -220,11 +220,18 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: ValidationDocumentSupport.set_data_template(validate_doc, variable_doc, exec_ctx) ValidationDocumentSupport.process_data_template(variable_doc) - assert_list = ValidationDocumentSupport.make_assertion_entry_list( - validate_doc.asserts - ) + r_exception: Exception | None = None + try: + assert_list = ValidationDocumentSupport.make_assertion_entry_list( + validate_doc.asserts + ) + + test_run_result = AssertionEntryListRunner.test_run( + assert_list, variable_doc.data + ) + except Exception as ex: + r_exception = ex - test_run_result = AssertionEntryListRunner.test_run(assert_list, variable_doc.data) output_data = Variables( { "_asserts_response": test_run_result, @@ -247,6 +254,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: variables=variable_doc, extra=test_run_result, exposed=exposed_data, + exception=r_exception, report={ "is_success": test_run_result.count_fail == 0, "count_all": test_run_result.count_all, @@ -267,6 +275,8 @@ def execute( """ exr = call(file_ctx=ctx, exec_ctx=exec_ctx) + if exr.exception is not None: + raise exr.exception cb({ctx.filepath_hash: exr.variables_exec.data}) PresentationService.display(exr, exec_ctx, ValidatePresenter) From 2e2938dbeab1c08c32c493602b27c8c022b11a35 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 14 Oct 2024 17:21:31 +0600 Subject: [PATCH 192/245] feat: setup exception in workflow --- chk/modules/workflow/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 91ee190b..b3f49fa8 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -183,7 +183,12 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: service = WorkflowDocumentSupport() # @TODO make sure the document do not call self making it repeating service.set_step_template(variable_doc) - exec_report = service.process_task_template(wflow_doc, variable_doc) + + r_exception: Exception | None = None + try: + exec_report = service.process_task_template(wflow_doc, variable_doc) + except Exception as ex: + r_exception = ex output_data = Variables({"_steps": variable_doc[WorkflowConfigNode.NODE.value]}) @@ -199,6 +204,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: variables_exec=output_data, extra=exec_report, exposed=exposed_data, + exception=r_exception, ) @@ -214,6 +220,8 @@ def execute( """ exr = call(file_ctx=ctx, exec_ctx=exec_ctx) + if exr.exception is not None: + raise exr.exception cb({ctx.filepath_hash: exr.variables_exec.data}) PresentationService.display(exr, exec_ctx, WorkflowPresenter) From dcf01409077314e0971b6e805221480ee158e490 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 14 Oct 2024 20:07:49 +0600 Subject: [PATCH 193/245] refactor: let top level handle to control api exception --- chk/infrastructure/third_party/http_fetcher.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/chk/infrastructure/third_party/http_fetcher.py b/chk/infrastructure/third_party/http_fetcher.py index 7763ec8b..98b31231 100644 --- a/chk/infrastructure/third_party/http_fetcher.py +++ b/chk/infrastructure/third_party/http_fetcher.py @@ -1,7 +1,9 @@ """ Driver to handle requests library (https://pypi.org/project/requests/) """ + from __future__ import annotations + from collections import UserDict import requests @@ -81,15 +83,4 @@ def fetch(params: dict) -> ApiResponse: ApiResponse: a new ApiResponse """ - try: - return ApiResponse.from_response(requests.request(**params)) - except requests.ConnectTimeout as err: - raise RuntimeError("Connection time out") from err - except requests.ConnectionError as err: - raise RuntimeError("Connection error") from err - except requests.ReadTimeout as err: - raise RuntimeError("Read time out") from err - except requests.TooManyRedirects as err: - raise RuntimeError("Too many redirects") from err - except requests.RequestException as err: - raise RuntimeError("Request error") from err + return ApiResponse.from_response(requests.request(**params)) From c183b82a89b3526a22a96d468f55df97ecf2f1b3 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 12:19:17 +0600 Subject: [PATCH 194/245] refactor: move dependent functions to core module --- .../third_party/http_fetcher.py | 86 ------------------- chk/modules/fetch.py | 86 +++++++++++++++++-- 2 files changed, 81 insertions(+), 91 deletions(-) delete mode 100644 chk/infrastructure/third_party/http_fetcher.py diff --git a/chk/infrastructure/third_party/http_fetcher.py b/chk/infrastructure/third_party/http_fetcher.py deleted file mode 100644 index 98b31231..00000000 --- a/chk/infrastructure/third_party/http_fetcher.py +++ /dev/null @@ -1,86 +0,0 @@ -""" -Driver to handle requests library (https://pypi.org/project/requests/) -""" - -from __future__ import annotations - -from collections import UserDict - -import requests - - -class ApiResponse(UserDict): - """Represent a response""" - - __slots__ = ("code", "info", "headers", "body") - - code: int - info: str - headers: dict - body: str - - @property - def as_fmt_str(self) -> str: - """String representation of ApiResponse - - Returns: - str: String representation - """ - # set info - presentation = f"{self['info']}\r\n\r\n" - - # set headers - presentation += "\r\n".join(f"{k}: {v}" for k, v in self["headers"].items()) - presentation += "\r\n\r\n" - - # set body - presentation += self["body"] - - return presentation - - @staticmethod - def from_response(response: requests.Response) -> ApiResponse: - """Create a ApiResponse object from requests.Response object - - Args: - response (requests.Response): _description_ - - Returns: - ApiResponse: _description_ - """ - version = "HTTP/1.0" if response.raw.version == 10 else "HTTP/1.1" - - return ApiResponse( - code=response.status_code, - info=f"{version} {response.status_code} {response.reason}", - headers=dict(response.headers), - body=response.text, - ) - - -class BearerAuthentication(requests.auth.AuthBase): - """Authentication: Bearer ... support""" - - def __init__(self, token: str) -> None: - """Construct BearerAuthentication""" - - self.token = token - - def __call__(self, r: requests.PreparedRequest) -> requests.PreparedRequest: - """Add the actual header on call""" - - r.headers["authorization"] = "Bearer " + self.token - return r - - -def fetch(params: dict) -> ApiResponse: - """Fetch an external resource - - Args: - params (dict): all supported params from requests.request - - Returns: - ApiResponse: a new ApiResponse - """ - - return ApiResponse.from_response(requests.request(**params)) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 8904889b..87d02ddb 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -10,6 +10,7 @@ from collections import UserDict, abc from urllib.parse import unquote, urlparse +import requests import xmltodict from defusedxml.minidom import parseString from pydantic import BaseModel, Field @@ -30,16 +31,91 @@ Variables, replace_value, ) -from chk.infrastructure.third_party.http_fetcher import ( - ApiResponse, - BearerAuthentication, - fetch, -) + from chk.infrastructure.version import DocumentVersionMaker, SCHEMA as VER_SCHEMA VERSION_SCOPE = ["http"] + +class ApiResponse(UserDict): + """Represent a response""" + + __slots__ = ("code", "info", "headers", "body") + + code: int + info: str + headers: dict + body: str + + @property + def as_fmt_str(self) -> str: + """String representation of ApiResponse + + Returns: + str: String representation + """ + # set info + presentation = f"{self['info']}\r\n\r\n" + + # set headers + presentation += "\r\n".join(f"{k}: {v}" for k, v in self["headers"].items()) + presentation += "\r\n\r\n" + + # set body + presentation += self["body"] + + return presentation + + @staticmethod + def from_response(response: requests.Response) -> ApiResponse: + """Create a ApiResponse object from requests.Response object + + Args: + response (requests.Response): _description_ + + Returns: + ApiResponse: _description_ + """ + version = "HTTP/1.0" if response.raw.version == 10 else "HTTP/1.1" + + return ApiResponse( + code=response.status_code, + info=f"{version} {response.status_code} {response.reason}", + headers=dict(response.headers), + body=response.text, + ) + + +class BearerAuthentication(requests.auth.AuthBase): + """Authentication: Bearer ... support""" + + def __init__(self, token: str) -> None: + """Construct BearerAuthentication""" + + self.token = token + + def __call__(self, r: requests.PreparedRequest) -> requests.PreparedRequest: + """Add the actual header on call""" + + r.headers["authorization"] = "Bearer " + self.token + return r + + +def fetch(params: dict) -> ApiResponse: + """Fetch an external resource + + Args: + params (dict): all supported params from requests.request + + Returns: + ApiResponse: a new ApiResponse + """ + + return ApiResponse.from_response(requests.request(**params)) + + + class HttpMethod(enum.StrEnum): """Constants of wellknown http methods""" From e4310734b9c7dc36861225f97a9445ddf74416b2 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 12:25:49 +0600 Subject: [PATCH 195/245] refactor: remove fetch and its implementations --- chk/modules/fetch.py | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 87d02ddb..04459bdd 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -31,13 +31,11 @@ Variables, replace_value, ) - from chk.infrastructure.version import DocumentVersionMaker, SCHEMA as VER_SCHEMA VERSION_SCOPE = ["http"] - class ApiResponse(UserDict): """Represent a response""" @@ -102,20 +100,6 @@ def __call__(self, r: requests.PreparedRequest) -> requests.PreparedRequest: return r -def fetch(params: dict) -> ApiResponse: - """Fetch an external resource - - Args: - params (dict): all supported params from requests.request - - Returns: - ApiResponse: a new ApiResponse - """ - - return ApiResponse.from_response(requests.request(**params)) - - - class HttpMethod(enum.StrEnum): """Constants of wellknown http methods""" @@ -507,7 +491,7 @@ def execute_request(http_doc: HttpDocument) -> ApiResponse: HttpRequestArgCompiler.add_generic_args(http_doc.request, request_args) - return fetch(request_args) + return ApiResponse.from_response(requests.request(**request_args)) @staticmethod def process_request_template(http_doc: HttpDocument, variables: Variables) -> None: From 309d4b73a42dfc0112e59a4d9db398bb349f87dd Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 14:36:56 +0600 Subject: [PATCH 196/245] refactor: remove fetch display helper --- chk/modules/fetch.py | 58 ++------------------------------------------ 1 file changed, 2 insertions(+), 56 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 04459bdd..6e974e4c 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -21,7 +21,7 @@ VersionedDocumentV2, ) from chk.infrastructure.file_loader import ExecuteContext, FileContext -from chk.infrastructure.helper import data_get, formatter +from chk.infrastructure.helper import data_get from chk.infrastructure.symbol_table import ( EXPOSE_SCHEMA as EXP_SCHEMA, ExecResponse, @@ -514,68 +514,14 @@ def build_schema() -> dict: return {**VER_SCHEMA, **SCHEMA, **VAR_SCHEMA, **EXP_SCHEMA} - @staticmethod - def display(exposed: dict, exec_ctx: ExecuteContext) -> None: - """Displays the response based on the command response format - Args: - exposed: list - exec_ctx: ExecuteContext - """ - - if not exposed: - return display_item_list: list[object] = [] - for _, expose_item in exposed.items(): - if isinstance(expose_item, (dict, list)): - if {"code", "info", "headers", "body"}.issubset(expose_item): - resp = ApiResponse(expose_item) - - if exec_ctx.options["format"]: - display_item_list.append(resp.as_fmt_str) - else: - display_item_list.append( - ApiResponseDict.from_api_response(resp).as_dict - ) - else: - if exec_ctx.options["format"]: - display_item_list.append(json.dumps(expose_item)) - else: - display_item_list.append(expose_item) + else: - if exec_ctx.options["format"]: - display_item_list.append(str(expose_item)) - else: - display_item_list.append(expose_item) - - if exec_ctx.options["format"]: - formatter( - ( - "\n---\n".join( - [ - item if isinstance(item, str) else str(item) - for item in display_item_list - ] - ) - if len(display_item_list) > 1 - else display_item_list.pop() - ), - dump=exec_ctx.options["dump"], - ) - else: - _to_display = ( - display_item_list - if len(display_item_list) > 1 - else display_item_list.pop() - ) - _to_display = ( - _to_display if isinstance(_to_display, str) else json.dumps(_to_display) - ) - formatter(_to_display, dump=exec_ctx.options["dump"]) def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: From c62325e1d81bbedaac995fca1bedd07efc22cf36 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 14:37:56 +0600 Subject: [PATCH 197/245] feat: add FetchPresenter and implement --- chk/modules/fetch.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 6e974e4c..c99e24f1 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -32,6 +32,7 @@ replace_value, ) from chk.infrastructure.version import DocumentVersionMaker, SCHEMA as VER_SCHEMA +from chk.infrastructure.view import PresentationBuilder, PresentationService VERSION_SCOPE = ["http"] @@ -515,13 +516,36 @@ def build_schema() -> dict: return {**VER_SCHEMA, **SCHEMA, **VAR_SCHEMA, **EXP_SCHEMA} +class FetchPresenter(PresentationBuilder): + """FetchPresenter""" - display_item_list: list[object] = [] + def dump_json(self) -> str: + """dump json""" + displayables: list[object] = [] + for key, expose_item in self.data.exposed.items(): + if key == RequestConfigNode.LOCAL: + resp = ApiResponse(expose_item) + displayables.append(ApiResponseDict.from_api_response(resp).as_dict) else: + displayables.append(expose_item) + return json.dumps(displayables) + def dump_fmt(self) -> str: + """dump fmt string""" + + displayables: list[str] = [] + + for key, expose_item in self.data.exposed.items(): + if key == RequestConfigNode.LOCAL: + resp = ApiResponse(expose_item) + displayables.append(resp.as_fmt_str) + else: + displayables.append(json.dumps(expose_item)) + + return "\n======\n".join(displayables) def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: @@ -592,7 +616,7 @@ def execute( raise exr.exception cb({ctx.filepath_hash: exr.variables_exec.data}) - HttpDocumentSupport.display(exr.exposed, exec_ctx) + PresentationService.display(exr, exec_ctx, FetchPresenter) def task_fetch(**kwargs: dict) -> ExecResponse: From 6dbd652110288a62088115e9de7d34f84d7014cc Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 15:00:23 +0600 Subject: [PATCH 198/245] feat: add abstract signature and impl for error dump --- chk/infrastructure/view.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/chk/infrastructure/view.py b/chk/infrastructure/view.py index dd272b3c..6a59358f 100644 --- a/chk/infrastructure/view.py +++ b/chk/infrastructure/view.py @@ -27,6 +27,18 @@ def dump_json(self) -> str: raise NotImplementedError("Signature to dump json") + @abc.abstractmethod + def dump_error_fmt(self) -> str: + """Signature to dump formatted error string""" + + raise NotImplementedError("Signature to dump formatted error string") + + @abc.abstractmethod + def dump_error_json(self) -> str: + """Signature to dump error json""" + + raise NotImplementedError("Signature to dump error json") + class PresentationService: """Comment service for presentation""" @@ -40,6 +52,12 @@ def display( ) -> None: wfp = presenter(data=ex_resp) if exec_ctx.options["format"]: - formatter(wfp.dump_fmt(), dump=exec_ctx.options["dump"]) + if ex_resp.exception: + formatter(wfp.dump_error_fmt(), dump=exec_ctx.options["dump"]) + else: + formatter(wfp.dump_fmt(), dump=exec_ctx.options["dump"]) else: - formatter(wfp.dump_json(), dump=exec_ctx.options["dump"]) + if ex_resp.exception: + formatter(wfp.dump_error_json(), dump=exec_ctx.options["dump"]) + else: + formatter(wfp.dump_json(), dump=exec_ctx.options["dump"]) From d590e74b494f7cd3efe57eb91eccc2b83a32d509 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 15:00:57 +0600 Subject: [PATCH 199/245] feat: dump impl for fetch error --- chk/modules/fetch.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index c99e24f1..9955e441 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -519,6 +519,26 @@ def build_schema() -> dict: class FetchPresenter(PresentationBuilder): """FetchPresenter""" + def dump_error_json(self) -> str: + return json.dumps( + { + "error": ( + repr(self.data.exception) + if self.data.exception + else "Unspecified error" + ) + } + ) + + def dump_error_fmt(self) -> str: + """dump fmt error str""" + + return ( + f"Fetch error\n------\n{repr(self.data.exception)}" + if self.data.exception + else "Fetch error\n------\nUnspecified error" + ) + def dump_json(self) -> str: """dump json""" @@ -612,8 +632,6 @@ def execute( """ exr = call(file_ctx=ctx, exec_ctx=exec_ctx) - if exr.exception is not None: - raise exr.exception cb({ctx.filepath_hash: exr.variables_exec.data}) PresentationService.display(exr, exec_ctx, FetchPresenter) From f84a52d56350cf84a68fe27465f49621a60203fe Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 15:05:33 +0600 Subject: [PATCH 200/245] feat: implement error handling for validate module --- chk/modules/validate/__init__.py | 2 -- chk/modules/validate/services.py | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 59db8750..92f11254 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -275,8 +275,6 @@ def execute( """ exr = call(file_ctx=ctx, exec_ctx=exec_ctx) - if exr.exception is not None: - raise exr.exception cb({ctx.filepath_hash: exr.variables_exec.data}) PresentationService.display(exr, exec_ctx, ValidatePresenter) diff --git a/chk/modules/validate/services.py b/chk/modules/validate/services.py index 11ba1a4d..8a81994a 100644 --- a/chk/modules/validate/services.py +++ b/chk/modules/validate/services.py @@ -9,6 +9,27 @@ class ValidatePresenter(PresentationBuilder): + """ValidatePresenter""" + + def dump_error_json(self) -> str: + return dumps( + { + "error": ( + repr(self.data.exception) + if self.data.exception + else "Unspecified error" + ) + } + ) + + def dump_error_fmt(self) -> str: + """dump fmt error str""" + + return ( + f"Validate error\n------\n{repr(self.data.exception)}" + if self.data.exception + else "Validate error\n------\nUnspecified error" + ) def dump_fmt(self) -> str: """dump formatted string""" From 0b6f9582e307354a5f21637890b2d22ebf861958 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 15:45:48 +0600 Subject: [PATCH 201/245] feat: implement error handling for wofkflow module --- chk/modules/workflow/__init__.py | 2 -- chk/modules/workflow/services.py | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index b3f49fa8..250006d7 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -220,8 +220,6 @@ def execute( """ exr = call(file_ctx=ctx, exec_ctx=exec_ctx) - if exr.exception is not None: - raise exr.exception cb({ctx.filepath_hash: exr.variables_exec.data}) PresentationService.display(exr, exec_ctx, WorkflowPresenter) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 5a8a4c28..edec2b16 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -48,6 +48,26 @@ def make_task(cls, task_d_: dict, /, **kwargs: dict) -> ChkwareTask: class WorkflowPresenter(PresentationBuilder): """WorkflowPresenter""" + def dump_error_json(self) -> str: + return json.dumps( + { + "error": ( + repr(self.data.exception) + if self.data.exception + else "Unspecified error" + ) + } + ) + + def dump_error_fmt(self) -> str: + """dump fmt error str""" + + return ( + f"Workflow error\n------\n{repr(self.data.exception)}" + if self.data.exception + else "Workflow error\n------\nUnspecified error" + ) + def _prepare_dump_data(self) -> dict: """prepare dump data""" From 8d15bd7ed0ffb6077e8bf3029a9f1a1692e37016 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 20:11:28 +0600 Subject: [PATCH 202/245] feat: add is_success report to workflow --- chk/modules/workflow/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 250006d7..b90cf702 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -205,6 +205,9 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: extra=exec_report, exposed=exposed_data, exception=r_exception, + report={ + "is_success": r_exception is None, + }, ) From ea2517705e490ed6eadf004636e444c521789ee3 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 21:06:26 +0600 Subject: [PATCH 203/245] feat: support for adding exception in StepResult --- chk/modules/workflow/entities.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/entities.py b/chk/modules/workflow/entities.py index 7ea556fb..07a80e59 100644 --- a/chk/modules/workflow/entities.py +++ b/chk/modules/workflow/entities.py @@ -83,7 +83,10 @@ def __init__(self, basepath: str, /, **kwargs: dict) -> None: class StepResult(BaseModel): """StepResult""" + model_config = ConfigDict(arbitrary_types_allowed=True) + task: ChkwareTask | ChkwareValidateTask is_success: bool others: dict = Field(default_factory=dict) - exposed: list | dict = Field(default_factory=list) + exposed: dict = Field(default_factory=list) + exception: Exception | None = Field(default=None) From bc0e06952dfd87bdd50b15982036136b39c58482 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 21:07:51 +0600 Subject: [PATCH 204/245] feat: pass step exception and show message --- chk/modules/workflow/__init__.py | 1 + chk/modules/workflow/services.py | 31 ++++++++++++++++++++----------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index b90cf702..31b7a920 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -155,6 +155,7 @@ def process_task_template( is_success=task_resp.report.pop("is_success"), others=task_resp.report, exposed=task_resp.exposed, + exception=task_resp.exception ) ) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index edec2b16..6390dcd2 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -80,7 +80,7 @@ def _prepare_dump_data(self) -> dict: r_dump["name"] = _document["name"] if exec_report: - r_dump["step_count"] = len(exec_report) + r_dump["step_count"] = len(_document["tasks"]) r_dump["step_failed"] = len( [item for item in exec_report if not item.is_success] ) @@ -94,21 +94,26 @@ def _prepare_dump_data(self) -> dict: "name": item.task.name, "uses": item.task.uses, "is_success": item.is_success, - "fetch_request_method": ( + "exception": repr(item.exception), + } + if item.task.uses == "fetch": + + response_task_dump["fetch_request_method"] = ( item.others["request_method"] if "request_method" in item.others else "" - ), - "fetch_request_url": ( + ) + response_task_dump["fetch_request_url"] = ( item.others["request_url"] if "request_url" in item.others else "" - ), - "validate_asserts_count_all": ( + ) + + if item.task.uses == "validate": + response_task_dump["validate_asserts_count_all"] = ( item.others["count_all"] if "count_all" in item.others else "" - ), - "validate_asserts_count_fail": ( + ) + response_task_dump["validate_asserts_count_fail"] = ( item.others["count_fail"] if "count_fail" in item.others else "" - ), - } + ) r_dump["tasks"].append(response_task_dump) return r_dump @@ -149,15 +154,19 @@ def _prepare_dump_str_for_steps(self) -> str: for one_task in tasks: _computed_str += "\n------\n" - _computed_str += "+ " if one_task["is_success"] else "- " + _computed_str += "+ [PASS] " if one_task["is_success"] else "- [FAIL] " _computed_str += f"Task: {one_task['name']}\n" if one_task["uses"] == "fetch": _computed_str += f">> {one_task['fetch_request_method']} {one_task['fetch_request_url']}" + if not one_task["is_success"]: + _computed_str += f"\n>> With message: {one_task['exception']}" elif one_task["uses"] == "validate": _computed_str += ( f">> Total tests: {one_task['validate_asserts_count_all']}, " ) _computed_str += f"Failed: {one_task['validate_asserts_count_fail']}" + if not one_task["is_success"]: + _computed_str += f"\n>> With message: {one_task['exception']}" return _computed_str From 78b71540ef18320276347c24f3fc23b75c93b800 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 21:08:55 +0600 Subject: [PATCH 205/245] feat: break the workflow when step error found --- chk/modules/workflow/__init__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 31b7a920..845a5864 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -120,7 +120,11 @@ def process_task_template( base_fpath: str = FileContext(*document.context).filepath exec_report: list[StepResult] = [] + is_success = True for task in document.tasks: + if not is_success: + break + if not isinstance(task, dict): raise RuntimeError("`tasks.*.item` should be map.") @@ -149,10 +153,12 @@ def process_task_template( te_param = TaskExecParam(task=task_o_, exec_ctx=execution_ctx) task_resp: ExecResponse = cls.execute_task(task_fn, te_param, variables) + is_success = task_resp.report.pop("is_success") + exec_report.append( StepResult( task=task_o_, - is_success=task_resp.report.pop("is_success"), + is_success=is_success, others=task_resp.report, exposed=task_resp.exposed, exception=task_resp.exception From 953d0250ca42539c6ba9d0f54819e718f91bb220 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 21:13:51 +0600 Subject: [PATCH 206/245] refactor: general refactor --- chk/modules/workflow/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 845a5864..000d9710 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -152,7 +152,6 @@ def process_task_template( if task_fn: te_param = TaskExecParam(task=task_o_, exec_ctx=execution_ctx) task_resp: ExecResponse = cls.execute_task(task_fn, te_param, variables) - is_success = task_resp.report.pop("is_success") exec_report.append( @@ -161,7 +160,7 @@ def process_task_template( is_success=is_success, others=task_resp.report, exposed=task_resp.exposed, - exception=task_resp.exception + exception=task_resp.exception, ) ) From 3e761a333c6537ac7ae90addc8137c417e092e5f Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 15 Oct 2024 21:21:14 +0600 Subject: [PATCH 207/245] feat: raise validation error on validation fail --- chk/modules/validate/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 92f11254..94d4bd74 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -229,6 +229,9 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: test_run_result = AssertionEntryListRunner.test_run( assert_list, variable_doc.data ) + + if test_run_result.count_fail != 0: + raise SystemError("Validation failed") except Exception as ex: r_exception = ex From 7c6f77199eed2ff7e003b96e8c2560daf8fa0e96 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 16 Oct 2024 12:07:36 +0600 Subject: [PATCH 208/245] refactor: rename variables --- chk/modules/validate/__init__.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 94d4bd74..946b9be0 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -226,18 +226,16 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: validate_doc.asserts ) - test_run_result = AssertionEntryListRunner.test_run( - assert_list, variable_doc.data - ) + run_rpt = AssertionEntryListRunner.test_run(assert_list, variable_doc.data) - if test_run_result.count_fail != 0: + if run_rpt.count_fail != 0: raise SystemError("Validation failed") except Exception as ex: r_exception = ex output_data = Variables( { - "_asserts_response": test_run_result, + "_asserts_response": run_rpt, "_data": variable_doc["_data"], } ) @@ -246,7 +244,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: validate_doc, { **variable_doc.data, - **{"_asserts_response": test_run_result}, + **{"_asserts_response": run_rpt}, }, ) @@ -255,13 +253,13 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: exec_ctx=exec_ctx, variables_exec=output_data, variables=variable_doc, - extra=test_run_result, + extra=run_rpt, exposed=exposed_data, exception=r_exception, report={ - "is_success": test_run_result.count_fail == 0, - "count_all": test_run_result.count_all, - "count_fail": test_run_result.count_fail, + "is_success": run_rpt.count_fail == 0, + "count_all": run_rpt.count_all, + "count_fail": run_rpt.count_fail, }, ) From 7133576417299c427073f2b2dd25546eb7bde17e Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 16 Oct 2024 12:07:54 +0600 Subject: [PATCH 209/245] feat: process and print validate exceptions --- chk/modules/validate/__init__.py | 1 + chk/modules/workflow/services.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 946b9be0..ca4f08bb 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -260,6 +260,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: "is_success": run_rpt.count_fail == 0, "count_all": run_rpt.count_all, "count_fail": run_rpt.count_fail, + "exceptions": [dtl.message for dtl in run_rpt.details if not dtl.is_pass], }, ) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 6390dcd2..4940c596 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -114,6 +114,9 @@ def _prepare_dump_data(self) -> dict: response_task_dump["validate_asserts_count_fail"] = ( item.others["count_fail"] if "count_fail" in item.others else "" ) + response_task_dump["validate_asserts_err_messages"] = [ + f" >>> {msg}" for msg in item.others["exceptions"] + ] r_dump["tasks"].append(response_task_dump) return r_dump @@ -167,6 +170,9 @@ def _prepare_dump_str_for_steps(self) -> str: _computed_str += f"Failed: {one_task['validate_asserts_count_fail']}" if not one_task["is_success"]: _computed_str += f"\n>> With message: {one_task['exception']}" + _computed_str += "\n".join( + one_task["validate_asserts_err_messages"] + ) return _computed_str From 3e8227175ff779b4ed00805fb140cb11e9003cf1 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 16 Oct 2024 12:08:19 +0600 Subject: [PATCH 210/245] feat: spec for error message testing --- .../simple-error-1/coinstats-usd-request.chk | 11 ++++++++++ .../simple-error-1/coinstats-usd-validate.chk | 19 ++++++++++++++++ .../simple-error-1/coinstats-usd-workflow.chk | 22 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-request.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-validate.chk create mode 100644 tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-workflow.chk diff --git a/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-request.chk b/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-request.chk new file mode 100644 index 00000000..1973269f --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-request.chk @@ -0,0 +1,11 @@ +--- +version: default:http:0.7.2 + +request: + url: https://openapiv1.coinstats.app/coins/bitcoin?currency=USD + method: GET + headers: + "X-API-KEY": <% _ENV.COINSTATS_API_KEY %> + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-validate.chk b/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-validate.chk new file mode 100644 index 00000000..a2e5113b --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-validate.chk @@ -0,0 +1,19 @@ +--- +version: default:validation:0.7.2 + +asserts: + - { type: Equal, actual: <% _data.code %>, expected: 200, msg_pass: 'Response was successful with code `{type_actual}({value_actual})`' } + - { type: Map, actual: <% _data.headers %>, msg_pass: 'Header is a list', msg_fail: 'Header is not a list' } + - { type: Str, actual: <% _data.code %>, msg_pass: 'Code `{type_actual}({value_actual})` is a string', msg_fail: 'Code `{type_actual}({value_actual})` is not a string', cast_actual_to: int } + - { type: StrHave, actual: <% _data.info %>, other: "200 OK" } + - { type: Map, actual: <% _data.body %> } + - { type: List, actual: <% _data.body.explorers %> } + - { type: Float, actual: <% _data.body.price %> } + - { type: MapHasKeys, actual: <% _data.body %>, expected: [ "price", "priceBtc", "priceChange1d", "priceChange1h", "priceChange1w" ] } + +expose: + - <% _asserts_response %> + +# --- shell command --- +# pipenv run python -m chk validate -nf tests/resources/storage/spec_docs/validate/btc-usd-validate.chk -D "$(pipenv run python -m chk fetch -nf tests/resources/storage/spec_docs/fetch/bitcoin-usd.chk)" +# --- diff --git a/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-workflow.chk b/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-workflow.chk new file mode 100644 index 00000000..8d2cf381 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/simple-error-1/coinstats-usd-workflow.chk @@ -0,0 +1,22 @@ +version: default:workflow:0.8.0 + +name: simple Btc workflow +id: simple Btc workflow 1 + +tasks: +# - name: Fetch some content from URL +# uses: fetch +# file: ../simple/coinstats-usd-request.chk + + - name: Fetch some content from URL + uses: fetch + file: ./coinstats-usd-request.chk + + - name: Validate the content is okay + uses: validate + file: ./coinstats-usd-validate.chk + arguments: + data: <% _steps.0._response %> + +expose: + - <% _steps %> From 2c3b7319476dbb9f450f14662fbb84c92c64f538 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 16 Oct 2024 12:31:43 +0600 Subject: [PATCH 211/245] fix: file extension allowed list --- chk/infrastructure/file_loader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/infrastructure/file_loader.py b/chk/infrastructure/file_loader.py index 06a93906..f916e4e8 100644 --- a/chk/infrastructure/file_loader.py +++ b/chk/infrastructure/file_loader.py @@ -28,7 +28,7 @@ def is_file_ok(file_name: str, allowed_list: list | None = None) -> bool: """ if not allowed_list: - allowed_list = [".chk", ".yaml", ".yal"] + allowed_list = [".chk", ".yaml", ".yml"] if not Path(file_name).is_file(): raise FileNotFoundError("File not found") From 39ff0c6b169b51eea287ae4872d401cfe36d63c2 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 16 Oct 2024 12:35:10 +0600 Subject: [PATCH 212/245] feat: get lozo academy contact api --- .../workflow_cases/lozoacademy/get-contacts.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/get-contacts.yml diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/get-contacts.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/get-contacts.yml new file mode 100644 index 00000000..75c1556b --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/get-contacts.yml @@ -0,0 +1,9 @@ +--- +version: default:http:0.7.2 + +request: + url: "https://dev-api.lozoacademy.com/api/contact-information" + method: GET + +expose: + - <% _response %> From e0699991681a65b930decad1a3ee1f0db5c119d3 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 16 Oct 2024 20:16:05 +0600 Subject: [PATCH 213/245] feat: Handle key error --- chk/modules/validate/__init__.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index ca4f08bb..c3725ec0 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -36,7 +36,7 @@ AssertionEntityProperty, get_schema_map, ) -from chk.modules.validate.entities import ValidationTask +from chk.modules.validate.entities import RunReport, ValidationTask from chk.modules.validate.services import ValidatePresenter VERSION_SCOPE = ["validation"] @@ -155,7 +155,12 @@ def make_assertion_entry_list(assert_lst: list[dict]) -> list[AssertionEntry]: if not (_assert_type := each_assert.get("type", None)): raise RuntimeError("key: `type` not found in one of the asserts.") - validator = cerberus.Validator(get_schema_map(_assert_type)) + try: + validator = cerberus.Validator(get_schema_map(_assert_type)) + except KeyError as ex: + raise KeyError( + f"`{_assert_type}` key not found. in {repr(each_assert)}" + ) from ex if not validator.validate(each_assert): raise RuntimeError( @@ -221,6 +226,8 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: ValidationDocumentSupport.process_data_template(variable_doc) r_exception: Exception | None = None + run_rpt = RunReport() + try: assert_list = ValidationDocumentSupport.make_assertion_entry_list( validate_doc.asserts From 9f45911647f8baae8b05d532f034ccb0ca17b47a Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 16 Oct 2024 20:18:33 +0600 Subject: [PATCH 214/245] refactor: update success and count check --- chk/modules/validate/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index c3725ec0..058cb3a5 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -264,8 +264,8 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: exposed=exposed_data, exception=r_exception, report={ - "is_success": run_rpt.count_fail == 0, - "count_all": run_rpt.count_all, + "is_success": run_rpt.count_fail == 0 and r_exception is None, + "count_all": len(validate_doc.asserts), "count_fail": run_rpt.count_fail, "exceptions": [dtl.message for dtl in run_rpt.details if not dtl.is_pass], }, From 5fb5705f22ba88c3623f1a580509be6691f2c554 Mon Sep 17 00:00:00 2001 From: HSN Date: Thu, 17 Oct 2024 12:22:05 +0600 Subject: [PATCH 215/245] feat: proper spacing on error message --- chk/modules/workflow/services.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 4940c596..0ea81373 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -169,7 +169,7 @@ def _prepare_dump_str_for_steps(self) -> str: ) _computed_str += f"Failed: {one_task['validate_asserts_count_fail']}" if not one_task["is_success"]: - _computed_str += f"\n>> With message: {one_task['exception']}" + _computed_str += f"\n>> With message: {one_task['exception']}\n" _computed_str += "\n".join( one_task["validate_asserts_err_messages"] ) From 49ad70b47d79747394618d319d7991ff0fce871c Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 18 Oct 2024 11:32:37 +0600 Subject: [PATCH 216/245] refactor: remove deleted module names --- .../third_party/http_fetcher_test.py | 16 +---- tests/modules/fetch/fetch_entities_test.py | 63 +++---------------- .../fetch/fetch_request_helper_test.py | 3 +- 3 files changed, 9 insertions(+), 73 deletions(-) diff --git a/tests/infrastructure/third_party/http_fetcher_test.py b/tests/infrastructure/third_party/http_fetcher_test.py index 0c00011b..b64eaadf 100644 --- a/tests/infrastructure/third_party/http_fetcher_test.py +++ b/tests/infrastructure/third_party/http_fetcher_test.py @@ -5,7 +5,7 @@ import requests from requests.structures import CaseInsensitiveDict -from chk.infrastructure.third_party.http_fetcher import ApiResponse, fetch +from chk.modules.fetch import ApiResponse class TestApiResponse: @@ -33,17 +33,3 @@ class SampleCls: str(api_response.as_fmt_str) == """HTTP/1.0 200 Ok\r\n\r\nAccept: application/json\r\nContent-Type: application/json\r\nApplication: internal\r\n\r\n{"success": "ok"}""" ) - - -class TestFetch: - @staticmethod - def test_fetch_pass(): - resp = fetch( - { - "url": "https://dummyjson.com/products/1", - "method": "GET", - "headers": {"Accept": "application/json", "Application": "pytest"}, - } - ) - - assert isinstance(resp, ApiResponse) diff --git a/tests/modules/fetch/fetch_entities_test.py b/tests/modules/fetch/fetch_entities_test.py index 1a33dbf1..abbd8bb8 100644 --- a/tests/modules/fetch/fetch_entities_test.py +++ b/tests/modules/fetch/fetch_entities_test.py @@ -1,18 +1,16 @@ # type: ignore -import dataclasses import json -import sys -import urllib -from io import BytesIO, TextIOWrapper import pytest -import requests -from requests.structures import CaseInsensitiveDict -from chk.infrastructure.file_loader import FileContext, ExecuteContext +from chk.infrastructure.file_loader import FileContext from chk.infrastructure.symbol_table import Variables -from chk.infrastructure.third_party.http_fetcher import ApiResponse -from chk.modules.fetch import ApiResponseDict, HttpDocument, HttpDocumentSupport +from chk.modules.fetch import ( + ApiResponse, + ApiResponseDict, + HttpDocument, + HttpDocumentSupport, +) class TestApiResponseDict: @@ -158,50 +156,3 @@ def test_process_request_template_pass(): def test_build_schema_pass(): x = HttpDocumentSupport.build_schema() assert len(x) == 4 - - @staticmethod - def test_display_pass(): - @dataclasses.dataclass - class SampleCls: - version: int - - cid = CaseInsensitiveDict() - cid["Accept"] = "application/json" - cid["Content-Type"] = "application/json" - cid["Application"] = "internal" - - resp = requests.Response() - resp._content = b'{"success": "ok"}' - resp.status_code = 200 - resp.url = "https://valid.url" - resp.raw = SampleCls(10) - resp.reason = "Ok" - resp.headers = cid - - api_response = ApiResponse.from_response(resp) - - execution_ctx = ExecuteContext( - options={ - "dump": True, - "format": False, - } - ) - - old_stdout = sys.stdout - sys.stdout = TextIOWrapper(BytesIO(), sys.stdout.encoding) - - HttpDocumentSupport.display({"_response": api_response.data}, execution_ctx) - - # get output - sys.stdout.seek(0) # jump to the start - out = sys.stdout.read() # read output - - # restore stdout - sys.stdout.close() - sys.stdout = old_stdout - - # assert - assert ( - out - == '{"code": 200, "info": "HTTP/1.0 200 Ok", "headers": {"Accept": "application/json", "Content-Type": "application/json", "Application": "internal"}, "body": {"success": "ok"}}\n' - ) diff --git a/tests/modules/fetch/fetch_request_helper_test.py b/tests/modules/fetch/fetch_request_helper_test.py index 45b7a824..67af3420 100644 --- a/tests/modules/fetch/fetch_request_helper_test.py +++ b/tests/modules/fetch/fetch_request_helper_test.py @@ -2,8 +2,7 @@ import pytest -from chk.infrastructure.third_party.http_fetcher import BearerAuthentication -from chk.modules.fetch import HttpRequestArgCompiler +from chk.modules.fetch import BearerAuthentication, HttpRequestArgCompiler class TestHttpRequestArgCompiler: From 5ee8d18f299a8f2ab4e38778a59c56b00e11fb9c Mon Sep 17 00:00:00 2001 From: HSN Date: Fri, 18 Oct 2024 11:45:20 +0600 Subject: [PATCH 217/245] chore: add loguru and package version udpate --- Pipfile | 1 + Pipfile.lock | 394 +++++++++++++++++++++---------------------- requirements-dev.txt | 3 +- requirements.txt | 3 +- 4 files changed, 201 insertions(+), 200 deletions(-) diff --git a/Pipfile b/Pipfile index 27115972..3d925e25 100644 --- a/Pipfile +++ b/Pipfile @@ -12,6 +12,7 @@ defusedxml = "*" xmltodict = "*" python-dotenv = "*" pydantic = "*" +loguru = "*" [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 2113e674..c186192e 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "392659112522bebd6fdaf2d24c384cc546c19f65e7c2b260538daf8cd70f43b3" + "sha256": "d6c63b4f8cfa223f5dbf696af5fcbc0a612208db2934fa6b07a3632829c20f4a" }, "pipfile-spec": 6, "requires": { @@ -177,6 +177,15 @@ "markers": "python_version >= '3.6'", "version": "==3.10" }, + "loguru": { + "hashes": [ + "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb", + "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac" + ], + "index": "pypi", + "markers": "python_version >= '3.5'", + "version": "==0.7.2" + }, "pydantic": { "hashes": [ "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", @@ -377,12 +386,12 @@ }, "xmltodict": { "hashes": [ - "sha256:338c8431e4fc554517651972d62f06958718f6262b04316917008e8fd677a6b0", - "sha256:3ef4a7b71c08f19047fcbea572e1d7f4207ab269da1565b5d40e9823d3894e63" + "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", + "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac" ], "index": "pypi", "markers": "python_version >= '3.6'", - "version": "==0.14.1" + "version": "==0.14.2" } }, "develop": { @@ -693,71 +702,71 @@ "toml" ], "hashes": [ - "sha256:078a87519057dacb5d77e333f740708ec2a8f768655f1db07f8dfd28d7a005f0", - "sha256:087932079c065d7b8ebadd3a0160656c55954144af6439886c8bcf78bbbcde7f", - "sha256:0bbae11c138585c89fb4e991faefb174a80112e1a7557d507aaa07675c62e66b", - "sha256:0ff2ef83d6d0b527b5c9dad73819b24a2f76fdddcfd6c4e7a4d7e73ecb0656b4", - "sha256:12179eb0575b8900912711688e45474f04ab3934aaa7b624dea7b3c511ecc90f", - "sha256:1e5e92e3e84a8718d2de36cd8387459cba9a4508337b8c5f450ce42b87a9e760", - "sha256:2186369a654a15628e9c1c9921409a6b3eda833e4b91f3ca2a7d9f77abb4987c", - "sha256:21c0ea0d4db8a36b275cb6fb2437a3715697a4ba3cb7b918d3525cc75f726304", - "sha256:24500f4b0e03aab60ce575c85365beab64b44d4db837021e08339f61d1fbfe52", - "sha256:2b636a301e53964550e2f3094484fa5a96e699db318d65398cfba438c5c92171", - "sha256:343056c5e0737487a5291f5691f4dfeb25b3e3c8699b4d36b92bb0e586219d14", - "sha256:35a51598f29b2a19e26d0908bd196f771a9b1c5d9a07bf20be0adf28f1ad4f77", - "sha256:39d3b964abfe1519b9d313ab28abf1d02faea26cd14b27f5283849bf59479ff5", - "sha256:3ec528ae69f0a139690fad6deac8a7d33629fa61ccce693fdd07ddf7e9931fba", - "sha256:47ccb6e99a3031ffbbd6e7cc041e70770b4fe405370c66a54dbf26a500ded80b", - "sha256:4eea60c79d36a8f39475b1af887663bc3ae4f31289cd216f514ce18d5938df40", - "sha256:536f77f2bf5797983652d1d55f1a7272a29afcc89e3ae51caa99b2db4e89d658", - "sha256:5ed69befa9a9fc796fe015a7040c9398722d6b97df73a6b608e9e275fa0932b0", - "sha256:62ab4231c01e156ece1b3a187c87173f31cbeee83a5e1f6dff17f288dca93345", - "sha256:667952739daafe9616db19fbedbdb87917eee253ac4f31d70c7587f7ab531b4e", - "sha256:69f251804e052fc46d29d0e7348cdc5fcbfc4861dc4a1ebedef7e78d241ad39e", - "sha256:6c2ba1e0c24d8fae8f2cf0aeb2fc0a2a7f69b6d20bd8d3749fd6b36ecef5edf0", - "sha256:6e85830eed5b5263ffa0c62428e43cb844296f3b4461f09e4bdb0d44ec190bc2", - "sha256:7571e8bbecc6ac066256f9de40365ff833553e2e0c0c004f4482facb131820ef", - "sha256:7781f4f70c9b0b39e1b129b10c7d43a4e0c91f90c60435e6da8288efc2b73438", - "sha256:7926d8d034e06b479797c199747dd774d5e86179f2ce44294423327a88d66ca7", - "sha256:7b80fbb0da3aebde102a37ef0138aeedff45997e22f8962e5f16ae1742852676", - "sha256:7fca4a92c8a7a73dee6946471bce6d1443d94155694b893b79e19ca2a540d86e", - "sha256:84c4315577f7cd511d6250ffd0f695c825efe729f4205c0340f7004eda51191f", - "sha256:8d9c5d13927d77af4fbe453953810db766f75401e764727e73a6ee4f82527b3e", - "sha256:9681516288e3dcf0aa7c26231178cc0be6cac9705cac06709f2353c5b406cfea", - "sha256:97df87e1a20deb75ac7d920c812e9326096aa00a9a4b6d07679b4f1f14b06c90", - "sha256:9bcd51eeca35a80e76dc5794a9dd7cb04b97f0e8af620d54711793bfc1fbba4b", - "sha256:9c6b0c1cafd96213a0327cf680acb39f70e452caf8e9a25aeb05316db9c07f89", - "sha256:a5f81e68aa62bc0cfca04f7b19eaa8f9c826b53fc82ab9e2121976dc74f131f3", - "sha256:a663b180b6669c400b4630a24cc776f23a992d38ce7ae72ede2a397ce6b0f170", - "sha256:a7b2e437fbd8fae5bc7716b9c7ff97aecc95f0b4d56e4ca08b3c8d8adcaadb84", - "sha256:a867d26f06bcd047ef716175b2696b315cb7571ccb951006d61ca80bbc356e9e", - "sha256:aa68a6cdbe1bc6793a9dbfc38302c11599bbe1837392ae9b1d238b9ef3dafcf1", - "sha256:ab31fdd643f162c467cfe6a86e9cb5f1965b632e5e65c072d90854ff486d02cf", - "sha256:ad4ef1c56b47b6b9024b939d503ab487231df1f722065a48f4fc61832130b90e", - "sha256:b92f9ca04b3e719d69b02dc4a69debb795af84cb7afd09c5eb5d54b4a1ae2191", - "sha256:bb21bac7783c1bf6f4bbe68b1e0ff0d20e7e7732cfb7995bc8d96e23aa90fc7b", - "sha256:bf4eeecc9e10f5403ec06138978235af79c9a79af494eb6b1d60a50b49ed2869", - "sha256:bfde025e2793a22efe8c21f807d276bd1d6a4bcc5ba6f19dbdfc4e7a12160909", - "sha256:c37faddc8acd826cfc5e2392531aba734b229741d3daec7f4c777a8f0d4993e5", - "sha256:c71965d1ced48bf97aab79fad56df82c566b4c498ffc09c2094605727c4b7e36", - "sha256:c9192925acc33e146864b8cf037e2ed32a91fdf7644ae875f5d46cd2ef086a5f", - "sha256:c9df1950fb92d49970cce38100d7e7293c84ed3606eaa16ea0b6bc27175bb667", - "sha256:cdfcf2e914e2ba653101157458afd0ad92a16731eeba9a611b5cbb3e7124e74b", - "sha256:d03a060ac1a08e10589c27d509bbdb35b65f2d7f3f8d81cf2fa199877c7bc58a", - "sha256:d20c3d1f31f14d6962a4e2f549c21d31e670b90f777ef4171be540fb7fb70f02", - "sha256:e4ee15b267d2dad3e8759ca441ad450c334f3733304c55210c2a44516e8d5530", - "sha256:e8ea055b3ea046c0f66217af65bc193bbbeca1c8661dc5fd42698db5795d2627", - "sha256:ebabdf1c76593a09ee18c1a06cd3022919861365219ea3aca0247ededf6facd6", - "sha256:ebc94fadbd4a3f4215993326a6a00e47d79889391f5659bf310f55fe5d9f581c", - "sha256:ed5ac02126f74d190fa2cc14a9eb2a5d9837d5863920fa472b02eb1595cdc925", - "sha256:f01e53575f27097d75d42de33b1b289c74b16891ce576d767ad8c48d17aeb5e0", - "sha256:f361296ca7054f0936b02525646b2731b32c8074ba6defab524b79b2b7eeac72", - "sha256:f9035695dadfb397bee9eeaf1dc7fbeda483bf7664a7397a629846800ce6e276", - "sha256:fcad7d5d2bbfeae1026b395036a8aa5abf67e8038ae7e6a25c7d0f88b10a8e6a", - "sha256:ff797320dcbff57caa6b2301c3913784a010e13b1f6cf4ab3f563f3c5e7919db" + "sha256:04f2189716e85ec9192df307f7c255f90e78b6e9863a03223c3b998d24a3c6c6", + "sha256:0c6c0f4d53ef603397fc894a895b960ecd7d44c727df42a8d500031716d4e8d2", + "sha256:0ca37993206402c6c35dc717f90d4c8f53568a8b80f0bf1a1b2b334f4d488fba", + "sha256:12f9515d875859faedb4144fd38694a761cd2a61ef9603bf887b13956d0bbfbb", + "sha256:1990b1f4e2c402beb317840030bb9f1b6a363f86e14e21b4212e618acdfce7f6", + "sha256:2341a78ae3a5ed454d524206a3fcb3cec408c2a0c7c2752cd78b606a2ff15af4", + "sha256:23bb63ae3f4c645d2d82fa22697364b0046fbafb6261b258a58587441c5f7bd0", + "sha256:27bd5f18d8f2879e45724b0ce74f61811639a846ff0e5c0395b7818fae87aec6", + "sha256:2dc7d6b380ca76f5e817ac9eef0c3686e7834c8346bef30b041a4ad286449990", + "sha256:331b200ad03dbaa44151d74daeb7da2cf382db424ab923574f6ecca7d3b30de3", + "sha256:365defc257c687ce3e7d275f39738dcd230777424117a6c76043459db131dd43", + "sha256:37be7b5ea3ff5b7c4a9db16074dc94523b5f10dd1f3b362a827af66a55198175", + "sha256:3c2e6fa98032fec8282f6b27e3f3986c6e05702828380618776ad794e938f53a", + "sha256:40e8b1983080439d4802d80b951f4a93d991ef3261f69e81095a66f86cf3c3c6", + "sha256:43517e1f6b19f610a93d8227e47790722c8bf7422e46b365e0469fc3d3563d97", + "sha256:43b32a06c47539fe275106b376658638b418c7cfdfff0e0259fbf877e845f14b", + "sha256:43d6a66e33b1455b98fc7312b124296dad97a2e191c80320587234a77b1b736e", + "sha256:4c59d6a4a4633fad297f943c03d0d2569867bd5372eb5684befdff8df8522e39", + "sha256:52ac29cc72ee7e25ace7807249638f94c9b6a862c56b1df015d2b2e388e51dbd", + "sha256:54356a76b67cf8a3085818026bb556545ebb8353951923b88292556dfa9f812d", + "sha256:583049c63106c0555e3ae3931edab5669668bbef84c15861421b94e121878d3f", + "sha256:6d99198203f0b9cb0b5d1c0393859555bc26b548223a769baf7e321a627ed4fc", + "sha256:6da42bbcec130b188169107ecb6ee7bd7b4c849d24c9370a0c884cf728d8e976", + "sha256:6e484e479860e00da1f005cd19d1c5d4a813324e5951319ac3f3eefb497cc549", + "sha256:70a6756ce66cd6fe8486c775b30889f0dc4cb20c157aa8c35b45fd7868255c5c", + "sha256:70d24936ca6c15a3bbc91ee9c7fc661132c6f4c9d42a23b31b6686c05073bde5", + "sha256:71967c35828c9ff94e8c7d405469a1fb68257f686bca7c1ed85ed34e7c2529c4", + "sha256:79644f68a6ff23b251cae1c82b01a0b51bc40c8468ca9585c6c4b1aeee570e0b", + "sha256:87cd2e29067ea397a47e352efb13f976eb1b03e18c999270bb50589323294c6e", + "sha256:8d4c6ea0f498c7c79111033a290d060c517853a7bcb2f46516f591dab628ddd3", + "sha256:9134032f5aa445ae591c2ba6991d10136a1f533b1d2fa8f8c21126468c5025c6", + "sha256:921fbe13492caf6a69528f09d5d7c7d518c8d0e7b9f6701b7719715f29a71e6e", + "sha256:99670790f21a96665a35849990b1df447993880bb6463a0a1d757897f30da929", + "sha256:9975442f2e7a5cfcf87299c26b5a45266ab0696348420049b9b94b2ad3d40234", + "sha256:99ded130555c021d99729fabd4ddb91a6f4cc0707df4b1daf912c7850c373b13", + "sha256:a3328c3e64ea4ab12b85999eb0779e6139295bbf5485f69d42cf794309e3d007", + "sha256:a4fb91d5f72b7e06a14ff4ae5be625a81cd7e5f869d7a54578fc271d08d58ae3", + "sha256:aa23ce39661a3e90eea5f99ec59b763b7d655c2cada10729ed920a38bfc2b167", + "sha256:aac7501ae73d4a02f4b7ac8fcb9dc55342ca98ffb9ed9f2dfb8a25d53eda0e4d", + "sha256:ab84a8b698ad5a6c365b08061920138e7a7dd9a04b6feb09ba1bfae68346ce6d", + "sha256:b4adeb878a374126f1e5cf03b87f66279f479e01af0e9a654cf6d1509af46c40", + "sha256:b9853509b4bf57ba7b1f99b9d866c422c9c5248799ab20e652bbb8a184a38181", + "sha256:bb7d5fe92bd0dc235f63ebe9f8c6e0884f7360f88f3411bfed1350c872ef2054", + "sha256:bca4c8abc50d38f9773c1ec80d43f3768df2e8576807d1656016b9d3eeaa96fd", + "sha256:c222958f59b0ae091f4535851cbb24eb57fc0baea07ba675af718fb5302dddb2", + "sha256:c30e42ea11badb147f0d2e387115b15e2bd8205a5ad70d6ad79cf37f6ac08c91", + "sha256:c3a79f56dee9136084cf84a6c7c4341427ef36e05ae6415bf7d787c96ff5eaa3", + "sha256:c51ef82302386d686feea1c44dbeef744585da16fcf97deea2a8d6c1556f519b", + "sha256:c77326300b839c44c3e5a8fe26c15b7e87b2f32dfd2fc9fee1d13604347c9b38", + "sha256:d33a785ea8354c480515e781554d3be582a86297e41ccbea627a5c632647f2cd", + "sha256:d546cfa78844b8b9c1c0533de1851569a13f87449897bbc95d698d1d3cb2a30f", + "sha256:da29ceabe3025a1e5a5aeeb331c5b1af686daab4ff0fb4f83df18b1180ea83e2", + "sha256:df8c05a0f574d480947cba11b947dc41b1265d721c3777881da2fb8d3a1ddfba", + "sha256:e266af4da2c1a4cbc6135a570c64577fd3e6eb204607eaff99d8e9b710003c6f", + "sha256:e279f3db904e3b55f520f11f983cc8dc8a4ce9b65f11692d4718ed021ec58b83", + "sha256:ea52bd218d4ba260399a8ae4bb6b577d82adfc4518b93566ce1fddd4a49d1dce", + "sha256:ebec65f5068e7df2d49466aab9128510c4867e532e07cb6960075b27658dca38", + "sha256:ec1e3b40b82236d100d259854840555469fad4db64f669ab817279eb95cd535c", + "sha256:ee77c7bef0724165e795b6b7bf9c4c22a9b8468a6bdb9c6b4281293c6b22a90f", + "sha256:f263b18692f8ed52c8de7f40a0751e79015983dbd77b16906e5b310a39d3ca21", + "sha256:f7b26757b22faf88fcf232f5f0e62f6e0fd9e22a8a5d0d5016888cdfe1f6c1c4", + "sha256:f7ddb920106bbbbcaf2a274d56f46956bf56ecbde210d88061824a95bdd94e92" ], "markers": "python_version >= '3.9'", - "version": "==7.6.2" + "version": "==7.6.3" }, "coveralls": { "hashes": [ @@ -1022,37 +1031,42 @@ }, "mypy": { "hashes": [ - "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36", - "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce", - "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6", - "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b", - "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca", - "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24", - "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383", - "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7", - "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86", - "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d", - "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4", - "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8", - "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987", - "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385", - "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79", - "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef", - "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6", - "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70", - "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca", - "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70", - "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12", - "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104", - "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a", - "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318", - "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1", - "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b", - "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d" + "sha256:060a07b10e999ac9e7fa249ce2bdcfa9183ca2b70756f3bce9df7a92f78a3c0a", + "sha256:06de0498798527451ffb60f68db0d368bd2bae2bbfb5237eae616d4330cc87aa", + "sha256:0eff042d7257f39ba4ca06641d110ca7d2ad98c9c1fb52200fe6b1c865d360ff", + "sha256:1ebf9e796521f99d61864ed89d1fb2926d9ab6a5fab421e457cd9c7e4dd65aa9", + "sha256:20c7c5ce0c1be0b0aea628374e6cf68b420bcc772d85c3c974f675b88e3e6e57", + "sha256:233e11b3f73ee1f10efada2e6da0f555b2f3a5316e9d8a4a1224acc10e7181d3", + "sha256:2c40658d4fa1ab27cb53d9e2f1066345596af2f8fe4827defc398a09c7c9519b", + "sha256:2f106db5ccb60681b622ac768455743ee0e6a857724d648c9629a9bd2ac3f721", + "sha256:4397081e620dc4dc18e2f124d5e1d2c288194c2c08df6bdb1db31c38cd1fe1ed", + "sha256:48d3e37dd7d9403e38fa86c46191de72705166d40b8c9f91a3de77350daa0893", + "sha256:4ae8959c21abcf9d73aa6c74a313c45c0b5a188752bf37dace564e29f06e9c1b", + "sha256:4b86de37a0da945f6d48cf110d5206c5ed514b1ca2614d7ad652d4bf099c7de7", + "sha256:52b9e1492e47e1790360a43755fa04101a7ac72287b1a53ce817f35899ba0521", + "sha256:5bc81701d52cc8767005fdd2a08c19980de9ec61a25dbd2a937dfb1338a826f9", + "sha256:5feee5c74eb9749e91b77f60b30771563327329e29218d95bedbe1257e2fe4b0", + "sha256:65a22d87e757ccd95cbbf6f7e181e6caa87128255eb2b6be901bb71b26d8a99d", + "sha256:684a9c508a283f324804fea3f0effeb7858eb03f85c4402a967d187f64562469", + "sha256:6b5df6c8a8224f6b86746bda716bbe4dbe0ce89fd67b1fa4661e11bfe38e8ec8", + "sha256:6cabe4cda2fa5eca7ac94854c6c37039324baaa428ecbf4de4567279e9810f9e", + "sha256:77278e8c6ffe2abfba6db4125de55f1024de9a323be13d20e4f73b8ed3402bd1", + "sha256:8462655b6694feb1c99e433ea905d46c478041a8b8f0c33f1dab00ae881b2164", + "sha256:923ea66d282d8af9e0f9c21ffc6653643abb95b658c3a8a32dca1eff09c06475", + "sha256:9b9ce1ad8daeb049c0b55fdb753d7414260bad8952645367e70ac91aec90e07e", + "sha256:a64ee25f05fc2d3d8474985c58042b6759100a475f8237da1f4faf7fcd7e6309", + "sha256:bfe012b50e1491d439172c43ccb50db66d23fab714d500b57ed52526a1020bb7", + "sha256:c72861b7139a4f738344faa0e150834467521a3fba42dc98264e5aa9507dd601", + "sha256:dcfb754dea911039ac12434d1950d69a2f05acd4d56f7935ed402be09fad145e", + "sha256:dee78a8b9746c30c1e617ccb1307b351ded57f0de0d287ca6276378d770006c0", + "sha256:e478601cc3e3fa9d6734d255a59c7a2e5c2934da4378f3dd1e3411ea8a248642", + "sha256:eafc1b7319b40ddabdc3db8d7d48e76cfc65bbeeafaa525a4e0fa6b76175467f", + "sha256:faca7ab947c9f457a08dcb8d9a8664fd438080e002b0fa3e41b0535335edcf7f", + "sha256:fd313226af375d52e1e36c383f39bf3836e1f192801116b31b090dfcd3ec5266" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.11.2" + "version": "==1.12.0" }, "mypy-extensions": { "hashes": [ @@ -1285,12 +1299,12 @@ }, "types-requests": { "hashes": [ - "sha256:2850e178db3919d9bf809e434eef65ba49d0e7e33ac92d588f4a5e295fffd405", - "sha256:59c2f673eb55f32a99b2894faf6020e1a9f4a402ad0f192bfee0b64469054310" + "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95", + "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==2.32.0.20240914" + "version": "==2.32.0.20241016" }, "typing-extensions": { "hashes": [ @@ -1310,107 +1324,91 @@ }, "yarl": { "hashes": [ - "sha256:007531e85ca8d9fc35819709a52a6f0d133deecc3e2247f0e2b8350de36a3356", - "sha256:027bbf2e616ed072ee5f9344240c8d908c3c5a8c30cea31e8fa9899b42a6a51b", - "sha256:02e1c9e36528de270c22c06aac6a5a1de8cc870fafefb5e90e5b35cb8985d0b2", - "sha256:03344b592468257494a253b35f7b67c243397286dd0ae6be03af35eb34333139", - "sha256:04cb3e3a0f0fbf2a9614c88fef811c0f10449415a1ff532f437aec9bcc6b9da5", - "sha256:069de3a78672043e84b37078dbc250c5fff1b16ee1b584de5d684d402cc51703", - "sha256:0c4a3d28a0888bdc8529824e73afa8e5362c79ef2a68bec53fd040cb2ad84e39", - "sha256:0ea3ca97a5aa00943604f93919bc0741769b900dd3217d02f9d29274371fd758", - "sha256:1181f8912e0d1bb31cae5ab630d350ad2e79aab4196faea3669c3599e05af44b", - "sha256:1a6e972ee42b2c868985db62dd592629594c47279579372a64d7666b6d14683d", - "sha256:1bc9f6a7b0ede16fd2ed6bbdf89e78377b1f00f0e48806c5356c4d3174ae5906", - "sha256:2206775a9a2831c044ecc0863cb63e4e8cf5f8d4fce0fc3c900e5a51e9d57e87", - "sha256:28a865a4a06b90ea6ca985a530b7d95c795b4c63062f759fe88de90ae5f66198", - "sha256:2969fba35b5cd0418f343c363a3ae6c5dc847e3c2861a4ac857d004882a805d4", - "sha256:2aa01bb3f91a64aa1d42db9b704674f6ed7c19d2a296f1e3bd25ade9e97dbeb9", - "sha256:2c8c4ea31d28f47d7af24f44e5a2090ec4245ac3f3e34ce55ab1188d92e98a71", - "sha256:2ce9052e9f4196e44221e3d3d51cdcfa3b1afea05afbd896cefdd233e9606d08", - "sha256:3044230cd78f236f6b9c6e06cb7d618dd1cffebfb97600fb98e0a562f0f456ef", - "sha256:31397f4ea5700dfcb1b3ce6fdb24407ea874494fd546926f13a7449999180b67", - "sha256:35921994c4d23d3679d3999ca0fdd05b27e33363bc80e1c24681c9ba108eb874", - "sha256:3b7177ba5c965a436bb97d4db0841302075eb9fa77a6a806aa44975c5ff619fb", - "sha256:3c5782135b3a762e265b11dbb13df878d1a331ef498866036f743786adf70371", - "sha256:3d7c2224b6e8f40b39a61643212e5d974172394aae0244a9840f62aed4452ee4", - "sha256:41037ae2992cc3b0fa088ffe609e3c2f066284f9329035f26e853230e8f7ae13", - "sha256:41b2be15daf51cd8d50f54d2277f17ac6e6fed198f105956a48d8240f10b154b", - "sha256:4510ae890f55a685d7d8b55cf80f6a35799fbe682b8546a0aed67565f86793ce", - "sha256:45d986f872258bcd4f417b474e1c35e8bba14d69fb124432c417bd256adde38b", - "sha256:46091072123e7295b0f4a88c6c24f0386b3e45e54efddd141069d5e16e372ce6", - "sha256:46448214e3b7099ab8cfba576b71b7742ce13a1cec7824eebe7a71fc8903b304", - "sha256:49db3c1a5e11241c1de2133efaa87a28ae9ac20583ad1ec16737761d9d8324a0", - "sha256:5268b43abf47053dc0bbff72d78f69192dbe453fee9517036fc0a0cc84f341d7", - "sha256:54eef7907bb868e20ddcf4078e9a106e2c56a84ba31611038d28b9934ccb2a2c", - "sha256:566669cfcf4f89f9e8dafc06a81472122cd2b8c00cca24a2c662cb5c7fbe9edf", - "sha256:59aaa919f9898352cd3bf32d3a1bfc7d2aa399f83dd91b1915eaa684e27553b7", - "sha256:60c8b36f7ed73aeaa2948f27f9a8a905c23bf62e291b7b9fc53348b4789b180c", - "sha256:65a41d40b34391aeb3b973410ed0ed86b3023e5371dce6e7ff1c57af5794391d", - "sha256:699ce4edbc471bf39ffdb2060c643f1750a7ccb4b7a34a45dccb389c0ec4996b", - "sha256:6a976eeaea67b1d53dce91174968f077ae7f3a0a05ede80a099bc584ea748bdd", - "sha256:6c3968e4ec6b44af29562824c7973c12c22041b2dc080613a7c41c7c09901579", - "sha256:6ce6768a192aa3af22a9b58d1b07226e9313b3e6e179bdb8de215d99a6baef86", - "sha256:6e3959cfba2bb48a0d8b83f370452b400710dd0900f9fdad0ce9e913e6d65b8f", - "sha256:6e75b66019709dce95a4a7b47fe3b072f1d7eb8bd0c323e5e62332c84a05aa50", - "sha256:6f3595518f4e8b97c0a2d01030e27937d22f2506a1503282b8965ae1dcd0dec6", - "sha256:70b34ba1be6d0726efdc0da9c477e5363132d2ac97d0951926b6046a7c24c70e", - "sha256:72d312f74665006911c4de95e1633c6e9e4b1f003ef4f76d4b36e01cfa7ed820", - "sha256:759f18151f785888344ec1f28d5a2bd61ca2ccb80d04b65ab9548d524b1b9acb", - "sha256:7d94d8a3927516c10be9958caa72a4148d9c99fc4de3442fa00873870d58d430", - "sha256:7e3b2e7518d6789b577793912b0037f36fdcff28a73a1f5c1affc34759852b4f", - "sha256:839f1056ceca5b2019174f8c15ba131c3eebece241b228d46a469760953e8049", - "sha256:860fc2726e32b4ac3b0a44535853a9b1ea14975a8c4207609f2883dcfcbd5ecc", - "sha256:87593714a38a4a51efc967b0477c72f55a08ed6b801bfcf68656e68f233047c7", - "sha256:889993b2bc2f04308d4ebe12424fecccc22062aa06c61771d3e9302527a0bdec", - "sha256:8dda10d4525517e32dc33c5fe98c5b877b9807ce0ecd8acef93c09f1406b4fe4", - "sha256:8ecf1511b7db6a09681765c70952503418468deff5d8c34100f44c8318755836", - "sha256:974fa4829a09fa0d7a6375d40f39ad9265904d7c1754e2b9dc302ceedc54388d", - "sha256:9d60326a87fcd9c1b1ccc18344b036ecdaa5e92c52c163560759df50fc0d39f6", - "sha256:a3e237e19fca6b4aa18e6bc7702d27c4e9460f1d0f3a792cdf4aefdc10d52411", - "sha256:a6dd351c2f38c8168b6860338f4c30e9c160a0fb474dcbedf2224c63a86a7512", - "sha256:a86cb224d1f31ed4c6ba79188b571d517fdc730c6edcf6baf6e71805d88f183f", - "sha256:ab5140fd448ce090c73b651bedbbf26de42317466f70210648480e2d63fedf04", - "sha256:ac28421ab71ec2d50eb7dff76a64ef81de92fb9738a81de2500b031b6f5f6038", - "sha256:af1741bedd1b3a1100635a30c2fa5850bc95e5647be3d221e28684b66d16f655", - "sha256:b169b0edb76e72b46373fcc1b4b9820a3680639f92ad506c2b7de9450546bea6", - "sha256:b28dc68741c2eda94ac2ce9fb16c73aa9b90c0c0cdf99cf8a7c86dec94dc5de2", - "sha256:b5f27f515f69dea928cc16577844762226893098426ba54223fc62c70af5863a", - "sha256:b79a4df7029446ae8062f74c093a2f6c305f65b3ec89fa8ce3e064c0eeb36f3f", - "sha256:bd735297b9e9afba34bf05a3580e80e4145031d319723777e58f169d7ef553bb", - "sha256:bd756524c387478f0788937dfbe132d01663e783e1424f7d3a72df552521c995", - "sha256:bd9c7873f26065a0ff3189c5002fb5c8e41d3e49741e0e903a11f12be27c841b", - "sha256:c1b1dc71d6b4d6ab785e1f7a916960eb094be6300bc92e515d7a04709b2fad6b", - "sha256:c261d807048b9e17b0a3c413d4926c34b5563c6b94f95c17daff6053901d0ab0", - "sha256:c551571a5941093b86c0c05fdf136fafbe4308b83cd4fc77d92b21c6726f7c13", - "sha256:c7b85ad874cf6eaad545f2bd838b3782db30cecb9364ade0214b9a7e9462d051", - "sha256:cbe2765f54e5940c705c8c1c125f12c84f7bd486f7925bcb7abc6740b97fdd5c", - "sha256:cc5fbe7629e454d3c4a621c8416e9a1956d7f2523296142d46edc17d7d54901e", - "sha256:cd5857354c53d023fd97d06fb01b6c0f176cfc73ae03460a1812455095e214d6", - "sha256:cda340ed6afd475d4e58d8f34d3f08a4dda956cde86930f51827972ed4e98f3d", - "sha256:d2376327a557661424599278fbf3a1bcb96b90c8316743ba3d9ad831e794e11a", - "sha256:d25da5fc7a2993e1d9818e4dfdc67c95c771678e0d3499a1d67e42bfa75890ba", - "sha256:d44ec44b4771544b815cff0efa05f6d58e9f87e9b05aa15d13739111ae53df1e", - "sha256:d6b646d8eae5fb38b9401daac98e40335228306305d491f52914b161f6cf319c", - "sha256:d7251c8185c49c17270d756da2c97de5c076790d64450a56c4814b3a40f3807f", - "sha256:d8e5a1ee05b5d742accc42512a1d6a8c59f6906db1dd298d98e1a6ab98470373", - "sha256:dab310e5fa1ec359bf105d03f2e1227ade8952b78961ccd1b17f9f9acb3f49ae", - "sha256:dce3ed94298b3e6a5dad8b86633ba70564411f459ce5d0e4bf57e973ef3fc158", - "sha256:dfeba6be776409230aebf12bd01539097459886c925ae20fac2c3b736ba0284a", - "sha256:e328110c15b4d2dbb00861feaa7e0ce5aebfc355406e0f6d9e46adcb5abe9a55", - "sha256:e5b1e400252498d3de94b19197039422539c62f081c21f3b785e184cdd041a85", - "sha256:e5c0b30bdc6668d3a1c9ecebae4dc22fd90b02c7ea68f7907db315fd81853f06", - "sha256:e9672cdc71bb44d45240b8447793efb83a76a046000dafb6e2ac827db9dfbdda", - "sha256:e9dec42480ee079581faafb05fa55731ec80693310a6775e8adbf83edc52fd24", - "sha256:ee09963524b5327e2bfe3dfecd19d0403d2b1afbd11a49a00d4d379c1551406e", - "sha256:ef6b02ebc4b05c9d5575ae6120af173421f1bc653452967c8ae47f6e820d2f75", - "sha256:f1cd16833ff1d6250350794c3df1be2ce0960fa64740699dfa688769aa1c6a89", - "sha256:f313ce3a41c8c280f90ec0770dc2bd464a8b24f5c785daa70f71654b1334295b", - "sha256:f9a3a53622f0e905a7f3557b770d48e737b8a38141c81eecbcc947fac164d1f9", - "sha256:fa0c603f007bf3f54bcd7f011f46134995a129a8f0c8e70f0ad8330228ff02d7", - "sha256:fa72a0e5037c2c91d1b945ff20698c01a7897b10ab93c0979b8543e2ad0b1d76" + "sha256:07019a9de859c5a29916defd1e8c7557de6491a10bf50c49ff5284e6aedf5313", + "sha256:0c96eaa30030e1cfafe533f3da8983812281235b7c50ef2a6c78ceca7aea1a0b", + "sha256:0d0f16c87c62b7a94b389ddf6a8c9d081265d788875c39f3a80108c4856eea7b", + "sha256:0e07e4b17b648c880e8e42bf1ac0a730bde114961646ae1c2ec4433f0c11ca94", + "sha256:1005921b30f4f39bf893946df6173567ff650307babb5ec04bbf64342a1f62c1", + "sha256:115346433fad2084ee3a1a925ccc0659990aa42e208ca54c278830a150a3caf3", + "sha256:11b207061f28b4b6d980239b22ab0ecfadc47846b5a3b8e79f27fcc019d02cf9", + "sha256:1ceb677fb583971351627eac70eec6763fbc889761828da7a276681b5e39742d", + "sha256:1e7468f31de61a82817f918743e5229fce774f73fad58487cdf88eef4f06d864", + "sha256:20acf84bd1ce530065f8e957e4a5878fda4bc5f18cb02659828210e1519de54e", + "sha256:21fabe58042f3e567b4edc75b2cf44cea02f228e41ac09d73de126bf685fe883", + "sha256:3198da7d7c34e29fc8c823e0c3ce6c7274aac35760de557c2017489c7d98fc5a", + "sha256:35a6b69cc44bda002705d6138346bf0a0234cbb7c26c3bf192513eb946aee6f9", + "sha256:3896bf15284dd23acab1f2e7fceb350d8da6f6f2436b922f7ec6b3de685d34ca", + "sha256:3a79c0a8bbb046add85663af85e9993b691bf20c2a109518bd35e0ce77edfe42", + "sha256:4076bfd8f1621449b19b9826848ed51bf0f2d1d38e82647c312c0730d8778903", + "sha256:40c18f96696549e73b92dc12619f07019cbf5faefc1612608f967c144816e493", + "sha256:46491b3e058de7b484e1c9fb20aa8441f06d6c9a18395d711c1c2a9ad6707d6a", + "sha256:48334a6c8afee93097eb17c0a094234dac2d88da076c8cf372e09e2a5dcc4b66", + "sha256:4851618679ca70b863ba2e7109be5f09f8fd7715ec505bd42e5a947dcfde3a45", + "sha256:49190eb2ece70313742b0ea51520340288a059674da1f39eefb589d598d9453e", + "sha256:49f886e8dcf591275c6e20915b516fd81647857566b0c0158c52df1e468849c9", + "sha256:4a706db0c3b7e4578ff34ed2b1d2507b08fd491346ffc64468786fdf1151d938", + "sha256:4ac85e760543129a1912a82438fc8075223e35eaa2d457d61cd83c27d00d17be", + "sha256:4f66a0eda48844508736e47ed476d8fdd7cdbf16a4053b5d439509a25f708504", + "sha256:4feab2dcb725eb5b4835207ecf3d370ff7ce930b253cba5e681646cb80d64c2c", + "sha256:527c68f48a91d953691291d3bce0209293aa5ad13ff05286ddb506791c331818", + "sha256:551205388d1da18a9975302c9a274ba24788f53bb9bb86187496ebf9e938916e", + "sha256:590e2d733a82ecf004c5c531cbef0d6be328e93adec960024eb213f10cb9503e", + "sha256:59db8e6888d5302b8dbca0c1026ddabe99d81d67cdc101941519e13ffc9050fe", + "sha256:60165b8bc260f453321004b193770a66cc1b1a5c57c07d4b8dcc96839e7ad578", + "sha256:65a0168691373e08d869d48b62c8bed0af0cdaef19c76e11ad73b43901bbdb5a", + "sha256:65e0467f90f2acf3bc83bbfeedece8f1fd84df8add1a54e9600ed7b7b5debdb0", + "sha256:691a3b498fdebef63308e8967bb598cfd326c56d628da82b799dd181bace4503", + "sha256:69f628d2da1489b27959f4d63fdb326781fe484944dce94abbf919e416c54abe", + "sha256:6e100c6c7d9e9d469009fd55cc4d7ad168d67d40758865c50da713f7ada491e5", + "sha256:6f8136bde8dfa4477c6a85c79a366581b4a505b51a52b669318fb631d3f4f638", + "sha256:76259901cf1ac3db65e7e6dff04775b626d0715f9b51d92b447351144c756a82", + "sha256:7694f109867ee428c21b85ae19fd31d164c691eb45cc95c561cfdeba237a12e3", + "sha256:77390496f2f32437a721c854897f889abefae0f3009daf90a2f703508d96c920", + "sha256:787532f00543a21b8f4ec3050b4e01b8fe437797903c0156a0b03dfca5e1ba6c", + "sha256:7d5226c70af3ad9569ccc4ccc04ab65be79eeb22c87d7ae789c89e62ef76bbd6", + "sha256:83e7154aa0d17f5c93d27ac01088fd9ab6673e7bab1acbd07cd7a865b980c045", + "sha256:84937d00e2ea03616c40977de20189fa13a9213e5744a3c6afa0e7dd9141d69c", + "sha256:8721f8bedaa722c3c483cc06a1399cbfdb280eadf443aa5d324b0203cef2a75f", + "sha256:8b569f4f511b59518ba6719feb5b8bf0a5d4115e6ac903c89e10a8a9ac656017", + "sha256:8de5328d91859b461899497980d4cc8269e84e2d18640f6ac643886fda9000bf", + "sha256:9060589d0acad1fca048861fa9ee3e8ed060f67894fa885969648ab6e9e99a54", + "sha256:98d8dc1e8133f86d916125deca9780d791b22645f0d62bafe1452d1cd5eac631", + "sha256:9fe17744d60fc404ac61f824118e1e15ce3c2e92eced9b8e22f3c7847acafbf2", + "sha256:a0c5e271058d148d730219ca4f33c5d841c6bd46e05b0da60fea7b516906ccd3", + "sha256:ab79cc13307065a0b3ef087f09f0509996fc605d35d6642bb28e5d85b2648e1e", + "sha256:ab9ccf26cb3fa32747ba2a637a189d2d42386a2fc4afc10dbc7f85922dd23b0f", + "sha256:adb6b5d07d17c32f9d34c9dd4a693637a72323cfcb1f8a52d57033ab2dd21e99", + "sha256:b2bdb038b3f5c284e3919218c580dedc95f592c417a358361450b9519b22f7a8", + "sha256:c23a442973dba3646811c284fce3dddd7fe5c2bd674ac73a122198e8218d6115", + "sha256:c30115cecaf25fdcb67cc71c669d08425207f62d7a2f6d5416057c1460529216", + "sha256:c33ea7c55a73be343f02361795caf52a187357ea07708fb1cae6661ee1d689c8", + "sha256:ccbeaf5b18b173b9d78e332e017b30ba8bedcf03cdce1d13490b82a3f421bc98", + "sha256:ccd6774aa7bebdf9ca608bb0839318757a71b8e0d2cf7b10c002bc8790bd343e", + "sha256:d886de2ea81f513ba2d6820451d33b767a97c37867ba688d42e164b2dbca1362", + "sha256:db64a20e78969fc66665d2e5fc96cb4f4dc80f2137d8fed4b5a650ad569bb60f", + "sha256:db818e33599f7b2e4c6507f2b2c24f45ff539a1b6e4e09163bb6f3cfb4616ca7", + "sha256:dce1c56beef74d9c799a6ed94001693232a1402138292353a8ce302b64f457d9", + "sha256:de38b0b5b86e57efb129d179854e78b65cb8e294a8c75560877869c43aa2415a", + "sha256:de479e30abd2dfd49fdad3bd6953f2d930a45380be5143c0c9f7a1215cffc8cc", + "sha256:df09c80f4bc2bc2efde309af383c3fe8fd8c51fe0519edb350b9c9e0af43ffa4", + "sha256:df6b254e55c8ac2362afaa651e3e53453aa19a095570792346245773b434176e", + "sha256:e58c5d07b1f78dd4cb180c5b3b82465cd281aaeee8aafea0e5d72a4b97922cb1", + "sha256:e5cc288111c450c0a54a74475591b206d3b1cb47dc71bb6200f6be8b1337184c", + "sha256:eee724176b5bc50ee64905f559345448119b860a30b9489bd7a073f61baf925f", + "sha256:f16d1940c0cbc342f1d29d6212a006d172be616d2942c5c41966e8a3ce4c3be1", + "sha256:f25906e4a72d9833e81717c39a39dee7297ff5cb44957d06d177a2ab8ef2ef7f", + "sha256:f3294ce265011547630a59c20085fcb6af8cc5fa1fa44a203251f7d86cd5d913", + "sha256:f337486742c700b102d640830aab3faf2848bed966b479a39e6783edd4ab1c6c", + "sha256:f51c9d173e5fa4b12d06ddca09a41cabbdeb660471dbe55432423eec095709ab", + "sha256:f68025d6ba1816428b7de615c80f61cb03d5b7061158d4ced7696657a64aa59c", + "sha256:f74f6ffdc633aefecbc80282242a5395058db9d1247fa7dd2f070ef84dc82583", + "sha256:f864b412557e69a6b953d62c01a0ed0ee342666298aa7f2a29af526bfa80f6e9", + "sha256:f923e94e93a37fd990e8336e0b9bedea533e7cbed14e0c572bf9357ef2a70681", + "sha256:faa3dd7f4620ab5e5da7a0789d0aac78a9ad0376f102409d442ec5a4179e200a", + "sha256:fd2bb86f40962d53a91def15a2f7684c62e081a7b96ec74ed0259c34b15973b9" ], - "markers": "python_version >= '3.8'", - "version": "==1.15.1" + "markers": "python_version >= '3.9'", + "version": "==1.15.4" } } } diff --git a/requirements-dev.txt b/requirements-dev.txt index 441420c6..988e9936 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -51,8 +51,9 @@ yarl==1.9.4; python_version >= '3.7' annotated-types==0.6.0; python_version >= '3.8' cerberus==1.3.5 defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +loguru==0.7.2; python_version >= '3.5' pydantic==2.9.2; python_version >= '3.8' pydantic-core==2.23.4; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' pyyaml==6.0.2; python_version >= '3.8' -xmltodict==0.14.1; python_version >= '3.6' +xmltodict==0.14.2; python_version >= '3.6' diff --git a/requirements.txt b/requirements.txt index ac68868d..34035419 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,7 @@ charset-normalizer==3.4.0; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' idna==3.10; python_version >= '3.6' +loguru==0.7.2; python_version >= '3.5' pydantic==2.9.2; python_version >= '3.8' pydantic-core==2.23.4; python_version >= '3.8' python-dotenv==1.0.1; python_version >= '3.8' @@ -12,4 +13,4 @@ pyyaml==6.0.2; python_version >= '3.8' requests==2.32.3; python_version >= '3.8' typing-extensions==4.12.2; python_version < '3.13' urllib3==2.2.3; python_version >= '3.8' -xmltodict==0.14.1; python_version >= '3.6' +xmltodict==0.14.2; python_version >= '3.6' From 53072ab980d625adf49e9bef143993e47f1d1883 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 20 Oct 2024 13:22:18 +0600 Subject: [PATCH 218/245] feat: create logging directory --- chk/infrastructure/logging.py | 30 ++++++++++++++++++++++++++++ tests/infrastructure/logging_test.py | 15 ++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 chk/infrastructure/logging.py create mode 100644 tests/infrastructure/logging_test.py diff --git a/chk/infrastructure/logging.py b/chk/infrastructure/logging.py new file mode 100644 index 00000000..cbee9929 --- /dev/null +++ b/chk/infrastructure/logging.py @@ -0,0 +1,30 @@ +""" +Logging Module +""" + +import os +from pathlib import Path + + +class LoggingManager: + """LoggingManager""" + + cache_dir = '.chkware_cache/' + + + @classmethod + def get_log_file(cls) -> str: + """get_log_file""" + + # get cache dir name from env + try: + cache_dir = os.environ["CHK_CACHE_PATH"] + except KeyError: + cache_dir = "" + + # populate cache dir + cache_path = os.getcwd() / Path(cache_dir) + if not cache_path.exists(): + cache_path.mkdir() + + return "" \ No newline at end of file diff --git a/tests/infrastructure/logging_test.py b/tests/infrastructure/logging_test.py new file mode 100644 index 00000000..8b1a5942 --- /dev/null +++ b/tests/infrastructure/logging_test.py @@ -0,0 +1,15 @@ +""" +Logging Module Test +""" + +from chk.infrastructure.logging import LoggingManager + + +class TestGetLogFile: + """TestGetLogFile""" + + @staticmethod + def test_get_log_file(): + """test_get_log_file""" + + LoggingManager.get_log_file() From 08fc44f01ebe417ec215afbb7a55c00e6e5e75e8 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 20 Oct 2024 13:45:23 +0600 Subject: [PATCH 219/245] feat: generate session id --- chk/infrastructure/logging.py | 27 ++++++++++++++++++++++++--- tests/infrastructure/logging_test.py | 23 ++++++++++++++++++++--- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/chk/infrastructure/logging.py b/chk/infrastructure/logging.py index cbee9929..049e2ffc 100644 --- a/chk/infrastructure/logging.py +++ b/chk/infrastructure/logging.py @@ -3,18 +3,21 @@ """ import os +import time from pathlib import Path +from uuid import uuid4 class LoggingManager: """LoggingManager""" cache_dir = '.chkware_cache/' + loggin_dir = 'logs/' @classmethod - def get_log_file(cls) -> str: - """get_log_file""" + def create_cache_dir(cls) -> Path: + """create_cache_dir""" # get cache dir name from env try: @@ -27,4 +30,22 @@ def get_log_file(cls) -> str: if not cache_path.exists(): cache_path.mkdir() - return "" \ No newline at end of file + return cache_path + + + @classmethod + def create_log_dir(cls, parent: Path) -> Path: + """create_cache_dir""" + + if not parent.exists(): + raise NotADirectoryError("Parent directory do not exists.") + log_dir = parent / cls.loggin_dir + log_dir.mkdir() + + return log_dir + + +def create_session_id() -> str: + """create_session_id""" + + return "%s-%s" % (int(time.time()), uuid4().hex) \ No newline at end of file diff --git a/tests/infrastructure/logging_test.py b/tests/infrastructure/logging_test.py index 8b1a5942..f526b893 100644 --- a/tests/infrastructure/logging_test.py +++ b/tests/infrastructure/logging_test.py @@ -2,14 +2,31 @@ Logging Module Test """ -from chk.infrastructure.logging import LoggingManager +from chk.infrastructure.logging import LoggingManager, create_session_id class TestGetLogFile: """TestGetLogFile""" @staticmethod - def test_get_log_file(): + def create_cache_dir(): """test_get_log_file""" - LoggingManager.get_log_file() + p = LoggingManager.create_cache_dir() + + assert p.exists() and p.is_dir() + + @staticmethod + def create_create_log_dir(): + """test_get_log_file""" + + p = LoggingManager.create_cache_dir() + q = LoggingManager.create_log_dir(p) + + assert q.exists() and q.is_dir() + + +def test_create_session_id(): + new_session = create_session_id() + + assert isinstance(new_session, str) From e11cb8cb10c504602de8d72b8ab67ad7fa9496c4 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 20 Oct 2024 13:57:28 +0600 Subject: [PATCH 220/245] refactor: do not create log dir if exists --- chk/infrastructure/logging.py | 9 ++++++--- tests/infrastructure/logging_test.py | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/chk/infrastructure/logging.py b/chk/infrastructure/logging.py index 049e2ffc..5268c7c7 100644 --- a/chk/infrastructure/logging.py +++ b/chk/infrastructure/logging.py @@ -13,6 +13,7 @@ class LoggingManager: cache_dir = '.chkware_cache/' loggin_dir = 'logs/' + loggin_ext = '.log' @classmethod @@ -23,10 +24,10 @@ def create_cache_dir(cls) -> Path: try: cache_dir = os.environ["CHK_CACHE_PATH"] except KeyError: - cache_dir = "" + cache_dir = cls.cache_dir # populate cache dir - cache_path = os.getcwd() / Path(cache_dir) + cache_path = Path.cwd() / cache_dir if not cache_path.exists(): cache_path.mkdir() @@ -40,7 +41,9 @@ def create_log_dir(cls, parent: Path) -> Path: if not parent.exists(): raise NotADirectoryError("Parent directory do not exists.") log_dir = parent / cls.loggin_dir - log_dir.mkdir() + + if not log_dir.exists(): + log_dir.mkdir() return log_dir diff --git a/tests/infrastructure/logging_test.py b/tests/infrastructure/logging_test.py index f526b893..1d2a78be 100644 --- a/tests/infrastructure/logging_test.py +++ b/tests/infrastructure/logging_test.py @@ -9,7 +9,7 @@ class TestGetLogFile: """TestGetLogFile""" @staticmethod - def create_cache_dir(): + def test_create_cache_dir(): """test_get_log_file""" p = LoggingManager.create_cache_dir() @@ -17,7 +17,7 @@ def create_cache_dir(): assert p.exists() and p.is_dir() @staticmethod - def create_create_log_dir(): + def test_create_log_dir(): """test_get_log_file""" p = LoggingManager.create_cache_dir() From f8150fcbbd20b9a730ddc648663f83fe7a8f4d4f Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 20 Oct 2024 15:15:30 +0600 Subject: [PATCH 221/245] feat: create and return log file --- chk/infrastructure/logging.py | 16 +++++++++++++++- tests/infrastructure/logging_test.py | 9 +++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/chk/infrastructure/logging.py b/chk/infrastructure/logging.py index 5268c7c7..3e6381f6 100644 --- a/chk/infrastructure/logging.py +++ b/chk/infrastructure/logging.py @@ -48,7 +48,21 @@ def create_log_dir(cls, parent: Path) -> Path: return log_dir + @classmethod + def create_new_log_file(cls) -> Path: + """create new log file""" + + cache_dir =cls.create_cache_dir() + log_dir = cls.create_log_dir(cache_dir) + + log_file = log_dir / create_session_id() + log_file = log_file.with_suffix(cls.loggin_ext) + + log_file.touch() + return log_file + + def create_session_id() -> str: """create_session_id""" - return "%s-%s" % (int(time.time()), uuid4().hex) \ No newline at end of file + return f"{int(time.time())}-{uuid4().hex}" diff --git a/tests/infrastructure/logging_test.py b/tests/infrastructure/logging_test.py index 1d2a78be..a818e486 100644 --- a/tests/infrastructure/logging_test.py +++ b/tests/infrastructure/logging_test.py @@ -25,6 +25,15 @@ def test_create_log_dir(): assert q.exists() and q.is_dir() + @staticmethod + def test_create_new_log_file(): + """test_get_log_file""" + + q = LoggingManager.create_new_log_file() + + assert q.exists() and q.is_file() + q.unlink() + def test_create_session_id(): new_session = create_session_id() From aad648ce7d89c24afc6e9ab33bcc0612f4c014df Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 20 Oct 2024 15:25:11 +0600 Subject: [PATCH 222/245] refactor: common error message constant --- chk/console/main.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/chk/console/main.py b/chk/console/main.py index 16b6a41f..bce36f0e 100644 --- a/chk/console/main.py +++ b/chk/console/main.py @@ -46,6 +46,7 @@ def after_hook(resp: dict) -> None: curr_ctx.parent.obj |= resp else: raise RuntimeError("Default context not found") +VAR_ERROR_MSG = "-V, --variables accept values as JSON object" # root command @@ -94,7 +95,7 @@ def fetch(file: str, no_format: bool, variables: str) -> None: { "variables": combine_initial_variables( variables, - except_msg="-V, --variables accept values as JSON object", + except_msg=VAR_ERROR_MSG, ) }, ) @@ -128,7 +129,7 @@ def validate(file: str, no_format: bool, variables: str, data: str) -> None: { "variables": combine_initial_variables( variables, - except_msg="-V, --variables accept values as JSON object", + except_msg=VAR_ERROR_MSG, ), "data": load_variables_as_dict( data, @@ -165,7 +166,7 @@ def workflow(file: str, no_format: bool, variables: str) -> None: { "variables": combine_initial_variables( variables, - except_msg="-V, --variables accept values as JSON object", + except_msg=VAR_ERROR_MSG, ), }, ) From d2273e1f52574f29b92f15997df15cf19c1ed790 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 20 Oct 2024 15:25:42 +0600 Subject: [PATCH 223/245] refactor: move services to other modules --- chk/console/main.py | 46 ++++++----------------------------------- chk/console/services.py | 46 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 40 deletions(-) create mode 100644 chk/console/services.py diff --git a/chk/console/main.py b/chk/console/main.py index bce36f0e..5110ad09 100644 --- a/chk/console/main.py +++ b/chk/console/main.py @@ -1,51 +1,17 @@ """Commands""" -import typing - import click import chk.modules.fetch as fetch_executor import chk.modules.validate as validate_executor import chk.modules.workflow as workflow_executor -from chk.infrastructure.file_loader import ExecuteContext, FileContext, FileLoader -from chk.infrastructure.typing_extras import JsonDecodingError - - -def load_variables_as_dict(json_str: str, **kwargs: typing.Any) -> dict: - """Reads a json string and converts and returns the dict while doing validation""" - - if json_str: - try: - return FileLoader.load_json_from_str(json_str) - except JsonDecodingError as err: - message = kwargs.get("except_msg") or "JSON loading error." - raise click.UsageError(str(message)) from err - - return {} - - -def combine_initial_variables(external_vars: str, **kwargs: typing.Any) -> dict: - """Reads a json string and converts to dict, and combines with env and dotenv - variables""" - - return load_variables_as_dict(external_vars, **kwargs) - - -def after_hook(resp: dict) -> None: - """Saves custom data from commands to global context bus - - Args: - resp: object - """ - - if curr_ctx := click.get_current_context(): - if curr_ctx.parent: - if not curr_ctx.parent.obj: - curr_ctx.parent.obj = {} +from chk.console.services import ( + after_hook, + combine_initial_variables, + load_variables_as_dict, +) +from chk.infrastructure.file_loader import ExecuteContext, FileContext - curr_ctx.parent.obj |= resp - else: - raise RuntimeError("Default context not found") VAR_ERROR_MSG = "-V, --variables accept values as JSON object" diff --git a/chk/console/services.py b/chk/console/services.py new file mode 100644 index 00000000..065d6844 --- /dev/null +++ b/chk/console/services.py @@ -0,0 +1,46 @@ +""" +Console service module +""" +from typing import Any + +import click + +from chk.infrastructure.file_loader import FileLoader +from chk.infrastructure.typing_extras import JsonDecodingError + + +def load_variables_as_dict(json_str: str, **kwargs: Any) -> dict: + """Reads a json string and converts and returns the dict while doing validation""" + + if json_str: + try: + return FileLoader.load_json_from_str(json_str) + except JsonDecodingError as err: + message = kwargs.get("except_msg") or "JSON loading error." + raise click.UsageError(str(message)) from err + + return {} + + +def combine_initial_variables(external_vars: str, **kwargs: Any) -> dict: + """Reads a json string and converts to dict, and combines with env and dotenv + variables""" + + return load_variables_as_dict(external_vars, **kwargs) + + +def after_hook(resp: dict) -> None: + """Saves custom data from commands to global context bus + + Args: + resp: object + """ + + if curr_ctx := click.get_current_context(): + if curr_ctx.parent: + if not curr_ctx.parent.obj: + curr_ctx.parent.obj = {} + + curr_ctx.parent.obj |= resp + else: + raise RuntimeError("Default context not found") From 22dc69753fe981a86eb8c97259c63f47ce77f053 Mon Sep 17 00:00:00 2001 From: HSN Date: Sun, 20 Oct 2024 17:51:34 +0600 Subject: [PATCH 224/245] refactor: remove unused implementation of after hook --- chk/console/services.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/chk/console/services.py b/chk/console/services.py index 065d6844..116c6f99 100644 --- a/chk/console/services.py +++ b/chk/console/services.py @@ -1,6 +1,7 @@ """ Console service module """ + from typing import Any import click @@ -29,18 +30,7 @@ def combine_initial_variables(external_vars: str, **kwargs: Any) -> dict: return load_variables_as_dict(external_vars, **kwargs) -def after_hook(resp: dict) -> None: - """Saves custom data from commands to global context bus - - Args: - resp: object - """ - - if curr_ctx := click.get_current_context(): - if curr_ctx.parent: - if not curr_ctx.parent.obj: - curr_ctx.parent.obj = {} +def after_hook(*args, **kwargs): + """Run any function after implementation. Default pass""" - curr_ctx.parent.obj |= resp - else: - raise RuntimeError("Default context not found") + pass From 959bb3e155d176bbc57295b1ca00d7cfd22c1ded Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 09:37:53 +0600 Subject: [PATCH 225/245] feat: setup debug option globally, pass in context --- chk/console/main.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/chk/console/main.py b/chk/console/main.py index 5110ad09..c08ab573 100644 --- a/chk/console/main.py +++ b/chk/console/main.py @@ -17,8 +17,9 @@ # root command @click.group() +@click.option("--debug/--no-debug", default=False) @click.pass_context -def chk(ctx: click.Context) -> None: +def chk(ctx: click.Context, debug: bool) -> None: """\b █████████ █████ █████ █████ ████ ███░░░░░███░░███ ░░███ ░░███ ███░ @@ -34,6 +35,7 @@ def chk(ctx: click.Context) -> None: Version 0.5.0, supported version strings: 0.7.2 """ ctx.ensure_object(dict) + ctx.obj["debug"] = debug # run fetch sub-command @@ -43,7 +45,8 @@ def chk(ctx: click.Context) -> None: "-nf", "--no-format", is_flag=True, help="No formatting to show the output" ) @click.option("-V", "--variables", type=str, help="Pass variable(s) as JSON object") -def fetch(file: str, no_format: bool, variables: str) -> None: +@click.pass_context +def fetch(cctx: click.Context, file: str, no_format: bool, variables: str) -> None: """\b Command to run Http config files. FILE: Any .chk file, that has any of the following versions: @@ -57,6 +60,7 @@ def fetch(file: str, no_format: bool, variables: str) -> None: { "dump": True, "format": not no_format, + "debug": cctx.obj.get("debug", False), }, { "variables": combine_initial_variables( @@ -77,7 +81,10 @@ def fetch(file: str, no_format: bool, variables: str) -> None: ) @click.option("-V", "--variables", type=str, help="Pass variable(s) as JSON object") @click.option("-D", "--data", type=str, help="Pass data as JSON") -def validate(file: str, no_format: bool, variables: str, data: str) -> None: +@click.pass_context +def validate( + cctx: click.Context, file: str, no_format: bool, variables: str, data: str +) -> None: """\b Command to run Validation specification files. FILE: Any .chk file, that has any of the following versions: @@ -91,6 +98,7 @@ def validate(file: str, no_format: bool, variables: str, data: str) -> None: { "dump": True, "format": not no_format, + "debug": cctx.obj.get("debug", False), }, { "variables": combine_initial_variables( @@ -114,7 +122,8 @@ def validate(file: str, no_format: bool, variables: str, data: str) -> None: "-nf", "--no-format", is_flag=True, help="No formatting to show the output" ) @click.option("-V", "--variables", type=str, help="Pass variable(s) as JSON object") -def workflow(file: str, no_format: bool, variables: str) -> None: +@click.pass_context +def workflow(cctx: click.Context, file: str, no_format: bool, variables: str) -> None: """\b Command to run Workflow specification files. FILE: Any .chk file, that has any of the following versions: @@ -128,6 +137,7 @@ def workflow(file: str, no_format: bool, variables: str) -> None: { "dump": True, "format": not no_format, + "debug": cctx.obj.get("debug", False), }, { "variables": combine_initial_variables( From 60b4c04d96eb3c1a333048315dd8226bd6120c19 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 13:21:25 +0600 Subject: [PATCH 226/245] feat: setup file logging with loguru --- chk/console/main.py | 4 +++- chk/console/services.py | 11 ++++++++++- chk/infrastructure/logging.py | 19 +++++++++++++++++++ chk/modules/fetch.py | 3 +++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/chk/console/main.py b/chk/console/main.py index c08ab573..39c0efdb 100644 --- a/chk/console/main.py +++ b/chk/console/main.py @@ -8,7 +8,7 @@ from chk.console.services import ( after_hook, combine_initial_variables, - load_variables_as_dict, + load_variables_as_dict, setup_logger, ) from chk.infrastructure.file_loader import ExecuteContext, FileContext @@ -37,6 +37,8 @@ def chk(ctx: click.Context, debug: bool) -> None: ctx.ensure_object(dict) ctx.obj["debug"] = debug + setup_logger(debug) + # run fetch sub-command @chk.command() diff --git a/chk/console/services.py b/chk/console/services.py index 116c6f99..3fbc6efc 100644 --- a/chk/console/services.py +++ b/chk/console/services.py @@ -7,6 +7,7 @@ import click from chk.infrastructure.file_loader import FileLoader +from chk.infrastructure.logging import LoggingManager from chk.infrastructure.typing_extras import JsonDecodingError @@ -33,4 +34,12 @@ def combine_initial_variables(external_vars: str, **kwargs: Any) -> dict: def after_hook(*args, **kwargs): """Run any function after implementation. Default pass""" - pass + +def setup_logger(should_log: bool) -> None: + """setup_logger""" + + LoggingManager.remove_loguru() + + if should_log: + log_file = LoggingManager.create_new_log_file() + LoggingManager.setup_loguru(log_file) diff --git a/chk/infrastructure/logging.py b/chk/infrastructure/logging.py index 3e6381f6..13b3c161 100644 --- a/chk/infrastructure/logging.py +++ b/chk/infrastructure/logging.py @@ -7,6 +7,12 @@ from pathlib import Path from uuid import uuid4 +from loguru import logger + +debug = logger.debug +error = logger.error +critical = logger.critical + class LoggingManager: """LoggingManager""" @@ -61,6 +67,19 @@ def create_new_log_file(cls) -> Path: log_file.touch() return log_file + @classmethod + def setup_loguru(cls, log_path: Path | None) -> None: + """setup_loguru""" + + logger.add(str(log_path)) + + @classmethod + def remove_loguru(cls) -> None: + """setup_loguru""" + + logger.remove() + + def create_session_id() -> str: """create_session_id""" diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 9955e441..2c4236b8 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -22,6 +22,7 @@ ) from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get +from chk.infrastructure.logging import debug from chk.infrastructure.symbol_table import ( EXPOSE_SCHEMA as EXP_SCHEMA, ExecResponse, @@ -631,6 +632,8 @@ def execute( cb: Callable """ + debug("Fetch module") + exr = call(file_ctx=ctx, exec_ctx=exec_ctx) cb({ctx.filepath_hash: exr.variables_exec.data}) From 99c51be820781846236d66326cecdd2b3424a135 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 13:21:43 +0600 Subject: [PATCH 227/245] refactor: add type to after_hook --- chk/console/services.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/console/services.py b/chk/console/services.py index 3fbc6efc..a6d069ab 100644 --- a/chk/console/services.py +++ b/chk/console/services.py @@ -31,7 +31,7 @@ def combine_initial_variables(external_vars: str, **kwargs: Any) -> dict: return load_variables_as_dict(external_vars, **kwargs) -def after_hook(*args, **kwargs): +def after_hook(*args: list, **kwargs: dict) -> Any: """Run any function after implementation. Default pass""" From c02a383a0ba47f18317a962317354bfeaaa21ae3 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 18:53:18 +0600 Subject: [PATCH 228/245] feat: add a success and catch decorator --- chk/infrastructure/logging.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/chk/infrastructure/logging.py b/chk/infrastructure/logging.py index 13b3c161..c70e073e 100644 --- a/chk/infrastructure/logging.py +++ b/chk/infrastructure/logging.py @@ -12,6 +12,9 @@ debug = logger.debug error = logger.error critical = logger.critical +success = logger.success + +with_catch_log = logger.catch class LoggingManager: @@ -71,7 +74,7 @@ def create_new_log_file(cls) -> Path: def setup_loguru(cls, log_path: Path | None) -> None: """setup_loguru""" - logger.add(str(log_path)) + logger.add(str(log_path), backtrace=True, enqueue=True, catch=True) @classmethod def remove_loguru(cls) -> None: From a59863f47a174afe62a3883dd510a150795571e8 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 18:55:30 +0600 Subject: [PATCH 229/245] feat: logging for fetch module --- chk/modules/fetch.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 2c4236b8..f7551110 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -22,7 +22,7 @@ ) from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get -from chk.infrastructure.logging import debug +from chk.infrastructure.logging import debug, error, with_catch_log from chk.infrastructure.symbol_table import ( EXPOSE_SCHEMA as EXP_SCHEMA, ExecResponse, @@ -569,12 +569,14 @@ def dump_fmt(self) -> str: return "\n======\n".join(displayables) +@with_catch_log def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a http document""" r_exception: Exception | None = None http_doc = HttpDocument.from_file_context(file_ctx) + debug(http_doc.model_dump_json()) DocumentVersionMaker.verify_if_allowed( DocumentVersionMaker.from_dict(http_doc.model_dump()), VERSION_SCOPE @@ -586,7 +588,10 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: variable_doc = Variables() VariableTableManager.handle(variable_doc, http_doc, exec_ctx) + debug(variable_doc.data) + HttpDocumentSupport.process_request_template(http_doc, variable_doc) + debug(http_doc.model_dump_json()) response = ApiResponse() @@ -594,13 +599,16 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: response = HttpDocumentSupport.execute_request(http_doc) except Exception as ex: r_exception = ex + error(ex) output_data = Variables({"_response": response.data}) + debug(output_data.data) exposed_data = ExposeManager.get_exposed_replaced_data( http_doc, {**variable_doc.data, **output_data.data}, ) + debug(exposed_data) # TODO: instead if sending specific report items, and making presentable in other # module, we should prepare and long and short form of presentable that can be @@ -621,6 +629,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: ) +@with_catch_log def execute( ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... ) -> None: @@ -640,6 +649,7 @@ def execute( PresentationService.display(exr, exec_ctx, FetchPresenter) +@with_catch_log def task_fetch(**kwargs: dict) -> ExecResponse: """Task impl""" From 1e93e491f8bd257605e74c21a5bb2deb4f7a2000 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 19:01:52 +0600 Subject: [PATCH 230/245] feat: debug file context and exec context --- chk/modules/fetch.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index f7551110..ead4ed4a 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -574,6 +574,8 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a http document""" r_exception: Exception | None = None + debug(file_ctx) + debug(exec_ctx) http_doc = HttpDocument.from_file_context(file_ctx) debug(http_doc.model_dump_json()) From 6f1f60fd42267d53abc83dd1f4f92c65f4ceef0e Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 19:34:24 +0600 Subject: [PATCH 231/245] feat: debug for validate module --- chk/modules/validate/__init__.py | 21 ++++++++++++++++++--- chk/modules/validate/services.py | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 058cb3a5..fa4481a1 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -16,6 +16,7 @@ ) from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get +from chk.infrastructure.logging import debug, error, with_catch_log from chk.infrastructure.symbol_table import ( EXPOSE_SCHEMA as EXP_SCHEMA, ExecResponse, @@ -205,10 +206,16 @@ def make_assertion_entry_list(assert_lst: list[dict]) -> list[AssertionEntry]: return new_assertion_lst +@with_catch_log def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a validation document""" + r_exception: Exception | None = None + debug(file_ctx) + debug(exec_ctx) + validate_doc = ValidationDocument.from_file_context(file_ctx) + debug(validate_doc.model_dump_json()) DocumentVersionMaker.verify_if_allowed( DocumentVersionMaker.from_dict(validate_doc.model_dump()), VERSION_SCOPE @@ -220,12 +227,15 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: variable_doc = Variables() VariableTableManager.handle(variable_doc, validate_doc, exec_ctx) + debug(variable_doc.data) # handle passed data in asserts - ValidationDocumentSupport.set_data_template(validate_doc, variable_doc, exec_ctx) - ValidationDocumentSupport.process_data_template(variable_doc) + with with_catch_log(): + ValidationDocumentSupport.set_data_template(validate_doc, variable_doc, exec_ctx) + ValidationDocumentSupport.process_data_template(variable_doc) + + debug(variable_doc.data) - r_exception: Exception | None = None run_rpt = RunReport() try: @@ -239,6 +249,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: raise SystemError("Validation failed") except Exception as ex: r_exception = ex + error(ex) output_data = Variables( { @@ -246,6 +257,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: "_data": variable_doc["_data"], } ) + debug(output_data.data) exposed_data = ExposeManager.get_exposed_replaced_data( validate_doc, @@ -254,6 +266,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: **{"_asserts_response": run_rpt}, }, ) + debug(exposed_data) return ExecResponse( file_ctx=file_ctx, @@ -272,6 +285,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: ) +@with_catch_log def execute( ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... ) -> None: @@ -289,6 +303,7 @@ def execute( PresentationService.display(exr, exec_ctx, ValidatePresenter) +@with_catch_log def task_validation(**kwargs: dict) -> ExecResponse: """Task impl""" diff --git a/chk/modules/validate/services.py b/chk/modules/validate/services.py index 8a81994a..292a1773 100644 --- a/chk/modules/validate/services.py +++ b/chk/modules/validate/services.py @@ -25,6 +25,7 @@ def dump_error_json(self) -> str: def dump_error_fmt(self) -> str: """dump fmt error str""" + # TODO also add tests those failed. return ( f"Validate error\n------\n{repr(self.data.exception)}" if self.data.exception From e047b677230dbf3bbadabe9e7721a3ba7fbbb99a Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 20:47:55 +0600 Subject: [PATCH 232/245] refactor: general speacing --- chk/modules/validate/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index fa4481a1..707affe4 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -231,7 +231,9 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: # handle passed data in asserts with with_catch_log(): - ValidationDocumentSupport.set_data_template(validate_doc, variable_doc, exec_ctx) + ValidationDocumentSupport.set_data_template( + validate_doc, variable_doc, exec_ctx + ) ValidationDocumentSupport.process_data_template(variable_doc) debug(variable_doc.data) From cb7ab98ef43b0dca1d4a11a31bf697c97ca03c97 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 21:20:20 +0600 Subject: [PATCH 233/245] refactor: later init of exception var --- chk/modules/fetch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index ead4ed4a..622bfb10 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -573,7 +573,6 @@ def dump_fmt(self) -> str: def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a http document""" - r_exception: Exception | None = None debug(file_ctx) debug(exec_ctx) @@ -595,6 +594,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: HttpDocumentSupport.process_request_template(http_doc, variable_doc) debug(http_doc.model_dump_json()) + r_exception: Exception | None = None response = ApiResponse() try: From 1b4b3b4fb0f2a804777b9f4572b092c7b850ec81 Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 21:21:59 +0600 Subject: [PATCH 234/245] feat: better debug on internal assert data prep --- chk/modules/validate/__init__.py | 24 +++++++++++----------- chk/modules/validate/assertion_services.py | 3 +++ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/chk/modules/validate/__init__.py b/chk/modules/validate/__init__.py index 707affe4..b7232c56 100644 --- a/chk/modules/validate/__init__.py +++ b/chk/modules/validate/__init__.py @@ -190,18 +190,18 @@ def make_assertion_entry_list(assert_lst: list[dict]) -> list[AssertionEntry]: _extra_fld = { key: val for key, val in each_assert.items() if key in only } - - new_assertion_lst.append( - AssertionEntry( - assert_type=_assert_type, - actual=_actual, - expected=_expected, - cast_actual_to=_cast_actual_to, - extra_fields=_extra_fld, - msg_pass=_msg_pass, - msg_fail=_msg_fail, - ) + ae = AssertionEntry( + assert_type=_assert_type, + actual=_actual, + expected=_expected, + cast_actual_to=_cast_actual_to, + extra_fields=_extra_fld, + msg_pass=_msg_pass, + msg_fail=_msg_fail, ) + debug(ae) + + new_assertion_lst.append(ae) return new_assertion_lst @@ -210,7 +210,6 @@ def make_assertion_entry_list(assert_lst: list[dict]) -> list[AssertionEntry]: def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a validation document""" - r_exception: Exception | None = None debug(file_ctx) debug(exec_ctx) @@ -238,6 +237,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: debug(variable_doc.data) + r_exception: Exception | None = None run_rpt = RunReport() try: diff --git a/chk/modules/validate/assertion_services.py b/chk/modules/validate/assertion_services.py index bf2476f5..638a28a8 100644 --- a/chk/modules/validate/assertion_services.py +++ b/chk/modules/validate/assertion_services.py @@ -7,6 +7,7 @@ import chk.modules.validate.assertion_function as asrt_f from chk.infrastructure.helper import Cast +from chk.infrastructure.logging import debug from chk.infrastructure.templating import StrTemplate from chk.modules.validate.assertion_message import get_assert_msg_for from chk.modules.validate.assertion_validation import AssertionEntityType @@ -182,11 +183,13 @@ def test_run(assert_list: list[AssertionEntry], variables: dict) -> RunReport: assert_item = AssertionEntryListRunner._replace_assertion_values( assert_item, variables ) + debug(assert_item) resp: RunDetail = AssertionEntryListRunner._prepare_test_run_result( assert_item, AssertionEntryListRunner._call_assertion_method(assert_item), ) + debug(resp) run_report.add_run_detail(resp) From 4cc03a2931abf2e57bc0464bbf847cb32a25563a Mon Sep 17 00:00:00 2001 From: HSN Date: Mon, 21 Oct 2024 21:26:43 +0600 Subject: [PATCH 235/245] feat: debug for workflow module --- chk/modules/workflow/__init__.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/chk/modules/workflow/__init__.py b/chk/modules/workflow/__init__.py index 000d9710..8095ecd3 100644 --- a/chk/modules/workflow/__init__.py +++ b/chk/modules/workflow/__init__.py @@ -16,6 +16,7 @@ ) from chk.infrastructure.file_loader import ExecuteContext, FileContext from chk.infrastructure.helper import data_get, slugify +from chk.infrastructure.logging import debug, error, with_catch_log from chk.infrastructure.symbol_table import ( ExecResponse, ExposeManager, @@ -122,14 +123,20 @@ def process_task_template( is_success = True for task in document.tasks: + debug(task) + if not is_success: + debug(f"is_success: {is_success}") break if not isinstance(task, dict): + error("`tasks.*.item` should be map.") raise RuntimeError("`tasks.*.item` should be map.") # replace values in tasks task_d_: dict = replace_value(task, variables.data) + debug(task_d_) + task_o_ = ChkwareTaskSupport.make_task( task_d_, **dict(base_file_path=base_fpath) ) @@ -140,6 +147,7 @@ def process_task_template( exctx_args["arguments"] = task_o_.arguments.model_dump_json() execution_ctx = ExecuteContext({"dump": True, "format": True}, exctx_args) + debug(execution_ctx) task_fn = None @@ -151,7 +159,11 @@ def process_task_template( if task_fn: te_param = TaskExecParam(task=task_o_, exec_ctx=execution_ctx) + debug(execution_ctx) + task_resp: ExecResponse = cls.execute_task(task_fn, te_param, variables) + debug(execution_ctx) + is_success = task_resp.report.pop("is_success") exec_report.append( @@ -178,29 +190,40 @@ def execute_task( return _task_res +@with_catch_log def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: """Call a workflow document""" + debug(file_ctx) + debug(exec_ctx) + wflow_doc = WorkflowDocument.from_file_context(file_ctx) + debug(wflow_doc.model_dump_json()) variable_doc = Variables() VariableTableManager.handle(variable_doc, wflow_doc, exec_ctx) + debug(variable_doc.data) service = WorkflowDocumentSupport() # @TODO make sure the document do not call self making it repeating service.set_step_template(variable_doc) r_exception: Exception | None = None + try: - exec_report = service.process_task_template(wflow_doc, variable_doc) + with with_catch_log(): + exec_report = service.process_task_template(wflow_doc, variable_doc) except Exception as ex: r_exception = ex + error(ex) output_data = Variables({"_steps": variable_doc[WorkflowConfigNode.NODE.value]}) + debug(output_data.data) exposed_data: dict = ExposeManager.get_exposed_replaced_data( wflow_doc, variable_doc.data ) + debug(exposed_data) # TODO also send failed_details (fail code, message, stacktrace, etc) return ExecResponse( @@ -217,6 +240,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: ) +@with_catch_log def execute( ctx: FileContext, exec_ctx: ExecuteContext, cb: abc.Callable = lambda *args: ... ) -> None: From cdb4b3dcf7ce46d7aa5e615a3b29d260b9da9f2d Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 22 Oct 2024 12:57:11 +0600 Subject: [PATCH 236/245] refactor: debug by default on --- chk/console/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/console/main.py b/chk/console/main.py index 39c0efdb..de778531 100644 --- a/chk/console/main.py +++ b/chk/console/main.py @@ -17,7 +17,7 @@ # root command @click.group() -@click.option("--debug/--no-debug", default=False) +@click.option("--debug/--no-debug", default=True) @click.pass_context def chk(ctx: click.Context, debug: bool) -> None: """\b From c87ffcd4bdfe9093379af11b5233930c620d4e7f Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 22 Oct 2024 15:45:43 +0600 Subject: [PATCH 237/245] feat: as_dict for ApiResponse --- chk/modules/fetch.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index 622bfb10..b962640b 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -86,6 +86,24 @@ def from_response(response: requests.Response) -> ApiResponse: body=response.text, ) + def as_dict(self) -> dict: + """as_dict""" + + _data = self.data + + _as_dict = { + "code": _data["code"], + "info": _data["info"], + "headers": _data["headers"], + } + + try: + _as_dict["body"] = json.loads(_data["body"]) + except ValueError: + _as_dict["body"] = _data["body"] + + return _as_dict + class BearerAuthentication(requests.auth.AuthBase): """Authentication: Bearer ... support""" @@ -603,7 +621,7 @@ def call(file_ctx: FileContext, exec_ctx: ExecuteContext) -> ExecResponse: r_exception = ex error(ex) - output_data = Variables({"_response": response.data}) + output_data = Variables({"_response": response.as_dict()}) debug(output_data.data) exposed_data = ExposeManager.get_exposed_replaced_data( @@ -643,8 +661,6 @@ def execute( cb: Callable """ - debug("Fetch module") - exr = call(file_ctx=ctx, exec_ctx=exec_ctx) cb({ctx.filepath_hash: exr.variables_exec.data}) From b81016dc331b8af41bf3fd5c3c7d0489adb7f184 Mon Sep 17 00:00:00 2001 From: HSN Date: Tue, 22 Oct 2024 16:43:09 +0600 Subject: [PATCH 238/245] fix: issue with counting fail validation --- chk/modules/validate/entities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/modules/validate/entities.py b/chk/modules/validate/entities.py index 991c1d9a..bb9bcd08 100644 --- a/chk/modules/validate/entities.py +++ b/chk/modules/validate/entities.py @@ -116,7 +116,7 @@ def add_run_detail(self, run_dtl: RunDetail) -> None: self.details.append(run_dtl) - if run_dtl.is_pass: + if not run_dtl.is_pass: self.count_fail += 1 def as_fmt_str(self, only_incl_errors: bool = False) -> str: From b97ce4b2b54cea45f3abc685f3503583ac95c5ab Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 23 Oct 2024 17:17:55 +0600 Subject: [PATCH 239/245] fix: issues with dict concat --- chk/modules/fetch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/modules/fetch.py b/chk/modules/fetch.py index b962640b..f73214ce 100644 --- a/chk/modules/fetch.py +++ b/chk/modules/fetch.py @@ -63,7 +63,7 @@ def as_fmt_str(self) -> str: presentation += "\r\n\r\n" # set body - presentation += self["body"] + presentation += self["body"] if isinstance(self["body"], str) else json.dumps(self["body"]) return presentation From 1808216a964ef7a002a0d8c017b226983e5339a5 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 23 Oct 2024 18:19:08 +0600 Subject: [PATCH 240/245] feat: disable logging on tests --- tests/__init__.py | 2 +- tests/conftest.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 tests/conftest.py diff --git a/tests/__init__.py b/tests/__init__.py index 2bea4955..8b069528 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -4,7 +4,7 @@ """ import pytest -from chk.infrastructure.file_loader import FileLoader, FileContext, ExecuteContext +from chk.infrastructure.file_loader import ExecuteContext, FileContext, FileLoader RES_DIR = "./tests/resources/storage/sample_config/" SPEC_DIR = "./tests/resources/storage/spec_docs/" diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..f4727e2f --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,9 @@ +""" ConfTest """ + +import pytest +from loguru import logger + + +@pytest.fixture(scope="session", autouse=True) +def disable_loguru(): + logger.disable("") From a9b92ac62182ea3f62c9a24375da4389aeeca090 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 23 Oct 2024 18:19:43 +0600 Subject: [PATCH 241/245] fix: dict conversion issue for str --- chk/modules/workflow/services.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chk/modules/workflow/services.py b/chk/modules/workflow/services.py index 0ea81373..cfb3fc10 100644 --- a/chk/modules/workflow/services.py +++ b/chk/modules/workflow/services.py @@ -136,7 +136,7 @@ def dump_fmt(self) -> str: if isinstance(value, dict): for _k, _v in value.items(): if isinstance(_v, Iterable): - value[_k] = dict(_v) + value[_k] = dict(_v) if isinstance(_v, dict) else _v to_append = json.dumps(value) From a41baf3d15a7cea4d20ce6e8ae62e96cd3bfa321 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 23 Oct 2024 18:20:44 +0600 Subject: [PATCH 242/245] refactor: general refactor --- tests/modules/workflow/wf_module_test.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/modules/workflow/wf_module_test.py b/tests/modules/workflow/wf_module_test.py index fb70f43e..f36d6e12 100644 --- a/tests/modules/workflow/wf_module_test.py +++ b/tests/modules/workflow/wf_module_test.py @@ -2,6 +2,7 @@ """ Workflow module test """ + from chk.infrastructure.symbol_table import ExecResponse from chk.modules.workflow import call, execute from tests import SPEC_DIR, get_exec_ctx, load_chk_file, load_file_ctx_for_file @@ -9,7 +10,9 @@ class TestWorkflowExecute: @staticmethod - def test_execute_pass_vars(load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys): + def test_execute_pass_vars( + load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys + ): """test_execute""" filepath = f"{SPEC_DIR}workflow_cases/get-req-vars/coinstats-usd-workflow.chk" @@ -22,7 +25,9 @@ def test_execute_pass_vars(load_chk_file, load_file_ctx_for_file, get_exec_ctx, assert "======" in captured.out @staticmethod - def test_execute_pass_args(load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys): + def test_execute_pass_args( + load_chk_file, load_file_ctx_for_file, get_exec_ctx, capsys + ): """test_execute""" filepath = f"{SPEC_DIR}workflow_cases/pass_data/coinstats-usd-workflow.chk" From ec83b0aa582aa4a5fdd80bc8e35628b3dc34ecf3 Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 23 Oct 2024 18:27:56 +0600 Subject: [PATCH 243/245] feat: update build OS --- .github/workflows/test-ci.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-ci.yaml b/.github/workflows/test-ci.yaml index 422168e5..b77387d3 100644 --- a/.github/workflows/test-ci.yaml +++ b/.github/workflows/test-ci.yaml @@ -9,12 +9,15 @@ jobs: name: Run test on ${{ matrix.os }} with ${{ matrix.py_ver }} strategy: matrix: - os: + os: - macOS-latest - - macos-11 + - macos-14 + - macos-13 - ubuntu-latest - - ubuntu-20.04 + - ubuntu-24.04 + - ubuntu-22.04 - windows-latest + - windows-2022 - windows-2019 runs-on: ${{ matrix.os }} From 1aa9f950672e284ea91fec1201de63c093cb82dd Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 23 Oct 2024 18:36:20 +0600 Subject: [PATCH 244/245] feat: lozo academy registration automation --- .../lozoacademy/register-flow/me-req.yml | 16 ++++ .../lozoacademy/register-flow/me-valid.yml | 8 ++ .../register-flow/profile-avater-req.yml | 16 ++++ .../register-flow/register-req.yml | 20 +++++ .../register-flow/register-valid.yml | 16 ++++ .../lozoacademy/register-flow/register-wf.yml | 88 +++++++++++++++++++ .../lozoacademy/register-flow/streaks-req.yml | 16 ++++ .../register-flow/streaks-valid.yml | 8 ++ .../register-flow/update-grade-req.yml | 21 +++++ .../register-flow/update-grade-valid.yml | 13 +++ .../update-profile-avater-req.yml | 21 +++++ 11 files changed, 243 insertions(+) create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/me-req.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/me-valid.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/profile-avater-req.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-req.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-valid.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-wf.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/streaks-req.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/streaks-valid.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-grade-req.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-grade-valid.yml create mode 100644 tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-profile-avater-req.yml diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/me-req.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/me-req.yml new file mode 100644 index 00000000..109a24b5 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/me-req.yml @@ -0,0 +1,16 @@ +--- +version: default:http:0.7.2 + +variables: + jwtToken: ~ + +request: + url: "https://dev-api.lozoacademy.com/api/users/me" + method: GET + headers: + "Content-Type": "application/json; charset=utf-8" + auth .scm=bearer: + token: <% jwtToken %> + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/me-valid.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/me-valid.yml new file mode 100644 index 00000000..69d54565 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/me-valid.yml @@ -0,0 +1,8 @@ +--- +version: default:validation:0.7.2 + +asserts: + - { type: MapHasKeys, actual: <% _data %>, expected: ["id", "username", "name", "email", "provider"] } + +expose: + - <% _asserts_response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/profile-avater-req.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/profile-avater-req.yml new file mode 100644 index 00000000..aaf22144 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/profile-avater-req.yml @@ -0,0 +1,16 @@ +--- +version: default:http:0.7.2 + +variables: + jwtToken: ~ + +request: + url: "https://dev-api.lozoacademy.com/api/profile-avatars" + method: GET + headers: + "Content-Type": "application/json; charset=utf-8" + auth .scm=bearer: + token: <% jwtToken %> + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-req.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-req.yml new file mode 100644 index 00000000..0cf016b9 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-req.yml @@ -0,0 +1,20 @@ +--- +version: default:http:0.7.2 + +variables: + email: ~ + username: ~ + password: "a12345678" + +request: + url: "https://dev-api.lozoacademy.com/api/auth/local/register" + method: POST + body .enc=json: + email: <% email %> + password: <% password %> + username: <% username %> + headers: + "Content-Type": "application/json; charset=utf-8" + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-valid.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-valid.yml new file mode 100644 index 00000000..f1703077 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-valid.yml @@ -0,0 +1,16 @@ +--- +version: default:validation:0.7.2 + +variables: + userName: ~ + +asserts: + - { type: Str, actual: <% _data.body.jwt %>, msg_pass: '`jwt` is string.' } + - { type: Integer, actual: <% _data.body.user.id %>, msg_pass: '`user.id` is an int', msg_fail: '`user.id` is not an int', cast_actual_to: int } + - { type: Equal, actual: <% _data.body.user.username %>, expected: <% userName %> , msg_pass: '`user.username` matches', msg_fail: '`user.username` do not matches'} + - { type: Map, actual: <% _data.body.user %>, msg_pass: '`user` is a map', msg_fail: '`user` is not a map' } + - { type: StrHave, actual: <% _data.body.user.email %>, other: "@gmail.com" } + - { type: MapHasKeys, actual: <% _data.body.user %>, expected: ["id", "username", "email", "provider", "confirmed", "blocked", "gender", "name", "grade", "createdAt", "updatedAt", "age", "phoneNumber", "schoolName", "address", "isDisableOnLeaderBoard", "passwordChangedAt"] } + +expose: + - <% _asserts_response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-wf.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-wf.yml new file mode 100644 index 00000000..60394879 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/register-wf.yml @@ -0,0 +1,88 @@ +version: default:workflow:0.8.0 + +name: Lozo register workflow + +variables: + email: "hasanlock+lz25@gmail.com" + username: "lz25" + +tasks: + - name: Post user data for register + uses: fetch + file: "./register-req.yml" + variables: + email: <% email %> + username: <% username %> + + - name: Validate register response + uses: validate + file: "./register-valid.yml" + variables: + userName: <% username %> + arguments: + data: <% _steps.0._response %> + + - name: Update user's grade + uses: fetch + file: "./update-grade-req.yml" + variables: + userId: <% _steps.0._response.body.user.id %> + userGrade: 2 + jwtToken: <% _steps.0._response.body.jwt %> + + - name: Validate Update user's grade response + uses: validate + file: "./update-grade-valid.yml" + variables: + userName: <% username %> + arguments: + data: <% _steps.2._response %> + + - name: Get profile avaters + uses: fetch + file: "./profile-avater-req.yml" + variables: + jwtToken: <% _steps.0._response.body.jwt %> + + - name: Update user's profile avatar + uses: fetch + file: "./update-profile-avater-req.yml" + variables: + userId: <% _steps.0._response.body.user.id %> + profileAvatar: 27 + jwtToken: <% _steps.0._response.body.jwt %> + + - name: Validate update user's profile avatar response + uses: validate + file: "./update-grade-valid.yml" + variables: + userName: <% username %> + arguments: + data: <% _steps.5._response %> + + - name: Get user's streaks + uses: fetch + file: "./streaks-req.yml" + variables: + jwtToken: <% _steps.0._response.body.jwt %> + + - name: Validate user's streaks response + uses: validate + file: "./streaks-valid.yml" + arguments: + data: <% _steps.7._response.body %> + + - name: Get user's profile + uses: fetch + file: "./me-req.yml" + variables: + jwtToken: <% _steps.0._response.body.jwt %> + + - name: Validate user's profile response + uses: validate + file: "./me-valid.yml" + arguments: + data: <% _steps.9._response.body %> + +expose: + - <% _steps %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/streaks-req.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/streaks-req.yml new file mode 100644 index 00000000..fb627de9 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/streaks-req.yml @@ -0,0 +1,16 @@ +--- +version: default:http:0.7.2 + +variables: + jwtToken: ~ + +request: + url: "https://dev-api.lozoacademy.com/api/streaks" + method: GET + headers: + "Content-Type": "application/json; charset=utf-8" + auth .scm=bearer: + token: <% jwtToken %> + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/streaks-valid.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/streaks-valid.yml new file mode 100644 index 00000000..ce93fa00 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/streaks-valid.yml @@ -0,0 +1,8 @@ +--- +version: default:validation:0.7.2 + +asserts: + - { type: MapHasKeys, actual: <% _data %>, expected: ["userId", "currentStreak", "longestStreak", "lastStreaksDay"] } + +expose: + - <% _asserts_response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-grade-req.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-grade-req.yml new file mode 100644 index 00000000..234d1c69 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-grade-req.yml @@ -0,0 +1,21 @@ +--- +version: default:http:0.7.2 + +variables: + userGrade: ~ + userId: ~ + jwtToken: ~ + +request: + url: "https://dev-api.lozoacademy.com/api/users/<% userId %>" + method: PUT + body .enc=json: + grade: <% userGrade %> + id: <% userId %> + headers: + "Content-Type": "application/json; charset=utf-8" + auth .scm=bearer: + token: <% jwtToken %> + +expose: + - <% _response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-grade-valid.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-grade-valid.yml new file mode 100644 index 00000000..37891511 --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-grade-valid.yml @@ -0,0 +1,13 @@ +--- +version: default:validation:0.7.2 + +variables: + userName: ~ + +asserts: + - { type: Equal, actual: <% _data.body.username %>, expected: <% userName %> , msg_pass: '`user.username` matches', msg_fail: '`user.username` do not matches'} + - { type: MapHasKeys, actual: <% _data.body %>, expected: ["id", "username", "email", "provider", "confirmed", "blocked", "gender", "name", "grade", "createdAt", "updatedAt", "age", "phoneNumber", "schoolName", "address", "isDisableOnLeaderBoard", "passwordChangedAt", "role"] } + - { type: MapHasKeys, actual: <% _data.body.role %>, expected: ["id", "name", "description", "type", "createdAt", "updatedAt"] } + +expose: + - <% _asserts_response %> diff --git a/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-profile-avater-req.yml b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-profile-avater-req.yml new file mode 100644 index 00000000..d07b4d3b --- /dev/null +++ b/tests/resources/storage/spec_docs/workflow_cases/lozoacademy/register-flow/update-profile-avater-req.yml @@ -0,0 +1,21 @@ +--- +version: default:http:0.7.2 + +variables: + profileAvatar: ~ + userId: ~ + jwtToken: ~ + +request: + url: "https://dev-api.lozoacademy.com/api/users/<% userId %>" + method: PUT + body .enc=json: + profileAvatar: <% profileAvatar %> + id: <% userId %> + headers: + "Content-Type": "application/json; charset=utf-8" + auth .scm=bearer: + token: <% jwtToken %> + +expose: + - <% _response %> From 59ed9873798dd488e715fb3bad571d07fc39b75a Mon Sep 17 00:00:00 2001 From: HSN Date: Wed, 23 Oct 2024 18:48:51 +0600 Subject: [PATCH 245/245] chore: package updates after conflict resolve --- Pipfile.lock | 531 ++++++++++++++++++++++--------------------- requirements-dev.txt | 40 ++-- 2 files changed, 291 insertions(+), 280 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index c186192e..5a7ec08c 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -702,71 +702,71 @@ "toml" ], "hashes": [ - "sha256:04f2189716e85ec9192df307f7c255f90e78b6e9863a03223c3b998d24a3c6c6", - "sha256:0c6c0f4d53ef603397fc894a895b960ecd7d44c727df42a8d500031716d4e8d2", - "sha256:0ca37993206402c6c35dc717f90d4c8f53568a8b80f0bf1a1b2b334f4d488fba", - "sha256:12f9515d875859faedb4144fd38694a761cd2a61ef9603bf887b13956d0bbfbb", - "sha256:1990b1f4e2c402beb317840030bb9f1b6a363f86e14e21b4212e618acdfce7f6", - "sha256:2341a78ae3a5ed454d524206a3fcb3cec408c2a0c7c2752cd78b606a2ff15af4", - "sha256:23bb63ae3f4c645d2d82fa22697364b0046fbafb6261b258a58587441c5f7bd0", - "sha256:27bd5f18d8f2879e45724b0ce74f61811639a846ff0e5c0395b7818fae87aec6", - "sha256:2dc7d6b380ca76f5e817ac9eef0c3686e7834c8346bef30b041a4ad286449990", - "sha256:331b200ad03dbaa44151d74daeb7da2cf382db424ab923574f6ecca7d3b30de3", - "sha256:365defc257c687ce3e7d275f39738dcd230777424117a6c76043459db131dd43", - "sha256:37be7b5ea3ff5b7c4a9db16074dc94523b5f10dd1f3b362a827af66a55198175", - "sha256:3c2e6fa98032fec8282f6b27e3f3986c6e05702828380618776ad794e938f53a", - "sha256:40e8b1983080439d4802d80b951f4a93d991ef3261f69e81095a66f86cf3c3c6", - "sha256:43517e1f6b19f610a93d8227e47790722c8bf7422e46b365e0469fc3d3563d97", - "sha256:43b32a06c47539fe275106b376658638b418c7cfdfff0e0259fbf877e845f14b", - "sha256:43d6a66e33b1455b98fc7312b124296dad97a2e191c80320587234a77b1b736e", - "sha256:4c59d6a4a4633fad297f943c03d0d2569867bd5372eb5684befdff8df8522e39", - "sha256:52ac29cc72ee7e25ace7807249638f94c9b6a862c56b1df015d2b2e388e51dbd", - "sha256:54356a76b67cf8a3085818026bb556545ebb8353951923b88292556dfa9f812d", - "sha256:583049c63106c0555e3ae3931edab5669668bbef84c15861421b94e121878d3f", - "sha256:6d99198203f0b9cb0b5d1c0393859555bc26b548223a769baf7e321a627ed4fc", - "sha256:6da42bbcec130b188169107ecb6ee7bd7b4c849d24c9370a0c884cf728d8e976", - "sha256:6e484e479860e00da1f005cd19d1c5d4a813324e5951319ac3f3eefb497cc549", - "sha256:70a6756ce66cd6fe8486c775b30889f0dc4cb20c157aa8c35b45fd7868255c5c", - "sha256:70d24936ca6c15a3bbc91ee9c7fc661132c6f4c9d42a23b31b6686c05073bde5", - "sha256:71967c35828c9ff94e8c7d405469a1fb68257f686bca7c1ed85ed34e7c2529c4", - "sha256:79644f68a6ff23b251cae1c82b01a0b51bc40c8468ca9585c6c4b1aeee570e0b", - "sha256:87cd2e29067ea397a47e352efb13f976eb1b03e18c999270bb50589323294c6e", - "sha256:8d4c6ea0f498c7c79111033a290d060c517853a7bcb2f46516f591dab628ddd3", - "sha256:9134032f5aa445ae591c2ba6991d10136a1f533b1d2fa8f8c21126468c5025c6", - "sha256:921fbe13492caf6a69528f09d5d7c7d518c8d0e7b9f6701b7719715f29a71e6e", - "sha256:99670790f21a96665a35849990b1df447993880bb6463a0a1d757897f30da929", - "sha256:9975442f2e7a5cfcf87299c26b5a45266ab0696348420049b9b94b2ad3d40234", - "sha256:99ded130555c021d99729fabd4ddb91a6f4cc0707df4b1daf912c7850c373b13", - "sha256:a3328c3e64ea4ab12b85999eb0779e6139295bbf5485f69d42cf794309e3d007", - "sha256:a4fb91d5f72b7e06a14ff4ae5be625a81cd7e5f869d7a54578fc271d08d58ae3", - "sha256:aa23ce39661a3e90eea5f99ec59b763b7d655c2cada10729ed920a38bfc2b167", - "sha256:aac7501ae73d4a02f4b7ac8fcb9dc55342ca98ffb9ed9f2dfb8a25d53eda0e4d", - "sha256:ab84a8b698ad5a6c365b08061920138e7a7dd9a04b6feb09ba1bfae68346ce6d", - "sha256:b4adeb878a374126f1e5cf03b87f66279f479e01af0e9a654cf6d1509af46c40", - "sha256:b9853509b4bf57ba7b1f99b9d866c422c9c5248799ab20e652bbb8a184a38181", - "sha256:bb7d5fe92bd0dc235f63ebe9f8c6e0884f7360f88f3411bfed1350c872ef2054", - "sha256:bca4c8abc50d38f9773c1ec80d43f3768df2e8576807d1656016b9d3eeaa96fd", - "sha256:c222958f59b0ae091f4535851cbb24eb57fc0baea07ba675af718fb5302dddb2", - "sha256:c30e42ea11badb147f0d2e387115b15e2bd8205a5ad70d6ad79cf37f6ac08c91", - "sha256:c3a79f56dee9136084cf84a6c7c4341427ef36e05ae6415bf7d787c96ff5eaa3", - "sha256:c51ef82302386d686feea1c44dbeef744585da16fcf97deea2a8d6c1556f519b", - "sha256:c77326300b839c44c3e5a8fe26c15b7e87b2f32dfd2fc9fee1d13604347c9b38", - "sha256:d33a785ea8354c480515e781554d3be582a86297e41ccbea627a5c632647f2cd", - "sha256:d546cfa78844b8b9c1c0533de1851569a13f87449897bbc95d698d1d3cb2a30f", - "sha256:da29ceabe3025a1e5a5aeeb331c5b1af686daab4ff0fb4f83df18b1180ea83e2", - "sha256:df8c05a0f574d480947cba11b947dc41b1265d721c3777881da2fb8d3a1ddfba", - "sha256:e266af4da2c1a4cbc6135a570c64577fd3e6eb204607eaff99d8e9b710003c6f", - "sha256:e279f3db904e3b55f520f11f983cc8dc8a4ce9b65f11692d4718ed021ec58b83", - "sha256:ea52bd218d4ba260399a8ae4bb6b577d82adfc4518b93566ce1fddd4a49d1dce", - "sha256:ebec65f5068e7df2d49466aab9128510c4867e532e07cb6960075b27658dca38", - "sha256:ec1e3b40b82236d100d259854840555469fad4db64f669ab817279eb95cd535c", - "sha256:ee77c7bef0724165e795b6b7bf9c4c22a9b8468a6bdb9c6b4281293c6b22a90f", - "sha256:f263b18692f8ed52c8de7f40a0751e79015983dbd77b16906e5b310a39d3ca21", - "sha256:f7b26757b22faf88fcf232f5f0e62f6e0fd9e22a8a5d0d5016888cdfe1f6c1c4", - "sha256:f7ddb920106bbbbcaf2a274d56f46956bf56ecbde210d88061824a95bdd94e92" + "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376", + "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9", + "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111", + "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172", + "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491", + "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546", + "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2", + "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11", + "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08", + "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c", + "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2", + "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963", + "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613", + "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0", + "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db", + "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf", + "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73", + "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117", + "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1", + "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e", + "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522", + "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25", + "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc", + "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea", + "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52", + "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a", + "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07", + "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06", + "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa", + "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901", + "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b", + "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17", + "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0", + "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21", + "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19", + "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5", + "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51", + "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3", + "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3", + "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f", + "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076", + "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a", + "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718", + "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba", + "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e", + "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27", + "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e", + "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09", + "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e", + "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70", + "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f", + "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72", + "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a", + "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef", + "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b", + "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b", + "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f", + "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806", + "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b", + "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1", + "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c", + "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858" ], "markers": "python_version >= '3.9'", - "version": "==7.6.3" + "version": "==7.6.4" }, "coveralls": { "hashes": [ @@ -810,86 +810,101 @@ }, "frozenlist": { "hashes": [ - "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", - "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98", - "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad", - "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5", - "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae", - "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e", - "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a", - "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701", - "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d", - "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6", - "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6", - "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106", - "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75", - "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868", - "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a", - "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0", - "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1", - "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826", - "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec", - "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6", - "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950", - "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19", - "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0", - "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8", - "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a", - "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09", - "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86", - "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c", - "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5", - "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b", - "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b", - "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d", - "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0", - "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea", - "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776", - "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a", - "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897", - "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7", - "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09", - "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9", - "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe", - "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd", - "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742", - "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09", - "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0", - "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932", - "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1", - "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a", - "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49", - "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d", - "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7", - "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480", - "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89", - "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e", - "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b", - "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82", - "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb", - "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068", - "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8", - "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b", - "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb", - "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2", - "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11", - "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b", - "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc", - "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0", - "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497", - "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17", - "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0", - "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2", - "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439", - "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5", - "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac", - "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825", - "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887", - "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced", - "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74" + "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", + "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf", + "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6", + "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a", + "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d", + "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f", + "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28", + "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b", + "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9", + "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2", + "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec", + "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2", + "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c", + "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336", + "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4", + "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d", + "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b", + "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c", + "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10", + "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08", + "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942", + "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", + "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f", + "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10", + "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5", + "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", + "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", + "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c", + "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d", + "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923", + "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608", + "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de", + "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17", + "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0", + "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", + "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641", + "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c", + "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a", + "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0", + "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", + "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab", + "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f", + "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3", + "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", + "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", + "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604", + "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", + "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5", + "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03", + "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", + "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953", + "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", + "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d", + "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", + "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3", + "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", + "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", + "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9", + "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf", + "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76", + "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba", + "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171", + "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb", + "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439", + "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", + "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972", + "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d", + "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869", + "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9", + "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411", + "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723", + "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2", + "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b", + "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99", + "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e", + "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840", + "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3", + "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb", + "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", + "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0", + "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca", + "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45", + "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e", + "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f", + "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5", + "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307", + "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e", + "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2", + "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778", + "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a", + "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30", + "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a" ], "markers": "python_version >= '3.8'", - "version": "==1.4.1" + "version": "==1.5.0" }, "icecream": { "hashes": [ @@ -1031,42 +1046,42 @@ }, "mypy": { "hashes": [ - "sha256:060a07b10e999ac9e7fa249ce2bdcfa9183ca2b70756f3bce9df7a92f78a3c0a", - "sha256:06de0498798527451ffb60f68db0d368bd2bae2bbfb5237eae616d4330cc87aa", - "sha256:0eff042d7257f39ba4ca06641d110ca7d2ad98c9c1fb52200fe6b1c865d360ff", - "sha256:1ebf9e796521f99d61864ed89d1fb2926d9ab6a5fab421e457cd9c7e4dd65aa9", - "sha256:20c7c5ce0c1be0b0aea628374e6cf68b420bcc772d85c3c974f675b88e3e6e57", - "sha256:233e11b3f73ee1f10efada2e6da0f555b2f3a5316e9d8a4a1224acc10e7181d3", - "sha256:2c40658d4fa1ab27cb53d9e2f1066345596af2f8fe4827defc398a09c7c9519b", - "sha256:2f106db5ccb60681b622ac768455743ee0e6a857724d648c9629a9bd2ac3f721", - "sha256:4397081e620dc4dc18e2f124d5e1d2c288194c2c08df6bdb1db31c38cd1fe1ed", - "sha256:48d3e37dd7d9403e38fa86c46191de72705166d40b8c9f91a3de77350daa0893", - "sha256:4ae8959c21abcf9d73aa6c74a313c45c0b5a188752bf37dace564e29f06e9c1b", - "sha256:4b86de37a0da945f6d48cf110d5206c5ed514b1ca2614d7ad652d4bf099c7de7", - "sha256:52b9e1492e47e1790360a43755fa04101a7ac72287b1a53ce817f35899ba0521", - "sha256:5bc81701d52cc8767005fdd2a08c19980de9ec61a25dbd2a937dfb1338a826f9", - "sha256:5feee5c74eb9749e91b77f60b30771563327329e29218d95bedbe1257e2fe4b0", - "sha256:65a22d87e757ccd95cbbf6f7e181e6caa87128255eb2b6be901bb71b26d8a99d", - "sha256:684a9c508a283f324804fea3f0effeb7858eb03f85c4402a967d187f64562469", - "sha256:6b5df6c8a8224f6b86746bda716bbe4dbe0ce89fd67b1fa4661e11bfe38e8ec8", - "sha256:6cabe4cda2fa5eca7ac94854c6c37039324baaa428ecbf4de4567279e9810f9e", - "sha256:77278e8c6ffe2abfba6db4125de55f1024de9a323be13d20e4f73b8ed3402bd1", - "sha256:8462655b6694feb1c99e433ea905d46c478041a8b8f0c33f1dab00ae881b2164", - "sha256:923ea66d282d8af9e0f9c21ffc6653643abb95b658c3a8a32dca1eff09c06475", - "sha256:9b9ce1ad8daeb049c0b55fdb753d7414260bad8952645367e70ac91aec90e07e", - "sha256:a64ee25f05fc2d3d8474985c58042b6759100a475f8237da1f4faf7fcd7e6309", - "sha256:bfe012b50e1491d439172c43ccb50db66d23fab714d500b57ed52526a1020bb7", - "sha256:c72861b7139a4f738344faa0e150834467521a3fba42dc98264e5aa9507dd601", - "sha256:dcfb754dea911039ac12434d1950d69a2f05acd4d56f7935ed402be09fad145e", - "sha256:dee78a8b9746c30c1e617ccb1307b351ded57f0de0d287ca6276378d770006c0", - "sha256:e478601cc3e3fa9d6734d255a59c7a2e5c2934da4378f3dd1e3411ea8a248642", - "sha256:eafc1b7319b40ddabdc3db8d7d48e76cfc65bbeeafaa525a4e0fa6b76175467f", - "sha256:faca7ab947c9f457a08dcb8d9a8664fd438080e002b0fa3e41b0535335edcf7f", - "sha256:fd313226af375d52e1e36c383f39bf3836e1f192801116b31b090dfcd3ec5266" + "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc", + "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e", + "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f", + "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74", + "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a", + "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2", + "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b", + "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73", + "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e", + "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d", + "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d", + "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6", + "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca", + "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d", + "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5", + "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62", + "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a", + "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc", + "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7", + "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb", + "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7", + "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732", + "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80", + "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a", + "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc", + "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2", + "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0", + "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24", + "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7", + "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b", + "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372", + "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.12.0" + "version": "==1.13.0" }, "mypy-extensions": { "hashes": [ @@ -1311,7 +1326,7 @@ "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8" ], - "markers": "python_version >= '3.8'", + "markers": "python_version < '3.13'", "version": "==4.12.2" }, "urllib3": { @@ -1324,91 +1339,91 @@ }, "yarl": { "hashes": [ - "sha256:07019a9de859c5a29916defd1e8c7557de6491a10bf50c49ff5284e6aedf5313", - "sha256:0c96eaa30030e1cfafe533f3da8983812281235b7c50ef2a6c78ceca7aea1a0b", - "sha256:0d0f16c87c62b7a94b389ddf6a8c9d081265d788875c39f3a80108c4856eea7b", - "sha256:0e07e4b17b648c880e8e42bf1ac0a730bde114961646ae1c2ec4433f0c11ca94", - "sha256:1005921b30f4f39bf893946df6173567ff650307babb5ec04bbf64342a1f62c1", - "sha256:115346433fad2084ee3a1a925ccc0659990aa42e208ca54c278830a150a3caf3", - "sha256:11b207061f28b4b6d980239b22ab0ecfadc47846b5a3b8e79f27fcc019d02cf9", - "sha256:1ceb677fb583971351627eac70eec6763fbc889761828da7a276681b5e39742d", - "sha256:1e7468f31de61a82817f918743e5229fce774f73fad58487cdf88eef4f06d864", - "sha256:20acf84bd1ce530065f8e957e4a5878fda4bc5f18cb02659828210e1519de54e", - "sha256:21fabe58042f3e567b4edc75b2cf44cea02f228e41ac09d73de126bf685fe883", - "sha256:3198da7d7c34e29fc8c823e0c3ce6c7274aac35760de557c2017489c7d98fc5a", - "sha256:35a6b69cc44bda002705d6138346bf0a0234cbb7c26c3bf192513eb946aee6f9", - "sha256:3896bf15284dd23acab1f2e7fceb350d8da6f6f2436b922f7ec6b3de685d34ca", - "sha256:3a79c0a8bbb046add85663af85e9993b691bf20c2a109518bd35e0ce77edfe42", - "sha256:4076bfd8f1621449b19b9826848ed51bf0f2d1d38e82647c312c0730d8778903", - "sha256:40c18f96696549e73b92dc12619f07019cbf5faefc1612608f967c144816e493", - "sha256:46491b3e058de7b484e1c9fb20aa8441f06d6c9a18395d711c1c2a9ad6707d6a", - "sha256:48334a6c8afee93097eb17c0a094234dac2d88da076c8cf372e09e2a5dcc4b66", - "sha256:4851618679ca70b863ba2e7109be5f09f8fd7715ec505bd42e5a947dcfde3a45", - "sha256:49190eb2ece70313742b0ea51520340288a059674da1f39eefb589d598d9453e", - "sha256:49f886e8dcf591275c6e20915b516fd81647857566b0c0158c52df1e468849c9", - "sha256:4a706db0c3b7e4578ff34ed2b1d2507b08fd491346ffc64468786fdf1151d938", - "sha256:4ac85e760543129a1912a82438fc8075223e35eaa2d457d61cd83c27d00d17be", - "sha256:4f66a0eda48844508736e47ed476d8fdd7cdbf16a4053b5d439509a25f708504", - "sha256:4feab2dcb725eb5b4835207ecf3d370ff7ce930b253cba5e681646cb80d64c2c", - "sha256:527c68f48a91d953691291d3bce0209293aa5ad13ff05286ddb506791c331818", - "sha256:551205388d1da18a9975302c9a274ba24788f53bb9bb86187496ebf9e938916e", - "sha256:590e2d733a82ecf004c5c531cbef0d6be328e93adec960024eb213f10cb9503e", - "sha256:59db8e6888d5302b8dbca0c1026ddabe99d81d67cdc101941519e13ffc9050fe", - "sha256:60165b8bc260f453321004b193770a66cc1b1a5c57c07d4b8dcc96839e7ad578", - "sha256:65a0168691373e08d869d48b62c8bed0af0cdaef19c76e11ad73b43901bbdb5a", - "sha256:65e0467f90f2acf3bc83bbfeedece8f1fd84df8add1a54e9600ed7b7b5debdb0", - "sha256:691a3b498fdebef63308e8967bb598cfd326c56d628da82b799dd181bace4503", - "sha256:69f628d2da1489b27959f4d63fdb326781fe484944dce94abbf919e416c54abe", - "sha256:6e100c6c7d9e9d469009fd55cc4d7ad168d67d40758865c50da713f7ada491e5", - "sha256:6f8136bde8dfa4477c6a85c79a366581b4a505b51a52b669318fb631d3f4f638", - "sha256:76259901cf1ac3db65e7e6dff04775b626d0715f9b51d92b447351144c756a82", - "sha256:7694f109867ee428c21b85ae19fd31d164c691eb45cc95c561cfdeba237a12e3", - "sha256:77390496f2f32437a721c854897f889abefae0f3009daf90a2f703508d96c920", - "sha256:787532f00543a21b8f4ec3050b4e01b8fe437797903c0156a0b03dfca5e1ba6c", - "sha256:7d5226c70af3ad9569ccc4ccc04ab65be79eeb22c87d7ae789c89e62ef76bbd6", - "sha256:83e7154aa0d17f5c93d27ac01088fd9ab6673e7bab1acbd07cd7a865b980c045", - "sha256:84937d00e2ea03616c40977de20189fa13a9213e5744a3c6afa0e7dd9141d69c", - "sha256:8721f8bedaa722c3c483cc06a1399cbfdb280eadf443aa5d324b0203cef2a75f", - "sha256:8b569f4f511b59518ba6719feb5b8bf0a5d4115e6ac903c89e10a8a9ac656017", - "sha256:8de5328d91859b461899497980d4cc8269e84e2d18640f6ac643886fda9000bf", - "sha256:9060589d0acad1fca048861fa9ee3e8ed060f67894fa885969648ab6e9e99a54", - "sha256:98d8dc1e8133f86d916125deca9780d791b22645f0d62bafe1452d1cd5eac631", - "sha256:9fe17744d60fc404ac61f824118e1e15ce3c2e92eced9b8e22f3c7847acafbf2", - "sha256:a0c5e271058d148d730219ca4f33c5d841c6bd46e05b0da60fea7b516906ccd3", - "sha256:ab79cc13307065a0b3ef087f09f0509996fc605d35d6642bb28e5d85b2648e1e", - "sha256:ab9ccf26cb3fa32747ba2a637a189d2d42386a2fc4afc10dbc7f85922dd23b0f", - "sha256:adb6b5d07d17c32f9d34c9dd4a693637a72323cfcb1f8a52d57033ab2dd21e99", - "sha256:b2bdb038b3f5c284e3919218c580dedc95f592c417a358361450b9519b22f7a8", - "sha256:c23a442973dba3646811c284fce3dddd7fe5c2bd674ac73a122198e8218d6115", - "sha256:c30115cecaf25fdcb67cc71c669d08425207f62d7a2f6d5416057c1460529216", - "sha256:c33ea7c55a73be343f02361795caf52a187357ea07708fb1cae6661ee1d689c8", - "sha256:ccbeaf5b18b173b9d78e332e017b30ba8bedcf03cdce1d13490b82a3f421bc98", - "sha256:ccd6774aa7bebdf9ca608bb0839318757a71b8e0d2cf7b10c002bc8790bd343e", - "sha256:d886de2ea81f513ba2d6820451d33b767a97c37867ba688d42e164b2dbca1362", - "sha256:db64a20e78969fc66665d2e5fc96cb4f4dc80f2137d8fed4b5a650ad569bb60f", - "sha256:db818e33599f7b2e4c6507f2b2c24f45ff539a1b6e4e09163bb6f3cfb4616ca7", - "sha256:dce1c56beef74d9c799a6ed94001693232a1402138292353a8ce302b64f457d9", - "sha256:de38b0b5b86e57efb129d179854e78b65cb8e294a8c75560877869c43aa2415a", - "sha256:de479e30abd2dfd49fdad3bd6953f2d930a45380be5143c0c9f7a1215cffc8cc", - "sha256:df09c80f4bc2bc2efde309af383c3fe8fd8c51fe0519edb350b9c9e0af43ffa4", - "sha256:df6b254e55c8ac2362afaa651e3e53453aa19a095570792346245773b434176e", - "sha256:e58c5d07b1f78dd4cb180c5b3b82465cd281aaeee8aafea0e5d72a4b97922cb1", - "sha256:e5cc288111c450c0a54a74475591b206d3b1cb47dc71bb6200f6be8b1337184c", - "sha256:eee724176b5bc50ee64905f559345448119b860a30b9489bd7a073f61baf925f", - "sha256:f16d1940c0cbc342f1d29d6212a006d172be616d2942c5c41966e8a3ce4c3be1", - "sha256:f25906e4a72d9833e81717c39a39dee7297ff5cb44957d06d177a2ab8ef2ef7f", - "sha256:f3294ce265011547630a59c20085fcb6af8cc5fa1fa44a203251f7d86cd5d913", - "sha256:f337486742c700b102d640830aab3faf2848bed966b479a39e6783edd4ab1c6c", - "sha256:f51c9d173e5fa4b12d06ddca09a41cabbdeb660471dbe55432423eec095709ab", - "sha256:f68025d6ba1816428b7de615c80f61cb03d5b7061158d4ced7696657a64aa59c", - "sha256:f74f6ffdc633aefecbc80282242a5395058db9d1247fa7dd2f070ef84dc82583", - "sha256:f864b412557e69a6b953d62c01a0ed0ee342666298aa7f2a29af526bfa80f6e9", - "sha256:f923e94e93a37fd990e8336e0b9bedea533e7cbed14e0c572bf9357ef2a70681", - "sha256:faa3dd7f4620ab5e5da7a0789d0aac78a9ad0376f102409d442ec5a4179e200a", - "sha256:fd2bb86f40962d53a91def15a2f7684c62e081a7b96ec74ed0259c34b15973b9" + "sha256:019f5d58093402aa8f6661e60fd82a28746ad6d156f6c5336a70a39bd7b162b9", + "sha256:0fd9c227990f609c165f56b46107d0bc34553fe0387818c42c02f77974402c36", + "sha256:1208ca14eed2fda324042adf8d6c0adf4a31522fa95e0929027cd487875f0240", + "sha256:122d8e7986043d0549e9eb23c7fd23be078be4b70c9eb42a20052b3d3149c6f2", + "sha256:147b0fcd0ee33b4b5f6edfea80452d80e419e51b9a3f7a96ce98eaee145c1581", + "sha256:178ccb856e265174a79f59721031060f885aca428983e75c06f78aa24b91d929", + "sha256:1a5cf32539373ff39d97723e39a9283a7277cbf1224f7aef0c56c9598b6486c3", + "sha256:1a5e9d8ce1185723419c487758d81ac2bde693711947032cce600ca7c9cda7d6", + "sha256:1bc22e00edeb068f71967ab99081e9406cd56dbed864fc3a8259442999d71552", + "sha256:1cf936ba67bc6c734f3aa1c01391da74ab7fc046a9f8bbfa230b8393b90cf472", + "sha256:234f3a3032b505b90e65b5bc6652c2329ea7ea8855d8de61e1642b74b4ee65d2", + "sha256:26768342f256e6e3c37533bf9433f5f15f3e59e3c14b2409098291b3efaceacb", + "sha256:27e11db3f1e6a51081a981509f75617b09810529de508a181319193d320bc5c7", + "sha256:2bd6a51010c7284d191b79d3b56e51a87d8e1c03b0902362945f15c3d50ed46b", + "sha256:2f1fe2b2e3ee418862f5ebc0c0083c97f6f6625781382f828f6d4e9b614eba9b", + "sha256:32468f41242d72b87ab793a86d92f885355bcf35b3355aa650bfa846a5c60058", + "sha256:35b4f7842154176523e0a63c9b871168c69b98065d05a4f637fce342a6a2693a", + "sha256:38fec8a2a94c58bd47c9a50a45d321ab2285ad133adefbbadf3012c054b7e656", + "sha256:3a91654adb7643cb21b46f04244c5a315a440dcad63213033826549fa2435f71", + "sha256:3ab3ed42c78275477ea8e917491365e9a9b69bb615cb46169020bd0aa5e2d6d3", + "sha256:3d375a19ba2bfe320b6d873f3fb165313b002cef8b7cc0a368ad8b8a57453837", + "sha256:4199db024b58a8abb2cfcedac7b1292c3ad421684571aeb622a02f242280e8d6", + "sha256:4f32c4cb7386b41936894685f6e093c8dfaf0960124d91fe0ec29fe439e201d0", + "sha256:4ffb7c129707dd76ced0a4a4128ff452cecf0b0e929f2668ea05a371d9e5c104", + "sha256:504e1fe1cc4f170195320eb033d2b0ccf5c6114ce5bf2f617535c01699479bca", + "sha256:542fa8e09a581bcdcbb30607c7224beff3fdfb598c798ccd28a8184ffc18b7eb", + "sha256:5570e6d47bcb03215baf4c9ad7bf7c013e56285d9d35013541f9ac2b372593e7", + "sha256:571f781ae8ac463ce30bacebfaef2c6581543776d5970b2372fbe31d7bf31a07", + "sha256:595ca5e943baed31d56b33b34736461a371c6ea0038d3baec399949dd628560b", + "sha256:5b8e265a0545637492a7e12fd7038370d66c9375a61d88c5567d0e044ded9202", + "sha256:5b9101f528ae0f8f65ac9d64dda2bb0627de8a50344b2f582779f32fda747c1d", + "sha256:5ff96da263740779b0893d02b718293cc03400c3a208fc8d8cd79d9b0993e532", + "sha256:621280719c4c5dad4c1391160a9b88925bb8b0ff6a7d5af3224643024871675f", + "sha256:62c7da0ad93a07da048b500514ca47b759459ec41924143e2ddb5d7e20fd3db5", + "sha256:649bddcedee692ee8a9b7b6e38582cb4062dc4253de9711568e5620d8707c2a3", + "sha256:66ea8311422a7ba1fc79b4c42c2baa10566469fe5a78500d4e7754d6e6db8724", + "sha256:676d96bafc8c2d0039cea0cd3fd44cee7aa88b8185551a2bb93354668e8315c2", + "sha256:707ae579ccb3262dfaef093e202b4c3fb23c3810e8df544b1111bd2401fd7b09", + "sha256:7118bdb5e3ed81acaa2095cba7ec02a0fe74b52a16ab9f9ac8e28e53ee299732", + "sha256:789a3423f28a5fff46fbd04e339863c169ece97c827b44de16e1a7a42bc915d2", + "sha256:7ace71c4b7a0c41f317ae24be62bb61e9d80838d38acb20e70697c625e71f120", + "sha256:7c7c30fb38c300fe8140df30a046a01769105e4cf4282567a29b5cdb635b66c4", + "sha256:7d7aaa8ff95d0840e289423e7dc35696c2b058d635f945bf05b5cd633146b027", + "sha256:7f8713717a09acbfee7c47bfc5777e685539fefdd34fa72faf504c8be2f3df4e", + "sha256:858728086914f3a407aa7979cab743bbda1fe2bdf39ffcd991469a370dd7414d", + "sha256:8791d66d81ee45866a7bb15a517b01a2bcf583a18ebf5d72a84e6064c417e64b", + "sha256:87dd10bc0618991c66cee0cc65fa74a45f4ecb13bceec3c62d78ad2e42b27a16", + "sha256:8994c42f4ca25df5380ddf59f315c518c81df6a68fed5bb0c159c6cb6b92f120", + "sha256:8a0296040e5cddf074c7f5af4a60f3fc42c0237440df7bcf5183be5f6c802ed5", + "sha256:8b37d5ec034e668b22cf0ce1074d6c21fd2a08b90d11b1b73139b750a8b0dd97", + "sha256:8c42998fd1cbeb53cd985bff0e4bc25fbe55fd6eb3a545a724c1012d69d5ec84", + "sha256:8f639e3f5795a6568aa4f7d2ac6057c757dcd187593679f035adbf12b892bb00", + "sha256:921b81b8d78f0e60242fb3db615ea3f368827a76af095d5a69f1c3366db3f596", + "sha256:995d0759004c08abd5d1b81300a91d18c8577c6389300bed1c7c11675105a44d", + "sha256:99a9dcd4b71dd5f5f949737ab3f356cfc058c709b4f49833aeffedc2652dac56", + "sha256:9a91217208306d82357c67daeef5162a41a28c8352dab7e16daa82e3718852a7", + "sha256:a5ace0177520bd4caa99295a9b6fb831d0e9a57d8e0501a22ffaa61b4c024283", + "sha256:a5b6c09b9b4253d6a208b0f4a2f9206e511ec68dce9198e0fbec4f160137aa67", + "sha256:a9394c65ae0ed95679717d391c862dece9afacd8fa311683fc8b4362ce8a410c", + "sha256:aa7943f04f36d6cafc0cf53ea89824ac2c37acbdb4b316a654176ab8ffd0f968", + "sha256:ab2b2ac232110a1fdb0d3ffcd087783edd3d4a6ced432a1bf75caf7b7be70916", + "sha256:ad7a852d1cd0b8d8b37fc9d7f8581152add917a98cfe2ea6e241878795f917ae", + "sha256:b140e532fe0266003c936d017c1ac301e72ee4a3fd51784574c05f53718a55d8", + "sha256:b439cae82034ade094526a8f692b9a2b5ee936452de5e4c5f0f6c48df23f8604", + "sha256:b6f687ced5510a9a2474bbae96a4352e5ace5fa34dc44a217b0537fec1db00b4", + "sha256:b9ca7b9147eb1365c8bab03c003baa1300599575effad765e0b07dd3501ea9af", + "sha256:bdcf667a5dec12a48f669e485d70c54189f0639c2157b538a4cffd24a853624f", + "sha256:cdcffe1dbcb4477d2b4202f63cd972d5baa155ff5a3d9e35801c46a415b7f71a", + "sha256:d1aab176dd55b59f77a63b27cffaca67d29987d91a5b615cbead41331e6b7428", + "sha256:d1b0796168b953bca6600c5f97f5ed407479889a36ad7d17183366260f29a6b9", + "sha256:d3f1cc3d3d4dc574bebc9b387f6875e228ace5748a7c24f49d8f01ac1bc6c31b", + "sha256:d743e3118b2640cef7768ea955378c3536482d95550222f908f392167fe62059", + "sha256:d8643975a0080f361639787415a038bfc32d29208a4bf6b783ab3075a20b1ef3", + "sha256:d9525f03269e64310416dbe6c68d3b23e5d34aaa8f47193a1c45ac568cecbc49", + "sha256:de6c14dd7c7c0badba48157474ea1f03ebee991530ba742d381b28d4f314d6f3", + "sha256:e49e0fd86c295e743fd5be69b8b0712f70a686bc79a16e5268386c2defacaade", + "sha256:e6980a558d8461230c457218bd6c92dfc1d10205548215c2c21d79dc8d0a96f3", + "sha256:e8be3aff14f0120ad049121322b107f8a759be76a6a62138322d4c8a337a9e2c", + "sha256:e9951afe6557c75a71045148890052cb942689ee4c9ec29f5436240e1fcc73b7", + "sha256:ed097b26f18a1f5ff05f661dc36528c5f6735ba4ce8c9645e83b064665131349", + "sha256:f1d1f45e3e8d37c804dca99ab3cf4ab3ed2e7a62cd82542924b14c0a4f46d243", + "sha256:fe8bba2545427418efc1929c5c42852bdb4143eb8d0a46b09de88d1fe99258e7" ], "markers": "python_version >= '3.9'", - "version": "==1.15.4" + "version": "==1.16.0" } } } diff --git a/requirements-dev.txt b/requirements-dev.txt index 988e9936..636719a6 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,31 +2,28 @@ aiohappyeyeballs==2.4.3; python_version >= '3.8' aiohttp==3.10.10 aiosignal==1.3.1; python_version >= '3.7' -astroid==3.2.4; python_full_version >= '3.8.0' +astroid==3.3.5; python_full_version >= '3.9.0' +asttokens==2.4.1 attrs==24.2.0; python_version >= '3.7' black[d]==24.10.0; python_version >= '3.9' certifi==2024.8.30; python_version >= '3.6' charset-normalizer==3.4.0; python_full_version >= '3.7.0' click==8.1.7; python_version >= '3.7' -coverage[toml]==7.6.1; python_version >= '3.8' +colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' +coverage[toml]==7.6.4; python_version >= '3.9' coveralls==4.0.1; python_version < '3.13' and python_version >= '3.8' dill==0.3.9; python_version >= '3.11' docopt==0.6.2 +executing==2.1.0; python_version >= '3.8' flake8==7.1.1; python_full_version >= '3.8.1' -frozenlist==1.4.1; python_version >= '3.8' -idna==3.7; python_version >= '3.5' -colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' -dill==0.3.8; python_version >= '3.11' -executing==2.0.1; python_version >= '3.5' -flake8==7.1.1; python_full_version >= '3.8.1' -frozenlist==1.4.1; python_version >= '3.8' +frozenlist==1.5.0; python_version >= '3.8' icecream==2.1.3 idna==3.10; python_version >= '3.6' iniconfig==2.0.0; python_version >= '3.7' isort==5.13.2; python_full_version >= '3.8.0' mccabe==0.7.0; python_version >= '3.6' -multidict==6.0.5; python_version >= '3.7' -mypy==1.11.1; python_version >= '3.8' +multidict==6.1.0; python_version >= '3.8' +mypy==1.13.0; python_version >= '3.8' mypy-extensions==1.0.0; python_version >= '3.5' packaging==24.1; python_version >= '3.8' pathspec==0.12.1; python_version >= '3.8' @@ -35,20 +32,19 @@ pluggy==1.5.0; python_version >= '3.8' propcache==0.2.0; python_version >= '3.8' pycodestyle==2.12.1; python_version >= '3.8' pyflakes==3.2.0; python_version >= '3.8' -pylint==3.2.6; python_full_version >= '3.8.0' -pytest==8.3.2; python_version >= '3.8' +pygments==2.18.0; python_version >= '3.8' +pylint==3.3.1; python_full_version >= '3.9.0' +pytest==8.3.3; python_version >= '3.8' pytest-cov==5.0.0; python_version >= '3.8' requests==2.32.3; python_version >= '3.8' +six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' tomlkit==0.13.2; python_version >= '3.8' -types-pyyaml==6.0.12.20240808; python_version >= '3.8' -types-requests==2.32.0.20240712; python_version >= '3.8' -typing-extensions==4.12.2; python_version >= '3.8' -urllib3==2.2.2; python_version >= '3.8' -var-dump==1.2 -urllib3==2.0.7; python_version >= '3.7' -yarl==1.9.2; python_version >= '3.7' -yarl==1.9.4; python_version >= '3.7' -annotated-types==0.6.0; python_version >= '3.8' +types-pyyaml==6.0.12.20240917; python_version >= '3.8' +types-requests==2.32.0.20241016; python_version >= '3.8' +typing-extensions==4.12.2; python_version < '3.13' +urllib3==2.2.3; python_version >= '3.8' +yarl==1.16.0; python_version >= '3.9' +annotated-types==0.7.0; python_version >= '3.8' cerberus==1.3.5 defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' loguru==0.7.2; python_version >= '3.5'