
    .Ph\                         d dl Z d dlZd dlZd dlZd dlZ G d d          Ze j        d             Zd Zej	        ej
        z   ZefdZdS )    Nc                   2    e Zd ZdZd ZddZd Zd Zd ZdS )	ImportKillerz@Context manager to make an import of a given name or names fail.c                     || _         d S Nnames)selfr   s     T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/keyring/testing/util.py__init__zImportKiller.__init__   s    


    Nc                     || j         v r| S d S r   r   )r	   fullnamepaths      r
   find_modulezImportKiller.find_module   s    tz!!K "!r   c                 6    || j         v sJ t          |          r   )r   ImportError)r	   r   s     r
   load_modulezImportKiller.load_module   s#    4:%%%%(###r   c                     i | _         | j        D ]*}t          j                            |d           | j         |<   +t          j                            d|            d S )Nr   )originalr   sysmodulespop	meta_pathinsert)r	   names     r
   	__enter__zImportKiller.__enter__   sW    J 	> 	>D"%+//$"="=DM$Q%%%%%r   c                     t           j                            |            | j                                        D ]\  }}||t           j        |<   d S r   )r   r   remover   itemsr   )r	   argskeyvalues       r
   __exit__zImportKiller.__exit__   sV    T"""---// 	) 	)JC #(C 	) 	)r   r   )	__name__
__module____qualname____doc__r   r   r   r   r#    r   r
   r   r      sj        FF     $ $ $& & &) ) ) ) )r   r   c              +      K   i }|                                 D ],\  }}|                     |          ||<   ||| v r| |= '|| |<   -dV  |                                 D ]\  }}||| v r| |= || |<   dS )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
   NoNoneDictMutatorr-   #   s       Hmmoo % %
U#,,=k!!$$K	EEEnn&& % %
U=k!!$$K% %r   c                  0    t          t          j        fi | S )z6A context manager to temporarily change the os.environ)r-   osenviron)r,   s    r
   Environr1   :   s    RZ337333r   c                 `    d                     fdt          |           D                       S )z-Generate a random string with length <i>k</i> c              3   @   K   | ]}t          j                  V  d S r   )randomchoice).0_unusedsources     r
   	<genexpr>z random_string.<locals>.<genexpr>D   s-      AAW6=((AAAAAAr   )joinrange)kr9   s    `r
   random_stringr>   B   s0    77AAAAaAAAAAAr   )
contextlibr/   r5   stringr   r   contextmanagerr-   r1   ascii_lettersdigitsALPHABETr>   r(   r   r
   <module>rE      s        				   



) ) ) ) ) ) ) )6 % % %,4 4 4
 &-/ % B B B B B Br   