openlimit icon indicating copy to clipboard operation
openlimit copied to clipboard

TypeError: duplicate base class TimeoutError (Python >=3.11)

Open espdev opened this issue 1 year ago • 3 comments

Hello,

The package does not work on Python >=3.11

>>> from openlimit import EmbeddingRateLimiter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lib/python3.11/site-packages/openlimit/__init__.py", line 1, in <module>
    from openlimit.rate_limiters import ChatRateLimiter, CompletionRateLimiter, EmbeddingRateLimiter
  File "lib/python3.11/site-packages/openlimit/rate_limiters.py", line 6, in <module>
    from openlimit.buckets import Bucket
  File "lib/python3.11/site-packages/openlimit/buckets/__init__.py", line 1, in <module>
    from openlimit.buckets.redis_bucket import RedisBucket
  File "lib/python3.11/site-packages/openlimit/buckets/redis_bucket.py", line 6, in <module>
    import aioredis
  File "lib/python3.11/site-packages/aioredis/__init__.py", line 1, in <module>
    from aioredis.client import Redis, StrictRedis
  File "lib/python3.11/site-packages/aioredis/client.py", line 32, in <module>
    from aioredis.connection import (
  File "lib/python3.11/site-packages/aioredis/connection.py", line 33, in <module>
    from .exceptions import (
  File "lib/python3.11/site-packages/aioredis/exceptions.py", line 14, in <module>
    class TimeoutError(asyncio.TimeoutError, builtins.TimeoutError, RedisError):
TypeError: duplicate base class TimeoutError

Please use redis.asyncio instead of the abandoned aioredis dependency.

Aioredis is now in redis-py 4.2.0rc1+

Also, it would be nice to have redis dependency be optional in extras:

pip install openlimit[redis]

espdev avatar Dec 21 '23 15:12 espdev