Ë
    ÿÿæi„  ã                  óÆ   — U d dl mZ d dlZd dlZd dlmZ d dlmZ  ej                  e	«      Z
erd dlmZ d dlmZ  G d„ d«      Zerd d	lmZ  e ed
«      «      Zded<   yy)é    )ÚannotationsN)ÚTYPE_CHECKING)ÚArtifactNotFound)ÚBinaryIO)ÚArtifactStorec                  óZ   — e Zd ZdZdddddœ	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd	„Zdd
„Zdd„Zy)ÚBackoffaÜ  An artifact store's middleware for exponential backoff.

    Example:
       .. code-block:: python

           import optuna
           from optuna.artifacts import upload_artifact
           from optuna.artifacts import Boto3ArtifactStore
           from optuna.artifacts import Backoff


           artifact_store = Backoff(Boto3ArtifactStore("my-bucket"))


           def objective(trial: optuna.Trial) -> float:
               ... = trial.suggest_float("x", -10, 10)
               file_path = generate_example(...)
               upload_artifact(
                   artifact_store=artifact_store,
                   file_path=file_path,
                   study_or_trial=trial,
               )
               return ...
    é
   é   gš™™™™™¹?é   )Úmax_retriesÚ
multiplierÚ	min_delayÚ	max_delayc               ó‚   — || _         |dkD  sJ ‚|dkD  sJ ‚|dkD  sJ ‚||kD  sJ ‚|| _        || _        || _        || _        y )Nr   )Ú_backendÚ_max_retriesÚ_multiplierÚ
_min_delayÚ
_max_delay)ÚselfÚbackendr   r   r   r   s         ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/optuna/artifacts/_backoff.pyÚ__init__zBackoff.__init__-   s[   € ð  ˆŒØ˜QŠÐˆØ˜AŠ~Ðˆ~Ø˜1Š}Ðˆ}Ø˜9Ò$Ð$Ð$Ø'ˆÔØ%ˆÔØ#ˆŒØ#ˆ�ó    c                ób   — t        | j                  | j                  |z  z  | j                  «      S )N)Úminr   r   r   )r   Ún_retrys     r   Ú_get_sleep_secszBackoff._get_sleep_secsB   s'   € Ü�4—?‘? T×%5Ñ%5°wÑ%>Ñ>ÀÇÁÓPÐPr   c                óf  — t        | j                  «      D ]  }	 | j                  j                  |«      c S  J d«       ‚# t        $ r ‚ t
        $ r:}|| j                  dz
  k(  r‚ t        j                  d|› d|› �|¬«       Y d }~nd }~ww xY wt        j                  | j                  |«      «       Œ�)Né   úFailed to open artifact=ú	 n_retry=©Úexc_infozmust not reach here)Úranger   r   Úopen_readerr   Ú	ExceptionÚ_loggerÚerrorÚtimeÚsleepr   ©r   Úartifact_idÚiÚes       r   r'   zBackoff.open_readerE   s±   € Ü�t×(Ñ(Ö)ˆAðdØ—}‘}×0Ñ0°Ó=Ò=ð *ð 	,Ð+Ó+ˆuøô $ò ØÜò dØ˜×)Ñ)¨AÑ-Ò-Øä—M‘MÐ$<¸[¸MÈÐSTÐRUÐ"VÐab�M×cÑcûð	dúô
 �J‰J�t×+Ñ+¨AÓ.Õ/s   š?¿BÁ0BÂBc                ó~  — t        | j                  «      D ]   }	 | j                  j                  ||«        y  y # t        $ r ‚ t
        $ r:}|| j                  dz
  k(  r‚ t        j                  d|› d|› �|¬«       Y d }~nd }~ww xY w|j                  d«       t        j                  | j                  |«      «       Œ©)Nr!   r"   r#   r$   r   )r&   r   r   Úwriter   r(   r)   r*   Úseekr+   r,   r   )r   r.   Úcontent_bodyr/   r0   s        r   r2   zBackoff.writeS   s´   € Ü�t×(Ñ(Ö)ˆAð	dØ—‘×#Ñ# K°Ô>Ùñ *øô $ò ØÜò dØ˜×)Ñ)¨AÑ-Ò-Øä—M‘MÐ$<¸[¸MÈÐSTÐRUÐ"VÐab�M×cÑcûð	dúð
 ×Ñ˜aÔ Ü�J‰J�t×+Ñ+¨AÓ.Õ/s   š:ºBÁ0BÂBc                óP  — t        | j                  «      D ]B  }	 | j                  j                  |«       t        j                  | j                  |«      «       ŒD y # t        $ r ‚ t
        $ r7}|| j                  dz
  k(  r‚ t        j                  d|› �|¬«       Y d }~Œkd }~ww xY w)Nr!   zFailed to delete artifact=r$   )r&   r   r   Úremover   r(   r)   r*   r+   r,   r   r-   s       r   r6   zBackoff.removeb   s™   € Ü�t×(Ñ(Ö)ˆAðZØ—‘×$Ñ$ [Ô1ô �J‰J�t×+Ñ+¨AÓ.Õ/ñ *øô $ò ØÜò ZØ˜×)Ñ)¨AÑ-Ò-Øä—M‘MÐ$>¸{¸mÐ"LÐWX�M×YÑYûð	Zús   šAÁB%Á.-B Â B%N)r   r   r   Úintr   Úfloatr   r8   r   r8   ÚreturnÚNone)r   r7   r9   r8   )r.   Ústrr9   r   )r.   r;   r4   r   r9   r:   )r.   r;   r9   r:   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r'   r2   r6   © r   r   r	   r	      si   „ ñð: ØØØñ$àð$ð ð	$ð
 ð$ð ð$ð ð$ð 
ó$ó*Qó,ó0ô0r   r	   )ÚFileSystemArtifactStoreÚ.r   Ú_)Ú
__future__r   Úloggingr+   Útypingr   Úoptuna.artifacts.exceptionsr   Ú	getLoggerr<   r)   r   Úoptuna.artifacts._protocolr   r	   Úoptuna.artifactsrA   rC   Ú__annotations__r@   r   r   Ú<module>rL      sd   ðÞ "ã Û Ý  å 8ð ˆ'×
Ñ
˜HÓ
%€ñ Ýå8÷Z0ñ Z0ñz õ 9áÑ6°sÓ;Ó<€A€}Ô<ð r   