luna.engine.engine
Engine Objects
class Engine(EngineApi)
Local engine that mimics the real one for local testing purposes. It provides methods to add, remove, and tick contracts, handle events, manage secrets, and perform various get and set operations for templates, variables, parameters, roles, clauses, and more. Also includes functionalities to validate contracts and run functions, leveraging the local kernel and storage systems. This engine serves as a comprehensive testing tool for developing and validating contracts within the Luna framework.
add_contract
def add_contract(*,
template: Template,
parameters: Dict[str, Any] | None = None,
linked_contracts: Dict[str, str] | None = None,
roles: Dict[str, List[str]] | None = None) -> ContractWrapper
Adds a contract to the engine using a given template and optional parameters. Returns a wrapper object for the contract.
add_contract_from_boundary
def add_contract_from_boundary(
*,
template: str,
parameters: Dict[str, JsonValue] | None = None,
linked_contracts: Dict[str, str] | None = None,
roles: Dict[str, List[str]] | None = None,
class_name: str | None = None) -> ContractWrapper
Alternative method to add a contract using raw boundary data, suitable for API interactions.
rm_contract
def rm_contract(contract_id: str)
Removes a specified contract from the engine.
tick_contract
def tick_contract(contract_id: str, clock_offset: timedelta) -> TickData
Simulates a tick on a specified contract, advancing its state based on the given clock offset. Returns data generated during the tick.
put_event
def put_event(contract_id: str,
event_name: str,
source_type: types.EventSourceType,
source_id: str,
publish_at: datetime | None = None,
payload: PayloadDict | None = None)
Inserts an event into a contract, potentially triggering clauses.
put_audit
def put_audit(
req: engine_types.PutAuditRequest) -> engine_types.PutAuditResponse
Logs audit information for contract executions.
get_template
def get_template(
req: engine_types.GetTemplateRequest
) -> engine_types.GetTemplateResponse
Retrieves a contract template based on the provided request.
get_variable
def get_variable(
req: engine_types.GetVariableRequest
) -> engine_types.GetVariableResponse
Retrieves the value of a variable from a contract.
set_secret
def set_secret(key: str, value: str)
Stores a secret value associated with a given key.
get_secret
def get_secret(
req: engine_types.GetSecretRequest) -> engine_types.GetSecretResponse
Retrieves a secret value based on a given key.
get_connection
def get_connection(
req: engine_types.GetConnectionRequest
) -> engine_types.GetConnectionResponse
Returns details of a connection.
This works by using the "user entered value" connection type to fake
connections to return a specific value. When using this engine, each
connection must have a value set using set_connection_read_value
before that connection can be used.
set_connection_read_value
def set_connection_read_value(connection_name: str, value: Any)
Stores the value to be returned by a connection.
set_participant_detail
def set_participant_detail(participant_id: str, name: str, value: str)
Stores a secret value associated with a given key.
get_participant_detail
def get_participant_detail(
req: engine_types.GetParticipantDetailRequest
) -> engine_types.GetParticipantDetailResponse
Retrieves a secret value based on a given key.
update_participant_detail
def update_participant_detail(
req: engine_types.UpdateParticipantDetailRequest
) -> engine_types.UpdateParticipantDetailResponse
Retrieves a secret value based on a given key.
get_parameter
def get_parameter(
req: engine_types.GetParameterRequest
) -> engine_types.GetParameterResponse
Fetches the value of a specified parameter from a contract.
get_role
def get_role(req: engine_types.GetRoleRequest) -> engine_types.GetRoleResponse
Retrieves role data, such as participant IDs, from a contract.
get_clause_eval_count
def get_clause_eval_count(
req: engine_types.GetClauseEvalCountRequest
) -> engine_types.GetClauseEvalCountResponse
Retrieves the evaluation count of a specified clause within a contract.
get_evaluated_clause
def get_evaluated_clause(
req: engine_types.GetEvaluatedClauseRequest
) -> engine_types.GetEvaluatedClauseResponse
Retrieves data for a clause that has been evaluated in a contract.
get_linked_contract
def get_linked_contract(
req: engine_types.GetLinkedContractRequest
) -> engine_types.GetLinkedContractResponse
Retrieves information about a contract linked to another contract.
get_children
def get_children(
req: engine_types.GetChildrenRequest
) -> engine_types.GetChildrenResponse
Obtains information about child contracts linked to a parent contract.
get_tick_count
def get_tick_count(
req: engine_types.GetTickCountRequest
) -> engine_types.GetTickCountResponse
Fetches the tick count, representing the number of iterations, of a contract.
get_tick_datetime
def get_tick_datetime(
req: engine_types.GetTickDatetimeRequest
) -> engine_types.GetTickDatetimeResponse
Retrieves the datetime of the most recent tick in a contract.
get_terminated
def get_terminated(
req: engine_types.GetTerminatedRequest
) -> engine_types.GetTerminatedResponse
Determines if a contract is terminated.
get_events
def get_events(
req: engine_types.GetEventsRequest) -> engine_types.GetEventsResponse
Fetches event data for a specific contract.
get_event
def get_event(
req: engine_types.GetEventRequest) -> engine_types.GetEventResponse
Retrieves a specific event based on its ID in a contract.
get_contract_info
def get_contract_info(
req: engine_types.GetContractInfoRequest
) -> engine_types.GetContractInfoResponse
Obtains comprehensive contract information, including state snapshot.
run_function
def run_function(
req: engine_types.RunFunctionRequest
) -> engine_types.RunFunctionResponse
Executes a specified function within the context of a contract.
validate
def validate(
req: engine_types.ValidateRequest) -> engine_types.ValidateResponse
Validates contract data based on the provided request. Ensures that parameters, accounts, and participants are correct.