async def open_interface(self, client_id, conn_string, interface):
        """Open a device interface on behalf of a client.

        See :meth:`AbstractDeviceAdapter.open_interface`.

        Args:
            client_id (str): The client we are working for.
            conn_string (str): A connection string that will be
                passed to the underlying device adapter.
            interface (str): The name of the interface to open.

        Raises:
            DeviceServerError: There is an issue with your client_id such
                as not being connected to the device.
            DeviceAdapterError: The adapter had an issue opening the interface.
        """

        conn_id = self._client_connection(client_id, conn_string)

        # Hook first so there is no race on getting the first event
        self._hook_open_interface(conn_string, interface, client_id)
        await self.adapter.open_interface(conn_id, interface)
async def open_interface ( self , client_id , conn_string , interface ) : conn_id = self . _client_connection ( client_id , conn_string ) self . _hook_open_interface ( conn_string , interface , client_id ) await self . adapter . open_interface ( conn_id , interface )
Open a device interface on behalf of a client.

        See :meth:`AbstractDeviceAdapter.open_interface`.

        Args:
            client_id (str): The client we are working for.
            conn_string (str): A connection string that will be
                passed to the underlying device adapter.
            interface (str): The name of the interface to open.

        Raises:
            DeviceServerError: There is an issue with your client_id such
                as not being connected to the device.
            DeviceAdapterError: The adapter had an issue opening the interface.