From b1c59370a4626fe2e759cf7c99567e5d1f52574e Mon Sep 17 00:00:00 2001 From: yucohen Date: Wed, 17 Apr 2024 21:56:58 +0300 Subject: [PATCH 01/33] added new content items --- TestSuite/case_field.py | 0 demisto_sdk/commands/common/constants.py | 27 +++ .../commands/common/schemas/casefield.yml | 180 ++++++++++++++++++ .../common/schemas/caselayoutrule.yml | 83 ++++++++ demisto_sdk/commands/content_graph/common.py | 2 + .../content_graph/objects/__init__.py | 4 + .../content_graph/objects/case_field.py | 34 ++++ .../content_graph/objects/case_layout_rule.py | 29 +++ .../objects/pack_content_items.py | 4 + .../content_graph/parsers/case_field.py | 53 ++++++ .../content_graph/parsers/case_layout_rule.py | 8 + 11 files changed, 424 insertions(+) create mode 100644 TestSuite/case_field.py create mode 100644 demisto_sdk/commands/common/schemas/casefield.yml create mode 100644 demisto_sdk/commands/common/schemas/caselayoutrule.yml create mode 100644 demisto_sdk/commands/content_graph/objects/case_field.py create mode 100644 demisto_sdk/commands/content_graph/objects/case_layout_rule.py create mode 100644 demisto_sdk/commands/content_graph/parsers/case_field.py create mode 100644 demisto_sdk/commands/content_graph/parsers/case_layout_rule.py diff --git a/TestSuite/case_field.py b/TestSuite/case_field.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/demisto_sdk/commands/common/constants.py b/demisto_sdk/commands/common/constants.py index 7409d2cb589..ee8f0d84b3b 100644 --- a/demisto_sdk/commands/common/constants.py +++ b/demisto_sdk/commands/common/constants.py @@ -107,6 +107,8 @@ XDRC_TEMPLATE_DIR = "XDRCTemplates" LAYOUT_RULES_DIR = "LayoutRules" ASSETS_MODELING_RULES_DIR = "AssetsModelingRules" +CASE_LAYOUT_RULES_DIR = "CaseLayoutRules" +CASE_FIELDS_DIR = "CaseFields" # NAMES OF ENTITIES @@ -155,6 +157,8 @@ MARKETPLACE_KEY_PACK_METADATA = "marketplaces" EVENT_COLLECTOR = "EventCollector" ASSETS_MODELING_RULE = "assetsmodelingrule" +CASE_LAYOUT_RULE = "caselayoutrule" +CASE_FIELD = "casefield" # Marketplaces @@ -246,6 +250,8 @@ class FileType(str, Enum): ASSETS_MODELING_RULE_SCHEMA = "assetsmodelingruleschema" ASSETS_MODELING_RULE = "assetsmodelingrule" ASSETS_MODELING_RULE_XIF = "assetsmodelingrulexif" + CASE_LAYOUT_RULE = "caselayoutrule" + CASE_FIELD = "xsiamncidentfield" RN_HEADER_BY_FILE_TYPE = { @@ -284,6 +290,8 @@ class FileType(str, Enum): FileType.XDRC_TEMPLATE: "XDRC Templates", FileType.LAYOUT_RULE: "Layout Rules", FileType.ASSETS_MODELING_RULE: "Assets Modeling Rules", + FileType.CASE_LAYOUT_RULE: "Case Layout Rules", + FileType.CASE_FIELD: "Case Fields", } FILE_TYPE_BY_RN_HEADER = { @@ -326,6 +334,9 @@ class FileType(str, Enum): FileType.OLD_CLASSIFIER.value: CLASSIFIERS_DIR, FileType.LAYOUT_RULE.value: LAYOUT_RULES_DIR, FileType.ASSETS_MODELING_RULE.value: ASSETS_MODELING_RULES_DIR, + FileType.CASE_LAYOUT_RULE.value: CASE_LAYOUT_RULES_DIR, + FileType.CASE_FIELD.value: CASE_FIELDS_DIR, + } SIEM_ONLY_ENTITIES = [ @@ -338,6 +349,10 @@ class FileType(str, Enum): FileType.XDRC_TEMPLATE.value, FileType.LAYOUT_RULE.value, FileType.ASSETS_MODELING_RULE, + FileType.CASE_LAYOUT_RULE.value, + FileType.CASE_FIELD.value, + + ] CONTENT_FILE_ENDINGS = ["py", "yml", "png", "json", "md"] @@ -384,6 +399,8 @@ class FileType(str, Enum): XSIAM_REPORTS_DIR, TRIGGER_DIR, ASSETS_MODELING_RULES_DIR, + CASE_LAYOUT_RULES_DIR, + CASE_FIELDS_DIR, ] CONTENT_ENTITY_UPLOAD_ORDER = [ @@ -914,6 +931,8 @@ class FileType(str, Enum): XDRC_TEMPLATE_PREFIX = "xdrctemplate" LAYOUT_RULE_PREFIX = "layoutrule" ASSETS_MODELING_RULE_ID_SUFFIX = "AssetsModelingRule" +# TODO + # Pack Unique Files PACKS_WHITELIST_FILE_NAME = ".secrets-ignore" @@ -1400,6 +1419,7 @@ class PB_Status: "trigger": [TRIGGER_JSON_REGEX], "xdrctemplate": [XDRC_TEMPLATE_JSON_REGEX], LAYOUT_RULE: JSON_ALL_LAYOUT_RULES_REGEXES, + } EXTERNAL_PR_REGEX = r"^pull/(\d+)$" @@ -1573,6 +1593,8 @@ class PB_Status: FileType.LAYOUT_RULE: "6.10.0", FileType.XSIAM_DASHBOARD: "6.10.0", FileType.ASSETS_MODELING_RULE: "6.2.1", + FileType.CASE_LAYOUT_RULE: "8.7.0", + FileType.CASE_FIELD: "8.7.0", } DEFAULT_PYTHON_VERSION = "3.10" @@ -1862,6 +1884,9 @@ class ContentItems(Enum): XDRC_TEMPLATE = "xdrctemplate" LAYOUT_RULES = "layoutrule" ASSETS_MODELING_RULES = "assetsmodelingrule" + CASE_LAYOUT_RULES = "caselayoutrule" + CASE_FIELDS = "casefield" + CONTENT_ITEMS_DISPLAY_FOLDERS = { @@ -1890,6 +1915,8 @@ class ContentItems(Enum): XDRC_TEMPLATE_DIR, LAYOUT_RULES_DIR, ASSETS_MODELING_RULES_DIR, + CASE_LAYOUT_RULES_DIR, + CASE_FIELDS_DIR, } diff --git a/demisto_sdk/commands/common/schemas/casefield.yml b/demisto_sdk/commands/common/schemas/casefield.yml new file mode 100644 index 00000000000..55703f43e5e --- /dev/null +++ b/demisto_sdk/commands/common/schemas/casefield.yml @@ -0,0 +1,180 @@ +type: map +mapping: + fromVersion: + type: str + toVersion: + type: str + id: + type: str + required: true + version: + type: number + modified: + type: str + name: + type: str + required: true + name_x2: + type: str + prettyName: + type: str + required: false + ownerOnly: + type: bool + placeholder: + type: str + description: + type: str + fieldCalcScript: + type: str + cliName: + type: str + required: true + cliName_x2: + type: str + type: + type: str + required: true + closeForm: + type: bool + editForm: + type: bool + required: + type: bool + script: + type: str + neverSetAsRequired: + type: bool + isReadOnly: + type: bool + selectValues: + type: any + validationRegex: + type: str + useAsKpi: + type: bool + locked: + type: bool + system: + type: bool + runScriptAfterIncUpdate: + type: bool + group: + type: number + hidden: + type: bool + columns: + type: any + defaultRows: + type: any + threshold: + type: number + sla: + type: number + caseInsensitive: + type: bool + breachScript: + type: str + associatedTypes: + type: any + systemAssociatedTypes: + type: any + associatedToAll: + type: bool + unmapped: + type: bool + content: + type: bool + unsearchable: + type: bool + extractIndicatorTypesIDs: + type: any + isExtractingSpecificIndicatorTypes: + type: bool + itemVersion: + type: str + propagationLabels: + type: any + toServerVersion: + type: str + openEnded: + type: bool + template: + type: str + marketplaces: + type: seq + sequence: + - type: str + enum: ['xsoar', 'marketplacev2', 'xpanse', 'xsoar_saas', 'xsoar_on_prem'] + Aliases: + type: seq + sequence: + - include: aliases_schema + x2_fields: + type: str + aliasTo: + type: str + + name:xsoar: + type: str + name:marketplacev2: + type: str + name:xpanse: + type: str + name:xsoar_saas: + type: str + name:xsoar_on_prem: + type: str + description:xsoar: + type: str + description:marketplacev2: + type: str + description:xpanse: + type: str + description:xsoar_saas: + type: str + description:xsoar_on_prem: + type: str + required:xsoar: + type: bool + required:marketplacev2: + type: bool + required:xpanse: + type: bool + required:xsoar_saas: + type: bool + required:xsoar_on_prem: + type: bool + id:xsoar: + type: str + id:marketplacev2: + type: str + id:xpanse: + type: str + id:xsoar_saas: + type: str + id:xsoar_on_prem: + type: str +schema;aliases_schema: + type: map + mapping: + cliName: + type: str + required: true + name: + type: str + required: true + type: + type: str + required: true + enum: ['shortText', 'longText', 'boolean', 'singleSelect', 'multiSelect', 'date', 'user', 'role', 'number', 'attachments', 'tagsSelect', 'internal', 'url', 'markdown', 'grid', 'timer', 'html'] + name:xsoar: + type: str + name:marketplacev2: + type: str + name:xpanse: + type: str + name:xsoar_saas: + type: str + name:xsoar_on_prem: + type: str diff --git a/demisto_sdk/commands/common/schemas/caselayoutrule.yml b/demisto_sdk/commands/common/schemas/caselayoutrule.yml new file mode 100644 index 00000000000..574ae42c6ee --- /dev/null +++ b/demisto_sdk/commands/common/schemas/caselayoutrule.yml @@ -0,0 +1,83 @@ +type: map +mapping: + rule_id: + type: str + required: true + rule_name: + type: str + required: true + layout_id: + type: str + required: true + fromVersion: + type: str + required: true + description: + type: str + required: false + alerts_filter: + type: map + mapping: + filter: + type: map + mapping: + OR: + type: seq + required: false + sequence: + - include: filter_schema + - include: or_schema + - include: and_schema + AND: + type: seq + required: false + sequence: + - include: filter_schema + - include: or_schema + - include: and_schema + + + description:xsoar: + type: str + description:marketplacev2: + type: str + description:xpanse: + type: str + description:xsoar_saas: + type: str + description:xsoar_on_prem: + type: str +schema;filter_schema: + type: map + mapping: + SEARCH_FIELD: + type: str + required: true + SEARCH_TYPE: + type: str + required: true + SEARCH_VALUE: + type: str + required: true + +schema;and_schema: + type: map + mapping: + AND: + type: seq + required: false + sequence: + - include: filter_schema + - include: or_schema + - include: and_schema + +schema;or_schema: + type: map + mapping: + OR: + type: seq + required: false + sequence: + - include: filter_schema + - include: or_schema + - include: and_schema diff --git a/demisto_sdk/commands/content_graph/common.py b/demisto_sdk/commands/content_graph/common.py index 7c71b572c43..23d00bed8e3 100644 --- a/demisto_sdk/commands/content_graph/common.py +++ b/demisto_sdk/commands/content_graph/common.py @@ -99,6 +99,8 @@ class ContentType(str, enum.Enum): XDRC_TEMPLATE = "XDRCTemplate" LAYOUT_RULE = "LayoutRule" ASSETS_MODELING_RULE = "AssetsModelingRule" + CASE_LAYOUT_RULE = "CaseLayoutRule" + CASE_FIELD = "CaseIncidentField" @property def labels(self) -> List[str]: diff --git a/demisto_sdk/commands/content_graph/objects/__init__.py b/demisto_sdk/commands/content_graph/objects/__init__.py index a92c25a8e05..492421e8c3b 100644 --- a/demisto_sdk/commands/content_graph/objects/__init__.py +++ b/demisto_sdk/commands/content_graph/objects/__init__.py @@ -36,12 +36,16 @@ "LayoutRule", "PreProcessRule", "AssetsModelingRule", + "CaseField", + "CaseLayoutRule", ] from demisto_sdk.commands.content_graph.objects.assets_modeling_rule import ( AssetsModelingRule, ) from demisto_sdk.commands.content_graph.objects.base_playbook import BasePlaybook from demisto_sdk.commands.content_graph.objects.base_script import BaseScript +from demisto_sdk.commands.content_graph.objects.case_field import CaseField +from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule from demisto_sdk.commands.content_graph.objects.classifier import Classifier from demisto_sdk.commands.content_graph.objects.correlation_rule import CorrelationRule from demisto_sdk.commands.content_graph.objects.dashboard import Dashboard diff --git a/demisto_sdk/commands/content_graph/objects/case_field.py b/demisto_sdk/commands/content_graph/objects/case_field.py new file mode 100644 index 00000000000..a23c22804e3 --- /dev/null +++ b/demisto_sdk/commands/content_graph/objects/case_field.py @@ -0,0 +1,34 @@ +from pathlib import Path +from typing import Optional + +from pydantic import Field + +from demisto_sdk.commands.common.constants import MarketplaceVersions +from demisto_sdk.commands.common.handlers import JSON_Handler +from demisto_sdk.commands.content_graph.common import ContentType +from demisto_sdk.commands.content_graph.objects.indicator_incident_field import ( + IndicatorIncidentField, +) + +json = JSON_Handler() + + +class CaseField(IndicatorIncidentField, content_type=ContentType.INCIDENT_FIELD): # type: ignore[call-arg] + associated_to_all: bool = Field(False, alias="associatedToAll") + def summary( + self, + marketplace: Optional[MarketplaceVersions] = None, + incident_to_alert: bool = False, + ) -> dict: + summary = super().summary(marketplace, incident_to_alert) + summary["id"] = f"case_{self.object_id}" + return summary + + @staticmethod + def match(_dict: dict, path: Path) -> bool: + if "id" in _dict: + if isinstance(_dict["id"], str): + _id = _dict["id"].lower() + if _id.startswith("case"): + return True + return False \ No newline at end of file diff --git a/demisto_sdk/commands/content_graph/objects/case_layout_rule.py b/demisto_sdk/commands/content_graph/objects/case_layout_rule.py new file mode 100644 index 00000000000..e09910ea053 --- /dev/null +++ b/demisto_sdk/commands/content_graph/objects/case_layout_rule.py @@ -0,0 +1,29 @@ +from pathlib import Path +from typing import Set + +from demisto_sdk.commands.content_graph.common import ContentType +from demisto_sdk.commands.content_graph.objects.content_item_xsiam import ( + ContentItemXSIAM, +) + + +class CaseLayoutRule(ContentItemXSIAM, content_type=ContentType.XSIAM_INCIDENT_LAYOUT_RULE): # type: ignore[call-arg] + layout_id: str + + def metadata_fields(self) -> Set[str]: + return ( + super() + .metadata_fields() + .union( + { + "rule_name", + "layout_id", + } + ) + ) + + @staticmethod + def match(_dict: dict, path: Path) -> bool: + if "rule_id" in _dict and path.suffix == ".json": + return True + return False \ No newline at end of file diff --git a/demisto_sdk/commands/content_graph/objects/pack_content_items.py b/demisto_sdk/commands/content_graph/objects/pack_content_items.py index 1449a4bd631..608fa5694d4 100644 --- a/demisto_sdk/commands/content_graph/objects/pack_content_items.py +++ b/demisto_sdk/commands/content_graph/objects/pack_content_items.py @@ -39,11 +39,15 @@ from demisto_sdk.commands.content_graph.objects.wizard import Wizard from demisto_sdk.commands.content_graph.objects.xdrc_template import XDRCTemplate from demisto_sdk.commands.content_graph.objects.xsiam_dashboard import XSIAMDashboard +from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule +from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.xsiam_report import XSIAMReport class PackContentItems(BaseModel): # The alias is for marshalling purposes + case_field: List[CaseField] = Field([], alias=ContentType.CASE_FIELD.value) + case_layout_rule: List[CaseLayoutRule] = Field([], alias=ContentType.CASE_LAYOUT_RULE.value) classifier: List[Classifier] = Field([], alias=ContentType.CLASSIFIER.value) correlation_rule: List[CorrelationRule] = Field( [], alias=ContentType.CORRELATION_RULE.value diff --git a/demisto_sdk/commands/content_graph/parsers/case_field.py b/demisto_sdk/commands/content_graph/parsers/case_field.py new file mode 100644 index 00000000000..e601bdf7479 --- /dev/null +++ b/demisto_sdk/commands/content_graph/parsers/case_field.py @@ -0,0 +1,53 @@ +from functools import cached_property +from pathlib import Path +from typing import List, Optional, Set + +from demisto_sdk.commands.common.constants import MarketplaceVersions +from demisto_sdk.commands.common.tools import get_value +from demisto_sdk.commands.content_graph.common import ContentType +from demisto_sdk.commands.content_graph.parsers.json_content_item import ( + JSONContentItemParser, +) + + +class CaseFieldParser( + JSONContentItemParser, content_type=ContentType.CASE_FIELD +): + def __init__( + self, + path: Path, + pack_marketplaces: List[MarketplaceVersions], + git_sha: Optional[str] = None, + ) -> None: + super().__init__(path, pack_marketplaces, git_sha=git_sha) + self.field_type = self.json_data.get("type") + self.associated_to_all = self.json_data.get("associatedToAll") + self.content = self.json_data.get("content") + self.system = self.json_data.get("system") + self.group = self.json_data.get("group") + + self.connect_to_dependencies() + + @cached_property + def field_mapping(self): + super().field_mapping.update({"object_id": "id", "cli_name": "cliName"}) + return super().field_mapping + + @property + def cli_name(self) -> Optional[str]: + return get_value(self.json_data, self.field_mapping.get("cli_name", "")) + + @property + def object_id(self) -> Optional[str]: + id = get_value(self.json_data, self.field_mapping.get("object_id", "")) + return (id.lower().replace("_", "").replace("-", ""))[len("case") :] + + @property + def supported_marketplaces(self) -> Set[MarketplaceVersions]: + return { + MarketplaceVersions.MarketplaceV2, + } + + def connect_to_dependencies(self) -> None: + """TBD in case we add case types""" + pass diff --git a/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py b/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py new file mode 100644 index 00000000000..8f18f9eac62 --- /dev/null +++ b/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py @@ -0,0 +1,8 @@ +from demisto_sdk.commands.content_graph.common import ContentType +from demisto_sdk.commands.content_graph.parsers.layout_rule import LayoutRuleParser + + +class CaseLayoutRuleParser( + LayoutRuleParser, content_type=ContentType.CASE_LAYOUT_RULE +): + pass From 167a07a26b9b2988f05062ab4e023a7c5208b82d Mon Sep 17 00:00:00 2001 From: yucohen Date: Wed, 17 Apr 2024 23:04:50 +0300 Subject: [PATCH 02/33] fixed non mach content item type --- demisto_sdk/commands/content_graph/objects/case_field.py | 2 +- demisto_sdk/commands/content_graph/objects/case_layout_rule.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/demisto_sdk/commands/content_graph/objects/case_field.py b/demisto_sdk/commands/content_graph/objects/case_field.py index a23c22804e3..f83d3f259ca 100644 --- a/demisto_sdk/commands/content_graph/objects/case_field.py +++ b/demisto_sdk/commands/content_graph/objects/case_field.py @@ -13,7 +13,7 @@ json = JSON_Handler() -class CaseField(IndicatorIncidentField, content_type=ContentType.INCIDENT_FIELD): # type: ignore[call-arg] +class CaseField(IndicatorIncidentField, content_type=ContentType.CASE_FIELD): # type: ignore[call-arg] associated_to_all: bool = Field(False, alias="associatedToAll") def summary( self, diff --git a/demisto_sdk/commands/content_graph/objects/case_layout_rule.py b/demisto_sdk/commands/content_graph/objects/case_layout_rule.py index e09910ea053..2068549b792 100644 --- a/demisto_sdk/commands/content_graph/objects/case_layout_rule.py +++ b/demisto_sdk/commands/content_graph/objects/case_layout_rule.py @@ -7,7 +7,7 @@ ) -class CaseLayoutRule(ContentItemXSIAM, content_type=ContentType.XSIAM_INCIDENT_LAYOUT_RULE): # type: ignore[call-arg] +class CaseLayoutRule(ContentItemXSIAM, content_type=ContentType.CASE_LAYOUT_RULE): # type: ignore[call-arg] layout_id: str def metadata_fields(self) -> Set[str]: From 5f0e0cf9ce1152d206cbbea30765ac2f9e86cb2f Mon Sep 17 00:00:00 2001 From: yucohen Date: Thu, 18 Apr 2024 11:12:36 +0300 Subject: [PATCH 03/33] fixed group options in layouts --- demisto_sdk/commands/content_graph/parsers/layout.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/demisto_sdk/commands/content_graph/parsers/layout.py b/demisto_sdk/commands/content_graph/parsers/layout.py index b1ffc2d8fbb..d7e10e209c7 100644 --- a/demisto_sdk/commands/content_graph/parsers/layout.py +++ b/demisto_sdk/commands/content_graph/parsers/layout.py @@ -57,9 +57,12 @@ def connect_to_dependencies(self) -> None: dependency_field_type = ContentType.INCIDENT_FIELD elif self.group == "indicator": dependency_field_type = ContentType.INDICATOR_FIELD + elif self.group == "case": + dependency_field_type = ContentType.CASE_FIELD + else: raise ValueError( - f'{self.node_id}: Unknown group "{self.group}" - Expected "incident" or "indicator".' + f'{self.node_id}: Unknown group "{self.group}" - Expected "incident", "indicator" or "case".' ) for field in self.get_field_ids_recursively(): From a3da5eb792863b53337afe7e0701fe7524767ddb Mon Sep 17 00:00:00 2001 From: yucohen Date: Thu, 18 Apr 2024 12:58:47 +0300 Subject: [PATCH 04/33] fixed mps --- demisto_sdk/commands/content_graph/parsers/layout.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/demisto_sdk/commands/content_graph/parsers/layout.py b/demisto_sdk/commands/content_graph/parsers/layout.py index d7e10e209c7..9a24cbc0476 100644 --- a/demisto_sdk/commands/content_graph/parsers/layout.py +++ b/demisto_sdk/commands/content_graph/parsers/layout.py @@ -44,6 +44,8 @@ def __init__( @property def supported_marketplaces(self) -> Set[MarketplaceVersions]: + if self.group == "case": + return {MarketplaceVersions.MarketplaceV2} return { MarketplaceVersions.XSOAR, MarketplaceVersions.MarketplaceV2, From 662e22f6b8aa6052d178d99962215ae20bcd6745 Mon Sep 17 00:00:00 2001 From: yucohen Date: Thu, 18 Apr 2024 14:22:20 +0300 Subject: [PATCH 05/33] added parsers import --- demisto_sdk/commands/content_graph/parsers/__init__.py | 4 ++++ demisto_sdk/commands/content_graph/parsers/case_field.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/demisto_sdk/commands/content_graph/parsers/__init__.py b/demisto_sdk/commands/content_graph/parsers/__init__.py index 800df01be78..9f463a93837 100644 --- a/demisto_sdk/commands/content_graph/parsers/__init__.py +++ b/demisto_sdk/commands/content_graph/parsers/__init__.py @@ -34,6 +34,8 @@ "LayoutRuleParser", "PreProcessRuleParser", "AssetsModelingRuleParser", + "CaseLayoutRuleParser", + "CaseFieldParser", ] from demisto_sdk.commands.content_graph.parsers.assets_modeling_rule import ( @@ -41,6 +43,8 @@ ) from demisto_sdk.commands.content_graph.parsers.base_playbook import BasePlaybookParser from demisto_sdk.commands.content_graph.parsers.base_script import BaseScriptParser +from demisto_sdk.commands.content_graph.parsers.case_field import CaseFieldParser +from demisto_sdk.commands.content_graph.parsers.case_layout_rule import CaseLayoutRuleParser from demisto_sdk.commands.content_graph.parsers.classifier import ClassifierParser from demisto_sdk.commands.content_graph.parsers.correlation_rule import ( CorrelationRuleParser, diff --git a/demisto_sdk/commands/content_graph/parsers/case_field.py b/demisto_sdk/commands/content_graph/parsers/case_field.py index e601bdf7479..cfa6703b874 100644 --- a/demisto_sdk/commands/content_graph/parsers/case_field.py +++ b/demisto_sdk/commands/content_graph/parsers/case_field.py @@ -40,7 +40,7 @@ def cli_name(self) -> Optional[str]: @property def object_id(self) -> Optional[str]: id = get_value(self.json_data, self.field_mapping.get("object_id", "")) - return (id.lower().replace("_", "").replace("-", ""))[len("case") :] + return (id.lower().replace("_", "").replace("-", ""))[len("case"):] @property def supported_marketplaces(self) -> Set[MarketplaceVersions]: From 80f4bde5628f8bc8bdafc4e1f395089b8979fda9 Mon Sep 17 00:00:00 2001 From: yucohen Date: Thu, 18 Apr 2024 14:33:01 +0300 Subject: [PATCH 06/33] added new pack items to pack --- demisto_sdk/commands/content_graph/parsers/pack.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/demisto_sdk/commands/content_graph/parsers/pack.py b/demisto_sdk/commands/content_graph/parsers/pack.py index c7e9863648c..56a597db56d 100644 --- a/demisto_sdk/commands/content_graph/parsers/pack.py +++ b/demisto_sdk/commands/content_graph/parsers/pack.py @@ -44,6 +44,8 @@ class PackContentItems: """A class that holds all pack's content items in lists by their types.""" def __init__(self) -> None: + self.case_field = ContentItemsList(content_type=ContentType.CASE_FIELD) + self.case_layout_rule = ContentItemsList(content_type=ContentType.CASE_LAYOUT_RULE) self.classifier = ContentItemsList(content_type=ContentType.CLASSIFIER) self.correlation_rule = ContentItemsList( content_type=ContentType.CORRELATION_RULE From 0a95a864753b6cfc7121e363dca65259d56a834c Mon Sep 17 00:00:00 2001 From: yucohen Date: Thu, 18 Apr 2024 16:11:24 +0300 Subject: [PATCH 07/33] renamed --- demisto_sdk/commands/common/constants.py | 2 +- demisto_sdk/commands/content_graph/common.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/demisto_sdk/commands/common/constants.py b/demisto_sdk/commands/common/constants.py index ee8f0d84b3b..8e9a590c7ec 100644 --- a/demisto_sdk/commands/common/constants.py +++ b/demisto_sdk/commands/common/constants.py @@ -251,7 +251,7 @@ class FileType(str, Enum): ASSETS_MODELING_RULE = "assetsmodelingrule" ASSETS_MODELING_RULE_XIF = "assetsmodelingrulexif" CASE_LAYOUT_RULE = "caselayoutrule" - CASE_FIELD = "xsiamncidentfield" + CASE_FIELD = "casefield" RN_HEADER_BY_FILE_TYPE = { diff --git a/demisto_sdk/commands/content_graph/common.py b/demisto_sdk/commands/content_graph/common.py index 23d00bed8e3..5cb7f87891b 100644 --- a/demisto_sdk/commands/content_graph/common.py +++ b/demisto_sdk/commands/content_graph/common.py @@ -100,7 +100,7 @@ class ContentType(str, enum.Enum): LAYOUT_RULE = "LayoutRule" ASSETS_MODELING_RULE = "AssetsModelingRule" CASE_LAYOUT_RULE = "CaseLayoutRule" - CASE_FIELD = "CaseIncidentField" + CASE_FIELD = "CaseField" @property def labels(self) -> List[str]: From 5557a8108113133063e813987232236d0437171d Mon Sep 17 00:00:00 2001 From: yucohen Date: Wed, 24 Apr 2024 15:50:16 +0300 Subject: [PATCH 08/33] added group to metadata --- demisto_sdk/commands/content_graph/common.py | 2 ++ .../commands/content_graph/objects/case_field.py | 9 +++++---- .../commands/content_graph/objects/layout.py | 14 +++++++++++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/demisto_sdk/commands/content_graph/common.py b/demisto_sdk/commands/content_graph/common.py index 5cb7f87891b..8668c61465b 100644 --- a/demisto_sdk/commands/content_graph/common.py +++ b/demisto_sdk/commands/content_graph/common.py @@ -128,6 +128,8 @@ def server_name(self) -> str: return "reputation" elif self == ContentType.INDICATOR_FIELD: return "incidentfield-indicatorfield" + elif self == ContentType.CASE_FIELD: + return "casefield" elif self == ContentType.LAYOUT: return "layoutscontainer" elif self == ContentType.PREPROCESS_RULE: diff --git a/demisto_sdk/commands/content_graph/objects/case_field.py b/demisto_sdk/commands/content_graph/objects/case_field.py index f83d3f259ca..a5c0645643a 100644 --- a/demisto_sdk/commands/content_graph/objects/case_field.py +++ b/demisto_sdk/commands/content_graph/objects/case_field.py @@ -15,10 +15,11 @@ class CaseField(IndicatorIncidentField, content_type=ContentType.CASE_FIELD): # type: ignore[call-arg] associated_to_all: bool = Field(False, alias="associatedToAll") + def summary( - self, - marketplace: Optional[MarketplaceVersions] = None, - incident_to_alert: bool = False, + self, + marketplace: Optional[MarketplaceVersions] = None, + incident_to_alert: bool = False, ) -> dict: summary = super().summary(marketplace, incident_to_alert) summary["id"] = f"case_{self.object_id}" @@ -31,4 +32,4 @@ def match(_dict: dict, path: Path) -> bool: _id = _dict["id"].lower() if _id.startswith("case"): return True - return False \ No newline at end of file + return False diff --git a/demisto_sdk/commands/content_graph/objects/layout.py b/demisto_sdk/commands/content_graph/objects/layout.py index 8be4b832b81..4a33b083ee9 100644 --- a/demisto_sdk/commands/content_graph/objects/layout.py +++ b/demisto_sdk/commands/content_graph/objects/layout.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Callable, List, Optional, Union +from typing import Callable, List, Optional, Union, Set import demisto_client from pydantic import Field @@ -59,10 +59,22 @@ def match(_dict: dict, path: Path) -> bool: isinstance(_dict["id"], str) and not _dict["id"].startswith("incident") and not _dict["id"].startswith("indicator") + and not _dict["id"].startswith("case") ): return True return False + def metadata_fields(self) -> Set[str]: + return ( + super() + .metadata_fields() + .union( + { + "group", + } + ) + ) + def replace_layout_incident_alert(data: dict) -> dict: """ From efe68df45d4b4e294a0980988372853c06f6ea5b Mon Sep 17 00:00:00 2001 From: yucohen Date: Thu, 25 Apr 2024 14:52:35 +0300 Subject: [PATCH 09/33] fixed some layouts validations --- demisto_sdk/commands/common/schemas/layoutscontainer.yml | 2 +- demisto_sdk/commands/format/update_layout.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/demisto_sdk/commands/common/schemas/layoutscontainer.yml b/demisto_sdk/commands/common/schemas/layoutscontainer.yml index c34dc4045e1..2f3b13c35ce 100644 --- a/demisto_sdk/commands/common/schemas/layoutscontainer.yml +++ b/demisto_sdk/commands/common/schemas/layoutscontainer.yml @@ -6,7 +6,7 @@ mapping: group: type: str required: true - enum: ['incident', 'indicator'] + enum: ['incident', 'indicator', 'case'] definitionId: type: str version: diff --git a/demisto_sdk/commands/format/update_layout.py b/demisto_sdk/commands/format/update_layout.py index bd0b531266a..bc3909df7d0 100644 --- a/demisto_sdk/commands/format/update_layout.py +++ b/demisto_sdk/commands/format/update_layout.py @@ -189,7 +189,7 @@ def set_layout_key(self): } def set_group_field(self): - if self.data["group"] != "incident" and self.data["group"] != "indicator": + if self.data["group"] != "incident" and self.data["group"] != "indicator" and self.data["group"] != "case": logger.info( "[red]No group is specified for this layout, would you like me to update for you? [Y/n][/red]" ) @@ -200,13 +200,15 @@ def set_group_field(self): return logger.info( - "[yellow]Please specify the desired group: incident or indicator[/yellow]" + "[yellow]Please specify the desired group: incident, indicator or case[/yellow]" ) user_desired_group = input() if re.match(r"(^incident$)", user_desired_group, re.IGNORECASE): self.data["group"] = "incident" elif re.match(r"(^indicator$)", user_desired_group, re.IGNORECASE): self.data["group"] = "indicator" + elif re.match(r"(^case$)", user_desired_group, re.IGNORECASE): + self.data["group"] = "case" else: logger.info("[red]Group is not valid[/red]") From 91636dce84ed0e5b65e8d706c968622e9cd87321 Mon Sep 17 00:00:00 2001 From: yucohen Date: Tue, 30 Apr 2024 17:37:39 +0300 Subject: [PATCH 10/33] testing generic --- demisto_sdk/commands/content_graph/objects/generic_field.py | 2 +- .../commands/content_graph/parsers/generic_definition.py | 1 + demisto_sdk/commands/content_graph/parsers/generic_field.py | 1 + demisto_sdk/commands/content_graph/parsers/generic_module.py | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/demisto_sdk/commands/content_graph/objects/generic_field.py b/demisto_sdk/commands/content_graph/objects/generic_field.py index a97543f0a04..1fd23fe2774 100644 --- a/demisto_sdk/commands/content_graph/objects/generic_field.py +++ b/demisto_sdk/commands/content_graph/objects/generic_field.py @@ -34,7 +34,7 @@ def match(_dict: dict, path: Path) -> bool: if ( "definitionId" in _dict and _dict["definitionId"] - and _dict["definitionId"].lower() not in ["incident", "indicator"] + and _dict["definitionId"].lower() not in ["incident", "indicator", "case"] and path.suffix == ".json" ): # we don't want to match the generic type diff --git a/demisto_sdk/commands/content_graph/parsers/generic_definition.py b/demisto_sdk/commands/content_graph/parsers/generic_definition.py index 662bd695234..eb6f3adc735 100644 --- a/demisto_sdk/commands/content_graph/parsers/generic_definition.py +++ b/demisto_sdk/commands/content_graph/parsers/generic_definition.py @@ -25,4 +25,5 @@ def supported_marketplaces(self) -> Set[MarketplaceVersions]: MarketplaceVersions.XSOAR, MarketplaceVersions.XSOAR_SAAS, MarketplaceVersions.XSOAR_ON_PREM, + MarketplaceVersions.MarketplaceV2, } diff --git a/demisto_sdk/commands/content_graph/parsers/generic_field.py b/demisto_sdk/commands/content_graph/parsers/generic_field.py index 0616527169b..a9682046d7d 100644 --- a/demisto_sdk/commands/content_graph/parsers/generic_field.py +++ b/demisto_sdk/commands/content_graph/parsers/generic_field.py @@ -33,6 +33,7 @@ def supported_marketplaces(self) -> Set[MarketplaceVersions]: MarketplaceVersions.XSOAR, MarketplaceVersions.XSOAR_SAAS, MarketplaceVersions.XSOAR_ON_PREM, + MarketplaceVersions.MarketplaceV2, } @property diff --git a/demisto_sdk/commands/content_graph/parsers/generic_module.py b/demisto_sdk/commands/content_graph/parsers/generic_module.py index 7be49e0b494..93185e3c9c9 100644 --- a/demisto_sdk/commands/content_graph/parsers/generic_module.py +++ b/demisto_sdk/commands/content_graph/parsers/generic_module.py @@ -26,4 +26,5 @@ def supported_marketplaces(self) -> Set[MarketplaceVersions]: MarketplaceVersions.XSOAR, MarketplaceVersions.XSOAR_SAAS, MarketplaceVersions.XSOAR_ON_PREM, + MarketplaceVersions.MarketplaceV2, } From 8d40cfea0c30de210c6966894330101f1c87deea Mon Sep 17 00:00:00 2001 From: yucohen Date: Thu, 9 May 2024 16:30:14 +0300 Subject: [PATCH 11/33] added case layout --- .../commands/common/schemas/caselayoutrule.yml | 2 +- demisto_sdk/commands/content_graph/common.py | 9 ++++++--- .../content_graph/objects/case_layout.py | 17 +++++++++++++++++ .../commands/content_graph/objects/layout.py | 1 - .../content_graph/objects/pack_content_items.py | 6 ++++-- .../content_graph/parsers/case_layout.py | 14 ++++++++++++++ .../commands/content_graph/parsers/layout.py | 6 +++--- 7 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 demisto_sdk/commands/content_graph/objects/case_layout.py create mode 100644 demisto_sdk/commands/content_graph/parsers/case_layout.py diff --git a/demisto_sdk/commands/common/schemas/caselayoutrule.yml b/demisto_sdk/commands/common/schemas/caselayoutrule.yml index 574ae42c6ee..f0c5948e338 100644 --- a/demisto_sdk/commands/common/schemas/caselayoutrule.yml +++ b/demisto_sdk/commands/common/schemas/caselayoutrule.yml @@ -15,7 +15,7 @@ mapping: description: type: str required: false - alerts_filter: + incidents_filter: type: map mapping: filter: diff --git a/demisto_sdk/commands/content_graph/common.py b/demisto_sdk/commands/content_graph/common.py index 8668c61465b..b7c2771ab08 100644 --- a/demisto_sdk/commands/content_graph/common.py +++ b/demisto_sdk/commands/content_graph/common.py @@ -101,6 +101,7 @@ class ContentType(str, enum.Enum): ASSETS_MODELING_RULE = "AssetsModelingRule" CASE_LAYOUT_RULE = "CaseLayoutRule" CASE_FIELD = "CaseField" + CASE_LAYOUT = "CaseLayout" @property def labels(self) -> List[str]: @@ -130,7 +131,7 @@ def server_name(self) -> str: return "incidentfield-indicatorfield" elif self == ContentType.CASE_FIELD: return "casefield" - elif self == ContentType.LAYOUT: + elif self == ContentType.LAYOUT or self == ContentType.CASE_LAYOUT: return "layoutscontainer" elif self == ContentType.PREPROCESS_RULE: return "preprocessrule" @@ -149,7 +150,7 @@ def metadata_name(self) -> str: return "automation" elif self == ContentType.INDICATOR_TYPE: return "reputation" - elif self == ContentType.LAYOUT: + elif self == ContentType.LAYOUT or self == ContentType.CASE_LAYOUT: return "layoutscontainer" elif self == ContentType.TEST_PLAYBOOK: return ContentType.PLAYBOOK.server_name @@ -165,7 +166,7 @@ def metadata_display_name(self) -> str: return "Reputation" elif self == ContentType.MAPPER: return "Classifier" - elif self == ContentType.LAYOUT: + elif self == ContentType.LAYOUT or self == ContentType.CASE_LAYOUT: return "Layouts Container" else: return re.sub(r"([a-z](?=[A-Z])|[A-Z](?=[A-Z][a-z]))", r"\1 ", self.value) @@ -205,6 +206,8 @@ def folders() -> List[str]: def as_folder(self) -> str: if self == ContentType.MAPPER: return f"{ContentType.CLASSIFIER}s" + elif self == ContentType.CASE_LAYOUT: + return f"{ContentType.LAYOUT}s" return f"{self.value}s" @staticmethod diff --git a/demisto_sdk/commands/content_graph/objects/case_layout.py b/demisto_sdk/commands/content_graph/objects/case_layout.py new file mode 100644 index 00000000000..dd2870241fe --- /dev/null +++ b/demisto_sdk/commands/content_graph/objects/case_layout.py @@ -0,0 +1,17 @@ +from pathlib import Path +from demisto_sdk.commands.content_graph.common import ContentType +from demisto_sdk.commands.content_graph.objects.layout import Layout + + +class CaseLayout(Layout, content_type=ContentType.CASE_LAYOUT): # type: ignore[call-arg] + + @staticmethod + def match(_dict: dict, path: Path) -> bool: + if "group" in _dict and Path(path).suffix == ".json": + if "cliName" not in _dict: + if "id" not in _dict or ( + isinstance(_dict["id"], str) + and not _dict["id"].startswith("case") + ): + return True + return False diff --git a/demisto_sdk/commands/content_graph/objects/layout.py b/demisto_sdk/commands/content_graph/objects/layout.py index 4a33b083ee9..01cda20555d 100644 --- a/demisto_sdk/commands/content_graph/objects/layout.py +++ b/demisto_sdk/commands/content_graph/objects/layout.py @@ -59,7 +59,6 @@ def match(_dict: dict, path: Path) -> bool: isinstance(_dict["id"], str) and not _dict["id"].startswith("incident") and not _dict["id"].startswith("indicator") - and not _dict["id"].startswith("case") ): return True return False diff --git a/demisto_sdk/commands/content_graph/objects/pack_content_items.py b/demisto_sdk/commands/content_graph/objects/pack_content_items.py index 608fa5694d4..f2f96a1d636 100644 --- a/demisto_sdk/commands/content_graph/objects/pack_content_items.py +++ b/demisto_sdk/commands/content_graph/objects/pack_content_items.py @@ -6,6 +6,9 @@ from demisto_sdk.commands.content_graph.objects.assets_modeling_rule import ( AssetsModelingRule, ) +from demisto_sdk.commands.content_graph.objects.case_field import CaseField +from demisto_sdk.commands.content_graph.objects.case_layout import CaseLayout +from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule from demisto_sdk.commands.content_graph.objects.classifier import Classifier from demisto_sdk.commands.content_graph.objects.content_item import ContentItem from demisto_sdk.commands.content_graph.objects.correlation_rule import CorrelationRule @@ -39,14 +42,13 @@ from demisto_sdk.commands.content_graph.objects.wizard import Wizard from demisto_sdk.commands.content_graph.objects.xdrc_template import XDRCTemplate from demisto_sdk.commands.content_graph.objects.xsiam_dashboard import XSIAMDashboard -from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule -from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.xsiam_report import XSIAMReport class PackContentItems(BaseModel): # The alias is for marshalling purposes case_field: List[CaseField] = Field([], alias=ContentType.CASE_FIELD.value) + case_layout: List[CaseLayout] = Field([], alias=ContentType.CASE_LAYOUT.value) case_layout_rule: List[CaseLayoutRule] = Field([], alias=ContentType.CASE_LAYOUT_RULE.value) classifier: List[Classifier] = Field([], alias=ContentType.CLASSIFIER.value) correlation_rule: List[CorrelationRule] = Field( diff --git a/demisto_sdk/commands/content_graph/parsers/case_layout.py b/demisto_sdk/commands/content_graph/parsers/case_layout.py new file mode 100644 index 00000000000..41cfd348e5b --- /dev/null +++ b/demisto_sdk/commands/content_graph/parsers/case_layout.py @@ -0,0 +1,14 @@ +from pathlib import Path +from typing import List, Optional, Set + +from demisto_sdk.commands.common.constants import MarketplaceVersions +from demisto_sdk.commands.content_graph.common import ContentType +from demisto_sdk.commands.content_graph.parsers.layout import ( + LayoutParser, +) + + +class LayoutCaseParser(LayoutParser, content_type=ContentType.CASE_LAYOUT): + @property + def supported_marketplaces(self) -> Set[MarketplaceVersions]: + return {MarketplaceVersions.MarketplaceV2} diff --git a/demisto_sdk/commands/content_graph/parsers/layout.py b/demisto_sdk/commands/content_graph/parsers/layout.py index 9a24cbc0476..cf176e960df 100644 --- a/demisto_sdk/commands/content_graph/parsers/layout.py +++ b/demisto_sdk/commands/content_graph/parsers/layout.py @@ -44,8 +44,6 @@ def __init__( @property def supported_marketplaces(self) -> Set[MarketplaceVersions]: - if self.group == "case": - return {MarketplaceVersions.MarketplaceV2} return { MarketplaceVersions.XSOAR, MarketplaceVersions.MarketplaceV2, @@ -90,7 +88,9 @@ def get_values(current_object): for key, value in current_object.items(): if key == "fieldId" and isinstance(value, str): values.add( - value.replace("incident_", "").replace("indicator_", "") + value.replace("incident_", ""). + replace("indicator_", ""). + replace("case_", "") ) else: get_values(value) From 2c65165421a263ab5584e8655dbc45ff49e6f631 Mon Sep 17 00:00:00 2001 From: yucohen Date: Thu, 9 May 2024 16:50:18 +0300 Subject: [PATCH 12/33] added case layout to init --- demisto_sdk/commands/content_graph/objects/__init__.py | 2 ++ demisto_sdk/commands/content_graph/parsers/__init__.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/demisto_sdk/commands/content_graph/objects/__init__.py b/demisto_sdk/commands/content_graph/objects/__init__.py index 492421e8c3b..fc749117187 100644 --- a/demisto_sdk/commands/content_graph/objects/__init__.py +++ b/demisto_sdk/commands/content_graph/objects/__init__.py @@ -37,6 +37,7 @@ "PreProcessRule", "AssetsModelingRule", "CaseField", + "CaseLayout" "CaseLayoutRule", ] from demisto_sdk.commands.content_graph.objects.assets_modeling_rule import ( @@ -46,6 +47,7 @@ from demisto_sdk.commands.content_graph.objects.base_script import BaseScript from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule +from demisto_sdk.commands.content_graph.objects.case_layout import CaseLayout from demisto_sdk.commands.content_graph.objects.classifier import Classifier from demisto_sdk.commands.content_graph.objects.correlation_rule import CorrelationRule from demisto_sdk.commands.content_graph.objects.dashboard import Dashboard diff --git a/demisto_sdk/commands/content_graph/parsers/__init__.py b/demisto_sdk/commands/content_graph/parsers/__init__.py index 9f463a93837..fe0523380d9 100644 --- a/demisto_sdk/commands/content_graph/parsers/__init__.py +++ b/demisto_sdk/commands/content_graph/parsers/__init__.py @@ -36,6 +36,7 @@ "AssetsModelingRuleParser", "CaseLayoutRuleParser", "CaseFieldParser", + "CaseLayoutParser" ] from demisto_sdk.commands.content_graph.parsers.assets_modeling_rule import ( @@ -45,6 +46,7 @@ from demisto_sdk.commands.content_graph.parsers.base_script import BaseScriptParser from demisto_sdk.commands.content_graph.parsers.case_field import CaseFieldParser from demisto_sdk.commands.content_graph.parsers.case_layout_rule import CaseLayoutRuleParser +from demisto_sdk.commands.content_graph.parsers.case_layout import CaseLayoutParser from demisto_sdk.commands.content_graph.parsers.classifier import ClassifierParser from demisto_sdk.commands.content_graph.parsers.correlation_rule import ( CorrelationRuleParser, From d8709e0eee8b0259edc6a09741a1fb72e2153b9f Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 12 May 2024 09:05:33 +0300 Subject: [PATCH 13/33] case layout to init --- demisto_sdk/commands/content_graph/parsers/case_layout.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demisto_sdk/commands/content_graph/parsers/case_layout.py b/demisto_sdk/commands/content_graph/parsers/case_layout.py index 41cfd348e5b..0b3acf2eba9 100644 --- a/demisto_sdk/commands/content_graph/parsers/case_layout.py +++ b/demisto_sdk/commands/content_graph/parsers/case_layout.py @@ -8,7 +8,7 @@ ) -class LayoutCaseParser(LayoutParser, content_type=ContentType.CASE_LAYOUT): +class CaseLayoutParser(LayoutParser, content_type=ContentType.CASE_LAYOUT): @property def supported_marketplaces(self) -> Set[MarketplaceVersions]: return {MarketplaceVersions.MarketplaceV2} From f9f848d3b8ec0855cbb2b0bcc9341bdbd7670e83 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 12 May 2024 10:44:13 +0300 Subject: [PATCH 14/33] test --- demisto_sdk/commands/content_graph/parsers/pack.py | 1 + 1 file changed, 1 insertion(+) diff --git a/demisto_sdk/commands/content_graph/parsers/pack.py b/demisto_sdk/commands/content_graph/parsers/pack.py index 56a597db56d..133af851198 100644 --- a/demisto_sdk/commands/content_graph/parsers/pack.py +++ b/demisto_sdk/commands/content_graph/parsers/pack.py @@ -45,6 +45,7 @@ class PackContentItems: def __init__(self) -> None: self.case_field = ContentItemsList(content_type=ContentType.CASE_FIELD) + self.case_layout = ContentItemsList(content_type=ContentType.CASE_LAYOUT) self.case_layout_rule = ContentItemsList(content_type=ContentType.CASE_LAYOUT_RULE) self.classifier = ContentItemsList(content_type=ContentType.CLASSIFIER) self.correlation_rule = ContentItemsList( From c1f4b0f76e79b1acd14ecbb52a12e239d354bad2 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 12 May 2024 11:26:58 +0300 Subject: [PATCH 15/33] test --- demisto_sdk/commands/content_graph/common.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/demisto_sdk/commands/content_graph/common.py b/demisto_sdk/commands/content_graph/common.py index 2c51c1b4cf0..1fb8861abff 100644 --- a/demisto_sdk/commands/content_graph/common.py +++ b/demisto_sdk/commands/content_graph/common.py @@ -206,8 +206,6 @@ def folders() -> List[str]: def as_folder(self) -> str: if self == ContentType.MAPPER: return f"{ContentType.CLASSIFIER}s" - elif self == ContentType.CASE_LAYOUT: - return f"{ContentType.LAYOUT}s" return f"{self.value}s" @staticmethod From 4813208d3e6861234f457184436fb3c840a70d36 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 12 May 2024 12:28:26 +0300 Subject: [PATCH 16/33] test for layouts --- demisto_sdk/commands/content_graph/objects/pack.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/demisto_sdk/commands/content_graph/objects/pack.py b/demisto_sdk/commands/content_graph/objects/pack.py index 68da7bac182..9d19717df5f 100644 --- a/demisto_sdk/commands/content_graph/objects/pack.py +++ b/demisto_sdk/commands/content_graph/objects/pack.py @@ -353,6 +353,10 @@ def dump( ): folder = ContentType.TEST_PLAYBOOK.as_folder + # The content structure is different from the server + if folder == "CaseLayouts": + folder = "Layouts" + content_item.dump( dir=path / folder, marketplace=marketplace, From 05c0dff8957033eb850c0936fb1bc1c8f70d2b59 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 12 May 2024 13:41:15 +0300 Subject: [PATCH 17/33] test --- poetry.lock | 521 ++++++++++++++++++++++++++----------------------- pyproject.toml | 78 ++++---- 2 files changed, 323 insertions(+), 276 deletions(-) diff --git a/poetry.lock b/poetry.lock index e7e4fd13034..4f9d8a8843d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -162,22 +162,20 @@ files = [ [[package]] name = "astroid" -version = "2.15.8" +version = "2.9.3" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.6.2" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-2.9.3-py3-none-any.whl", hash = "sha256:506daabe5edffb7e696ad82483ad0228245a9742ed7d2d8c9cdb31537decf9f6"}, + {file = "astroid-2.9.3.tar.gz", hash = "sha256:1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"}, ] [package.dependencies] lazy-object-proxy = ">=1.4.0" -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = [ - {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, -] +setuptools = ">=20.0" +typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} +wrapt = ">=1.11,<1.14" [[package]] name = "asttokens" @@ -229,18 +227,18 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "autopep8" -version = "2.1.0" +version = "1.7.0" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "autopep8-2.1.0-py2.py3-none-any.whl", hash = "sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357"}, - {file = "autopep8-2.1.0.tar.gz", hash = "sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7"}, + {file = "autopep8-1.7.0-py2.py3-none-any.whl", hash = "sha256:6f09e90a2be784317e84dc1add17ebfc7abe3924239957a37e5040e27d812087"}, + {file = "autopep8-1.7.0.tar.gz", hash = "sha256:ca9b1a83e53a7fad65d731dc7a2a2d50aa48f43850407c59f6a1a306c4201142"}, ] [package.dependencies] -pycodestyle = ">=2.11.0" -tomli = {version = "*", markers = "python_version < \"3.11\""} +pycodestyle = ">=2.9.1" +toml = "*" [[package]] name = "backcall" @@ -1064,21 +1062,6 @@ files = [ {file = "dictor-0.1.12.tar.gz", hash = "sha256:6db48375ae1e53dc9ed844e85b38f4e3fbfbf6a4e60beca377515ad14453b91b"}, ] -[[package]] -name = "dill" -version = "0.3.8" -description = "serialize all of Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, -] - -[package.extras] -graph = ["objgraph (>=1.7.2)"] -profile = ["gprof2dot (>=2022.7.29)"] - [[package]] name = "distlib" version = "0.3.8" @@ -1092,24 +1075,23 @@ files = [ [[package]] name = "docker" -version = "6.1.3" +version = "5.0.3" description = "A Python library for the Docker Engine API." optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" files = [ - {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"}, - {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"}, + {file = "docker-5.0.3-py2.py3-none-any.whl", hash = "sha256:7a79bb439e3df59d0a72621775d600bc8bc8b422d285824cb37103eab91d1ce0"}, + {file = "docker-5.0.3.tar.gz", hash = "sha256:d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb"}, ] [package.dependencies] -packaging = ">=14.0" -pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""} -requests = ">=2.26.0" -urllib3 = ">=1.26.0" +pywin32 = {version = "227", markers = "sys_platform == \"win32\""} +requests = ">=2.14.2,<2.18.0 || >2.18.0" websocket-client = ">=0.32.0" [package.extras] -ssh = ["paramiko (>=2.4.3)"] +ssh = ["paramiko (>=2.4.2)"] +tls = ["cryptography (>=3.4.7)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"] [[package]] name = "docopt" @@ -1377,30 +1359,6 @@ files = [ {file = "giturlparse-0.10.0.tar.gz", hash = "sha256:2595ab291d30717cda8474b874c9fd509f1b9802ad7f6968c36a45e4b13eb337"}, ] -[[package]] -name = "google-api-core" -version = "1.34.1" -description = "Google API client core library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "google-api-core-1.34.1.tar.gz", hash = "sha256:3399c92887a97d33038baa4bfd3bf07acc05d474b0171f333e1f641c1364e552"}, - {file = "google_api_core-1.34.1-py3-none-any.whl", hash = "sha256:52bcc9d9937735f8a3986fa0bbf9135ae9cf5393a722387e5eced520e39c774a"}, -] - -[package.dependencies] -google-auth = ">=1.25.0,<3.0dev" -googleapis-common-protos = ">=1.56.2,<2.0dev" -grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} -grpcio-status = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.0.0dev" -requests = ">=2.18.0,<3.0.0dev" - -[package.extras] -grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)"] -grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] -grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] - [[package]] name = "google-api-core" version = "2.19.0" @@ -1415,8 +1373,8 @@ files = [ [package.dependencies] google-auth = ">=2.14.1,<3.0.dev0" googleapis-common-protos = ">=1.56.2,<2.0.dev0" -grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""} -grpcio-status = {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""} +grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} +grpcio-status = {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "extra == \"grpc\""} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" requests = ">=2.18.0,<3.0.0.dev0" @@ -1508,28 +1466,6 @@ grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" -[[package]] -name = "google-cloud-storage" -version = "2.14.0" -description = "Google Cloud Storage API client library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "google-cloud-storage-2.14.0.tar.gz", hash = "sha256:2d23fcf59b55e7b45336729c148bb1c464468c69d5efbaee30f7201dd90eb97e"}, - {file = "google_cloud_storage-2.14.0-py2.py3-none-any.whl", hash = "sha256:8641243bbf2a2042c16a6399551fbb13f062cbc9a2de38d6c0bb5426962e9dbd"}, -] - -[package.dependencies] -google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev" -google-auth = ">=2.23.3,<3.0dev" -google-cloud-core = ">=2.3.0,<3.0dev" -google-crc32c = ">=1.0,<2.0dev" -google-resumable-media = ">=2.6.0" -requests = ">=2.18.0,<3.0.0dev" - -[package.extras] -protobuf = ["protobuf (<5.0.0dev)"] - [[package]] name = "google-cloud-storage" version = "2.16.0" @@ -2199,23 +2135,23 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.7.2" +version = "5.2.0" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, - {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, + {file = "jupyter_core-5.2.0-py3-none-any.whl", hash = "sha256:4bdc2928c37f6917130c667d8b8708f20aee539d8283c6be72aabd2a4b4c83b0"}, + {file = "jupyter_core-5.2.0.tar.gz", hash = "sha256:1407cdb4c79ee467696c04b76633fc1884015fa109323365a6372c8e890cc83f"}, ] [package.dependencies] platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] +docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "kaitaistruct" @@ -2403,7 +2339,6 @@ files = [ {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, - {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, @@ -2584,13 +2519,13 @@ traitlets = "*" [[package]] name = "mccabe" -version = "0.7.0" +version = "0.6.1" description = "McCabe checker, plugin for flake8" optional = false -python-versions = ">=3.6" +python-versions = "*" files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] [[package]] @@ -3087,13 +3022,13 @@ files = [ [[package]] name = "packaging" -version = "24.0" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] @@ -3600,33 +3535,24 @@ python-dateutil = ">=2.8.0" [[package]] name = "pylint" -version = "2.17.7" +version = "2.12.2" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.6.2" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-2.12.2-py3-none-any.whl", hash = "sha256:daabda3f7ed9d1c60f52d563b1b854632fd90035bcf01443e234d3dc794e3b74"}, + {file = "pylint-2.12.2.tar.gz", hash = "sha256:9d945a73640e1fec07ee34b42f5669b770c759acd536ec7b16d7e4b87a9c9ff9"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = [ - {version = ">=0.2", markers = "python_version < \"3.11\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, -] +astroid = ">=2.9.0,<2.10" +colorama = {version = "*", markers = "sys_platform == \"win32\""} isort = ">=4.2.5,<6" -mccabe = ">=0.6,<0.8" +mccabe = ">=0.6,<0.7" platformdirs = ">=2.2.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -tomlkit = ">=0.10.1" +toml = ">=0.9.2" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} -[package.extras] -spelling = ["pyenchant (>=3.2,<4.0)"] -testutils = ["gitpython (>3)"] - [[package]] name = "pynacl" version = "1.5.0" @@ -3935,25 +3861,23 @@ six = "*" [[package]] name = "pywin32" -version = "306" +version = "227" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, + {file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"}, + {file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"}, + {file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"}, + {file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"}, + {file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"}, + {file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"}, + {file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"}, + {file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"}, + {file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"}, + {file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"}, + {file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"}, + {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"}, ] [[package]] @@ -4693,17 +4617,6 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -[[package]] -name = "tomlkit" -version = "0.12.4" -description = "Style preserving TOML library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, - {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, -] - [[package]] name = "tornado" version = "6.4" @@ -4763,7 +4676,7 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, name = "typed-ast" version = "1.5.5" description = "a fork of Python 2 and 3 ast modules with type comment support" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "typed_ast-1.5.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4bc1efe0ce3ffb74784e06460f01a223ac1f6ab31c6bc0376a21184bf5aabe3b"}, @@ -4833,6 +4746,28 @@ dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2 doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.971)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +[[package]] +name = "types-chardet" +version = "5.0.4.6" +description = "Typing stubs for chardet" +optional = false +python-versions = "*" +files = [ + {file = "types-chardet-5.0.4.6.tar.gz", hash = "sha256:caf4c74cd13ccfd8b3313c314aba943b159de562a2573ed03137402b2bb37818"}, + {file = "types_chardet-5.0.4.6-py3-none-any.whl", hash = "sha256:ea832d87e798abf1e4dfc73767807c2b7fee35d0003ae90348aea4ae00fb004d"}, +] + +[[package]] +name = "types-cryptography" +version = "3.3.23.2" +description = "Typing stubs for cryptography" +optional = false +python-versions = "*" +files = [ + {file = "types-cryptography-3.3.23.2.tar.gz", hash = "sha256:09cc53f273dd4d8c29fa7ad11fefd9b734126d467960162397bc5e3e604dea75"}, + {file = "types_cryptography-3.3.23.2-py3-none-any.whl", hash = "sha256:b965d548f148f8e87f353ccf2b7bd92719fdf6c845ff7cedf2abb393a0643e4f"}, +] + [[package]] name = "types-dateparser" version = "1.2.0.20240420" @@ -4855,6 +4790,61 @@ files = [ {file = "types_decorator-5.1.8.20240310-py3-none-any.whl", hash = "sha256:3af75dc38f5baf65b9b53ea6661ce2056c5ca7d70d620d0b1f620285c1242757"}, ] +[[package]] +name = "types-emoji" +version = "2.1.0.3" +description = "Typing stubs for emoji" +optional = false +python-versions = "*" +files = [ + {file = "types-emoji-2.1.0.3.tar.gz", hash = "sha256:98ddb0ff5f48622550c431206e4dbfcbde8ca8bc03fcfbb9962a778d2049aa13"}, + {file = "types_emoji-2.1.0.3-py3-none-any.whl", hash = "sha256:32fe5cf02c4834bb59579380f600a89d1471571fb56e36465cbd0c7d95f669ca"}, +] + +[[package]] +name = "types-filelock" +version = "3.2.7" +description = "Typing stubs for filelock" +optional = false +python-versions = "*" +files = [ + {file = "types-filelock-3.2.7.tar.gz", hash = "sha256:0673a25b45725c5c45661fe3744c3d8058653a16e683f0ae4a74afb44a0cdef4"}, + {file = "types_filelock-3.2.7-py3-none-any.whl", hash = "sha256:ee0ee2b4ec3d491ebe71f7343e21435c3a07f910881275a94788cac42acf4339"}, +] + +[[package]] +name = "types-futures" +version = "3.3.8" +description = "Typing stubs for futures" +optional = false +python-versions = "*" +files = [ + {file = "types-futures-3.3.8.tar.gz", hash = "sha256:6fe8ccc2c2af7ef2fdd9bf73eab6d617074f09f30ad7d373510b4043d39c42de"}, + {file = "types_futures-3.3.8-py3-none-any.whl", hash = "sha256:d6e97ec51d56b96debfbf1dea32ebec22c1687f16d2547ea0a34b48db45df205"}, +] + +[[package]] +name = "types-ipaddress" +version = "1.0.8" +description = "Typing stubs for ipaddress" +optional = false +python-versions = "*" +files = [ + {file = "types-ipaddress-1.0.8.tar.gz", hash = "sha256:a03df3be5935e50ba03fa843daabff539a041a28e73e0fce2c5705bee54d3841"}, + {file = "types_ipaddress-1.0.8-py3-none-any.whl", hash = "sha256:4933b74da157ba877b1a705d64f6fa7742745e9ffd65e51011f370c11ebedb55"}, +] + +[[package]] +name = "types-markdown" +version = "3.6.0.20240316" +description = "Typing stubs for Markdown" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-Markdown-3.6.0.20240316.tar.gz", hash = "sha256:de9fb84860b55b647b170ca576895fcca61b934a6ecdc65c31932c6795b440b8"}, + {file = "types_Markdown-3.6.0.20240316-py3-none-any.whl", hash = "sha256:d3ecd26a940781787c7b57a0e3c9d77c150db64e12989ef687059edc83dfd78a"}, +] + [[package]] name = "types-mock" version = "4.0.15.2" @@ -4866,6 +4856,20 @@ files = [ {file = "types_mock-4.0.15.2-py3-none-any.whl", hash = "sha256:39d489b6d9361b75448677680a3087701c0cfab61260363cfc0f646d2bf0a8b2"}, ] +[[package]] +name = "types-paramiko" +version = "2.12.0.1" +description = "Typing stubs for paramiko" +optional = false +python-versions = "*" +files = [ + {file = "types-paramiko-2.12.0.1.tar.gz", hash = "sha256:591c30cfd1ee75b755863d43eea54b68fb7c19cfaa2a10229ea55637f74d3da5"}, + {file = "types_paramiko-2.12.0.1-py3-none-any.whl", hash = "sha256:43807361500feb5a87177ef4524f2f2caf8c3bb112666cd83f4acd84d9d0a179"}, +] + +[package.dependencies] +types-cryptography = "*" + [[package]] name = "types-pkg-resources" version = "0.1.3" @@ -4877,6 +4881,28 @@ files = [ {file = "types_pkg_resources-0.1.3-py2.py3-none-any.whl", hash = "sha256:0cb9972cee992249f93fff1a491bf2dc3ce674e5a1926e27d4f0866f7d9b6d9c"}, ] +[[package]] +name = "types-protobuf" +version = "4.25.0.20240417" +description = "Typing stubs for protobuf" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-protobuf-4.25.0.20240417.tar.gz", hash = "sha256:c34eff17b9b3a0adb6830622f0f302484e4c089f533a46e3f147568313544352"}, + {file = "types_protobuf-4.25.0.20240417-py3-none-any.whl", hash = "sha256:e9b613227c2127e3d4881d75d93c93b4d6fd97b5f6a099a0b654a05351c8685d"}, +] + +[[package]] +name = "types-pymysql" +version = "1.1.0.20240425" +description = "Typing stubs for PyMySQL" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-PyMySQL-1.1.0.20240425.tar.gz", hash = "sha256:afe24e8eba5f4851b729835530a1698b1b1645a93f9f9c83ae45228866ed31fc"}, + {file = "types_PyMySQL-1.1.0.20240425-py3-none-any.whl", hash = "sha256:32a472233de53b913e934695530a2d083146b81ed6de1669ecb845f76b6ddc15"}, +] + [[package]] name = "types-python-dateutil" version = "2.9.0.20240316" @@ -4890,38 +4916,60 @@ files = [ [[package]] name = "types-pytz" -version = "2024.1.0.20240417" +version = "2022.7.1.2" description = "Typing stubs for pytz" optional = false +python-versions = "*" +files = [ + {file = "types-pytz-2022.7.1.2.tar.gz", hash = "sha256:487d3e8e9f4071eec8081746d53fa982bbc05812e719dcbf2ebf3d55a1a4cd28"}, + {file = "types_pytz-2022.7.1.2-py3-none-any.whl", hash = "sha256:40ca448a928d566f7d44ddfde0066e384f7ffbd4da2778e42a4570eaca572446"}, +] + +[[package]] +name = "types-pyvmomi" +version = "8.0.0.6" +description = "Typing stubs for pyvmomi" +optional = false +python-versions = "*" +files = [ + {file = "types-pyvmomi-8.0.0.6.tar.gz", hash = "sha256:494114a0ff30fa9cfe80dbd940308757586c836717803d8cb8af90f4f3190932"}, + {file = "types_pyvmomi-8.0.0.6-py3-none-any.whl", hash = "sha256:f1d95b25ce460cef6c2169053dbacfdab3872a2d30d184f1c3b3b2f0ba94be73"}, +] + +[[package]] +name = "types-pyyaml" +version = "6.0.12.20240311" +description = "Typing stubs for PyYAML" +optional = false python-versions = ">=3.8" files = [ - {file = "types-pytz-2024.1.0.20240417.tar.gz", hash = "sha256:6810c8a1f68f21fdf0f4f374a432487c77645a0ac0b31de4bf4690cf21ad3981"}, - {file = "types_pytz-2024.1.0.20240417-py3-none-any.whl", hash = "sha256:8335d443310e2db7b74e007414e74c4f53b67452c0cb0d228ca359ccfba59659"}, + {file = "types-PyYAML-6.0.12.20240311.tar.gz", hash = "sha256:a9e0f0f88dc835739b0c1ca51ee90d04ca2a897a71af79de9aec5f38cb0a5342"}, + {file = "types_PyYAML-6.0.12.20240311-py3-none-any.whl", hash = "sha256:b845b06a1c7e54b8e5b4c683043de0d9caf205e7434b3edc678ff2411979b8f6"}, ] [[package]] name = "types-requests" -version = "2.31.0.20240406" +version = "2.28.11" description = "Typing stubs for requests" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, - {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, + {file = "types-requests-2.28.11.tar.gz", hash = "sha256:7ee827eb8ce611b02b5117cfec5da6455365b6a575f5e3ff19f655ba603e6b4e"}, + {file = "types_requests-2.28.11-py3-none-any.whl", hash = "sha256:af5f55e803cabcfb836dad752bd6d8a0fc8ef1cd84243061c0e27dee04ccf4fd"}, ] [package.dependencies] -urllib3 = ">=2" +types-urllib3 = "<1.27" [[package]] -name = "types-setuptools" -version = "69.5.0.20240423" -description = "Typing stubs for setuptools" +name = "types-six" +version = "1.16.21.20240425" +description = "Typing stubs for six" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.5.0.20240423.tar.gz", hash = "sha256:a7ba908f1746c4337d13f027fa0f4a5bcad6d1d92048219ba792b3295c58586d"}, - {file = "types_setuptools-69.5.0.20240423-py3-none-any.whl", hash = "sha256:a4381e041510755a6c9210e26ad55b1629bc10237aeb9cb8b6bd24996b73db48"}, + {file = "types-six-1.16.21.20240425.tar.gz", hash = "sha256:378f8baa5b693e4f8a284e8f7b0b34c682210848900816788e19ee4712de8f59"}, + {file = "types_six-1.16.21.20240425-py3-none-any.whl", hash = "sha256:1e924f823cdc2142670c942527f71b49912e6954b3b85388cd0cc1259ad4bfcf"}, ] [[package]] @@ -4957,6 +5005,17 @@ files = [ {file = "types_ujson-5.9.0.0-py3-none-any.whl", hash = "sha256:f274fa604ed6317effcd1c424ef4cf292c3b0689cb118fb3180689d40ed1f4ed"}, ] +[[package]] +name = "types-urllib3" +version = "1.26.25.14" +description = "Typing stubs for urllib3" +optional = false +python-versions = "*" +files = [ + {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, + {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, +] + [[package]] name = "typing-extensions" version = "4.11.0" @@ -5074,20 +5133,19 @@ files = [ [[package]] name = "urllib3" -version = "2.2.1" +version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, + {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urwid" @@ -5219,81 +5277,62 @@ watchdog = ["watchdog (>=2.3)"] [[package]] name = "wrapt" -version = "1.16.0" +version = "1.13.3" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "wrapt-1.13.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca"}, + {file = "wrapt-1.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44"}, + {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056"}, + {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785"}, + {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096"}, + {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33"}, + {file = "wrapt-1.13.3-cp310-cp310-win32.whl", hash = "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f"}, + {file = "wrapt-1.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755"}, + {file = "wrapt-1.13.3-cp35-cp35m-win32.whl", hash = "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851"}, + {file = "wrapt-1.13.3-cp35-cp35m-win_amd64.whl", hash = "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13"}, + {file = "wrapt-1.13.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918"}, + {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade"}, + {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc"}, + {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf"}, + {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125"}, + {file = "wrapt-1.13.3-cp36-cp36m-win32.whl", hash = "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36"}, + {file = "wrapt-1.13.3-cp36-cp36m-win_amd64.whl", hash = "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10"}, + {file = "wrapt-1.13.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068"}, + {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709"}, + {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df"}, + {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2"}, + {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b"}, + {file = "wrapt-1.13.3-cp37-cp37m-win32.whl", hash = "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829"}, + {file = "wrapt-1.13.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea"}, + {file = "wrapt-1.13.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9"}, + {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554"}, + {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c"}, + {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b"}, + {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce"}, + {file = "wrapt-1.13.3-cp38-cp38-win32.whl", hash = "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79"}, + {file = "wrapt-1.13.3-cp38-cp38-win_amd64.whl", hash = "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb"}, + {file = "wrapt-1.13.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb"}, + {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32"}, + {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7"}, + {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e"}, + {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640"}, + {file = "wrapt-1.13.3-cp39-cp39-win32.whl", hash = "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374"}, + {file = "wrapt-1.13.3-cp39-cp39-win_amd64.whl", hash = "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb"}, + {file = "wrapt-1.13.3.tar.gz", hash = "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"}, ] [[package]] @@ -5526,5 +5565,5 @@ generate-unit-tests = ["klara"] [metadata] lock-version = "2.0" -python-versions = "^3.8,<3.12" -content-hash = "924321f945a67af239a680ebac382537b57bb3b5af71f0b0a1dd2717b9dae9b0" +python-versions = ">=3.8,<3.11" +content-hash = "607aa70a4746214fcff02a451ad356b25520a17c7a87008aadb79616c08f98df" diff --git a/pyproject.toml b/pyproject.toml index b99e12c3f3c..a2aabc394a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,19 +1,18 @@ [tool.poetry] name = "demisto-sdk" -version = "1.29.3" +version = "1.29.2" description = "\"A Python library for the Demisto SDK\"" authors = ["Demisto"] license = "MIT" readme = "README.md" -classifiers = [ +classifiers=[ 'Intended Audience :: Developers', 'Natural Language :: English', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: Implementation :: CPython', + 'Programming Language :: Python :: Implementation :: CPython' ] exclude = ["TestSuite/**", "tests_end_to_end/**", "demisto_sdk/tests/**", "demisto_sdk/**/tests/**", "demisto_sdk/**/test_data/**", "demisto_sdk/**/test_files/**"] @@ -28,22 +27,22 @@ init-validation = "demisto_sdk.scripts.init_validation_script:main" validate-deleted-files = "demisto_sdk.scripts.validate_deleted_files:main" [tool.poetry.dependencies] -python = "^3.8,<3.12" -autopep8 = "^2.0.4" +python = ">=3.8,<3.11" +autopep8 = "^1.6.0" bandit = "^1.7.4" mypy = "^0.982" -pylint = "^2.17.0,<2.18" +pylint = "2.12.2" vulture = "^2.3" beautifulsoup4 = "^4.11.1" chardet = ">=4,<6" click = "^8.0.0" coloredlogs = "^15.0.1" configparser = "^5.2.0" -coverage = "^7.2.1,<7.4" # in 7.4 we get empty results +coverage = "^7.2.1" decorator = "^5.1.1" demisto-py = "^3.2.10" dictor = "^0.1.9" -docker = "^6.0.0" +docker = "^5.0.3" flatten-dict = "^0.4.2" gitdb = "^4.0.9" google-cloud-storage = "^2.13.0" @@ -62,7 +61,7 @@ slack-sdk = "^3.17.0" tenacity = "^8.2.3" tabulate = ">=0.8.9,<0.10.0" ujson = "^5.1.0" -urllib3 = "^2.2.1" +urllib3 = "^1.26.9" wcmatch = "^8.3" yamlordereddictloader = "^0.4.0" GitPython = "^3.1.37" @@ -75,42 +74,52 @@ importlib-resources = "^5.6.0" dictdiffer = "^0.9.0" imagesize = "^1.3.0" dateparser = "^1.1.1" -gsutil = { version = "5.17", optional = true } +typed-ast = "^1.5.2" +types-dateparser = "^1.1.0" +types-PyYAML = "^6.0.5" +types-requests = "2.28.11" +types-pytz = ">=2021.3.6,<2023.0.0" +types-python-dateutil = "^2.8.10" +types-pyvmomi = ">=7.0.6,<9.0.0" +types-tabulate = ">=0.8.6,<0.10.0" +types-paramiko = "^2.8.17" +types-emoji = ">=1.2.7,<3.0.0" +types-ipaddress = "^1.0.8" +types-chardet = ">=4.0.3,<6.0.0" +types-six = "^1.16.12" +types-PyMySQL = "^1.0.15" +typing-extensions = "^4.1.1" +gsutil = {version = "5.17", optional = true} ordered-set = "^4.1.0" +types-filelock = "^3.2.5" +types-Markdown = "^3.3.21" +types-futures = "^3.3.8" paramiko = "^2.11.0" neo4j = "^5.14.0" pydantic = "^1.10" -typer = { extras = ["all"], version = "^0.9.0" } -packaging = "^24.0" +types-decorator = "^5.1.8" +types-mock = "^4.0.15" +types-ujson = "^5.6.0.0" +typer = {extras = ["all"], version = "^0.9.0"} +types-pkg-resources = "^0.1.3" +types-toml = "^0.10.8.7" +packaging = "^23.1" orjson = "^3.8.3" more-itertools = "^9.0.0" junitparser = "^3.1.0" -google-cloud-secret-manager = "^2.18.3" +google-cloud-secret-manager = "^2.16.2" json5 = "^0.9.14" +types-protobuf = "^4.24.0.4" klara = { version = "^0.6.3", optional = true } -typing-extensions = "^4.1.1" # not a mypy types- dependency + + + pre-commit = "^3.5.0" lxml = "^5.0.0" uv = "^0.1.5" -toml = "^0.10.2" -werkzeug = "^2.2.0" # Added as mitmproxy8 -> flask<2.1 - - -[tool.poetry.group.types.dependencies] -types-requests = "^2.31.0.20240311" -types-mock = "^4.0.15" -types-setuptools = "^69.2.0.20240317" -types-ujson = "^5.6.0.0" -types-decorator = "^5.1.8" -types-pkg-resources = "^0.1.3" -types-toml = "^0.10.8.7" -types-tabulate = "^0.9.0.20240106" -types-pytz = "^2024.1.0.20240203" -types-dateparser = "^1.1.4.20240106" -types-python-dateutil = "^2.9.0.20240316" [tool.poetry.group.dev.dependencies] -mitmproxy = "^8.0.0" # if installing zstandard fails, make sure you have python3.x-dev installed. +mitmproxy = "^8.0.0" mock = "^4.0.3" pytest = "^7.1.1" pytest-cov = "^4.0.0" @@ -154,7 +163,7 @@ ignore = [ "F403", "F405", "E501", - "W293", # handled by Black + "W293", # handled by Black ] @@ -162,7 +171,7 @@ exclude = [ "demisto_sdk/tests/test_files/", "demisto_sdk/commands/generate_unit_tests/tests/test_files/", "demisto_sdk/commands/init/templates", - "demisto_sdk/commands/generate_yml_from_python/tests/generate_yml_from_python_test.py", + "demisto_sdk/commands/generate_yml_from_python/tests/generate_yml_from_python_test.py" ] select = [ @@ -198,4 +207,3 @@ max-complexity = 30 "distutils.version".msg = "Use packaging.version.Version instead" "packaging.version.LooseVersion".msg = "Use packaging.version.Version instead" "git.Repo".msg = "Use GitUtil instead" -"str.StrEnum".msg = "Import from demisto_sdk.commands.common.StrEnum for <3.11 compatability" From 6bc4f5441a71b328f67e46d73c2b49889bbfad4c Mon Sep 17 00:00:00 2001 From: yucohen Date: Wed, 15 May 2024 09:38:24 +0300 Subject: [PATCH 18/33] test --- demisto_sdk/commands/common/constants.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/demisto_sdk/commands/common/constants.py b/demisto_sdk/commands/common/constants.py index b59b4ab332e..0701dc96601 100644 --- a/demisto_sdk/commands/common/constants.py +++ b/demisto_sdk/commands/common/constants.py @@ -162,6 +162,7 @@ ASSETS_MODELING_RULE = "assetsmodelingrule" CASE_LAYOUT_RULE = "caselayoutrule" CASE_FIELD = "casefield" +CASE_LAYOUT = "caselayout" # Marketplaces @@ -255,6 +256,7 @@ class FileType(StrEnum): ASSETS_MODELING_RULE_XIF = "assetsmodelingrulexif" CASE_LAYOUT_RULE = "caselayoutrule" CASE_FIELD = "casefield" + CASE_LAYOUT = "caselayout" RN_HEADER_BY_FILE_TYPE = { @@ -295,6 +297,7 @@ class FileType(StrEnum): FileType.ASSETS_MODELING_RULE: "Assets Modeling Rules", FileType.CASE_LAYOUT_RULE: "Case Layout Rules", FileType.CASE_FIELD: "Case Fields", + FileType.CASE_LAYOUT: "Case Layouts" } FILE_TYPE_BY_RN_HEADER = { @@ -337,8 +340,6 @@ class FileType(StrEnum): FileType.OLD_CLASSIFIER.value: CLASSIFIERS_DIR, FileType.LAYOUT_RULE.value: LAYOUT_RULES_DIR, FileType.ASSETS_MODELING_RULE.value: ASSETS_MODELING_RULES_DIR, - FileType.CASE_LAYOUT_RULE.value: CASE_LAYOUT_RULES_DIR, - FileType.CASE_FIELD.value: CASE_FIELDS_DIR, } From a6b7013648c9e9cd19330d89eff59f267ad6f59e Mon Sep 17 00:00:00 2001 From: yucohen Date: Wed, 15 May 2024 10:35:15 +0300 Subject: [PATCH 19/33] test --- .../BA106_is_from_version_sufficient_all_items.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/demisto_sdk/commands/validate/validators/BA_validators/BA106_is_from_version_sufficient_all_items.py b/demisto_sdk/commands/validate/validators/BA_validators/BA106_is_from_version_sufficient_all_items.py index a35d80307ea..a1c724446ee 100644 --- a/demisto_sdk/commands/validate/validators/BA_validators/BA106_is_from_version_sufficient_all_items.py +++ b/demisto_sdk/commands/validate/validators/BA_validators/BA106_is_from_version_sufficient_all_items.py @@ -8,6 +8,9 @@ from demisto_sdk.commands.content_graph.objects.assets_modeling_rule import ( AssetsModelingRule, ) +from demisto_sdk.commands.content_graph.objects.case_field import CaseField +from demisto_sdk.commands.content_graph.objects.case_layout import CaseLayout +from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule from demisto_sdk.commands.content_graph.objects.classifier import Classifier from demisto_sdk.commands.content_graph.objects.content_item import ContentItem from demisto_sdk.commands.content_graph.objects.correlation_rule import CorrelationRule @@ -68,6 +71,10 @@ IncidentField, AssetsModelingRule, LayoutRule, + CaseField, + CaseLayout, + CaseLayoutRule, + ] FROM_VERSION_DICT: Dict[ContentType, str] = { @@ -96,6 +103,9 @@ ContentType.WIDGET: "5.0.0", ContentType.DASHBOARD: "5.0.0", ContentType.INCIDENT_TYPE: "5.0.0", + ContentType.CASE_FIELD: "8.7.0", + ContentType.CASE_LAYOUT: "8.7.0", + ContentType.CASE_LAYOUT_RULE: "8.7.0" } From 4c801ec91490ca3b3de9579c953f12c0566d30f6 Mon Sep 17 00:00:00 2001 From: yucohen Date: Wed, 15 May 2024 10:36:45 +0300 Subject: [PATCH 20/33] test --- poetry.lock | 521 +++++++++++++++++++++++-------------------------- pyproject.toml | 78 ++++---- 2 files changed, 276 insertions(+), 323 deletions(-) diff --git a/poetry.lock b/poetry.lock index 4f9d8a8843d..e7e4fd13034 100644 --- a/poetry.lock +++ b/poetry.lock @@ -162,20 +162,22 @@ files = [ [[package]] name = "astroid" -version = "2.9.3" +version = "2.15.8" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" files = [ - {file = "astroid-2.9.3-py3-none-any.whl", hash = "sha256:506daabe5edffb7e696ad82483ad0228245a9742ed7d2d8c9cdb31537decf9f6"}, - {file = "astroid-2.9.3.tar.gz", hash = "sha256:1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"}, + {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, + {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, ] [package.dependencies] lazy-object-proxy = ">=1.4.0" -setuptools = ">=20.0" -typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} -wrapt = ">=1.11,<1.14" +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, +] [[package]] name = "asttokens" @@ -227,18 +229,18 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "autopep8" -version = "1.7.0" +version = "2.1.0" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "autopep8-1.7.0-py2.py3-none-any.whl", hash = "sha256:6f09e90a2be784317e84dc1add17ebfc7abe3924239957a37e5040e27d812087"}, - {file = "autopep8-1.7.0.tar.gz", hash = "sha256:ca9b1a83e53a7fad65d731dc7a2a2d50aa48f43850407c59f6a1a306c4201142"}, + {file = "autopep8-2.1.0-py2.py3-none-any.whl", hash = "sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357"}, + {file = "autopep8-2.1.0.tar.gz", hash = "sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7"}, ] [package.dependencies] -pycodestyle = ">=2.9.1" -toml = "*" +pycodestyle = ">=2.11.0" +tomli = {version = "*", markers = "python_version < \"3.11\""} [[package]] name = "backcall" @@ -1062,6 +1064,21 @@ files = [ {file = "dictor-0.1.12.tar.gz", hash = "sha256:6db48375ae1e53dc9ed844e85b38f4e3fbfbf6a4e60beca377515ad14453b91b"}, ] +[[package]] +name = "dill" +version = "0.3.8" +description = "serialize all of Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, +] + +[package.extras] +graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] + [[package]] name = "distlib" version = "0.3.8" @@ -1075,23 +1092,24 @@ files = [ [[package]] name = "docker" -version = "5.0.3" +version = "6.1.3" description = "A Python library for the Docker Engine API." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "docker-5.0.3-py2.py3-none-any.whl", hash = "sha256:7a79bb439e3df59d0a72621775d600bc8bc8b422d285824cb37103eab91d1ce0"}, - {file = "docker-5.0.3.tar.gz", hash = "sha256:d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb"}, + {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"}, + {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"}, ] [package.dependencies] -pywin32 = {version = "227", markers = "sys_platform == \"win32\""} -requests = ">=2.14.2,<2.18.0 || >2.18.0" +packaging = ">=14.0" +pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""} +requests = ">=2.26.0" +urllib3 = ">=1.26.0" websocket-client = ">=0.32.0" [package.extras] -ssh = ["paramiko (>=2.4.2)"] -tls = ["cryptography (>=3.4.7)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"] +ssh = ["paramiko (>=2.4.3)"] [[package]] name = "docopt" @@ -1359,6 +1377,30 @@ files = [ {file = "giturlparse-0.10.0.tar.gz", hash = "sha256:2595ab291d30717cda8474b874c9fd509f1b9802ad7f6968c36a45e4b13eb337"}, ] +[[package]] +name = "google-api-core" +version = "1.34.1" +description = "Google API client core library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-api-core-1.34.1.tar.gz", hash = "sha256:3399c92887a97d33038baa4bfd3bf07acc05d474b0171f333e1f641c1364e552"}, + {file = "google_api_core-1.34.1-py3-none-any.whl", hash = "sha256:52bcc9d9937735f8a3986fa0bbf9135ae9cf5393a722387e5eced520e39c774a"}, +] + +[package.dependencies] +google-auth = ">=1.25.0,<3.0dev" +googleapis-common-protos = ">=1.56.2,<2.0dev" +grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} +grpcio-status = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.0.0dev" +requests = ">=2.18.0,<3.0.0dev" + +[package.extras] +grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)"] +grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] +grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] + [[package]] name = "google-api-core" version = "2.19.0" @@ -1373,8 +1415,8 @@ files = [ [package.dependencies] google-auth = ">=2.14.1,<3.0.dev0" googleapis-common-protos = ">=1.56.2,<2.0.dev0" -grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} -grpcio-status = {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "extra == \"grpc\""} +grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""} +grpcio-status = {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" requests = ">=2.18.0,<3.0.0.dev0" @@ -1466,6 +1508,28 @@ grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" +[[package]] +name = "google-cloud-storage" +version = "2.14.0" +description = "Google Cloud Storage API client library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-cloud-storage-2.14.0.tar.gz", hash = "sha256:2d23fcf59b55e7b45336729c148bb1c464468c69d5efbaee30f7201dd90eb97e"}, + {file = "google_cloud_storage-2.14.0-py2.py3-none-any.whl", hash = "sha256:8641243bbf2a2042c16a6399551fbb13f062cbc9a2de38d6c0bb5426962e9dbd"}, +] + +[package.dependencies] +google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev" +google-auth = ">=2.23.3,<3.0dev" +google-cloud-core = ">=2.3.0,<3.0dev" +google-crc32c = ">=1.0,<2.0dev" +google-resumable-media = ">=2.6.0" +requests = ">=2.18.0,<3.0.0dev" + +[package.extras] +protobuf = ["protobuf (<5.0.0dev)"] + [[package]] name = "google-cloud-storage" version = "2.16.0" @@ -2135,23 +2199,23 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.2.0" +version = "5.7.2" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.2.0-py3-none-any.whl", hash = "sha256:4bdc2928c37f6917130c667d8b8708f20aee539d8283c6be72aabd2a4b4c83b0"}, - {file = "jupyter_core-5.2.0.tar.gz", hash = "sha256:1407cdb4c79ee467696c04b76633fc1884015fa109323365a6372c8e890cc83f"}, + {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, + {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, ] [package.dependencies] platformdirs = ">=2.5" -pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] [[package]] name = "kaitaistruct" @@ -2339,6 +2403,7 @@ files = [ {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, @@ -2519,13 +2584,13 @@ traitlets = "*" [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] [[package]] @@ -3022,13 +3087,13 @@ files = [ [[package]] name = "packaging" -version = "23.2" +version = "24.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] [[package]] @@ -3535,24 +3600,33 @@ python-dateutil = ">=2.8.0" [[package]] name = "pylint" -version = "2.12.2" +version = "2.17.7" description = "python code static checker" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" files = [ - {file = "pylint-2.12.2-py3-none-any.whl", hash = "sha256:daabda3f7ed9d1c60f52d563b1b854632fd90035bcf01443e234d3dc794e3b74"}, - {file = "pylint-2.12.2.tar.gz", hash = "sha256:9d945a73640e1fec07ee34b42f5669b770c759acd536ec7b16d7e4b87a9c9ff9"}, + {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, + {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, ] [package.dependencies] -astroid = ">=2.9.0,<2.10" -colorama = {version = "*", markers = "sys_platform == \"win32\""} +astroid = ">=2.15.8,<=2.17.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = [ + {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, +] isort = ">=4.2.5,<6" -mccabe = ">=0.6,<0.7" +mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" -toml = ">=0.9.2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + [[package]] name = "pynacl" version = "1.5.0" @@ -3861,23 +3935,25 @@ six = "*" [[package]] name = "pywin32" -version = "227" +version = "306" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"}, - {file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"}, - {file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"}, - {file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"}, - {file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"}, - {file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"}, - {file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"}, - {file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"}, - {file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"}, - {file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"}, - {file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"}, - {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"}, + {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, + {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, + {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, + {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, + {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, + {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, + {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, + {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, + {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, + {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, + {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, ] [[package]] @@ -4617,6 +4693,17 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +[[package]] +name = "tomlkit" +version = "0.12.4" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, + {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, +] + [[package]] name = "tornado" version = "6.4" @@ -4676,7 +4763,7 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, name = "typed-ast" version = "1.5.5" description = "a fork of Python 2 and 3 ast modules with type comment support" -optional = false +optional = true python-versions = ">=3.6" files = [ {file = "typed_ast-1.5.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4bc1efe0ce3ffb74784e06460f01a223ac1f6ab31c6bc0376a21184bf5aabe3b"}, @@ -4746,28 +4833,6 @@ dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2 doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.971)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] -[[package]] -name = "types-chardet" -version = "5.0.4.6" -description = "Typing stubs for chardet" -optional = false -python-versions = "*" -files = [ - {file = "types-chardet-5.0.4.6.tar.gz", hash = "sha256:caf4c74cd13ccfd8b3313c314aba943b159de562a2573ed03137402b2bb37818"}, - {file = "types_chardet-5.0.4.6-py3-none-any.whl", hash = "sha256:ea832d87e798abf1e4dfc73767807c2b7fee35d0003ae90348aea4ae00fb004d"}, -] - -[[package]] -name = "types-cryptography" -version = "3.3.23.2" -description = "Typing stubs for cryptography" -optional = false -python-versions = "*" -files = [ - {file = "types-cryptography-3.3.23.2.tar.gz", hash = "sha256:09cc53f273dd4d8c29fa7ad11fefd9b734126d467960162397bc5e3e604dea75"}, - {file = "types_cryptography-3.3.23.2-py3-none-any.whl", hash = "sha256:b965d548f148f8e87f353ccf2b7bd92719fdf6c845ff7cedf2abb393a0643e4f"}, -] - [[package]] name = "types-dateparser" version = "1.2.0.20240420" @@ -4790,61 +4855,6 @@ files = [ {file = "types_decorator-5.1.8.20240310-py3-none-any.whl", hash = "sha256:3af75dc38f5baf65b9b53ea6661ce2056c5ca7d70d620d0b1f620285c1242757"}, ] -[[package]] -name = "types-emoji" -version = "2.1.0.3" -description = "Typing stubs for emoji" -optional = false -python-versions = "*" -files = [ - {file = "types-emoji-2.1.0.3.tar.gz", hash = "sha256:98ddb0ff5f48622550c431206e4dbfcbde8ca8bc03fcfbb9962a778d2049aa13"}, - {file = "types_emoji-2.1.0.3-py3-none-any.whl", hash = "sha256:32fe5cf02c4834bb59579380f600a89d1471571fb56e36465cbd0c7d95f669ca"}, -] - -[[package]] -name = "types-filelock" -version = "3.2.7" -description = "Typing stubs for filelock" -optional = false -python-versions = "*" -files = [ - {file = "types-filelock-3.2.7.tar.gz", hash = "sha256:0673a25b45725c5c45661fe3744c3d8058653a16e683f0ae4a74afb44a0cdef4"}, - {file = "types_filelock-3.2.7-py3-none-any.whl", hash = "sha256:ee0ee2b4ec3d491ebe71f7343e21435c3a07f910881275a94788cac42acf4339"}, -] - -[[package]] -name = "types-futures" -version = "3.3.8" -description = "Typing stubs for futures" -optional = false -python-versions = "*" -files = [ - {file = "types-futures-3.3.8.tar.gz", hash = "sha256:6fe8ccc2c2af7ef2fdd9bf73eab6d617074f09f30ad7d373510b4043d39c42de"}, - {file = "types_futures-3.3.8-py3-none-any.whl", hash = "sha256:d6e97ec51d56b96debfbf1dea32ebec22c1687f16d2547ea0a34b48db45df205"}, -] - -[[package]] -name = "types-ipaddress" -version = "1.0.8" -description = "Typing stubs for ipaddress" -optional = false -python-versions = "*" -files = [ - {file = "types-ipaddress-1.0.8.tar.gz", hash = "sha256:a03df3be5935e50ba03fa843daabff539a041a28e73e0fce2c5705bee54d3841"}, - {file = "types_ipaddress-1.0.8-py3-none-any.whl", hash = "sha256:4933b74da157ba877b1a705d64f6fa7742745e9ffd65e51011f370c11ebedb55"}, -] - -[[package]] -name = "types-markdown" -version = "3.6.0.20240316" -description = "Typing stubs for Markdown" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-Markdown-3.6.0.20240316.tar.gz", hash = "sha256:de9fb84860b55b647b170ca576895fcca61b934a6ecdc65c31932c6795b440b8"}, - {file = "types_Markdown-3.6.0.20240316-py3-none-any.whl", hash = "sha256:d3ecd26a940781787c7b57a0e3c9d77c150db64e12989ef687059edc83dfd78a"}, -] - [[package]] name = "types-mock" version = "4.0.15.2" @@ -4856,20 +4866,6 @@ files = [ {file = "types_mock-4.0.15.2-py3-none-any.whl", hash = "sha256:39d489b6d9361b75448677680a3087701c0cfab61260363cfc0f646d2bf0a8b2"}, ] -[[package]] -name = "types-paramiko" -version = "2.12.0.1" -description = "Typing stubs for paramiko" -optional = false -python-versions = "*" -files = [ - {file = "types-paramiko-2.12.0.1.tar.gz", hash = "sha256:591c30cfd1ee75b755863d43eea54b68fb7c19cfaa2a10229ea55637f74d3da5"}, - {file = "types_paramiko-2.12.0.1-py3-none-any.whl", hash = "sha256:43807361500feb5a87177ef4524f2f2caf8c3bb112666cd83f4acd84d9d0a179"}, -] - -[package.dependencies] -types-cryptography = "*" - [[package]] name = "types-pkg-resources" version = "0.1.3" @@ -4881,28 +4877,6 @@ files = [ {file = "types_pkg_resources-0.1.3-py2.py3-none-any.whl", hash = "sha256:0cb9972cee992249f93fff1a491bf2dc3ce674e5a1926e27d4f0866f7d9b6d9c"}, ] -[[package]] -name = "types-protobuf" -version = "4.25.0.20240417" -description = "Typing stubs for protobuf" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-protobuf-4.25.0.20240417.tar.gz", hash = "sha256:c34eff17b9b3a0adb6830622f0f302484e4c089f533a46e3f147568313544352"}, - {file = "types_protobuf-4.25.0.20240417-py3-none-any.whl", hash = "sha256:e9b613227c2127e3d4881d75d93c93b4d6fd97b5f6a099a0b654a05351c8685d"}, -] - -[[package]] -name = "types-pymysql" -version = "1.1.0.20240425" -description = "Typing stubs for PyMySQL" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-PyMySQL-1.1.0.20240425.tar.gz", hash = "sha256:afe24e8eba5f4851b729835530a1698b1b1645a93f9f9c83ae45228866ed31fc"}, - {file = "types_PyMySQL-1.1.0.20240425-py3-none-any.whl", hash = "sha256:32a472233de53b913e934695530a2d083146b81ed6de1669ecb845f76b6ddc15"}, -] - [[package]] name = "types-python-dateutil" version = "2.9.0.20240316" @@ -4916,60 +4890,38 @@ files = [ [[package]] name = "types-pytz" -version = "2022.7.1.2" +version = "2024.1.0.20240417" description = "Typing stubs for pytz" optional = false -python-versions = "*" -files = [ - {file = "types-pytz-2022.7.1.2.tar.gz", hash = "sha256:487d3e8e9f4071eec8081746d53fa982bbc05812e719dcbf2ebf3d55a1a4cd28"}, - {file = "types_pytz-2022.7.1.2-py3-none-any.whl", hash = "sha256:40ca448a928d566f7d44ddfde0066e384f7ffbd4da2778e42a4570eaca572446"}, -] - -[[package]] -name = "types-pyvmomi" -version = "8.0.0.6" -description = "Typing stubs for pyvmomi" -optional = false -python-versions = "*" -files = [ - {file = "types-pyvmomi-8.0.0.6.tar.gz", hash = "sha256:494114a0ff30fa9cfe80dbd940308757586c836717803d8cb8af90f4f3190932"}, - {file = "types_pyvmomi-8.0.0.6-py3-none-any.whl", hash = "sha256:f1d95b25ce460cef6c2169053dbacfdab3872a2d30d184f1c3b3b2f0ba94be73"}, -] - -[[package]] -name = "types-pyyaml" -version = "6.0.12.20240311" -description = "Typing stubs for PyYAML" -optional = false python-versions = ">=3.8" files = [ - {file = "types-PyYAML-6.0.12.20240311.tar.gz", hash = "sha256:a9e0f0f88dc835739b0c1ca51ee90d04ca2a897a71af79de9aec5f38cb0a5342"}, - {file = "types_PyYAML-6.0.12.20240311-py3-none-any.whl", hash = "sha256:b845b06a1c7e54b8e5b4c683043de0d9caf205e7434b3edc678ff2411979b8f6"}, + {file = "types-pytz-2024.1.0.20240417.tar.gz", hash = "sha256:6810c8a1f68f21fdf0f4f374a432487c77645a0ac0b31de4bf4690cf21ad3981"}, + {file = "types_pytz-2024.1.0.20240417-py3-none-any.whl", hash = "sha256:8335d443310e2db7b74e007414e74c4f53b67452c0cb0d228ca359ccfba59659"}, ] [[package]] name = "types-requests" -version = "2.28.11" +version = "2.31.0.20240406" description = "Typing stubs for requests" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "types-requests-2.28.11.tar.gz", hash = "sha256:7ee827eb8ce611b02b5117cfec5da6455365b6a575f5e3ff19f655ba603e6b4e"}, - {file = "types_requests-2.28.11-py3-none-any.whl", hash = "sha256:af5f55e803cabcfb836dad752bd6d8a0fc8ef1cd84243061c0e27dee04ccf4fd"}, + {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, + {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, ] [package.dependencies] -types-urllib3 = "<1.27" +urllib3 = ">=2" [[package]] -name = "types-six" -version = "1.16.21.20240425" -description = "Typing stubs for six" +name = "types-setuptools" +version = "69.5.0.20240423" +description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-six-1.16.21.20240425.tar.gz", hash = "sha256:378f8baa5b693e4f8a284e8f7b0b34c682210848900816788e19ee4712de8f59"}, - {file = "types_six-1.16.21.20240425-py3-none-any.whl", hash = "sha256:1e924f823cdc2142670c942527f71b49912e6954b3b85388cd0cc1259ad4bfcf"}, + {file = "types-setuptools-69.5.0.20240423.tar.gz", hash = "sha256:a7ba908f1746c4337d13f027fa0f4a5bcad6d1d92048219ba792b3295c58586d"}, + {file = "types_setuptools-69.5.0.20240423-py3-none-any.whl", hash = "sha256:a4381e041510755a6c9210e26ad55b1629bc10237aeb9cb8b6bd24996b73db48"}, ] [[package]] @@ -5005,17 +4957,6 @@ files = [ {file = "types_ujson-5.9.0.0-py3-none-any.whl", hash = "sha256:f274fa604ed6317effcd1c424ef4cf292c3b0689cb118fb3180689d40ed1f4ed"}, ] -[[package]] -name = "types-urllib3" -version = "1.26.25.14" -description = "Typing stubs for urllib3" -optional = false -python-versions = "*" -files = [ - {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, - {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, -] - [[package]] name = "typing-extensions" version = "4.11.0" @@ -5133,19 +5074,20 @@ files = [ [[package]] name = "urllib3" -version = "1.26.18" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.8" files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "urwid" @@ -5277,62 +5219,81 @@ watchdog = ["watchdog (>=2.3)"] [[package]] name = "wrapt" -version = "1.13.3" +version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "wrapt-1.13.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a"}, - {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489"}, - {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909"}, - {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229"}, - {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af"}, - {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de"}, - {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb"}, - {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80"}, - {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca"}, - {file = "wrapt-1.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44"}, - {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056"}, - {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785"}, - {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096"}, - {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33"}, - {file = "wrapt-1.13.3-cp310-cp310-win32.whl", hash = "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f"}, - {file = "wrapt-1.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e"}, - {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d"}, - {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179"}, - {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3"}, - {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755"}, - {file = "wrapt-1.13.3-cp35-cp35m-win32.whl", hash = "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851"}, - {file = "wrapt-1.13.3-cp35-cp35m-win_amd64.whl", hash = "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13"}, - {file = "wrapt-1.13.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918"}, - {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade"}, - {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc"}, - {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf"}, - {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125"}, - {file = "wrapt-1.13.3-cp36-cp36m-win32.whl", hash = "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36"}, - {file = "wrapt-1.13.3-cp36-cp36m-win_amd64.whl", hash = "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10"}, - {file = "wrapt-1.13.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068"}, - {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709"}, - {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df"}, - {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2"}, - {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b"}, - {file = "wrapt-1.13.3-cp37-cp37m-win32.whl", hash = "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829"}, - {file = "wrapt-1.13.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea"}, - {file = "wrapt-1.13.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9"}, - {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554"}, - {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c"}, - {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b"}, - {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce"}, - {file = "wrapt-1.13.3-cp38-cp38-win32.whl", hash = "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79"}, - {file = "wrapt-1.13.3-cp38-cp38-win_amd64.whl", hash = "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb"}, - {file = "wrapt-1.13.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb"}, - {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32"}, - {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7"}, - {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e"}, - {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640"}, - {file = "wrapt-1.13.3-cp39-cp39-win32.whl", hash = "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374"}, - {file = "wrapt-1.13.3-cp39-cp39-win_amd64.whl", hash = "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb"}, - {file = "wrapt-1.13.3.tar.gz", hash = "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"}, +python-versions = ">=3.6" +files = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, ] [[package]] @@ -5565,5 +5526,5 @@ generate-unit-tests = ["klara"] [metadata] lock-version = "2.0" -python-versions = ">=3.8,<3.11" -content-hash = "607aa70a4746214fcff02a451ad356b25520a17c7a87008aadb79616c08f98df" +python-versions = "^3.8,<3.12" +content-hash = "924321f945a67af239a680ebac382537b57bb3b5af71f0b0a1dd2717b9dae9b0" diff --git a/pyproject.toml b/pyproject.toml index a2aabc394a2..b99e12c3f3c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,18 +1,19 @@ [tool.poetry] name = "demisto-sdk" -version = "1.29.2" +version = "1.29.3" description = "\"A Python library for the Demisto SDK\"" authors = ["Demisto"] license = "MIT" readme = "README.md" -classifiers=[ +classifiers = [ 'Intended Audience :: Developers', 'Natural Language :: English', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: Implementation :: CPython' + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: Implementation :: CPython', ] exclude = ["TestSuite/**", "tests_end_to_end/**", "demisto_sdk/tests/**", "demisto_sdk/**/tests/**", "demisto_sdk/**/test_data/**", "demisto_sdk/**/test_files/**"] @@ -27,22 +28,22 @@ init-validation = "demisto_sdk.scripts.init_validation_script:main" validate-deleted-files = "demisto_sdk.scripts.validate_deleted_files:main" [tool.poetry.dependencies] -python = ">=3.8,<3.11" -autopep8 = "^1.6.0" +python = "^3.8,<3.12" +autopep8 = "^2.0.4" bandit = "^1.7.4" mypy = "^0.982" -pylint = "2.12.2" +pylint = "^2.17.0,<2.18" vulture = "^2.3" beautifulsoup4 = "^4.11.1" chardet = ">=4,<6" click = "^8.0.0" coloredlogs = "^15.0.1" configparser = "^5.2.0" -coverage = "^7.2.1" +coverage = "^7.2.1,<7.4" # in 7.4 we get empty results decorator = "^5.1.1" demisto-py = "^3.2.10" dictor = "^0.1.9" -docker = "^5.0.3" +docker = "^6.0.0" flatten-dict = "^0.4.2" gitdb = "^4.0.9" google-cloud-storage = "^2.13.0" @@ -61,7 +62,7 @@ slack-sdk = "^3.17.0" tenacity = "^8.2.3" tabulate = ">=0.8.9,<0.10.0" ujson = "^5.1.0" -urllib3 = "^1.26.9" +urllib3 = "^2.2.1" wcmatch = "^8.3" yamlordereddictloader = "^0.4.0" GitPython = "^3.1.37" @@ -74,52 +75,42 @@ importlib-resources = "^5.6.0" dictdiffer = "^0.9.0" imagesize = "^1.3.0" dateparser = "^1.1.1" -typed-ast = "^1.5.2" -types-dateparser = "^1.1.0" -types-PyYAML = "^6.0.5" -types-requests = "2.28.11" -types-pytz = ">=2021.3.6,<2023.0.0" -types-python-dateutil = "^2.8.10" -types-pyvmomi = ">=7.0.6,<9.0.0" -types-tabulate = ">=0.8.6,<0.10.0" -types-paramiko = "^2.8.17" -types-emoji = ">=1.2.7,<3.0.0" -types-ipaddress = "^1.0.8" -types-chardet = ">=4.0.3,<6.0.0" -types-six = "^1.16.12" -types-PyMySQL = "^1.0.15" -typing-extensions = "^4.1.1" -gsutil = {version = "5.17", optional = true} +gsutil = { version = "5.17", optional = true } ordered-set = "^4.1.0" -types-filelock = "^3.2.5" -types-Markdown = "^3.3.21" -types-futures = "^3.3.8" paramiko = "^2.11.0" neo4j = "^5.14.0" pydantic = "^1.10" -types-decorator = "^5.1.8" -types-mock = "^4.0.15" -types-ujson = "^5.6.0.0" -typer = {extras = ["all"], version = "^0.9.0"} -types-pkg-resources = "^0.1.3" -types-toml = "^0.10.8.7" -packaging = "^23.1" +typer = { extras = ["all"], version = "^0.9.0" } +packaging = "^24.0" orjson = "^3.8.3" more-itertools = "^9.0.0" junitparser = "^3.1.0" -google-cloud-secret-manager = "^2.16.2" +google-cloud-secret-manager = "^2.18.3" json5 = "^0.9.14" -types-protobuf = "^4.24.0.4" klara = { version = "^0.6.3", optional = true } - - - +typing-extensions = "^4.1.1" # not a mypy types- dependency pre-commit = "^3.5.0" lxml = "^5.0.0" uv = "^0.1.5" +toml = "^0.10.2" +werkzeug = "^2.2.0" # Added as mitmproxy8 -> flask<2.1 + + +[tool.poetry.group.types.dependencies] +types-requests = "^2.31.0.20240311" +types-mock = "^4.0.15" +types-setuptools = "^69.2.0.20240317" +types-ujson = "^5.6.0.0" +types-decorator = "^5.1.8" +types-pkg-resources = "^0.1.3" +types-toml = "^0.10.8.7" +types-tabulate = "^0.9.0.20240106" +types-pytz = "^2024.1.0.20240203" +types-dateparser = "^1.1.4.20240106" +types-python-dateutil = "^2.9.0.20240316" [tool.poetry.group.dev.dependencies] -mitmproxy = "^8.0.0" +mitmproxy = "^8.0.0" # if installing zstandard fails, make sure you have python3.x-dev installed. mock = "^4.0.3" pytest = "^7.1.1" pytest-cov = "^4.0.0" @@ -163,7 +154,7 @@ ignore = [ "F403", "F405", "E501", - "W293", # handled by Black + "W293", # handled by Black ] @@ -171,7 +162,7 @@ exclude = [ "demisto_sdk/tests/test_files/", "demisto_sdk/commands/generate_unit_tests/tests/test_files/", "demisto_sdk/commands/init/templates", - "demisto_sdk/commands/generate_yml_from_python/tests/generate_yml_from_python_test.py" + "demisto_sdk/commands/generate_yml_from_python/tests/generate_yml_from_python_test.py", ] select = [ @@ -207,3 +198,4 @@ max-complexity = 30 "distutils.version".msg = "Use packaging.version.Version instead" "packaging.version.LooseVersion".msg = "Use packaging.version.Version instead" "git.Repo".msg = "Use GitUtil instead" +"str.StrEnum".msg = "Import from demisto_sdk.commands.common.StrEnum for <3.11 compatability" From a9e291f94e1c657f51458fb0cbefbd808430b15f Mon Sep 17 00:00:00 2001 From: yucohen Date: Wed, 15 May 2024 11:24:30 +0300 Subject: [PATCH 21/33] Empty-Commit From 4b21079fe2fefe67ff71e6cab4b7884dbdf0fe4d Mon Sep 17 00:00:00 2001 From: yucohen Date: Wed, 15 May 2024 11:28:36 +0300 Subject: [PATCH 22/33] lock --- poetry.lock | 521 ++++++++++++++++++++++++++----------------------- pyproject.toml | 78 ++++---- 2 files changed, 323 insertions(+), 276 deletions(-) diff --git a/poetry.lock b/poetry.lock index e7e4fd13034..30b3330a318 100644 --- a/poetry.lock +++ b/poetry.lock @@ -162,22 +162,20 @@ files = [ [[package]] name = "astroid" -version = "2.15.8" +version = "2.9.3" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.6.2" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-2.9.3-py3-none-any.whl", hash = "sha256:506daabe5edffb7e696ad82483ad0228245a9742ed7d2d8c9cdb31537decf9f6"}, + {file = "astroid-2.9.3.tar.gz", hash = "sha256:1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"}, ] [package.dependencies] lazy-object-proxy = ">=1.4.0" -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = [ - {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, -] +setuptools = ">=20.0" +typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} +wrapt = ">=1.11,<1.14" [[package]] name = "asttokens" @@ -229,18 +227,18 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "autopep8" -version = "2.1.0" +version = "1.7.0" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "autopep8-2.1.0-py2.py3-none-any.whl", hash = "sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357"}, - {file = "autopep8-2.1.0.tar.gz", hash = "sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7"}, + {file = "autopep8-1.7.0-py2.py3-none-any.whl", hash = "sha256:6f09e90a2be784317e84dc1add17ebfc7abe3924239957a37e5040e27d812087"}, + {file = "autopep8-1.7.0.tar.gz", hash = "sha256:ca9b1a83e53a7fad65d731dc7a2a2d50aa48f43850407c59f6a1a306c4201142"}, ] [package.dependencies] -pycodestyle = ">=2.11.0" -tomli = {version = "*", markers = "python_version < \"3.11\""} +pycodestyle = ">=2.9.1" +toml = "*" [[package]] name = "backcall" @@ -1064,21 +1062,6 @@ files = [ {file = "dictor-0.1.12.tar.gz", hash = "sha256:6db48375ae1e53dc9ed844e85b38f4e3fbfbf6a4e60beca377515ad14453b91b"}, ] -[[package]] -name = "dill" -version = "0.3.8" -description = "serialize all of Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, -] - -[package.extras] -graph = ["objgraph (>=1.7.2)"] -profile = ["gprof2dot (>=2022.7.29)"] - [[package]] name = "distlib" version = "0.3.8" @@ -1092,24 +1075,23 @@ files = [ [[package]] name = "docker" -version = "6.1.3" +version = "5.0.3" description = "A Python library for the Docker Engine API." optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" files = [ - {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"}, - {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"}, + {file = "docker-5.0.3-py2.py3-none-any.whl", hash = "sha256:7a79bb439e3df59d0a72621775d600bc8bc8b422d285824cb37103eab91d1ce0"}, + {file = "docker-5.0.3.tar.gz", hash = "sha256:d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb"}, ] [package.dependencies] -packaging = ">=14.0" -pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""} -requests = ">=2.26.0" -urllib3 = ">=1.26.0" +pywin32 = {version = "227", markers = "sys_platform == \"win32\""} +requests = ">=2.14.2,<2.18.0 || >2.18.0" websocket-client = ">=0.32.0" [package.extras] -ssh = ["paramiko (>=2.4.3)"] +ssh = ["paramiko (>=2.4.2)"] +tls = ["cryptography (>=3.4.7)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"] [[package]] name = "docopt" @@ -1377,30 +1359,6 @@ files = [ {file = "giturlparse-0.10.0.tar.gz", hash = "sha256:2595ab291d30717cda8474b874c9fd509f1b9802ad7f6968c36a45e4b13eb337"}, ] -[[package]] -name = "google-api-core" -version = "1.34.1" -description = "Google API client core library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "google-api-core-1.34.1.tar.gz", hash = "sha256:3399c92887a97d33038baa4bfd3bf07acc05d474b0171f333e1f641c1364e552"}, - {file = "google_api_core-1.34.1-py3-none-any.whl", hash = "sha256:52bcc9d9937735f8a3986fa0bbf9135ae9cf5393a722387e5eced520e39c774a"}, -] - -[package.dependencies] -google-auth = ">=1.25.0,<3.0dev" -googleapis-common-protos = ">=1.56.2,<2.0dev" -grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} -grpcio-status = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.0.0dev" -requests = ">=2.18.0,<3.0.0dev" - -[package.extras] -grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)"] -grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] -grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] - [[package]] name = "google-api-core" version = "2.19.0" @@ -1415,8 +1373,8 @@ files = [ [package.dependencies] google-auth = ">=2.14.1,<3.0.dev0" googleapis-common-protos = ">=1.56.2,<2.0.dev0" -grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""} -grpcio-status = {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""} +grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} +grpcio-status = {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "extra == \"grpc\""} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" requests = ">=2.18.0,<3.0.0.dev0" @@ -1508,28 +1466,6 @@ grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" -[[package]] -name = "google-cloud-storage" -version = "2.14.0" -description = "Google Cloud Storage API client library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "google-cloud-storage-2.14.0.tar.gz", hash = "sha256:2d23fcf59b55e7b45336729c148bb1c464468c69d5efbaee30f7201dd90eb97e"}, - {file = "google_cloud_storage-2.14.0-py2.py3-none-any.whl", hash = "sha256:8641243bbf2a2042c16a6399551fbb13f062cbc9a2de38d6c0bb5426962e9dbd"}, -] - -[package.dependencies] -google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev" -google-auth = ">=2.23.3,<3.0dev" -google-cloud-core = ">=2.3.0,<3.0dev" -google-crc32c = ">=1.0,<2.0dev" -google-resumable-media = ">=2.6.0" -requests = ">=2.18.0,<3.0.0dev" - -[package.extras] -protobuf = ["protobuf (<5.0.0dev)"] - [[package]] name = "google-cloud-storage" version = "2.16.0" @@ -2199,23 +2135,23 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.7.2" +version = "5.2.0" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, - {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, + {file = "jupyter_core-5.2.0-py3-none-any.whl", hash = "sha256:4bdc2928c37f6917130c667d8b8708f20aee539d8283c6be72aabd2a4b4c83b0"}, + {file = "jupyter_core-5.2.0.tar.gz", hash = "sha256:1407cdb4c79ee467696c04b76633fc1884015fa109323365a6372c8e890cc83f"}, ] [package.dependencies] platformdirs = ">=2.5" -pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] +docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "kaitaistruct" @@ -2403,7 +2339,6 @@ files = [ {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, - {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, @@ -2584,13 +2519,13 @@ traitlets = "*" [[package]] name = "mccabe" -version = "0.7.0" +version = "0.6.1" description = "McCabe checker, plugin for flake8" optional = false -python-versions = ">=3.6" +python-versions = "*" files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, ] [[package]] @@ -3087,13 +3022,13 @@ files = [ [[package]] name = "packaging" -version = "24.0" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] @@ -3600,33 +3535,24 @@ python-dateutil = ">=2.8.0" [[package]] name = "pylint" -version = "2.17.7" +version = "2.12.2" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.6.2" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-2.12.2-py3-none-any.whl", hash = "sha256:daabda3f7ed9d1c60f52d563b1b854632fd90035bcf01443e234d3dc794e3b74"}, + {file = "pylint-2.12.2.tar.gz", hash = "sha256:9d945a73640e1fec07ee34b42f5669b770c759acd536ec7b16d7e4b87a9c9ff9"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" -colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -dill = [ - {version = ">=0.2", markers = "python_version < \"3.11\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, -] +astroid = ">=2.9.0,<2.10" +colorama = {version = "*", markers = "sys_platform == \"win32\""} isort = ">=4.2.5,<6" -mccabe = ">=0.6,<0.8" +mccabe = ">=0.6,<0.7" platformdirs = ">=2.2.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -tomlkit = ">=0.10.1" +toml = ">=0.9.2" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} -[package.extras] -spelling = ["pyenchant (>=3.2,<4.0)"] -testutils = ["gitpython (>3)"] - [[package]] name = "pynacl" version = "1.5.0" @@ -3935,25 +3861,23 @@ six = "*" [[package]] name = "pywin32" -version = "306" +version = "227" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, - {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, - {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, - {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, - {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, - {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, - {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, - {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, - {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, - {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, - {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, - {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, - {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, - {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, + {file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"}, + {file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"}, + {file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"}, + {file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"}, + {file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"}, + {file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"}, + {file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"}, + {file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"}, + {file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"}, + {file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"}, + {file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"}, + {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"}, ] [[package]] @@ -4693,17 +4617,6 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -[[package]] -name = "tomlkit" -version = "0.12.4" -description = "Style preserving TOML library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, - {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, -] - [[package]] name = "tornado" version = "6.4" @@ -4763,7 +4676,7 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, name = "typed-ast" version = "1.5.5" description = "a fork of Python 2 and 3 ast modules with type comment support" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "typed_ast-1.5.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4bc1efe0ce3ffb74784e06460f01a223ac1f6ab31c6bc0376a21184bf5aabe3b"}, @@ -4833,6 +4746,28 @@ dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2 doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.971)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] +[[package]] +name = "types-chardet" +version = "5.0.4.6" +description = "Typing stubs for chardet" +optional = false +python-versions = "*" +files = [ + {file = "types-chardet-5.0.4.6.tar.gz", hash = "sha256:caf4c74cd13ccfd8b3313c314aba943b159de562a2573ed03137402b2bb37818"}, + {file = "types_chardet-5.0.4.6-py3-none-any.whl", hash = "sha256:ea832d87e798abf1e4dfc73767807c2b7fee35d0003ae90348aea4ae00fb004d"}, +] + +[[package]] +name = "types-cryptography" +version = "3.3.23.2" +description = "Typing stubs for cryptography" +optional = false +python-versions = "*" +files = [ + {file = "types-cryptography-3.3.23.2.tar.gz", hash = "sha256:09cc53f273dd4d8c29fa7ad11fefd9b734126d467960162397bc5e3e604dea75"}, + {file = "types_cryptography-3.3.23.2-py3-none-any.whl", hash = "sha256:b965d548f148f8e87f353ccf2b7bd92719fdf6c845ff7cedf2abb393a0643e4f"}, +] + [[package]] name = "types-dateparser" version = "1.2.0.20240420" @@ -4855,6 +4790,61 @@ files = [ {file = "types_decorator-5.1.8.20240310-py3-none-any.whl", hash = "sha256:3af75dc38f5baf65b9b53ea6661ce2056c5ca7d70d620d0b1f620285c1242757"}, ] +[[package]] +name = "types-emoji" +version = "2.1.0.3" +description = "Typing stubs for emoji" +optional = false +python-versions = "*" +files = [ + {file = "types-emoji-2.1.0.3.tar.gz", hash = "sha256:98ddb0ff5f48622550c431206e4dbfcbde8ca8bc03fcfbb9962a778d2049aa13"}, + {file = "types_emoji-2.1.0.3-py3-none-any.whl", hash = "sha256:32fe5cf02c4834bb59579380f600a89d1471571fb56e36465cbd0c7d95f669ca"}, +] + +[[package]] +name = "types-filelock" +version = "3.2.7" +description = "Typing stubs for filelock" +optional = false +python-versions = "*" +files = [ + {file = "types-filelock-3.2.7.tar.gz", hash = "sha256:0673a25b45725c5c45661fe3744c3d8058653a16e683f0ae4a74afb44a0cdef4"}, + {file = "types_filelock-3.2.7-py3-none-any.whl", hash = "sha256:ee0ee2b4ec3d491ebe71f7343e21435c3a07f910881275a94788cac42acf4339"}, +] + +[[package]] +name = "types-futures" +version = "3.3.8" +description = "Typing stubs for futures" +optional = false +python-versions = "*" +files = [ + {file = "types-futures-3.3.8.tar.gz", hash = "sha256:6fe8ccc2c2af7ef2fdd9bf73eab6d617074f09f30ad7d373510b4043d39c42de"}, + {file = "types_futures-3.3.8-py3-none-any.whl", hash = "sha256:d6e97ec51d56b96debfbf1dea32ebec22c1687f16d2547ea0a34b48db45df205"}, +] + +[[package]] +name = "types-ipaddress" +version = "1.0.8" +description = "Typing stubs for ipaddress" +optional = false +python-versions = "*" +files = [ + {file = "types-ipaddress-1.0.8.tar.gz", hash = "sha256:a03df3be5935e50ba03fa843daabff539a041a28e73e0fce2c5705bee54d3841"}, + {file = "types_ipaddress-1.0.8-py3-none-any.whl", hash = "sha256:4933b74da157ba877b1a705d64f6fa7742745e9ffd65e51011f370c11ebedb55"}, +] + +[[package]] +name = "types-markdown" +version = "3.6.0.20240316" +description = "Typing stubs for Markdown" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-Markdown-3.6.0.20240316.tar.gz", hash = "sha256:de9fb84860b55b647b170ca576895fcca61b934a6ecdc65c31932c6795b440b8"}, + {file = "types_Markdown-3.6.0.20240316-py3-none-any.whl", hash = "sha256:d3ecd26a940781787c7b57a0e3c9d77c150db64e12989ef687059edc83dfd78a"}, +] + [[package]] name = "types-mock" version = "4.0.15.2" @@ -4866,6 +4856,20 @@ files = [ {file = "types_mock-4.0.15.2-py3-none-any.whl", hash = "sha256:39d489b6d9361b75448677680a3087701c0cfab61260363cfc0f646d2bf0a8b2"}, ] +[[package]] +name = "types-paramiko" +version = "2.12.0.1" +description = "Typing stubs for paramiko" +optional = false +python-versions = "*" +files = [ + {file = "types-paramiko-2.12.0.1.tar.gz", hash = "sha256:591c30cfd1ee75b755863d43eea54b68fb7c19cfaa2a10229ea55637f74d3da5"}, + {file = "types_paramiko-2.12.0.1-py3-none-any.whl", hash = "sha256:43807361500feb5a87177ef4524f2f2caf8c3bb112666cd83f4acd84d9d0a179"}, +] + +[package.dependencies] +types-cryptography = "*" + [[package]] name = "types-pkg-resources" version = "0.1.3" @@ -4877,6 +4881,28 @@ files = [ {file = "types_pkg_resources-0.1.3-py2.py3-none-any.whl", hash = "sha256:0cb9972cee992249f93fff1a491bf2dc3ce674e5a1926e27d4f0866f7d9b6d9c"}, ] +[[package]] +name = "types-protobuf" +version = "4.25.0.20240417" +description = "Typing stubs for protobuf" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-protobuf-4.25.0.20240417.tar.gz", hash = "sha256:c34eff17b9b3a0adb6830622f0f302484e4c089f533a46e3f147568313544352"}, + {file = "types_protobuf-4.25.0.20240417-py3-none-any.whl", hash = "sha256:e9b613227c2127e3d4881d75d93c93b4d6fd97b5f6a099a0b654a05351c8685d"}, +] + +[[package]] +name = "types-pymysql" +version = "1.1.0.20240425" +description = "Typing stubs for PyMySQL" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-PyMySQL-1.1.0.20240425.tar.gz", hash = "sha256:afe24e8eba5f4851b729835530a1698b1b1645a93f9f9c83ae45228866ed31fc"}, + {file = "types_PyMySQL-1.1.0.20240425-py3-none-any.whl", hash = "sha256:32a472233de53b913e934695530a2d083146b81ed6de1669ecb845f76b6ddc15"}, +] + [[package]] name = "types-python-dateutil" version = "2.9.0.20240316" @@ -4890,38 +4916,60 @@ files = [ [[package]] name = "types-pytz" -version = "2024.1.0.20240417" +version = "2022.7.1.2" description = "Typing stubs for pytz" optional = false +python-versions = "*" +files = [ + {file = "types-pytz-2022.7.1.2.tar.gz", hash = "sha256:487d3e8e9f4071eec8081746d53fa982bbc05812e719dcbf2ebf3d55a1a4cd28"}, + {file = "types_pytz-2022.7.1.2-py3-none-any.whl", hash = "sha256:40ca448a928d566f7d44ddfde0066e384f7ffbd4da2778e42a4570eaca572446"}, +] + +[[package]] +name = "types-pyvmomi" +version = "8.0.0.6" +description = "Typing stubs for pyvmomi" +optional = false +python-versions = "*" +files = [ + {file = "types-pyvmomi-8.0.0.6.tar.gz", hash = "sha256:494114a0ff30fa9cfe80dbd940308757586c836717803d8cb8af90f4f3190932"}, + {file = "types_pyvmomi-8.0.0.6-py3-none-any.whl", hash = "sha256:f1d95b25ce460cef6c2169053dbacfdab3872a2d30d184f1c3b3b2f0ba94be73"}, +] + +[[package]] +name = "types-pyyaml" +version = "6.0.12.20240311" +description = "Typing stubs for PyYAML" +optional = false python-versions = ">=3.8" files = [ - {file = "types-pytz-2024.1.0.20240417.tar.gz", hash = "sha256:6810c8a1f68f21fdf0f4f374a432487c77645a0ac0b31de4bf4690cf21ad3981"}, - {file = "types_pytz-2024.1.0.20240417-py3-none-any.whl", hash = "sha256:8335d443310e2db7b74e007414e74c4f53b67452c0cb0d228ca359ccfba59659"}, + {file = "types-PyYAML-6.0.12.20240311.tar.gz", hash = "sha256:a9e0f0f88dc835739b0c1ca51ee90d04ca2a897a71af79de9aec5f38cb0a5342"}, + {file = "types_PyYAML-6.0.12.20240311-py3-none-any.whl", hash = "sha256:b845b06a1c7e54b8e5b4c683043de0d9caf205e7434b3edc678ff2411979b8f6"}, ] [[package]] name = "types-requests" -version = "2.31.0.20240406" +version = "2.28.11" description = "Typing stubs for requests" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, - {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, + {file = "types-requests-2.28.11.tar.gz", hash = "sha256:7ee827eb8ce611b02b5117cfec5da6455365b6a575f5e3ff19f655ba603e6b4e"}, + {file = "types_requests-2.28.11-py3-none-any.whl", hash = "sha256:af5f55e803cabcfb836dad752bd6d8a0fc8ef1cd84243061c0e27dee04ccf4fd"}, ] [package.dependencies] -urllib3 = ">=2" +types-urllib3 = "<1.27" [[package]] -name = "types-setuptools" -version = "69.5.0.20240423" -description = "Typing stubs for setuptools" +name = "types-six" +version = "1.16.21.20240513" +description = "Typing stubs for six" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.5.0.20240423.tar.gz", hash = "sha256:a7ba908f1746c4337d13f027fa0f4a5bcad6d1d92048219ba792b3295c58586d"}, - {file = "types_setuptools-69.5.0.20240423-py3-none-any.whl", hash = "sha256:a4381e041510755a6c9210e26ad55b1629bc10237aeb9cb8b6bd24996b73db48"}, + {file = "types-six-1.16.21.20240513.tar.gz", hash = "sha256:cdf445b5161bf17753500713a475ab79a45bd0d87728b8bfcecd86e2fbf66402"}, + {file = "types_six-1.16.21.20240513-py3-none-any.whl", hash = "sha256:af2a105be6d504339bfed81319cc8e8697865f0ee5c6baa63658f127b33b9e63"}, ] [[package]] @@ -4957,6 +5005,17 @@ files = [ {file = "types_ujson-5.9.0.0-py3-none-any.whl", hash = "sha256:f274fa604ed6317effcd1c424ef4cf292c3b0689cb118fb3180689d40ed1f4ed"}, ] +[[package]] +name = "types-urllib3" +version = "1.26.25.14" +description = "Typing stubs for urllib3" +optional = false +python-versions = "*" +files = [ + {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, + {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, +] + [[package]] name = "typing-extensions" version = "4.11.0" @@ -5074,20 +5133,19 @@ files = [ [[package]] name = "urllib3" -version = "2.2.1" +version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, + {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "urwid" @@ -5219,81 +5277,62 @@ watchdog = ["watchdog (>=2.3)"] [[package]] name = "wrapt" -version = "1.16.0" +version = "1.13.3" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "wrapt-1.13.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229"}, + {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80"}, + {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca"}, + {file = "wrapt-1.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44"}, + {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056"}, + {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785"}, + {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096"}, + {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33"}, + {file = "wrapt-1.13.3-cp310-cp310-win32.whl", hash = "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f"}, + {file = "wrapt-1.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3"}, + {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755"}, + {file = "wrapt-1.13.3-cp35-cp35m-win32.whl", hash = "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851"}, + {file = "wrapt-1.13.3-cp35-cp35m-win_amd64.whl", hash = "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13"}, + {file = "wrapt-1.13.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918"}, + {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade"}, + {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc"}, + {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf"}, + {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125"}, + {file = "wrapt-1.13.3-cp36-cp36m-win32.whl", hash = "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36"}, + {file = "wrapt-1.13.3-cp36-cp36m-win_amd64.whl", hash = "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10"}, + {file = "wrapt-1.13.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068"}, + {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709"}, + {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df"}, + {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2"}, + {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b"}, + {file = "wrapt-1.13.3-cp37-cp37m-win32.whl", hash = "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829"}, + {file = "wrapt-1.13.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea"}, + {file = "wrapt-1.13.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9"}, + {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554"}, + {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c"}, + {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b"}, + {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce"}, + {file = "wrapt-1.13.3-cp38-cp38-win32.whl", hash = "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79"}, + {file = "wrapt-1.13.3-cp38-cp38-win_amd64.whl", hash = "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb"}, + {file = "wrapt-1.13.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb"}, + {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32"}, + {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7"}, + {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e"}, + {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640"}, + {file = "wrapt-1.13.3-cp39-cp39-win32.whl", hash = "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374"}, + {file = "wrapt-1.13.3-cp39-cp39-win_amd64.whl", hash = "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb"}, + {file = "wrapt-1.13.3.tar.gz", hash = "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"}, ] [[package]] @@ -5526,5 +5565,5 @@ generate-unit-tests = ["klara"] [metadata] lock-version = "2.0" -python-versions = "^3.8,<3.12" -content-hash = "924321f945a67af239a680ebac382537b57bb3b5af71f0b0a1dd2717b9dae9b0" +python-versions = ">=3.8,<3.11" +content-hash = "607aa70a4746214fcff02a451ad356b25520a17c7a87008aadb79616c08f98df" diff --git a/pyproject.toml b/pyproject.toml index b99e12c3f3c..a2aabc394a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,19 +1,18 @@ [tool.poetry] name = "demisto-sdk" -version = "1.29.3" +version = "1.29.2" description = "\"A Python library for the Demisto SDK\"" authors = ["Demisto"] license = "MIT" readme = "README.md" -classifiers = [ +classifiers=[ 'Intended Audience :: Developers', 'Natural Language :: English', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: Implementation :: CPython', + 'Programming Language :: Python :: Implementation :: CPython' ] exclude = ["TestSuite/**", "tests_end_to_end/**", "demisto_sdk/tests/**", "demisto_sdk/**/tests/**", "demisto_sdk/**/test_data/**", "demisto_sdk/**/test_files/**"] @@ -28,22 +27,22 @@ init-validation = "demisto_sdk.scripts.init_validation_script:main" validate-deleted-files = "demisto_sdk.scripts.validate_deleted_files:main" [tool.poetry.dependencies] -python = "^3.8,<3.12" -autopep8 = "^2.0.4" +python = ">=3.8,<3.11" +autopep8 = "^1.6.0" bandit = "^1.7.4" mypy = "^0.982" -pylint = "^2.17.0,<2.18" +pylint = "2.12.2" vulture = "^2.3" beautifulsoup4 = "^4.11.1" chardet = ">=4,<6" click = "^8.0.0" coloredlogs = "^15.0.1" configparser = "^5.2.0" -coverage = "^7.2.1,<7.4" # in 7.4 we get empty results +coverage = "^7.2.1" decorator = "^5.1.1" demisto-py = "^3.2.10" dictor = "^0.1.9" -docker = "^6.0.0" +docker = "^5.0.3" flatten-dict = "^0.4.2" gitdb = "^4.0.9" google-cloud-storage = "^2.13.0" @@ -62,7 +61,7 @@ slack-sdk = "^3.17.0" tenacity = "^8.2.3" tabulate = ">=0.8.9,<0.10.0" ujson = "^5.1.0" -urllib3 = "^2.2.1" +urllib3 = "^1.26.9" wcmatch = "^8.3" yamlordereddictloader = "^0.4.0" GitPython = "^3.1.37" @@ -75,42 +74,52 @@ importlib-resources = "^5.6.0" dictdiffer = "^0.9.0" imagesize = "^1.3.0" dateparser = "^1.1.1" -gsutil = { version = "5.17", optional = true } +typed-ast = "^1.5.2" +types-dateparser = "^1.1.0" +types-PyYAML = "^6.0.5" +types-requests = "2.28.11" +types-pytz = ">=2021.3.6,<2023.0.0" +types-python-dateutil = "^2.8.10" +types-pyvmomi = ">=7.0.6,<9.0.0" +types-tabulate = ">=0.8.6,<0.10.0" +types-paramiko = "^2.8.17" +types-emoji = ">=1.2.7,<3.0.0" +types-ipaddress = "^1.0.8" +types-chardet = ">=4.0.3,<6.0.0" +types-six = "^1.16.12" +types-PyMySQL = "^1.0.15" +typing-extensions = "^4.1.1" +gsutil = {version = "5.17", optional = true} ordered-set = "^4.1.0" +types-filelock = "^3.2.5" +types-Markdown = "^3.3.21" +types-futures = "^3.3.8" paramiko = "^2.11.0" neo4j = "^5.14.0" pydantic = "^1.10" -typer = { extras = ["all"], version = "^0.9.0" } -packaging = "^24.0" +types-decorator = "^5.1.8" +types-mock = "^4.0.15" +types-ujson = "^5.6.0.0" +typer = {extras = ["all"], version = "^0.9.0"} +types-pkg-resources = "^0.1.3" +types-toml = "^0.10.8.7" +packaging = "^23.1" orjson = "^3.8.3" more-itertools = "^9.0.0" junitparser = "^3.1.0" -google-cloud-secret-manager = "^2.18.3" +google-cloud-secret-manager = "^2.16.2" json5 = "^0.9.14" +types-protobuf = "^4.24.0.4" klara = { version = "^0.6.3", optional = true } -typing-extensions = "^4.1.1" # not a mypy types- dependency + + + pre-commit = "^3.5.0" lxml = "^5.0.0" uv = "^0.1.5" -toml = "^0.10.2" -werkzeug = "^2.2.0" # Added as mitmproxy8 -> flask<2.1 - - -[tool.poetry.group.types.dependencies] -types-requests = "^2.31.0.20240311" -types-mock = "^4.0.15" -types-setuptools = "^69.2.0.20240317" -types-ujson = "^5.6.0.0" -types-decorator = "^5.1.8" -types-pkg-resources = "^0.1.3" -types-toml = "^0.10.8.7" -types-tabulate = "^0.9.0.20240106" -types-pytz = "^2024.1.0.20240203" -types-dateparser = "^1.1.4.20240106" -types-python-dateutil = "^2.9.0.20240316" [tool.poetry.group.dev.dependencies] -mitmproxy = "^8.0.0" # if installing zstandard fails, make sure you have python3.x-dev installed. +mitmproxy = "^8.0.0" mock = "^4.0.3" pytest = "^7.1.1" pytest-cov = "^4.0.0" @@ -154,7 +163,7 @@ ignore = [ "F403", "F405", "E501", - "W293", # handled by Black + "W293", # handled by Black ] @@ -162,7 +171,7 @@ exclude = [ "demisto_sdk/tests/test_files/", "demisto_sdk/commands/generate_unit_tests/tests/test_files/", "demisto_sdk/commands/init/templates", - "demisto_sdk/commands/generate_yml_from_python/tests/generate_yml_from_python_test.py", + "demisto_sdk/commands/generate_yml_from_python/tests/generate_yml_from_python_test.py" ] select = [ @@ -198,4 +207,3 @@ max-complexity = 30 "distutils.version".msg = "Use packaging.version.Version instead" "packaging.version.LooseVersion".msg = "Use packaging.version.Version instead" "git.Repo".msg = "Use GitUtil instead" -"str.StrEnum".msg = "Import from demisto_sdk.commands.common.StrEnum for <3.11 compatability" From ab5b5a2c3f412f374fd7cc2105fd1c30002763f4 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 26 May 2024 10:05:47 +0300 Subject: [PATCH 23/33] test --- .../commands/common/schemas/casefield.yml | 2 +- .../commands/common/schemas/caselayout.yml | 0 demisto_sdk/commands/common/tools.py | 13 +++++++++++++ .../commands/content_graph/objects/__init__.py | 2 +- .../content_graph/objects/generic_module.py | 13 ++++++++++++- demisto_sdk/commands/format/format_module.py | 3 +++ .../commands/validate/old_validate_manager.py | 3 +++ demisto_sdk/scripts/init_validation_script.py | 16 ++++++++++++++-- 8 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 demisto_sdk/commands/common/schemas/caselayout.yml diff --git a/demisto_sdk/commands/common/schemas/casefield.yml b/demisto_sdk/commands/common/schemas/casefield.yml index 55703f43e5e..5dbbfc601e9 100644 --- a/demisto_sdk/commands/common/schemas/casefield.yml +++ b/demisto_sdk/commands/common/schemas/casefield.yml @@ -105,7 +105,7 @@ mapping: type: seq sequence: - type: str - enum: ['xsoar', 'marketplacev2', 'xpanse', 'xsoar_saas', 'xsoar_on_prem'] + enum: ['marketplacev2'] Aliases: type: seq sequence: diff --git a/demisto_sdk/commands/common/schemas/caselayout.yml b/demisto_sdk/commands/common/schemas/caselayout.yml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/demisto_sdk/commands/common/tools.py b/demisto_sdk/commands/common/tools.py index 980bf3c9832..cf443cc9333 100644 --- a/demisto_sdk/commands/common/tools.py +++ b/demisto_sdk/commands/common/tools.py @@ -1807,6 +1807,9 @@ def find_type( FileType | None: Enum representation of the content file type, None otherwise. """ from demisto_sdk.commands.content_graph.objects import ( + CaseField, + CaseLayout, + CaseLayoutRule, Classifier, CorrelationRule, Dashboard, @@ -1981,9 +1984,19 @@ def find_type( if LayoutRule.match(_dict, Path(path)): return FileType.LAYOUT_RULE + if CaseField.match(_dict, Path(path)): + return FileType.CASE_FIELD + + if CaseLayout.match(_dict, Path(path)): + return FileType.CASE_LAYOUT + + if CaseLayoutRule.match(_dict, Path(path)): + return FileType.CASE_LAYOUT_RULE + if ListObject.match(_dict, Path(path)): return FileType.LISTS + # When using it for all files validation- sometimes 'id' can be integer if GenericField.match(_dict, Path(path)): return FileType.GENERIC_FIELD diff --git a/demisto_sdk/commands/content_graph/objects/__init__.py b/demisto_sdk/commands/content_graph/objects/__init__.py index fc749117187..289674ef988 100644 --- a/demisto_sdk/commands/content_graph/objects/__init__.py +++ b/demisto_sdk/commands/content_graph/objects/__init__.py @@ -37,7 +37,7 @@ "PreProcessRule", "AssetsModelingRule", "CaseField", - "CaseLayout" + "CaseLayout", "CaseLayoutRule", ] from demisto_sdk.commands.content_graph.objects.assets_modeling_rule import ( diff --git a/demisto_sdk/commands/content_graph/objects/generic_module.py b/demisto_sdk/commands/content_graph/objects/generic_module.py index 1a890607e08..83e54ab5564 100644 --- a/demisto_sdk/commands/content_graph/objects/generic_module.py +++ b/demisto_sdk/commands/content_graph/objects/generic_module.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import List, Optional +from typing import List, Optional, Set from pydantic import Field @@ -16,3 +16,14 @@ def match(_dict: dict, path: Path) -> bool: if "definitionIds" in _dict and "views" in _dict and path.suffix == ".json": return True return False + + def metadata_fields(self) -> Set[str]: + return ( + super() + .metadata_fields() + .union( + { + "definitionIds", + } + ) + ) diff --git a/demisto_sdk/commands/format/format_module.py b/demisto_sdk/commands/format/format_module.py index 8a8b3a42379..d1a339552be 100644 --- a/demisto_sdk/commands/format/format_module.py +++ b/demisto_sdk/commands/format/format_module.py @@ -99,6 +99,9 @@ "layoutrule": BaseUpdateJSON, "assetsmodelingrule": BaseUpdateYML, "assetsmodelingruleschema": BaseUpdateJSON, + "casefield": BaseUpdateJSON, + "caselayout": LayoutBaseFormat, + "caselayoutrule": BaseUpdateJSON, } UNFORMATTED_FILES = [ diff --git a/demisto_sdk/commands/validate/old_validate_manager.py b/demisto_sdk/commands/validate/old_validate_manager.py index b6f665793d6..2994c062691 100644 --- a/demisto_sdk/commands/validate/old_validate_manager.py +++ b/demisto_sdk/commands/validate/old_validate_manager.py @@ -316,6 +316,9 @@ def __init__( FileType.PEM, FileType.METADATA, FileType.VULTURE_WHITELIST, + FileType.CASE_LAYOUT_RULE, + FileType.CASE_LAYOUT, + FileType.CASE_FIELD, ) self.is_external_repo = is_external_repo diff --git a/demisto_sdk/scripts/init_validation_script.py b/demisto_sdk/scripts/init_validation_script.py index b6e352043b2..94ed2e21eab 100644 --- a/demisto_sdk/scripts/init_validation_script.py +++ b/demisto_sdk/scripts/init_validation_script.py @@ -148,6 +148,18 @@ "import": "from demisto_sdk.commands.content_graph.objects.xsiam_report import XSIAMReport", "content_type": "XSIAMReport", }, + "30": { + "import": "from demisto_sdk.commands.content_graph.objects.case_field", + "content_type": "CaseField", + }, + "31": { + "import": "from demisto_sdk.commands.content_graph.objects.case_layout", + "content_type": "CaseLayout", + }, + "32": { + "import": "from demisto_sdk.commands.content_graph.objects.case_layout_rule", + "content_type": "CaseLayoutRule", + } } VALIDATION_TEMPLATE = """ @@ -283,7 +295,7 @@ def initialize_validator_class_name(self): ) ) while not validator_class_name or not bool( - re.match(pascal_case_pattern, validator_class_name) + re.match(pascal_case_pattern, validator_class_name) ): validator_class_name = str( input( @@ -307,7 +319,7 @@ def initialize_git_statuses(self): ) ) while self.git_statuses_str and not set( - self.git_statuses_str.split(",") + self.git_statuses_str.split(",") ).issubset({"A", "R", "M", "D"}): self.git_statuses_str = str( input( From 26ea1a4423870932e13f371f6962a30c729a32f8 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 26 May 2024 10:08:29 +0300 Subject: [PATCH 24/33] lock --- poetry.lock | 452 ++++++++++++++++++++++++++----------------------- pyproject.toml | 78 ++++----- 2 files changed, 271 insertions(+), 259 deletions(-) diff --git a/poetry.lock b/poetry.lock index 30b3330a318..7dc6290dba5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -162,20 +162,22 @@ files = [ [[package]] name = "astroid" -version = "2.9.3" +version = "2.15.8" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" files = [ - {file = "astroid-2.9.3-py3-none-any.whl", hash = "sha256:506daabe5edffb7e696ad82483ad0228245a9742ed7d2d8c9cdb31537decf9f6"}, - {file = "astroid-2.9.3.tar.gz", hash = "sha256:1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"}, + {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, + {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, ] [package.dependencies] lazy-object-proxy = ">=1.4.0" -setuptools = ">=20.0" -typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} -wrapt = ">=1.11,<1.14" +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +wrapt = [ + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, +] [[package]] name = "asttokens" @@ -227,18 +229,18 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "autopep8" -version = "1.7.0" +version = "2.1.1" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "autopep8-1.7.0-py2.py3-none-any.whl", hash = "sha256:6f09e90a2be784317e84dc1add17ebfc7abe3924239957a37e5040e27d812087"}, - {file = "autopep8-1.7.0.tar.gz", hash = "sha256:ca9b1a83e53a7fad65d731dc7a2a2d50aa48f43850407c59f6a1a306c4201142"}, + {file = "autopep8-2.1.1-py2.py3-none-any.whl", hash = "sha256:57c1026ee3ee40f57c5b93073b705f8e30aa52411fca33306d730274d2882bba"}, + {file = "autopep8-2.1.1.tar.gz", hash = "sha256:bc9b267f14d358a9af574b95e95a661681c60a275ffce419ba5fb4eae9920bcc"}, ] [package.dependencies] -pycodestyle = ">=2.9.1" -toml = "*" +pycodestyle = ">=2.11.0" +tomli = {version = "*", markers = "python_version < \"3.11\""} [[package]] name = "backcall" @@ -1062,6 +1064,21 @@ files = [ {file = "dictor-0.1.12.tar.gz", hash = "sha256:6db48375ae1e53dc9ed844e85b38f4e3fbfbf6a4e60beca377515ad14453b91b"}, ] +[[package]] +name = "dill" +version = "0.3.8" +description = "serialize all of Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, +] + +[package.extras] +graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] + [[package]] name = "distlib" version = "0.3.8" @@ -1075,23 +1092,24 @@ files = [ [[package]] name = "docker" -version = "5.0.3" +version = "6.1.3" description = "A Python library for the Docker Engine API." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "docker-5.0.3-py2.py3-none-any.whl", hash = "sha256:7a79bb439e3df59d0a72621775d600bc8bc8b422d285824cb37103eab91d1ce0"}, - {file = "docker-5.0.3.tar.gz", hash = "sha256:d916a26b62970e7c2f554110ed6af04c7ccff8e9f81ad17d0d40c75637e227fb"}, + {file = "docker-6.1.3-py3-none-any.whl", hash = "sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9"}, + {file = "docker-6.1.3.tar.gz", hash = "sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20"}, ] [package.dependencies] -pywin32 = {version = "227", markers = "sys_platform == \"win32\""} -requests = ">=2.14.2,<2.18.0 || >2.18.0" +packaging = ">=14.0" +pywin32 = {version = ">=304", markers = "sys_platform == \"win32\""} +requests = ">=2.26.0" +urllib3 = ">=1.26.0" websocket-client = ">=0.32.0" [package.extras] -ssh = ["paramiko (>=2.4.2)"] -tls = ["cryptography (>=3.4.7)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"] +ssh = ["paramiko (>=2.4.3)"] [[package]] name = "docopt" @@ -1359,6 +1377,30 @@ files = [ {file = "giturlparse-0.10.0.tar.gz", hash = "sha256:2595ab291d30717cda8474b874c9fd509f1b9802ad7f6968c36a45e4b13eb337"}, ] +[[package]] +name = "google-api-core" +version = "1.34.1" +description = "Google API client core library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-api-core-1.34.1.tar.gz", hash = "sha256:3399c92887a97d33038baa4bfd3bf07acc05d474b0171f333e1f641c1364e552"}, + {file = "google_api_core-1.34.1-py3-none-any.whl", hash = "sha256:52bcc9d9937735f8a3986fa0bbf9135ae9cf5393a722387e5eced520e39c774a"}, +] + +[package.dependencies] +google-auth = ">=1.25.0,<3.0dev" +googleapis-common-protos = ">=1.56.2,<2.0dev" +grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} +grpcio-status = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.0.0dev" +requests = ">=2.18.0,<3.0.0dev" + +[package.extras] +grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)"] +grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] +grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] + [[package]] name = "google-api-core" version = "2.19.0" @@ -1373,8 +1415,8 @@ files = [ [package.dependencies] google-auth = ">=2.14.1,<3.0.dev0" googleapis-common-protos = ">=1.56.2,<2.0.dev0" -grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""} -grpcio-status = {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "extra == \"grpc\""} +grpcio = {version = ">=1.33.2,<2.0dev", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""} +grpcio-status = {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" requests = ">=2.18.0,<3.0.0.dev0" @@ -1466,6 +1508,28 @@ grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" +[[package]] +name = "google-cloud-storage" +version = "2.14.0" +description = "Google Cloud Storage API client library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-cloud-storage-2.14.0.tar.gz", hash = "sha256:2d23fcf59b55e7b45336729c148bb1c464468c69d5efbaee30f7201dd90eb97e"}, + {file = "google_cloud_storage-2.14.0-py2.py3-none-any.whl", hash = "sha256:8641243bbf2a2042c16a6399551fbb13f062cbc9a2de38d6c0bb5426962e9dbd"}, +] + +[package.dependencies] +google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev" +google-auth = ">=2.23.3,<3.0dev" +google-cloud-core = ">=2.3.0,<3.0dev" +google-crc32c = ">=1.0,<2.0dev" +google-resumable-media = ">=2.6.0" +requests = ">=2.18.0,<3.0.0dev" + +[package.extras] +protobuf = ["protobuf (<5.0.0dev)"] + [[package]] name = "google-cloud-storage" version = "2.16.0" @@ -3022,13 +3086,13 @@ files = [ [[package]] name = "packaging" -version = "23.2" +version = "24.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] [[package]] @@ -3535,24 +3599,33 @@ python-dateutil = ">=2.8.0" [[package]] name = "pylint" -version = "2.12.2" +version = "2.17.7" description = "python code static checker" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" files = [ - {file = "pylint-2.12.2-py3-none-any.whl", hash = "sha256:daabda3f7ed9d1c60f52d563b1b854632fd90035bcf01443e234d3dc794e3b74"}, - {file = "pylint-2.12.2.tar.gz", hash = "sha256:9d945a73640e1fec07ee34b42f5669b770c759acd536ec7b16d7e4b87a9c9ff9"}, + {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, + {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, ] [package.dependencies] -astroid = ">=2.9.0,<2.10" -colorama = {version = "*", markers = "sys_platform == \"win32\""} +astroid = ">=2.15.8,<=2.17.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = [ + {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, + {version = ">=0.2", markers = "python_version < \"3.11\""}, +] isort = ">=4.2.5,<6" -mccabe = ">=0.6,<0.7" +mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" -toml = ">=0.9.2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + [[package]] name = "pynacl" version = "1.5.0" @@ -3861,23 +3934,25 @@ six = "*" [[package]] name = "pywin32" -version = "227" +version = "306" description = "Python for Window Extensions" optional = false python-versions = "*" files = [ - {file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"}, - {file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"}, - {file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"}, - {file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"}, - {file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"}, - {file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"}, - {file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"}, - {file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"}, - {file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"}, - {file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"}, - {file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"}, - {file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"}, + {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, + {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, + {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, + {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, + {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, + {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, + {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, + {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, + {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, + {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, + {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, ] [[package]] @@ -4617,6 +4692,17 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +[[package]] +name = "tomlkit" +version = "0.12.5" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"}, + {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, +] + [[package]] name = "tornado" version = "6.4" @@ -4676,7 +4762,7 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, name = "typed-ast" version = "1.5.5" description = "a fork of Python 2 and 3 ast modules with type comment support" -optional = false +optional = true python-versions = ">=3.6" files = [ {file = "typed_ast-1.5.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4bc1efe0ce3ffb74784e06460f01a223ac1f6ab31c6bc0376a21184bf5aabe3b"}, @@ -4746,28 +4832,6 @@ dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2 doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"] test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.971)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<14.0.0)", "shellingham (>=1.3.0,<2.0.0)"] -[[package]] -name = "types-chardet" -version = "5.0.4.6" -description = "Typing stubs for chardet" -optional = false -python-versions = "*" -files = [ - {file = "types-chardet-5.0.4.6.tar.gz", hash = "sha256:caf4c74cd13ccfd8b3313c314aba943b159de562a2573ed03137402b2bb37818"}, - {file = "types_chardet-5.0.4.6-py3-none-any.whl", hash = "sha256:ea832d87e798abf1e4dfc73767807c2b7fee35d0003ae90348aea4ae00fb004d"}, -] - -[[package]] -name = "types-cryptography" -version = "3.3.23.2" -description = "Typing stubs for cryptography" -optional = false -python-versions = "*" -files = [ - {file = "types-cryptography-3.3.23.2.tar.gz", hash = "sha256:09cc53f273dd4d8c29fa7ad11fefd9b734126d467960162397bc5e3e604dea75"}, - {file = "types_cryptography-3.3.23.2-py3-none-any.whl", hash = "sha256:b965d548f148f8e87f353ccf2b7bd92719fdf6c845ff7cedf2abb393a0643e4f"}, -] - [[package]] name = "types-dateparser" version = "1.2.0.20240420" @@ -4790,61 +4854,6 @@ files = [ {file = "types_decorator-5.1.8.20240310-py3-none-any.whl", hash = "sha256:3af75dc38f5baf65b9b53ea6661ce2056c5ca7d70d620d0b1f620285c1242757"}, ] -[[package]] -name = "types-emoji" -version = "2.1.0.3" -description = "Typing stubs for emoji" -optional = false -python-versions = "*" -files = [ - {file = "types-emoji-2.1.0.3.tar.gz", hash = "sha256:98ddb0ff5f48622550c431206e4dbfcbde8ca8bc03fcfbb9962a778d2049aa13"}, - {file = "types_emoji-2.1.0.3-py3-none-any.whl", hash = "sha256:32fe5cf02c4834bb59579380f600a89d1471571fb56e36465cbd0c7d95f669ca"}, -] - -[[package]] -name = "types-filelock" -version = "3.2.7" -description = "Typing stubs for filelock" -optional = false -python-versions = "*" -files = [ - {file = "types-filelock-3.2.7.tar.gz", hash = "sha256:0673a25b45725c5c45661fe3744c3d8058653a16e683f0ae4a74afb44a0cdef4"}, - {file = "types_filelock-3.2.7-py3-none-any.whl", hash = "sha256:ee0ee2b4ec3d491ebe71f7343e21435c3a07f910881275a94788cac42acf4339"}, -] - -[[package]] -name = "types-futures" -version = "3.3.8" -description = "Typing stubs for futures" -optional = false -python-versions = "*" -files = [ - {file = "types-futures-3.3.8.tar.gz", hash = "sha256:6fe8ccc2c2af7ef2fdd9bf73eab6d617074f09f30ad7d373510b4043d39c42de"}, - {file = "types_futures-3.3.8-py3-none-any.whl", hash = "sha256:d6e97ec51d56b96debfbf1dea32ebec22c1687f16d2547ea0a34b48db45df205"}, -] - -[[package]] -name = "types-ipaddress" -version = "1.0.8" -description = "Typing stubs for ipaddress" -optional = false -python-versions = "*" -files = [ - {file = "types-ipaddress-1.0.8.tar.gz", hash = "sha256:a03df3be5935e50ba03fa843daabff539a041a28e73e0fce2c5705bee54d3841"}, - {file = "types_ipaddress-1.0.8-py3-none-any.whl", hash = "sha256:4933b74da157ba877b1a705d64f6fa7742745e9ffd65e51011f370c11ebedb55"}, -] - -[[package]] -name = "types-markdown" -version = "3.6.0.20240316" -description = "Typing stubs for Markdown" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-Markdown-3.6.0.20240316.tar.gz", hash = "sha256:de9fb84860b55b647b170ca576895fcca61b934a6ecdc65c31932c6795b440b8"}, - {file = "types_Markdown-3.6.0.20240316-py3-none-any.whl", hash = "sha256:d3ecd26a940781787c7b57a0e3c9d77c150db64e12989ef687059edc83dfd78a"}, -] - [[package]] name = "types-mock" version = "4.0.15.2" @@ -4856,20 +4865,6 @@ files = [ {file = "types_mock-4.0.15.2-py3-none-any.whl", hash = "sha256:39d489b6d9361b75448677680a3087701c0cfab61260363cfc0f646d2bf0a8b2"}, ] -[[package]] -name = "types-paramiko" -version = "2.12.0.1" -description = "Typing stubs for paramiko" -optional = false -python-versions = "*" -files = [ - {file = "types-paramiko-2.12.0.1.tar.gz", hash = "sha256:591c30cfd1ee75b755863d43eea54b68fb7c19cfaa2a10229ea55637f74d3da5"}, - {file = "types_paramiko-2.12.0.1-py3-none-any.whl", hash = "sha256:43807361500feb5a87177ef4524f2f2caf8c3bb112666cd83f4acd84d9d0a179"}, -] - -[package.dependencies] -types-cryptography = "*" - [[package]] name = "types-pkg-resources" version = "0.1.3" @@ -4881,28 +4876,6 @@ files = [ {file = "types_pkg_resources-0.1.3-py2.py3-none-any.whl", hash = "sha256:0cb9972cee992249f93fff1a491bf2dc3ce674e5a1926e27d4f0866f7d9b6d9c"}, ] -[[package]] -name = "types-protobuf" -version = "4.25.0.20240417" -description = "Typing stubs for protobuf" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-protobuf-4.25.0.20240417.tar.gz", hash = "sha256:c34eff17b9b3a0adb6830622f0f302484e4c089f533a46e3f147568313544352"}, - {file = "types_protobuf-4.25.0.20240417-py3-none-any.whl", hash = "sha256:e9b613227c2127e3d4881d75d93c93b4d6fd97b5f6a099a0b654a05351c8685d"}, -] - -[[package]] -name = "types-pymysql" -version = "1.1.0.20240425" -description = "Typing stubs for PyMySQL" -optional = false -python-versions = ">=3.8" -files = [ - {file = "types-PyMySQL-1.1.0.20240425.tar.gz", hash = "sha256:afe24e8eba5f4851b729835530a1698b1b1645a93f9f9c83ae45228866ed31fc"}, - {file = "types_PyMySQL-1.1.0.20240425-py3-none-any.whl", hash = "sha256:32a472233de53b913e934695530a2d083146b81ed6de1669ecb845f76b6ddc15"}, -] - [[package]] name = "types-python-dateutil" version = "2.9.0.20240316" @@ -4916,60 +4889,38 @@ files = [ [[package]] name = "types-pytz" -version = "2022.7.1.2" +version = "2024.1.0.20240417" description = "Typing stubs for pytz" optional = false -python-versions = "*" -files = [ - {file = "types-pytz-2022.7.1.2.tar.gz", hash = "sha256:487d3e8e9f4071eec8081746d53fa982bbc05812e719dcbf2ebf3d55a1a4cd28"}, - {file = "types_pytz-2022.7.1.2-py3-none-any.whl", hash = "sha256:40ca448a928d566f7d44ddfde0066e384f7ffbd4da2778e42a4570eaca572446"}, -] - -[[package]] -name = "types-pyvmomi" -version = "8.0.0.6" -description = "Typing stubs for pyvmomi" -optional = false -python-versions = "*" -files = [ - {file = "types-pyvmomi-8.0.0.6.tar.gz", hash = "sha256:494114a0ff30fa9cfe80dbd940308757586c836717803d8cb8af90f4f3190932"}, - {file = "types_pyvmomi-8.0.0.6-py3-none-any.whl", hash = "sha256:f1d95b25ce460cef6c2169053dbacfdab3872a2d30d184f1c3b3b2f0ba94be73"}, -] - -[[package]] -name = "types-pyyaml" -version = "6.0.12.20240311" -description = "Typing stubs for PyYAML" -optional = false python-versions = ">=3.8" files = [ - {file = "types-PyYAML-6.0.12.20240311.tar.gz", hash = "sha256:a9e0f0f88dc835739b0c1ca51ee90d04ca2a897a71af79de9aec5f38cb0a5342"}, - {file = "types_PyYAML-6.0.12.20240311-py3-none-any.whl", hash = "sha256:b845b06a1c7e54b8e5b4c683043de0d9caf205e7434b3edc678ff2411979b8f6"}, + {file = "types-pytz-2024.1.0.20240417.tar.gz", hash = "sha256:6810c8a1f68f21fdf0f4f374a432487c77645a0ac0b31de4bf4690cf21ad3981"}, + {file = "types_pytz-2024.1.0.20240417-py3-none-any.whl", hash = "sha256:8335d443310e2db7b74e007414e74c4f53b67452c0cb0d228ca359ccfba59659"}, ] [[package]] name = "types-requests" -version = "2.28.11" +version = "2.32.0.20240523" description = "Typing stubs for requests" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "types-requests-2.28.11.tar.gz", hash = "sha256:7ee827eb8ce611b02b5117cfec5da6455365b6a575f5e3ff19f655ba603e6b4e"}, - {file = "types_requests-2.28.11-py3-none-any.whl", hash = "sha256:af5f55e803cabcfb836dad752bd6d8a0fc8ef1cd84243061c0e27dee04ccf4fd"}, + {file = "types-requests-2.32.0.20240523.tar.gz", hash = "sha256:26b8a6de32d9f561192b9942b41c0ab2d8010df5677ca8aa146289d11d505f57"}, + {file = "types_requests-2.32.0.20240523-py3-none-any.whl", hash = "sha256:f19ed0e2daa74302069bbbbf9e82902854ffa780bc790742a810a9aaa52f65ec"}, ] [package.dependencies] -types-urllib3 = "<1.27" +urllib3 = ">=2" [[package]] -name = "types-six" -version = "1.16.21.20240513" -description = "Typing stubs for six" +name = "types-setuptools" +version = "69.5.0.20240522" +description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-six-1.16.21.20240513.tar.gz", hash = "sha256:cdf445b5161bf17753500713a475ab79a45bd0d87728b8bfcecd86e2fbf66402"}, - {file = "types_six-1.16.21.20240513-py3-none-any.whl", hash = "sha256:af2a105be6d504339bfed81319cc8e8697865f0ee5c6baa63658f127b33b9e63"}, + {file = "types-setuptools-69.5.0.20240522.tar.gz", hash = "sha256:c5a97601b2d040d3b9fcd0633730f0a8c86ebef208552525c97301427f261549"}, + {file = "types_setuptools-69.5.0.20240522-py3-none-any.whl", hash = "sha256:e27231cbc80648cfaee4921d2f1150107fdf8d33666958abf2aba0191a82688b"}, ] [[package]] @@ -5005,17 +4956,6 @@ files = [ {file = "types_ujson-5.9.0.0-py3-none-any.whl", hash = "sha256:f274fa604ed6317effcd1c424ef4cf292c3b0689cb118fb3180689d40ed1f4ed"}, ] -[[package]] -name = "types-urllib3" -version = "1.26.25.14" -description = "Typing stubs for urllib3" -optional = false -python-versions = "*" -files = [ - {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, - {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, -] - [[package]] name = "typing-extensions" version = "4.11.0" @@ -5133,19 +5073,20 @@ files = [ [[package]] name = "urllib3" -version = "1.26.18" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.8" files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "urwid" @@ -5335,6 +5276,85 @@ files = [ {file = "wrapt-1.13.3.tar.gz", hash = "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"}, ] +[[package]] +name = "wrapt" +version = "1.16.0" +description = "Module for decorators, wrappers and monkey patching." +optional = false +python-versions = ">=3.6" +files = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, +] + [[package]] name = "wsproto" version = "1.1.0" @@ -5565,5 +5585,5 @@ generate-unit-tests = ["klara"] [metadata] lock-version = "2.0" -python-versions = ">=3.8,<3.11" -content-hash = "607aa70a4746214fcff02a451ad356b25520a17c7a87008aadb79616c08f98df" +python-versions = "^3.8,<3.12" +content-hash = "924321f945a67af239a680ebac382537b57bb3b5af71f0b0a1dd2717b9dae9b0" diff --git a/pyproject.toml b/pyproject.toml index a2aabc394a2..b99e12c3f3c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,18 +1,19 @@ [tool.poetry] name = "demisto-sdk" -version = "1.29.2" +version = "1.29.3" description = "\"A Python library for the Demisto SDK\"" authors = ["Demisto"] license = "MIT" readme = "README.md" -classifiers=[ +classifiers = [ 'Intended Audience :: Developers', 'Natural Language :: English', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: Implementation :: CPython' + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: Implementation :: CPython', ] exclude = ["TestSuite/**", "tests_end_to_end/**", "demisto_sdk/tests/**", "demisto_sdk/**/tests/**", "demisto_sdk/**/test_data/**", "demisto_sdk/**/test_files/**"] @@ -27,22 +28,22 @@ init-validation = "demisto_sdk.scripts.init_validation_script:main" validate-deleted-files = "demisto_sdk.scripts.validate_deleted_files:main" [tool.poetry.dependencies] -python = ">=3.8,<3.11" -autopep8 = "^1.6.0" +python = "^3.8,<3.12" +autopep8 = "^2.0.4" bandit = "^1.7.4" mypy = "^0.982" -pylint = "2.12.2" +pylint = "^2.17.0,<2.18" vulture = "^2.3" beautifulsoup4 = "^4.11.1" chardet = ">=4,<6" click = "^8.0.0" coloredlogs = "^15.0.1" configparser = "^5.2.0" -coverage = "^7.2.1" +coverage = "^7.2.1,<7.4" # in 7.4 we get empty results decorator = "^5.1.1" demisto-py = "^3.2.10" dictor = "^0.1.9" -docker = "^5.0.3" +docker = "^6.0.0" flatten-dict = "^0.4.2" gitdb = "^4.0.9" google-cloud-storage = "^2.13.0" @@ -61,7 +62,7 @@ slack-sdk = "^3.17.0" tenacity = "^8.2.3" tabulate = ">=0.8.9,<0.10.0" ujson = "^5.1.0" -urllib3 = "^1.26.9" +urllib3 = "^2.2.1" wcmatch = "^8.3" yamlordereddictloader = "^0.4.0" GitPython = "^3.1.37" @@ -74,52 +75,42 @@ importlib-resources = "^5.6.0" dictdiffer = "^0.9.0" imagesize = "^1.3.0" dateparser = "^1.1.1" -typed-ast = "^1.5.2" -types-dateparser = "^1.1.0" -types-PyYAML = "^6.0.5" -types-requests = "2.28.11" -types-pytz = ">=2021.3.6,<2023.0.0" -types-python-dateutil = "^2.8.10" -types-pyvmomi = ">=7.0.6,<9.0.0" -types-tabulate = ">=0.8.6,<0.10.0" -types-paramiko = "^2.8.17" -types-emoji = ">=1.2.7,<3.0.0" -types-ipaddress = "^1.0.8" -types-chardet = ">=4.0.3,<6.0.0" -types-six = "^1.16.12" -types-PyMySQL = "^1.0.15" -typing-extensions = "^4.1.1" -gsutil = {version = "5.17", optional = true} +gsutil = { version = "5.17", optional = true } ordered-set = "^4.1.0" -types-filelock = "^3.2.5" -types-Markdown = "^3.3.21" -types-futures = "^3.3.8" paramiko = "^2.11.0" neo4j = "^5.14.0" pydantic = "^1.10" -types-decorator = "^5.1.8" -types-mock = "^4.0.15" -types-ujson = "^5.6.0.0" -typer = {extras = ["all"], version = "^0.9.0"} -types-pkg-resources = "^0.1.3" -types-toml = "^0.10.8.7" -packaging = "^23.1" +typer = { extras = ["all"], version = "^0.9.0" } +packaging = "^24.0" orjson = "^3.8.3" more-itertools = "^9.0.0" junitparser = "^3.1.0" -google-cloud-secret-manager = "^2.16.2" +google-cloud-secret-manager = "^2.18.3" json5 = "^0.9.14" -types-protobuf = "^4.24.0.4" klara = { version = "^0.6.3", optional = true } - - - +typing-extensions = "^4.1.1" # not a mypy types- dependency pre-commit = "^3.5.0" lxml = "^5.0.0" uv = "^0.1.5" +toml = "^0.10.2" +werkzeug = "^2.2.0" # Added as mitmproxy8 -> flask<2.1 + + +[tool.poetry.group.types.dependencies] +types-requests = "^2.31.0.20240311" +types-mock = "^4.0.15" +types-setuptools = "^69.2.0.20240317" +types-ujson = "^5.6.0.0" +types-decorator = "^5.1.8" +types-pkg-resources = "^0.1.3" +types-toml = "^0.10.8.7" +types-tabulate = "^0.9.0.20240106" +types-pytz = "^2024.1.0.20240203" +types-dateparser = "^1.1.4.20240106" +types-python-dateutil = "^2.9.0.20240316" [tool.poetry.group.dev.dependencies] -mitmproxy = "^8.0.0" +mitmproxy = "^8.0.0" # if installing zstandard fails, make sure you have python3.x-dev installed. mock = "^4.0.3" pytest = "^7.1.1" pytest-cov = "^4.0.0" @@ -163,7 +154,7 @@ ignore = [ "F403", "F405", "E501", - "W293", # handled by Black + "W293", # handled by Black ] @@ -171,7 +162,7 @@ exclude = [ "demisto_sdk/tests/test_files/", "demisto_sdk/commands/generate_unit_tests/tests/test_files/", "demisto_sdk/commands/init/templates", - "demisto_sdk/commands/generate_yml_from_python/tests/generate_yml_from_python_test.py" + "demisto_sdk/commands/generate_yml_from_python/tests/generate_yml_from_python_test.py", ] select = [ @@ -207,3 +198,4 @@ max-complexity = 30 "distutils.version".msg = "Use packaging.version.Version instead" "packaging.version.LooseVersion".msg = "Use packaging.version.Version instead" "git.Repo".msg = "Use GitUtil instead" +"str.StrEnum".msg = "Import from demisto_sdk.commands.common.StrEnum for <3.11 compatability" From 17aa45e4022ed0cd26c975b347e16b0433562abd Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 11:29:06 +0300 Subject: [PATCH 25/33] tests --- TestSuite/case_field.py | 31 +++++ TestSuite/case_layout.py | 52 +++++++++ TestSuite/case_layout_rule.py | 41 +++++++ TestSuite/pack.py | 41 ++++++- demisto_sdk/commands/common/constants.py | 13 ++- .../commands/common/schemas/casefield.yml | 50 -------- .../commands/common/schemas/caselayout.yml | 102 ++++++++++++++++ .../common/schemas/caselayoutrule.yml | 11 -- .../content_graph/objects/pack_metadata.py | 2 +- .../content_graph/parsers/case_layout_rule.py | 6 +- .../parsers/generic_definition.py | 1 - .../content_graph/parsers/generic_field.py | 1 - .../content_graph/parsers/generic_module.py | 1 - .../tests/parsers_and_models_test.py | 100 ++++++++++++++++ .../tests/test_data/case_field.json | 28 +++++ poetry.lock | 109 ++++-------------- 16 files changed, 434 insertions(+), 155 deletions(-) create mode 100644 TestSuite/case_layout.py create mode 100644 TestSuite/case_layout_rule.py create mode 100644 demisto_sdk/commands/content_graph/tests/test_data/case_field.json diff --git a/TestSuite/case_field.py b/TestSuite/case_field.py index e69de29bb2d..f87826d59e2 100644 --- a/TestSuite/case_field.py +++ b/TestSuite/case_field.py @@ -0,0 +1,31 @@ +from pathlib import Path + +from TestSuite.json_based import JSONBased + + +class CaseField(JSONBased): + def __init__( + self, name: str, case_field_dir_path: Path, json_content: dict = None + ): + self.case_field_file_path = case_field_dir_path / f"{name}.json" + super().__init__( + dir_path=case_field_dir_path, + name=name, + prefix="casefield", + json_content=json_content, + ) + + def create_default(self): + self.write_json( + { + "id": self.id, + "description": "test description", + "cliName": self.id.lower(), + "name": self.id, + "associatedToAll": False, + "type": "shortText", + "associatedTypes": [], + "threshold": 72, + "fromVersion": "8.7.0", + } + ) diff --git a/TestSuite/case_layout.py b/TestSuite/case_layout.py new file mode 100644 index 00000000000..d55ccbda820 --- /dev/null +++ b/TestSuite/case_layout.py @@ -0,0 +1,52 @@ +from pathlib import Path + +from TestSuite.json_based import JSONBased + + +class CaseLayout(JSONBased): + def __init__(self, name: str, case_layout_dir_path: Path, json_content: dict = None): + self.case_layout_tmp_path = case_layout_dir_path / f"{name}.json" + super().__init__( + dir_path=case_layout_dir_path, + name=name, + prefix="layoutcontainer", + json_content=json_content, + ) + + def create_default(self): + self.write_json( + { + "detailsV2": { + "tabs": [ + { + "id": "overview", + "name": "Overview", + "type": "overview" + }, + { + "id": "alerts_and_insights", + "name": "Alerts \u0026 Insights", + "type": "alertInsights" + }, + { + "id": "timeline", + "name": "Timeline", + "type": "timeline" + }, + { + "id": "executions", + "name": "Executions", + "type": "executions" + } + ] + }, + "group": "case", + "id": self.id, + "name": self.id, + "system": False, + "version": -1, + "fromVersion": "8.7.0", + "description": "" + } + + ) diff --git a/TestSuite/case_layout_rule.py b/TestSuite/case_layout_rule.py new file mode 100644 index 00000000000..7e5c9967c00 --- /dev/null +++ b/TestSuite/case_layout_rule.py @@ -0,0 +1,41 @@ +from pathlib import Path + +from TestSuite.json_based import JSONBased + + +class CaseLayoutRule(JSONBased): + def __init__( + self, name: str, case_layout_rule_dir_path: Path, json_content: dict = None + ): + self.layout_rule_tmp_path = case_layout_rule_dir_path / f"{name}.json" + self.name = name + self.rule_id = name + + super().__init__(dir_path=case_layout_rule_dir_path, name=name, prefix="") + + if json_content: + self.write_json(json_content) + else: + self.create_default_case_layout_rule() + + def create_default_case_layout_rule(self): + self.write_json( + { + "rule_id": self.rule_id, + "rule_name": self.rule_id, + "layout_id": "test_layout", + "description": "", + "incidents_filter": { + "filter": { + "AND": [ + { + "SEARCH_FIELD": "STATUS", + "SEARCH_TYPE": "NEQ", + "SEARCH_VALUE": "STATUS_030_RESOLVED_THREAT_HANDLED", + } + ] + } + }, + "fromVersion": "8.7.0", + } + ) diff --git a/TestSuite/pack.py b/TestSuite/pack.py index a9f85848890..8bf925b036e 100644 --- a/TestSuite/pack.py +++ b/TestSuite/pack.py @@ -11,8 +11,11 @@ TRIGGER_DIR, XDRC_TEMPLATE_DIR, XSIAM_DASHBOARDS_DIR, - XSIAM_REPORTS_DIR, + XSIAM_REPORTS_DIR, CASE_LAYOUT_RULES_DIR, CASE_LAYOUTS_DIR, CASE_FIELDS_DIR, ) +from TestSuite.case_field import CaseField +from TestSuite.case_layout import CaseLayout +from TestSuite.case_layout_rule import CaseLayoutRule from TestSuite.classifier import Classifier from TestSuite.content_list import ContentList from TestSuite.correlation_rule import CorrelationRule @@ -105,6 +108,9 @@ def __init__(self, packs_dir: Path, name: str, repo): self.xdrc_templates: List[XDRCTemplate] = list() self.layout_rules: List[LayoutRule] = list() self.assets_modeling_rules: List[Rule] = list() + self.case_fields: List[CaseField] = list() + self.case_layouts: List[CaseLayout] = list() + self.case_layout_rules: List[CaseLayoutRule] = list() # Create base pack self._pack_path = packs_dir / self.name @@ -227,6 +233,15 @@ def __init__(self, packs_dir: Path, name: str, repo): self._xsiam_layout_rules_path = self._pack_path / LAYOUT_RULES_DIR self._xsiam_layout_rules_path.mkdir() + self._case_layout_rules_path = self._pack_path / CASE_LAYOUT_RULES_DIR + self._case_layout_rules_path.mkdir() + + self._case_layouts_path = self._pack_path / CASE_LAYOUTS_DIR + self._case_layouts_path.mkdir() + + self._case_fields_path = self._pack_path / CASE_FIELDS_DIR + self._case_fields_path.mkdir() + self.contributors: Optional[TextBased] = None self._assets_modeling_rules_path = self._pack_path / ASSETS_MODELING_RULES_DIR @@ -764,5 +779,29 @@ def create_layout_rule(self, name: str = None, content: dict = None) -> LayoutRu self.layout_rules.append(layout_rule) return layout_rule + def create_case_layout_rule(self, name: str = None, content: dict = None) -> CaseLayoutRule: + if not name: + name = f"case_layout_rule{len(self.case_layout_rules)}" + case_layout_rule = CaseLayoutRule(name, self._case_layout_rules_path, content) + self.case_layout_rules.append(case_layout_rule) + return case_layout_rule + + def create_case_layout(self, name: str = None, content: dict = None) -> CaseLayout: + if not name: + name = f"case_layout{len(self.case_layouts)}" + case_layout = CaseLayout(name, self._case_layouts_path, content) + self.case_layouts.append(case_layout) + return case_layout + + def create_case_field( + self, name: str = None, content: dict = None + ) -> CaseField: + if not name: + name = f"casefield{len(self.incident_fields)}" + case_field = CaseField(name, self._case_fields_path, content) + + self.case_fields.append(case_field) + return case_field + def set_data(self, **key_path_to_val): self.pack_metadata.set_data(**key_path_to_val) diff --git a/demisto_sdk/commands/common/constants.py b/demisto_sdk/commands/common/constants.py index 3d0e76bfa3b..a6174c6ed67 100644 --- a/demisto_sdk/commands/common/constants.py +++ b/demisto_sdk/commands/common/constants.py @@ -110,6 +110,7 @@ LAYOUT_RULES_DIR = "LayoutRules" ASSETS_MODELING_RULES_DIR = "AssetsModelingRules" CASE_LAYOUT_RULES_DIR = "CaseLayoutRules" +CASE_LAYOUTS_DIR = "CaseLayouts" CASE_FIELDS_DIR = "CaseFields" # NAMES OF ENTITIES @@ -340,7 +341,9 @@ class FileType(StrEnum): FileType.OLD_CLASSIFIER.value: CLASSIFIERS_DIR, FileType.LAYOUT_RULE.value: LAYOUT_RULES_DIR, FileType.ASSETS_MODELING_RULE.value: ASSETS_MODELING_RULES_DIR, - + FileType.CASE_FIELD.value: CASE_FIELDS_DIR, + FileType.CASE_LAYOUT.value: CASE_LAYOUTS_DIR, + FileType.CASE_LAYOUT_RULE.value: CASE_LAYOUT_RULES_DIR } SIEM_ONLY_ENTITIES = [ @@ -355,8 +358,7 @@ class FileType(StrEnum): FileType.ASSETS_MODELING_RULE, FileType.CASE_LAYOUT_RULE.value, FileType.CASE_FIELD.value, - - + FileType.CASE_LAYOUT.value, ] CONTENT_FILE_ENDINGS = ["py", "yml", "png", "json", "md"] @@ -405,6 +407,7 @@ class FileType(StrEnum): ASSETS_MODELING_RULES_DIR, CASE_LAYOUT_RULES_DIR, CASE_FIELDS_DIR, + CASE_LAYOUTS_DIR, ] CONTENT_ENTITY_UPLOAD_ORDER = [ @@ -1606,6 +1609,7 @@ class PB_Status: FileType.ASSETS_MODELING_RULE: "6.2.1", FileType.CASE_LAYOUT_RULE: "8.7.0", FileType.CASE_FIELD: "8.7.0", + FileType.CASE_LAYOUT: "8.7.0", } DEFAULT_PYTHON_VERSION = "3.10" @@ -1897,7 +1901,7 @@ class ContentItems(Enum): ASSETS_MODELING_RULES = "assetsmodelingrule" CASE_LAYOUT_RULES = "caselayoutrule" CASE_FIELDS = "casefield" - + CASE_LAYOUTS = "caselayout" CONTENT_ITEMS_DISPLAY_FOLDERS = { @@ -1928,6 +1932,7 @@ class ContentItems(Enum): ASSETS_MODELING_RULES_DIR, CASE_LAYOUT_RULES_DIR, CASE_FIELDS_DIR, + CASE_LAYOUTS_DIR, } diff --git a/demisto_sdk/commands/common/schemas/casefield.yml b/demisto_sdk/commands/common/schemas/casefield.yml index 5dbbfc601e9..7ef72f7a2cd 100644 --- a/demisto_sdk/commands/common/schemas/casefield.yml +++ b/demisto_sdk/commands/common/schemas/casefield.yml @@ -115,46 +115,6 @@ mapping: aliasTo: type: str - name:xsoar: - type: str - name:marketplacev2: - type: str - name:xpanse: - type: str - name:xsoar_saas: - type: str - name:xsoar_on_prem: - type: str - description:xsoar: - type: str - description:marketplacev2: - type: str - description:xpanse: - type: str - description:xsoar_saas: - type: str - description:xsoar_on_prem: - type: str - required:xsoar: - type: bool - required:marketplacev2: - type: bool - required:xpanse: - type: bool - required:xsoar_saas: - type: bool - required:xsoar_on_prem: - type: bool - id:xsoar: - type: str - id:marketplacev2: - type: str - id:xpanse: - type: str - id:xsoar_saas: - type: str - id:xsoar_on_prem: - type: str schema;aliases_schema: type: map mapping: @@ -168,13 +128,3 @@ schema;aliases_schema: type: str required: true enum: ['shortText', 'longText', 'boolean', 'singleSelect', 'multiSelect', 'date', 'user', 'role', 'number', 'attachments', 'tagsSelect', 'internal', 'url', 'markdown', 'grid', 'timer', 'html'] - name:xsoar: - type: str - name:marketplacev2: - type: str - name:xpanse: - type: str - name:xsoar_saas: - type: str - name:xsoar_on_prem: - type: str diff --git a/demisto_sdk/commands/common/schemas/caselayout.yml b/demisto_sdk/commands/common/schemas/caselayout.yml index e69de29bb2d..84879d3cf2b 100644 --- a/demisto_sdk/commands/common/schemas/caselayout.yml +++ b/demisto_sdk/commands/common/schemas/caselayout.yml @@ -0,0 +1,102 @@ +type: map +mapping: + typeId: + type: str + required: true + TypeName: + type: str + version: + type: number + kind: + type: str + required: true + fromVersion: + type: str + toVersion: + type: str + required: true + system: + type: bool + description: + type: str + id: + type: str + layout: + type: map + mapping: + id: + type: str + required: true + system: + type: bool + TypeName: + type: str + version: + type: number + kind: + type: str + typeId: + type: str + required: true + modified: + type: str + name: + type: str + tabs: + type: seq + sequence: + - include: tabs_schema + sections: + type: seq + sequence: + - include: section_schema + definitionId: + type: str +schema;tabs_schema: + type: any + +schema;section_schema: + type: map + mapping: + id: + type: str + version: + type: number + modified: + type: str + name: + type: str + type: + type: str + isVisible: + type: bool + readOnly: + type: bool + description: + type: str + query: + type: any + queryType: + type: str + sortValues: + type: str + fields: + type: seq + sequence: + - include: field_schema + +schema;field_schema: + type: map + mapping: + id: + type: str + version: + type: number + modified: + type: str + fieldId: + type: str + isVisible: + type: bool + sortValues: + type: str diff --git a/demisto_sdk/commands/common/schemas/caselayoutrule.yml b/demisto_sdk/commands/common/schemas/caselayoutrule.yml index f0c5948e338..c61e55c619d 100644 --- a/demisto_sdk/commands/common/schemas/caselayoutrule.yml +++ b/demisto_sdk/commands/common/schemas/caselayoutrule.yml @@ -36,17 +36,6 @@ mapping: - include: or_schema - include: and_schema - - description:xsoar: - type: str - description:marketplacev2: - type: str - description:xpanse: - type: str - description:xsoar_saas: - type: str - description:xsoar_on_prem: - type: str schema;filter_schema: type: map mapping: diff --git a/demisto_sdk/commands/content_graph/objects/pack_metadata.py b/demisto_sdk/commands/content_graph/objects/pack_metadata.py index 43abe00871c..f135e1d61f5 100644 --- a/demisto_sdk/commands/content_graph/objects/pack_metadata.py +++ b/demisto_sdk/commands/content_graph/objects/pack_metadata.py @@ -283,7 +283,7 @@ def _get_pack_tags( tags |= ( {PackTags.DATA_SOURCE} if self._is_data_source(content_items) - and marketplace == MarketplaceVersions.MarketplaceV2 + #and marketplace == MarketplaceVersions.MarketplaceV2 else set() ) diff --git a/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py b/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py index 8f18f9eac62..636887781e7 100644 --- a/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py +++ b/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py @@ -5,4 +5,8 @@ class CaseLayoutRuleParser( LayoutRuleParser, content_type=ContentType.CASE_LAYOUT_RULE ): - pass + + def connect_to_dependencies(self) -> None: + """Collects the playbook used in the trigger as a mandatory dependency.""" + if layout := self.json_data.get("layout_id"): + self.add_dependency_by_id(layout, ContentType.CASE_LAYOUT) diff --git a/demisto_sdk/commands/content_graph/parsers/generic_definition.py b/demisto_sdk/commands/content_graph/parsers/generic_definition.py index eb6f3adc735..662bd695234 100644 --- a/demisto_sdk/commands/content_graph/parsers/generic_definition.py +++ b/demisto_sdk/commands/content_graph/parsers/generic_definition.py @@ -25,5 +25,4 @@ def supported_marketplaces(self) -> Set[MarketplaceVersions]: MarketplaceVersions.XSOAR, MarketplaceVersions.XSOAR_SAAS, MarketplaceVersions.XSOAR_ON_PREM, - MarketplaceVersions.MarketplaceV2, } diff --git a/demisto_sdk/commands/content_graph/parsers/generic_field.py b/demisto_sdk/commands/content_graph/parsers/generic_field.py index a9682046d7d..0616527169b 100644 --- a/demisto_sdk/commands/content_graph/parsers/generic_field.py +++ b/demisto_sdk/commands/content_graph/parsers/generic_field.py @@ -33,7 +33,6 @@ def supported_marketplaces(self) -> Set[MarketplaceVersions]: MarketplaceVersions.XSOAR, MarketplaceVersions.XSOAR_SAAS, MarketplaceVersions.XSOAR_ON_PREM, - MarketplaceVersions.MarketplaceV2, } @property diff --git a/demisto_sdk/commands/content_graph/parsers/generic_module.py b/demisto_sdk/commands/content_graph/parsers/generic_module.py index 93185e3c9c9..7be49e0b494 100644 --- a/demisto_sdk/commands/content_graph/parsers/generic_module.py +++ b/demisto_sdk/commands/content_graph/parsers/generic_module.py @@ -26,5 +26,4 @@ def supported_marketplaces(self) -> Set[MarketplaceVersions]: MarketplaceVersions.XSOAR, MarketplaceVersions.XSOAR_SAAS, MarketplaceVersions.XSOAR_ON_PREM, - MarketplaceVersions.MarketplaceV2, } diff --git a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py index 32ecce1070b..7054193528d 100644 --- a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py +++ b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py @@ -1402,6 +1402,106 @@ def test_layout_rule_parser(self, pack: Pack): expected_fromversion="6.10.0", ) + def test_case_layout_rule_parser(self, pack: Pack): + """ + Given: + - A pack with a case layout rule. + When: + - Creating the content item's parser and model. + Then: + - Verify all relationships of the content item are collected. + - Verify the generic content item properties are parsed correctly. + - Verify the specific properties of the content item are parsed correctly. + """ + from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule + from demisto_sdk.commands.content_graph.parsers.case_layout_rule import ( + CaseLayoutRuleParser, + ) + + rule = pack.create_case_layout_rule("case_rule_test") + rule_path = Path(rule.path) + parser = CaseLayoutRuleParser(rule_path, list(MarketplaceVersions)) + RelationshipsVerifier.run( + parser.relationships, + dependency_ids={ + "test_layout": ContentType.CASE_LAYOUT, + }, + ) + model = CaseLayoutRule.from_orm(parser) + ContentItemModelVerifier.run( + model, + expected_id="case_rule_test", + expected_name="case_rule_test", + expected_path=rule_path, + expected_content_type=ContentType.CASE_LAYOUT_RULE, + expected_fromversion="8.7.0", + ) + + def test_case_layout_parser(self, pack: Pack): + """ + Given: + - A pack with a case layout. + When: + - Creating the content item's parser and model. + Then: + - Verify all relationships of the content item are collected. + - Verify the generic content item properties are parsed correctly. + - Verify the specific properties of the content item are parsed correctly. + """ + from demisto_sdk.commands.content_graph.objects import CaseLayout + from demisto_sdk.commands.content_graph.parsers.case_layout import CaseLayoutParser + + case_layout = pack.create_case_layout("TestCaseLayout") + case_layout_path = Path(case_layout.path) + parser = CaseLayoutParser(case_layout_path, list(MarketplaceVersions)) + model = CaseLayout.from_orm(parser) + + ContentItemModelVerifier.run( + model, + expected_id="TestCaseLayout", + expected_name="TestCaseLayout", + expected_path=case_layout_path, + expected_content_type=ContentType.CASE_LAYOUT, + expected_fromversion="8.7.0", + ) + assert model.group == "case" + + def test_case_field_parser(self, pack: Pack): + """ + Given: + - A pack with a case field. + When: + - Creating the content item's parser and model. + Then: + - Verify all relationships of the content item are collected. + - Verify the generic content item properties are parsed correctly. + - Verify the specific properties of the content item are parsed correctly. + """ + from demisto_sdk.commands.content_graph.objects.case_field import ( + CaseField, + ) + from demisto_sdk.commands.content_graph.parsers.case_field import ( + CaseFieldParser, + ) + + case_field = pack.create_case_field( + "TestCaseField", load_json("case_field.json") + ) + case_field_path = Path(case_field.path) + parser = CaseFieldParser(case_field_path, list(MarketplaceVersions)) + model = CaseField.from_orm(parser) + ContentItemModelVerifier.run( + model, + expected_id="testcasefield", + expected_name="Test case Field", + expected_path=case_field_path, + expected_content_type=ContentType.CASE_FIELD, + expected_fromversion="8.7.0" + ) + assert model.cli_name == "testcasefield" + assert model.field_type == "html" + assert not model.associated_to_all + def test_widget_parser(self, pack: Pack): """ Given: diff --git a/demisto_sdk/commands/content_graph/tests/test_data/case_field.json b/demisto_sdk/commands/content_graph/tests/test_data/case_field.json new file mode 100644 index 00000000000..6dc3447efe9 --- /dev/null +++ b/demisto_sdk/commands/content_graph/tests/test_data/case_field.json @@ -0,0 +1,28 @@ +{ + "id": "case_testcasefield", + "version": -1, + "modified": "2024-05-15T11:37:39.117104698Z", + "name": "Test case Field", + "ownerOnly": false, + "cliName": "testcasefield", + "type": "html", + "closeForm": false, + "editForm": true, + "required": false, + "neverSetAsRequired": false, + "isReadOnly": false, + "useAsKpi": false, + "locked": false, + "system": false, + "content": false, + "group": 5, + "hidden": false, + "openEnded": false, + "associatedToAll": false, + "unmapped": false, + "unsearchable": true, + "caseInsensitive": true, + "sla": 0, + "threshold": 72, + "fromVersion": "8.7.0" +} \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 7dc6290dba5..e7e4fd13034 100644 --- a/poetry.lock +++ b/poetry.lock @@ -175,8 +175,8 @@ files = [ lazy-object-proxy = ">=1.4.0" typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} wrapt = [ - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, ] [[package]] @@ -229,13 +229,13 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p [[package]] name = "autopep8" -version = "2.1.1" +version = "2.1.0" description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" optional = false python-versions = ">=3.8" files = [ - {file = "autopep8-2.1.1-py2.py3-none-any.whl", hash = "sha256:57c1026ee3ee40f57c5b93073b705f8e30aa52411fca33306d730274d2882bba"}, - {file = "autopep8-2.1.1.tar.gz", hash = "sha256:bc9b267f14d358a9af574b95e95a661681c60a275ffce419ba5fb4eae9920bcc"}, + {file = "autopep8-2.1.0-py2.py3-none-any.whl", hash = "sha256:2bb76888c5edbcafe6aabab3c47ba534f5a2c2d245c2eddced4a30c4b4946357"}, + {file = "autopep8-2.1.0.tar.gz", hash = "sha256:1fa8964e4618929488f4ec36795c7ff12924a68b8bf01366c094fc52f770b6e7"}, ] [package.dependencies] @@ -2199,23 +2199,23 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.2.0" +version = "5.7.2" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.2.0-py3-none-any.whl", hash = "sha256:4bdc2928c37f6917130c667d8b8708f20aee539d8283c6be72aabd2a4b4c83b0"}, - {file = "jupyter_core-5.2.0.tar.gz", hash = "sha256:1407cdb4c79ee467696c04b76633fc1884015fa109323365a6372c8e890cc83f"}, + {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, + {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, ] [package.dependencies] platformdirs = ">=2.5" -pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] -test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] [[package]] name = "kaitaistruct" @@ -2403,6 +2403,7 @@ files = [ {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, @@ -2583,13 +2584,13 @@ traitlets = "*" [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] [[package]] @@ -3612,8 +3613,8 @@ files = [ astroid = ">=2.15.8,<=2.17.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ - {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, ] isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" @@ -4694,13 +4695,13 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.5" +version = "0.12.4" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"}, - {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, + {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, + {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, ] [[package]] @@ -4900,13 +4901,13 @@ files = [ [[package]] name = "types-requests" -version = "2.32.0.20240523" +version = "2.31.0.20240406" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240523.tar.gz", hash = "sha256:26b8a6de32d9f561192b9942b41c0ab2d8010df5677ca8aa146289d11d505f57"}, - {file = "types_requests-2.32.0.20240523-py3-none-any.whl", hash = "sha256:f19ed0e2daa74302069bbbbf9e82902854ffa780bc790742a810a9aaa52f65ec"}, + {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, + {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, ] [package.dependencies] @@ -4914,13 +4915,13 @@ urllib3 = ">=2" [[package]] name = "types-setuptools" -version = "69.5.0.20240522" +version = "69.5.0.20240423" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.5.0.20240522.tar.gz", hash = "sha256:c5a97601b2d040d3b9fcd0633730f0a8c86ebef208552525c97301427f261549"}, - {file = "types_setuptools-69.5.0.20240522-py3-none-any.whl", hash = "sha256:e27231cbc80648cfaee4921d2f1150107fdf8d33666958abf2aba0191a82688b"}, + {file = "types-setuptools-69.5.0.20240423.tar.gz", hash = "sha256:a7ba908f1746c4337d13f027fa0f4a5bcad6d1d92048219ba792b3295c58586d"}, + {file = "types_setuptools-69.5.0.20240423-py3-none-any.whl", hash = "sha256:a4381e041510755a6c9210e26ad55b1629bc10237aeb9cb8b6bd24996b73db48"}, ] [[package]] @@ -5216,66 +5217,6 @@ MarkupSafe = ">=2.1.1" [package.extras] watchdog = ["watchdog (>=2.3)"] -[[package]] -name = "wrapt" -version = "1.13.3" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "wrapt-1.13.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a"}, - {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489"}, - {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909"}, - {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229"}, - {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af"}, - {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de"}, - {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb"}, - {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80"}, - {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca"}, - {file = "wrapt-1.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44"}, - {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056"}, - {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785"}, - {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096"}, - {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33"}, - {file = "wrapt-1.13.3-cp310-cp310-win32.whl", hash = "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f"}, - {file = "wrapt-1.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e"}, - {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d"}, - {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179"}, - {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3"}, - {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755"}, - {file = "wrapt-1.13.3-cp35-cp35m-win32.whl", hash = "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851"}, - {file = "wrapt-1.13.3-cp35-cp35m-win_amd64.whl", hash = "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13"}, - {file = "wrapt-1.13.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918"}, - {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade"}, - {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc"}, - {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf"}, - {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125"}, - {file = "wrapt-1.13.3-cp36-cp36m-win32.whl", hash = "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36"}, - {file = "wrapt-1.13.3-cp36-cp36m-win_amd64.whl", hash = "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10"}, - {file = "wrapt-1.13.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068"}, - {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709"}, - {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df"}, - {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2"}, - {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b"}, - {file = "wrapt-1.13.3-cp37-cp37m-win32.whl", hash = "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829"}, - {file = "wrapt-1.13.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea"}, - {file = "wrapt-1.13.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9"}, - {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554"}, - {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c"}, - {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b"}, - {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce"}, - {file = "wrapt-1.13.3-cp38-cp38-win32.whl", hash = "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79"}, - {file = "wrapt-1.13.3-cp38-cp38-win_amd64.whl", hash = "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb"}, - {file = "wrapt-1.13.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb"}, - {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32"}, - {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7"}, - {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e"}, - {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640"}, - {file = "wrapt-1.13.3-cp39-cp39-win32.whl", hash = "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374"}, - {file = "wrapt-1.13.3-cp39-cp39-win_amd64.whl", hash = "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb"}, - {file = "wrapt-1.13.3.tar.gz", hash = "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"}, -] - [[package]] name = "wrapt" version = "1.16.0" From a5547c65a4aa334981b4d7bc716af6375cb68cea Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 11:40:55 +0300 Subject: [PATCH 26/33] tests --- demisto_sdk/commands/content_graph/objects/pack_metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demisto_sdk/commands/content_graph/objects/pack_metadata.py b/demisto_sdk/commands/content_graph/objects/pack_metadata.py index f135e1d61f5..43abe00871c 100644 --- a/demisto_sdk/commands/content_graph/objects/pack_metadata.py +++ b/demisto_sdk/commands/content_graph/objects/pack_metadata.py @@ -283,7 +283,7 @@ def _get_pack_tags( tags |= ( {PackTags.DATA_SOURCE} if self._is_data_source(content_items) - #and marketplace == MarketplaceVersions.MarketplaceV2 + and marketplace == MarketplaceVersions.MarketplaceV2 else set() ) From 5e47756b2f677fa158e182cb421e96b4de4643e1 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 11:51:23 +0300 Subject: [PATCH 27/33] pre-commit --- TestSuite/case_field.py | 4 +-- TestSuite/case_layout.py | 25 +++++++------------ TestSuite/pack.py | 13 ++++++---- demisto_sdk/commands/common/constants.py | 5 ++-- demisto_sdk/commands/common/tools.py | 1 - .../content_graph/objects/__init__.py | 2 +- .../content_graph/objects/case_field.py | 6 ++--- .../content_graph/objects/case_layout.py | 5 ++-- .../content_graph/objects/case_layout_rule.py | 2 +- .../content_graph/objects/generic_field.py | 3 ++- .../commands/content_graph/objects/layout.py | 2 +- .../objects/pack_content_items.py | 4 ++- .../content_graph/parsers/__init__.py | 6 +++-- .../content_graph/parsers/case_field.py | 6 ++--- .../content_graph/parsers/case_layout.py | 3 +-- .../content_graph/parsers/case_layout_rule.py | 5 +--- .../commands/content_graph/parsers/layout.py | 6 ++--- .../commands/content_graph/parsers/pack.py | 4 ++- .../tests/parsers_and_models_test.py | 10 +++++--- .../tests/test_data/case_field.json | 2 +- demisto_sdk/commands/format/update_layout.py | 6 ++++- ...06_is_from_version_sufficient_all_items.py | 3 +-- demisto_sdk/scripts/init_validation_script.py | 6 ++--- 23 files changed, 64 insertions(+), 65 deletions(-) diff --git a/TestSuite/case_field.py b/TestSuite/case_field.py index f87826d59e2..f108a75577d 100644 --- a/TestSuite/case_field.py +++ b/TestSuite/case_field.py @@ -4,9 +4,7 @@ class CaseField(JSONBased): - def __init__( - self, name: str, case_field_dir_path: Path, json_content: dict = None - ): + def __init__(self, name: str, case_field_dir_path: Path, json_content: dict = None): self.case_field_file_path = case_field_dir_path / f"{name}.json" super().__init__( dir_path=case_field_dir_path, diff --git a/TestSuite/case_layout.py b/TestSuite/case_layout.py index d55ccbda820..a398ae5e3d0 100644 --- a/TestSuite/case_layout.py +++ b/TestSuite/case_layout.py @@ -4,7 +4,9 @@ class CaseLayout(JSONBased): - def __init__(self, name: str, case_layout_dir_path: Path, json_content: dict = None): + def __init__( + self, name: str, case_layout_dir_path: Path, json_content: dict = None + ): self.case_layout_tmp_path = case_layout_dir_path / f"{name}.json" super().__init__( dir_path=case_layout_dir_path, @@ -18,26 +20,18 @@ def create_default(self): { "detailsV2": { "tabs": [ - { - "id": "overview", - "name": "Overview", - "type": "overview" - }, + {"id": "overview", "name": "Overview", "type": "overview"}, { "id": "alerts_and_insights", "name": "Alerts \u0026 Insights", - "type": "alertInsights" - }, - { - "id": "timeline", - "name": "Timeline", - "type": "timeline" + "type": "alertInsights", }, + {"id": "timeline", "name": "Timeline", "type": "timeline"}, { "id": "executions", "name": "Executions", - "type": "executions" - } + "type": "executions", + }, ] }, "group": "case", @@ -46,7 +40,6 @@ def create_default(self): "system": False, "version": -1, "fromVersion": "8.7.0", - "description": "" + "description": "", } - ) diff --git a/TestSuite/pack.py b/TestSuite/pack.py index 8bf925b036e..6f299e81845 100644 --- a/TestSuite/pack.py +++ b/TestSuite/pack.py @@ -3,6 +3,9 @@ from demisto_sdk.commands.common.constants import ( ASSETS_MODELING_RULES_DIR, + CASE_FIELDS_DIR, + CASE_LAYOUT_RULES_DIR, + CASE_LAYOUTS_DIR, CORRELATION_RULES_DIR, DEFAULT_IMAGE_BASE64, LAYOUT_RULES_DIR, @@ -11,7 +14,7 @@ TRIGGER_DIR, XDRC_TEMPLATE_DIR, XSIAM_DASHBOARDS_DIR, - XSIAM_REPORTS_DIR, CASE_LAYOUT_RULES_DIR, CASE_LAYOUTS_DIR, CASE_FIELDS_DIR, + XSIAM_REPORTS_DIR, ) from TestSuite.case_field import CaseField from TestSuite.case_layout import CaseLayout @@ -779,7 +782,9 @@ def create_layout_rule(self, name: str = None, content: dict = None) -> LayoutRu self.layout_rules.append(layout_rule) return layout_rule - def create_case_layout_rule(self, name: str = None, content: dict = None) -> CaseLayoutRule: + def create_case_layout_rule( + self, name: str = None, content: dict = None + ) -> CaseLayoutRule: if not name: name = f"case_layout_rule{len(self.case_layout_rules)}" case_layout_rule = CaseLayoutRule(name, self._case_layout_rules_path, content) @@ -793,9 +798,7 @@ def create_case_layout(self, name: str = None, content: dict = None) -> CaseLayo self.case_layouts.append(case_layout) return case_layout - def create_case_field( - self, name: str = None, content: dict = None - ) -> CaseField: + def create_case_field(self, name: str = None, content: dict = None) -> CaseField: if not name: name = f"casefield{len(self.incident_fields)}" case_field = CaseField(name, self._case_fields_path, content) diff --git a/demisto_sdk/commands/common/constants.py b/demisto_sdk/commands/common/constants.py index a6174c6ed67..15864ca13a0 100644 --- a/demisto_sdk/commands/common/constants.py +++ b/demisto_sdk/commands/common/constants.py @@ -298,7 +298,7 @@ class FileType(StrEnum): FileType.ASSETS_MODELING_RULE: "Assets Modeling Rules", FileType.CASE_LAYOUT_RULE: "Case Layout Rules", FileType.CASE_FIELD: "Case Fields", - FileType.CASE_LAYOUT: "Case Layouts" + FileType.CASE_LAYOUT: "Case Layouts", } FILE_TYPE_BY_RN_HEADER = { @@ -343,7 +343,7 @@ class FileType(StrEnum): FileType.ASSETS_MODELING_RULE.value: ASSETS_MODELING_RULES_DIR, FileType.CASE_FIELD.value: CASE_FIELDS_DIR, FileType.CASE_LAYOUT.value: CASE_LAYOUTS_DIR, - FileType.CASE_LAYOUT_RULE.value: CASE_LAYOUT_RULES_DIR + FileType.CASE_LAYOUT_RULE.value: CASE_LAYOUT_RULES_DIR, } SIEM_ONLY_ENTITIES = [ @@ -1433,7 +1433,6 @@ class PB_Status: "trigger": [TRIGGER_JSON_REGEX], "xdrctemplate": [XDRC_TEMPLATE_JSON_REGEX], LAYOUT_RULE: JSON_ALL_LAYOUT_RULES_REGEXES, - } EXTERNAL_PR_REGEX = r"^pull/(\d+)$" diff --git a/demisto_sdk/commands/common/tools.py b/demisto_sdk/commands/common/tools.py index cf443cc9333..85513358683 100644 --- a/demisto_sdk/commands/common/tools.py +++ b/demisto_sdk/commands/common/tools.py @@ -1996,7 +1996,6 @@ def find_type( if ListObject.match(_dict, Path(path)): return FileType.LISTS - # When using it for all files validation- sometimes 'id' can be integer if GenericField.match(_dict, Path(path)): return FileType.GENERIC_FIELD diff --git a/demisto_sdk/commands/content_graph/objects/__init__.py b/demisto_sdk/commands/content_graph/objects/__init__.py index 289674ef988..b0522aa935e 100644 --- a/demisto_sdk/commands/content_graph/objects/__init__.py +++ b/demisto_sdk/commands/content_graph/objects/__init__.py @@ -46,8 +46,8 @@ from demisto_sdk.commands.content_graph.objects.base_playbook import BasePlaybook from demisto_sdk.commands.content_graph.objects.base_script import BaseScript from demisto_sdk.commands.content_graph.objects.case_field import CaseField -from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule from demisto_sdk.commands.content_graph.objects.case_layout import CaseLayout +from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule from demisto_sdk.commands.content_graph.objects.classifier import Classifier from demisto_sdk.commands.content_graph.objects.correlation_rule import CorrelationRule from demisto_sdk.commands.content_graph.objects.dashboard import Dashboard diff --git a/demisto_sdk/commands/content_graph/objects/case_field.py b/demisto_sdk/commands/content_graph/objects/case_field.py index a5c0645643a..b358d9709b2 100644 --- a/demisto_sdk/commands/content_graph/objects/case_field.py +++ b/demisto_sdk/commands/content_graph/objects/case_field.py @@ -17,9 +17,9 @@ class CaseField(IndicatorIncidentField, content_type=ContentType.CASE_FIELD): # associated_to_all: bool = Field(False, alias="associatedToAll") def summary( - self, - marketplace: Optional[MarketplaceVersions] = None, - incident_to_alert: bool = False, + self, + marketplace: Optional[MarketplaceVersions] = None, + incident_to_alert: bool = False, ) -> dict: summary = super().summary(marketplace, incident_to_alert) summary["id"] = f"case_{self.object_id}" diff --git a/demisto_sdk/commands/content_graph/objects/case_layout.py b/demisto_sdk/commands/content_graph/objects/case_layout.py index dd2870241fe..1dca99b33c9 100644 --- a/demisto_sdk/commands/content_graph/objects/case_layout.py +++ b/demisto_sdk/commands/content_graph/objects/case_layout.py @@ -1,17 +1,16 @@ from pathlib import Path + from demisto_sdk.commands.content_graph.common import ContentType from demisto_sdk.commands.content_graph.objects.layout import Layout class CaseLayout(Layout, content_type=ContentType.CASE_LAYOUT): # type: ignore[call-arg] - @staticmethod def match(_dict: dict, path: Path) -> bool: if "group" in _dict and Path(path).suffix == ".json": if "cliName" not in _dict: if "id" not in _dict or ( - isinstance(_dict["id"], str) - and not _dict["id"].startswith("case") + isinstance(_dict["id"], str) and not _dict["id"].startswith("case") ): return True return False diff --git a/demisto_sdk/commands/content_graph/objects/case_layout_rule.py b/demisto_sdk/commands/content_graph/objects/case_layout_rule.py index 2068549b792..ea0ace07c4e 100644 --- a/demisto_sdk/commands/content_graph/objects/case_layout_rule.py +++ b/demisto_sdk/commands/content_graph/objects/case_layout_rule.py @@ -26,4 +26,4 @@ def metadata_fields(self) -> Set[str]: def match(_dict: dict, path: Path) -> bool: if "rule_id" in _dict and path.suffix == ".json": return True - return False \ No newline at end of file + return False diff --git a/demisto_sdk/commands/content_graph/objects/generic_field.py b/demisto_sdk/commands/content_graph/objects/generic_field.py index 1fd23fe2774..68aef1d8a89 100644 --- a/demisto_sdk/commands/content_graph/objects/generic_field.py +++ b/demisto_sdk/commands/content_graph/objects/generic_field.py @@ -34,7 +34,8 @@ def match(_dict: dict, path: Path) -> bool: if ( "definitionId" in _dict and _dict["definitionId"] - and _dict["definitionId"].lower() not in ["incident", "indicator", "case"] + and _dict["definitionId"].lower() + not in ["incident", "indicator", "case"] and path.suffix == ".json" ): # we don't want to match the generic type diff --git a/demisto_sdk/commands/content_graph/objects/layout.py b/demisto_sdk/commands/content_graph/objects/layout.py index 01cda20555d..3dda1ee4866 100644 --- a/demisto_sdk/commands/content_graph/objects/layout.py +++ b/demisto_sdk/commands/content_graph/objects/layout.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Callable, List, Optional, Union, Set +from typing import Callable, List, Optional, Set, Union import demisto_client from pydantic import Field diff --git a/demisto_sdk/commands/content_graph/objects/pack_content_items.py b/demisto_sdk/commands/content_graph/objects/pack_content_items.py index f2f96a1d636..fe7aaf32871 100644 --- a/demisto_sdk/commands/content_graph/objects/pack_content_items.py +++ b/demisto_sdk/commands/content_graph/objects/pack_content_items.py @@ -49,7 +49,9 @@ class PackContentItems(BaseModel): # The alias is for marshalling purposes case_field: List[CaseField] = Field([], alias=ContentType.CASE_FIELD.value) case_layout: List[CaseLayout] = Field([], alias=ContentType.CASE_LAYOUT.value) - case_layout_rule: List[CaseLayoutRule] = Field([], alias=ContentType.CASE_LAYOUT_RULE.value) + case_layout_rule: List[CaseLayoutRule] = Field( + [], alias=ContentType.CASE_LAYOUT_RULE.value + ) classifier: List[Classifier] = Field([], alias=ContentType.CLASSIFIER.value) correlation_rule: List[CorrelationRule] = Field( [], alias=ContentType.CORRELATION_RULE.value diff --git a/demisto_sdk/commands/content_graph/parsers/__init__.py b/demisto_sdk/commands/content_graph/parsers/__init__.py index fe0523380d9..34ee1fbbb4b 100644 --- a/demisto_sdk/commands/content_graph/parsers/__init__.py +++ b/demisto_sdk/commands/content_graph/parsers/__init__.py @@ -36,7 +36,7 @@ "AssetsModelingRuleParser", "CaseLayoutRuleParser", "CaseFieldParser", - "CaseLayoutParser" + "CaseLayoutParser", ] from demisto_sdk.commands.content_graph.parsers.assets_modeling_rule import ( @@ -45,8 +45,10 @@ from demisto_sdk.commands.content_graph.parsers.base_playbook import BasePlaybookParser from demisto_sdk.commands.content_graph.parsers.base_script import BaseScriptParser from demisto_sdk.commands.content_graph.parsers.case_field import CaseFieldParser -from demisto_sdk.commands.content_graph.parsers.case_layout_rule import CaseLayoutRuleParser from demisto_sdk.commands.content_graph.parsers.case_layout import CaseLayoutParser +from demisto_sdk.commands.content_graph.parsers.case_layout_rule import ( + CaseLayoutRuleParser, +) from demisto_sdk.commands.content_graph.parsers.classifier import ClassifierParser from demisto_sdk.commands.content_graph.parsers.correlation_rule import ( CorrelationRuleParser, diff --git a/demisto_sdk/commands/content_graph/parsers/case_field.py b/demisto_sdk/commands/content_graph/parsers/case_field.py index cfa6703b874..c255a999296 100644 --- a/demisto_sdk/commands/content_graph/parsers/case_field.py +++ b/demisto_sdk/commands/content_graph/parsers/case_field.py @@ -10,9 +10,7 @@ ) -class CaseFieldParser( - JSONContentItemParser, content_type=ContentType.CASE_FIELD -): +class CaseFieldParser(JSONContentItemParser, content_type=ContentType.CASE_FIELD): def __init__( self, path: Path, @@ -40,7 +38,7 @@ def cli_name(self) -> Optional[str]: @property def object_id(self) -> Optional[str]: id = get_value(self.json_data, self.field_mapping.get("object_id", "")) - return (id.lower().replace("_", "").replace("-", ""))[len("case"):] + return (id.lower().replace("_", "").replace("-", ""))[len("case") :] @property def supported_marketplaces(self) -> Set[MarketplaceVersions]: diff --git a/demisto_sdk/commands/content_graph/parsers/case_layout.py b/demisto_sdk/commands/content_graph/parsers/case_layout.py index 0b3acf2eba9..82cafddc1e2 100644 --- a/demisto_sdk/commands/content_graph/parsers/case_layout.py +++ b/demisto_sdk/commands/content_graph/parsers/case_layout.py @@ -1,5 +1,4 @@ -from pathlib import Path -from typing import List, Optional, Set +from typing import Set from demisto_sdk.commands.common.constants import MarketplaceVersions from demisto_sdk.commands.content_graph.common import ContentType diff --git a/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py b/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py index 636887781e7..4cea26a1a4b 100644 --- a/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py +++ b/demisto_sdk/commands/content_graph/parsers/case_layout_rule.py @@ -2,10 +2,7 @@ from demisto_sdk.commands.content_graph.parsers.layout_rule import LayoutRuleParser -class CaseLayoutRuleParser( - LayoutRuleParser, content_type=ContentType.CASE_LAYOUT_RULE -): - +class CaseLayoutRuleParser(LayoutRuleParser, content_type=ContentType.CASE_LAYOUT_RULE): def connect_to_dependencies(self) -> None: """Collects the playbook used in the trigger as a mandatory dependency.""" if layout := self.json_data.get("layout_id"): diff --git a/demisto_sdk/commands/content_graph/parsers/layout.py b/demisto_sdk/commands/content_graph/parsers/layout.py index cf176e960df..2d544ae6640 100644 --- a/demisto_sdk/commands/content_graph/parsers/layout.py +++ b/demisto_sdk/commands/content_graph/parsers/layout.py @@ -88,9 +88,9 @@ def get_values(current_object): for key, value in current_object.items(): if key == "fieldId" and isinstance(value, str): values.add( - value.replace("incident_", ""). - replace("indicator_", ""). - replace("case_", "") + value.replace("incident_", "") + .replace("indicator_", "") + .replace("case_", "") ) else: get_values(value) diff --git a/demisto_sdk/commands/content_graph/parsers/pack.py b/demisto_sdk/commands/content_graph/parsers/pack.py index 133af851198..ad21a44272c 100644 --- a/demisto_sdk/commands/content_graph/parsers/pack.py +++ b/demisto_sdk/commands/content_graph/parsers/pack.py @@ -46,7 +46,9 @@ class PackContentItems: def __init__(self) -> None: self.case_field = ContentItemsList(content_type=ContentType.CASE_FIELD) self.case_layout = ContentItemsList(content_type=ContentType.CASE_LAYOUT) - self.case_layout_rule = ContentItemsList(content_type=ContentType.CASE_LAYOUT_RULE) + self.case_layout_rule = ContentItemsList( + content_type=ContentType.CASE_LAYOUT_RULE + ) self.classifier = ContentItemsList(content_type=ContentType.CLASSIFIER) self.correlation_rule = ContentItemsList( content_type=ContentType.CORRELATION_RULE diff --git a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py index 7054193528d..32574aa33a5 100644 --- a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py +++ b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py @@ -1413,7 +1413,9 @@ def test_case_layout_rule_parser(self, pack: Pack): - Verify the generic content item properties are parsed correctly. - Verify the specific properties of the content item are parsed correctly. """ - from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule + from demisto_sdk.commands.content_graph.objects.case_layout_rule import ( + CaseLayoutRule, + ) from demisto_sdk.commands.content_graph.parsers.case_layout_rule import ( CaseLayoutRuleParser, ) @@ -1449,7 +1451,9 @@ def test_case_layout_parser(self, pack: Pack): - Verify the specific properties of the content item are parsed correctly. """ from demisto_sdk.commands.content_graph.objects import CaseLayout - from demisto_sdk.commands.content_graph.parsers.case_layout import CaseLayoutParser + from demisto_sdk.commands.content_graph.parsers.case_layout import ( + CaseLayoutParser, + ) case_layout = pack.create_case_layout("TestCaseLayout") case_layout_path = Path(case_layout.path) @@ -1496,7 +1500,7 @@ def test_case_field_parser(self, pack: Pack): expected_name="Test case Field", expected_path=case_field_path, expected_content_type=ContentType.CASE_FIELD, - expected_fromversion="8.7.0" + expected_fromversion="8.7.0", ) assert model.cli_name == "testcasefield" assert model.field_type == "html" diff --git a/demisto_sdk/commands/content_graph/tests/test_data/case_field.json b/demisto_sdk/commands/content_graph/tests/test_data/case_field.json index 6dc3447efe9..e951e09b490 100644 --- a/demisto_sdk/commands/content_graph/tests/test_data/case_field.json +++ b/demisto_sdk/commands/content_graph/tests/test_data/case_field.json @@ -25,4 +25,4 @@ "sla": 0, "threshold": 72, "fromVersion": "8.7.0" -} \ No newline at end of file +} diff --git a/demisto_sdk/commands/format/update_layout.py b/demisto_sdk/commands/format/update_layout.py index bc3909df7d0..f947ba85747 100644 --- a/demisto_sdk/commands/format/update_layout.py +++ b/demisto_sdk/commands/format/update_layout.py @@ -189,7 +189,11 @@ def set_layout_key(self): } def set_group_field(self): - if self.data["group"] != "incident" and self.data["group"] != "indicator" and self.data["group"] != "case": + if ( + self.data["group"] != "incident" + and self.data["group"] != "indicator" + and self.data["group"] != "case" + ): logger.info( "[red]No group is specified for this layout, would you like me to update for you? [Y/n][/red]" ) diff --git a/demisto_sdk/commands/validate/validators/BA_validators/BA106_is_from_version_sufficient_all_items.py b/demisto_sdk/commands/validate/validators/BA_validators/BA106_is_from_version_sufficient_all_items.py index a1c724446ee..c3bd05d0996 100644 --- a/demisto_sdk/commands/validate/validators/BA_validators/BA106_is_from_version_sufficient_all_items.py +++ b/demisto_sdk/commands/validate/validators/BA_validators/BA106_is_from_version_sufficient_all_items.py @@ -74,7 +74,6 @@ CaseField, CaseLayout, CaseLayoutRule, - ] FROM_VERSION_DICT: Dict[ContentType, str] = { @@ -105,7 +104,7 @@ ContentType.INCIDENT_TYPE: "5.0.0", ContentType.CASE_FIELD: "8.7.0", ContentType.CASE_LAYOUT: "8.7.0", - ContentType.CASE_LAYOUT_RULE: "8.7.0" + ContentType.CASE_LAYOUT_RULE: "8.7.0", } diff --git a/demisto_sdk/scripts/init_validation_script.py b/demisto_sdk/scripts/init_validation_script.py index 94ed2e21eab..5513d311268 100644 --- a/demisto_sdk/scripts/init_validation_script.py +++ b/demisto_sdk/scripts/init_validation_script.py @@ -159,7 +159,7 @@ "32": { "import": "from demisto_sdk.commands.content_graph.objects.case_layout_rule", "content_type": "CaseLayoutRule", - } + }, } VALIDATION_TEMPLATE = """ @@ -295,7 +295,7 @@ def initialize_validator_class_name(self): ) ) while not validator_class_name or not bool( - re.match(pascal_case_pattern, validator_class_name) + re.match(pascal_case_pattern, validator_class_name) ): validator_class_name = str( input( @@ -319,7 +319,7 @@ def initialize_git_statuses(self): ) ) while self.git_statuses_str and not set( - self.git_statuses_str.split(",") + self.git_statuses_str.split(",") ).issubset({"A", "R", "M", "D"}): self.git_statuses_str = str( input( From 0b23577aab851b7438ac0ec9c64a92d5b7d058b3 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 12:10:55 +0300 Subject: [PATCH 28/33] pre-commit --- .../commands/content_graph/tests/parsers_and_models_test.py | 6 ++++-- .../validate/validators/BC_validators/BC105_id_changed.py | 6 ++++++ .../BC_validators/BC106_is_valid_fromversion_on_modified.py | 3 ++- .../validators/LO_validators/LO107_is_valid_type.py | 5 +++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py index 32574aa33a5..4c600a452a4 100644 --- a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py +++ b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py @@ -2652,7 +2652,7 @@ def test_layout_match_fails_on_other_content_types(self, mocker, git_repo): - Ensure ValueError is raised. """ from demisto_sdk.commands.content_graph.common import ContentType - from demisto_sdk.commands.content_graph.objects import Layout + from demisto_sdk.commands.content_graph.objects import CaseLayout, Layout layout_json_str = "layout.json" layout_json_path = git_repo.path / Path(layout_json_str) @@ -2663,6 +2663,7 @@ def test_layout_match_fails_on_other_content_types(self, mocker, git_repo): git_repo.make_file(file_name=layout_json_str, file_content=content) mocker.patch.object(Layout, "match", return_value=False) + mocker.patch.object(CaseLayout, "match", return_value=False) with pytest.raises(ValueError): ContentType.by_schema(Path(layout_json_path)) @@ -2700,7 +2701,7 @@ def test_layout_rule_match_fails_on_other_content_types(self, mocker, git_repo): - Ensure ValueError is raised. """ from demisto_sdk.commands.content_graph.common import ContentType - from demisto_sdk.commands.content_graph.objects import LayoutRule + from demisto_sdk.commands.content_graph.objects import CaseLayoutRule, LayoutRule layout_rule_json_str = "layout_rule.json" layout_rule_json_path = git_repo.path / Path(layout_rule_json_str) @@ -2711,6 +2712,7 @@ def test_layout_rule_match_fails_on_other_content_types(self, mocker, git_repo): git_repo.make_file(file_name=layout_rule_json_str, file_content=content) mocker.patch.object(LayoutRule, "match", return_value=False) + mocker.patch.object(CaseLayoutRule, "match", return_value=False) with pytest.raises(ValueError): ContentType.by_schema(Path(layout_rule_json_path)) diff --git a/demisto_sdk/commands/validate/validators/BC_validators/BC105_id_changed.py b/demisto_sdk/commands/validate/validators/BC_validators/BC105_id_changed.py index 57d2388e1d4..45dfe3df4d2 100644 --- a/demisto_sdk/commands/validate/validators/BC_validators/BC105_id_changed.py +++ b/demisto_sdk/commands/validate/validators/BC_validators/BC105_id_changed.py @@ -3,6 +3,9 @@ from typing import Dict, Iterable, List, Union, cast from demisto_sdk.commands.common.constants import GitStatuses +from demisto_sdk.commands.content_graph.objects.case_field import CaseField +from demisto_sdk.commands.content_graph.objects.case_layout import CaseLayout +from demisto_sdk.commands.content_graph.objects.case_layout_rule import CaseLayoutRule from demisto_sdk.commands.content_graph.objects.classifier import Classifier from demisto_sdk.commands.content_graph.objects.correlation_rule import CorrelationRule from demisto_sdk.commands.content_graph.objects.dashboard import Dashboard @@ -69,6 +72,9 @@ GenericType, XSIAMDashboard, XSIAMReport, + CaseField, + CaseLayout, + CaseLayoutRule, ] diff --git a/demisto_sdk/commands/validate/validators/BC_validators/BC106_is_valid_fromversion_on_modified.py b/demisto_sdk/commands/validate/validators/BC_validators/BC106_is_valid_fromversion_on_modified.py index f436ed95289..fd5e97a5148 100644 --- a/demisto_sdk/commands/validate/validators/BC_validators/BC106_is_valid_fromversion_on_modified.py +++ b/demisto_sdk/commands/validate/validators/BC_validators/BC106_is_valid_fromversion_on_modified.py @@ -3,6 +3,7 @@ from typing import Iterable, List, Union, cast from demisto_sdk.commands.common.constants import GitStatuses +from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.incident_field import IncidentField from demisto_sdk.commands.content_graph.objects.incident_type import IncidentType from demisto_sdk.commands.content_graph.objects.integration import Integration @@ -13,7 +14,7 @@ ValidationResult, ) -ContentTypes = Union[Integration, Script, Mapper, IncidentType, IncidentField] +ContentTypes = Union[Integration, Script, Mapper, IncidentType, IncidentField, CaseField] class IsValidFromversionOnModifiedValidator(BaseValidator[ContentTypes]): diff --git a/demisto_sdk/commands/validate/validators/LO_validators/LO107_is_valid_type.py b/demisto_sdk/commands/validate/validators/LO_validators/LO107_is_valid_type.py index 5ba268ae655..80dfc075af3 100644 --- a/demisto_sdk/commands/validate/validators/LO_validators/LO107_is_valid_type.py +++ b/demisto_sdk/commands/validate/validators/LO_validators/LO107_is_valid_type.py @@ -1,10 +1,11 @@ from __future__ import annotations -from typing import Dict, Iterable, List +from typing import Dict, Iterable, List, Union from ordered_set import OrderedSet from demisto_sdk.commands.common.constants import MarketplaceVersions +from demisto_sdk.commands.content_graph.objects.case_layout import CaseLayout from demisto_sdk.commands.content_graph.objects.layout import Layout from demisto_sdk.commands.content_graph.parsers.related_files import RelatedFileType from demisto_sdk.commands.validate.validators.base_validator import ( @@ -12,7 +13,7 @@ ValidationResult, ) -ContentTypes = Layout +ContentTypes = Union[Layout, CaseLayout] INVALID_SECTIONS: List = [ "evidence", From 1cf608c81e00de1efa3ec7f2c117ffbf064cfbf5 Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 14:00:52 +0300 Subject: [PATCH 29/33] validations --- .../commands/content_graph/tests/parsers_and_models_test.py | 5 ++++- .../BC_validators/BC106_is_valid_fromversion_on_modified.py | 4 +++- .../validators/IF_validators/IF101_is_valid_content_field.py | 5 +++-- .../validators/IF_validators/IF102_is_valid_system_flag.py | 5 +++-- .../validators/IF_validators/IF103_is_valid_field_type.py | 5 +++-- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py index 4c600a452a4..557dc582052 100644 --- a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py +++ b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py @@ -2701,7 +2701,10 @@ def test_layout_rule_match_fails_on_other_content_types(self, mocker, git_repo): - Ensure ValueError is raised. """ from demisto_sdk.commands.content_graph.common import ContentType - from demisto_sdk.commands.content_graph.objects import CaseLayoutRule, LayoutRule + from demisto_sdk.commands.content_graph.objects import ( + CaseLayoutRule, + LayoutRule, + ) layout_rule_json_str = "layout_rule.json" layout_rule_json_path = git_repo.path / Path(layout_rule_json_str) diff --git a/demisto_sdk/commands/validate/validators/BC_validators/BC106_is_valid_fromversion_on_modified.py b/demisto_sdk/commands/validate/validators/BC_validators/BC106_is_valid_fromversion_on_modified.py index fd5e97a5148..d4ad813159f 100644 --- a/demisto_sdk/commands/validate/validators/BC_validators/BC106_is_valid_fromversion_on_modified.py +++ b/demisto_sdk/commands/validate/validators/BC_validators/BC106_is_valid_fromversion_on_modified.py @@ -14,7 +14,9 @@ ValidationResult, ) -ContentTypes = Union[Integration, Script, Mapper, IncidentType, IncidentField, CaseField] +ContentTypes = Union[ + Integration, Script, Mapper, IncidentType, IncidentField, CaseField +] class IsValidFromversionOnModifiedValidator(BaseValidator[ContentTypes]): diff --git a/demisto_sdk/commands/validate/validators/IF_validators/IF101_is_valid_content_field.py b/demisto_sdk/commands/validate/validators/IF_validators/IF101_is_valid_content_field.py index 1f7be34d16f..c92332272a6 100644 --- a/demisto_sdk/commands/validate/validators/IF_validators/IF101_is_valid_content_field.py +++ b/demisto_sdk/commands/validate/validators/IF_validators/IF101_is_valid_content_field.py @@ -1,7 +1,8 @@ from __future__ import annotations -from typing import Iterable, List +from typing import Iterable, List, Union +from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.incident_field import IncidentField from demisto_sdk.commands.validate.validators.base_validator import ( BaseValidator, @@ -9,7 +10,7 @@ ValidationResult, ) -ContentTypes = IncidentField +ContentTypes = Union[CaseField, IncidentField] class IsValidContentFieldValidator(BaseValidator[ContentTypes]): diff --git a/demisto_sdk/commands/validate/validators/IF_validators/IF102_is_valid_system_flag.py b/demisto_sdk/commands/validate/validators/IF_validators/IF102_is_valid_system_flag.py index bef22cc4fda..0fb8c91d5b1 100644 --- a/demisto_sdk/commands/validate/validators/IF_validators/IF102_is_valid_system_flag.py +++ b/demisto_sdk/commands/validate/validators/IF_validators/IF102_is_valid_system_flag.py @@ -1,7 +1,8 @@ from __future__ import annotations -from typing import Iterable, List +from typing import Iterable, List, Union +from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.incident_field import IncidentField from demisto_sdk.commands.validate.validators.base_validator import ( BaseValidator, @@ -9,7 +10,7 @@ ValidationResult, ) -ContentTypes = IncidentField +ContentTypes = Union[CaseField, IncidentField] class IsValidSystemFlagValidator(BaseValidator[ContentTypes]): diff --git a/demisto_sdk/commands/validate/validators/IF_validators/IF103_is_valid_field_type.py b/demisto_sdk/commands/validate/validators/IF_validators/IF103_is_valid_field_type.py index ca599af0a8c..e55aa81eba7 100644 --- a/demisto_sdk/commands/validate/validators/IF_validators/IF103_is_valid_field_type.py +++ b/demisto_sdk/commands/validate/validators/IF_validators/IF103_is_valid_field_type.py @@ -1,14 +1,15 @@ from __future__ import annotations -from typing import Iterable, List +from typing import Iterable, List, Union +from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.incident_field import IncidentField from demisto_sdk.commands.validate.validators.base_validator import ( BaseValidator, ValidationResult, ) -ContentTypes = IncidentField +ContentTypes = Union[CaseField, IncidentField] FIELD_TYPES = { "shortText", From d96c83553c2d13797522418bc0c8b33dfe5f57bf Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 14:34:58 +0300 Subject: [PATCH 30/33] validations --- demisto_sdk/commands/content_graph/objects/case_layout.py | 7 +++++-- .../commands/content_graph/objects/case_layout_rule.py | 3 ++- demisto_sdk/commands/content_graph/objects/layout.py | 3 ++- demisto_sdk/commands/content_graph/objects/layout_rule.py | 3 ++- .../content_graph/tests/parsers_and_models_test.py | 7 +------ 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/demisto_sdk/commands/content_graph/objects/case_layout.py b/demisto_sdk/commands/content_graph/objects/case_layout.py index 1dca99b33c9..6bd1582c0d5 100644 --- a/demisto_sdk/commands/content_graph/objects/case_layout.py +++ b/demisto_sdk/commands/content_graph/objects/case_layout.py @@ -10,7 +10,10 @@ def match(_dict: dict, path: Path) -> bool: if "group" in _dict and Path(path).suffix == ".json": if "cliName" not in _dict: if "id" not in _dict or ( - isinstance(_dict["id"], str) and not _dict["id"].startswith("case") + isinstance(_dict["id"], str) + and not _dict["id"].startswith("incident") + and not _dict["id"].startswith("indicator") ): - return True + if _dict["group"] == "case": + return True return False diff --git a/demisto_sdk/commands/content_graph/objects/case_layout_rule.py b/demisto_sdk/commands/content_graph/objects/case_layout_rule.py index ea0ace07c4e..66f8b600d1b 100644 --- a/demisto_sdk/commands/content_graph/objects/case_layout_rule.py +++ b/demisto_sdk/commands/content_graph/objects/case_layout_rule.py @@ -25,5 +25,6 @@ def metadata_fields(self) -> Set[str]: @staticmethod def match(_dict: dict, path: Path) -> bool: if "rule_id" in _dict and path.suffix == ".json": - return True + if "incidents_filter" in _dict: + return True return False diff --git a/demisto_sdk/commands/content_graph/objects/layout.py b/demisto_sdk/commands/content_graph/objects/layout.py index 3dda1ee4866..035cea638ba 100644 --- a/demisto_sdk/commands/content_graph/objects/layout.py +++ b/demisto_sdk/commands/content_graph/objects/layout.py @@ -60,7 +60,8 @@ def match(_dict: dict, path: Path) -> bool: and not _dict["id"].startswith("incident") and not _dict["id"].startswith("indicator") ): - return True + if _dict["group"] in ("incident", "indicator"): + return True return False def metadata_fields(self) -> Set[str]: diff --git a/demisto_sdk/commands/content_graph/objects/layout_rule.py b/demisto_sdk/commands/content_graph/objects/layout_rule.py index 1ed79713c07..a9a37ebc010 100644 --- a/demisto_sdk/commands/content_graph/objects/layout_rule.py +++ b/demisto_sdk/commands/content_graph/objects/layout_rule.py @@ -25,5 +25,6 @@ def metadata_fields(self) -> Set[str]: @staticmethod def match(_dict: dict, path: Path) -> bool: if "rule_id" in _dict and path.suffix == ".json": - return True + if "alerts_filter" in _dict: + return True return False diff --git a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py index 557dc582052..768195e805d 100644 --- a/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py +++ b/demisto_sdk/commands/content_graph/tests/parsers_and_models_test.py @@ -2663,7 +2663,6 @@ def test_layout_match_fails_on_other_content_types(self, mocker, git_repo): git_repo.make_file(file_name=layout_json_str, file_content=content) mocker.patch.object(Layout, "match", return_value=False) - mocker.patch.object(CaseLayout, "match", return_value=False) with pytest.raises(ValueError): ContentType.by_schema(Path(layout_json_path)) @@ -2701,10 +2700,7 @@ def test_layout_rule_match_fails_on_other_content_types(self, mocker, git_repo): - Ensure ValueError is raised. """ from demisto_sdk.commands.content_graph.common import ContentType - from demisto_sdk.commands.content_graph.objects import ( - CaseLayoutRule, - LayoutRule, - ) + from demisto_sdk.commands.content_graph.objects import LayoutRule layout_rule_json_str = "layout_rule.json" layout_rule_json_path = git_repo.path / Path(layout_rule_json_str) @@ -2715,7 +2711,6 @@ def test_layout_rule_match_fails_on_other_content_types(self, mocker, git_repo): git_repo.make_file(file_name=layout_rule_json_str, file_content=content) mocker.patch.object(LayoutRule, "match", return_value=False) - mocker.patch.object(CaseLayoutRule, "match", return_value=False) with pytest.raises(ValueError): ContentType.by_schema(Path(layout_rule_json_path)) From dd38ebc548db1a2e8e54c7beda8200ab22640dda Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 15:08:50 +0300 Subject: [PATCH 31/33] test --- .../commands/content_graph/objects/case_layout.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/demisto_sdk/commands/content_graph/objects/case_layout.py b/demisto_sdk/commands/content_graph/objects/case_layout.py index 6bd1582c0d5..decb8f3c7d8 100644 --- a/demisto_sdk/commands/content_graph/objects/case_layout.py +++ b/demisto_sdk/commands/content_graph/objects/case_layout.py @@ -9,11 +9,6 @@ class CaseLayout(Layout, content_type=ContentType.CASE_LAYOUT): # type: ignore[ def match(_dict: dict, path: Path) -> bool: if "group" in _dict and Path(path).suffix == ".json": if "cliName" not in _dict: - if "id" not in _dict or ( - isinstance(_dict["id"], str) - and not _dict["id"].startswith("incident") - and not _dict["id"].startswith("indicator") - ): - if _dict["group"] == "case": - return True + if _dict["group"] == "case": + return True return False From bc4070f01a761b62222ae3a8d14e950cac23f2ef Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 15:35:05 +0300 Subject: [PATCH 32/33] validations --- .../IF_validators/IF100_is_valid_name_and_cli_name.py | 5 +++-- .../IF_validators/IF105_is_cli_name_field_alphanumeric.py | 5 +++-- .../IF_validators/IF106_is_cli_name_reserved_word.py | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/demisto_sdk/commands/validate/validators/IF_validators/IF100_is_valid_name_and_cli_name.py b/demisto_sdk/commands/validate/validators/IF_validators/IF100_is_valid_name_and_cli_name.py index bd059084c05..04423621ebf 100644 --- a/demisto_sdk/commands/validate/validators/IF_validators/IF100_is_valid_name_and_cli_name.py +++ b/demisto_sdk/commands/validate/validators/IF_validators/IF100_is_valid_name_and_cli_name.py @@ -1,14 +1,15 @@ from __future__ import annotations -from typing import Iterable, List +from typing import Iterable, List, Union +from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.incident_field import IncidentField from demisto_sdk.commands.validate.validators.base_validator import ( BaseValidator, ValidationResult, ) -ContentTypes = IncidentField +ContentTypes = Union[CaseField, IncidentField] BAD_WORDS = { "incident", diff --git a/demisto_sdk/commands/validate/validators/IF_validators/IF105_is_cli_name_field_alphanumeric.py b/demisto_sdk/commands/validate/validators/IF_validators/IF105_is_cli_name_field_alphanumeric.py index 347eec44953..41e4ab98b81 100644 --- a/demisto_sdk/commands/validate/validators/IF_validators/IF105_is_cli_name_field_alphanumeric.py +++ b/demisto_sdk/commands/validate/validators/IF_validators/IF105_is_cli_name_field_alphanumeric.py @@ -1,14 +1,15 @@ from __future__ import annotations -from typing import Iterable, List +from typing import Iterable, List, Union +from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.incident_field import IncidentField from demisto_sdk.commands.validate.validators.base_validator import ( BaseValidator, ValidationResult, ) -ContentTypes = IncidentField +ContentTypes = Union[CaseField, IncidentField] class IsCliNameFieldAlphanumericValidator(BaseValidator[ContentTypes]): diff --git a/demisto_sdk/commands/validate/validators/IF_validators/IF106_is_cli_name_reserved_word.py b/demisto_sdk/commands/validate/validators/IF_validators/IF106_is_cli_name_reserved_word.py index 17b0650e53c..d2c38b8b33f 100644 --- a/demisto_sdk/commands/validate/validators/IF_validators/IF106_is_cli_name_reserved_word.py +++ b/demisto_sdk/commands/validate/validators/IF_validators/IF106_is_cli_name_reserved_word.py @@ -1,14 +1,15 @@ from __future__ import annotations -from typing import Iterable, List +from typing import Iterable, List, Union +from demisto_sdk.commands.content_graph.objects.case_field import CaseField from demisto_sdk.commands.content_graph.objects.incident_field import IncidentField from demisto_sdk.commands.validate.validators.base_validator import ( BaseValidator, ValidationResult, ) -ContentTypes = IncidentField +ContentTypes = Union[CaseField, IncidentField] INCIDENT_PROHIBITED_CLI_NAMES = { "id", From 91b75b2521466f335475c27b49d8407dafe3c57c Mon Sep 17 00:00:00 2001 From: yucohen Date: Sun, 2 Jun 2024 15:47:59 +0300 Subject: [PATCH 33/33] fix --- demisto_sdk/commands/content_graph/objects/layout.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/demisto_sdk/commands/content_graph/objects/layout.py b/demisto_sdk/commands/content_graph/objects/layout.py index 035cea638ba..3dda1ee4866 100644 --- a/demisto_sdk/commands/content_graph/objects/layout.py +++ b/demisto_sdk/commands/content_graph/objects/layout.py @@ -60,8 +60,7 @@ def match(_dict: dict, path: Path) -> bool: and not _dict["id"].startswith("incident") and not _dict["id"].startswith("indicator") ): - if _dict["group"] in ("incident", "indicator"): - return True + return True return False def metadata_fields(self) -> Set[str]: