
    -ji                       S SK Jr  S SKJr  S SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S S	KJr  \" 5        rS SKrSSS5        \" S
5       " S S\\5      5       r\	" SSSS9 " S S\5      5       rg! , (       d  f       N<= f)    )annotations)	GeneratorN)Any)deprecated_class)experimental_class)
try_import)BaseJournalBackend)BaseJournalSnapshotz3.1.0c                  l    \ rS rSrSrSSS jjrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSrg)JournalRedisBackend   a  Redis storage class for Journal log backend.

Args:
    url:
        URL of the redis storage, password and db are optional.
        (ie: ``redis://localhost:6379``)
    use_cluster:
        Flag whether you use the Redis cluster. If this is :obj:`False`, it is assumed that
        you use the standalone Redis server and ensured that a write operation is atomic. This
        provides the consistency of the preserved logs. If this is :obj:`True`, it is assumed
        that you use the Redis cluster and not ensured that a write operation is atomic. This
        means the preserved logs can be inconsistent due to network errors, and may
        cause errors.
    prefix:
        Prefix of the preserved key of logs. This is useful when multiple users work on one
        Redis server.
c                    [         R                  5         Xl        [        R                  R                  U5      U l        X l        X0l        g N)	_importscheck_urlredisRedisfrom_url_redis_use_cluster_prefix)selfurluse_clusterprefixs       X/home/james-whalen/.local/lib/python3.13/site-packages/optuna/storages/journal/_redis.py__init__JournalRedisBackend.__init__'   s2    	kk**3/'    c                @    U R                   R                  5       nUS	 U$ )Nr   )__dict__copyr   states     r   __getstate__ JournalRedisBackend.__getstate__/   s     ""$(Or    c                    U R                   R                  U5        [        R                  R	                  U R
                  5      U l        g r   )r"   updater   r   r   r   r   r$   s     r   __setstate__ JournalRedisBackend.__setstate__4   s.    U#kk**4995r    c              #    #    U R                   R                  U R                   S35      nUc  g [        U5      n[	        XS-   5       Ht  nSn U R                   R                  U R                  U5      5      nUb  O'[        R                  " U5        [        US-  S5      nMU   [        R                  " U5      v   Mv     g ! [        R                   a  nXC:w  a  Ue S nAM  S nAff = f7f)N:log_number   g?   
   )r   getr   intrange_key_log_idtimesleepminjsonloadsJSONDecodeError)r   log_number_frommax_log_number_bytesmax_log_number
log_number
sleep_secslogerrs           r   	read_logsJournalRedisBackend.read_logs8   s     #{{$,,{/KL'12!1CDJJkkood&6&6z&BC?

:& a4
 jjo% E '' /I 0s0   B!C*$C<C*C'C"C*"C''C*c           	        U R                   R                  U R                   S3S5        U H  nU R                  (       d>  U R                   R	                  SSU R                  [
        R                  " U5      5        MR  U R                   R                  U R                   S3S5      nU R                   R                  U R                  U5      [
        R                  " U5      5        M     g )Nr-   zlocal i = redis.call('incr', string.format('%s:log_number', ARGV[1])) redis.call('set', string.format('%s:log:%d', ARGV[1], i), ARGV[2])r   r.   )
r   setnxr   r   evalr8   dumpsincrsetr4   )r   logsr@   r>   s       r   append_logsJournalRedisBackend.append_logsL   s    T\\N+6;C$$  YLLJJsO "[[--k.JAN
 0 0 <djjoN r    c                V    U R                   R                  U R                   S3U5        g Nz	:snapshot)r   rJ   r   )r   snapshots     r   save_snapshot!JournalRedisBackend.save_snapshot[   s    4<<.	2H=r    c                V    U R                   R                  U R                   S35      nU$ rO   )r   r1   r   )r   snapshot_bytess     r   load_snapshot!JournalRedisBackend.load_snapshot^   s%    DLL>)CDr    c                $    U R                    SU 3$ )Nz:log:)r   )r   r>   s     r   r4   JournalRedisBackend._key_log_idb   s    ,,uZL11r    )r   r   r   r   N)F )r   strr   boolr   rZ   returnNone)r\   dict[Any, Any])r%   r^   r\   r]   )r;   r2   r\   z%Generator[dict[str, Any], None, None])rK   zlist[dict[str, Any]]r\   r]   )rP   bytesr\   r]   )r\   zbytes | None)r>   r2   r\   rZ   )__name__
__module____qualname____firstlineno____doc__r   r&   r*   rB   rL   rQ   rU   r4   __static_attributes__ r    r   r   r      s0    $
6(O>2r    r   z4.0.0z6.0.0zBUse :class:`~optuna.storages.journal.JournalRedisBackend` instead.)textc                      \ rS rSrSrg)JournalRedisStoragef   rf   N)r`   ra   rb   rc   re   rf   r    r   ri   ri   f   s     	r    ri   )
__future__r   collections.abcr   r8   r5   typingr   optuna._deprecatedr   optuna._experimentalr   optuna._importsr   optuna.storages.journal._baser	   r
   r   r   r   ri   rf   r    r   <module>rr      s    " %    / 3 & < = \X  GO2,.A O2 O2d W_	- 		u \s    A;;
B	