from typing import Any from fakeredis import _msgs as msgs from fakeredis._commands import command, DbIndex from fakeredis._helpers import SimpleError, OK, SimpleString, Database PONG = SimpleString(b"PONG") class ConnectionCommandsMixin: _server: Any _db: Database _db_num: int _pubsub: int # Connection commands # TODO: auth, quit @command((bytes,)) def echo(self, message): return message @command((), (bytes,)) def ping(self, *args): if len(args) > 1: msg = msgs.WRONG_ARGS_MSG6.format("ping") raise SimpleError(msg) if self._pubsub: return [b"pong", args[0] if args else b""] else: return args[0] if args else PONG @command((DbIndex,)) def select(self, index): self._db = self._server.dbs[index] self._db_num = index return OK