+
    :i{  c                   s    ^ RI t ^ RIHt ^ RIHt ^ RIHtHt ^ RIH	t	H
t
Ht  ! R R]4      t ! R R	]4      t ! R
 R]4      tR# )i    N)Enum)Event)CallableHashable)PID	TRANSPORTYubiKeyDevicec                   s    ] tR t^$t^t^tRtR# )REINSERT_STATUS N)__name__
__module____qualname____firstlineno__ZREMOVEZREINSERT__static_attributes__r       //usr/lib/python3.14/site-packages/ykman/base.pyr   r   $   s    FHr   r   c                   s    ] tR t^)tRtRtR# )CancelledExceptionz,Raised when the caller cancels an operation.r   N)r	   r
   r   r   __doc__r   r   r   r   r   r   )   s    6r   r   c                   s   a a ] tR t^-t oRtV3R lV 3R llt]V3R lR l4       tRV3R lR llt]	P                  V3R lR	 l4       tR
 tRtVtV ;t# )YkmanDevicez+YubiKey device reference, with optional PIDc                s:   < V ^8  d   QhRS[ RS[RS[R,          /# )   	transportfingerprintpidN)r   r   r   Zformat__classdict__   "r   __annotate__YkmanDevice.__annotate__0   s&      ) ( t r   c                s:   < \         \        V `  W4       W0n        R # N)Zsuperr   __init___pid)selfr   r   r   	__class__s   &&&&r   r   ZYkmanDevice.__init__0   s    k4))A	r   c                s.   < V ^8  d   QhRS[ R,          /# )r   returnN)r   r   r   r   r   r   5   s      S4Z r   c                s    V P                   # )z,Return the PID of the YubiKey, if available.r   r      &r   r   ZYkmanDevice.pid4   s     yyr   c                s\   < V ^8  d   QhRS[ S[.R3,          R,          RS[R,          RR/# r   reinsert_cbNeventr!   r   r   r   r   r   r   r   r   9   sD     M M/56=M t|M 
	Mr   c                sd    T P                  T;'       g    R T;'       g    \        4       4       R# )a  Wait for the user to remove and reinsert the YubiKey.

This may be required to perform certain operations, such as FIDO reset.

This method will attempt to verify that the same YubiKey is reinserted,
but it will only fail when this is definitely not the case (eg. if the serial
number does not match).

:param reinsert_cb: Callback to indicate the the YubiKey has been removed,
and should be reinserted.
:param event: Optional event to cancel (throws CancelledException).
c                     R # r   r   )Z_r$   r   Z<lambda>Z&YkmanDevice.reinsert.<locals>.<lambda>J   s    Dr   N)_do_reinsertr   r   r&   r'      &&&r   reinsertZYkmanDevice.reinsert9   s&    " 	+99.5;K;KEGLr   c                s@   < V ^8  d   QhRS[ S[.R3,          RS[RR/# r%   r(   r   r   r   r   r   M   s2      #_$5t$;<EJ	r   c                r)   r   r   r+   r,   r   r*   ZYkmanDevice._do_reinsertL   s     	r   c                s|    R \        V 4      P                  V P                  ;'       g    ^ V P                  3,          # )z%s(pid=%04x, fingerprint=%r))Ztyper	   r   r   r#   r$   r   __repr__ZYkmanDevice.__repr__R   s7    -JHHMM1
 
 	
r   r"   )NN)r	   r
   r   r   r   r   Zpropertyr   r-   abcZabstractmethodr*   r.   r   Z__classdictcell__Z__classcell__)r    r   s   @@r   r   r   -   sV     5   M M& 	 

 
r   r   )r/   Zenumr    Z	threadingr   Ztypingr   r   Zyubikit.corer   r   r   r   Z	Exceptionr   r   r   r   r   <module>r0      s=   8    % 6 6d 
7 7*
- *
r   