+
     h3  c                  s    R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
HtHt ]P                  R8  d   ^ RIHt M^ RIHt ]! R4      t]! R4      tR R	 ltRR
 R llt ! R R]4      t ! R R]4      tR# )z
from Thinking in Python, Bruce Eckel
https://python-3-patterns-idioms-test.readthedocs.io/en/latest/Observer.html

(c) Copyright 2008, Creative Commons Attribution-Share Alike 3.0.

Simple emulation of Java's 'synchronized'
keyword, from Peter Norvig.
)annotationsN)Iterable)AnyCallableProtocolTypeVar)	ParamSpecTPc               s     V ^8  d   QhRRRR/# )   methodzCallable[P, T]return Zformat   "@/usr/lib64/python3.14/site-packages/smartcard/Synchronization.py__annotate__r      s       N     c                sL   a  \         P                  ! S 4      R  V 3R ll4       pV# )c               s(    V ^8  d   QhRRRRRRRR/# )r	   self_SynchronizationProtocolargsr   kwargsr   r   r   r   r   r   Z"synchronized.<locals>.__annotate__   s)     1 1( 1 1 1 1r   c                s   < V P                   ;_uu_ 4        S! V .VO5/ VB uuR R R 4       #   + '       g   i     R # ; iNmutex)r   r   r   r
   s   &*,r   fZsynchronized.<locals>.f   s*    ZZZ$000 ZZZs   ->	)	functoolsZwraps)r
   r   s   f r   synchronizedr      s%    __V1 1 Hr   c               s$    V ^8  d   QhRRRRRR/# )r	   klassZtypenameszstr | Iterable[str] | Noner   ZNoner   r   r   r   r   r   &   s"     	4 	4t 	4$> 	4$ 	4r   c                s$   \        V\        4      '       d   VP                  4       p\        V P                  P                  4       4       FB  w  r#\        V4      '       g   K  VR8w  g   K!  Ve	   W!9   g   K-  \        W\        V4      4       KD  	  R# )zySynchronize methods in the given class.
Only synchronize the methods whose names are
given, or all methods if names=None.__init__N)	Z
isinstanceZstrZsplitZlistZ__dict__ZitemsZcallableZsetattrr   )r   r   ZnameZvals   &&  r   synchronizer   &   sa    
 %%....01	C==TZ/U]dmEc!23 2r   c                  s"    ] tR t^2t$ R]R&   RtR# )r   z threading.Lock | threading.RLockr   r   N)__name__
__module____qualname____firstlineno__Z__annotations____static_attributes__r   r   r   r   r   2   s    ++r   r   c                  s    ] tR t^6tR tRtR# )Synchronizationc                	s:    \         P                  ! 4       V n        R # r   )	threadingZRLockr   )r   s   &r   r   ZSynchronization.__init__9   s    __&
r   r   N)r    r!   r"   r#   r   r$   r   r   r   r%   r%   6   s    'r   r%   )i   i
   r   )Z__doc__Z
__future__r    r   Zsysr&   Zcollections.abcr   Ztypingr   r   r   r   Zversion_infor   Ztyping_extensionsr   r   r   r   r   r%   r   r   r   <module>r'      sl    #  
  $ 3 3w + CLcN	4,x ,'. 'r   