
    E#i1                     4    S SK r S SKrS SKJr   " S S5      rg)    N)timec                   .    \ rS rSrSS jrS rSS jrSrg)	Throttler   Nc                     X l         SSSSSSS.U l        U R                  R                  U5        [        R                  " 5       U l        SU l        g )Ng      ?gMbP?r   i  )
refillRatedelaycosttokensmaxCapacitycapacityF)loopconfigupdatecollectionsdequequeuerunning)selfr   r   s      [/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/async_support/base/throttler.py__init__Throttler.__init__   sM    	
 	6" &&(
    c                   #    [        5       S-  nU R                  (       Gaf  U R                  S   u  p#Uc  U R                  S   OUnU R                  S   S:  a  U R                  S==   U-  ss'   UR	                  5       (       d  UR                  S 5        U R                  R                  5         [        R                  " S5      I S h  vN   [        U R                  5      S:X  a  SU l        O[        R                  " U R                  S   5      I S h  vN   [        5       S-  nXA-
  nUn[        U R                  S   XPR                  S   -  -   U R                  S   5      U R                  S'   U R                  (       a  GMe  g g  N Nt7f)	Ni  r   r
   r   Fr	   r   r   )r   r   r   r   done
set_resultpopleftasynciosleeplenmin)r   last_timestampfuturer
   nowelapseds         r   looperThrottler.looper   s@    $lll::a=LF*.,4;;v&DD{{8$)H%-%{{}}%%d+

""$mmA&&&tzz?a'#(DLmmDKK$8999ftm.!$(+DKK,AGkkZfNgDg,gimititu  jA  )BH%# lll ' :s,   CF
F	AFFA-FFFc           	         [         R                  " 5       n[        U R                  5      U R                  S   :  a0  [        S[        [        U R                  S   5      5      -   S-   5      eU R                  R                  X!45        U R                  (       d4  SU l	        [         R                  " U R                  5       U R                  S9  U$ )Nr   z$throttle queue is over maxCapacity (zB), see https://docs.ccxt.com/#/README?id=maximum-requests-capacityT)r   )r   Futurer    r   r   RuntimeErrorstrintappendr   ensure_futurer&   r   )r   r
   r#   s      r   __call__Throttler.__call__*   s    !tzz?T[[77ECPTP[P[\iPjLkHll  pt   t  u  u

6.)||DL!!$++-dii@r   )r   r   r   r   )N)__name__
__module____qualname____firstlineno__r   r&   r/   __static_attributes__ r   r   r   r      s    B*r   r   )r   r   r   r   r6   r   r   <module>r7      s      , ,r   