diff --git a/piker/brokers/binance/__init__.py b/piker/brokers/binance/__init__.py index 830b1acf..75c50916 100644 --- a/piker/brokers/binance/__init__.py +++ b/piker/brokers/binance/__init__.py @@ -52,9 +52,25 @@ __all__ = [ ] -# `brokerd` modules -__enable_modules__: list[str] = [ +# per-daemon-kind (sub)mod groups: declares which of our +# submods host the eps run by each daemon-actor kind as +# defined by `piker.data.validate._eps`. +# NOTE: `get_mkt_info` and `open_symbol_search` both live +# in `.feed` for this backend (no `symbols.py`). +_brokerd_mods: list[str] = [ 'api', - 'feed', 'broker', ] + +_datad_mods: list[str] = [ + 'api', + 'feed', +] + + +# tractor RPC enable arg +__enable_modules__: list[str] = list(dict.fromkeys( + _brokerd_mods + + + _datad_mods +)) diff --git a/piker/brokers/deribit/__init__.py b/piker/brokers/deribit/__init__.py index 4c0c1850..6e1a4c80 100644 --- a/piker/brokers/deribit/__init__.py +++ b/piker/brokers/deribit/__init__.py @@ -47,13 +47,25 @@ __all__ = [ ] -# tractor RPC enable arg -__enable_modules__: list[str] = [ +# per-daemon-kind (sub)mod groups: declares which of our +# submods host the eps run by each daemon-actor kind as +# defined by `piker.data.validate._eps`. +# NOTE: datad-only backend (no `broker.py` yet)! +_brokerd_mods: list[str] = [] + +_datad_mods: list[str] = [ 'api', 'feed', -# 'broker', ] + +# tractor RPC enable arg +__enable_modules__: list[str] = list(dict.fromkeys( + _brokerd_mods + + + _datad_mods +)) + # passed to ``tractor.ActorNursery.start_actor()`` _spawn_kwargs = { 'infect_asyncio': True, diff --git a/piker/brokers/ib/__init__.py b/piker/brokers/ib/__init__.py index e07ad482..e9f73b70 100644 --- a/piker/brokers/ib/__init__.py +++ b/piker/brokers/ib/__init__.py @@ -65,17 +65,18 @@ _brokerd_mods: list[str] = [ ] _datad_mods: list[str] = [ + 'api', 'feed', 'symbols', ] # tractor RPC enable arg -__enable_modules__: list[str] = ( +__enable_modules__: list[str] = list(dict.fromkeys( _brokerd_mods + _datad_mods -) +)) # passed to ``tractor.ActorNursery.start_actor()`` _spawn_kwargs = { diff --git a/piker/brokers/kraken/__init__.py b/piker/brokers/kraken/__init__.py index 1f5bc876..7254958a 100644 --- a/piker/brokers/kraken/__init__.py +++ b/piker/brokers/kraken/__init__.py @@ -66,10 +66,24 @@ __all__ = [ ] -# tractor RPC enable arg -__enable_modules__: list[str] = [ +# per-daemon-kind (sub)mod groups: declares which of our +# submods host the eps run by each daemon-actor kind as +# defined by `piker.data.validate._eps`. +_brokerd_mods: list[str] = [ 'api', 'broker', +] + +_datad_mods: list[str] = [ + 'api', 'feed', 'symbols', ] + + +# tractor RPC enable arg +__enable_modules__: list[str] = list(dict.fromkeys( + _brokerd_mods + + + _datad_mods +)) diff --git a/piker/brokers/kraken/broker.py b/piker/brokers/kraken/broker.py index 521dbdc6..92709d78 100644 --- a/piker/brokers/kraken/broker.py +++ b/piker/brokers/kraken/broker.py @@ -73,10 +73,12 @@ from piker.log import ( get_logger, ) from piker.data import open_symcache -from . import api -from .feed import ( +from piker.data._web_bs import ( open_autorecon_ws, NoBsWs, +) +from . import api +from .feed import ( stream_messages, ) from .ledger import ( diff --git a/piker/data/validate.py b/piker/data/validate.py index 38bd4086..f460bd71 100644 --- a/piker/data/validate.py +++ b/piker/data/validate.py @@ -91,6 +91,24 @@ _eps: dict[str, list[str]] = { } +def get_eps( + mod: ModuleType, + kind: str, # 'middleware' | 'datad' | 'brokerd' + +) -> dict[str, Callable]: + ''' + Return the daemon-kind's ep funcs defined by the backend + `mod`, keyed by ep name; any eps from `_eps[kind]` not + implemented by the backend are excluded. + + ''' + return { + name: ep + for name in _eps[kind] + if (ep := getattr(mod, name, None)) + } + + def validate_backend( mod: ModuleType, syms: list[str],