
    ~i4              	          U d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlmZmZm	Z	m
Z
mZ d dlZddlmZmZ ddlmZmZmZ ddlmZ  ej        e          Zej        ed	<   d
edefdZdej        de
e         fdZdej        de fdZ!	 ddej"        de
e         defdZ# ed          Z$dedede	de$f         de$fdZ%dedede	dee$         f         de$fdZ&dS )    N)datetime	timedelta)random)Any	AwaitableCallableOptionalTypeVar   )INITIAL_RETRY_DELAYMAX_RETRY_DELAY)ArkAPIConnectionErrorArkAPIStatusErrorArkAPITimeoutError)ModelBreakerlogretry_timesreturnc                     t          | t          t          z            }t          t          t          d|          z  t                    }ddt	                      z  z
  }||z  }|dk    r|ndS )N      g      ?r   )minr   r   powr   )r   	nbRetriessleep_secondsjittertimeouts        w/root/.openclaw/workspace/.venvs/ark-sdk/lib/python3.11/site-packages/volcenginesdkarkruntime/resources/batch/_utils.py_calculate_retry_timeoutr      sd    K3F!FGGI+c!Y.?.??QQM Ff$Gll77)    responsec                     | j                             d          }|#|                                rt          |          S d S )NzRetry-After)headersgetisdigitint)r!   retry_afters     r   _get_retry_afterr(      sE    "&&}55K   	${###4r    c                 n    | j         dk    rdS | j         dk    rdS | j         dk    rdS | j         dk    rdS dS )Ni  Ti  i  i  F)status_code)r!   s    r   _should_retryr+   "   sY    s""t s""t s""t s""t5r    clientr   c                 b   || j         }d}t          |t          j                  r|j        }n_t          |t
                    r|}nGt          |t                    r|}n/t          d                    t          |                              t          j                    t          |          z   S )Nr   z timeout type {} is not supportedseconds)r   
isinstancehttpxTimeoutreadfloatr&   	TypeErrorformattyper   nowr   )r,   r   timeoutSecondss      r   get_request_last_timer:   6   s     .N'5=)) R 	GU	#	# R 	GS	!	! R :AA$w--PPQQQ<>>In=====r    Rdeadlinebreakerfunc.c                    d}	 |                                  t          j                    | k    rt          d d           	  ||i |S # t          $ rz t          |          }t                              d||           t          j                    t          |          z   | k    rt          d d           t          j
        |           Y nzt          $ rn}t          |j                  }t                              d|||           ||dk    r|                    |           t          |j                  s|Y d }~nd }~ww xY w|dz   }HNr   Tz>Retry due to connection error, wait time: %is, retry times: %ir.   z>Got status error, retry after: %is, retry times: %i, error: %sr   )waitr   r8   r   r   r   r   debugr   timesleepr   r(   r!   resetr+   	r<   r=   r>   argskwargsr   waitTimeerrr'   s	            r   with_batch_retryrK   J   s    K&<>>H$$$T4000	4(((($ 
	! 
	! 
	!/<<HIIP   |~~	( ; ; ;;hFF(t444Jx       	 	 	*3<88KIIP	   &;??k*** .. 	    	 "Ao?&s     A BE	EA$D==Ec                   K   d}	 |                                  d {V  t          j                    | k    rt          d d           	  ||i | d {V S # t          $ r t          |          }t                              d||           t          j                    t          |          z   | k    rt          d d           t          j
        |           d {V  Y nzt          $ rn}t          |j                  }t                              d|||           ||dk    r|                    |           t          |j                  s|Y d }~nd }~ww xY w|dz   }Zr@   )	asyncwaitr   r8   r   r   r   r   rB   r   asynciorD   r   r(   r!   rE   r+   rF   s	            r   async_with_batch_retryrO   t   s      K&!!!!!!!!!<>>H$$$T4000	t.v.........$ 
	* 
	* 
	*/<<HIIP   |~~	( ; ; ;;hFF(t444-)))))))))))  	 	 	*3<88KIIP	   &;??k*** .. 	    	 "Ao?&s    A BE	E(A$EE)N)'rN   loggingrC   r   r   r   typingr   r   r   r	   r
   r1   
_constantsr   r   _exceptionsr   r   r   _utils._model_breakerr   	getLogger__name__r   Logger__annotations__r&   r4   r   Responser(   boolr+   Clientr:   r;   rK   rO    r    r   <module>r]      s1      ( ( ( ( ( ( ( (       > > > > > > > > > > > > > >  > > > > > > > > W W W W W W W W W W 1 1 1 1 1 1'g'11W^ 1 1 1*# *% * * * *u~ (3-    EN t    * 48> >L>#+C=>> > > >" GCLL'&'&'& 36
'& '& '& '& '&T'&'&'& 3	!$
%'& '& '& '& '& '& '&r    