FastAPI source audit (2026-10-27)

This audit is based on the five newly supplied server_fastapi Python files, rather than assumptions about ese774_frame internals. The reviewed source snapshots are in source_reference/server_fastapi/ in this archive; they are not installed or deployed by the documentation build.

Verified structure

  • server.py constructs a FastApiServer at import time, using device_cls=DobotCtrl, router_cls=None, api_spec=None, object_name="dobot", and device_kwargs derived from Config. Calling server.run() is guarded by if __name__ == "__main__".

  • SyncDobotClient and AsyncDobotClient inherit SyncDeviceClient and AsyncDeviceClient, respectively. Their constructors pass object_name="dobot" and api_spec=None to the base class.

  • server_fastapi/__init__.py registers DeviceProxy with the names DobotCtrl and dobot, defaulting to asynchronous mode. Registration is performed on import.

  • make_pyi.py generates client_async.pyi, client_sync.pyi, and __init__.pyi from DobotCtrl, using helpers from ese774_frame.

Practical limitations and configuration

  • Both client constructors accept config, server_ip, and server_port. If config is supplied, its SERVER_IP and SERVER_PORT override explicit arguments. Without either, the code constructs http://None:None; no working connection defaults are supplied by these constructors.

  • SERVER_IP configures the HTTP listener, whereas DOBOT_IP is passed to the robot controller. The sample default listener 127.0.0.1 is loopback-only.

  • The server module does not call Config.load_yaml(). Configuration must be loaded before server construction in the same process, or the server module must be adapted deliberately.

  • The supplied sources do not establish transport authentication, authorization, TLS, retries, response schemas, or exception mapping: these require inspection of the installed ese774_frame version and runtime testing. No such behavior is claimed here.

  • DeviceProxy asynchronous mode is about the client call, not confirmation that a physical robot move has completed.

Validation status

AST syntax, class inheritance declarations, constructor arguments, and registration parameters are source-verified. The current archive does not contain a runnable full src/dobot tree or the installed framework; Sphinx import-based autodoc, end-to-end HTTP behavior, and hardware motion are not verified.