Ë
    §ŒjQ  ã                   óÊ   — d dl mZmZ d dlmZmZ d dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ  G d„ d	e«      Z G d
„ de«      Z G d„ de«      Ze	eeef      Z G d„ dee«      Zy)é    )ÚABCÚabstractmethod)ÚOptionalÚUnionN)ÚRedisCluster)ÚWeightedList)ÚCircuitBreaker)ÚNumberc                   óÀ   — e Zd Zeedefd„«       «       Zej                  edefd„«       «       Zeedee	   fd„«       «       Z
e
j                  edee	   fd„«       «       Z
y)	ÚAbstractDatabaseÚreturnc                  ó   — y)z]The weight of this database in compare to others. Used to determine the database failover to.N© ©Úselfs    ú`/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/redis/multidb/database.pyÚweightzAbstractDatabase.weight   ó   € ð 	ó    r   c                  ó   — y)z5Set the weight of this database in compare to others.Nr   ©r   r   s     r   r   zAbstractDatabase.weight   r   r   c                  ó   — y)z6Health check URL associated with the current database.Nr   r   s    r   Úhealth_check_urlz!AbstractDatabase.health_check_url   r   r   r   c                  ó   — y)z>Set the health check URL associated with the current database.Nr   ©r   r   s     r   r   z!AbstractDatabase.health_check_url   r   r   N)Ú__name__Ú
__module__Ú__qualname__Úpropertyr   Úfloatr   Úsetterr   Ústrr   r   r   r   r   r      sž   „ ØØð˜ò ó ó ðð ‡]�]Øð˜Uò ó ó ðð Øð (¨3¡-ò ó ó ðð ×ÑØð°¸#±ò ó ó ñr   r   c                   ó²   — e Zd Z	 d
dedee   fd„Zedefd„«       Zej                  defd„«       Zedee   fd„«       Z
e
j                  dee   fd	„«       Z
y)ÚBaseDatabaseNr   r   c                 ó    — || _         || _        y ©N)Ú_weightÚ_health_check_url)r   r   r   s      r   Ú__init__zBaseDatabase.__init__&   s   € ð
 ˆŒØ!1ˆÕr   r   c                 ó   — | j                   S r&   ©r'   r   s    r   r   zBaseDatabase.weight.   ó   € à�|‰|Ðr   c                 ó   — || _         y r&   r+   r   s     r   r   zBaseDatabase.weight2   ó	   € àˆ�r   c                 ó   — | j                   S r&   ©r(   r   s    r   r   zBaseDatabase.health_check_url6   s   € à×%Ñ%Ð%r   c                 ó   — || _         y r&   r0   r   s     r   r   zBaseDatabase.health_check_url:   s
   € à!1ˆÕr   r&   )r   r   r   r    r   r"   r)   r   r   r!   r   r   r   r   r$   r$   %   s    „ ð +/ñ2àð2ð # 3™-ó2ð ð˜ò ó ðð ‡]�]ð˜Uò ó ðð ð& (¨3¡-ò &ó ð&ð ×Ñð2°¸#±ò 2ó ñ2r   r$   c                   óô   — e Zd ZdZeedeej                  e	f   fd„«       «       Z
e
j                  edeej                  e	f   fd„«       «       Z
eedefd„«       «       Zej                  edefd„«       «       Zy	)
ÚSyncDatabasez5Database with an underlying synchronous redis client.r   c                  ó   — y)zThe underlying redis client.Nr   r   s    r   ÚclientzSyncDatabase.clientB   r   r   r5   c                  ó   — y)z Set the underlying redis client.Nr   ©r   r5   s     r   r5   zSyncDatabase.clientH   r   r   c                  ó   — y)z)Circuit breaker for the current database.Nr   r   s    r   ÚcircuitzSyncDatabase.circuitN   r   r   r9   c                  ó   — y)z1Set the circuit breaker for the current database.Nr   ©r   r9   s     r   r9   zSyncDatabase.circuitT   r   r   N)r   r   r   Ú__doc__r   r   r   ÚredisÚRedisr   r5   r!   r	   r9   r   r   r   r3   r3   ?   s³   „ Ù?àØð˜˜eŸk™k¨<Ð7Ñ8ò ó ó ðð ‡]�]Øð˜U 5§;¡;°Ð#<Ñ=ò ó ó ðð Øð˜ò ó ó ðð ‡^�^Øð˜~ò ó ó ñr   r3   c            
       ó  ‡ — e Zd Z	 ddeej
                  ef   dedede	e
   fˆ fd„Zedeej
                  ef   fd„«       Zej                  deej
                  ef   fd„«       Zedefd	„«       Zej                  defd
„«       Zd„ Zˆ xZS )ÚDatabaser5   r9   r   r   c                 ód   •— || _         || _        | | j                  _        t        ‰| �  ||«       y)at  
        Initialize a new Database instance.

        Args:
            client: Underlying Redis client instance for database operations
            circuit: Circuit breaker for handling database failures
            weight: Weight value used for database failover prioritization
            health_check_url: Health check URL associated with the current database
        N)Ú_clientÚ_cbÚdatabaseÚsuperr)   )r   r5   r9   r   r   Ú	__class__s        €r   r)   zDatabase.__init___   s/   ø€ ð  ˆŒØˆŒØ ˆ�‰ÔÜ‰Ñ˜Ð!1Õ2r   r   c                 ó   — | j                   S r&   ©rB   r   s    r   r5   zDatabase.clientt   r,   r   c                 ó   — || _         y r&   rH   r7   s     r   r5   zDatabase.clientx   r.   r   c                 ó   — | j                   S r&   ©rC   r   s    r   r9   zDatabase.circuit|   s   € à�x‰xˆr   c                 ó   — || _         y r&   rK   r;   s     r   r9   zDatabase.circuit€   s	   € àˆ�r   c                 ó<   — d| j                   › d| j                  › d�S )NzDatabase(client=z	, weight=Ú))r5   r   r   s    r   Ú__repr__zDatabase.__repr__„   s   € Ø! $§+¡+ ¨i¸¿¹°}ÀAÐFÐFr   r&   )r   r   r   r   r=   r>   r   r	   r    r   r"   r)   r   r5   r!   r9   rO   Ú__classcell__)rF   s   @r   r@   r@   ^   sÛ   ø„ ð +/ñ3à�e—k‘k <Ð/Ñ0ð3ð  ð3ð ð	3ð
 # 3™-õ3ð* ð˜˜eŸk™k¨<Ð7Ñ8ò ó ðð ‡]�]ð˜U 5§;¡;°Ð#<Ñ=ò ó ðð ð˜ò ó ðð ‡^�^ð˜~ò ó ðöGr   r@   )Úabcr   r   Útypingr   r   r=   r   Úredis.data_structurer   Úredis.multidb.circuitr	   Úredis.typingr
   r   r$   r3   ÚtupleÚ	Databasesr@   r   r   r   Ú<module>rX      sf   ðß #ß "ã Ý Ý -Ý 0Ý ô�sô ô42Ð#ô 2ô4Ð#ô ð8 ˜˜|¨VÐ3Ñ4Ñ5€	ô'Gˆ|˜\õ 'Gr   