main - feat: Implement block params update

This commit is contained in:
Yoel Bassin 2025-04-27 00:18:18 +03:00
parent 5485413efd
commit f8174d07a1
5 changed files with 19 additions and 1 deletions

View File

@ -1,5 +1,7 @@
from __future__ import annotations
from typing import Any, Dict
from gnuradio.grc.core.blocks.block import Block
from gnuradio_mcp.models import SINK, SOURCE, ParamModel, PortModel
@ -13,8 +15,14 @@ class BlockMiddleware:
def name(self) -> str:
return self._block.name
# TODO: Check if rewrite is needed
def set_param(self, param_name: str, param_value: Any):
self._block.params[param_name].set_value(param_value)
def set_params(self, params: Dict[str, Any]):
for param_name, param_value in params.items():
self.set_param(param_name, param_value)
# TODO: Check if rewrite is needed
@property
def params(self) -> list[ParamModel]:
return [ParamModel.from_param(param) for param in self._block.params.values()]

View File

View File

@ -34,6 +34,16 @@ def test_block_middleware_sources(block_middleware: BlockMiddleware):
check_port_models(block_middleware.sources, block_middleware._block.sources, SOURCE)
def test_block_middleware_set_param(block_middleware: BlockMiddleware):
block_middleware.set_param("id", "my_custom_block_name")
assert block_middleware._block.params["id"].get_value() == "my_custom_block_name"
def test_block_middleware_set_params(block_middleware: BlockMiddleware):
block_middleware.set_params({"id": "my_custom_block_name"})
assert block_middleware._block.params["id"].get_value() == "my_custom_block_name"
def check_param_models(block: Block, params: list[ParamModel]):
assert params
assert len(params) == len(block.params)