
    =Og>`                        	 d dl mZ d dlmZ d dlZd dl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Zg dZ edd          Zde_        d	 Zd
 ZddZddZed d            Zd dZe                    ej        j        e           d Z G d d          Z G d d          Z	 d dlZd dlmZ d dZe                    ee           n# e $ r Y nw xY wd Z!d dZ"d Z#d Z$d Z%d Z&da'd Z(dS )!    )
namedtuple)singledispatchN)
ModuleType)get_importeriter_importers
get_loaderfind_loaderwalk_packagesiter_modulesget_dataImpImporter	ImpLoader	read_codeextend_path
ModuleInfor   zmodule_finder name ispkgz.A namedtuple with minimal info about a module.c                     	 	 | j         } ||          S # t          $ r= |                     |          }|Y d S t          j                            ||          cY S w xY wN)	find_specAttributeErrorfind_module	importlibutilspec_from_loader)findernamer   loaders        /usr/lib64/python3.11/pkgutil.py	_get_specr      s|    1$	 y  = = =##D))>44~..tV<<<<<	=s    !A AAc                     dd l }|                     d          }|t          j        j        k    rd S |                     d           |                    |           S )Nr         )marshalreadr   r   MAGIC_NUMBERload)streamr"   magics      r   r   r   (   sR     NNNKKNNE	+++t
KKOOO<<     c              #     K   	 i fdt          | |          D ]}|V  |j        r	 t          |j                   t	          t
          j        |j                 dd           pg } fd| D             } t          | |j        dz   |          E d {V  x# t          $ r | ||j                   Y t          $ r | ||j                   n Y w xY wd S )Nc                     | |v rdS d|| <   d S )NT )pms     r   seenzwalk_packages.<locals>.seenR   s    664!r(   __path__c                 *    g | ]} |          |S r,   r,   ).0r-   r/   s     r   
<listcomp>z!walk_packages.<locals>.<listcomp>i   s&    777attAww7777r(   .)
r   ispkg
__import__r   getattrsysmodulesr
   ImportError	Exception)pathprefixonerrorinfor/   s       @r   r
   r
   5   sV     8     
 T6** G G


: 	GG49%%% s{495z4HHNB 87774777(ty}gFFFFFFFFFF  ' ' '&GDI&&&   &GDI&&&& '&	GG Gs   BC0CCc              #     K   	 | t                      }n9t          | t                    rt          d          t	          t
          |           }i }|D ]4}t          ||          D ]!\  }}||vrd||<   t          |||          V  "5d S )Nz9path must be None or list of paths to look for modules in   )r   
isinstancestr
ValueErrormapr   iter_importer_modulesr   )r<   r=   	importersyieldedir   r5   s          r   r   r   n   s       |"$$			D#		 , % & & 	& d++	G 1 10F;; 	1 	1KD%7"" ! D%00000	11 1r(   c                 P    t          | d          sg S |                     |          S )Nr   )hasattrr   )importerr=   s     r   rF   rF      s-    8^,, 	  (((r(   c              #     K   | j         $t          j                             | j                   sd S i }dd l}	 t          j        | j                   }n# t
          $ r g }Y nw xY w|                                 |D ]}|                    |          }|dk    s||v r"t          j                             | j         |          }d}|srt          j                             |          rSd|vrO|}	 t          j        |          }	n# t
          $ r g }	Y nw xY w|	D ]!}|                    |          }
|
dk    rd} n"|rd|vrd||<   ||z   |fV  d S Nr   __init__Fr4   TrA   	r<   osisdirinspectlistdirOSErrorsortgetmodulenamejoin)rL   r=   rH   rS   	filenamesfnmodnamer<   r5   dircontentssubnames              r   _iter_file_finder_modulesr^      s     }BGMM(-$@$@GNNNJx}--		   			 NN * *''++J'W"4"4w||HM2.. 	27==.. 	3b==G! j.. ! ! ! ! "  !//33J&& EE '  	*s')) GG7"E))))3* *#   A A A *C??DDc                      t          j                    5  t          j        dt                     t	          j        d          ad d d            d S # 1 swxY w Y   d S )Nignoreimp)warningscatch_warningssimplefilterDeprecationWarningr   import_modulerb   r,   r(   r   _import_imprh      s    		 	"	" - -h(:;;;%e,,- - - - - - - - - - - - - - - - - -s   /AAAc                   (    e Zd Z	 ddZddZddZdS )r   Nc                 d    t          j        dt                     t                       || _        d S Nz[This emulation is deprecated and slated for removal in Python 3.12; use 'importlib' instead)rc   warnrf   rh   r<   )selfr<   s     r   rO   zImpImporter.__init__   s5     @	! 	! 	! 				r(   c                 <   |                     d          d         }||k    r	| j        d S | j        d }n%t          j                            | j                  g}	 t                              ||          \  }}}n# t          $ r Y d S w xY wt          ||||          S )Nr4   )splitr<   rQ   realpathrb   r   r:   r   )rm   fullnamer<   r]   filefilenameetcs          r   r   zImpImporter.find_module   s    ..%%b)h49#449DDG$$TY//0D	"%//'4"@"@D(CC 	 	 	44	43777s   A; ;
B	B	r)   c              #     K   | j         $t          j                             | j                   sd S i }dd l}	 t          j        | j                   }n# t
          $ r g }Y nw xY w|                                 |D ]}|                    |          }|dk    s||v r"t          j                             | j         |          }d}|srt          j                             |          rSd|vrO|}	 t          j        |          }	n# t
          $ r g }	Y nw xY w|	D ]!}|                    |          }
|
dk    rd} n"|rd|vrd||<   ||z   |fV  d S rN   rP   )rm   r=   rH   rS   rY   rZ   r[   r<   r5   r\   r]   s              r   r   zImpImporter.iter_modules   s     9BGMM$)$<$<F	
49--II 	 	 	III	 	 	. 	.B++B//G
""g&8&87<<	2..DE rw}}T22 s"}}%"$*T"2"2KK % % %"$KKK% &  B%33B77G
** $ +  .3g--#$ w&----3	. 	.r_   r   r)   )__name__
__module____qualname__rO   r   r   r,   r(   r   r   r      sU           8 8 8 8&. &. &. &. &. &.r(   r   c                   Z    e 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dS )r   Nc                     t          j        dt                     t                       || _        || _        || _        || _        d S rk   )rc   rl   rf   rh   rs   rt   rr   ru   )rm   rr   rs   rt   ru   s        r   rO   zImpLoader.__init__  sI     =(	* 	* 	* 		  r(   c                    |                                   	 t                              || j        | j        | j                  }| j        r| j                                         n&# | j        r| j                                         w w xY w|S r   )_reopenrb   load_modulers   rt   ru   close)rm   rr   mods      r   r   zImpLoader.load_module  s    	"//(DIt}dhOOCy "	!!! y "	!!!!" 
s   ,A# ##Bc                 ~    t          |d          5 }|                                cd d d            S # 1 swxY w Y   d S )Nrb)openr#   )rm   pathnamers   s      r   r   zImpLoader.get_data'  s~    (D!! 	T99;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   266c                    | j         r{| j         j        rq| j        d         }|t          j        k    rt          | j        d          | _         d S |t          j        t          j        fv r t          | j        d          | _         d S d S d S d S )N   rr   )	rs   closedru   rb   	PY_SOURCEr   rt   PY_COMPILEDC_EXTENSION)rm   mod_types     r   r~   zImpLoader._reopen+  s    9 	6) 	6x{H&& 44			cos??? 55				6 	6 	6 	6 @?r(   c                 d    || j         }n%|| j         k    rt          d| j         d|          |S )NzLoader for module z cannot handle module )rr   r:   rm   rr   s     r   	_fix_namezImpLoader._fix_name3  sM    }HH&&+-1]]]HHF G G Gr(   c                 b    |                      |          }| j        d         t          j        k    S Nr   )r   ru   rb   PKG_DIRECTORYr   s     r   
is_packagezImpLoader.is_package;  s'    >>(++x{C---r(   c                 F   |                      |          }| j        | j        d         }|t          j        k    r1|                     |          }t          || j        d          | _        n|t          j        k    rf| 	                                 	 t          | j                  | _        | j                                         nY# | j                                         w xY w|t          j        k    r+|                                                                 | _        | j        S )Nr   exec)r   coderu   rb   r   
get_sourcecompilert   r   r~   r   rs   r   r   _get_delegateget_code)rm   rr   r   sources       r   r   zImpLoader.get_code?  s    >>(++9x{H&&22#FDM6BB		3?**& )$) 4 4DIIOO%%%%DIOO%%%%3,,, ..0099;;	ys   C Cc                    |                      |          }| j        N| j        d         }|t          j        k    rk|                                  	 | j                                        | _        | j                                         n# | j                                         w xY w|t          j	        k    r{t          j                            | j        d d                   rNt          | j        d d         d          5 }|                                | _        d d d            n# 1 swxY w Y   n;|t          j        k    r+|                                                                 | _        | j        S )Nr   ro   r   )r   r   ru   rb   r   r~   rs   r#   r   r   rQ   r<   existsrt   r   r   r   r   )rm   rr   r   fs       r   r   zImpLoader.get_sourceP  se   >>(++;x{H&&&"&).."2"2DKIOO%%%%DIOO%%%%3?**7>>$-"455 /dmCRC0#66 /!&'ffhh/ / / / / / / / / / / / / / /3,,,"0022==??{s   B B#?D%%D),D)c                 X    t          | j                  }t          |d          }|j        S )NrO   )r   rt   r   r   )rm   r   specs      r   r   zImpLoader._get_delegateb  s(    T]++,,{r(   c                    |                      |          }| j        d         }|t          j        k    r&|                                                                 S |t          j        t          j        t          j        fv r| j	        S d S r   )
r   ru   rb   r   r   get_filenamer   r   r   rt   )rm   rr   r   s      r   r   zImpLoader.get_filenameg  so    >>(++8A;S&&&%%''44666#-#/JJJ= tr(   r   )rx   ry   rz   r   r   rO   r   r   r~   r   r   r   r   r   r   r,   r(   r   r   r     s        D6  	 	 	  6 6 6  . . .   "   $  
     r(   r   )zipimporterc              #   N  K   t          t          j        | j                           }| j        }t          |          }i }dd l}|D ]}|                    |          s||d                              t          j
                  }t          |          dk    r?|d                             d          r$|d         |vrd||d         <   ||d         z   dfV  t          |          dk    r|                    |d                   }|dk    r|rd|vr||vrd||<   ||z   dfV  d S )	Nr   r   rA   z__init__.pyTrO   r4   F)sorted	zipimport_zip_directory_cachearchiver=   lenrS   
startswithrp   rQ   seprW   )	rL   r=   dirlist_prefixplenrH   rS   rZ   r[   s	            r   iter_zipimport_modulesr   u  sW     78HIJJ/7|| 	. 	.B==)) DEE((B2wwzzbe..}==za5''%&GBqEN 2a5.$....2wwzz++BqE22G
"" .3g--'2H2H#$ w&----)	. 	.r(   c                    	 t          j        |           } 	 t          j        |          }n^# t          $ rQ t          j        D ]?}	  ||           }t          j                            | |            n# t          $ r Y <w xY wd }Y nw xY w|S r   )rQ   fsdecoder8   path_importer_cacheKeyError
path_hooks
setdefaultr:   )	path_itemrL   	path_hooks      r   r   r     s     I&&I*95 	 	 	 	 	I$9Y//'229hGGG    H	 Os3   * B+A0.B0
A=:B<A==BBc              #   x  K   	 |                      d          r$d                    |           }t          |          d| v rE|                     d          d         }t	          j        |          }t          |dd           }|d S nt          j        E d {V  t          j	        }|D ]}t          |          V  d S )Nr4   'Relative module name {!r} not supportedr   r0   )r   formatr:   
rpartitionr   rg   r7   r8   	meta_pathr<   r   )rr   msgpkg_namepkgr<   items         r   r   r     s      
 3 7>>xHH#
h&&s++A.%h//sJ--<F  =       x ! !4      ! !r(   c                     	 | t           j        v rt           j        |          } | d S t          | t                    r2| }t	          |dd           }||S t	          |dd           d S |j        }n| }t          |          S )N
__loader____spec__)r8   r9   rB   r   r7   rx   r	   )module_or_namemoduler   rr   s       r   r   r     s     $$^4!4.*-- 	"t44M6:t,,44?!x   r(   c           	         	 |                      d          r$d                    |           }t          |          	 t          j                            |           }nY# t          t          t          t          f$ r9}d}t          |                    | t          |          |                    |d }~ww xY w||j
        nd S )Nr4   r   z,Error while finding loader for {!r} ({}: {}))r   r   r:   r   r   r   r   	TypeErrorrD   typer   )rr   r   r   exs       r   r	   r	     s     3 7>>xHH#F~''11J? F F F =#**XtBxx<<==2EF *4;;4s   A B294B--B2c           	      6   	 t          | t                    s| S |dz   }| d d          } |                    d          \  }}}|r2	 t          j        |         j        }n%# t          t          f$ r | cY S w xY wt          j        }|D ]}t          |t                    st          |          }|yg }	t          |d          r!|                    |          }
|
	|
j        pg }	n(t          |d          r|                    |          \  }}	|	D ]}|| vr|                     |           t           j                            ||          }t           j                            |          r	 t'          |          }|5  |D ]D}|                    d          }|r|                    d          r/|                     |           E	 d d d            n# 1 swxY w Y   V# t,          $ r1}t          j                            d|d|d           Y d }~d }~ww xY w| S )	Nz.pkgr4   r   r	   
#zCan't open z: )rB   listr   r8   r9   r0   r   r   r<   rC   r   rK   r   submodule_search_locationsr	   appendrQ   rX   isfiler   rstripr   rU   stderrwrite)r<   r   	sname_pkgparent_package_
final_namesearch_pathdirr   portionsr   portionpkgfiler   liner   s                   r   r   r     s   @ dD!!  vI7D$(OOC$8$8!NAz 	+n5>KK.) 	 	 	 KKK	
 h $* $*#s## 	c""Hv{++ =''
33##>D"H// =$00<<8# ) ) $&&KK((( ',,sI..7>>'"" 	**MM
  * * ! * *#{{400# %ts';'; %$D))))	** * * * * * * * * * * * * * *	  1 1 1
   ")''333"0 1 1 1 1 1 1 1 11	* Ks=   A A21A2&G7AGG	G	
H#&HHc                    	 t           j                            |           }|d S |j        }|t	          |d          sd S t
          j                            |           pt           j        	                    |          }|t	          |d          sd S |
                    d          }|                    dt          j                            |j                             t          j        j        | }|                    |          S )Nr   __file__/r   )r   r   r   r   rK   r8   r9   get
_bootstrap_loadrp   insertrQ   r<   dirnamer   rX   r   )packageresourcer   r   r   partsresource_names          r   r   r   X  s    * >##G,,D|t[F~WVZ88~t;??7## ,%%d++ 
{'#z22{t
 NN3E	LLBGOOCL11222GL%(M??=)))r(   c                    	 t           (dd l}d}|                    d| d| d|j                  a t                               |           }|st          d|           |                                }|                    d          rIt          j	        |d                   }|                    d	          }|r|
                    d
          ng }n| 
                    d
          }|                    d          }t          j	        |          }|rN|d         }| d
| }		 t          j	        |	          }|                    d           |	}n# t          $ r Y nw xY w|N|}
|D ]}t          |
|          }
|
S )Nr   z(?!\d)(\w+)(\.(?!\d)(\w+))*z	^(?P<pkg>z)(?P<cln>:(?P<obj>z)?)?$zinvalid format: clnr   objr4   )_NAME_PATTERNrer   UNICODEmatchrD   	groupdictr   r   rg   rp   popr:   r7   )r   r   dotted_wordsr.   gdr   r   r[   r-   sresults              r   resolve_namer     s   @ 			5

 $K| $K $K7C$K $K $K#%:/ / 	D!!A 64D44555	
B	vve}} %bi00u$)1C   r 

3))A,,%g.. 	aA  Q  A-a00		!     	 F $ $##Ms   !+E 
EE)Nr)   N)Nr)   rw   ))collectionsr   	functoolsr   simplegenericr   importlib.utilimportlib.machineryrQ   os.pathr8   typesr   rc   __all__r   __doc__r   r   r
   r   rF   r^   register	machinery
FileFinderrh   r   r   r   r   r   r:   r   r   r   r	   r   r   r   r   r,   r(   r   <module>r     s   $ " " " " " " 5 5 5 5 5 5             				  



          Z&@AA
E
   
  
  
 6G 6G 6G 6Gr1 1 1 14 ) ) ) )&* &* &* &*P   "$=? ? ?- - -H. H. H. H. H. H. H. H.Va a a a a a a aH#	%%%%%%. . . .8 "";0FGGGG 	 	 	D	  2! ! ! !:! ! !05 5 5*[ [ [|(* (* (*V G G G G Gs   #$C CC