1
0
Fork 0
forked from lthn/blockchain
blockchain/utils/sdk/client/python/lthn/models/transaction_details_model.py
Snider 88d4357628
New API Interface (#27)
This pull request introduces a comprehensive new API interface for the blockchain, leveraging OpenAPI v3 to facilitate direct consumption of chain data by GUI and web applications. This change significantly refines the project's build infrastructure, incorporating Conan for dependency management and CMake for configuration, alongside the integration of an OpenAPI Generator to produce SDKs for multiple languages. 

### Highlights

* **New API Interface**: Introduced a new API interface using OpenAPI v3 to enable GUI/WEB development to consume chain data without needing custom server applications.
* **Build System Enhancements**: Significant updates to the build system, including Makefile, CMake, and Conan configurations, to streamline the build process and support new functionalities.
* **Multi-language SDK Generation**: Integrated OpenAPI Generator to automatically create SDKs for various programming languages, including Go, Angular, and PHP, simplifying client-side integration.
2025-10-19 19:12:37 +01:00

143 lines
5.5 KiB
Python
Generated

# coding: utf-8
"""
Lethean Blockchain API
OpenAPI for Lethean Blockchain
The version of the OpenAPI document: 6.0.1
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, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from lthn.models.transaction_attachment_model import TransactionAttachmentModel
from lthn.models.transaction_extra_model import TransactionExtraModel
from lthn.models.transaction_input_model import TransactionInputModel
from lthn.models.transaction_output_model import TransactionOutputModel
from typing import Optional, Set
from typing_extensions import Self
class TransactionDetailsModel(BaseModel):
"""
TransactionDetailsModel
""" # noqa: E501
amount: Optional[StrictInt] = None
attachments: Optional[List[TransactionAttachmentModel]] = None
blob: Optional[StrictStr] = None
blob_size: Optional[StrictInt] = None
extra: Optional[List[TransactionExtraModel]] = None
fee: Optional[StrictInt] = None
id: Optional[StrictStr] = None
ins: Optional[List[TransactionInputModel]] = None
keeper_block: Optional[StrictInt] = None
object_in_json: Optional[StrictStr] = None
outs: Optional[List[TransactionOutputModel]] = None
pub_key: Optional[StrictStr] = None
timestamp: Optional[StrictInt] = None
__properties: ClassVar[List[str]] = ["amount", "attachments", "blob", "blob_size", "extra", "fee", "id", "ins", "keeper_block", "object_in_json", "outs", "pub_key", "timestamp"]
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 TransactionDetailsModel 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.
"""
excluded_fields: Set[str] = set([
])
_dict = self.model_dump(
by_alias=True,
exclude=excluded_fields,
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of each item in attachments (list)
_items = []
if self.attachments:
for _item_attachments in self.attachments:
if _item_attachments:
_items.append(_item_attachments.to_dict())
_dict['attachments'] = _items
# override the default output from pydantic by calling `to_dict()` of each item in extra (list)
_items = []
if self.extra:
for _item_extra in self.extra:
if _item_extra:
_items.append(_item_extra.to_dict())
_dict['extra'] = _items
# override the default output from pydantic by calling `to_dict()` of each item in ins (list)
_items = []
if self.ins:
for _item_ins in self.ins:
if _item_ins:
_items.append(_item_ins.to_dict())
_dict['ins'] = _items
# override the default output from pydantic by calling `to_dict()` of each item in outs (list)
_items = []
if self.outs:
for _item_outs in self.outs:
if _item_outs:
_items.append(_item_outs.to_dict())
_dict['outs'] = _items
return _dict
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of TransactionDetailsModel from a dict"""
if obj is None:
return None
if not isinstance(obj, dict):
return cls.model_validate(obj)
_obj = cls.model_validate({
"amount": obj.get("amount"),
"attachments": [TransactionAttachmentModel.from_dict(_item) for _item in obj["attachments"]] if obj.get("attachments") is not None else None,
"blob": obj.get("blob"),
"blob_size": obj.get("blob_size"),
"extra": [TransactionExtraModel.from_dict(_item) for _item in obj["extra"]] if obj.get("extra") is not None else None,
"fee": obj.get("fee"),
"id": obj.get("id"),
"ins": [TransactionInputModel.from_dict(_item) for _item in obj["ins"]] if obj.get("ins") is not None else None,
"keeper_block": obj.get("keeper_block"),
"object_in_json": obj.get("object_in_json"),
"outs": [TransactionOutputModel.from_dict(_item) for _item in obj["outs"]] if obj.get("outs") is not None else None,
"pub_key": obj.get("pub_key"),
"timestamp": obj.get("timestamp")
})
return _obj