Source code for stellar_sdk.xdr.config_setting_entry

# This is an automatically generated file.
# DO NOT EDIT or your changes may be overwritten
from __future__ import annotations

import base64
from typing import List

from xdrlib3 import Packer, Unpacker

from .config_setting_contract_bandwidth_v0 import ConfigSettingContractBandwidthV0
from .config_setting_contract_compute_v0 import ConfigSettingContractComputeV0
from .config_setting_contract_events_v0 import ConfigSettingContractEventsV0
from .config_setting_contract_execution_lanes_v0 import (
    ConfigSettingContractExecutionLanesV0,
)
from .config_setting_contract_historical_data_v0 import (
    ConfigSettingContractHistoricalDataV0,
)
from .config_setting_contract_ledger_cost_v0 import ConfigSettingContractLedgerCostV0
from .config_setting_id import ConfigSettingID
from .contract_cost_params import ContractCostParams
from .eviction_iterator import EvictionIterator
from .state_archival_settings import StateArchivalSettings
from .uint32 import Uint32
from .uint64 import Uint64

__all__ = ["ConfigSettingEntry"]


[docs] class ConfigSettingEntry: """ XDR Source Code:: union ConfigSettingEntry switch (ConfigSettingID configSettingID) { case CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES: uint32 contractMaxSizeBytes; case CONFIG_SETTING_CONTRACT_COMPUTE_V0: ConfigSettingContractComputeV0 contractCompute; case CONFIG_SETTING_CONTRACT_LEDGER_COST_V0: ConfigSettingContractLedgerCostV0 contractLedgerCost; case CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0: ConfigSettingContractHistoricalDataV0 contractHistoricalData; case CONFIG_SETTING_CONTRACT_EVENTS_V0: ConfigSettingContractEventsV0 contractEvents; case CONFIG_SETTING_CONTRACT_BANDWIDTH_V0: ConfigSettingContractBandwidthV0 contractBandwidth; case CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS: ContractCostParams contractCostParamsCpuInsns; case CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES: ContractCostParams contractCostParamsMemBytes; case CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES: uint32 contractDataKeySizeBytes; case CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES: uint32 contractDataEntrySizeBytes; case CONFIG_SETTING_STATE_ARCHIVAL: StateArchivalSettings stateArchivalSettings; case CONFIG_SETTING_CONTRACT_EXECUTION_LANES: ConfigSettingContractExecutionLanesV0 contractExecutionLanes; case CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: uint64 bucketListSizeWindow<>; case CONFIG_SETTING_EVICTION_ITERATOR: EvictionIterator evictionIterator; }; """ def __init__( self, config_setting_id: ConfigSettingID, contract_max_size_bytes: Uint32 = None, contract_compute: ConfigSettingContractComputeV0 = None, contract_ledger_cost: ConfigSettingContractLedgerCostV0 = None, contract_historical_data: ConfigSettingContractHistoricalDataV0 = None, contract_events: ConfigSettingContractEventsV0 = None, contract_bandwidth: ConfigSettingContractBandwidthV0 = None, contract_cost_params_cpu_insns: ContractCostParams = None, contract_cost_params_mem_bytes: ContractCostParams = None, contract_data_key_size_bytes: Uint32 = None, contract_data_entry_size_bytes: Uint32 = None, state_archival_settings: StateArchivalSettings = None, contract_execution_lanes: ConfigSettingContractExecutionLanesV0 = None, bucket_list_size_window: List[Uint64] = None, eviction_iterator: EvictionIterator = None, ) -> None: _expect_max_length = 4294967295 if ( bucket_list_size_window and len(bucket_list_size_window) > _expect_max_length ): raise ValueError( f"The maximum length of `bucket_list_size_window` should be {_expect_max_length}, but got {len(bucket_list_size_window)}." ) self.config_setting_id = config_setting_id self.contract_max_size_bytes = contract_max_size_bytes self.contract_compute = contract_compute self.contract_ledger_cost = contract_ledger_cost self.contract_historical_data = contract_historical_data self.contract_events = contract_events self.contract_bandwidth = contract_bandwidth self.contract_cost_params_cpu_insns = contract_cost_params_cpu_insns self.contract_cost_params_mem_bytes = contract_cost_params_mem_bytes self.contract_data_key_size_bytes = contract_data_key_size_bytes self.contract_data_entry_size_bytes = contract_data_entry_size_bytes self.state_archival_settings = state_archival_settings self.contract_execution_lanes = contract_execution_lanes self.bucket_list_size_window = bucket_list_size_window self.eviction_iterator = eviction_iterator def pack(self, packer: Packer) -> None: self.config_setting_id.pack(packer) if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES ): if self.contract_max_size_bytes is None: raise ValueError("contract_max_size_bytes should not be None.") self.contract_max_size_bytes.pack(packer) return if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COMPUTE_V0: if self.contract_compute is None: raise ValueError("contract_compute should not be None.") self.contract_compute.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_LEDGER_COST_V0 ): if self.contract_ledger_cost is None: raise ValueError("contract_ledger_cost should not be None.") self.contract_ledger_cost.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0 ): if self.contract_historical_data is None: raise ValueError("contract_historical_data should not be None.") self.contract_historical_data.pack(packer) return if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_EVENTS_V0: if self.contract_events is None: raise ValueError("contract_events should not be None.") self.contract_events.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_BANDWIDTH_V0 ): if self.contract_bandwidth is None: raise ValueError("contract_bandwidth should not be None.") self.contract_bandwidth.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS ): if self.contract_cost_params_cpu_insns is None: raise ValueError("contract_cost_params_cpu_insns should not be None.") self.contract_cost_params_cpu_insns.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES ): if self.contract_cost_params_mem_bytes is None: raise ValueError("contract_cost_params_mem_bytes should not be None.") self.contract_cost_params_mem_bytes.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES ): if self.contract_data_key_size_bytes is None: raise ValueError("contract_data_key_size_bytes should not be None.") self.contract_data_key_size_bytes.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES ): if self.contract_data_entry_size_bytes is None: raise ValueError("contract_data_entry_size_bytes should not be None.") self.contract_data_entry_size_bytes.pack(packer) return if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_STATE_ARCHIVAL: if self.state_archival_settings is None: raise ValueError("state_archival_settings should not be None.") self.state_archival_settings.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_EXECUTION_LANES ): if self.contract_execution_lanes is None: raise ValueError("contract_execution_lanes should not be None.") self.contract_execution_lanes.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW ): if self.bucket_list_size_window is None: raise ValueError("bucket_list_size_window should not be None.") packer.pack_uint(len(self.bucket_list_size_window)) for bucket_list_size_window_item in self.bucket_list_size_window: bucket_list_size_window_item.pack(packer) return if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_EVICTION_ITERATOR: if self.eviction_iterator is None: raise ValueError("eviction_iterator should not be None.") self.eviction_iterator.pack(packer) return @classmethod def unpack(cls, unpacker: Unpacker) -> ConfigSettingEntry: config_setting_id = ConfigSettingID.unpack(unpacker) if config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES: contract_max_size_bytes = Uint32.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_max_size_bytes=contract_max_size_bytes, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COMPUTE_V0: contract_compute = ConfigSettingContractComputeV0.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_compute=contract_compute ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_LEDGER_COST_V0: contract_ledger_cost = ConfigSettingContractLedgerCostV0.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_ledger_cost=contract_ledger_cost, ) if ( config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0 ): contract_historical_data = ConfigSettingContractHistoricalDataV0.unpack( unpacker ) return cls( config_setting_id=config_setting_id, contract_historical_data=contract_historical_data, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_EVENTS_V0: contract_events = ConfigSettingContractEventsV0.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_events=contract_events ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_BANDWIDTH_V0: contract_bandwidth = ConfigSettingContractBandwidthV0.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_bandwidth=contract_bandwidth, ) if ( config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS ): contract_cost_params_cpu_insns = ContractCostParams.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_cost_params_cpu_insns=contract_cost_params_cpu_insns, ) if ( config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES ): contract_cost_params_mem_bytes = ContractCostParams.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_cost_params_mem_bytes=contract_cost_params_mem_bytes, ) if ( config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES ): contract_data_key_size_bytes = Uint32.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_data_key_size_bytes=contract_data_key_size_bytes, ) if ( config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES ): contract_data_entry_size_bytes = Uint32.unpack(unpacker) return cls( config_setting_id=config_setting_id, contract_data_entry_size_bytes=contract_data_entry_size_bytes, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_STATE_ARCHIVAL: state_archival_settings = StateArchivalSettings.unpack(unpacker) return cls( config_setting_id=config_setting_id, state_archival_settings=state_archival_settings, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_EXECUTION_LANES: contract_execution_lanes = ConfigSettingContractExecutionLanesV0.unpack( unpacker ) return cls( config_setting_id=config_setting_id, contract_execution_lanes=contract_execution_lanes, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_BUCKETLIST_SIZE_WINDOW: length = unpacker.unpack_uint() bucket_list_size_window = [] for _ in range(length): bucket_list_size_window.append(Uint64.unpack(unpacker)) return cls( config_setting_id=config_setting_id, bucket_list_size_window=bucket_list_size_window, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_EVICTION_ITERATOR: eviction_iterator = EvictionIterator.unpack(unpacker) return cls( config_setting_id=config_setting_id, eviction_iterator=eviction_iterator ) return cls(config_setting_id=config_setting_id) def to_xdr_bytes(self) -> bytes: packer = Packer() self.pack(packer) return packer.get_buffer() @classmethod def from_xdr_bytes(cls, xdr: bytes) -> ConfigSettingEntry: unpacker = Unpacker(xdr) return cls.unpack(unpacker) def to_xdr(self) -> str: xdr_bytes = self.to_xdr_bytes() return base64.b64encode(xdr_bytes).decode() @classmethod def from_xdr(cls, xdr: str) -> ConfigSettingEntry: xdr_bytes = base64.b64decode(xdr.encode()) return cls.from_xdr_bytes(xdr_bytes) def __hash__(self): return hash( ( self.config_setting_id, self.contract_max_size_bytes, self.contract_compute, self.contract_ledger_cost, self.contract_historical_data, self.contract_events, self.contract_bandwidth, self.contract_cost_params_cpu_insns, self.contract_cost_params_mem_bytes, self.contract_data_key_size_bytes, self.contract_data_entry_size_bytes, self.state_archival_settings, self.contract_execution_lanes, self.bucket_list_size_window, self.eviction_iterator, ) ) def __eq__(self, other: object): if not isinstance(other, self.__class__): return NotImplemented return ( self.config_setting_id == other.config_setting_id and self.contract_max_size_bytes == other.contract_max_size_bytes and self.contract_compute == other.contract_compute and self.contract_ledger_cost == other.contract_ledger_cost and self.contract_historical_data == other.contract_historical_data and self.contract_events == other.contract_events and self.contract_bandwidth == other.contract_bandwidth and self.contract_cost_params_cpu_insns == other.contract_cost_params_cpu_insns and self.contract_cost_params_mem_bytes == other.contract_cost_params_mem_bytes and self.contract_data_key_size_bytes == other.contract_data_key_size_bytes and self.contract_data_entry_size_bytes == other.contract_data_entry_size_bytes and self.state_archival_settings == other.state_archival_settings and self.contract_execution_lanes == other.contract_execution_lanes and self.bucket_list_size_window == other.bucket_list_size_window and self.eviction_iterator == other.eviction_iterator ) def __str__(self): out = [] out.append(f"config_setting_id={self.config_setting_id}") out.append( f"contract_max_size_bytes={self.contract_max_size_bytes}" ) if self.contract_max_size_bytes is not None else None out.append( f"contract_compute={self.contract_compute}" ) if self.contract_compute is not None else None out.append( f"contract_ledger_cost={self.contract_ledger_cost}" ) if self.contract_ledger_cost is not None else None out.append( f"contract_historical_data={self.contract_historical_data}" ) if self.contract_historical_data is not None else None out.append( f"contract_events={self.contract_events}" ) if self.contract_events is not None else None out.append( f"contract_bandwidth={self.contract_bandwidth}" ) if self.contract_bandwidth is not None else None out.append( f"contract_cost_params_cpu_insns={self.contract_cost_params_cpu_insns}" ) if self.contract_cost_params_cpu_insns is not None else None out.append( f"contract_cost_params_mem_bytes={self.contract_cost_params_mem_bytes}" ) if self.contract_cost_params_mem_bytes is not None else None out.append( f"contract_data_key_size_bytes={self.contract_data_key_size_bytes}" ) if self.contract_data_key_size_bytes is not None else None out.append( f"contract_data_entry_size_bytes={self.contract_data_entry_size_bytes}" ) if self.contract_data_entry_size_bytes is not None else None out.append( f"state_archival_settings={self.state_archival_settings}" ) if self.state_archival_settings is not None else None out.append( f"contract_execution_lanes={self.contract_execution_lanes}" ) if self.contract_execution_lanes is not None else None out.append( f"bucket_list_size_window={self.bucket_list_size_window}" ) if self.bucket_list_size_window is not None else None out.append( f"eviction_iterator={self.eviction_iterator}" ) if self.eviction_iterator is not None else None return f"<ConfigSettingEntry [{', '.join(out)}]>"