From 4e9cc015e32ef305429ff9dfa200e28dd63e6663 Mon Sep 17 00:00:00 2001 From: Chayim Date: Wed, 17 Nov 2021 11:55:03 +0200 Subject: Removing command on initial connections (#1722) --- redis/client.py | 18 ------------------ redis/commands/redismodules.py | 13 ------------- tests/conftest.py | 3 ++- 3 files changed, 2 insertions(+), 32 deletions(-) diff --git a/redis/client.py b/redis/client.py index 753770e..3230043 100755 --- a/redis/client.py +++ b/redis/client.py @@ -890,12 +890,6 @@ class Redis(RedisModuleCommands, CoreCommands, object): self.response_callbacks = CaseInsensitiveDict( self.__class__.RESPONSE_CALLBACKS) - # preload our class with the available redis commands - try: - self.__redis_commands__() - except RedisError: - pass - def __repr__(self): return "%s<%s>" % (type(self).__name__, repr(self.connection_pool)) @@ -927,18 +921,6 @@ class Redis(RedisModuleCommands, CoreCommands, object): """ setattr(self, funcname, func) - def __redis_commands__(self): - """Store the list of available commands, for our redis instance.""" - cmds = getattr(self, '__commands__', None) - if cmds is not None: - return cmds - try: - cmds = [c[0].upper().decode() for c in self.command()] - except AttributeError: # if encoded - cmds = [c[0].upper() for c in self.command()] - self.__commands__ = cmds - return cmds - def pipeline(self, transaction=True, shard_hint=None): """ Return a new pipeline object that can queue multiple commands for diff --git a/redis/commands/redismodules.py b/redis/commands/redismodules.py index b3cbee1..5f629fb 100644 --- a/redis/commands/redismodules.py +++ b/redis/commands/redismodules.py @@ -1,5 +1,4 @@ from json import JSONEncoder, JSONDecoder -from redis.exceptions import ModuleError class RedisModuleCommands: @@ -10,10 +9,6 @@ class RedisModuleCommands: def json(self, encoder=JSONEncoder(), decoder=JSONDecoder()): """Access the json namespace, providing support for redis json. """ - if 'JSON.SET' not in self.__commands__: - raise ModuleError("redisjson is not loaded in redis. " - "For more information visit " - "https://redisjson.io/") from .json import JSON jj = JSON( @@ -25,10 +20,6 @@ class RedisModuleCommands: def ft(self, index_name="idx"): """Access the search namespace, providing support for redis search. """ - if 'FT.INFO' not in self.__commands__: - raise ModuleError("redisearch is not loaded in redis. " - "For more information visit " - "https://redisearch.io/") from .search import Search s = Search(client=self, index_name=index_name) @@ -38,10 +29,6 @@ class RedisModuleCommands: """Access the timeseries namespace, providing support for redis timeseries data. """ - if 'TS.INFO' not in self.__commands__: - raise ModuleError("reditimeseries is not loaded in redis. " - "For more information visit " - "https://redistimeseries.io/") from .timeseries import TimeSeries s = TimeSeries(client=self) diff --git a/tests/conftest.py b/tests/conftest.py index 31d3fbd..9504333 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -31,7 +31,8 @@ def pytest_addoption(parser): def _get_info(redis_url): client = redis.Redis.from_url(redis_url) info = client.info() - if 'dping' in client.__commands__: + cmds = [c[0].upper().decode() for c in client.command()] + if 'dping' in cmds: info["enterprise"] = True else: info["enterprise"] = False -- cgit v1.2.1