From e196af69f3c2bcc3a045af375c8baba38607afeb Mon Sep 17 00:00:00 2001 From: Ada Lovelace Date: Tue, 21 Apr 2026 12:45:34 +0000 Subject: Hackathon Starterkit --- codenames/v1/admin_connect.py | 708 ++++++++++++++++++++++++++ codenames/v1/admin_pb2.py | 89 ++++ codenames/v1/admin_pb2.pyi | 208 ++++++++ codenames/v1/bot_connect.py | 318 ++++++++++++ codenames/v1/bot_pb2.py | 62 +++ codenames/v1/bot_pb2.pyi | 134 +++++ codenames/v1/game_connect.py | 1033 ++++++++++++++++++++++++++++++++++++++ codenames/v1/game_pb2.py | 106 ++++ codenames/v1/game_pb2.pyi | 273 ++++++++++ codenames/v1/ssh_keys_connect.py | 188 +++++++ codenames/v1/ssh_keys_pb2.py | 47 ++ codenames/v1/ssh_keys_pb2.pyi | 41 ++ codenames/v1/types_pb2.py | 67 +++ codenames/v1/types_pb2.pyi | 217 ++++++++ 14 files changed, 3491 insertions(+) create mode 100644 codenames/v1/admin_connect.py create mode 100644 codenames/v1/admin_pb2.py create mode 100644 codenames/v1/admin_pb2.pyi create mode 100644 codenames/v1/bot_connect.py create mode 100644 codenames/v1/bot_pb2.py create mode 100644 codenames/v1/bot_pb2.pyi create mode 100644 codenames/v1/game_connect.py create mode 100644 codenames/v1/game_pb2.py create mode 100644 codenames/v1/game_pb2.pyi create mode 100644 codenames/v1/ssh_keys_connect.py create mode 100644 codenames/v1/ssh_keys_pb2.py create mode 100644 codenames/v1/ssh_keys_pb2.pyi create mode 100644 codenames/v1/types_pb2.py create mode 100644 codenames/v1/types_pb2.pyi (limited to 'codenames') diff --git a/codenames/v1/admin_connect.py b/codenames/v1/admin_connect.py new file mode 100644 index 0000000..fc7d0ee --- /dev/null +++ b/codenames/v1/admin_connect.py @@ -0,0 +1,708 @@ +# -*- coding: utf-8 -*- +# Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT! +# source: codenames/v1/admin.proto + +from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping +from typing import Protocol + +from connectrpc.client import ConnectClient, ConnectClientSync +from connectrpc.code import Code +from connectrpc.compression import Compression +from connectrpc.errors import ConnectError +from connectrpc.interceptor import Interceptor, InterceptorSync +from connectrpc.method import IdempotencyLevel, MethodInfo +from connectrpc.request import Headers, RequestContext +from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync +import codenames.v1.admin_pb2 as codenames_dot_v1_dot_admin__pb2 + + +class AdminService(Protocol): + async def get_config(self, request: codenames_dot_v1_dot_admin__pb2.GetConfigRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.GetConfigResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def update_config(self, request: codenames_dot_v1_dot_admin__pb2.UpdateConfigRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.UpdateConfigResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def create_team(self, request: codenames_dot_v1_dot_admin__pb2.CreateTeamRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.CreateTeamResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_teams(self, request: codenames_dot_v1_dot_admin__pb2.ListTeamsRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.ListTeamsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def update_team(self, request: codenames_dot_v1_dot_admin__pb2.UpdateTeamRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.UpdateTeamResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def create_team_token(self, request: codenames_dot_v1_dot_admin__pb2.CreateTeamTokenRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.CreateTeamTokenResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def revoke_team_token(self, request: codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_team_tokens(self, request: codenames_dot_v1_dot_admin__pb2.ListTeamTokensRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.ListTeamTokensResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_s_s_h_key_submissions(self, request: codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def kill_game(self, request: codenames_dot_v1_dot_admin__pb2.KillGameRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.KillGameResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class AdminServiceASGIApplication(ConnectASGIApplication[AdminService]): + def __init__(self, service: AdminService | AsyncGenerator[AdminService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: + super().__init__( + service=service, + endpoints=lambda svc: { + "/codenames.v1.AdminService/GetConfig": Endpoint.unary( + method=MethodInfo( + name="GetConfig", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.GetConfigRequest, + output=codenames_dot_v1_dot_admin__pb2.GetConfigResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.get_config, + ), + "/codenames.v1.AdminService/UpdateConfig": Endpoint.unary( + method=MethodInfo( + name="UpdateConfig", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.UpdateConfigRequest, + output=codenames_dot_v1_dot_admin__pb2.UpdateConfigResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.update_config, + ), + "/codenames.v1.AdminService/CreateTeam": Endpoint.unary( + method=MethodInfo( + name="CreateTeam", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.CreateTeamRequest, + output=codenames_dot_v1_dot_admin__pb2.CreateTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.create_team, + ), + "/codenames.v1.AdminService/ListTeams": Endpoint.unary( + method=MethodInfo( + name="ListTeams", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListTeamsRequest, + output=codenames_dot_v1_dot_admin__pb2.ListTeamsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_teams, + ), + "/codenames.v1.AdminService/UpdateTeam": Endpoint.unary( + method=MethodInfo( + name="UpdateTeam", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.UpdateTeamRequest, + output=codenames_dot_v1_dot_admin__pb2.UpdateTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.update_team, + ), + "/codenames.v1.AdminService/CreateTeamToken": Endpoint.unary( + method=MethodInfo( + name="CreateTeamToken", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.CreateTeamTokenRequest, + output=codenames_dot_v1_dot_admin__pb2.CreateTeamTokenResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.create_team_token, + ), + "/codenames.v1.AdminService/RevokeTeamToken": Endpoint.unary( + method=MethodInfo( + name="RevokeTeamToken", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenRequest, + output=codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.revoke_team_token, + ), + "/codenames.v1.AdminService/ListTeamTokens": Endpoint.unary( + method=MethodInfo( + name="ListTeamTokens", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListTeamTokensRequest, + output=codenames_dot_v1_dot_admin__pb2.ListTeamTokensResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_team_tokens, + ), + "/codenames.v1.AdminService/ListSSHKeySubmissions": Endpoint.unary( + method=MethodInfo( + name="ListSSHKeySubmissions", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsRequest, + output=codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_s_s_h_key_submissions, + ), + "/codenames.v1.AdminService/KillGame": Endpoint.unary( + method=MethodInfo( + name="KillGame", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.KillGameRequest, + output=codenames_dot_v1_dot_admin__pb2.KillGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.kill_game, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + compressions=compressions, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/codenames.v1.AdminService" + + +class AdminServiceClient(ConnectClient): + async def get_config( + self, + request: codenames_dot_v1_dot_admin__pb2.GetConfigRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.GetConfigResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetConfig", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.GetConfigRequest, + output=codenames_dot_v1_dot_admin__pb2.GetConfigResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def update_config( + self, + request: codenames_dot_v1_dot_admin__pb2.UpdateConfigRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.UpdateConfigResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="UpdateConfig", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.UpdateConfigRequest, + output=codenames_dot_v1_dot_admin__pb2.UpdateConfigResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def create_team( + self, + request: codenames_dot_v1_dot_admin__pb2.CreateTeamRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.CreateTeamResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="CreateTeam", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.CreateTeamRequest, + output=codenames_dot_v1_dot_admin__pb2.CreateTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_teams( + self, + request: codenames_dot_v1_dot_admin__pb2.ListTeamsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.ListTeamsResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListTeams", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListTeamsRequest, + output=codenames_dot_v1_dot_admin__pb2.ListTeamsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def update_team( + self, + request: codenames_dot_v1_dot_admin__pb2.UpdateTeamRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.UpdateTeamResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="UpdateTeam", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.UpdateTeamRequest, + output=codenames_dot_v1_dot_admin__pb2.UpdateTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def create_team_token( + self, + request: codenames_dot_v1_dot_admin__pb2.CreateTeamTokenRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.CreateTeamTokenResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="CreateTeamToken", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.CreateTeamTokenRequest, + output=codenames_dot_v1_dot_admin__pb2.CreateTeamTokenResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def revoke_team_token( + self, + request: codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="RevokeTeamToken", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenRequest, + output=codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_team_tokens( + self, + request: codenames_dot_v1_dot_admin__pb2.ListTeamTokensRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.ListTeamTokensResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListTeamTokens", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListTeamTokensRequest, + output=codenames_dot_v1_dot_admin__pb2.ListTeamTokensResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_s_s_h_key_submissions( + self, + request: codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListSSHKeySubmissions", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsRequest, + output=codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def kill_game( + self, + request: codenames_dot_v1_dot_admin__pb2.KillGameRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.KillGameResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="KillGame", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.KillGameRequest, + output=codenames_dot_v1_dot_admin__pb2.KillGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + +class AdminServiceSync(Protocol): + def get_config(self, request: codenames_dot_v1_dot_admin__pb2.GetConfigRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.GetConfigResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def update_config(self, request: codenames_dot_v1_dot_admin__pb2.UpdateConfigRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.UpdateConfigResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def create_team(self, request: codenames_dot_v1_dot_admin__pb2.CreateTeamRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.CreateTeamResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_teams(self, request: codenames_dot_v1_dot_admin__pb2.ListTeamsRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.ListTeamsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def update_team(self, request: codenames_dot_v1_dot_admin__pb2.UpdateTeamRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.UpdateTeamResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def create_team_token(self, request: codenames_dot_v1_dot_admin__pb2.CreateTeamTokenRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.CreateTeamTokenResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def revoke_team_token(self, request: codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_team_tokens(self, request: codenames_dot_v1_dot_admin__pb2.ListTeamTokensRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.ListTeamTokensResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_s_s_h_key_submissions(self, request: codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def kill_game(self, request: codenames_dot_v1_dot_admin__pb2.KillGameRequest, ctx: RequestContext) -> codenames_dot_v1_dot_admin__pb2.KillGameResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class AdminServiceWSGIApplication(ConnectWSGIApplication): + def __init__(self, service: AdminServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: + super().__init__( + endpoints={ + "/codenames.v1.AdminService/GetConfig": EndpointSync.unary( + method=MethodInfo( + name="GetConfig", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.GetConfigRequest, + output=codenames_dot_v1_dot_admin__pb2.GetConfigResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.get_config, + ), + "/codenames.v1.AdminService/UpdateConfig": EndpointSync.unary( + method=MethodInfo( + name="UpdateConfig", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.UpdateConfigRequest, + output=codenames_dot_v1_dot_admin__pb2.UpdateConfigResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.update_config, + ), + "/codenames.v1.AdminService/CreateTeam": EndpointSync.unary( + method=MethodInfo( + name="CreateTeam", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.CreateTeamRequest, + output=codenames_dot_v1_dot_admin__pb2.CreateTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.create_team, + ), + "/codenames.v1.AdminService/ListTeams": EndpointSync.unary( + method=MethodInfo( + name="ListTeams", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListTeamsRequest, + output=codenames_dot_v1_dot_admin__pb2.ListTeamsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_teams, + ), + "/codenames.v1.AdminService/UpdateTeam": EndpointSync.unary( + method=MethodInfo( + name="UpdateTeam", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.UpdateTeamRequest, + output=codenames_dot_v1_dot_admin__pb2.UpdateTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.update_team, + ), + "/codenames.v1.AdminService/CreateTeamToken": EndpointSync.unary( + method=MethodInfo( + name="CreateTeamToken", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.CreateTeamTokenRequest, + output=codenames_dot_v1_dot_admin__pb2.CreateTeamTokenResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.create_team_token, + ), + "/codenames.v1.AdminService/RevokeTeamToken": EndpointSync.unary( + method=MethodInfo( + name="RevokeTeamToken", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenRequest, + output=codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.revoke_team_token, + ), + "/codenames.v1.AdminService/ListTeamTokens": EndpointSync.unary( + method=MethodInfo( + name="ListTeamTokens", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListTeamTokensRequest, + output=codenames_dot_v1_dot_admin__pb2.ListTeamTokensResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_team_tokens, + ), + "/codenames.v1.AdminService/ListSSHKeySubmissions": EndpointSync.unary( + method=MethodInfo( + name="ListSSHKeySubmissions", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsRequest, + output=codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_s_s_h_key_submissions, + ), + "/codenames.v1.AdminService/KillGame": EndpointSync.unary( + method=MethodInfo( + name="KillGame", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.KillGameRequest, + output=codenames_dot_v1_dot_admin__pb2.KillGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.kill_game, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + compressions=compressions, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/codenames.v1.AdminService" + + +class AdminServiceClientSync(ConnectClientSync): + def get_config( + self, + request: codenames_dot_v1_dot_admin__pb2.GetConfigRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.GetConfigResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetConfig", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.GetConfigRequest, + output=codenames_dot_v1_dot_admin__pb2.GetConfigResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def update_config( + self, + request: codenames_dot_v1_dot_admin__pb2.UpdateConfigRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.UpdateConfigResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="UpdateConfig", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.UpdateConfigRequest, + output=codenames_dot_v1_dot_admin__pb2.UpdateConfigResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def create_team( + self, + request: codenames_dot_v1_dot_admin__pb2.CreateTeamRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.CreateTeamResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="CreateTeam", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.CreateTeamRequest, + output=codenames_dot_v1_dot_admin__pb2.CreateTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_teams( + self, + request: codenames_dot_v1_dot_admin__pb2.ListTeamsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.ListTeamsResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListTeams", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListTeamsRequest, + output=codenames_dot_v1_dot_admin__pb2.ListTeamsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def update_team( + self, + request: codenames_dot_v1_dot_admin__pb2.UpdateTeamRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.UpdateTeamResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="UpdateTeam", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.UpdateTeamRequest, + output=codenames_dot_v1_dot_admin__pb2.UpdateTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def create_team_token( + self, + request: codenames_dot_v1_dot_admin__pb2.CreateTeamTokenRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.CreateTeamTokenResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="CreateTeamToken", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.CreateTeamTokenRequest, + output=codenames_dot_v1_dot_admin__pb2.CreateTeamTokenResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def revoke_team_token( + self, + request: codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="RevokeTeamToken", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenRequest, + output=codenames_dot_v1_dot_admin__pb2.RevokeTeamTokenResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_team_tokens( + self, + request: codenames_dot_v1_dot_admin__pb2.ListTeamTokensRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.ListTeamTokensResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListTeamTokens", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListTeamTokensRequest, + output=codenames_dot_v1_dot_admin__pb2.ListTeamTokensResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_s_s_h_key_submissions( + self, + request: codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListSSHKeySubmissions", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsRequest, + output=codenames_dot_v1_dot_admin__pb2.ListSSHKeySubmissionsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def kill_game( + self, + request: codenames_dot_v1_dot_admin__pb2.KillGameRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_admin__pb2.KillGameResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="KillGame", + service_name="codenames.v1.AdminService", + input=codenames_dot_v1_dot_admin__pb2.KillGameRequest, + output=codenames_dot_v1_dot_admin__pb2.KillGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) diff --git a/codenames/v1/admin_pb2.py b/codenames/v1/admin_pb2.py new file mode 100644 index 0000000..402fe87 --- /dev/null +++ b/codenames/v1/admin_pb2.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: codenames/v1/admin.proto +# Protobuf Python Version: 7.34.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 7, + 34, + 1, + '', + 'codenames/v1/admin.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x63odenames/v1/admin.proto\x12\x0c\x63odenames.v1\"\x87\x02\n\rDynamicConfig\x12-\n\x12tournament_enabled\x18\x01 \x01(\x08R\x11tournamentEnabled\x12)\n\x11max_games_per_bot\x18\x02 \x01(\x05R\x0emaxGamesPerBot\x12\x45\n\x0f\x64ictionary_size\x18\x03 \x01(\x0e\x32\x1c.codenames.v1.DictionarySizeR\x0e\x64ictionarySize\x12U\n\x15\x63lue_validation_level\x18\x04 \x01(\x0e\x32!.codenames.v1.ClueValidationLevelR\x13\x63lueValidationLevel\"!\n\x0fKillGameRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\"\x12\n\x10KillGameResponse\"\x12\n\x10GetConfigRequest\"H\n\x11GetConfigResponse\x12\x33\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1b.codenames.v1.DynamicConfigR\x06\x63onfig\"\xfc\x02\n\x13UpdateConfigRequest\x12\x32\n\x12tournament_enabled\x18\x01 \x01(\x08H\x00R\x11tournamentEnabled\x88\x01\x01\x12.\n\x11max_games_per_bot\x18\x02 \x01(\x05H\x01R\x0emaxGamesPerBot\x88\x01\x01\x12J\n\x0f\x64ictionary_size\x18\x03 \x01(\x0e\x32\x1c.codenames.v1.DictionarySizeH\x02R\x0e\x64ictionarySize\x88\x01\x01\x12Z\n\x15\x63lue_validation_level\x18\x04 \x01(\x0e\x32!.codenames.v1.ClueValidationLevelH\x03R\x13\x63lueValidationLevel\x88\x01\x01\x42\x15\n\x13_tournament_enabledB\x14\n\x12_max_games_per_botB\x12\n\x10_dictionary_sizeB\x18\n\x16_clue_validation_level\"K\n\x14UpdateConfigResponse\x12\x33\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x1b.codenames.v1.DynamicConfigR\x06\x63onfig\"X\n\x0e\x43ontestantTeam\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n\x05vm_ip\x18\x03 \x01(\tH\x00R\x04vmIp\x88\x01\x01\x42\x08\n\x06_vm_ip\"G\n\x0cTeamTokenRef\x12\x1d\n\ntoken_hash\x18\x01 \x01(\tR\ttokenHash\x12\x18\n\x07revoked\x18\x02 \x01(\x08R\x07revoked\"L\n\x11\x43reateTeamRequest\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x13\n\x05vm_ip\x18\x03 \x01(\tR\x04vmIp\"\\\n\x12\x43reateTeamResponse\x12\x30\n\x04team\x18\x01 \x01(\x0b\x32\x1c.codenames.v1.ContestantTeamR\x04team\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\"r\n\x11UpdateTeamRequest\x12\x17\n\x07team_id\x18\x01 \x01(\tR\x06teamId\x12\x17\n\x04name\x18\x02 \x01(\tH\x00R\x04name\x88\x01\x01\x12\x18\n\x05vm_ip\x18\x03 \x01(\tH\x01R\x04vmIp\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_vm_ip\"F\n\x12UpdateTeamResponse\x12\x30\n\x04team\x18\x01 \x01(\x0b\x32\x1c.codenames.v1.ContestantTeamR\x04team\"\x12\n\x10ListTeamsRequest\"G\n\x11ListTeamsResponse\x12\x32\n\x05teams\x18\x01 \x03(\x0b\x32\x1c.codenames.v1.ContestantTeamR\x05teams\"1\n\x16\x43reateTeamTokenRequest\x12\x17\n\x07team_id\x18\x01 \x01(\tR\x06teamId\"/\n\x17\x43reateTeamTokenResponse\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\"7\n\x16RevokeTeamTokenRequest\x12\x1d\n\ntoken_hash\x18\x01 \x01(\tR\ttokenHash\"3\n\x17RevokeTeamTokenResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\"0\n\x15ListTeamTokensRequest\x12\x17\n\x07team_id\x18\x01 \x01(\tR\x06teamId\"L\n\x16ListTeamTokensResponse\x12\x32\n\x06tokens\x18\x01 \x03(\x0b\x32\x1a.codenames.v1.TeamTokenRefR\x06tokens\"\xf3\x01\n\x10SSHKeySubmission\x12\x0e\n\x02id\x18\x01 \x01(\x03R\x02id\x12\'\n\x0f\x63ontestant_name\x18\x02 \x01(\tR\x0e\x63ontestantName\x12\x17\n\x07team_id\x18\x03 \x01(\tR\x06teamId\x12\x1b\n\tteam_name\x18\x04 \x01(\tR\x08teamName\x12$\n\x0essh_public_key\x18\x05 \x01(\tR\x0csshPublicKey\x12\'\n\x0fkey_fingerprint\x18\x06 \x01(\tR\x0ekeyFingerprint\x12!\n\x0csubmitted_at\x18\x07 \x01(\tR\x0bsubmittedAt\"7\n\x1cListSSHKeySubmissionsRequest\x12\x17\n\x07team_id\x18\x01 \x01(\tR\x06teamId\"a\n\x1dListSSHKeySubmissionsResponse\x12@\n\x0bsubmissions\x18\x01 \x03(\x0b\x32\x1e.codenames.v1.SSHKeySubmissionR\x0bsubmissions*\x83\x01\n\x0e\x44ictionarySize\x12\x1f\n\x1b\x44ICTIONARY_SIZE_UNSPECIFIED\x10\x00\x12\x19\n\x15\x44ICTIONARY_SIZE_SMALL\x10\x01\x12\x1a\n\x16\x44ICTIONARY_SIZE_MEDIUM\x10\x02\x12\x19\n\x15\x44ICTIONARY_SIZE_LARGE\x10\x03*\xa8\x01\n\x13\x43lueValidationLevel\x12%\n!CLUE_VALIDATION_LEVEL_UNSPECIFIED\x10\x00\x12$\n CLUE_VALIDATION_LEVEL_PERMISSIVE\x10\x01\x12\"\n\x1e\x43LUE_VALIDATION_LEVEL_STANDARD\x10\x02\x12 \n\x1c\x43LUE_VALIDATION_LEVEL_STRICT\x10\x03\x32\xfd\x06\n\x0c\x41\x64minService\x12L\n\tGetConfig\x12\x1e.codenames.v1.GetConfigRequest\x1a\x1f.codenames.v1.GetConfigResponse\x12U\n\x0cUpdateConfig\x12!.codenames.v1.UpdateConfigRequest\x1a\".codenames.v1.UpdateConfigResponse\x12O\n\nCreateTeam\x12\x1f.codenames.v1.CreateTeamRequest\x1a .codenames.v1.CreateTeamResponse\x12L\n\tListTeams\x12\x1e.codenames.v1.ListTeamsRequest\x1a\x1f.codenames.v1.ListTeamsResponse\x12O\n\nUpdateTeam\x12\x1f.codenames.v1.UpdateTeamRequest\x1a .codenames.v1.UpdateTeamResponse\x12^\n\x0f\x43reateTeamToken\x12$.codenames.v1.CreateTeamTokenRequest\x1a%.codenames.v1.CreateTeamTokenResponse\x12^\n\x0fRevokeTeamToken\x12$.codenames.v1.RevokeTeamTokenRequest\x1a%.codenames.v1.RevokeTeamTokenResponse\x12[\n\x0eListTeamTokens\x12#.codenames.v1.ListTeamTokensRequest\x1a$.codenames.v1.ListTeamTokensResponse\x12p\n\x15ListSSHKeySubmissions\x12*.codenames.v1.ListSSHKeySubmissionsRequest\x1a+.codenames.v1.ListSSHKeySubmissionsResponse\x12I\n\x08KillGame\x12\x1d.codenames.v1.KillGameRequest\x1a\x1e.codenames.v1.KillGameResponseB\x97\x01\n\x10\x63om.codenames.v1B\nAdminProtoP\x01Z&codenames/gen/codenames/v1;codenamesv1\xa2\x02\x03\x43XX\xaa\x02\x0c\x43odenames.V1\xca\x02\x0c\x43odenames\\V1\xe2\x02\x18\x43odenames\\V1\\GPBMetadata\xea\x02\rCodenames::V1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'codenames.v1.admin_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\020com.codenames.v1B\nAdminProtoP\001Z&codenames/gen/codenames/v1;codenamesv1\242\002\003CXX\252\002\014Codenames.V1\312\002\014Codenames\\V1\342\002\030Codenames\\V1\\GPBMetadata\352\002\rCodenames::V1' + _globals['_DICTIONARYSIZE']._serialized_start=2274 + _globals['_DICTIONARYSIZE']._serialized_end=2405 + _globals['_CLUEVALIDATIONLEVEL']._serialized_start=2408 + _globals['_CLUEVALIDATIONLEVEL']._serialized_end=2576 + _globals['_DYNAMICCONFIG']._serialized_start=43 + _globals['_DYNAMICCONFIG']._serialized_end=306 + _globals['_KILLGAMEREQUEST']._serialized_start=308 + _globals['_KILLGAMEREQUEST']._serialized_end=341 + _globals['_KILLGAMERESPONSE']._serialized_start=343 + _globals['_KILLGAMERESPONSE']._serialized_end=361 + _globals['_GETCONFIGREQUEST']._serialized_start=363 + _globals['_GETCONFIGREQUEST']._serialized_end=381 + _globals['_GETCONFIGRESPONSE']._serialized_start=383 + _globals['_GETCONFIGRESPONSE']._serialized_end=455 + _globals['_UPDATECONFIGREQUEST']._serialized_start=458 + _globals['_UPDATECONFIGREQUEST']._serialized_end=838 + _globals['_UPDATECONFIGRESPONSE']._serialized_start=840 + _globals['_UPDATECONFIGRESPONSE']._serialized_end=915 + _globals['_CONTESTANTTEAM']._serialized_start=917 + _globals['_CONTESTANTTEAM']._serialized_end=1005 + _globals['_TEAMTOKENREF']._serialized_start=1007 + _globals['_TEAMTOKENREF']._serialized_end=1078 + _globals['_CREATETEAMREQUEST']._serialized_start=1080 + _globals['_CREATETEAMREQUEST']._serialized_end=1156 + _globals['_CREATETEAMRESPONSE']._serialized_start=1158 + _globals['_CREATETEAMRESPONSE']._serialized_end=1250 + _globals['_UPDATETEAMREQUEST']._serialized_start=1252 + _globals['_UPDATETEAMREQUEST']._serialized_end=1366 + _globals['_UPDATETEAMRESPONSE']._serialized_start=1368 + _globals['_UPDATETEAMRESPONSE']._serialized_end=1438 + _globals['_LISTTEAMSREQUEST']._serialized_start=1440 + _globals['_LISTTEAMSREQUEST']._serialized_end=1458 + _globals['_LISTTEAMSRESPONSE']._serialized_start=1460 + _globals['_LISTTEAMSRESPONSE']._serialized_end=1531 + _globals['_CREATETEAMTOKENREQUEST']._serialized_start=1533 + _globals['_CREATETEAMTOKENREQUEST']._serialized_end=1582 + _globals['_CREATETEAMTOKENRESPONSE']._serialized_start=1584 + _globals['_CREATETEAMTOKENRESPONSE']._serialized_end=1631 + _globals['_REVOKETEAMTOKENREQUEST']._serialized_start=1633 + _globals['_REVOKETEAMTOKENREQUEST']._serialized_end=1688 + _globals['_REVOKETEAMTOKENRESPONSE']._serialized_start=1690 + _globals['_REVOKETEAMTOKENRESPONSE']._serialized_end=1741 + _globals['_LISTTEAMTOKENSREQUEST']._serialized_start=1743 + _globals['_LISTTEAMTOKENSREQUEST']._serialized_end=1791 + _globals['_LISTTEAMTOKENSRESPONSE']._serialized_start=1793 + _globals['_LISTTEAMTOKENSRESPONSE']._serialized_end=1869 + _globals['_SSHKEYSUBMISSION']._serialized_start=1872 + _globals['_SSHKEYSUBMISSION']._serialized_end=2115 + _globals['_LISTSSHKEYSUBMISSIONSREQUEST']._serialized_start=2117 + _globals['_LISTSSHKEYSUBMISSIONSREQUEST']._serialized_end=2172 + _globals['_LISTSSHKEYSUBMISSIONSRESPONSE']._serialized_start=2174 + _globals['_LISTSSHKEYSUBMISSIONSRESPONSE']._serialized_end=2271 + _globals['_ADMINSERVICE']._serialized_start=2579 + _globals['_ADMINSERVICE']._serialized_end=3472 +# @@protoc_insertion_point(module_scope) diff --git a/codenames/v1/admin_pb2.pyi b/codenames/v1/admin_pb2.pyi new file mode 100644 index 0000000..5cc0705 --- /dev/null +++ b/codenames/v1/admin_pb2.pyi @@ -0,0 +1,208 @@ +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class DictionarySize(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DICTIONARY_SIZE_UNSPECIFIED: _ClassVar[DictionarySize] + DICTIONARY_SIZE_SMALL: _ClassVar[DictionarySize] + DICTIONARY_SIZE_MEDIUM: _ClassVar[DictionarySize] + DICTIONARY_SIZE_LARGE: _ClassVar[DictionarySize] + +class ClueValidationLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CLUE_VALIDATION_LEVEL_UNSPECIFIED: _ClassVar[ClueValidationLevel] + CLUE_VALIDATION_LEVEL_PERMISSIVE: _ClassVar[ClueValidationLevel] + CLUE_VALIDATION_LEVEL_STANDARD: _ClassVar[ClueValidationLevel] + CLUE_VALIDATION_LEVEL_STRICT: _ClassVar[ClueValidationLevel] +DICTIONARY_SIZE_UNSPECIFIED: DictionarySize +DICTIONARY_SIZE_SMALL: DictionarySize +DICTIONARY_SIZE_MEDIUM: DictionarySize +DICTIONARY_SIZE_LARGE: DictionarySize +CLUE_VALIDATION_LEVEL_UNSPECIFIED: ClueValidationLevel +CLUE_VALIDATION_LEVEL_PERMISSIVE: ClueValidationLevel +CLUE_VALIDATION_LEVEL_STANDARD: ClueValidationLevel +CLUE_VALIDATION_LEVEL_STRICT: ClueValidationLevel + +class DynamicConfig(_message.Message): + __slots__ = ("tournament_enabled", "max_games_per_bot", "dictionary_size", "clue_validation_level") + TOURNAMENT_ENABLED_FIELD_NUMBER: _ClassVar[int] + MAX_GAMES_PER_BOT_FIELD_NUMBER: _ClassVar[int] + DICTIONARY_SIZE_FIELD_NUMBER: _ClassVar[int] + CLUE_VALIDATION_LEVEL_FIELD_NUMBER: _ClassVar[int] + tournament_enabled: bool + max_games_per_bot: int + dictionary_size: DictionarySize + clue_validation_level: ClueValidationLevel + def __init__(self, tournament_enabled: _Optional[bool] = ..., max_games_per_bot: _Optional[int] = ..., dictionary_size: _Optional[_Union[DictionarySize, str]] = ..., clue_validation_level: _Optional[_Union[ClueValidationLevel, str]] = ...) -> None: ... + +class KillGameRequest(_message.Message): + __slots__ = ("id",) + ID_FIELD_NUMBER: _ClassVar[int] + id: str + def __init__(self, id: _Optional[str] = ...) -> None: ... + +class KillGameResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GetConfigRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GetConfigResponse(_message.Message): + __slots__ = ("config",) + CONFIG_FIELD_NUMBER: _ClassVar[int] + config: DynamicConfig + def __init__(self, config: _Optional[_Union[DynamicConfig, _Mapping]] = ...) -> None: ... + +class UpdateConfigRequest(_message.Message): + __slots__ = ("tournament_enabled", "max_games_per_bot", "dictionary_size", "clue_validation_level") + TOURNAMENT_ENABLED_FIELD_NUMBER: _ClassVar[int] + MAX_GAMES_PER_BOT_FIELD_NUMBER: _ClassVar[int] + DICTIONARY_SIZE_FIELD_NUMBER: _ClassVar[int] + CLUE_VALIDATION_LEVEL_FIELD_NUMBER: _ClassVar[int] + tournament_enabled: bool + max_games_per_bot: int + dictionary_size: DictionarySize + clue_validation_level: ClueValidationLevel + def __init__(self, tournament_enabled: _Optional[bool] = ..., max_games_per_bot: _Optional[int] = ..., dictionary_size: _Optional[_Union[DictionarySize, str]] = ..., clue_validation_level: _Optional[_Union[ClueValidationLevel, str]] = ...) -> None: ... + +class UpdateConfigResponse(_message.Message): + __slots__ = ("config",) + CONFIG_FIELD_NUMBER: _ClassVar[int] + config: DynamicConfig + def __init__(self, config: _Optional[_Union[DynamicConfig, _Mapping]] = ...) -> None: ... + +class ContestantTeam(_message.Message): + __slots__ = ("id", "name", "vm_ip") + ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + VM_IP_FIELD_NUMBER: _ClassVar[int] + id: str + name: str + vm_ip: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., vm_ip: _Optional[str] = ...) -> None: ... + +class TeamTokenRef(_message.Message): + __slots__ = ("token_hash", "revoked") + TOKEN_HASH_FIELD_NUMBER: _ClassVar[int] + REVOKED_FIELD_NUMBER: _ClassVar[int] + token_hash: str + revoked: bool + def __init__(self, token_hash: _Optional[str] = ..., revoked: _Optional[bool] = ...) -> None: ... + +class CreateTeamRequest(_message.Message): + __slots__ = ("id", "name", "vm_ip") + ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + VM_IP_FIELD_NUMBER: _ClassVar[int] + id: str + name: str + vm_ip: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., vm_ip: _Optional[str] = ...) -> None: ... + +class CreateTeamResponse(_message.Message): + __slots__ = ("team", "token") + TEAM_FIELD_NUMBER: _ClassVar[int] + TOKEN_FIELD_NUMBER: _ClassVar[int] + team: ContestantTeam + token: str + def __init__(self, team: _Optional[_Union[ContestantTeam, _Mapping]] = ..., token: _Optional[str] = ...) -> None: ... + +class UpdateTeamRequest(_message.Message): + __slots__ = ("team_id", "name", "vm_ip") + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + VM_IP_FIELD_NUMBER: _ClassVar[int] + team_id: str + name: str + vm_ip: str + def __init__(self, team_id: _Optional[str] = ..., name: _Optional[str] = ..., vm_ip: _Optional[str] = ...) -> None: ... + +class UpdateTeamResponse(_message.Message): + __slots__ = ("team",) + TEAM_FIELD_NUMBER: _ClassVar[int] + team: ContestantTeam + def __init__(self, team: _Optional[_Union[ContestantTeam, _Mapping]] = ...) -> None: ... + +class ListTeamsRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ListTeamsResponse(_message.Message): + __slots__ = ("teams",) + TEAMS_FIELD_NUMBER: _ClassVar[int] + teams: _containers.RepeatedCompositeFieldContainer[ContestantTeam] + def __init__(self, teams: _Optional[_Iterable[_Union[ContestantTeam, _Mapping]]] = ...) -> None: ... + +class CreateTeamTokenRequest(_message.Message): + __slots__ = ("team_id",) + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + team_id: str + def __init__(self, team_id: _Optional[str] = ...) -> None: ... + +class CreateTeamTokenResponse(_message.Message): + __slots__ = ("token",) + TOKEN_FIELD_NUMBER: _ClassVar[int] + token: str + def __init__(self, token: _Optional[str] = ...) -> None: ... + +class RevokeTeamTokenRequest(_message.Message): + __slots__ = ("token_hash",) + TOKEN_HASH_FIELD_NUMBER: _ClassVar[int] + token_hash: str + def __init__(self, token_hash: _Optional[str] = ...) -> None: ... + +class RevokeTeamTokenResponse(_message.Message): + __slots__ = ("success",) + SUCCESS_FIELD_NUMBER: _ClassVar[int] + success: bool + def __init__(self, success: _Optional[bool] = ...) -> None: ... + +class ListTeamTokensRequest(_message.Message): + __slots__ = ("team_id",) + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + team_id: str + def __init__(self, team_id: _Optional[str] = ...) -> None: ... + +class ListTeamTokensResponse(_message.Message): + __slots__ = ("tokens",) + TOKENS_FIELD_NUMBER: _ClassVar[int] + tokens: _containers.RepeatedCompositeFieldContainer[TeamTokenRef] + def __init__(self, tokens: _Optional[_Iterable[_Union[TeamTokenRef, _Mapping]]] = ...) -> None: ... + +class SSHKeySubmission(_message.Message): + __slots__ = ("id", "contestant_name", "team_id", "team_name", "ssh_public_key", "key_fingerprint", "submitted_at") + ID_FIELD_NUMBER: _ClassVar[int] + CONTESTANT_NAME_FIELD_NUMBER: _ClassVar[int] + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + TEAM_NAME_FIELD_NUMBER: _ClassVar[int] + SSH_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + KEY_FINGERPRINT_FIELD_NUMBER: _ClassVar[int] + SUBMITTED_AT_FIELD_NUMBER: _ClassVar[int] + id: int + contestant_name: str + team_id: str + team_name: str + ssh_public_key: str + key_fingerprint: str + submitted_at: str + def __init__(self, id: _Optional[int] = ..., contestant_name: _Optional[str] = ..., team_id: _Optional[str] = ..., team_name: _Optional[str] = ..., ssh_public_key: _Optional[str] = ..., key_fingerprint: _Optional[str] = ..., submitted_at: _Optional[str] = ...) -> None: ... + +class ListSSHKeySubmissionsRequest(_message.Message): + __slots__ = ("team_id",) + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + team_id: str + def __init__(self, team_id: _Optional[str] = ...) -> None: ... + +class ListSSHKeySubmissionsResponse(_message.Message): + __slots__ = ("submissions",) + SUBMISSIONS_FIELD_NUMBER: _ClassVar[int] + submissions: _containers.RepeatedCompositeFieldContainer[SSHKeySubmission] + def __init__(self, submissions: _Optional[_Iterable[_Union[SSHKeySubmission, _Mapping]]] = ...) -> None: ... diff --git a/codenames/v1/bot_connect.py b/codenames/v1/bot_connect.py new file mode 100644 index 0000000..4ac205d --- /dev/null +++ b/codenames/v1/bot_connect.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +# Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT! +# source: codenames/v1/bot.proto + +from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping +from typing import Protocol + +from connectrpc.client import ConnectClient, ConnectClientSync +from connectrpc.code import Code +from connectrpc.compression import Compression +from connectrpc.errors import ConnectError +from connectrpc.interceptor import Interceptor, InterceptorSync +from connectrpc.method import IdempotencyLevel, MethodInfo +from connectrpc.request import Headers, RequestContext +from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync +import codenames.v1.bot_pb2 as codenames_dot_v1_dot_bot__pb2 + + +class BotService(Protocol): + async def game_started(self, request: codenames_dot_v1_dot_bot__pb2.GameStartedRequest, ctx: RequestContext) -> codenames_dot_v1_dot_bot__pb2.GameStartedResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def give_clue(self, request: codenames_dot_v1_dot_bot__pb2.GiveClueRequest, ctx: RequestContext) -> codenames_dot_v1_dot_bot__pb2.GiveClueResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def make_guess(self, request: codenames_dot_v1_dot_bot__pb2.MakeGuessRequest, ctx: RequestContext) -> codenames_dot_v1_dot_bot__pb2.MakeGuessResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def game_ended(self, request: codenames_dot_v1_dot_bot__pb2.GameEndedRequest, ctx: RequestContext) -> codenames_dot_v1_dot_bot__pb2.GameEndedResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class BotServiceASGIApplication(ConnectASGIApplication[BotService]): + def __init__(self, service: BotService | AsyncGenerator[BotService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: + super().__init__( + service=service, + endpoints=lambda svc: { + "/codenames.v1.BotService/GameStarted": Endpoint.unary( + method=MethodInfo( + name="GameStarted", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GameStartedRequest, + output=codenames_dot_v1_dot_bot__pb2.GameStartedResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.game_started, + ), + "/codenames.v1.BotService/GiveClue": Endpoint.unary( + method=MethodInfo( + name="GiveClue", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GiveClueRequest, + output=codenames_dot_v1_dot_bot__pb2.GiveClueResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.give_clue, + ), + "/codenames.v1.BotService/MakeGuess": Endpoint.unary( + method=MethodInfo( + name="MakeGuess", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.MakeGuessRequest, + output=codenames_dot_v1_dot_bot__pb2.MakeGuessResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.make_guess, + ), + "/codenames.v1.BotService/GameEnded": Endpoint.unary( + method=MethodInfo( + name="GameEnded", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GameEndedRequest, + output=codenames_dot_v1_dot_bot__pb2.GameEndedResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.game_ended, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + compressions=compressions, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/codenames.v1.BotService" + + +class BotServiceClient(ConnectClient): + async def game_started( + self, + request: codenames_dot_v1_dot_bot__pb2.GameStartedRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_bot__pb2.GameStartedResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GameStarted", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GameStartedRequest, + output=codenames_dot_v1_dot_bot__pb2.GameStartedResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def give_clue( + self, + request: codenames_dot_v1_dot_bot__pb2.GiveClueRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_bot__pb2.GiveClueResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GiveClue", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GiveClueRequest, + output=codenames_dot_v1_dot_bot__pb2.GiveClueResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def make_guess( + self, + request: codenames_dot_v1_dot_bot__pb2.MakeGuessRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_bot__pb2.MakeGuessResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="MakeGuess", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.MakeGuessRequest, + output=codenames_dot_v1_dot_bot__pb2.MakeGuessResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def game_ended( + self, + request: codenames_dot_v1_dot_bot__pb2.GameEndedRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_bot__pb2.GameEndedResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GameEnded", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GameEndedRequest, + output=codenames_dot_v1_dot_bot__pb2.GameEndedResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + +class BotServiceSync(Protocol): + def game_started(self, request: codenames_dot_v1_dot_bot__pb2.GameStartedRequest, ctx: RequestContext) -> codenames_dot_v1_dot_bot__pb2.GameStartedResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def give_clue(self, request: codenames_dot_v1_dot_bot__pb2.GiveClueRequest, ctx: RequestContext) -> codenames_dot_v1_dot_bot__pb2.GiveClueResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def make_guess(self, request: codenames_dot_v1_dot_bot__pb2.MakeGuessRequest, ctx: RequestContext) -> codenames_dot_v1_dot_bot__pb2.MakeGuessResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def game_ended(self, request: codenames_dot_v1_dot_bot__pb2.GameEndedRequest, ctx: RequestContext) -> codenames_dot_v1_dot_bot__pb2.GameEndedResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class BotServiceWSGIApplication(ConnectWSGIApplication): + def __init__(self, service: BotServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: + super().__init__( + endpoints={ + "/codenames.v1.BotService/GameStarted": EndpointSync.unary( + method=MethodInfo( + name="GameStarted", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GameStartedRequest, + output=codenames_dot_v1_dot_bot__pb2.GameStartedResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.game_started, + ), + "/codenames.v1.BotService/GiveClue": EndpointSync.unary( + method=MethodInfo( + name="GiveClue", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GiveClueRequest, + output=codenames_dot_v1_dot_bot__pb2.GiveClueResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.give_clue, + ), + "/codenames.v1.BotService/MakeGuess": EndpointSync.unary( + method=MethodInfo( + name="MakeGuess", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.MakeGuessRequest, + output=codenames_dot_v1_dot_bot__pb2.MakeGuessResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.make_guess, + ), + "/codenames.v1.BotService/GameEnded": EndpointSync.unary( + method=MethodInfo( + name="GameEnded", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GameEndedRequest, + output=codenames_dot_v1_dot_bot__pb2.GameEndedResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.game_ended, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + compressions=compressions, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/codenames.v1.BotService" + + +class BotServiceClientSync(ConnectClientSync): + def game_started( + self, + request: codenames_dot_v1_dot_bot__pb2.GameStartedRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_bot__pb2.GameStartedResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GameStarted", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GameStartedRequest, + output=codenames_dot_v1_dot_bot__pb2.GameStartedResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def give_clue( + self, + request: codenames_dot_v1_dot_bot__pb2.GiveClueRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_bot__pb2.GiveClueResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GiveClue", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GiveClueRequest, + output=codenames_dot_v1_dot_bot__pb2.GiveClueResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def make_guess( + self, + request: codenames_dot_v1_dot_bot__pb2.MakeGuessRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_bot__pb2.MakeGuessResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="MakeGuess", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.MakeGuessRequest, + output=codenames_dot_v1_dot_bot__pb2.MakeGuessResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def game_ended( + self, + request: codenames_dot_v1_dot_bot__pb2.GameEndedRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_bot__pb2.GameEndedResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GameEnded", + service_name="codenames.v1.BotService", + input=codenames_dot_v1_dot_bot__pb2.GameEndedRequest, + output=codenames_dot_v1_dot_bot__pb2.GameEndedResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) diff --git a/codenames/v1/bot_pb2.py b/codenames/v1/bot_pb2.py new file mode 100644 index 0000000..f7d5576 --- /dev/null +++ b/codenames/v1/bot_pb2.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: codenames/v1/bot.proto +# Protobuf Python Version: 7.34.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 7, + 34, + 1, + '', + 'codenames/v1/bot.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from codenames.v1 import types_pb2 as codenames_dot_v1_dot_types__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x63odenames/v1/bot.proto\x12\x0c\x63odenames.v1\x1a\x18\x63odenames/v1/types.proto\"\xd1\x01\n\x12GameStartedRequest\x12\x17\n\x07game_id\x18\x01 \x01(\tR\x06gameId\x12\x15\n\x06\x62ot_id\x18\x02 \x01(\tR\x05\x62otId\x12/\n\tyour_team\x18\x03 \x01(\x0e\x32\x12.codenames.v1.TeamR\x08yourTeam\x12/\n\tyour_role\x18\x04 \x01(\x0e\x32\x12.codenames.v1.RoleR\x08yourRole\x12)\n\x05\x62oard\x18\x05 \x01(\x0b\x32\x13.codenames.v1.BoardR\x05\x62oard\"\x15\n\x13GameStartedResponse\"\xed\x02\n\x0fGiveClueRequest\x12\x17\n\x07game_id\x18\x01 \x01(\tR\x06gameId\x12\x15\n\x06\x62ot_id\x18\x02 \x01(\tR\x05\x62otId\x12\x35\n\x0c\x63urrent_team\x18\x03 \x01(\x0e\x32\x12.codenames.v1.TeamR\x0b\x63urrentTeam\x12I\n\x15moves_since_last_turn\x18\x04 \x03(\x0b\x32\x16.codenames.v1.GameMoveR\x12movesSinceLastTurn\x12$\n\x0ered_cards_left\x18\x05 \x01(\x05R\x0credCardsLeft\x12&\n\x0f\x62lue_cards_left\x18\x06 \x01(\x05R\rblueCardsLeft\x12\x1f\n\x0b\x63lue_number\x18\x07 \x01(\x05R\nclueNumber\x12\x39\n\x0b\x62ot_context\x18\x08 \x01(\x0b\x32\x18.codenames.v1.BotContextR\nbotContext\"Y\n\x10GiveClueResponse\x12;\n\tgive_clue\x18\x01 \x01(\x0b\x32\x1c.codenames.v1.GiveClueActionH\x00R\x08giveClueB\x08\n\x06\x61\x63tion\":\n\x0eGiveClueAction\x12\x12\n\x04word\x18\x01 \x01(\tR\x04word\x12\x14\n\x05\x63ount\x18\x02 \x01(\x05R\x05\x63ount\"\x98\x03\n\x10MakeGuessRequest\x12\x17\n\x07game_id\x18\x01 \x01(\tR\x06gameId\x12\x15\n\x06\x62ot_id\x18\x02 \x01(\tR\x05\x62otId\x12\x35\n\x0c\x63urrent_team\x18\x03 \x01(\x0e\x32\x12.codenames.v1.TeamR\x0b\x63urrentTeam\x12I\n\x15moves_since_last_turn\x18\x04 \x03(\x0b\x32\x16.codenames.v1.GameMoveR\x12movesSinceLastTurn\x12&\n\x04\x63lue\x18\x05 \x01(\x0b\x32\x12.codenames.v1.ClueR\x04\x63lue\x12!\n\x0cguesses_made\x18\x06 \x01(\x05R\x0bguessesMade\x12+\n\x11guesses_remaining\x18\x07 \x01(\x05R\x10guessesRemaining\x12\x1f\n\x0b\x63lue_number\x18\x08 \x01(\x05R\nclueNumber\x12\x39\n\x0b\x62ot_context\x18\t \x01(\x0b\x32\x18.codenames.v1.BotContextR\nbotContext\"\x97\x01\n\x11MakeGuessResponse\x12>\n\nguess_word\x18\x01 \x01(\x0b\x32\x1d.codenames.v1.GuessWordActionH\x00R\tguessWord\x12\x38\n\x08\x65nd_turn\x18\x02 \x01(\x0b\x32\x1b.codenames.v1.EndTurnActionH\x00R\x07\x65ndTurnB\x08\n\x06\x61\x63tion\"%\n\x0fGuessWordAction\x12\x12\n\x04word\x18\x01 \x01(\tR\x04word\"\x0f\n\rEndTurnAction\"T\n\nBotContext\x12\'\n\x0f\x63urrent_strikes\x18\x01 \x01(\x05R\x0e\x63urrentStrikes\x12\x1d\n\nlast_error\x18\x02 \x01(\tR\tlastError\"\x8a\x03\n\x10GameEndedRequest\x12\x17\n\x07game_id\x18\x01 \x01(\tR\x06gameId\x12\x15\n\x06\x62ot_id\x18\x02 \x01(\tR\x05\x62otId\x12*\n\x06winner\x18\x03 \x01(\x0e\x32\x12.codenames.v1.TeamR\x06winner\x12$\n\x0ered_cards_left\x18\x04 \x01(\x05R\x0credCardsLeft\x12&\n\x0f\x62lue_cards_left\x18\x05 \x01(\x05R\rblueCardsLeft\x12\x1f\n\x0btotal_moves\x18\x06 \x01(\x05R\ntotalMoves\x12?\n\x0fremaining_moves\x18\x07 \x03(\x0b\x32\x16.codenames.v1.GameMoveR\x0eremainingMoves\x12:\n\nend_reason\x18\x08 \x01(\x0e\x32\x1b.codenames.v1.GameEndReasonR\tendReason\x12.\n\x13\x64isqualified_bot_id\x18\t \x01(\tR\x11\x64isqualifiedBotId\"\x13\n\x11GameEndedResponse2\xc7\x02\n\nBotService\x12R\n\x0bGameStarted\x12 .codenames.v1.GameStartedRequest\x1a!.codenames.v1.GameStartedResponse\x12I\n\x08GiveClue\x12\x1d.codenames.v1.GiveClueRequest\x1a\x1e.codenames.v1.GiveClueResponse\x12L\n\tMakeGuess\x12\x1e.codenames.v1.MakeGuessRequest\x1a\x1f.codenames.v1.MakeGuessResponse\x12L\n\tGameEnded\x12\x1e.codenames.v1.GameEndedRequest\x1a\x1f.codenames.v1.GameEndedResponseB\x95\x01\n\x10\x63om.codenames.v1B\x08\x42otProtoP\x01Z&codenames/gen/codenames/v1;codenamesv1\xa2\x02\x03\x43XX\xaa\x02\x0c\x43odenames.V1\xca\x02\x0c\x43odenames\\V1\xe2\x02\x18\x43odenames\\V1\\GPBMetadata\xea\x02\rCodenames::V1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'codenames.v1.bot_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\020com.codenames.v1B\010BotProtoP\001Z&codenames/gen/codenames/v1;codenamesv1\242\002\003CXX\252\002\014Codenames.V1\312\002\014Codenames\\V1\342\002\030Codenames\\V1\\GPBMetadata\352\002\rCodenames::V1' + _globals['_GAMESTARTEDREQUEST']._serialized_start=67 + _globals['_GAMESTARTEDREQUEST']._serialized_end=276 + _globals['_GAMESTARTEDRESPONSE']._serialized_start=278 + _globals['_GAMESTARTEDRESPONSE']._serialized_end=299 + _globals['_GIVECLUEREQUEST']._serialized_start=302 + _globals['_GIVECLUEREQUEST']._serialized_end=667 + _globals['_GIVECLUERESPONSE']._serialized_start=669 + _globals['_GIVECLUERESPONSE']._serialized_end=758 + _globals['_GIVECLUEACTION']._serialized_start=760 + _globals['_GIVECLUEACTION']._serialized_end=818 + _globals['_MAKEGUESSREQUEST']._serialized_start=821 + _globals['_MAKEGUESSREQUEST']._serialized_end=1229 + _globals['_MAKEGUESSRESPONSE']._serialized_start=1232 + _globals['_MAKEGUESSRESPONSE']._serialized_end=1383 + _globals['_GUESSWORDACTION']._serialized_start=1385 + _globals['_GUESSWORDACTION']._serialized_end=1422 + _globals['_ENDTURNACTION']._serialized_start=1424 + _globals['_ENDTURNACTION']._serialized_end=1439 + _globals['_BOTCONTEXT']._serialized_start=1441 + _globals['_BOTCONTEXT']._serialized_end=1525 + _globals['_GAMEENDEDREQUEST']._serialized_start=1528 + _globals['_GAMEENDEDREQUEST']._serialized_end=1922 + _globals['_GAMEENDEDRESPONSE']._serialized_start=1924 + _globals['_GAMEENDEDRESPONSE']._serialized_end=1943 + _globals['_BOTSERVICE']._serialized_start=1946 + _globals['_BOTSERVICE']._serialized_end=2273 +# @@protoc_insertion_point(module_scope) diff --git a/codenames/v1/bot_pb2.pyi b/codenames/v1/bot_pb2.pyi new file mode 100644 index 0000000..8faaae0 --- /dev/null +++ b/codenames/v1/bot_pb2.pyi @@ -0,0 +1,134 @@ +from codenames.v1 import types_pb2 as _types_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class GameStartedRequest(_message.Message): + __slots__ = ("game_id", "bot_id", "your_team", "your_role", "board") + GAME_ID_FIELD_NUMBER: _ClassVar[int] + BOT_ID_FIELD_NUMBER: _ClassVar[int] + YOUR_TEAM_FIELD_NUMBER: _ClassVar[int] + YOUR_ROLE_FIELD_NUMBER: _ClassVar[int] + BOARD_FIELD_NUMBER: _ClassVar[int] + game_id: str + bot_id: str + your_team: _types_pb2.Team + your_role: _types_pb2.Role + board: _types_pb2.Board + def __init__(self, game_id: _Optional[str] = ..., bot_id: _Optional[str] = ..., your_team: _Optional[_Union[_types_pb2.Team, str]] = ..., your_role: _Optional[_Union[_types_pb2.Role, str]] = ..., board: _Optional[_Union[_types_pb2.Board, _Mapping]] = ...) -> None: ... + +class GameStartedResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GiveClueRequest(_message.Message): + __slots__ = ("game_id", "bot_id", "current_team", "moves_since_last_turn", "red_cards_left", "blue_cards_left", "clue_number", "bot_context") + GAME_ID_FIELD_NUMBER: _ClassVar[int] + BOT_ID_FIELD_NUMBER: _ClassVar[int] + CURRENT_TEAM_FIELD_NUMBER: _ClassVar[int] + MOVES_SINCE_LAST_TURN_FIELD_NUMBER: _ClassVar[int] + RED_CARDS_LEFT_FIELD_NUMBER: _ClassVar[int] + BLUE_CARDS_LEFT_FIELD_NUMBER: _ClassVar[int] + CLUE_NUMBER_FIELD_NUMBER: _ClassVar[int] + BOT_CONTEXT_FIELD_NUMBER: _ClassVar[int] + game_id: str + bot_id: str + current_team: _types_pb2.Team + moves_since_last_turn: _containers.RepeatedCompositeFieldContainer[_types_pb2.GameMove] + red_cards_left: int + blue_cards_left: int + clue_number: int + bot_context: BotContext + def __init__(self, game_id: _Optional[str] = ..., bot_id: _Optional[str] = ..., current_team: _Optional[_Union[_types_pb2.Team, str]] = ..., moves_since_last_turn: _Optional[_Iterable[_Union[_types_pb2.GameMove, _Mapping]]] = ..., red_cards_left: _Optional[int] = ..., blue_cards_left: _Optional[int] = ..., clue_number: _Optional[int] = ..., bot_context: _Optional[_Union[BotContext, _Mapping]] = ...) -> None: ... + +class GiveClueResponse(_message.Message): + __slots__ = ("give_clue",) + GIVE_CLUE_FIELD_NUMBER: _ClassVar[int] + give_clue: GiveClueAction + def __init__(self, give_clue: _Optional[_Union[GiveClueAction, _Mapping]] = ...) -> None: ... + +class GiveClueAction(_message.Message): + __slots__ = ("word", "count") + WORD_FIELD_NUMBER: _ClassVar[int] + COUNT_FIELD_NUMBER: _ClassVar[int] + word: str + count: int + def __init__(self, word: _Optional[str] = ..., count: _Optional[int] = ...) -> None: ... + +class MakeGuessRequest(_message.Message): + __slots__ = ("game_id", "bot_id", "current_team", "moves_since_last_turn", "clue", "guesses_made", "guesses_remaining", "clue_number", "bot_context") + GAME_ID_FIELD_NUMBER: _ClassVar[int] + BOT_ID_FIELD_NUMBER: _ClassVar[int] + CURRENT_TEAM_FIELD_NUMBER: _ClassVar[int] + MOVES_SINCE_LAST_TURN_FIELD_NUMBER: _ClassVar[int] + CLUE_FIELD_NUMBER: _ClassVar[int] + GUESSES_MADE_FIELD_NUMBER: _ClassVar[int] + GUESSES_REMAINING_FIELD_NUMBER: _ClassVar[int] + CLUE_NUMBER_FIELD_NUMBER: _ClassVar[int] + BOT_CONTEXT_FIELD_NUMBER: _ClassVar[int] + game_id: str + bot_id: str + current_team: _types_pb2.Team + moves_since_last_turn: _containers.RepeatedCompositeFieldContainer[_types_pb2.GameMove] + clue: _types_pb2.Clue + guesses_made: int + guesses_remaining: int + clue_number: int + bot_context: BotContext + def __init__(self, game_id: _Optional[str] = ..., bot_id: _Optional[str] = ..., current_team: _Optional[_Union[_types_pb2.Team, str]] = ..., moves_since_last_turn: _Optional[_Iterable[_Union[_types_pb2.GameMove, _Mapping]]] = ..., clue: _Optional[_Union[_types_pb2.Clue, _Mapping]] = ..., guesses_made: _Optional[int] = ..., guesses_remaining: _Optional[int] = ..., clue_number: _Optional[int] = ..., bot_context: _Optional[_Union[BotContext, _Mapping]] = ...) -> None: ... + +class MakeGuessResponse(_message.Message): + __slots__ = ("guess_word", "end_turn") + GUESS_WORD_FIELD_NUMBER: _ClassVar[int] + END_TURN_FIELD_NUMBER: _ClassVar[int] + guess_word: GuessWordAction + end_turn: EndTurnAction + def __init__(self, guess_word: _Optional[_Union[GuessWordAction, _Mapping]] = ..., end_turn: _Optional[_Union[EndTurnAction, _Mapping]] = ...) -> None: ... + +class GuessWordAction(_message.Message): + __slots__ = ("word",) + WORD_FIELD_NUMBER: _ClassVar[int] + word: str + def __init__(self, word: _Optional[str] = ...) -> None: ... + +class EndTurnAction(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class BotContext(_message.Message): + __slots__ = ("current_strikes", "last_error") + CURRENT_STRIKES_FIELD_NUMBER: _ClassVar[int] + LAST_ERROR_FIELD_NUMBER: _ClassVar[int] + current_strikes: int + last_error: str + def __init__(self, current_strikes: _Optional[int] = ..., last_error: _Optional[str] = ...) -> None: ... + +class GameEndedRequest(_message.Message): + __slots__ = ("game_id", "bot_id", "winner", "red_cards_left", "blue_cards_left", "total_moves", "remaining_moves", "end_reason", "disqualified_bot_id") + GAME_ID_FIELD_NUMBER: _ClassVar[int] + BOT_ID_FIELD_NUMBER: _ClassVar[int] + WINNER_FIELD_NUMBER: _ClassVar[int] + RED_CARDS_LEFT_FIELD_NUMBER: _ClassVar[int] + BLUE_CARDS_LEFT_FIELD_NUMBER: _ClassVar[int] + TOTAL_MOVES_FIELD_NUMBER: _ClassVar[int] + REMAINING_MOVES_FIELD_NUMBER: _ClassVar[int] + END_REASON_FIELD_NUMBER: _ClassVar[int] + DISQUALIFIED_BOT_ID_FIELD_NUMBER: _ClassVar[int] + game_id: str + bot_id: str + winner: _types_pb2.Team + red_cards_left: int + blue_cards_left: int + total_moves: int + remaining_moves: _containers.RepeatedCompositeFieldContainer[_types_pb2.GameMove] + end_reason: _types_pb2.GameEndReason + disqualified_bot_id: str + def __init__(self, game_id: _Optional[str] = ..., bot_id: _Optional[str] = ..., winner: _Optional[_Union[_types_pb2.Team, str]] = ..., red_cards_left: _Optional[int] = ..., blue_cards_left: _Optional[int] = ..., total_moves: _Optional[int] = ..., remaining_moves: _Optional[_Iterable[_Union[_types_pb2.GameMove, _Mapping]]] = ..., end_reason: _Optional[_Union[_types_pb2.GameEndReason, str]] = ..., disqualified_bot_id: _Optional[str] = ...) -> None: ... + +class GameEndedResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... diff --git a/codenames/v1/game_connect.py b/codenames/v1/game_connect.py new file mode 100644 index 0000000..ba66acc --- /dev/null +++ b/codenames/v1/game_connect.py @@ -0,0 +1,1033 @@ +# -*- coding: utf-8 -*- +# Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT! +# source: codenames/v1/game.proto + +from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping +from typing import Protocol + +from connectrpc.client import ConnectClient, ConnectClientSync +from connectrpc.code import Code +from connectrpc.compression import Compression +from connectrpc.errors import ConnectError +from connectrpc.interceptor import Interceptor, InterceptorSync +from connectrpc.method import IdempotencyLevel, MethodInfo +from connectrpc.request import Headers, RequestContext +from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync +import codenames.v1.game_pb2 as codenames_dot_v1_dot_game__pb2 + + +class GameService(Protocol): + async def create_game(self, request: codenames_dot_v1_dot_game__pb2.CreateGameRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.CreateGameResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def get_game(self, request: codenames_dot_v1_dot_game__pb2.GetGameRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetGameResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_games(self, request: codenames_dot_v1_dot_game__pb2.ListGamesRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListGamesResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_active_games(self, request: codenames_dot_v1_dot_game__pb2.ListActiveGamesRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListActiveGamesResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def get_game_moves(self, request: codenames_dot_v1_dot_game__pb2.GetGameMovesRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetGameMovesResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def register_bot(self, request: codenames_dot_v1_dot_game__pb2.RegisterBotRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.RegisterBotResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_bots(self, request: codenames_dot_v1_dot_game__pb2.ListBotsRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListBotsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def unregister_bot(self, request: codenames_dot_v1_dot_game__pb2.UnregisterBotRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.UnregisterBotResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def get_bot_games(self, request: codenames_dot_v1_dot_game__pb2.GetBotGamesRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetBotGamesResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def get_bot(self, request: codenames_dot_v1_dot_game__pb2.GetBotRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetBotResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def get_leaderboard(self, request: codenames_dot_v1_dot_game__pb2.GetLeaderboardRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetLeaderboardResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_teams(self, request: codenames_dot_v1_dot_game__pb2.GameServiceListTeamsRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GameServiceListTeamsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def get_team(self, request: codenames_dot_v1_dot_game__pb2.GameServiceGetTeamRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GameServiceGetTeamResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_bots_by_team(self, request: codenames_dot_v1_dot_game__pb2.ListBotsByTeamRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListBotsByTeamResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_games_by_bot(self, request: codenames_dot_v1_dot_game__pb2.ListGamesByBotRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListGamesByBotResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class GameServiceASGIApplication(ConnectASGIApplication[GameService]): + def __init__(self, service: GameService | AsyncGenerator[GameService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: + super().__init__( + service=service, + endpoints=lambda svc: { + "/codenames.v1.GameService/CreateGame": Endpoint.unary( + method=MethodInfo( + name="CreateGame", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.CreateGameRequest, + output=codenames_dot_v1_dot_game__pb2.CreateGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.create_game, + ), + "/codenames.v1.GameService/GetGame": Endpoint.unary( + method=MethodInfo( + name="GetGame", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetGameRequest, + output=codenames_dot_v1_dot_game__pb2.GetGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.get_game, + ), + "/codenames.v1.GameService/ListGames": Endpoint.unary( + method=MethodInfo( + name="ListGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListGamesRequest, + output=codenames_dot_v1_dot_game__pb2.ListGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_games, + ), + "/codenames.v1.GameService/ListActiveGames": Endpoint.unary( + method=MethodInfo( + name="ListActiveGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListActiveGamesRequest, + output=codenames_dot_v1_dot_game__pb2.ListActiveGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_active_games, + ), + "/codenames.v1.GameService/GetGameMoves": Endpoint.unary( + method=MethodInfo( + name="GetGameMoves", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetGameMovesRequest, + output=codenames_dot_v1_dot_game__pb2.GetGameMovesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.get_game_moves, + ), + "/codenames.v1.GameService/RegisterBot": Endpoint.unary( + method=MethodInfo( + name="RegisterBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.RegisterBotRequest, + output=codenames_dot_v1_dot_game__pb2.RegisterBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.register_bot, + ), + "/codenames.v1.GameService/ListBots": Endpoint.unary( + method=MethodInfo( + name="ListBots", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListBotsRequest, + output=codenames_dot_v1_dot_game__pb2.ListBotsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_bots, + ), + "/codenames.v1.GameService/UnregisterBot": Endpoint.unary( + method=MethodInfo( + name="UnregisterBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.UnregisterBotRequest, + output=codenames_dot_v1_dot_game__pb2.UnregisterBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.unregister_bot, + ), + "/codenames.v1.GameService/GetBotGames": Endpoint.unary( + method=MethodInfo( + name="GetBotGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetBotGamesRequest, + output=codenames_dot_v1_dot_game__pb2.GetBotGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.get_bot_games, + ), + "/codenames.v1.GameService/GetBot": Endpoint.unary( + method=MethodInfo( + name="GetBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetBotRequest, + output=codenames_dot_v1_dot_game__pb2.GetBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.get_bot, + ), + "/codenames.v1.GameService/GetLeaderboard": Endpoint.unary( + method=MethodInfo( + name="GetLeaderboard", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetLeaderboardRequest, + output=codenames_dot_v1_dot_game__pb2.GetLeaderboardResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.get_leaderboard, + ), + "/codenames.v1.GameService/ListTeams": Endpoint.unary( + method=MethodInfo( + name="ListTeams", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GameServiceListTeamsRequest, + output=codenames_dot_v1_dot_game__pb2.GameServiceListTeamsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_teams, + ), + "/codenames.v1.GameService/GetTeam": Endpoint.unary( + method=MethodInfo( + name="GetTeam", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GameServiceGetTeamRequest, + output=codenames_dot_v1_dot_game__pb2.GameServiceGetTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.get_team, + ), + "/codenames.v1.GameService/ListBotsByTeam": Endpoint.unary( + method=MethodInfo( + name="ListBotsByTeam", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListBotsByTeamRequest, + output=codenames_dot_v1_dot_game__pb2.ListBotsByTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_bots_by_team, + ), + "/codenames.v1.GameService/ListGamesByBot": Endpoint.unary( + method=MethodInfo( + name="ListGamesByBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListGamesByBotRequest, + output=codenames_dot_v1_dot_game__pb2.ListGamesByBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_games_by_bot, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + compressions=compressions, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/codenames.v1.GameService" + + +class GameServiceClient(ConnectClient): + async def create_game( + self, + request: codenames_dot_v1_dot_game__pb2.CreateGameRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.CreateGameResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="CreateGame", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.CreateGameRequest, + output=codenames_dot_v1_dot_game__pb2.CreateGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def get_game( + self, + request: codenames_dot_v1_dot_game__pb2.GetGameRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetGameResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetGame", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetGameRequest, + output=codenames_dot_v1_dot_game__pb2.GetGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_games( + self, + request: codenames_dot_v1_dot_game__pb2.ListGamesRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListGamesResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListGamesRequest, + output=codenames_dot_v1_dot_game__pb2.ListGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_active_games( + self, + request: codenames_dot_v1_dot_game__pb2.ListActiveGamesRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListActiveGamesResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListActiveGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListActiveGamesRequest, + output=codenames_dot_v1_dot_game__pb2.ListActiveGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def get_game_moves( + self, + request: codenames_dot_v1_dot_game__pb2.GetGameMovesRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetGameMovesResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetGameMoves", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetGameMovesRequest, + output=codenames_dot_v1_dot_game__pb2.GetGameMovesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def register_bot( + self, + request: codenames_dot_v1_dot_game__pb2.RegisterBotRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.RegisterBotResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="RegisterBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.RegisterBotRequest, + output=codenames_dot_v1_dot_game__pb2.RegisterBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_bots( + self, + request: codenames_dot_v1_dot_game__pb2.ListBotsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListBotsResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListBots", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListBotsRequest, + output=codenames_dot_v1_dot_game__pb2.ListBotsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def unregister_bot( + self, + request: codenames_dot_v1_dot_game__pb2.UnregisterBotRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.UnregisterBotResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="UnregisterBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.UnregisterBotRequest, + output=codenames_dot_v1_dot_game__pb2.UnregisterBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def get_bot_games( + self, + request: codenames_dot_v1_dot_game__pb2.GetBotGamesRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetBotGamesResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetBotGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetBotGamesRequest, + output=codenames_dot_v1_dot_game__pb2.GetBotGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def get_bot( + self, + request: codenames_dot_v1_dot_game__pb2.GetBotRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetBotResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetBotRequest, + output=codenames_dot_v1_dot_game__pb2.GetBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def get_leaderboard( + self, + request: codenames_dot_v1_dot_game__pb2.GetLeaderboardRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetLeaderboardResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetLeaderboard", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetLeaderboardRequest, + output=codenames_dot_v1_dot_game__pb2.GetLeaderboardResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_teams( + self, + request: codenames_dot_v1_dot_game__pb2.GameServiceListTeamsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GameServiceListTeamsResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListTeams", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GameServiceListTeamsRequest, + output=codenames_dot_v1_dot_game__pb2.GameServiceListTeamsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def get_team( + self, + request: codenames_dot_v1_dot_game__pb2.GameServiceGetTeamRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GameServiceGetTeamResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="GetTeam", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GameServiceGetTeamRequest, + output=codenames_dot_v1_dot_game__pb2.GameServiceGetTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_bots_by_team( + self, + request: codenames_dot_v1_dot_game__pb2.ListBotsByTeamRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListBotsByTeamResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListBotsByTeam", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListBotsByTeamRequest, + output=codenames_dot_v1_dot_game__pb2.ListBotsByTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_games_by_bot( + self, + request: codenames_dot_v1_dot_game__pb2.ListGamesByBotRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListGamesByBotResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListGamesByBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListGamesByBotRequest, + output=codenames_dot_v1_dot_game__pb2.ListGamesByBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + +class GameServiceSync(Protocol): + def create_game(self, request: codenames_dot_v1_dot_game__pb2.CreateGameRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.CreateGameResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_game(self, request: codenames_dot_v1_dot_game__pb2.GetGameRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetGameResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_games(self, request: codenames_dot_v1_dot_game__pb2.ListGamesRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListGamesResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_active_games(self, request: codenames_dot_v1_dot_game__pb2.ListActiveGamesRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListActiveGamesResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_game_moves(self, request: codenames_dot_v1_dot_game__pb2.GetGameMovesRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetGameMovesResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def register_bot(self, request: codenames_dot_v1_dot_game__pb2.RegisterBotRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.RegisterBotResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_bots(self, request: codenames_dot_v1_dot_game__pb2.ListBotsRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListBotsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def unregister_bot(self, request: codenames_dot_v1_dot_game__pb2.UnregisterBotRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.UnregisterBotResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_bot_games(self, request: codenames_dot_v1_dot_game__pb2.GetBotGamesRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetBotGamesResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_bot(self, request: codenames_dot_v1_dot_game__pb2.GetBotRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetBotResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_leaderboard(self, request: codenames_dot_v1_dot_game__pb2.GetLeaderboardRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GetLeaderboardResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_teams(self, request: codenames_dot_v1_dot_game__pb2.GameServiceListTeamsRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GameServiceListTeamsResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def get_team(self, request: codenames_dot_v1_dot_game__pb2.GameServiceGetTeamRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.GameServiceGetTeamResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_bots_by_team(self, request: codenames_dot_v1_dot_game__pb2.ListBotsByTeamRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListBotsByTeamResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_games_by_bot(self, request: codenames_dot_v1_dot_game__pb2.ListGamesByBotRequest, ctx: RequestContext) -> codenames_dot_v1_dot_game__pb2.ListGamesByBotResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class GameServiceWSGIApplication(ConnectWSGIApplication): + def __init__(self, service: GameServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: + super().__init__( + endpoints={ + "/codenames.v1.GameService/CreateGame": EndpointSync.unary( + method=MethodInfo( + name="CreateGame", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.CreateGameRequest, + output=codenames_dot_v1_dot_game__pb2.CreateGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.create_game, + ), + "/codenames.v1.GameService/GetGame": EndpointSync.unary( + method=MethodInfo( + name="GetGame", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetGameRequest, + output=codenames_dot_v1_dot_game__pb2.GetGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.get_game, + ), + "/codenames.v1.GameService/ListGames": EndpointSync.unary( + method=MethodInfo( + name="ListGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListGamesRequest, + output=codenames_dot_v1_dot_game__pb2.ListGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_games, + ), + "/codenames.v1.GameService/ListActiveGames": EndpointSync.unary( + method=MethodInfo( + name="ListActiveGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListActiveGamesRequest, + output=codenames_dot_v1_dot_game__pb2.ListActiveGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_active_games, + ), + "/codenames.v1.GameService/GetGameMoves": EndpointSync.unary( + method=MethodInfo( + name="GetGameMoves", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetGameMovesRequest, + output=codenames_dot_v1_dot_game__pb2.GetGameMovesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.get_game_moves, + ), + "/codenames.v1.GameService/RegisterBot": EndpointSync.unary( + method=MethodInfo( + name="RegisterBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.RegisterBotRequest, + output=codenames_dot_v1_dot_game__pb2.RegisterBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.register_bot, + ), + "/codenames.v1.GameService/ListBots": EndpointSync.unary( + method=MethodInfo( + name="ListBots", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListBotsRequest, + output=codenames_dot_v1_dot_game__pb2.ListBotsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_bots, + ), + "/codenames.v1.GameService/UnregisterBot": EndpointSync.unary( + method=MethodInfo( + name="UnregisterBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.UnregisterBotRequest, + output=codenames_dot_v1_dot_game__pb2.UnregisterBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.unregister_bot, + ), + "/codenames.v1.GameService/GetBotGames": EndpointSync.unary( + method=MethodInfo( + name="GetBotGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetBotGamesRequest, + output=codenames_dot_v1_dot_game__pb2.GetBotGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.get_bot_games, + ), + "/codenames.v1.GameService/GetBot": EndpointSync.unary( + method=MethodInfo( + name="GetBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetBotRequest, + output=codenames_dot_v1_dot_game__pb2.GetBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.get_bot, + ), + "/codenames.v1.GameService/GetLeaderboard": EndpointSync.unary( + method=MethodInfo( + name="GetLeaderboard", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetLeaderboardRequest, + output=codenames_dot_v1_dot_game__pb2.GetLeaderboardResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.get_leaderboard, + ), + "/codenames.v1.GameService/ListTeams": EndpointSync.unary( + method=MethodInfo( + name="ListTeams", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GameServiceListTeamsRequest, + output=codenames_dot_v1_dot_game__pb2.GameServiceListTeamsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_teams, + ), + "/codenames.v1.GameService/GetTeam": EndpointSync.unary( + method=MethodInfo( + name="GetTeam", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GameServiceGetTeamRequest, + output=codenames_dot_v1_dot_game__pb2.GameServiceGetTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.get_team, + ), + "/codenames.v1.GameService/ListBotsByTeam": EndpointSync.unary( + method=MethodInfo( + name="ListBotsByTeam", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListBotsByTeamRequest, + output=codenames_dot_v1_dot_game__pb2.ListBotsByTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_bots_by_team, + ), + "/codenames.v1.GameService/ListGamesByBot": EndpointSync.unary( + method=MethodInfo( + name="ListGamesByBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListGamesByBotRequest, + output=codenames_dot_v1_dot_game__pb2.ListGamesByBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_games_by_bot, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + compressions=compressions, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/codenames.v1.GameService" + + +class GameServiceClientSync(ConnectClientSync): + def create_game( + self, + request: codenames_dot_v1_dot_game__pb2.CreateGameRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.CreateGameResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="CreateGame", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.CreateGameRequest, + output=codenames_dot_v1_dot_game__pb2.CreateGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def get_game( + self, + request: codenames_dot_v1_dot_game__pb2.GetGameRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetGameResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetGame", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetGameRequest, + output=codenames_dot_v1_dot_game__pb2.GetGameResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_games( + self, + request: codenames_dot_v1_dot_game__pb2.ListGamesRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListGamesResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListGamesRequest, + output=codenames_dot_v1_dot_game__pb2.ListGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_active_games( + self, + request: codenames_dot_v1_dot_game__pb2.ListActiveGamesRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListActiveGamesResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListActiveGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListActiveGamesRequest, + output=codenames_dot_v1_dot_game__pb2.ListActiveGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def get_game_moves( + self, + request: codenames_dot_v1_dot_game__pb2.GetGameMovesRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetGameMovesResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetGameMoves", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetGameMovesRequest, + output=codenames_dot_v1_dot_game__pb2.GetGameMovesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def register_bot( + self, + request: codenames_dot_v1_dot_game__pb2.RegisterBotRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.RegisterBotResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="RegisterBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.RegisterBotRequest, + output=codenames_dot_v1_dot_game__pb2.RegisterBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_bots( + self, + request: codenames_dot_v1_dot_game__pb2.ListBotsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListBotsResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListBots", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListBotsRequest, + output=codenames_dot_v1_dot_game__pb2.ListBotsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def unregister_bot( + self, + request: codenames_dot_v1_dot_game__pb2.UnregisterBotRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.UnregisterBotResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="UnregisterBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.UnregisterBotRequest, + output=codenames_dot_v1_dot_game__pb2.UnregisterBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def get_bot_games( + self, + request: codenames_dot_v1_dot_game__pb2.GetBotGamesRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetBotGamesResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetBotGames", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetBotGamesRequest, + output=codenames_dot_v1_dot_game__pb2.GetBotGamesResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def get_bot( + self, + request: codenames_dot_v1_dot_game__pb2.GetBotRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetBotResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetBotRequest, + output=codenames_dot_v1_dot_game__pb2.GetBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def get_leaderboard( + self, + request: codenames_dot_v1_dot_game__pb2.GetLeaderboardRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GetLeaderboardResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetLeaderboard", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GetLeaderboardRequest, + output=codenames_dot_v1_dot_game__pb2.GetLeaderboardResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_teams( + self, + request: codenames_dot_v1_dot_game__pb2.GameServiceListTeamsRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GameServiceListTeamsResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListTeams", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GameServiceListTeamsRequest, + output=codenames_dot_v1_dot_game__pb2.GameServiceListTeamsResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def get_team( + self, + request: codenames_dot_v1_dot_game__pb2.GameServiceGetTeamRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.GameServiceGetTeamResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="GetTeam", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.GameServiceGetTeamRequest, + output=codenames_dot_v1_dot_game__pb2.GameServiceGetTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_bots_by_team( + self, + request: codenames_dot_v1_dot_game__pb2.ListBotsByTeamRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListBotsByTeamResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListBotsByTeam", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListBotsByTeamRequest, + output=codenames_dot_v1_dot_game__pb2.ListBotsByTeamResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_games_by_bot( + self, + request: codenames_dot_v1_dot_game__pb2.ListGamesByBotRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_game__pb2.ListGamesByBotResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListGamesByBot", + service_name="codenames.v1.GameService", + input=codenames_dot_v1_dot_game__pb2.ListGamesByBotRequest, + output=codenames_dot_v1_dot_game__pb2.ListGamesByBotResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) diff --git a/codenames/v1/game_pb2.py b/codenames/v1/game_pb2.py new file mode 100644 index 0000000..61b93c8 --- /dev/null +++ b/codenames/v1/game_pb2.py @@ -0,0 +1,106 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: codenames/v1/game.proto +# Protobuf Python Version: 7.34.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 7, + 34, + 1, + '', + 'codenames/v1/game.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from codenames.v1 import types_pb2 as codenames_dot_v1_dot_types__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x63odenames/v1/game.proto\x12\x0c\x63odenames.v1\x1a\x18\x63odenames/v1/types.proto\"\xb9\x01\n\x11\x43reateGameRequest\x12\x14\n\x05words\x18\x01 \x03(\tR\x05words\x12#\n\rred_spymaster\x18\x02 \x01(\tR\x0credSpymaster\x12\x1f\n\x0bred_guesser\x18\x03 \x01(\tR\nredGuesser\x12%\n\x0e\x62lue_spymaster\x18\x04 \x01(\tR\rblueSpymaster\x12!\n\x0c\x62lue_guesser\x18\x05 \x01(\tR\x0b\x62lueGuesser\"-\n\x12\x43reateGameResponse\x12\x17\n\x07game_id\x18\x01 \x01(\tR\x06gameId\")\n\x0eGetGameRequest\x12\x17\n\x07game_id\x18\x01 \x01(\tR\x06gameId\"9\n\x0fGetGameResponse\x12&\n\x04game\x18\x01 \x01(\x0b\x32\x12.codenames.v1.GameR\x04game\"e\n\x10ListGamesRequest\x12\x14\n\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n\x06offset\x18\x02 \x01(\x05R\x06offset\x12#\n\rinclude_board\x18\x03 \x01(\x08R\x0cincludeBoard\"^\n\x11ListGamesResponse\x12(\n\x05games\x18\x01 \x03(\x0b\x32\x12.codenames.v1.GameR\x05games\x12\x1f\n\x0btotal_count\x18\x02 \x01(\x05R\ntotalCount\"=\n\x16ListActiveGamesRequest\x12#\n\rinclude_board\x18\x01 \x01(\x08R\x0cincludeBoard\"C\n\x17ListActiveGamesResponse\x12(\n\x05games\x18\x01 \x03(\x0b\x32\x12.codenames.v1.GameR\x05games\".\n\x13GetGameMovesRequest\x12\x17\n\x07game_id\x18\x01 \x01(\tR\x06gameId\"D\n\x14GetGameMovesResponse\x12,\n\x05moves\x18\x01 \x03(\x0b\x32\x16.codenames.v1.GameMoveR\x05moves\"K\n\x12RegisterBotRequest\x12!\n\x0cidentity_key\x18\x01 \x01(\tR\x0bidentityKey\x12\x12\n\x04port\x18\x02 \x01(\x05R\x04port\":\n\x13RegisterBotResponse\x12#\n\x03\x62ot\x18\x01 \x01(\x0b\x32\x11.codenames.v1.BotR\x03\x62ot\"\x11\n\x0fListBotsRequest\"9\n\x10ListBotsResponse\x12%\n\x04\x62ots\x18\x01 \x03(\x0b\x32\x11.codenames.v1.BotR\x04\x62ots\"-\n\x14UnregisterBotRequest\x12\x15\n\x06\x62ot_id\x18\x01 \x01(\tR\x05\x62otId\"\x17\n\x15UnregisterBotResponse\"+\n\x12GetBotGamesRequest\x12\x15\n\x06\x62ot_id\x18\x01 \x01(\tR\x05\x62otId\"0\n\x13GetBotGamesResponse\x12\x19\n\x08game_ids\x18\x01 \x03(\tR\x07gameIds\"R\n\rGetBotRequest\x12\x15\n\x06\x62ot_id\x18\x01 \x01(\tR\x05\x62otId\x12*\n\x11skip_active_games\x18\x02 \x01(\x08R\x0fskipActiveGames\"5\n\x0eGetBotResponse\x12#\n\x03\x62ot\x18\x01 \x01(\x0b\x32\x11.codenames.v1.BotR\x03\x62ot\"g\n\x15GetLeaderboardRequest\x12\x14\n\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x38\n\x07sort_by\x18\x02 \x01(\x0e\x32\x1f.codenames.v1.LeaderboardSortByR\x06sortBy\"D\n\x16GetLeaderboardResponse\x12*\n\x04\x62ots\x18\x01 \x03(\x0b\x32\x16.codenames.v1.BotStatsR\x04\x62ots\"\xf1\x01\n\x08\x42otStats\x12\x15\n\x06\x62ot_id\x18\x01 \x01(\tR\x05\x62otId\x12!\n\x0cidentity_key\x18\x02 \x01(\tR\x0bidentityKey\x12\x1d\n\nelo_rating\x18\x03 \x01(\x05R\teloRating\x12!\n\x0cgames_played\x18\x04 \x01(\x05R\x0bgamesPlayed\x12\x12\n\x04wins\x18\x05 \x01(\x05R\x04wins\x12\x16\n\x06losses\x18\x06 \x01(\x05R\x06losses\x12$\n\x0ep99_latency_ms\x18\x07 \x01(\x05R\x0cp99LatencyMs\x12\x17\n\x07team_id\x18\x08 \x01(\tR\x06teamId\"\x98\x02\n\x08TeamInfo\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x13\n\x05vm_ip\x18\x03 \x01(\tR\x04vmIp\x12\x1b\n\tbot_count\x18\x04 \x01(\x05R\x08\x62otCount\x12,\n\x12total_games_played\x18\x05 \x01(\x05R\x10totalGamesPlayed\x12 \n\x0ctop_bot_rank\x18\x06 \x01(\x05R\ntopBotRank\x12\x1e\n\x0btop_bot_elo\x18\x07 \x01(\x05R\ttopBotElo\x12(\n\x10top_bot_identity\x18\x08 \x01(\tR\x0etopBotIdentity\x12\x1c\n\ntop_bot_id\x18\t \x01(\tR\x08topBotId\"\x1d\n\x1bGameServiceListTeamsRequest\"L\n\x1cGameServiceListTeamsResponse\x12,\n\x05teams\x18\x01 \x03(\x0b\x32\x16.codenames.v1.TeamInfoR\x05teams\"4\n\x19GameServiceGetTeamRequest\x12\x17\n\x07team_id\x18\x01 \x01(\tR\x06teamId\"H\n\x1aGameServiceGetTeamResponse\x12*\n\x04team\x18\x01 \x01(\x0b\x32\x16.codenames.v1.TeamInfoR\x04team\"0\n\x15ListBotsByTeamRequest\x12\x17\n\x07team_id\x18\x01 \x01(\tR\x06teamId\"?\n\x16ListBotsByTeamResponse\x12%\n\x04\x62ots\x18\x01 \x03(\x0b\x32\x11.codenames.v1.BotR\x04\x62ots\"\xbf\x01\n\x15ListGamesByBotRequest\x12\x15\n\x06\x62ot_id\x18\x01 \x01(\tR\x05\x62otId\x12\x14\n\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n\x06offset\x18\x03 \x01(\x05R\x06offset\x12#\n\rinclude_board\x18\x04 \x01(\x08R\x0cincludeBoard\x12<\n\x0brole_filter\x18\x05 \x01(\x0e\x32\x1b.codenames.v1.BotRoleFilterR\nroleFilter\"c\n\x16ListGamesByBotResponse\x12(\n\x05games\x18\x01 \x03(\x0b\x32\x12.codenames.v1.GameR\x05games\x12\x1f\n\x0btotal_count\x18\x02 \x01(\x05R\ntotalCount*\x81\x01\n\x11LeaderboardSortBy\x12#\n\x1fLEADERBOARD_SORT_BY_UNSPECIFIED\x10\x00\x12\"\n\x1eLEADERBOARD_SORT_BY_ELO_RATING\x10\x01\x12#\n\x1fLEADERBOARD_SORT_BY_P99_LATENCY\x10\x02*l\n\rBotRoleFilter\x12\x1f\n\x1b\x42OT_ROLE_FILTER_UNSPECIFIED\x10\x00\x12\x1d\n\x19\x42OT_ROLE_FILTER_SPYMASTER\x10\x01\x12\x1b\n\x17\x42OT_ROLE_FILTER_GUESSER\x10\x02\x32\x96\n\n\x0bGameService\x12O\n\nCreateGame\x12\x1f.codenames.v1.CreateGameRequest\x1a .codenames.v1.CreateGameResponse\x12\x46\n\x07GetGame\x12\x1c.codenames.v1.GetGameRequest\x1a\x1d.codenames.v1.GetGameResponse\x12L\n\tListGames\x12\x1e.codenames.v1.ListGamesRequest\x1a\x1f.codenames.v1.ListGamesResponse\x12^\n\x0fListActiveGames\x12$.codenames.v1.ListActiveGamesRequest\x1a%.codenames.v1.ListActiveGamesResponse\x12U\n\x0cGetGameMoves\x12!.codenames.v1.GetGameMovesRequest\x1a\".codenames.v1.GetGameMovesResponse\x12R\n\x0bRegisterBot\x12 .codenames.v1.RegisterBotRequest\x1a!.codenames.v1.RegisterBotResponse\x12I\n\x08ListBots\x12\x1d.codenames.v1.ListBotsRequest\x1a\x1e.codenames.v1.ListBotsResponse\x12X\n\rUnregisterBot\x12\".codenames.v1.UnregisterBotRequest\x1a#.codenames.v1.UnregisterBotResponse\x12R\n\x0bGetBotGames\x12 .codenames.v1.GetBotGamesRequest\x1a!.codenames.v1.GetBotGamesResponse\x12\x43\n\x06GetBot\x12\x1b.codenames.v1.GetBotRequest\x1a\x1c.codenames.v1.GetBotResponse\x12[\n\x0eGetLeaderboard\x12#.codenames.v1.GetLeaderboardRequest\x1a$.codenames.v1.GetLeaderboardResponse\x12\x62\n\tListTeams\x12).codenames.v1.GameServiceListTeamsRequest\x1a*.codenames.v1.GameServiceListTeamsResponse\x12\\\n\x07GetTeam\x12\'.codenames.v1.GameServiceGetTeamRequest\x1a(.codenames.v1.GameServiceGetTeamResponse\x12[\n\x0eListBotsByTeam\x12#.codenames.v1.ListBotsByTeamRequest\x1a$.codenames.v1.ListBotsByTeamResponse\x12[\n\x0eListGamesByBot\x12#.codenames.v1.ListGamesByBotRequest\x1a$.codenames.v1.ListGamesByBotResponseB\x96\x01\n\x10\x63om.codenames.v1B\tGameProtoP\x01Z&codenames/gen/codenames/v1;codenamesv1\xa2\x02\x03\x43XX\xaa\x02\x0c\x43odenames.V1\xca\x02\x0c\x43odenames\\V1\xe2\x02\x18\x43odenames\\V1\\GPBMetadata\xea\x02\rCodenames::V1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'codenames.v1.game_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\020com.codenames.v1B\tGameProtoP\001Z&codenames/gen/codenames/v1;codenamesv1\242\002\003CXX\252\002\014Codenames.V1\312\002\014Codenames\\V1\342\002\030Codenames\\V1\\GPBMetadata\352\002\rCodenames::V1' + _globals['_LEADERBOARDSORTBY']._serialized_start=2724 + _globals['_LEADERBOARDSORTBY']._serialized_end=2853 + _globals['_BOTROLEFILTER']._serialized_start=2855 + _globals['_BOTROLEFILTER']._serialized_end=2963 + _globals['_CREATEGAMEREQUEST']._serialized_start=68 + _globals['_CREATEGAMEREQUEST']._serialized_end=253 + _globals['_CREATEGAMERESPONSE']._serialized_start=255 + _globals['_CREATEGAMERESPONSE']._serialized_end=300 + _globals['_GETGAMEREQUEST']._serialized_start=302 + _globals['_GETGAMEREQUEST']._serialized_end=343 + _globals['_GETGAMERESPONSE']._serialized_start=345 + _globals['_GETGAMERESPONSE']._serialized_end=402 + _globals['_LISTGAMESREQUEST']._serialized_start=404 + _globals['_LISTGAMESREQUEST']._serialized_end=505 + _globals['_LISTGAMESRESPONSE']._serialized_start=507 + _globals['_LISTGAMESRESPONSE']._serialized_end=601 + _globals['_LISTACTIVEGAMESREQUEST']._serialized_start=603 + _globals['_LISTACTIVEGAMESREQUEST']._serialized_end=664 + _globals['_LISTACTIVEGAMESRESPONSE']._serialized_start=666 + _globals['_LISTACTIVEGAMESRESPONSE']._serialized_end=733 + _globals['_GETGAMEMOVESREQUEST']._serialized_start=735 + _globals['_GETGAMEMOVESREQUEST']._serialized_end=781 + _globals['_GETGAMEMOVESRESPONSE']._serialized_start=783 + _globals['_GETGAMEMOVESRESPONSE']._serialized_end=851 + _globals['_REGISTERBOTREQUEST']._serialized_start=853 + _globals['_REGISTERBOTREQUEST']._serialized_end=928 + _globals['_REGISTERBOTRESPONSE']._serialized_start=930 + _globals['_REGISTERBOTRESPONSE']._serialized_end=988 + _globals['_LISTBOTSREQUEST']._serialized_start=990 + _globals['_LISTBOTSREQUEST']._serialized_end=1007 + _globals['_LISTBOTSRESPONSE']._serialized_start=1009 + _globals['_LISTBOTSRESPONSE']._serialized_end=1066 + _globals['_UNREGISTERBOTREQUEST']._serialized_start=1068 + _globals['_UNREGISTERBOTREQUEST']._serialized_end=1113 + _globals['_UNREGISTERBOTRESPONSE']._serialized_start=1115 + _globals['_UNREGISTERBOTRESPONSE']._serialized_end=1138 + _globals['_GETBOTGAMESREQUEST']._serialized_start=1140 + _globals['_GETBOTGAMESREQUEST']._serialized_end=1183 + _globals['_GETBOTGAMESRESPONSE']._serialized_start=1185 + _globals['_GETBOTGAMESRESPONSE']._serialized_end=1233 + _globals['_GETBOTREQUEST']._serialized_start=1235 + _globals['_GETBOTREQUEST']._serialized_end=1317 + _globals['_GETBOTRESPONSE']._serialized_start=1319 + _globals['_GETBOTRESPONSE']._serialized_end=1372 + _globals['_GETLEADERBOARDREQUEST']._serialized_start=1374 + _globals['_GETLEADERBOARDREQUEST']._serialized_end=1477 + _globals['_GETLEADERBOARDRESPONSE']._serialized_start=1479 + _globals['_GETLEADERBOARDRESPONSE']._serialized_end=1547 + _globals['_BOTSTATS']._serialized_start=1550 + _globals['_BOTSTATS']._serialized_end=1791 + _globals['_TEAMINFO']._serialized_start=1794 + _globals['_TEAMINFO']._serialized_end=2074 + _globals['_GAMESERVICELISTTEAMSREQUEST']._serialized_start=2076 + _globals['_GAMESERVICELISTTEAMSREQUEST']._serialized_end=2105 + _globals['_GAMESERVICELISTTEAMSRESPONSE']._serialized_start=2107 + _globals['_GAMESERVICELISTTEAMSRESPONSE']._serialized_end=2183 + _globals['_GAMESERVICEGETTEAMREQUEST']._serialized_start=2185 + _globals['_GAMESERVICEGETTEAMREQUEST']._serialized_end=2237 + _globals['_GAMESERVICEGETTEAMRESPONSE']._serialized_start=2239 + _globals['_GAMESERVICEGETTEAMRESPONSE']._serialized_end=2311 + _globals['_LISTBOTSBYTEAMREQUEST']._serialized_start=2313 + _globals['_LISTBOTSBYTEAMREQUEST']._serialized_end=2361 + _globals['_LISTBOTSBYTEAMRESPONSE']._serialized_start=2363 + _globals['_LISTBOTSBYTEAMRESPONSE']._serialized_end=2426 + _globals['_LISTGAMESBYBOTREQUEST']._serialized_start=2429 + _globals['_LISTGAMESBYBOTREQUEST']._serialized_end=2620 + _globals['_LISTGAMESBYBOTRESPONSE']._serialized_start=2622 + _globals['_LISTGAMESBYBOTRESPONSE']._serialized_end=2721 + _globals['_GAMESERVICE']._serialized_start=2966 + _globals['_GAMESERVICE']._serialized_end=4268 +# @@protoc_insertion_point(module_scope) diff --git a/codenames/v1/game_pb2.pyi b/codenames/v1/game_pb2.pyi new file mode 100644 index 0000000..c5c59c8 --- /dev/null +++ b/codenames/v1/game_pb2.pyi @@ -0,0 +1,273 @@ +from codenames.v1 import types_pb2 as _types_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class LeaderboardSortBy(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + LEADERBOARD_SORT_BY_UNSPECIFIED: _ClassVar[LeaderboardSortBy] + LEADERBOARD_SORT_BY_ELO_RATING: _ClassVar[LeaderboardSortBy] + LEADERBOARD_SORT_BY_P99_LATENCY: _ClassVar[LeaderboardSortBy] + +class BotRoleFilter(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + BOT_ROLE_FILTER_UNSPECIFIED: _ClassVar[BotRoleFilter] + BOT_ROLE_FILTER_SPYMASTER: _ClassVar[BotRoleFilter] + BOT_ROLE_FILTER_GUESSER: _ClassVar[BotRoleFilter] +LEADERBOARD_SORT_BY_UNSPECIFIED: LeaderboardSortBy +LEADERBOARD_SORT_BY_ELO_RATING: LeaderboardSortBy +LEADERBOARD_SORT_BY_P99_LATENCY: LeaderboardSortBy +BOT_ROLE_FILTER_UNSPECIFIED: BotRoleFilter +BOT_ROLE_FILTER_SPYMASTER: BotRoleFilter +BOT_ROLE_FILTER_GUESSER: BotRoleFilter + +class CreateGameRequest(_message.Message): + __slots__ = ("words", "red_spymaster", "red_guesser", "blue_spymaster", "blue_guesser") + WORDS_FIELD_NUMBER: _ClassVar[int] + RED_SPYMASTER_FIELD_NUMBER: _ClassVar[int] + RED_GUESSER_FIELD_NUMBER: _ClassVar[int] + BLUE_SPYMASTER_FIELD_NUMBER: _ClassVar[int] + BLUE_GUESSER_FIELD_NUMBER: _ClassVar[int] + words: _containers.RepeatedScalarFieldContainer[str] + red_spymaster: str + red_guesser: str + blue_spymaster: str + blue_guesser: str + def __init__(self, words: _Optional[_Iterable[str]] = ..., red_spymaster: _Optional[str] = ..., red_guesser: _Optional[str] = ..., blue_spymaster: _Optional[str] = ..., blue_guesser: _Optional[str] = ...) -> None: ... + +class CreateGameResponse(_message.Message): + __slots__ = ("game_id",) + GAME_ID_FIELD_NUMBER: _ClassVar[int] + game_id: str + def __init__(self, game_id: _Optional[str] = ...) -> None: ... + +class GetGameRequest(_message.Message): + __slots__ = ("game_id",) + GAME_ID_FIELD_NUMBER: _ClassVar[int] + game_id: str + def __init__(self, game_id: _Optional[str] = ...) -> None: ... + +class GetGameResponse(_message.Message): + __slots__ = ("game",) + GAME_FIELD_NUMBER: _ClassVar[int] + game: _types_pb2.Game + def __init__(self, game: _Optional[_Union[_types_pb2.Game, _Mapping]] = ...) -> None: ... + +class ListGamesRequest(_message.Message): + __slots__ = ("limit", "offset", "include_board") + LIMIT_FIELD_NUMBER: _ClassVar[int] + OFFSET_FIELD_NUMBER: _ClassVar[int] + INCLUDE_BOARD_FIELD_NUMBER: _ClassVar[int] + limit: int + offset: int + include_board: bool + def __init__(self, limit: _Optional[int] = ..., offset: _Optional[int] = ..., include_board: _Optional[bool] = ...) -> None: ... + +class ListGamesResponse(_message.Message): + __slots__ = ("games", "total_count") + GAMES_FIELD_NUMBER: _ClassVar[int] + TOTAL_COUNT_FIELD_NUMBER: _ClassVar[int] + games: _containers.RepeatedCompositeFieldContainer[_types_pb2.Game] + total_count: int + def __init__(self, games: _Optional[_Iterable[_Union[_types_pb2.Game, _Mapping]]] = ..., total_count: _Optional[int] = ...) -> None: ... + +class ListActiveGamesRequest(_message.Message): + __slots__ = ("include_board",) + INCLUDE_BOARD_FIELD_NUMBER: _ClassVar[int] + include_board: bool + def __init__(self, include_board: _Optional[bool] = ...) -> None: ... + +class ListActiveGamesResponse(_message.Message): + __slots__ = ("games",) + GAMES_FIELD_NUMBER: _ClassVar[int] + games: _containers.RepeatedCompositeFieldContainer[_types_pb2.Game] + def __init__(self, games: _Optional[_Iterable[_Union[_types_pb2.Game, _Mapping]]] = ...) -> None: ... + +class GetGameMovesRequest(_message.Message): + __slots__ = ("game_id",) + GAME_ID_FIELD_NUMBER: _ClassVar[int] + game_id: str + def __init__(self, game_id: _Optional[str] = ...) -> None: ... + +class GetGameMovesResponse(_message.Message): + __slots__ = ("moves",) + MOVES_FIELD_NUMBER: _ClassVar[int] + moves: _containers.RepeatedCompositeFieldContainer[_types_pb2.GameMove] + def __init__(self, moves: _Optional[_Iterable[_Union[_types_pb2.GameMove, _Mapping]]] = ...) -> None: ... + +class RegisterBotRequest(_message.Message): + __slots__ = ("identity_key", "port") + IDENTITY_KEY_FIELD_NUMBER: _ClassVar[int] + PORT_FIELD_NUMBER: _ClassVar[int] + identity_key: str + port: int + def __init__(self, identity_key: _Optional[str] = ..., port: _Optional[int] = ...) -> None: ... + +class RegisterBotResponse(_message.Message): + __slots__ = ("bot",) + BOT_FIELD_NUMBER: _ClassVar[int] + bot: _types_pb2.Bot + def __init__(self, bot: _Optional[_Union[_types_pb2.Bot, _Mapping]] = ...) -> None: ... + +class ListBotsRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ListBotsResponse(_message.Message): + __slots__ = ("bots",) + BOTS_FIELD_NUMBER: _ClassVar[int] + bots: _containers.RepeatedCompositeFieldContainer[_types_pb2.Bot] + def __init__(self, bots: _Optional[_Iterable[_Union[_types_pb2.Bot, _Mapping]]] = ...) -> None: ... + +class UnregisterBotRequest(_message.Message): + __slots__ = ("bot_id",) + BOT_ID_FIELD_NUMBER: _ClassVar[int] + bot_id: str + def __init__(self, bot_id: _Optional[str] = ...) -> None: ... + +class UnregisterBotResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GetBotGamesRequest(_message.Message): + __slots__ = ("bot_id",) + BOT_ID_FIELD_NUMBER: _ClassVar[int] + bot_id: str + def __init__(self, bot_id: _Optional[str] = ...) -> None: ... + +class GetBotGamesResponse(_message.Message): + __slots__ = ("game_ids",) + GAME_IDS_FIELD_NUMBER: _ClassVar[int] + game_ids: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, game_ids: _Optional[_Iterable[str]] = ...) -> None: ... + +class GetBotRequest(_message.Message): + __slots__ = ("bot_id", "skip_active_games") + BOT_ID_FIELD_NUMBER: _ClassVar[int] + SKIP_ACTIVE_GAMES_FIELD_NUMBER: _ClassVar[int] + bot_id: str + skip_active_games: bool + def __init__(self, bot_id: _Optional[str] = ..., skip_active_games: _Optional[bool] = ...) -> None: ... + +class GetBotResponse(_message.Message): + __slots__ = ("bot",) + BOT_FIELD_NUMBER: _ClassVar[int] + bot: _types_pb2.Bot + def __init__(self, bot: _Optional[_Union[_types_pb2.Bot, _Mapping]] = ...) -> None: ... + +class GetLeaderboardRequest(_message.Message): + __slots__ = ("limit", "sort_by") + LIMIT_FIELD_NUMBER: _ClassVar[int] + SORT_BY_FIELD_NUMBER: _ClassVar[int] + limit: int + sort_by: LeaderboardSortBy + def __init__(self, limit: _Optional[int] = ..., sort_by: _Optional[_Union[LeaderboardSortBy, str]] = ...) -> None: ... + +class GetLeaderboardResponse(_message.Message): + __slots__ = ("bots",) + BOTS_FIELD_NUMBER: _ClassVar[int] + bots: _containers.RepeatedCompositeFieldContainer[BotStats] + def __init__(self, bots: _Optional[_Iterable[_Union[BotStats, _Mapping]]] = ...) -> None: ... + +class BotStats(_message.Message): + __slots__ = ("bot_id", "identity_key", "elo_rating", "games_played", "wins", "losses", "p99_latency_ms", "team_id") + BOT_ID_FIELD_NUMBER: _ClassVar[int] + IDENTITY_KEY_FIELD_NUMBER: _ClassVar[int] + ELO_RATING_FIELD_NUMBER: _ClassVar[int] + GAMES_PLAYED_FIELD_NUMBER: _ClassVar[int] + WINS_FIELD_NUMBER: _ClassVar[int] + LOSSES_FIELD_NUMBER: _ClassVar[int] + P99_LATENCY_MS_FIELD_NUMBER: _ClassVar[int] + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + bot_id: str + identity_key: str + elo_rating: int + games_played: int + wins: int + losses: int + p99_latency_ms: int + team_id: str + def __init__(self, bot_id: _Optional[str] = ..., identity_key: _Optional[str] = ..., elo_rating: _Optional[int] = ..., games_played: _Optional[int] = ..., wins: _Optional[int] = ..., losses: _Optional[int] = ..., p99_latency_ms: _Optional[int] = ..., team_id: _Optional[str] = ...) -> None: ... + +class TeamInfo(_message.Message): + __slots__ = ("id", "name", "vm_ip", "bot_count", "total_games_played", "top_bot_rank", "top_bot_elo", "top_bot_identity", "top_bot_id") + ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + VM_IP_FIELD_NUMBER: _ClassVar[int] + BOT_COUNT_FIELD_NUMBER: _ClassVar[int] + TOTAL_GAMES_PLAYED_FIELD_NUMBER: _ClassVar[int] + TOP_BOT_RANK_FIELD_NUMBER: _ClassVar[int] + TOP_BOT_ELO_FIELD_NUMBER: _ClassVar[int] + TOP_BOT_IDENTITY_FIELD_NUMBER: _ClassVar[int] + TOP_BOT_ID_FIELD_NUMBER: _ClassVar[int] + id: str + name: str + vm_ip: str + bot_count: int + total_games_played: int + top_bot_rank: int + top_bot_elo: int + top_bot_identity: str + top_bot_id: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., vm_ip: _Optional[str] = ..., bot_count: _Optional[int] = ..., total_games_played: _Optional[int] = ..., top_bot_rank: _Optional[int] = ..., top_bot_elo: _Optional[int] = ..., top_bot_identity: _Optional[str] = ..., top_bot_id: _Optional[str] = ...) -> None: ... + +class GameServiceListTeamsRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GameServiceListTeamsResponse(_message.Message): + __slots__ = ("teams",) + TEAMS_FIELD_NUMBER: _ClassVar[int] + teams: _containers.RepeatedCompositeFieldContainer[TeamInfo] + def __init__(self, teams: _Optional[_Iterable[_Union[TeamInfo, _Mapping]]] = ...) -> None: ... + +class GameServiceGetTeamRequest(_message.Message): + __slots__ = ("team_id",) + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + team_id: str + def __init__(self, team_id: _Optional[str] = ...) -> None: ... + +class GameServiceGetTeamResponse(_message.Message): + __slots__ = ("team",) + TEAM_FIELD_NUMBER: _ClassVar[int] + team: TeamInfo + def __init__(self, team: _Optional[_Union[TeamInfo, _Mapping]] = ...) -> None: ... + +class ListBotsByTeamRequest(_message.Message): + __slots__ = ("team_id",) + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + team_id: str + def __init__(self, team_id: _Optional[str] = ...) -> None: ... + +class ListBotsByTeamResponse(_message.Message): + __slots__ = ("bots",) + BOTS_FIELD_NUMBER: _ClassVar[int] + bots: _containers.RepeatedCompositeFieldContainer[_types_pb2.Bot] + def __init__(self, bots: _Optional[_Iterable[_Union[_types_pb2.Bot, _Mapping]]] = ...) -> None: ... + +class ListGamesByBotRequest(_message.Message): + __slots__ = ("bot_id", "limit", "offset", "include_board", "role_filter") + BOT_ID_FIELD_NUMBER: _ClassVar[int] + LIMIT_FIELD_NUMBER: _ClassVar[int] + OFFSET_FIELD_NUMBER: _ClassVar[int] + INCLUDE_BOARD_FIELD_NUMBER: _ClassVar[int] + ROLE_FILTER_FIELD_NUMBER: _ClassVar[int] + bot_id: str + limit: int + offset: int + include_board: bool + role_filter: BotRoleFilter + def __init__(self, bot_id: _Optional[str] = ..., limit: _Optional[int] = ..., offset: _Optional[int] = ..., include_board: _Optional[bool] = ..., role_filter: _Optional[_Union[BotRoleFilter, str]] = ...) -> None: ... + +class ListGamesByBotResponse(_message.Message): + __slots__ = ("games", "total_count") + GAMES_FIELD_NUMBER: _ClassVar[int] + TOTAL_COUNT_FIELD_NUMBER: _ClassVar[int] + games: _containers.RepeatedCompositeFieldContainer[_types_pb2.Game] + total_count: int + def __init__(self, games: _Optional[_Iterable[_Union[_types_pb2.Game, _Mapping]]] = ..., total_count: _Optional[int] = ...) -> None: ... diff --git a/codenames/v1/ssh_keys_connect.py b/codenames/v1/ssh_keys_connect.py new file mode 100644 index 0000000..adbaa6b --- /dev/null +++ b/codenames/v1/ssh_keys_connect.py @@ -0,0 +1,188 @@ +# -*- coding: utf-8 -*- +# Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT! +# source: codenames/v1/ssh_keys.proto + +from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping +from typing import Protocol + +from connectrpc.client import ConnectClient, ConnectClientSync +from connectrpc.code import Code +from connectrpc.compression import Compression +from connectrpc.errors import ConnectError +from connectrpc.interceptor import Interceptor, InterceptorSync +from connectrpc.method import IdempotencyLevel, MethodInfo +from connectrpc.request import Headers, RequestContext +from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync +import codenames.v1.ssh_keys_pb2 as codenames_dot_v1_dot_ssh__keys__pb2 + + +class SSHKeyService(Protocol): + async def submit_s_s_h_key(self, request: codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyRequest, ctx: RequestContext) -> codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + async def list_teams_for_key_submission(self, request: codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionRequest, ctx: RequestContext) -> codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class SSHKeyServiceASGIApplication(ConnectASGIApplication[SSHKeyService]): + def __init__(self, service: SSHKeyService | AsyncGenerator[SSHKeyService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: + super().__init__( + service=service, + endpoints=lambda svc: { + "/codenames.v1.SSHKeyService/SubmitSSHKey": Endpoint.unary( + method=MethodInfo( + name="SubmitSSHKey", + service_name="codenames.v1.SSHKeyService", + input=codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyRequest, + output=codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.submit_s_s_h_key, + ), + "/codenames.v1.SSHKeyService/ListTeamsForKeySubmission": Endpoint.unary( + method=MethodInfo( + name="ListTeamsForKeySubmission", + service_name="codenames.v1.SSHKeyService", + input=codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionRequest, + output=codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=svc.list_teams_for_key_submission, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + compressions=compressions, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/codenames.v1.SSHKeyService" + + +class SSHKeyServiceClient(ConnectClient): + async def submit_s_s_h_key( + self, + request: codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="SubmitSSHKey", + service_name="codenames.v1.SSHKeyService", + input=codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyRequest, + output=codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + async def list_teams_for_key_submission( + self, + request: codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionResponse: + return await self.execute_unary( + request=request, + method=MethodInfo( + name="ListTeamsForKeySubmission", + service_name="codenames.v1.SSHKeyService", + input=codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionRequest, + output=codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + +class SSHKeyServiceSync(Protocol): + def submit_s_s_h_key(self, request: codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyRequest, ctx: RequestContext) -> codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + def list_teams_for_key_submission(self, request: codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionRequest, ctx: RequestContext) -> codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionResponse: + raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") + + +class SSHKeyServiceWSGIApplication(ConnectWSGIApplication): + def __init__(self, service: SSHKeyServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: + super().__init__( + endpoints={ + "/codenames.v1.SSHKeyService/SubmitSSHKey": EndpointSync.unary( + method=MethodInfo( + name="SubmitSSHKey", + service_name="codenames.v1.SSHKeyService", + input=codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyRequest, + output=codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.submit_s_s_h_key, + ), + "/codenames.v1.SSHKeyService/ListTeamsForKeySubmission": EndpointSync.unary( + method=MethodInfo( + name="ListTeamsForKeySubmission", + service_name="codenames.v1.SSHKeyService", + input=codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionRequest, + output=codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + function=service.list_teams_for_key_submission, + ), + }, + interceptors=interceptors, + read_max_bytes=read_max_bytes, + compressions=compressions, + ) + + @property + def path(self) -> str: + """Returns the URL path to mount the application to when serving multiple applications.""" + return "/codenames.v1.SSHKeyService" + + +class SSHKeyServiceClientSync(ConnectClientSync): + def submit_s_s_h_key( + self, + request: codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="SubmitSSHKey", + service_name="codenames.v1.SSHKeyService", + input=codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyRequest, + output=codenames_dot_v1_dot_ssh__keys__pb2.SubmitSSHKeyResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) + + def list_teams_for_key_submission( + self, + request: codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionRequest, + *, + headers: Headers | Mapping[str, str] | None = None, + timeout_ms: int | None = None, + ) -> codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionResponse: + return self.execute_unary( + request=request, + method=MethodInfo( + name="ListTeamsForKeySubmission", + service_name="codenames.v1.SSHKeyService", + input=codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionRequest, + output=codenames_dot_v1_dot_ssh__keys__pb2.ListTeamsForKeySubmissionResponse, + idempotency_level=IdempotencyLevel.UNKNOWN, + ), + headers=headers, + timeout_ms=timeout_ms, + ) diff --git a/codenames/v1/ssh_keys_pb2.py b/codenames/v1/ssh_keys_pb2.py new file mode 100644 index 0000000..2375f2a --- /dev/null +++ b/codenames/v1/ssh_keys_pb2.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: codenames/v1/ssh_keys.proto +# Protobuf Python Version: 7.34.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 7, + 34, + 1, + '', + 'codenames/v1/ssh_keys.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x63odenames/v1/ssh_keys.proto\x12\x0c\x63odenames.v1\"}\n\x13SubmitSSHKeyRequest\x12\'\n\x0f\x63ontestant_name\x18\x01 \x01(\tR\x0e\x63ontestantName\x12\x17\n\x07team_id\x18\x02 \x01(\tR\x06teamId\x12$\n\x0essh_public_key\x18\x03 \x01(\tR\x0csshPublicKey\"?\n\x14SubmitSSHKeyResponse\x12\'\n\x0fkey_fingerprint\x18\x01 \x01(\tR\x0ekeyFingerprint\"\"\n ListTeamsForKeySubmissionRequest\"0\n\nTeamOption\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"S\n!ListTeamsForKeySubmissionResponse\x12.\n\x05teams\x18\x01 \x03(\x0b\x32\x18.codenames.v1.TeamOptionR\x05teams2\xe4\x01\n\rSSHKeyService\x12U\n\x0cSubmitSSHKey\x12!.codenames.v1.SubmitSSHKeyRequest\x1a\".codenames.v1.SubmitSSHKeyResponse\x12|\n\x19ListTeamsForKeySubmission\x12..codenames.v1.ListTeamsForKeySubmissionRequest\x1a/.codenames.v1.ListTeamsForKeySubmissionResponseB\x99\x01\n\x10\x63om.codenames.v1B\x0cSshKeysProtoP\x01Z&codenames/gen/codenames/v1;codenamesv1\xa2\x02\x03\x43XX\xaa\x02\x0c\x43odenames.V1\xca\x02\x0c\x43odenames\\V1\xe2\x02\x18\x43odenames\\V1\\GPBMetadata\xea\x02\rCodenames::V1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'codenames.v1.ssh_keys_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\020com.codenames.v1B\014SshKeysProtoP\001Z&codenames/gen/codenames/v1;codenamesv1\242\002\003CXX\252\002\014Codenames.V1\312\002\014Codenames\\V1\342\002\030Codenames\\V1\\GPBMetadata\352\002\rCodenames::V1' + _globals['_SUBMITSSHKEYREQUEST']._serialized_start=45 + _globals['_SUBMITSSHKEYREQUEST']._serialized_end=170 + _globals['_SUBMITSSHKEYRESPONSE']._serialized_start=172 + _globals['_SUBMITSSHKEYRESPONSE']._serialized_end=235 + _globals['_LISTTEAMSFORKEYSUBMISSIONREQUEST']._serialized_start=237 + _globals['_LISTTEAMSFORKEYSUBMISSIONREQUEST']._serialized_end=271 + _globals['_TEAMOPTION']._serialized_start=273 + _globals['_TEAMOPTION']._serialized_end=321 + _globals['_LISTTEAMSFORKEYSUBMISSIONRESPONSE']._serialized_start=323 + _globals['_LISTTEAMSFORKEYSUBMISSIONRESPONSE']._serialized_end=406 + _globals['_SSHKEYSERVICE']._serialized_start=409 + _globals['_SSHKEYSERVICE']._serialized_end=637 +# @@protoc_insertion_point(module_scope) diff --git a/codenames/v1/ssh_keys_pb2.pyi b/codenames/v1/ssh_keys_pb2.pyi new file mode 100644 index 0000000..3459a42 --- /dev/null +++ b/codenames/v1/ssh_keys_pb2.pyi @@ -0,0 +1,41 @@ +from google.protobuf.internal import containers as _containers +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class SubmitSSHKeyRequest(_message.Message): + __slots__ = ("contestant_name", "team_id", "ssh_public_key") + CONTESTANT_NAME_FIELD_NUMBER: _ClassVar[int] + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + SSH_PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int] + contestant_name: str + team_id: str + ssh_public_key: str + def __init__(self, contestant_name: _Optional[str] = ..., team_id: _Optional[str] = ..., ssh_public_key: _Optional[str] = ...) -> None: ... + +class SubmitSSHKeyResponse(_message.Message): + __slots__ = ("key_fingerprint",) + KEY_FINGERPRINT_FIELD_NUMBER: _ClassVar[int] + key_fingerprint: str + def __init__(self, key_fingerprint: _Optional[str] = ...) -> None: ... + +class ListTeamsForKeySubmissionRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class TeamOption(_message.Message): + __slots__ = ("id", "name") + ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + id: str + name: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... + +class ListTeamsForKeySubmissionResponse(_message.Message): + __slots__ = ("teams",) + TEAMS_FIELD_NUMBER: _ClassVar[int] + teams: _containers.RepeatedCompositeFieldContainer[TeamOption] + def __init__(self, teams: _Optional[_Iterable[_Union[TeamOption, _Mapping]]] = ...) -> None: ... diff --git a/codenames/v1/types_pb2.py b/codenames/v1/types_pb2.py new file mode 100644 index 0000000..f57b25d --- /dev/null +++ b/codenames/v1/types_pb2.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: codenames/v1/types.proto +# Protobuf Python Version: 7.34.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 7, + 34, + 1, + '', + 'codenames/v1/types.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x63odenames/v1/types.proto\x12\x0c\x63odenames.v1\"b\n\x04\x43\x61rd\x12\x12\n\x04word\x18\x01 \x01(\tR\x04word\x12*\n\x04type\x18\x02 \x01(\x0e\x32\x16.codenames.v1.CardTypeR\x04type\x12\x1a\n\x08revealed\x18\x03 \x01(\x08R\x08revealed\"1\n\x05\x42oard\x12(\n\x05\x63\x61rds\x18\x01 \x03(\x0b\x32\x12.codenames.v1.CardR\x05\x63\x61rds\"0\n\x04\x43lue\x12\x12\n\x04word\x18\x01 \x01(\tR\x04word\x12\x14\n\x05\x63ount\x18\x02 \x01(\x05R\x05\x63ount\"\xa6\x05\n\x04Game\x12\x17\n\x07game_id\x18\x01 \x01(\tR\x06gameId\x12)\n\x05\x62oard\x18\x02 \x01(\x0b\x32\x13.codenames.v1.BoardR\x05\x62oard\x12\x35\n\x0c\x63urrent_team\x18\x03 \x01(\x0e\x32\x12.codenames.v1.TeamR\x0b\x63urrentTeam\x12-\n\x05state\x18\x04 \x01(\x0e\x32\x17.codenames.v1.GameStateR\x05state\x12$\n\x0ered_cards_left\x18\x05 \x01(\x05R\x0credCardsLeft\x12&\n\x0f\x62lue_cards_left\x18\x06 \x01(\x05R\rblueCardsLeft\x12:\n\x0c\x63urrent_clue\x18\x07 \x01(\x0b\x32\x12.codenames.v1.ClueH\x00R\x0b\x63urrentClue\x88\x01\x01\x12!\n\x0cguesses_made\x18\x08 \x01(\x05R\x0bguessesMade\x12/\n\x06winner\x18\t \x01(\x0e\x32\x12.codenames.v1.TeamH\x01R\x06winner\x88\x01\x01\x12:\n\nend_reason\x18\n \x01(\x0e\x32\x1b.codenames.v1.GameEndReasonR\tendReason\x12.\n\x13\x64isqualified_bot_id\x18\x0b \x01(\tR\x11\x64isqualifiedBotId\x12#\n\rred_spymaster\x18\x0c \x01(\tR\x0credSpymaster\x12\x1f\n\x0bred_guesser\x18\r \x01(\tR\nredGuesser\x12%\n\x0e\x62lue_spymaster\x18\x0e \x01(\tR\rblueSpymaster\x12!\n\x0c\x62lue_guesser\x18\x0f \x01(\tR\x0b\x62lueGuesserB\x0f\n\r_current_clueB\t\n\x07_winner\"\xd0\x02\n\x08GameMove\x12\x1f\n\x0bmove_number\x18\x01 \x01(\x05R\nmoveNumber\x12\x1f\n\x0b\x63lue_number\x18\x02 \x01(\x05R\nclueNumber\x12&\n\x04team\x18\x03 \x01(\x0e\x32\x12.codenames.v1.TeamR\x04team\x12!\n\x0cperformed_at\x18\x04 \x01(\tR\x0bperformedAt\x12\x38\n\nclue_given\x18\x05 \x01(\x0b\x32\x17.codenames.v1.ClueGivenH\x00R\tclueGiven\x12;\n\x0b\x63\x61rd_reveal\x18\x06 \x01(\x0b\x32\x18.codenames.v1.CardRevealH\x00R\ncardReveal\x12\x38\n\nturn_ended\x18\x07 \x01(\x0b\x32\x17.codenames.v1.TurnEndedH\x00R\tturnEndedB\x06\n\x04move\"3\n\tClueGiven\x12&\n\x04\x63lue\x18\x01 \x01(\x0b\x32\x12.codenames.v1.ClueR\x04\x63lue\"T\n\nCardReveal\x12\x1a\n\x08position\x18\x01 \x01(\x05R\x08position\x12*\n\x04type\x18\x02 \x01(\x0e\x32\x16.codenames.v1.CardTypeR\x04type\"\x0b\n\tTurnEnded\"\xbc\x03\n\x03\x42ot\x12\x15\n\x06\x62ot_id\x18\x01 \x01(\tR\x05\x62otId\x12!\n\x0cidentity_key\x18\x02 \x01(\tR\x0bidentityKey\x12\x19\n\x08\x62\x61se_url\x18\x03 \x01(\tR\x07\x62\x61seUrl\x12#\n\rregistered_at\x18\x04 \x01(\tR\x0cregisteredAt\x12&\n\x0flast_updated_at\x18\x05 \x01(\tR\rlastUpdatedAt\x12!\n\x0c\x61\x63tive_games\x18\x06 \x03(\tR\x0b\x61\x63tiveGames\x12\x1d\n\nelo_rating\x18\x07 \x01(\x05R\teloRating\x12!\n\x0cgames_played\x18\x08 \x01(\x05R\x0bgamesPlayed\x12\x12\n\x04wins\x18\t \x01(\x05R\x04wins\x12\x16\n\x06losses\x18\n \x01(\x05R\x06losses\x12\x17\n\x07team_id\x18\x0b \x01(\tR\x06teamId\x12\x12\n\x04port\x18\x0c \x01(\x05R\x04port\x12,\n\x05state\x18\r \x01(\x0e\x32\x16.codenames.v1.BotStateR\x05state\x12\'\n\x0funregistered_at\x18\x0e \x01(\tR\x0eunregisteredAt*9\n\x04Team\x12\x14\n\x10TEAM_UNSPECIFIED\x10\x00\x12\x0c\n\x08TEAM_RED\x10\x01\x12\r\n\tTEAM_BLUE\x10\x02*{\n\x08\x43\x61rdType\x12\x19\n\x15\x43\x41RD_TYPE_UNSPECIFIED\x10\x00\x12\x11\n\rCARD_TYPE_RED\x10\x01\x12\x12\n\x0e\x43\x41RD_TYPE_BLUE\x10\x02\x12\x15\n\x11\x43\x41RD_TYPE_NEUTRAL\x10\x03\x12\x16\n\x12\x43\x41RD_TYPE_ASSASSIN\x10\x04*p\n\tGameState\x12\x1a\n\x16GAME_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14GAME_STATE_SPYMASTER\x10\x01\x12\x17\n\x13GAME_STATE_GUESSING\x10\x02\x12\x14\n\x10GAME_STATE_ENDED\x10\x03*\xe7\x01\n\rGameEndReason\x12\x1f\n\x1bGAME_END_REASON_UNSPECIFIED\x10\x00\x12\x1a\n\x16GAME_END_REASON_NORMAL\x10\x01\x12$\n GAME_END_REASON_RED_DISQUALIFIED\x10\x02\x12%\n!GAME_END_REASON_BLUE_DISQUALIFIED\x10\x03\x12/\n+GAME_END_REASON_FAILED_GAME_START_NOTIFYING\x10\x04\x12\x1b\n\x17GAME_END_REASON_ABORTED\x10\x05*\xad\x01\n\x0bGuessResult\x12\x1c\n\x18GUESS_RESULT_UNSPECIFIED\x10\x00\x12\x18\n\x14GUESS_RESULT_CORRECT\x10\x01\x12\x16\n\x12GUESS_RESULT_WRONG\x10\x02\x12\x18\n\x14GUESS_RESULT_NEUTRAL\x10\x03\x12\x19\n\x15GUESS_RESULT_ASSASSIN\x10\x04\x12\x19\n\x15GUESS_RESULT_END_TURN\x10\x05*B\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\x12\n\x0eROLE_SPYMASTER\x10\x01\x12\x10\n\x0cROLE_GUESSER\x10\x02*x\n\x08\x42otState\x12\x19\n\x15\x42OT_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x42OT_STATE_REGISTERED\x10\x01\x12\x1b\n\x17\x42OT_STATE_UNREGISTERING\x10\x02\x12\x1a\n\x16\x42OT_STATE_UNREGISTERED\x10\x03\x42\x97\x01\n\x10\x63om.codenames.v1B\nTypesProtoP\x01Z&codenames/gen/codenames/v1;codenamesv1\xa2\x02\x03\x43XX\xaa\x02\x0c\x43odenames.V1\xca\x02\x0c\x43odenames\\V1\xe2\x02\x18\x43odenames\\V1\\GPBMetadata\xea\x02\rCodenames::V1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'codenames.v1.types_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\020com.codenames.v1B\nTypesProtoP\001Z&codenames/gen/codenames/v1;codenamesv1\242\002\003CXX\252\002\014Codenames.V1\312\002\014Codenames\\V1\342\002\030Codenames\\V1\\GPBMetadata\352\002\rCodenames::V1' + _globals['_TEAM']._serialized_start=1862 + _globals['_TEAM']._serialized_end=1919 + _globals['_CARDTYPE']._serialized_start=1921 + _globals['_CARDTYPE']._serialized_end=2044 + _globals['_GAMESTATE']._serialized_start=2046 + _globals['_GAMESTATE']._serialized_end=2158 + _globals['_GAMEENDREASON']._serialized_start=2161 + _globals['_GAMEENDREASON']._serialized_end=2392 + _globals['_GUESSRESULT']._serialized_start=2395 + _globals['_GUESSRESULT']._serialized_end=2568 + _globals['_ROLE']._serialized_start=2570 + _globals['_ROLE']._serialized_end=2636 + _globals['_BOTSTATE']._serialized_start=2638 + _globals['_BOTSTATE']._serialized_end=2758 + _globals['_CARD']._serialized_start=42 + _globals['_CARD']._serialized_end=140 + _globals['_BOARD']._serialized_start=142 + _globals['_BOARD']._serialized_end=191 + _globals['_CLUE']._serialized_start=193 + _globals['_CLUE']._serialized_end=241 + _globals['_GAME']._serialized_start=244 + _globals['_GAME']._serialized_end=922 + _globals['_GAMEMOVE']._serialized_start=925 + _globals['_GAMEMOVE']._serialized_end=1261 + _globals['_CLUEGIVEN']._serialized_start=1263 + _globals['_CLUEGIVEN']._serialized_end=1314 + _globals['_CARDREVEAL']._serialized_start=1316 + _globals['_CARDREVEAL']._serialized_end=1400 + _globals['_TURNENDED']._serialized_start=1402 + _globals['_TURNENDED']._serialized_end=1413 + _globals['_BOT']._serialized_start=1416 + _globals['_BOT']._serialized_end=1860 +# @@protoc_insertion_point(module_scope) diff --git a/codenames/v1/types_pb2.pyi b/codenames/v1/types_pb2.pyi new file mode 100644 index 0000000..1bc2f3c --- /dev/null +++ b/codenames/v1/types_pb2.pyi @@ -0,0 +1,217 @@ +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from collections.abc import Iterable as _Iterable, Mapping as _Mapping +from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class Team(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + TEAM_UNSPECIFIED: _ClassVar[Team] + TEAM_RED: _ClassVar[Team] + TEAM_BLUE: _ClassVar[Team] + +class CardType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + CARD_TYPE_UNSPECIFIED: _ClassVar[CardType] + CARD_TYPE_RED: _ClassVar[CardType] + CARD_TYPE_BLUE: _ClassVar[CardType] + CARD_TYPE_NEUTRAL: _ClassVar[CardType] + CARD_TYPE_ASSASSIN: _ClassVar[CardType] + +class GameState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + GAME_STATE_UNSPECIFIED: _ClassVar[GameState] + GAME_STATE_SPYMASTER: _ClassVar[GameState] + GAME_STATE_GUESSING: _ClassVar[GameState] + GAME_STATE_ENDED: _ClassVar[GameState] + +class GameEndReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + GAME_END_REASON_UNSPECIFIED: _ClassVar[GameEndReason] + GAME_END_REASON_NORMAL: _ClassVar[GameEndReason] + GAME_END_REASON_RED_DISQUALIFIED: _ClassVar[GameEndReason] + GAME_END_REASON_BLUE_DISQUALIFIED: _ClassVar[GameEndReason] + GAME_END_REASON_FAILED_GAME_START_NOTIFYING: _ClassVar[GameEndReason] + GAME_END_REASON_ABORTED: _ClassVar[GameEndReason] + +class GuessResult(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + GUESS_RESULT_UNSPECIFIED: _ClassVar[GuessResult] + GUESS_RESULT_CORRECT: _ClassVar[GuessResult] + GUESS_RESULT_WRONG: _ClassVar[GuessResult] + GUESS_RESULT_NEUTRAL: _ClassVar[GuessResult] + GUESS_RESULT_ASSASSIN: _ClassVar[GuessResult] + GUESS_RESULT_END_TURN: _ClassVar[GuessResult] + +class Role(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + ROLE_UNSPECIFIED: _ClassVar[Role] + ROLE_SPYMASTER: _ClassVar[Role] + ROLE_GUESSER: _ClassVar[Role] + +class BotState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + BOT_STATE_UNSPECIFIED: _ClassVar[BotState] + BOT_STATE_REGISTERED: _ClassVar[BotState] + BOT_STATE_UNREGISTERING: _ClassVar[BotState] + BOT_STATE_UNREGISTERED: _ClassVar[BotState] +TEAM_UNSPECIFIED: Team +TEAM_RED: Team +TEAM_BLUE: Team +CARD_TYPE_UNSPECIFIED: CardType +CARD_TYPE_RED: CardType +CARD_TYPE_BLUE: CardType +CARD_TYPE_NEUTRAL: CardType +CARD_TYPE_ASSASSIN: CardType +GAME_STATE_UNSPECIFIED: GameState +GAME_STATE_SPYMASTER: GameState +GAME_STATE_GUESSING: GameState +GAME_STATE_ENDED: GameState +GAME_END_REASON_UNSPECIFIED: GameEndReason +GAME_END_REASON_NORMAL: GameEndReason +GAME_END_REASON_RED_DISQUALIFIED: GameEndReason +GAME_END_REASON_BLUE_DISQUALIFIED: GameEndReason +GAME_END_REASON_FAILED_GAME_START_NOTIFYING: GameEndReason +GAME_END_REASON_ABORTED: GameEndReason +GUESS_RESULT_UNSPECIFIED: GuessResult +GUESS_RESULT_CORRECT: GuessResult +GUESS_RESULT_WRONG: GuessResult +GUESS_RESULT_NEUTRAL: GuessResult +GUESS_RESULT_ASSASSIN: GuessResult +GUESS_RESULT_END_TURN: GuessResult +ROLE_UNSPECIFIED: Role +ROLE_SPYMASTER: Role +ROLE_GUESSER: Role +BOT_STATE_UNSPECIFIED: BotState +BOT_STATE_REGISTERED: BotState +BOT_STATE_UNREGISTERING: BotState +BOT_STATE_UNREGISTERED: BotState + +class Card(_message.Message): + __slots__ = ("word", "type", "revealed") + WORD_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + REVEALED_FIELD_NUMBER: _ClassVar[int] + word: str + type: CardType + revealed: bool + def __init__(self, word: _Optional[str] = ..., type: _Optional[_Union[CardType, str]] = ..., revealed: _Optional[bool] = ...) -> None: ... + +class Board(_message.Message): + __slots__ = ("cards",) + CARDS_FIELD_NUMBER: _ClassVar[int] + cards: _containers.RepeatedCompositeFieldContainer[Card] + def __init__(self, cards: _Optional[_Iterable[_Union[Card, _Mapping]]] = ...) -> None: ... + +class Clue(_message.Message): + __slots__ = ("word", "count") + WORD_FIELD_NUMBER: _ClassVar[int] + COUNT_FIELD_NUMBER: _ClassVar[int] + word: str + count: int + def __init__(self, word: _Optional[str] = ..., count: _Optional[int] = ...) -> None: ... + +class Game(_message.Message): + __slots__ = ("game_id", "board", "current_team", "state", "red_cards_left", "blue_cards_left", "current_clue", "guesses_made", "winner", "end_reason", "disqualified_bot_id", "red_spymaster", "red_guesser", "blue_spymaster", "blue_guesser") + GAME_ID_FIELD_NUMBER: _ClassVar[int] + BOARD_FIELD_NUMBER: _ClassVar[int] + CURRENT_TEAM_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + RED_CARDS_LEFT_FIELD_NUMBER: _ClassVar[int] + BLUE_CARDS_LEFT_FIELD_NUMBER: _ClassVar[int] + CURRENT_CLUE_FIELD_NUMBER: _ClassVar[int] + GUESSES_MADE_FIELD_NUMBER: _ClassVar[int] + WINNER_FIELD_NUMBER: _ClassVar[int] + END_REASON_FIELD_NUMBER: _ClassVar[int] + DISQUALIFIED_BOT_ID_FIELD_NUMBER: _ClassVar[int] + RED_SPYMASTER_FIELD_NUMBER: _ClassVar[int] + RED_GUESSER_FIELD_NUMBER: _ClassVar[int] + BLUE_SPYMASTER_FIELD_NUMBER: _ClassVar[int] + BLUE_GUESSER_FIELD_NUMBER: _ClassVar[int] + game_id: str + board: Board + current_team: Team + state: GameState + red_cards_left: int + blue_cards_left: int + current_clue: Clue + guesses_made: int + winner: Team + end_reason: GameEndReason + disqualified_bot_id: str + red_spymaster: str + red_guesser: str + blue_spymaster: str + blue_guesser: str + def __init__(self, game_id: _Optional[str] = ..., board: _Optional[_Union[Board, _Mapping]] = ..., current_team: _Optional[_Union[Team, str]] = ..., state: _Optional[_Union[GameState, str]] = ..., red_cards_left: _Optional[int] = ..., blue_cards_left: _Optional[int] = ..., current_clue: _Optional[_Union[Clue, _Mapping]] = ..., guesses_made: _Optional[int] = ..., winner: _Optional[_Union[Team, str]] = ..., end_reason: _Optional[_Union[GameEndReason, str]] = ..., disqualified_bot_id: _Optional[str] = ..., red_spymaster: _Optional[str] = ..., red_guesser: _Optional[str] = ..., blue_spymaster: _Optional[str] = ..., blue_guesser: _Optional[str] = ...) -> None: ... + +class GameMove(_message.Message): + __slots__ = ("move_number", "clue_number", "team", "performed_at", "clue_given", "card_reveal", "turn_ended") + MOVE_NUMBER_FIELD_NUMBER: _ClassVar[int] + CLUE_NUMBER_FIELD_NUMBER: _ClassVar[int] + TEAM_FIELD_NUMBER: _ClassVar[int] + PERFORMED_AT_FIELD_NUMBER: _ClassVar[int] + CLUE_GIVEN_FIELD_NUMBER: _ClassVar[int] + CARD_REVEAL_FIELD_NUMBER: _ClassVar[int] + TURN_ENDED_FIELD_NUMBER: _ClassVar[int] + move_number: int + clue_number: int + team: Team + performed_at: str + clue_given: ClueGiven + card_reveal: CardReveal + turn_ended: TurnEnded + def __init__(self, move_number: _Optional[int] = ..., clue_number: _Optional[int] = ..., team: _Optional[_Union[Team, str]] = ..., performed_at: _Optional[str] = ..., clue_given: _Optional[_Union[ClueGiven, _Mapping]] = ..., card_reveal: _Optional[_Union[CardReveal, _Mapping]] = ..., turn_ended: _Optional[_Union[TurnEnded, _Mapping]] = ...) -> None: ... + +class ClueGiven(_message.Message): + __slots__ = ("clue",) + CLUE_FIELD_NUMBER: _ClassVar[int] + clue: Clue + def __init__(self, clue: _Optional[_Union[Clue, _Mapping]] = ...) -> None: ... + +class CardReveal(_message.Message): + __slots__ = ("position", "type") + POSITION_FIELD_NUMBER: _ClassVar[int] + TYPE_FIELD_NUMBER: _ClassVar[int] + position: int + type: CardType + def __init__(self, position: _Optional[int] = ..., type: _Optional[_Union[CardType, str]] = ...) -> None: ... + +class TurnEnded(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class Bot(_message.Message): + __slots__ = ("bot_id", "identity_key", "base_url", "registered_at", "last_updated_at", "active_games", "elo_rating", "games_played", "wins", "losses", "team_id", "port", "state", "unregistered_at") + BOT_ID_FIELD_NUMBER: _ClassVar[int] + IDENTITY_KEY_FIELD_NUMBER: _ClassVar[int] + BASE_URL_FIELD_NUMBER: _ClassVar[int] + REGISTERED_AT_FIELD_NUMBER: _ClassVar[int] + LAST_UPDATED_AT_FIELD_NUMBER: _ClassVar[int] + ACTIVE_GAMES_FIELD_NUMBER: _ClassVar[int] + ELO_RATING_FIELD_NUMBER: _ClassVar[int] + GAMES_PLAYED_FIELD_NUMBER: _ClassVar[int] + WINS_FIELD_NUMBER: _ClassVar[int] + LOSSES_FIELD_NUMBER: _ClassVar[int] + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + PORT_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + UNREGISTERED_AT_FIELD_NUMBER: _ClassVar[int] + bot_id: str + identity_key: str + base_url: str + registered_at: str + last_updated_at: str + active_games: _containers.RepeatedScalarFieldContainer[str] + elo_rating: int + games_played: int + wins: int + losses: int + team_id: str + port: int + state: BotState + unregistered_at: str + def __init__(self, bot_id: _Optional[str] = ..., identity_key: _Optional[str] = ..., base_url: _Optional[str] = ..., registered_at: _Optional[str] = ..., last_updated_at: _Optional[str] = ..., active_games: _Optional[_Iterable[str]] = ..., elo_rating: _Optional[int] = ..., games_played: _Optional[int] = ..., wins: _Optional[int] = ..., losses: _Optional[int] = ..., team_id: _Optional[str] = ..., port: _Optional[int] = ..., state: _Optional[_Union[BotState, str]] = ..., unregistered_at: _Optional[str] = ...) -> None: ... -- cgit v1.2.3