+
    Z8i\                         ^ RI t ^ RIt^ RIt^ RIt^ RIt ! R R4      t] P                  R 4       tR t]P                  ]P                  ,           t]3R ltR# )    Nc                   F   a  ] tR t^t o RtR tR	R ltR tR tR t	Rt
V tR# )
ImportKillerz@Context manager to make an import of a given name or names fail.c                    Wn         R # Nnames)selfr   s   &*4lib/python3.14/site-packages/keyring/testing/util.py__init__ImportKiller.__init__   s    
    Nc                *    WP                   9   d   V # R # r   r   )r	   fullnamepaths   &&&r
   find_moduleImportKiller.find_module   s    zz!K "r   c                <    WP                   9   g   Q h\        V4      hr   )r   ImportError)r	   r   s   &&r
   load_moduleImportKiller.load_module   s    ::%%%(##r   c                    / V n         V P                   F0  p\        P                  P	                  VR 4      V P                   V&   K2  	  \        P
                  P                  ^ V 4       R # r   )originalr   sysmodulespop	meta_pathinsert)r	   names   & r
   	__enter__ImportKiller.__enter__   sH    JJD"%++//$"=DMM$ Q%r   c                    \         P                  P                  V 4       V P                  P	                  4        F  w  r#Vf   K  V\         P
                  V&   K   	  R # r   )r   r   remover   itemsr   )r	   argskeyvalues   &*  r
   __exit__ImportKiller.__exit__   sA    T"----/JC #(C  0r   )r   r   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   r'   __static_attributes____classdictcell__)__classdict__s   @r
   r   r      s&     F$&) )r   r   c              +     "   / pVP                  4        F,  w  r4V P                  V4      W#&   Vf   W09   d   W K&  K(  W@V&   K.  	  Rx  VP                  4        F  w  r4Vf   W09   d   W K  K  W@V&   K  	  R# 5i)zHelper context manager to make and unmake changes to a dict.

A None is not a valid value for the destination, and so means that the
associated name should be removed.N)r#   get)destinationchangesr   r%   r&   s   &,   r
   NoNoneDictMutatorr5   #   s      Hmmo
#,=!$ "  % & 
nn&
=!$ "  % 's   A6A8c                 6    \        \        P                  3/ V B # )z6A context manager to temporarily change the os.environ)r5   osenviron)r4   s   ,r
   Environr9   :   s    RZZ3733r   c                L   a RP                  V3R l\        V 4       4       4      # )z-Generate a random string with length <i>k</i> c              3   P   <"   T F  p\         P                  ! S4      x  K  	  R # 5ir   )randomchoice).0_unusedsources   & r
   	<genexpr> random_string.<locals>.<genexpr>D   s     AW6==((s   #&)joinrange)krA   s   &fr
   random_stringrG   B   s    77AaAAAr   )
contextlibr7   r=   stringr   r   contextmanagerr5   r9   ascii_lettersdigitsALPHABETrG    r   r
   <module>rO      s^     	   
) )6 % %,4
 &--/ % Br   