
    &em
                         d Z ddlZddlZddlZddlZddlmZ ddlmZ  G d de	          Z
 G d d	ej        j                  Z G d
 dej                  ZdS )z%A shim module for deprecated imports
    N)import_module   )import_itemc                       e Zd ZdZdS )ShimWarningzFA warning to show when a module has moved, and a shim is in its place.N)__name__
__module____qualname____doc__     8lib/python3.11/site-packages/IPython/utils/shimmodule.pyr   r      s        PPPPr   r   c                   &    e Zd ZdZd Zd ZddZdS )ShimImporterzImport hook for a shim.

    This ensures that submodule imports return the real target module,
    not a clone that will confuse `is` and `isinstance` checks.
    c                 "    || _         || _        d S Nsrcmirror)selfr   r   s      r   __init__zShimImporter.__init__   s    r   c                 J    | j         |t          | j                  d         z   S )z#get the name of the mirrored moduleN)r   lenr   )r   fullnames     r   _mirror_namezShimImporter._mirror_name   s"     {Xc$(mmoo666r   Nc                     |                     | j        dz             r4|                     |          }t          j                            |          S d S N.)
startswithr   r   	importlibutil	find_spec)r   r   pathtargetmirror_names        r   r"   zShimImporter.find_spec"   sQ    tx#~.. 	9++H55K>++K888	9 	9r   r   )r   r	   r
   r   r   r   r"   r   r   r   r   r      sP         
  7 7 7
9 9 9 9 9 9r   r   c                   r     e Zd Z fdZed             Zed             Zd Zed             Zd Z	d Z
 xZS )
ShimModulec                 X   |                     d          | _        |                     dd           }|r|                    dd          d         |d<    t          t          |           j        |i | |r5t          j                            t          || j                             d S d S )Nr   r   r   r   namer   )
pop_mirrorrsplitsuperr'   r   sys	meta_pathappendr   )r   argskwargsr   	__class__s       r   r   zShimModule.__init__*   s    zz(++jj%% 	4 ZZQ//3F6N(j$($9&999 	M  T\:::    	 	r   c                     g S r   r   r   s    r   __path__zShimModule.__path__6   s    	r   c                 4    t          | j                  j        S )z&Don't produce __spec__ until requested)r   r,   __spec__r6   s    r   r9   zShimModule.__spec__:   s     T\**33r   c                 D    t          t          | j                            S r   )dirr   r,   r6   s    r   __dir__zShimModule.__dir__?   s    =..///r   c                     t          | j                  }	 |j        S # t          $ r d t	          |          D             cY S w xY w)z Ensure __all__ is always definedc                 <    g | ]}|                     d           |S )_)r   ).0r*   s     r   
<listcomp>z&ShimModule.__all__.<locals>.<listcomp>I   s)    JJJTT__S5I5IJDJJJr   )r   r,   __all__AttributeErrorr;   )r   mods     r   rB   zShimModule.__all__B   s`     DL))	K; 	K 	K 	KJJSXXJJJJJJ	Ks    #AAc                 ~    | j         d|}	 t          |          S # t          $ r}t          |          |d }~ww xY wr   )r,   r   ImportErrorrC   )r   keyr*   es       r   __getattr__zShimModule.__getattr__K   sV    ,,,,	-t$$$ 	- 	- 	- %%1,	-s    
<7<c                 t    	  |                      d                      S # t          $ r d| j        dcY S w xY w)N__repr__z<ShimModule for >)rI   rC   r,   r6   s    r   rK   zShimModule.__repr__S   sW    	8/4##J//111 	8 	8 	87dl777777	8s    77)r   r	   r
   r   propertyr7   r9   r<   rB   rI   rK   __classcell__)r4   s   @r   r'   r'   (   s        
 
 
 
 
   X 4 4 X40 0 0 K K XK- - -8 8 8 8 8 8 8r   r'   )r   importlib.abcr    importlib.utilr/   typesr   importstringr   Warningr   abcMetaPathFinderr   
ModuleTyper'   r   r   r   <module>rW      s    
         



  # # # # # # % % % % % %Q Q Q Q Q' Q Q Q9 9 9 9 99=/ 9 9 9*18 18 18 18 18! 18 18 18 18 18r   