
    E#i                          S SK r S SKr\R                  " \5      r " S S5      r " S S\5      r " S S\5      r " S S	\5      r	 " S
 S\5      r
 " S S\5      rg)    Nc                        \ rS rSrS rS rSrg)Delegate   c                     Xl         X l        g N)name	delegated)selfr   r	   s      Z/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/async_support/base/ws/cache.py__init__Delegate.__init__   s    	"    c                 V    [        XR                  5      n[        X0R                  5      $ r   )getattrr	   r   )r
   instanceownerdeques       r   __get__Delegate.__get__   s    ..1uii((r   )r	   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    #)r   r   c                      ^  \ rS rSr\" SS5      r\" SS5      r\" SS5      r\" SS5      r\" SS5      r	\" SS5      r
\" S	S5      r\" S
S5      rSU 4S jjrS rS rS rU 4S jrS rS rSrU =r$ )	BaseCache   __iter___deque__setitem____delitem____len____contains____reversed__clearpopc                 n   > [         [        U ]  5         Xl        [        R
                  " / U5      U l        g r   )superr   r   max_sizecollectionsr   r    r
   r*   	__class__s     r   r   BaseCache.__init__   s)    i') !''H5r   c                     [        U 5      U:H  $ r   listr
   others     r   __eq__BaseCache.__eq__#   s    DzU""r   c                 *    [        [        U 5      5      $ r   )strr1   )r
   s    r   __repr__BaseCache.__repr__&   s    4:r   c                     [        U 5      U-   $ r   r0   r2   s     r   __add__BaseCache.__add__)   s    DzE!!r   c                    > [         [        U ]  S5      n[        U[        5      (       a<  UR                  [        U5      5      u  p4n[        X4U5       Vs/ s H  obU   PM	     sn$ X!   $ s  snf )Nr    )r)   r1   __getattribute__
isinstancesliceindiceslenrange)r
   itemr   startstopstepir-   s          r   __getitem__BaseCache.__getitem__,   sf    dD28<dE"" $SZ 8E&+E&>?&>!H&>??; @s   A*c                     g r   r   r
   symbollimits      r   getLimitBaseCache.getLimit6   s    r   c                 $    U R                  X5      $ r   )rO   rL   s      r   	get_limitBaseCache.get_limit:   s    }}V++r   )r    r*   r   )r   r   r   r   r   r   r!   r"   r#   r$   r%   r&   r'   r   r4   r8   r;   rI   rO   rR   r   __classcell__r-   s   @r   r   r      s    
 
H-H=(3K=(3Ky(+GNH5LNH5LWh'E
5(
#C6
#", ,r   r   c                   8   ^  \ rS rSrSU 4S jjrS rS rSrU =r$ )
ArrayCache>   c                 r   > [         [        U ]  U5        SU l        0 U l        0 U l        SU l        SU l        g )NFr   )r)   rW   r   _nested_new_updates_by_symbol_new_updates_by_symbol_clear_updates_by_symbol_all_new_updates_clear_all_updatesr,   s     r   r   ArrayCache.__init__?   s:    j$(2-2*&(#(*% !"'r   c                     Uc  U R                   nSU l        OIU R                  R                  U5      nUb  U R                  (       a  [        U5      nSU R                  U'   Uc  U$ Ub  [        X25      $ U$ NT)r]   r^   r[   getrZ   rB   r\   min)r
   rM   rN   new_updates_values       r   rO   ArrayCache.getLimitG   s    > $ 5 5&*D# $ ; ; ? ? G ,1S1S$'(9$:!48D))&1$L(00$$r   c                    U R                   R                  U5        U R                  (       aB  SU l        U R                  R	                  5         SU l        U R                  R	                  5         U R                  R                  US   5      (       a$  SU R                  US   '   SU R                  US   '   U R                  R                  US   S5      S-   U R                  US   '   U R
                  =(       d    SS-   U l        g )NFr   rM      )r    appendr^   r\   r&   r]   r[   rb   )r
   rD   s     r   rh   ArrayCache.appendX   s    4 ""&+D#))//1$%D!''--/((,,T(^<<<AD))$x.9:;D''X76:6Q6Q6U6UVZ[cVdfg6hkl6l##DN3!%!6!6!;!q @r   )r]   r^   r\   rZ   r[   r   	r   r   r   r   r   rO   rh   r   rT   rU   s   @r   rW   rW   >   s    (%"A Ar   rW   c                   8   ^  \ rS rSrSU 4S jjrS rS rSrU =r$ )ArrayCacheByTimestampf   c                 t   > [         [        U ]  U5        0 U l        [	        5       U l        SU l        SU l        g Nr   F)r)   rl   r   hashmapset_size_tracker_new_updates_clear_updatesr,   s     r   r   ArrayCacheByTimestamp.__init__g   s4    #T3H= U#r   c                 Z    SU l         Uc  U R                  $ [        U R                  U5      $ ra   )rt   rs   rc   rL   s      r   rO   ArrayCacheByTimestamp.getLimitn   s.    "=$$$4$$e,,r   c                 N   US   U R                   ;   a%  U R                   US      nX!:w  a  XS[        U5      & OXR                   US   '   [        U R                  5      U R                  R                  :X  a*  U R                  R	                  5       nU R                   US   	 U R                  R                  U5        U R                  (       a!  SU l        U R                  R                  5         U R                  R                  US   5        [        U R                  5      U l
        g ro   )rp   rB   r    maxlenpopleftrh   rt   rr   r&   addrs   )r
   rD   	referencedelete_references       r   rh   ArrayCacheByTimestamp.appendt   s    7dll"T!W-I )-!CI&$(LLa!4;;4;;#5#55#';;#6#6#8 LL!1!!45KKt$"'D$$&tAw' 2 23r   )rt   rs   rr   rp   r   rj   rU   s   @r   rl   rl   f   s    $-4 4r   rl   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ArrayCacheBySymbolById   c                    > [         [        U ]  U5        SU l        0 U l        [
        R                  " / U5      U l        g ra   )r)   r   r   rZ   rp   r+   r   _indexr,   s     r   r   ArrayCacheBySymbolById.__init__   s6    $d4X>-1*!''H5r   c                 :   U R                   R                  US   0 5      nUS   U;   aX  X!S      nX1:w  a  UR                  U5        UnU R                  R	                  US   5      nU R
                  U	 U R                  U	 OXUS   '   [        U R
                  5      U R
                  R                  :X  aK  U R
                  R                  5       nU R                  R                  5          U R                   US      US   	 U R
                  R                  U5        U R                  R                  US   5        U R                  (       aB  SU l        U R                  R                  5         SU l        U R"                  R                  5         US   U R"                  ;  a  [%        5       U R"                  US   '   U R                  R'                  US   5      (       a2  SU R                  US   '   U R"                  US      R                  5         U R"                  US      n[        U5      nUR)                  US   5        [        U5      n	U R                   =(       d    SX-
  -   U l        g ! [         a&  n[        R                  SU SU 35         S nAGNS nAff = f)NrM   idz"Error deleting item from hashmap: z. Error:Fr   )rp   
setdefaultupdater   indexr    rB   ry   rz   	Exceptionloggererrorrh   r^   r\   r&   r]   r[   rq   rb   r{   )
r
   rD   by_idr|   r   delete_itemeid_setbefore_lengthafter_lengths
             r   rh   ArrayCacheBySymbolById.append   sD   ''X;:4j)I   &DKK%%d4j1EE"E" $$t*t{{t{{111++--/KKK!\LLX!67D8IJ 	4 4:&""&+D#))//1$%D!''--/>!<!<<:=%D''X7((,,T(^<<<AD))$x.9''X7==?,,T(^<F

4:6{!%!6!6!;!@\ ]%  \A+hWXVYZ[[\s   *I* *
J4JJr]   r^   r   rZ   rp   r   r   r   r   r   r   rh   r   rT   rU   s   @r   r   r      s    6#^ #^r   r   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ArrayCacheBySymbolBySide   c                    > [         [        U ]  U5        SU l        0 U l        [
        R                  " / U5      U l        g ra   )r)   r   r   rZ   rp   r+   r   r   r,   s     r   r   !ArrayCacheBySymbolBySide.__init__   s6    &6x@-1*!''H5r   c                    U R                   R                  US   0 5      nUS   U;   a^  X!S      nX1:w  a  UR                  U5        UnU R                  R	                  US   US   -   5      nU R
                  U	 U R                  U	 OXUS   '   [        U R
                  5      U R
                  R                  :X  aJ  U R
                  R                  5       nU R                  R                  5         U R                   US      US   	 U R
                  R                  U5        U R                  R                  US   US   -   5        U R                  (       aB  SU l
        U R                  R                  5         SU l        U R                  R                  5         US   U R                  ;  a  [        5       U R                  US   '   U R                  R!                  US   5      (       a2  SU R                  US   '   U R                  US      R                  5         U R                  US      n[        U5      nUR#                  US   5        [        U5      nU R                  =(       d    SX-
  -   U l        g )NrM   sideFr   )rp   r   r   r   r   r    rB   ry   rz   rh   r^   r\   r&   r]   r[   rq   rb   r{   )	r
   rD   by_sider|   r   r   side_setr   r   s	            r   rh   ArrayCacheBySymbolBySide.append   s   ,,))$x."=<7"V-I   &DKK%%d8ntF|&CDEE"E"$(DL!t{{t{{111++--/KKK![23K4GH4 4>DL89""&+D#))//1$%D!''--/>!<!<<:=%D''X7((,,T(^<<<AD))$x.9''X7==?..tH~>HT&\"8}!%!6!6!;!@\ ]r   r   r   r   rU   s   @r   r   r      s    6 ^  ^r   r   )r+   logging	getLoggerr   r   r   r1   r   rW   rl   r   r   r   r   r   <module>r      sk     			8	$) )+, +,\%A %AP4I 4@*^Z *^Z'^z '^r   