def create_from_string()

in client/commands/server_event.py [0:0]


def create_from_string(input_string: str) -> Optional[Event]:
    try:
        input_json: List[str] = json.loads(input_string)
        if len(input_json) < 1:
            return None

        input_kind = input_json[0]
        if input_kind == "SocketCreated":
            if len(input_json) < 2:
                return None
            else:
                return SocketCreated(socket_path=Path(input_json[1]))
        elif input_kind == "ServerInitialized":
            return ServerInitialized()
        elif input_kind == "Exception":
            if len(input_json) < 2:
                return None
            if not isinstance(input_json[1], str):
                return None
            if (
                len(input_json) >= 3
                and isinstance(input_json[2], list)
                and len(input_json[2]) > 0
                and isinstance(input_json[2][0], str)
            ):
                return ServerException(
                    message=input_json[1], kind=ErrorKind.from_string(input_json[2][0])
                )
            return ServerException(message=input_json[1], kind=ErrorKind.UNKNOWN)
        else:
            return None
    except json.JSONDecodeError:
        return None