Adjust FSP UI/mgmt apis to be `Flume` oriented
							parent
							
								
									99bba1240d
								
							
						
					
					
						commit
						d03a566e40
					
				| 
						 | 
				
			
			@ -42,6 +42,7 @@ from ..data._sharedmem import (
 | 
			
		|||
    _Token,
 | 
			
		||||
    try_read,
 | 
			
		||||
)
 | 
			
		||||
from ..data.feed import Flume
 | 
			
		||||
from ._chart import (
 | 
			
		||||
    ChartPlotWidget,
 | 
			
		||||
    LinkedSplits,
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +111,8 @@ def update_fsp_chart(
 | 
			
		|||
    # sub-charts reference it under different 'named charts'.
 | 
			
		||||
 | 
			
		||||
    # read from last calculated value and update any label
 | 
			
		||||
    last_val_sticky = chart._ysticks.get(graphics_name)
 | 
			
		||||
    last_val_sticky = chart.plotItem.getAxis(
 | 
			
		||||
        'right')._stickies.get(graphics_name)
 | 
			
		||||
    if last_val_sticky:
 | 
			
		||||
        last = last_row[array_key]
 | 
			
		||||
        last_val_sticky.update_from_data(-1, last)
 | 
			
		||||
| 
						 | 
				
			
			@ -362,7 +364,7 @@ class FspAdmin:
 | 
			
		|||
        tn: trio.Nursery,
 | 
			
		||||
        cluster: dict[str, tractor.Portal],
 | 
			
		||||
        linked: LinkedSplits,
 | 
			
		||||
        src_shm: ShmArray,
 | 
			
		||||
        flume: Flume,
 | 
			
		||||
 | 
			
		||||
    ) -> None:
 | 
			
		||||
        self.tn = tn
 | 
			
		||||
| 
						 | 
				
			
			@ -374,7 +376,7 @@ class FspAdmin:
 | 
			
		|||
            tuple[tractor.MsgStream, ShmArray]
 | 
			
		||||
        ] = {}
 | 
			
		||||
        self._flow_registry: dict[_Token, str] = {}
 | 
			
		||||
        self.src_shm = src_shm
 | 
			
		||||
        self.flume = flume
 | 
			
		||||
 | 
			
		||||
    def rr_next_portal(self) -> tractor.Portal:
 | 
			
		||||
        name, portal = next(self._rr_next_actor)
 | 
			
		||||
| 
						 | 
				
			
			@ -409,7 +411,7 @@ class FspAdmin:
 | 
			
		|||
                fqsn=fqsn,
 | 
			
		||||
 | 
			
		||||
                # mems
 | 
			
		||||
                src_shm_token=self.src_shm.token,
 | 
			
		||||
                src_shm_token=self.flume.rt_shm.token,
 | 
			
		||||
                dst_shm_token=dst_shm.token,
 | 
			
		||||
 | 
			
		||||
                # target
 | 
			
		||||
| 
						 | 
				
			
			@ -469,7 +471,7 @@ class FspAdmin:
 | 
			
		|||
 | 
			
		||||
    ) -> (ShmArray, trio.Event):
 | 
			
		||||
 | 
			
		||||
        fqsn = self.linked.symbol.front_fqsn()
 | 
			
		||||
        fqsn = self.flume.symbol.fqsn
 | 
			
		||||
 | 
			
		||||
        # allocate an output shm array
 | 
			
		||||
        key, dst_shm, opened = maybe_mk_fsp_shm(
 | 
			
		||||
| 
						 | 
				
			
			@ -478,7 +480,7 @@ class FspAdmin:
 | 
			
		|||
            readonly=True,
 | 
			
		||||
        )
 | 
			
		||||
        self._flow_registry[(
 | 
			
		||||
            self.src_shm._token,
 | 
			
		||||
            self.flume.rt_shm._token,
 | 
			
		||||
            target.name
 | 
			
		||||
        )] = dst_shm._token
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -540,7 +542,7 @@ class FspAdmin:
 | 
			
		|||
@acm
 | 
			
		||||
async def open_fsp_admin(
 | 
			
		||||
    linked: LinkedSplits,
 | 
			
		||||
    src_shm: ShmArray,
 | 
			
		||||
    flume: Flume,
 | 
			
		||||
    **kwargs,
 | 
			
		||||
 | 
			
		||||
) -> AsyncGenerator[dict, dict[str, tractor.Portal]]:
 | 
			
		||||
| 
						 | 
				
			
			@ -561,7 +563,7 @@ async def open_fsp_admin(
 | 
			
		|||
            tn,
 | 
			
		||||
            cluster_map,
 | 
			
		||||
            linked,
 | 
			
		||||
            src_shm,
 | 
			
		||||
            flume,
 | 
			
		||||
        )
 | 
			
		||||
        try:
 | 
			
		||||
            yield admin
 | 
			
		||||
| 
						 | 
				
			
			@ -575,7 +577,7 @@ async def open_fsp_admin(
 | 
			
		|||
async def open_vlm_displays(
 | 
			
		||||
 | 
			
		||||
    linked: LinkedSplits,
 | 
			
		||||
    ohlcv: ShmArray,
 | 
			
		||||
    flume: Flume,
 | 
			
		||||
    dvlm: bool = True,
 | 
			
		||||
 | 
			
		||||
    task_status: TaskStatus[ChartPlotWidget] = trio.TASK_STATUS_IGNORED,
 | 
			
		||||
| 
						 | 
				
			
			@ -597,6 +599,8 @@ async def open_vlm_displays(
 | 
			
		|||
    sig = inspect.signature(flow_rates.func)
 | 
			
		||||
    params = sig.parameters
 | 
			
		||||
 | 
			
		||||
    ohlcv: ShmArray = flume.rt_shm
 | 
			
		||||
 | 
			
		||||
    async with (
 | 
			
		||||
        open_fsp_sidepane(
 | 
			
		||||
            linked, {
 | 
			
		||||
| 
						 | 
				
			
			@ -616,7 +620,7 @@ async def open_vlm_displays(
 | 
			
		|||
                }
 | 
			
		||||
            },
 | 
			
		||||
        ) as sidepane,
 | 
			
		||||
        open_fsp_admin(linked, ohlcv) as admin,
 | 
			
		||||
        open_fsp_admin(linked, flume) as admin,
 | 
			
		||||
    ):
 | 
			
		||||
        # TODO: support updates
 | 
			
		||||
        # period_field = sidepane.fields['period']
 | 
			
		||||
| 
						 | 
				
			
			@ -644,6 +648,8 @@ async def open_vlm_displays(
 | 
			
		|||
            # the curve item internals are pretty convoluted.
 | 
			
		||||
            style='step',
 | 
			
		||||
        )
 | 
			
		||||
        # back-link the volume chart to trigger y-autoranging
 | 
			
		||||
        # in the ohlc (parent) chart.
 | 
			
		||||
        ohlc_chart.view.enable_auto_yrange(
 | 
			
		||||
            src_vb=chart.view,
 | 
			
		||||
        )
 | 
			
		||||
| 
						 | 
				
			
			@ -685,7 +691,8 @@ async def open_vlm_displays(
 | 
			
		|||
        assert chart.name != linked.chart.name
 | 
			
		||||
 | 
			
		||||
        # sticky only on sub-charts atm
 | 
			
		||||
        last_val_sticky = chart._ysticks[chart.name]
 | 
			
		||||
        last_val_sticky = chart.plotItem.getAxis(
 | 
			
		||||
            'right')._stickies.get(chart.name)
 | 
			
		||||
 | 
			
		||||
        # read from last calculated value
 | 
			
		||||
        value = shm.array['volume'][-1]
 | 
			
		||||
| 
						 | 
				
			
			@ -928,7 +935,7 @@ async def open_vlm_displays(
 | 
			
		|||
async def start_fsp_displays(
 | 
			
		||||
 | 
			
		||||
    linked: LinkedSplits,
 | 
			
		||||
    ohlcv: ShmArray,
 | 
			
		||||
    flume: Flume,
 | 
			
		||||
    group_status_key: str,
 | 
			
		||||
    loglevel: str,
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -971,7 +978,10 @@ async def start_fsp_displays(
 | 
			
		|||
    async with (
 | 
			
		||||
 | 
			
		||||
        # NOTE: this admin internally opens an actor cluster
 | 
			
		||||
        open_fsp_admin(linked, ohlcv) as admin,
 | 
			
		||||
        open_fsp_admin(
 | 
			
		||||
            linked,
 | 
			
		||||
            flume,
 | 
			
		||||
        ) as admin,
 | 
			
		||||
    ):
 | 
			
		||||
        statuses = []
 | 
			
		||||
        for target, conf in fsp_conf.items():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue