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
import json

from xdrlib3 import Packer, Unpacker

from .base import DEFAULT_XDR_MAX_DEPTH
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_ext_v0 import (
    ConfigSettingContractLedgerCostExtV0,
)
from .config_setting_contract_ledger_cost_v0 import ConfigSettingContractLedgerCostV0
from .config_setting_contract_parallel_compute_v0 import (
    ConfigSettingContractParallelComputeV0,
)
from .config_setting_id import ConfigSettingID
from .config_setting_scp_timing import ConfigSettingSCPTiming
from .contract_cost_params import ContractCostParams
from .eviction_iterator import EvictionIterator
from .freeze_bypass_txs import FreezeBypassTxs
from .freeze_bypass_txs_delta import FreezeBypassTxsDelta
from .frozen_ledger_keys import FrozenLedgerKeys
from .frozen_ledger_keys_delta import FrozenLedgerKeysDelta
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_LIVE_SOROBAN_STATE_SIZE_WINDOW: uint64 liveSorobanStateSizeWindow<>; case CONFIG_SETTING_EVICTION_ITERATOR: EvictionIterator evictionIterator; case CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0: ConfigSettingContractParallelComputeV0 contractParallelCompute; case CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0: ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt; case CONFIG_SETTING_SCP_TIMING: ConfigSettingSCPTiming contractSCPTiming; case CONFIG_SETTING_FROZEN_LEDGER_KEYS: FrozenLedgerKeys frozenLedgerKeys; case CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA: FrozenLedgerKeysDelta frozenLedgerKeysDelta; case CONFIG_SETTING_FREEZE_BYPASS_TXS: FreezeBypassTxs freezeBypassTxs; case CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA: FreezeBypassTxsDelta freezeBypassTxsDelta; }; """ def __init__( self, config_setting_id: ConfigSettingID, contract_max_size_bytes: Uint32 | None = None, contract_compute: ConfigSettingContractComputeV0 | None = None, contract_ledger_cost: ConfigSettingContractLedgerCostV0 | None = None, contract_historical_data: ConfigSettingContractHistoricalDataV0 | None = None, contract_events: ConfigSettingContractEventsV0 | None = None, contract_bandwidth: ConfigSettingContractBandwidthV0 | None = None, contract_cost_params_cpu_insns: ContractCostParams | None = None, contract_cost_params_mem_bytes: ContractCostParams | None = None, contract_data_key_size_bytes: Uint32 | None = None, contract_data_entry_size_bytes: Uint32 | None = None, state_archival_settings: StateArchivalSettings | None = None, contract_execution_lanes: ConfigSettingContractExecutionLanesV0 | None = None, live_soroban_state_size_window: list[Uint64] | None = None, eviction_iterator: EvictionIterator | None = None, contract_parallel_compute: ConfigSettingContractParallelComputeV0 | None = None, contract_ledger_cost_ext: ConfigSettingContractLedgerCostExtV0 | None = None, contract_scp_timing: ConfigSettingSCPTiming | None = None, frozen_ledger_keys: FrozenLedgerKeys | None = None, frozen_ledger_keys_delta: FrozenLedgerKeysDelta | None = None, freeze_bypass_txs: FreezeBypassTxs | None = None, freeze_bypass_txs_delta: FreezeBypassTxsDelta | None = None, ) -> None: _expect_max_length = 4294967295 if ( live_soroban_state_size_window and len(live_soroban_state_size_window) > _expect_max_length ): raise ValueError( f"The maximum length of `live_soroban_state_size_window` should be {_expect_max_length}, but got {len(live_soroban_state_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.live_soroban_state_size_window = live_soroban_state_size_window self.eviction_iterator = eviction_iterator self.contract_parallel_compute = contract_parallel_compute self.contract_ledger_cost_ext = contract_ledger_cost_ext self.contract_scp_timing = contract_scp_timing self.frozen_ledger_keys = frozen_ledger_keys self.frozen_ledger_keys_delta = frozen_ledger_keys_delta self.freeze_bypass_txs = freeze_bypass_txs self.freeze_bypass_txs_delta = freeze_bypass_txs_delta 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_LIVE_SOROBAN_STATE_SIZE_WINDOW ): if self.live_soroban_state_size_window is None: raise ValueError("live_soroban_state_size_window should not be None.") packer.pack_uint(len(self.live_soroban_state_size_window)) for ( live_soroban_state_size_window_item ) in self.live_soroban_state_size_window: live_soroban_state_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 if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 ): if self.contract_parallel_compute is None: raise ValueError("contract_parallel_compute should not be None.") self.contract_parallel_compute.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 ): if self.contract_ledger_cost_ext is None: raise ValueError("contract_ledger_cost_ext should not be None.") self.contract_ledger_cost_ext.pack(packer) return if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_SCP_TIMING: if self.contract_scp_timing is None: raise ValueError("contract_scp_timing should not be None.") self.contract_scp_timing.pack(packer) return if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_FROZEN_LEDGER_KEYS: if self.frozen_ledger_keys is None: raise ValueError("frozen_ledger_keys should not be None.") self.frozen_ledger_keys.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA ): if self.frozen_ledger_keys_delta is None: raise ValueError("frozen_ledger_keys_delta should not be None.") self.frozen_ledger_keys_delta.pack(packer) return if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_FREEZE_BYPASS_TXS: if self.freeze_bypass_txs is None: raise ValueError("freeze_bypass_txs should not be None.") self.freeze_bypass_txs.pack(packer) return if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA ): if self.freeze_bypass_txs_delta is None: raise ValueError("freeze_bypass_txs_delta should not be None.") self.freeze_bypass_txs_delta.pack(packer) return raise ValueError("Invalid config_setting_id.") @classmethod def unpack( cls, unpacker: Unpacker, depth_limit: int = DEFAULT_XDR_MAX_DEPTH ) -> ConfigSettingEntry: if depth_limit <= 0: raise ValueError("Maximum decoding depth reached") config_setting_id = ConfigSettingID.unpack(unpacker) if config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES: contract_max_size_bytes = Uint32.unpack(unpacker, depth_limit - 1) 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, depth_limit - 1 ) 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, depth_limit - 1 ) 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, depth_limit - 1 ) 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, depth_limit - 1 ) 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, depth_limit - 1 ) 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, depth_limit - 1 ) 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, depth_limit - 1 ) 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, depth_limit - 1) 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, depth_limit - 1) 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, depth_limit - 1 ) 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, depth_limit - 1 ) return cls( config_setting_id=config_setting_id, contract_execution_lanes=contract_execution_lanes, ) if ( config_setting_id == ConfigSettingID.CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW ): length = unpacker.unpack_uint() _remaining = len(unpacker.get_buffer()) - unpacker.get_position() if _remaining < length: raise ValueError( f"live_soroban_state_size_window length {length} exceeds remaining input length {_remaining}" ) live_soroban_state_size_window = [] for _ in range(length): live_soroban_state_size_window.append( Uint64.unpack(unpacker, depth_limit - 1) ) return cls( config_setting_id=config_setting_id, live_soroban_state_size_window=live_soroban_state_size_window, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_EVICTION_ITERATOR: eviction_iterator = EvictionIterator.unpack(unpacker, depth_limit - 1) return cls( config_setting_id=config_setting_id, eviction_iterator=eviction_iterator ) if ( config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 ): contract_parallel_compute = ConfigSettingContractParallelComputeV0.unpack( unpacker, depth_limit - 1 ) return cls( config_setting_id=config_setting_id, contract_parallel_compute=contract_parallel_compute, ) if ( config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 ): contract_ledger_cost_ext = ConfigSettingContractLedgerCostExtV0.unpack( unpacker, depth_limit - 1 ) return cls( config_setting_id=config_setting_id, contract_ledger_cost_ext=contract_ledger_cost_ext, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_SCP_TIMING: contract_scp_timing = ConfigSettingSCPTiming.unpack( unpacker, depth_limit - 1 ) return cls( config_setting_id=config_setting_id, contract_scp_timing=contract_scp_timing, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_FROZEN_LEDGER_KEYS: frozen_ledger_keys = FrozenLedgerKeys.unpack(unpacker, depth_limit - 1) return cls( config_setting_id=config_setting_id, frozen_ledger_keys=frozen_ledger_keys, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA: frozen_ledger_keys_delta = FrozenLedgerKeysDelta.unpack( unpacker, depth_limit - 1 ) return cls( config_setting_id=config_setting_id, frozen_ledger_keys_delta=frozen_ledger_keys_delta, ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_FREEZE_BYPASS_TXS: freeze_bypass_txs = FreezeBypassTxs.unpack(unpacker, depth_limit - 1) return cls( config_setting_id=config_setting_id, freeze_bypass_txs=freeze_bypass_txs ) if config_setting_id == ConfigSettingID.CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA: freeze_bypass_txs_delta = FreezeBypassTxsDelta.unpack( unpacker, depth_limit - 1 ) return cls( config_setting_id=config_setting_id, freeze_bypass_txs_delta=freeze_bypass_txs_delta, ) raise ValueError("Invalid 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) result = cls.unpack(unpacker) remaining = len(xdr) - unpacker.get_position() if remaining != 0: raise ValueError(f"Unexpected trailing {remaining} bytes in XDR data") return result 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 to_json(self) -> str: return json.dumps(self.to_json_dict()) @classmethod def from_json(cls, json_str: str) -> ConfigSettingEntry: return cls.from_json_dict(json.loads(json_str)) def to_json_dict(self): if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES ): assert self.contract_max_size_bytes is not None return { "contract_max_size_bytes": self.contract_max_size_bytes.to_json_dict() } if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COMPUTE_V0: assert self.contract_compute is not None return {"contract_compute_v0": self.contract_compute.to_json_dict()} if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_LEDGER_COST_V0 ): assert self.contract_ledger_cost is not None return {"contract_ledger_cost_v0": self.contract_ledger_cost.to_json_dict()} if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0 ): assert self.contract_historical_data is not None return { "contract_historical_data_v0": self.contract_historical_data.to_json_dict() } if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_EVENTS_V0: assert self.contract_events is not None return {"contract_events_v0": self.contract_events.to_json_dict()} if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_BANDWIDTH_V0 ): assert self.contract_bandwidth is not None return {"contract_bandwidth_v0": self.contract_bandwidth.to_json_dict()} if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS ): assert self.contract_cost_params_cpu_insns is not None return { "contract_cost_params_cpu_instructions": self.contract_cost_params_cpu_insns.to_json_dict() } if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES ): assert self.contract_cost_params_mem_bytes is not None return { "contract_cost_params_memory_bytes": self.contract_cost_params_mem_bytes.to_json_dict() } if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES ): assert self.contract_data_key_size_bytes is not None return { "contract_data_key_size_bytes": self.contract_data_key_size_bytes.to_json_dict() } if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES ): assert self.contract_data_entry_size_bytes is not None return { "contract_data_entry_size_bytes": self.contract_data_entry_size_bytes.to_json_dict() } if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_STATE_ARCHIVAL: assert self.state_archival_settings is not None return {"state_archival": self.state_archival_settings.to_json_dict()} if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_EXECUTION_LANES ): assert self.contract_execution_lanes is not None return { "contract_execution_lanes": self.contract_execution_lanes.to_json_dict() } if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW ): assert self.live_soroban_state_size_window is not None return { "live_soroban_state_size_window": [ item.to_json_dict() for item in self.live_soroban_state_size_window ] } if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_EVICTION_ITERATOR: assert self.eviction_iterator is not None return {"eviction_iterator": self.eviction_iterator.to_json_dict()} if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 ): assert self.contract_parallel_compute is not None return { "contract_parallel_compute_v0": self.contract_parallel_compute.to_json_dict() } if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 ): assert self.contract_ledger_cost_ext is not None return { "contract_ledger_cost_ext_v0": self.contract_ledger_cost_ext.to_json_dict() } if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_SCP_TIMING: assert self.contract_scp_timing is not None return {"scp_timing": self.contract_scp_timing.to_json_dict()} if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_FROZEN_LEDGER_KEYS: assert self.frozen_ledger_keys is not None return {"frozen_ledger_keys": self.frozen_ledger_keys.to_json_dict()} if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_FROZEN_LEDGER_KEYS_DELTA ): assert self.frozen_ledger_keys_delta is not None return { "frozen_ledger_keys_delta": self.frozen_ledger_keys_delta.to_json_dict() } if self.config_setting_id == ConfigSettingID.CONFIG_SETTING_FREEZE_BYPASS_TXS: assert self.freeze_bypass_txs is not None return {"freeze_bypass_txs": self.freeze_bypass_txs.to_json_dict()} if ( self.config_setting_id == ConfigSettingID.CONFIG_SETTING_FREEZE_BYPASS_TXS_DELTA ): assert self.freeze_bypass_txs_delta is not None return { "freeze_bypass_txs_delta": self.freeze_bypass_txs_delta.to_json_dict() } raise ValueError( f"Unknown config_setting_id in ConfigSettingEntry: {self.config_setting_id}" ) @classmethod def from_json_dict(cls, json_value: dict) -> ConfigSettingEntry: if len(json_value) != 1: raise ValueError( f"Expected a single-key object for ConfigSettingEntry, got: {json_value}" ) key = next(iter(json_value)) config_setting_id = ConfigSettingID.from_json_dict(key) if key == "contract_max_size_bytes": contract_max_size_bytes = Uint32.from_json_dict( json_value["contract_max_size_bytes"] ) return cls( config_setting_id=config_setting_id, contract_max_size_bytes=contract_max_size_bytes, ) if key == "contract_compute_v0": contract_compute = ConfigSettingContractComputeV0.from_json_dict( json_value["contract_compute_v0"] ) return cls( config_setting_id=config_setting_id, contract_compute=contract_compute ) if key == "contract_ledger_cost_v0": contract_ledger_cost = ConfigSettingContractLedgerCostV0.from_json_dict( json_value["contract_ledger_cost_v0"] ) return cls( config_setting_id=config_setting_id, contract_ledger_cost=contract_ledger_cost, ) if key == "contract_historical_data_v0": contract_historical_data = ( ConfigSettingContractHistoricalDataV0.from_json_dict( json_value["contract_historical_data_v0"] ) ) return cls( config_setting_id=config_setting_id, contract_historical_data=contract_historical_data, ) if key == "contract_events_v0": contract_events = ConfigSettingContractEventsV0.from_json_dict( json_value["contract_events_v0"] ) return cls( config_setting_id=config_setting_id, contract_events=contract_events ) if key == "contract_bandwidth_v0": contract_bandwidth = ConfigSettingContractBandwidthV0.from_json_dict( json_value["contract_bandwidth_v0"] ) return cls( config_setting_id=config_setting_id, contract_bandwidth=contract_bandwidth, ) if key == "contract_cost_params_cpu_instructions": contract_cost_params_cpu_insns = ContractCostParams.from_json_dict( json_value["contract_cost_params_cpu_instructions"] ) return cls( config_setting_id=config_setting_id, contract_cost_params_cpu_insns=contract_cost_params_cpu_insns, ) if key == "contract_cost_params_memory_bytes": contract_cost_params_mem_bytes = ContractCostParams.from_json_dict( json_value["contract_cost_params_memory_bytes"] ) return cls( config_setting_id=config_setting_id, contract_cost_params_mem_bytes=contract_cost_params_mem_bytes, ) if key == "contract_data_key_size_bytes": contract_data_key_size_bytes = Uint32.from_json_dict( json_value["contract_data_key_size_bytes"] ) return cls( config_setting_id=config_setting_id, contract_data_key_size_bytes=contract_data_key_size_bytes, ) if key == "contract_data_entry_size_bytes": contract_data_entry_size_bytes = Uint32.from_json_dict( json_value["contract_data_entry_size_bytes"] ) return cls( config_setting_id=config_setting_id, contract_data_entry_size_bytes=contract_data_entry_size_bytes, ) if key == "state_archival": state_archival_settings = StateArchivalSettings.from_json_dict( json_value["state_archival"] ) return cls( config_setting_id=config_setting_id, state_archival_settings=state_archival_settings, ) if key == "contract_execution_lanes": contract_execution_lanes = ( ConfigSettingContractExecutionLanesV0.from_json_dict( json_value["contract_execution_lanes"] ) ) return cls( config_setting_id=config_setting_id, contract_execution_lanes=contract_execution_lanes, ) if key == "live_soroban_state_size_window": live_soroban_state_size_window = [ Uint64.from_json_dict(item) for item in json_value["live_soroban_state_size_window"] ] return cls( config_setting_id=config_setting_id, live_soroban_state_size_window=live_soroban_state_size_window, ) if key == "eviction_iterator": eviction_iterator = EvictionIterator.from_json_dict( json_value["eviction_iterator"] ) return cls( config_setting_id=config_setting_id, eviction_iterator=eviction_iterator ) if key == "contract_parallel_compute_v0": contract_parallel_compute = ( ConfigSettingContractParallelComputeV0.from_json_dict( json_value["contract_parallel_compute_v0"] ) ) return cls( config_setting_id=config_setting_id, contract_parallel_compute=contract_parallel_compute, ) if key == "contract_ledger_cost_ext_v0": contract_ledger_cost_ext = ( ConfigSettingContractLedgerCostExtV0.from_json_dict( json_value["contract_ledger_cost_ext_v0"] ) ) return cls( config_setting_id=config_setting_id, contract_ledger_cost_ext=contract_ledger_cost_ext, ) if key == "scp_timing": contract_scp_timing = ConfigSettingSCPTiming.from_json_dict( json_value["scp_timing"] ) return cls( config_setting_id=config_setting_id, contract_scp_timing=contract_scp_timing, ) if key == "frozen_ledger_keys": frozen_ledger_keys = FrozenLedgerKeys.from_json_dict( json_value["frozen_ledger_keys"] ) return cls( config_setting_id=config_setting_id, frozen_ledger_keys=frozen_ledger_keys, ) if key == "frozen_ledger_keys_delta": frozen_ledger_keys_delta = FrozenLedgerKeysDelta.from_json_dict( json_value["frozen_ledger_keys_delta"] ) return cls( config_setting_id=config_setting_id, frozen_ledger_keys_delta=frozen_ledger_keys_delta, ) if key == "freeze_bypass_txs": freeze_bypass_txs = FreezeBypassTxs.from_json_dict( json_value["freeze_bypass_txs"] ) return cls( config_setting_id=config_setting_id, freeze_bypass_txs=freeze_bypass_txs ) if key == "freeze_bypass_txs_delta": freeze_bypass_txs_delta = FreezeBypassTxsDelta.from_json_dict( json_value["freeze_bypass_txs_delta"] ) return cls( config_setting_id=config_setting_id, freeze_bypass_txs_delta=freeze_bypass_txs_delta, ) raise ValueError(f"Unknown key '{key}' for ConfigSettingEntry") 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.live_soroban_state_size_window, self.eviction_iterator, self.contract_parallel_compute, self.contract_ledger_cost_ext, self.contract_scp_timing, self.frozen_ledger_keys, self.frozen_ledger_keys_delta, self.freeze_bypass_txs, self.freeze_bypass_txs_delta, ) ) 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.live_soroban_state_size_window == other.live_soroban_state_size_window and self.eviction_iterator == other.eviction_iterator and self.contract_parallel_compute == other.contract_parallel_compute and self.contract_ledger_cost_ext == other.contract_ledger_cost_ext and self.contract_scp_timing == other.contract_scp_timing and self.frozen_ledger_keys == other.frozen_ledger_keys and self.frozen_ledger_keys_delta == other.frozen_ledger_keys_delta and self.freeze_bypass_txs == other.freeze_bypass_txs and self.freeze_bypass_txs_delta == other.freeze_bypass_txs_delta ) def __repr__(self): out = [] out.append(f"config_setting_id={self.config_setting_id}") if self.contract_max_size_bytes is not None: out.append(f"contract_max_size_bytes={self.contract_max_size_bytes}") if self.contract_compute is not None: out.append(f"contract_compute={self.contract_compute}") if self.contract_ledger_cost is not None: out.append(f"contract_ledger_cost={self.contract_ledger_cost}") if self.contract_historical_data is not None: out.append(f"contract_historical_data={self.contract_historical_data}") if self.contract_events is not None: out.append(f"contract_events={self.contract_events}") if self.contract_bandwidth is not None: out.append(f"contract_bandwidth={self.contract_bandwidth}") if self.contract_cost_params_cpu_insns is not None: out.append( f"contract_cost_params_cpu_insns={self.contract_cost_params_cpu_insns}" ) if self.contract_cost_params_mem_bytes is not None: out.append( f"contract_cost_params_mem_bytes={self.contract_cost_params_mem_bytes}" ) if self.contract_data_key_size_bytes is not None: out.append( f"contract_data_key_size_bytes={self.contract_data_key_size_bytes}" ) if self.contract_data_entry_size_bytes is not None: out.append( f"contract_data_entry_size_bytes={self.contract_data_entry_size_bytes}" ) if self.state_archival_settings is not None: out.append(f"state_archival_settings={self.state_archival_settings}") if self.contract_execution_lanes is not None: out.append(f"contract_execution_lanes={self.contract_execution_lanes}") if self.live_soroban_state_size_window is not None: out.append( f"live_soroban_state_size_window={self.live_soroban_state_size_window}" ) if self.eviction_iterator is not None: out.append(f"eviction_iterator={self.eviction_iterator}") if self.contract_parallel_compute is not None: out.append(f"contract_parallel_compute={self.contract_parallel_compute}") if self.contract_ledger_cost_ext is not None: out.append(f"contract_ledger_cost_ext={self.contract_ledger_cost_ext}") if self.contract_scp_timing is not None: out.append(f"contract_scp_timing={self.contract_scp_timing}") if self.frozen_ledger_keys is not None: out.append(f"frozen_ledger_keys={self.frozen_ledger_keys}") if self.frozen_ledger_keys_delta is not None: out.append(f"frozen_ledger_keys_delta={self.frozen_ledger_keys_delta}") if self.freeze_bypass_txs is not None: out.append(f"freeze_bypass_txs={self.freeze_bypass_txs}") if self.freeze_bypass_txs_delta is not None: out.append(f"freeze_bypass_txs_delta={self.freeze_bypass_txs_delta}") return f"<ConfigSettingEntry [{', '.join(out)}]>"