You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
No Any middle case. A statically-declared Command always has fully-known P/T. A driver that knows nothing statically (e.g. fastcs-secop, discovered entirely from an over-the-wire describe) does not annotate a Command at all — it builds the whole structure, attributes and commands alike, at runtime. So P/T are either completely known or the whole structure is unknown; there is no in-between Command[Any, Any]. (Resolved by @Tom-Willemsen on #402; last commit of WIP: What is the current state of the refactor #402 drops the Any option from ADR 0015.)
No metadata ⇒ use the python type (consistent with the DataType drop, getter/setter IO rework; remove AttributeIORef and DataType #392). ControllerAPI exposes the signature; transports declare capability: EPICS CA/PVA serve void/void and skip typed commands with a warning at IOC startup (post-construction, when populated controllers are handed to transports); Tango/REST/GraphQL serve fully.
Scope
Method/Command._validate; keep the capturedinspect.Signatureas the public signature.[]|[DT1, DT2, …](positional, known types). Returns =None|DT.Anymiddle case. A statically-declaredCommandalways has fully-knownP/T. A driver that knows nothing statically (e.g.fastcs-secop, discovered entirely from an over-the-wiredescribe) does not annotate aCommandat all — it builds the whole structure, attributes and commands alike, at runtime. SoP/Tare either completely known or the whole structure is unknown; there is no in-betweenCommand[Any, Any]. (Resolved by @Tom-Willemsen on #402; last commit of WIP: What is the current state of the refactor #402 drops theAnyoption from ADR 0015.)Key files (§9)
src/fastcs/methods/(Method/Command/Scan), transports.Acceptance
uv run --locked tox -e pre-commit,type-checking,testsgreen.ADR: 0015
Parent: #388
Blocked by: #392