
    ~i                     ^    d dl Z d dlZd dlZd dlZ G d de          Z G d de          ZdS )    Nc                   D    e Zd Zd ZdeddfdZdeddfdZdedefdZdS )	_QuerySetc                     t                      | _        t                      | _        t	          j                    | _        d S N)list_itemsdict_index	threadingLock_lockselfs    v/root/.openclaw/workspace/.venvs/ark-sdk/lib/python3.11/site-packages/volcenginesdkarkruntime/_utils/_model_breaker.py__init__z_QuerySet.__init__   s+    ffff^%%


    itemreturnNc                     | j         5  || j        v r	 d d d            d S | j                            |           t	          | j                  dz
  | j        |<   d d d            d S # 1 swxY w Y   d S N   )r   r
   r   appendlenr   r   s     r   addz_QuerySet.add   s    Z 	5 	5t{""	5 	5 	5 	5 	5 	5 	5 	5 Kt$$$ #DK 0 01 4DK	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A&9A&&A*-A*c                 $   | j         5  || j        vr	 d d d            d S | j        |         }| j        d         | j        |<   || j        | j        d         <   | j                                         | j        |= d d d            d S # 1 swxY w Y   d S )N)r   r
   r   pop)r   r   indexs      r   removez_QuerySet.remove    s    Z 	" 	"4;&&	" 	" 	" 	" 	" 	" 	" 	" K%E!%RDK+0DKB(KOOD!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   BABB	B	c                 ^    | j         5  | j        |         cd d d            S # 1 swxY w Y   d S r   )r   r
   r   s     r   queryz_QuerySet.query+   sx    Z 	% 	%;t$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   "&&)__name__
__module____qualname__r   intr   r    r"    r   r   r   r      s        & & &
5 5 5 5 5 5	"3 	"4 	" 	" 	" 	"%# %# % % % % % %r   r   c                   l    e Zd Zd ZdedefdZdefdZdefdZ	deddfdZ
d	eddfd
ZddZddZdS )ModelBreakerc                 \    t          j                    | _        t                      | _        d S r   )timeperf_counter_allow_timer   _waitersr   s    r   r   zModelBreaker.__init__1   s"    ,..!r   idr   c                     t          j                    }|| j        k    rdS || j        z
  dk    rdS | j                            |          d|| j        z
  z  k     S )Nr   
   T   )r+   r,   r-   r.   r"   )r   r/   curs      r   _allowzModelBreaker._allow6   sc    !!$"""1!!B&&4}""2&&sT5E/E)FFFr   c                 X    | j         t          j                    z
  }t          |d          S r   )r-   r+   r,   max)r   allow_durations     r   _get_allowed_durationz"ModelBreaker._get_allowed_durationA   s*    )D,=,?,?? >1%%%r   c                 j    t          j                    j        }| j                            |           |S r   )uuiduuid4r&   r.   r   r   r/   s     r   _acquirezModelBreaker._acquireH   s+    Z\\"	r   Nc                 :    | j                             |           d S r   )r.   r    r<   s     r   _releasezModelBreaker._releaseM   s    R     r   durationc                 <    t          j                    |z   | _        d S r   )r+   r,   r-   )r   r@   s     r   resetzModelBreaker.resetP   s    ,..9r   c                     |                                  }|                     |          s;t          j        |                                            |                     |          ;|                     |           d S r   )r=   r4   r+   sleepr8   r?   r<   s     r   waitzModelBreaker.waitT   si    ]]__++b// 	5Jt1133444 ++b// 	5br   c                   K   |                                  }|                     |          sAt          j        |                                            d {V  |                     |          A|                     |           d S r   )r=   r4   asynciorD   r8   r?   r<   s     r   	asyncwaitzModelBreaker.asyncwaitZ   s      ]]__++b// 	>- : : < <========= ++b// 	>br   )r   N)r#   r$   r%   r   r&   boolr4   floatr8   r=   r?   rB   rE   rH   r'   r   r   r)   r)   0   s        $ $ $
	G 	G 	G 	G 	G 	G&u & & & &#    
!3 !4 ! ! ! !:e : : : : :        r   r)   )rG   r+   r:   r   objectr   r)   r'   r   r   <module>rL      s          % % % % % % % %<. . . . .6 . . . . .r   