
    De                     L    d dl  d dlZd dlZd Z G d d      Z G d d      Zy)    )*Nc                      t        j                         5  t        j                  dt               t	        j
                  d      ad d d        y # 1 sw Y   y xY w)Nignoreimp)warningscatch_warningssimplefilterDeprecationWarning	importlibimport_moduler        4/usr/lib/python3/dist-packages/zombie_imp/pkgutil.py_import_impr      sD    		 	 	" -h(:;%%e,- - -s   0AAc                   (    e Zd ZdZddZddZddZy)ImpImportera  PEP 302 Finder that wraps Python's "classic" import algorithm

    ImpImporter(dirname) produces a PEP 302 finder that searches that
    directory.  ImpImporter(None) produces a PEP 302 finder that searches
    the current sys.path, plus any modules that are frozen or built-in.

    Note that ImpImporter does not currently support being used by placement
    on sys.meta_path.
    Nc                 Z    t        j                  dt               t                || _        y Nz[This emulation is deprecated and slated for removal in Python 3.12; use 'importlib' instead)r   warnr
   r   path)selfr   s     r   __init__zImpImporter.__init__   s%     @	! 		r   c                 0   |j                  d      d   }||k7  r| j                  y | j                  d }n*t        j                  j                  | j                        g}	 t        j                  ||      \  }}}t        ||||      S # t        $ r Y y w xY w)N.)splitr   osrealpathr   find_moduleImportError	ImpLoader)r   fullnamer   subnamefilefilenameetcs          r   r   zImpImporter.find_module   s    ..%b)h499#499DGG$$TYY/0D	"%//'4"@D(C 4377  		s   !B	 		BBc              #     K   | j                   )t        j                   j                  | j                         sy i }dd l}	 t        j	                  | j                         }|j                          |D ]  }|j                  |      }|dk(  s||v rt        j                   j                  | j                   |      }d}|s]t        j                   j                  |      r>d|vr:|}	 t        j	                  |      }	|	D ]  }|j                  |      }
|
dk(  sd} n |sd|vsd||<   ||z   |f  y # t
        $ r g }Y w xY w# t
        $ r g }	Y Yw xY ww)Nr   r   Fr   T   )	r   r   isdirinspectlistdirOSErrorsortgetmodulenamejoin)r   prefixyieldedr*   	filenamesfnmodnamer   ispkgdircontentsr#   s              r   iter_moduleszImpImporter.iter_modules.   sS    99BGGMM$))$<	

499-I 	 	.B++B/G
"g&877<<		2.DErww}}T2s"}%"$**T"2K & B%33B7G
* $	 3g-#$ w&--3	.  	I	"  %"$K%s`   =E D3 BE#E8EEE"E3E>E EEEEEEN) )__name__
__module____qualname____doc__r   r   r7   r   r   r   r   r      s    8&.r   r   c                   Z    e Zd ZdZdxZZd Zd Zd Zd Z	d Z
d Zdd	Zdd
Zd ZddZy)r!   zBPEP 302 Loader that wraps Python's "classic" import algorithm
    Nc                     t        j                  dt               t                || _        || _        || _        || _        y r   )r   r   r
   r   r$   r%   r"   r&   )r   r"   r$   r%   r&   s        r   r   zImpLoader.__init__\   s9     =(	* 		  r   c                 8   | j                          	 t        j                  || j                  | j                  | j
                        }| j                  r| j                  j                          |S # | j                  r| j                  j                          w w xY wr8   )_reopenr   load_moduler$   r%   r&   close)r   r"   mods      r   rB   zImpLoader.load_modulef   sj    	"//(DIIt}}dhhOCyy		! 
	 yy		! s   6A0 0)Bc                 f    t        |d      5 }|j                         cd d d        S # 1 sw Y   y xY w)Nrb)openread)r   pathnamer$   s      r   get_datazImpLoader.get_dataq   s,    (D! 	T99;	 	 	s   '0c                 D   | j                   r| j                   j                  r}| j                  d   }|t        j                  k(  rt        | j                  d      | _         y |t        j                  t        j                  fv rt        | j                  d      | _         y y y y )N   rrF   )	r$   closedr&   r   	PY_SOURCErG   r%   PY_COMPILEDC_EXTENSION)r   mod_types     r   rA   zImpLoader._reopenu   st    99))xx{H& 4	coos?? 5	 @	 *9r   c                 z    || j                   }|S || j                   k7  rt        d| j                   d|      |S )NzLoader for module z cannot handle module )r"   r    r   r"   s     r   	_fix_namezImpLoader._fix_name}   sI    }}H  &-1]]HF G Gr   c                 d    | j                  |      }| j                  d   t        j                  k(  S NrL   )rU   r&   r   PKG_DIRECTORYrT   s     r   
is_packagezImpLoader.is_package   s)    >>(+xx{C----r   c                 |   | j                  |      }| j                  | j                  d   }|t        j                  k(  r9| j                  |      }t        || j                  d      | _        | j                  S |t        j                  k(  rQ| j                          	 t        | j                        | _        | j                  j                          | j                  S |t        j                  k(  r#| j                         j                         | _        | j                  S # | j                  j                          w xY w)NrL   exec)rU   coder&   r   rO   
get_sourcecompiler%   rP   rA   	read_coder$   rC   rX   _get_delegateget_code)r   r"   rR   sources       r   ra   zImpLoader.get_code   s    >>(+99xx{H&2#FDMM6B	 yy 3??*& )$)) 4DIIIOO% yy 3,,, ..099;	yy IIOO%s   D D;c                 :   | j                  |      }| j                  <| j                  d   }|t        j                  k(  rV| j                          	 | j                  j                         | _        | j                  j                          | j                  S |t        j                  k(  r{t        j                  j                  | j                  d d       rCt        | j                  d d d      5 }|j                         | _        d d d        | j                  S | j                  S |t        j                  k(  r#| j!                         j#                         | _        | j                  S # | j                  j                          w xY w# 1 sw Y   | j                  S xY w)NrL   r   rM   )rU   rb   r&   r   rO   rA   r$   rH   rC   rP   r   r   existsr%   rG   rX   r`   r]   )r   r"   rR   fs       r   r]   zImpLoader.get_source   s0   >>(+;;xx{H&&"&)).."2DKIIOO% {{ 3??*77>>$--"45dmmCR0#6 /!&'ffh/ {{t{{ 3,,,"002==?{{ IIOO%/ {{s   E' /F'FFc                 \    t        | j                        }t        |d      }|j                  S )Nr   )r   r%   	_get_specloader)r   finderspecs      r   r`   zImpLoader._get_delegate   s&    T]]+,{{r   c                     | j                  |      }| j                  d   }|t        j                  k(  r| j	                         j                         S |t        j                  t        j                  t        j                  fv r| j                  S y rW   )
rU   r&   r   rX   r`   get_filenamerO   rP   rQ   r%   )r   r"   rR   s      r   rl   zImpLoader.get_filename   sk    >>(+88A;S&&&%%'4466#--#//JJ== r   r8   )r:   r;   r<   r=   r\   rb   r   rB   rJ   rA   rU   rY   ra   r]   r`   rl   r   r   r   r!   r!   W   sC    D6	6."$
r   r!   )pkgutilr   r   r   r   r!   r   r   r   <module>rn      s,      -H. H.Va ar   