
    z%iiG                        	 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d
ZddZedd       ZddZej-                  ej.                  j0                  e       	 d dlZd dlmZ ddZej-                  ee       d ZddZd Zd Z d Z!d Z"da#d Z$y# e$ r Y  w xY w)    )
namedtuple)singledispatchN)
ModuleType)
get_importeriter_importers
get_loaderfind_loaderwalk_packagesiter_modulesget_data	read_codeextend_path
ModuleInfor   zmodule_finder name ispkgz.A namedtuple with minimal info about a module.c                     dd l }| j                  d      }|t        j                  j                  k7  ry | j                  d       |j                  |       S )Nr         )marshalread	importlibutilMAGIC_NUMBERload)streamr   magics      ;/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/pkgutil.pyr   r      sC     KKNE	+++
KKO<<    c              #     K   	 i fd}t        | |      D ]  }| |j                  s	 t        |j                         t	        t
        j                  |j                     dd       xs g } | D cg c]  } ||      r| } }t        | |j                  dz   |      E d {     y c c}w 7 # t        $ r | ||j                         Y t        $ r | ||j                         n Y w xY ww)Nc                     | |v ryd|| <   y )NT )pms     r   seenzwalk_packages.<locals>.seenD   s    6!r   __path__.)
r   ispkg
__import__namegetattrsysmodulesr
   ImportError	Exception)pathprefixonerrorr"   infor    s         r   r
   r
   '   s     8  
 T6* G
::G499% s{{4995z4HNB $(7atAw77(tyy}gFFF)G$ 8F  '&DII& &DII& 'sQ   &C2B/0C2/B(=B(C2 B-!C2/C/C2C/,C2.C//C2c              #      K   	 | t               }n+t        | t              rt        d      t	        t
        |       }i }|D ]/  }t        ||      D ]  \  }}||vsd||<   t        |||         1 y w)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'   r%   s          r   r   r   `   s      |"$		D#	 % & 	& d+	G 10F; 	1KD%7" ! D%00	11s   AA3A3c                 @    t        | d      sg S | j                  |      S )Nr   )hasattrr   )importerr.   s     r   r7   r7   z   s"    8^,	  ((r   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   __init__Fr$   Tr2   )	r-   osisdirinspectlistdirOSErrorsortgetmodulenamejoin)r=   r.   r9   rB   	filenamesfnmodnamer-   r%   dircontentssubnames              r   _iter_file_finder_modulesrM      sS    }}BGGMM(--$@GJJx}}-	 NN *''+J'W"4ww||HMM2.277==.3b=G! jj. " !//3J& E	 s') GG7"E))3*  	"  ! !s`   =E D3 BE#E8EEE"E3E>E EEEEEE)zipimporterc              #   
  K   t        t        j                  | j                           }| j                  }t        |      }i }dd l}|D ]  }|j                  |      s||d  j                  t        j                        }t        |      dk(  r/|d   j                  d      r|d   |vrd||d   <   ||d   z   df t        |      dk7  r|j                  |d         }|dk(  r|sd|vs||vsd||<   ||z   df  y w)	Nr      r2   z__init__.pyTr?   r$   F)sorted	zipimport_zip_directory_cachearchiver.   lenrB   
startswithsplitr@   seprF   )	r=   r.   dirlist_prefixplenr9   rB   rI   rJ   s	            r   iter_zipimport_modulesr\      s    778H8HIJ//7| 	.B==)DE(B2wzbe..}=a5'%&GBqEN 2a5.$..2wz++BqE2G
"3g-'2H#$ w&--)	.s   C%D(D-D2Dc                    	 t        j                  |       } 	 t        j                  |    }|S # t        $ rV t        j
                  D ]=  }	  ||       }t        j                  j                  | |        Y |S # t        $ r Y ;w xY w d }Y |S w xY w)N)r@   fsdecoder)   path_importer_cacheKeyError
path_hooks
setdefaultr+   )	path_itemr=   	path_hooks      r   r   r      s     I&I**95 O  	 	I$Y/''229hG
 O	  	 HO	s3   - B
(A62B6	B?BBBBc              #   ^  K   	 | j                  d      rdj                  |       }t        |      d| v r9| j                  d      d   }t	        j
                  |      }t        |dd       }|)y t        j                  E d {    t        j                  }|D ]  }t        |        y 7 )w)Nr$   'Relative module name {!r} not supportedr   r#   )rV   formatr+   
rpartitionr   import_moduler(   r)   	meta_pathr-   r   )fullnamemsgpkg_namepkgr-   items         r   r   r      s     
 37>>xH#
h&&s+A.%%h/sJ-<==  xx !4  ! 	!s   A?B-B+*B-c                 P   	 t        j                  dt         j                   dd       | t        j                  v rt        j                  |    } | y t        | t              r8| }t        |dd       }||S t        |dd       y |j                  }t        |      S | }t        |      S )Nzpkgutil.get_loader(; use importlib.util.find_spec() instead      remove
__loader____spec__)
warnings_deprecated_DEPRECATED_MSGr)   r*   r3   r   r(   __name__r	   )module_or_namemoduleloaderrk   s       r   r   r   
  s     -$445 6B B ') $^4!.*-t4M6:t,4?? x   "x  r   c           	         	 t        j                  dt         j                   dd       | j                  d      rdj	                  |       }t        |      	 t        j                  j                  |       }||j                  S d S # t
        t        t        t        f$ r-}d}t        |j	                  | t        |      |            |d }~ww xY w)Nzpkgutil.find_loaderrq   rr   ru   r$   rf   z,Error while finding loader for {!r} ({}: {}))ry   rz   r{   rV   rg   r+   r   r   	find_specAttributeError	TypeErrorr5   typer   )rk   rl   specexs       r   r	   r	   &  s     .$445 6B B ') 37>>xH#F~~''1 *4;;44 J? F =#**XtBx<=2EFs   B C!(C		Cc           	         	 t        | t              s| S |dz   }| d d  } |j                  d      \  }}}|r	 t        j                  |   j
                  }nt        j                  }|D ]%  }t        |t              st        |      }|og }	t        |d      r$|j                  |      }
|
1|
j                  xs g }	n t        |d      r|j                  |      \  }}	|	D ]  }|| vs| j                  |        t         j                  j#                  ||      }t         j                  j%                  |      s	 t'        |      }|5  |D ]8  }|j)                  d      }|r|j+                  d      r(| j                  |       : 	 d d d        ( | S # t        t        f$ r | cY S w xY w# 1 sw Y   LxY w# t,        $ r1}t        j.                  j1                  d|d|d       Y d }~d }~ww xY w)	Nz.pkgr$   r   r	   
#zCan't open z: )r3   listrh   r)   r*   r#   r`   r   r-   r4   r   r<   r   submodule_search_locationsr	   appendr@   rG   isfileopenrstriprV   rD   stderrwrite)r-   r'   	sname_pkgparent_package_
final_namesearch_pathdirfinderportionsr   portionpkgfileflinerl   s                   r   r   r   ?  s   @ dD! vI7D$(OOC$8!NAz	++n5>>K hh $*#s#c"Hv{+''
3##>>D"H/$00<8# ) $&KK(	) '',,sI.77>>'"*M
  * ! *#{{40#ts';$D)	** *?$*L K[ .) 	 K	L* *	  1

  ")3"0 1 11s5   F 8F5>F(F%$F%(F2	5	G/>&G**G/c                 
   	 t         j                  j                  |       }|y |j                  }|t	        |d      sy t
        j                  j                  |       xs t         j                  j                  |      }|t	        |d      sy |j                  d      }|j                  dt        j                  j                  |j                               t        j                  j                   | }|j#                  |      S )Nr   __file__/r   )r   r   r   r   r<   r)   r*   get
_bootstrap_loadrW   insertr@   r-   dirnamer   rG   r   )packageresourcer   r   modpartsresource_names          r   r   r     s    * >>##G,D|[[F~WVZ8;;??7# ,%%d+ 
{'#z2
 NN3E	LLBGGOOCLL12GGLL%(M??=))r   c                    	 t         )dd l}d}|j                  d| d| d|j                        a t         j	                  |       }|st        d|       |j                         }|j                  d      r?t        j                  |d         }|j                  d	      }|r|j                  d
      ng }nq| j                  d
      }|j                  d      }t        j                  |      }|r8|d   }| d
| }		 t        j                  |	      }|j                  d       |	}|r8|}
|D ]  }t        |
|      }
 |
S # t        $ r Y "w xY w)Nr   z(?!\d)(\w+)(\.(?!\d)(\w+))*z	^(?P<pkg>z)(?P<cln>:(?P<obj>z)?)?$zinvalid format: clnrn   objr$   )_NAME_PATTERNrecompileUNICODEmatchr5   	groupdictr   r   ri   rW   popr+   r(   )r'   r   dotted_wordsr!   gdr   r   rJ   r    sresults              r   resolve_namer     sc   @ 5

Y|n =77CnE$K#%::/ 	D!A+D8455	
B	vve}%%bi0u$)C r 

3))A,%%g.aA)1QC A--a0		!  F $#$M  s   <(D> >	E
	E
)N N)Nr   )r   )%collectionsr   	functoolsr   simplegenericr   importlib.utilimportlib.machineryr@   os.pathr)   typesr   ry   __all__r   __doc__r   r
   r   r7   rM   register	machinery
FileFinderrR   rN   r\   r+   r   r   r   r	   r   r   r   r   r   r   r   <module>r      s    $ " 5    	  
   &@A
E
 
 6Gr14 ) )&*P   ""$=?#	%.8 "";0FG2!:!852[|(*V Gu  		s    B< <CC