From d560f86965cfe0147fea7d6b40b5e4284652859e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 12 Oct 2026 06:45:44 +0000 Subject: [PATCH] Update SDK to version v4.72.2 - Generated from OpenAPI spec version v4.72.2 - Auto-generated by GitHub Actions --- .sdk-version | 2 +- README.md | 3 + docs/DynamicExecutionSummary.md | 30 +++++ docs/DynamicExecutionSummaryMetadata.md | 29 +++++ ...ryMetadataDynamicExecutionSummaryResult.md | 33 +++++ revengai/__init__.py | 8 +- revengai/api_client.py | 2 +- revengai/configuration.py | 4 +- revengai/models/__init__.py | 3 + revengai/models/dynamic_execution_summary.py | 102 ++++++++++++++++ .../dynamic_execution_summary_metadata.py | 106 ++++++++++++++++ ...tadata_dynamic_execution_summary_result.py | 115 ++++++++++++++++++ 12 files changed, 432 insertions(+), 5 deletions(-) create mode 100644 docs/DynamicExecutionSummary.md create mode 100644 docs/DynamicExecutionSummaryMetadata.md create mode 100644 docs/OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult.md create mode 100644 revengai/models/dynamic_execution_summary.py create mode 100644 revengai/models/dynamic_execution_summary_metadata.py create mode 100644 revengai/models/operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result.py diff --git a/.sdk-version b/.sdk-version index dd81097..1be1028 100644 --- a/.sdk-version +++ b/.sdk-version @@ -1 +1 @@ -v4.70.0 +v4.72.2 diff --git a/README.md b/README.md index 06a4580..2a911f7 100644 --- a/README.md +++ b/README.md @@ -567,6 +567,8 @@ Class | Method | HTTP request | Description - [DynamicExecutionMetadata](docs/DynamicExecutionMetadata.md) - [DynamicExecutionStatus](docs/DynamicExecutionStatus.md) - [DynamicExecutionStatusResponse](docs/DynamicExecutionStatusResponse.md) + - [DynamicExecutionSummary](docs/DynamicExecutionSummary.md) + - [DynamicExecutionSummaryMetadata](docs/DynamicExecutionSummaryMetadata.md) - [ELFImportModel](docs/ELFImportModel.md) - [ELFModel](docs/ELFModel.md) - [ELFRelocation](docs/ELFRelocation.md) @@ -779,6 +781,7 @@ Class | Method | HTTP request | Description - [OperationCryptoExplainMetadataCryptoExplainResult](docs/OperationCryptoExplainMetadataCryptoExplainResult.md) - [OperationCryptoScanMetadataCryptoScanResult](docs/OperationCryptoScanMetadataCryptoScanResult.md) - [OperationDynamicExecutionMetadataDynamicExecutionResult](docs/OperationDynamicExecutionMetadataDynamicExecutionResult.md) + - [OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult](docs/OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult.md) - [OperationExecutionExplainMetadataExecutionExplainResult](docs/OperationExecutionExplainMetadataExecutionExplainResult.md) - [OperationExecutionScanMetadataExecutionScanResult](docs/OperationExecutionScanMetadataExecutionScanResult.md) - [OperationFilesystemAnalyseMetadataFilesystemAnalyseResult](docs/OperationFilesystemAnalyseMetadataFilesystemAnalyseResult.md) diff --git a/docs/DynamicExecutionSummary.md b/docs/DynamicExecutionSummary.md new file mode 100644 index 0000000..7c12e64 --- /dev/null +++ b/docs/DynamicExecutionSummary.md @@ -0,0 +1,30 @@ +# DynamicExecutionSummary + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**generated_at** | **datetime** | When the summary was generated | +**summary** | **str** | Markdown summary of the run | + +## Example + +```python +from revengai.models.dynamic_execution_summary import DynamicExecutionSummary + +# TODO update the JSON string below +json = "{}" +# create an instance of DynamicExecutionSummary from a JSON string +dynamic_execution_summary_instance = DynamicExecutionSummary.from_json(json) +# print the JSON string representation of the object +print(DynamicExecutionSummary.to_json()) + +# convert the object into a dict +dynamic_execution_summary_dict = dynamic_execution_summary_instance.to_dict() +# create an instance of DynamicExecutionSummary from a dict +dynamic_execution_summary_from_dict = DynamicExecutionSummary.from_dict(dynamic_execution_summary_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/DynamicExecutionSummaryMetadata.md b/docs/DynamicExecutionSummaryMetadata.md new file mode 100644 index 0000000..8580d0c --- /dev/null +++ b/docs/DynamicExecutionSummaryMetadata.md @@ -0,0 +1,29 @@ +# DynamicExecutionSummaryMetadata + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**status** | **str** | Status of the most recent summary attempt. UNINITIALISED means no summary has been attempted for this analysis. | + +## Example + +```python +from revengai.models.dynamic_execution_summary_metadata import DynamicExecutionSummaryMetadata + +# TODO update the JSON string below +json = "{}" +# create an instance of DynamicExecutionSummaryMetadata from a JSON string +dynamic_execution_summary_metadata_instance = DynamicExecutionSummaryMetadata.from_json(json) +# print the JSON string representation of the object +print(DynamicExecutionSummaryMetadata.to_json()) + +# convert the object into a dict +dynamic_execution_summary_metadata_dict = dynamic_execution_summary_metadata_instance.to_dict() +# create an instance of DynamicExecutionSummaryMetadata from a dict +dynamic_execution_summary_metadata_from_dict = DynamicExecutionSummaryMetadata.from_dict(dynamic_execution_summary_metadata_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult.md b/docs/OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult.md new file mode 100644 index 0000000..544be32 --- /dev/null +++ b/docs/OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult.md @@ -0,0 +1,33 @@ +# OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult + + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**done** | **bool** | Whether the operation has reached a terminal state. | +**error** | [**Status**](Status.md) | Failure detail, populated only when done is true and the operation failed. | [optional] +**metadata** | [**DynamicExecutionSummaryMetadata**](DynamicExecutionSummaryMetadata.md) | In-flight information and details. | [optional] +**name** | **str** | API resource name. | +**response** | **object** | | [optional] + +## Example + +```python +from revengai.models.operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result import OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult + +# TODO update the JSON string below +json = "{}" +# create an instance of OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult from a JSON string +operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result_instance = OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult.from_json(json) +# print the JSON string representation of the object +print(OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult.to_json()) + +# convert the object into a dict +operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result_dict = operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result_instance.to_dict() +# create an instance of OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult from a dict +operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result_from_dict = OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult.from_dict(operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result_dict) +``` +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/revengai/__init__.py b/revengai/__init__.py index c0a6d52..2c25de4 100644 --- a/revengai/__init__.py +++ b/revengai/__init__.py @@ -13,7 +13,7 @@ """ # noqa: E501 -__version__ = "v4.70.0" +__version__ = "v4.72.2" # Define package exports __all__ = [ @@ -324,6 +324,8 @@ "DynamicExecutionMetadata", "DynamicExecutionStatus", "DynamicExecutionStatusResponse", + "DynamicExecutionSummary", + "DynamicExecutionSummaryMetadata", "ELFImportModel", "ELFModel", "ELFRelocation", @@ -536,6 +538,7 @@ "OperationCryptoExplainMetadataCryptoExplainResult", "OperationCryptoScanMetadataCryptoScanResult", "OperationDynamicExecutionMetadataDynamicExecutionResult", + "OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult", "OperationExecutionExplainMetadataExecutionExplainResult", "OperationExecutionScanMetadataExecutionScanResult", "OperationFilesystemAnalyseMetadataFilesystemAnalyseResult", @@ -1107,6 +1110,8 @@ from revengai.models.dynamic_execution_metadata import DynamicExecutionMetadata as DynamicExecutionMetadata from revengai.models.dynamic_execution_status import DynamicExecutionStatus as DynamicExecutionStatus from revengai.models.dynamic_execution_status_response import DynamicExecutionStatusResponse as DynamicExecutionStatusResponse +from revengai.models.dynamic_execution_summary import DynamicExecutionSummary as DynamicExecutionSummary +from revengai.models.dynamic_execution_summary_metadata import DynamicExecutionSummaryMetadata as DynamicExecutionSummaryMetadata from revengai.models.elf_import_model import ELFImportModel as ELFImportModel from revengai.models.elf_model import ELFModel as ELFModel from revengai.models.elf_relocation import ELFRelocation as ELFRelocation @@ -1319,6 +1324,7 @@ from revengai.models.operation_crypto_explain_metadata_crypto_explain_result import OperationCryptoExplainMetadataCryptoExplainResult as OperationCryptoExplainMetadataCryptoExplainResult from revengai.models.operation_crypto_scan_metadata_crypto_scan_result import OperationCryptoScanMetadataCryptoScanResult as OperationCryptoScanMetadataCryptoScanResult from revengai.models.operation_dynamic_execution_metadata_dynamic_execution_result import OperationDynamicExecutionMetadataDynamicExecutionResult as OperationDynamicExecutionMetadataDynamicExecutionResult +from revengai.models.operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result import OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult as OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult from revengai.models.operation_execution_explain_metadata_execution_explain_result import OperationExecutionExplainMetadataExecutionExplainResult as OperationExecutionExplainMetadataExecutionExplainResult from revengai.models.operation_execution_scan_metadata_execution_scan_result import OperationExecutionScanMetadataExecutionScanResult as OperationExecutionScanMetadataExecutionScanResult from revengai.models.operation_filesystem_analyse_metadata_filesystem_analyse_result import OperationFilesystemAnalyseMetadataFilesystemAnalyseResult as OperationFilesystemAnalyseMetadataFilesystemAnalyseResult diff --git a/revengai/api_client.py b/revengai/api_client.py index 397163d..6a7f29c 100644 --- a/revengai/api_client.py +++ b/revengai/api_client.py @@ -90,7 +90,7 @@ def __init__( self.default_headers[header_name] = header_value self.cookie = cookie # Set default User-Agent. - self.user_agent = 'OpenAPI-Generator/v4.70.0/python' + self.user_agent = 'OpenAPI-Generator/v4.72.2/python' self.client_side_validation = configuration.client_side_validation def __enter__(self): diff --git a/revengai/configuration.py b/revengai/configuration.py index 1f59fe8..c4c1bcf 100644 --- a/revengai/configuration.py +++ b/revengai/configuration.py @@ -541,8 +541,8 @@ def to_debug_report(self) -> str: return "Python SDK Debug Report:\n"\ "OS: {env}\n"\ "Python Version: {pyversion}\n"\ - "Version of the API: v4.70.0\n"\ - "SDK Package Version: v4.70.0".\ + "Version of the API: v4.72.2\n"\ + "SDK Package Version: v4.72.2".\ format(env=sys.platform, pyversion=sys.version) def get_host_settings(self) -> List[HostSetting]: diff --git a/revengai/models/__init__.py b/revengai/models/__init__.py index 124f9f2..bb2c646 100644 --- a/revengai/models/__init__.py +++ b/revengai/models/__init__.py @@ -290,6 +290,8 @@ from revengai.models.dynamic_execution_metadata import DynamicExecutionMetadata from revengai.models.dynamic_execution_status import DynamicExecutionStatus from revengai.models.dynamic_execution_status_response import DynamicExecutionStatusResponse +from revengai.models.dynamic_execution_summary import DynamicExecutionSummary +from revengai.models.dynamic_execution_summary_metadata import DynamicExecutionSummaryMetadata from revengai.models.elf_import_model import ELFImportModel from revengai.models.elf_model import ELFModel from revengai.models.elf_relocation import ELFRelocation @@ -502,6 +504,7 @@ from revengai.models.operation_crypto_explain_metadata_crypto_explain_result import OperationCryptoExplainMetadataCryptoExplainResult from revengai.models.operation_crypto_scan_metadata_crypto_scan_result import OperationCryptoScanMetadataCryptoScanResult from revengai.models.operation_dynamic_execution_metadata_dynamic_execution_result import OperationDynamicExecutionMetadataDynamicExecutionResult +from revengai.models.operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result import OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult from revengai.models.operation_execution_explain_metadata_execution_explain_result import OperationExecutionExplainMetadataExecutionExplainResult from revengai.models.operation_execution_scan_metadata_execution_scan_result import OperationExecutionScanMetadataExecutionScanResult from revengai.models.operation_filesystem_analyse_metadata_filesystem_analyse_result import OperationFilesystemAnalyseMetadataFilesystemAnalyseResult diff --git a/revengai/models/dynamic_execution_summary.py b/revengai/models/dynamic_execution_summary.py new file mode 100644 index 0000000..c7db493 --- /dev/null +++ b/revengai/models/dynamic_execution_summary.py @@ -0,0 +1,102 @@ +# coding: utf-8 + +""" + RevEng.AI API + + RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from datetime import datetime +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class DynamicExecutionSummary(BaseModel): + """ + DynamicExecutionSummary + """ # noqa: E501 + generated_at: datetime = Field(description="When the summary was generated") + summary: StrictStr = Field(description="Markdown summary of the run") + additional_properties: Dict[str, Any] = {} + __properties: ClassVar[List[str]] = ["generated_at", "summary"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DynamicExecutionSummary from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + * Fields in `self.additional_properties` are added to the output dict. + """ + excluded_fields: Set[str] = set([ + "additional_properties", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # puts key-value pairs in additional_properties in the top level + if self.additional_properties is not None: + for _key, _value in self.additional_properties.items(): + _dict[_key] = _value + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DynamicExecutionSummary from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "generated_at": obj.get("generated_at"), + "summary": obj.get("summary") + }) + # store additional fields in additional_properties + for _key in obj.keys(): + if _key not in cls.__properties: + _obj.additional_properties[_key] = obj.get(_key) + + return _obj + + diff --git a/revengai/models/dynamic_execution_summary_metadata.py b/revengai/models/dynamic_execution_summary_metadata.py new file mode 100644 index 0000000..0c65d80 --- /dev/null +++ b/revengai/models/dynamic_execution_summary_metadata.py @@ -0,0 +1,106 @@ +# coding: utf-8 + +""" + RevEng.AI API + + RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class DynamicExecutionSummaryMetadata(BaseModel): + """ + DynamicExecutionSummaryMetadata + """ # noqa: E501 + status: StrictStr = Field(description="Status of the most recent summary attempt. UNINITIALISED means no summary has been attempted for this analysis.") + additional_properties: Dict[str, Any] = {} + __properties: ClassVar[List[str]] = ["status"] + + @field_validator('status') + def status_validate_enum(cls, value): + """Validates the enum""" + if value not in set(['UNINITIALISED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED', 'unknown_default_open_api']): + raise ValueError("must be one of enum values ('UNINITIALISED', 'PENDING', 'RUNNING', 'COMPLETED', 'FAILED', 'unknown_default_open_api')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of DynamicExecutionSummaryMetadata from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + * Fields in `self.additional_properties` are added to the output dict. + """ + excluded_fields: Set[str] = set([ + "additional_properties", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # puts key-value pairs in additional_properties in the top level + if self.additional_properties is not None: + for _key, _value in self.additional_properties.items(): + _dict[_key] = _value + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of DynamicExecutionSummaryMetadata from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "status": obj.get("status") + }) + # store additional fields in additional_properties + for _key in obj.keys(): + if _key not in cls.__properties: + _obj.additional_properties[_key] = obj.get(_key) + + return _obj + + diff --git a/revengai/models/operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result.py b/revengai/models/operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result.py new file mode 100644 index 0000000..6d670d4 --- /dev/null +++ b/revengai/models/operation_dynamic_execution_summary_metadata_dynamic_execution_summary_result.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + RevEng.AI API + + RevEng.AI is an AI-powered binary analysis platform for reverse engineering and malware analysis. It provides similarity search across executable binaries and functions, AI-driven decompilation, dynamic execution analysis, firmware unpacking, and integration with external threat intelligence sources like VirusTotal. + + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from revengai.models.dynamic_execution_summary_metadata import DynamicExecutionSummaryMetadata +from revengai.models.status import Status +from typing import Optional, Set +from typing_extensions import Self + +class OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult(BaseModel): + """ + OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult + """ # noqa: E501 + done: StrictBool = Field(description="Whether the operation has reached a terminal state.") + error: Optional[Status] = Field(default=None, description="Failure detail, populated only when done is true and the operation failed.") + metadata: Optional[DynamicExecutionSummaryMetadata] = Field(default=None, description="In-flight information and details.") + name: StrictStr = Field(description="API resource name.") + response: Optional[Dict[str, Any]] = None + additional_properties: Dict[str, Any] = {} + __properties: ClassVar[List[str]] = ["done", "error", "metadata", "name", "response"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + * Fields in `self.additional_properties` are added to the output dict. + """ + excluded_fields: Set[str] = set([ + "additional_properties", + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of error + if self.error: + _dict['error'] = self.error.to_dict() + # override the default output from pydantic by calling `to_dict()` of metadata + if self.metadata: + _dict['metadata'] = self.metadata.to_dict() + # puts key-value pairs in additional_properties in the top level + if self.additional_properties is not None: + for _key, _value in self.additional_properties.items(): + _dict[_key] = _value + + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of OperationDynamicExecutionSummaryMetadataDynamicExecutionSummaryResult from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "done": obj.get("done"), + "error": Status.from_dict(obj["error"]) if obj.get("error") is not None else None, + "metadata": DynamicExecutionSummaryMetadata.from_dict(obj["metadata"]) if obj.get("metadata") is not None else None, + "name": obj.get("name"), + "response": obj.get("response") + }) + # store additional fields in additional_properties + for _key in obj.keys(): + if _key not in cls.__properties: + _obj.additional_properties[_key] = obj.get(_key) + + return _obj + +