
    ]OgD                         S SK r S SKrS SKrS SKJrJr  \ R                  " \5      r	\R                  S/S4   r " S S\R                  \   5      rg)    N)RTzRefreshable[T]c                       \ rS rSrS\SS4S jrS rS rS\4S jrS	\SS4S
 jr	S\
SS4S jrS\R                  \/\4   SS4S jrSrg)Refreshable   initialreturnNc                 R    [         R                  " 5       U l        Xl        / U l        g N	threadingLock_lock_current_subscribers)selfr   s     X/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/nr/util/refreshable.py__init__Refreshable.__init__   s    !DJM,.D    c                 4    X R                   U R                  44$ r   )r   r   r   s    r   __getstate__Refreshable.__getstate__   s    --!2!2333r   c                 \    [         R                  " 5       U l        US   u  U l        U l        g )N   r   )r   states     r   __setstate__Refreshable.__setstate__   s#    !DJ',Qx$DM4$r   c                 h    U R                      U R                  sS S S 5        $ ! , (       d  f       g = fr   )r   r   r   s    r   getRefreshable.get   s    	]] 
s   #
1valuec                     U R                      Xl        U R                  S S  nS S S 5        W H  n U" U 5        M     g ! , (       d  f       N!= f!   [        R	                  S5         M<  = fNzError in subscriber)r   r   r   logger	exception)r   r#   subscribers
subscribers       r   updateRefreshable.update   sY    	m%%a(k 
 "
04 " 
0./s   >A
AA)r)   c                     U R                      U R                  R                  U5        S S S 5         U" U 5        g ! , (       d  f       N= f!   [        R	                  S5         g = fr%   )r   r   appendr&   r'   )r   r)   s     r   	subscribeRefreshable.subscribe(   sL    	
z* 
. 
.,-s   ;A 
A	A%mapperzRefreshable[R]c                 |   ^ ^^ [        T" T R                  5       5      5      mUUU 4S jnT R                  U5        T$ )a  
Map the value of the refreshable to a new refreshable that automatically gets updated when the
parent is updated. Be aware that this method should be used sparingly as it registers a new
subscriber to this refreshable that will never be disposed of again.
c                 P   > TR                  T" TR                  5       5      5        g r   )r*   r!   )_parentchildr0   r   s    r   refresh Refreshable.map.<locals>.refresh8   s    ll6$((*%&r   )r   r!   r.   )r   r0   r5   r4   s   `` @r   mapRefreshable.map0   s0     txxz*+E'NN7Lr   )r   r   r   )__name__
__module____qualname____firstlineno__r   r   r   r   r!   r*   
Subscriberr.   tCallabler   r7   __static_attributes__ r   r   r   r      st    /a /D /
401 0! 0 0.* . .

A36* /? r   r   )loggingr   typingr>   nr.util.genericr   r   	getLoggerr9   r&   r?   r=   Genericr   rA   r   r   <module>rG      sL        			8	$ZZ)*D01
/!))A, /r   