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
AsyncDroidClient.initialize_session builds its JSON-RPC params from a closed allowlist (client.py:253-350 in 0.1.2): every field is set through _set_if_not_none, and there is no way to add one the SDK does not model. The protocol object that owns send_request is reachable only through the private _ensure_protocol(), and neither it nor the protocol class is exported in droid_sdk.__all__.
Consequence: any field droid.initialize_session accepts on the wire is unreachable from the SDK until a new SDK release models it. A caller pinned to a published version has no supported workaround, only private-attribute access.
The same limitation applies to load_session, which models four fields, and to every other wrapped method whose parameter set is narrower than the protocol's.
Callers that need one unmodeled field must either wait or reach into client._ensure_protocol(), which is private and can break in any patch release.
Reproducing a Droid CLI behaviour from Python is not always possible, so bug isolation against the JSON-RPC layer has to leave the SDK.
Ask
Escape hatch on the wrapped session methods, for example extra_params: dict[str, Any] | None = None, merged into params after the modeled fields. Either raise on collision with a modeled field or let the explicit argument win, as long as the rule is documented.
Alternatively, or in addition, a supported low-level entry point such as AsyncDroidClient.send_request(method, params, timeout), so callers can reach protocol surface the SDK does not yet wrap.
Whichever path you pick, document it as the intended pattern for protocol features that are newer than the installed SDK.
Problem
AsyncDroidClient.initialize_sessionbuilds its JSON-RPC params from a closed allowlist (client.py:253-350in 0.1.2): every field is set through_set_if_not_none, and there is no way to add one the SDK does not model. Theprotocolobject that ownssend_requestis reachable only through the private_ensure_protocol(), and neither it nor the protocol class is exported indroid_sdk.__all__.Consequence: any field
droid.initialize_sessionaccepts on the wire is unreachable from the SDK until a new SDK release models it. A caller pinned to a published version has no supported workaround, only private-attribute access.The same limitation applies to
load_session, which models four fields, and to every other wrapped method whose parameter set is narrower than the protocol's.Impact
client._ensure_protocol(), which is private and can break in any patch release.Ask
extra_params: dict[str, Any] | None = None, merged intoparamsafter the modeled fields. Either raise on collision with a modeled field or let the explicit argument win, as long as the rule is documented.AsyncDroidClient.send_request(method, params, timeout), so callers can reach protocol surface the SDK does not yet wrap.Environment
droid-sdk0.1.2 (PyPI)droidCLI 0.198.0