
    d\                        d 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ZdZ	dZ
dZdZdZdZdZi Zd	 Zi Zd
 ZddZ G d d          Z G d d          Zd Zedk    r$	  e            ZdS # e$ r  ed           Y dS w xY wdS )z3Find modules used by a script, using introspection.    N                  c                 b    t                               | g                               |           d S N)packagePathMap
setdefaultappend)packagenamepaths       /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/modulefinder.pyAddPackagePathr      s,    k2..55d;;;;;    c                     |t           | <   d S r
   )replacePackageMap)oldnamenewnames     r   ReplacePackager   )   s    !(gr   c                    t           j        j                                         t           j        j                            | |          }|%t          d                    |           |           |j        t           j        j        u rddddt          ffS |j        t           j        j
        u rddddt          ffS |j        }|j                            |           r*dt          j                            |          ddt"          ffS t%          |j        t           j        j                  rt(          }net%          |j        t           j        j                  rt,          }n9t%          |j        t           j        j                  rt0          }nddddt2          ffS t5          j        |          }t          j                            |          d         }|||d|ffS )zDAn importlib reimplementation of imp.find_module (for our purposes).NzNo module named {name!r})name rb)	importlib	machinery
PathFinderinvalidate_caches	find_specImportErrorformatloaderBuiltinImporter
_C_BUILTINFrozenImporter
_PY_FROZENorigin
is_packageosr   dirname_PKG_DIRECTORY
isinstanceSourceFileLoader
_PY_SOURCEExtensionFileLoader_C_EXTENSIONSourcelessFileLoader_PY_COMPILED_SEARCH_ERRORio	open_codesplitext)r   r   spec	file_pathkindfilesuffixs          r   _find_moduler>   -   s    "44666)33D$??D|4;;;FFTRRRR {i)999TBJ///{i)888TBJ///I{d## JRW__Y//"b.1III$+y2CDD 
3	DK!4!H	I	I 3	DK!4!I	J	J 3 TBM222<	""DWi((,FVT4000r   c                       e Zd ZddZd ZdS )ModuleNc                 Z    || _         || _        || _        d | _        i | _        i | _        d S r
   )__name____file____path____code__globalnamesstarimports)selfr   r<   r   s       r   __init__zModule.__init__\   s8      r   c                 t    d| j         }| j        |d| j        z   }| j        |d| j        z   }|dz   }|S )NzModule(, ))rB   rC   rD   )rH   ss     r   __repr__zModule.__repr__i   sT     ==*=$dmm--A=$dmm--AGr   )NN)rB   
__module____qualname__rI   rN    r   r   r@   r@   Z   s7               r   r@   c                       e Zd ZddZd Zd Zd Zd Zd Zdd
Z	ddZ
d Zd Zd dZd Zd Zd Zd ZddZd Zd Zd Zd Zd!dZd Zd Zd Zd ZdS )"ModuleFinderNr   c                     |t           j        }|| _        i | _        i | _        || _        d| _        ||ng | _        ||ng | _        g | _        d S )Nr   )	sysr   modules
badmodulesdebugindentexcludesreplace_pathsprocessed_paths)rH   r   rX   rZ   r[   s        r   rI   zModuleFinder.__init__t   s`    <8D	
$,$8b.;.G]]R!r   c                     || j         k    rlt          | j                  D ]}t          dd           t          |d           |D ] }t          t	          |          d           !t                       d S d S )N    end)rX   rangerY   printrepr)rH   levelstrargsiargs         r   msgzModuleFinder.msg   s    DJ4;'' & &e%%%%%#3 * *d3iiS)))))GGGGG r   c                 b    |d         }|| j         k    r| j        dz   | _         | j        |  d S d S Nr   r   rX   rY   rj   rH   rg   re   s      r   msginzModuleFinder.msgin   >    QDJ+/DKDHdOOOO r   c                 b    |d         }|| j         k    r| j        dz
  | _         | j        |  d S d S rl   rm   rn   s      r   msgoutzModuleFinder.msgout   rp   r   c                     |                      dd|           t          j        |          5 }ddt          f}|                     d|||           d d d            d S # 1 swxY w Y   d S )Nr   
run_scriptr   r   __main__)rj   r6   r7   r0   load_module)rH   pathnamefpstuffs       r   rt   zModuleFinder.run_script   s    L(+++\(## 	>rz*EZXu===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   #AA #A c                 ,   t           j                            |          \  }}t           j                            |          \  }}t	          j        |          5 }|dt          f}|                     ||||           d d d            d S # 1 swxY w Y   d S )Nr   )r+   r   splitr8   r6   r7   r0   rv   )rH   rw   dirr   extrx   ry   s          r   	load_filezModuleFinder.load_file   s    GMM(++	TG$$T**	c\(## 	8r$
+ET2x777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   #B		BBr   c                    |                      dd||||           |                     ||          }|                     ||          \  }}|                     ||          }|s|S |j        r|                     ||           d S )Nr   import_hookre   )rj   determine_parentfind_head_package	load_tailrD   ensure_fromlist)	rH   r   callerfromlistre   parentqtailms	            r   r   zModuleFinder.import_hook   s    M45AAA&&vU&;;((664NN1d## 	H: 	.  H---tr   c                 H   |                      dd||           |r|dk    r|                     dd           d S |j        }|dk    r|j        r|dz  }|dk    r,| j        |         }||u sJ |                     dd|           |S |                    d          |k     rt          d          d                    |                    d          d |                    }| j        |         }|                     dd|           |S |j        r,| j        |         }||u sJ |                     dd|           |S d|v rR|	                    d          }|d |         }| j        |         }|j        |k    sJ |                     dd|           |S |                     dd           d S )	N   r   r   zdetermine_parent -> Noner   zdetermine_parent ->.zrelative importpath too deep)
ro   rr   rB   rD   rV   countr"   joinr{   rfind)rH   r   re   pnamer   rh   s         r   r   zModuleFinder.determine_parent   s   

1(&%888 	!KK56664A:: 
zze,''''A4f==={{3%''!"@AAAHHU[[--gvg677E\%(FKK0&999M? 	\%(FV####KK0&999M%<<C  A"1"IE\%(F?e++++KK0&999MA1222tr   c                    |                      dd||           d|v r-|                    d          }|d |         }||dz   d          }n|}d}|r|j        d|}n|}|                     |||          }|r|                     dd||f           ||fS |r:|}d }|                     |||          }|r|                     dd||f           ||fS |                     dd|           t          d|z             )	Nr   r   r   r   r   zfind_head_package ->"raise ImportError: No module namedNo module named )ro   findrB   import_modulerr   r"   )rH   r   r   rh   headr   qnamer   s           r   r   zModuleFinder.find_head_package   sA   

1)64888$;;		#A8D!:DDDD 	%5EEEtUF33 	KK1At9===d7N 	EF""477A A54yAAA$wA;UCCC,u4555r   c                    |                      dd||           |}|r|                    d          }|dk     rt          |          }|d |         ||dz   d          }}|j        d|}|                     |||          }|s)|                     dd|           t          d|z             ||                     dd|           |S )	Nr   r   r   r   r   r   r   zload_tail ->)ro   r   lenrB   r   rr   r"   )rH   r   r   r   rh   r   mnames          r   r   zModuleFinder.load_tail   s    

1k1d+++ 	>		#A1uu#d))abqb4!:$D zzz440E""422A >ACUKKK!"4u"<===  	> 	A~q)))r   c                 >   |                      dd|||           |D ]}|dk    r1|s.|                     |          }|r|                     ||d           9t          ||          s7|j        d|}|                     |||          }|st          d|z             d S )Nr   r   *r   r   r   )rj   find_all_submodulesr   hasattrrB   r   r"   )rH   r   r   	recursivesuballsubnamesubmods           r   r   zModuleFinder.ensure_fromlist   s    %q(I>>> 
	D 
	DCczz  822155C 8,,QQ777Q__ D%&ZZZ5++C!<< D%&87&BCCC
	D 
	Dr   c                    |j         sd S i }g }|t          j        j        d d          z  }|t          j        j        d d          z  }|t          j        j        d d          z  }|j         D ]}	 t          j        |          }n'# t          $ r | 	                    dd|           Y ;w xY w|D ]A}d }|D ]-}t          |          }	||	 d          |k    r|d |	          } n.|r|dk    r|||<   B|                                S )Nr   zcan't list directoryrI   )rD   r   r   EXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXESr+   listdirOSErrorrj   r   keys)
rH   r   rV   suffixesr|   namesr   modsuffns
             r   r   z ModuleFinder.find_all_submodules  sU   z 	F I':111==I'7::I'9!!!<<: 	' 	'C
3   2C888  ' '$  DD		AQBCCyD(("3QB3i )  '3*,,#&GCL' ||~~s   ,B!B%$B%c                    |                      dd|||           	 | j        |         }|                     dd|           |S # t          $ r Y nw xY w|| j        v r|                     dd           d S |r|j        |                     dd           d S 	 |                     ||o|j        |          \  }}}n(# t          $ r |                     ddd            Y d S w xY w	 |                     ||||          }|r|	                                 n# |r|	                                 w w xY w|rt          |||           |                     dd|           |S )Nr   r   zimport_module ->zimport_module -> None)ro   rV   rr   KeyErrorrW   rD   find_moduler"   rv   closesetattr)rH   partnamefqnamer   r   rx   rw   ry   s           r   r   zModuleFinder.import_module$  s   

1ox@@@	V$A KK-q111H	  	 	 	D	
 T_$$KK23334 	fo-KK23334	"&"2"28393Mfov#W #WB%% 	 	 	KK-t44444		  Xu==A 


  



 	)FHa(((A)1---s/   A 
AA"B7 7!CC D D(c                 F   |\  }}}|                      dd||od|           |t          k    r/|                     ||          }|                     dd|           |S |t          k    r$t          |                                |d          }	n|t          k    r	 |                                }
t          j	        
                    |
|i            n:# t          $ r-}|                     ddt          |          z   |            d }~ww xY wt          j        t          |
          dd                    }	nd }	|                     |          }||_        |	r9| j        r|                     |	          }	|	|_        |                     |	|           |                     dd|           |S )Nr   rv   rx   zload_module ->execzraise ImportError:    )ro   r-   load_packagerr   r0   compilereadr4   r   _bootstrap_external_classify_pycr"   rf   marshalloads
memoryview
add_modulerC   r[   replace_paths_in_coderE   	scan_code)rH   r   rx   rw   	file_infor=   modetyper   codataexcs               r   rv   zModuleFinder.load_moduleD  s   &d

1mVR[D(CCC>!!!!&(33AKK+Q///H:Hf55BB\!!wwyy-;;D&"MMMM   A4s3xx?JJJ z$//455BBBOOF##
 	"! 4//33AJNN2q!!!A'+++s   5C 
D(C??Dc                 ~    || j         vr
i | j         |<   |rd| j         |         |j        <   d S d| j         |         d<   d S )Nr   -)rW   rB   )rH   r   r   s      r   _add_badmodulezModuleFinder._add_badmodulea  sS    t&&$&DOD! 	+56DOD!&/222)*DOD!#&&&r   c           	         || j         v r|                     ||           d S 	 |                     |||           |r|D ]}|dz   |z   }|| j         v r|                     ||           *	 |                     |||g|           F# t          $ rD}|                     ddt          |                     |                     ||           Y d }~d }~ww xY wd S d S # t          $ rE}|                     ddt          |                     |                     ||           Y d }~d S d }~wt          $ rE}|                     ddt          |                     |                     ||           Y d }~d S d }~ww xY w)Nr   r   r   zImportError:zSyntaxError:)rW   r   r   r"   rj   rf   SyntaxError)rH   r   r   r   re   r   fullnamerj   s           r   _safe_import_hookzModuleFinder._safe_import_hooki  s   4?""f---F	>T6777  
># 	> 	>C#czC/H4?22++Hf=== >((vuE(JJJJ& > > >NCHH===++Hf========>
> 
>	> 	>  	. 	. 	.HHQC111f--------- 	. 	. 	.HHQC111f---------	.s;   C *B
C:CC
E6$:D$$E61:E11E6c              #      K   t          j        |          D ]	}d|ffV  
t          j        |          D ]\  }}}|dk    r	d||ffV  d|||ffV  d S )Nstorer   absolute_importrelative_import)dis_find_store_names_find_imports)rH   r   r   re   r   s        r   scan_opcodeszModuleFinder.scan_opcodes  s      )"-- 	# 	#DD7"""""%(%6r%:%: 	A 	A!D%zz'(D)999999'%4)@@@@@@		A 	Ar   c                    |j         }| j        } ||          D ]k\  }}|dk    r|\  }d|j        |<   |dk    r|\  }}d}	|d|v rd}	d |D             }|                     |||d           |	rd }
|j        r%| j                            |j        dz   |z             }
|
| j                            |          }
|
P|j                            |
j                   |j	                            |
j	                   |
j
        
d|j	        |<   d|j	        |<   |d	k    rZ|\  }}}|r|                     ||||           '|                     ||          }|                     |j        d |d           ^t          |          |j        D ]5}t          |t          |                    r|                     ||           6d S )
Nr   r   r   r   r   c                     g | ]
}|d k    |S )r   rQ   ).0fs     r   
<listcomp>z*ModuleFinder.scan_code.<locals>.<listcomp>  s    @@@aqCxxxxxr   r   r   r   )co_coder   rF   r   rD   rV   getrB   updaterG   rE   r   RuntimeError	co_constsr.   r   r   )rH   r   r   codescannerwhatrg   r   r   	have_starmmre   r   cs                 r   r   zModuleFinder.scan_code  s+   z#!'"++ (	) (	)JD$w&'d##***!%$	'h$%	@@8@@@H&&tQ&BBB 0 Bz G "\--aj3.>.EFFz!\--d33~,,R^<<<,,R^<<<;.23AM$/./d+***(,%x U**4HE*JJJJ!221E2BBF**6?D(RS*TTTT #4((( 	% 	%A!T"XX&& %q!$$$	% 	%r   c                    |                      dd||           t                              |          }|r|}|                     |          }||_        |g|_        |j        t                              |g           z   |_        |                     d|j                  \  }}}	 |                     ||||           | 	                    dd|           ||r|
                                 S S # |r|
                                 w w xY w)Nr   r   rI   zload_package ->)ro   r   r   r   rC   rD   r   r   rv   rr   r   )rH   r   rw   r   r   rx   bufry   s           r   r   zModuleFinder.load_package  s   

1nfh777#''// 	FOOF##
Z
 Z."4"4VR"@"@@
))*ajAAC	VRe444KK,a000 



r 



s   #0C+ +Dc                 d    || j         v r| j         |         S t          |          x| j         |<   }|S r
   )rV   r@   )rH   r   r   s      r   r   zModuleFinder.add_module  s8    T\!!<''#)&>>1Vqr   c                     ||j         dz   |z   }n|}|| j        v r&|                     dd|           t          |          |"|t          j        v rd d ddt          ffS | j        }t          ||          S )Nr   r   zfind_module -> Excludedr   )	rB   rZ   rr   r"   rU   builtin_module_namesr&   r   r>   )rH   r   r   r   r   s        r   r   zModuleFinder.find_module  s    s*4/HHHt}$$KK4h???d###<s///dRZ$8999DD$'''r   c           	         t                       t          ddz             t          ddz             t          | j                                                  }|D ]S}| j        |         }|j        rt          dd           nt          dd           t          d|z  |j        pd	           T|                                 \  }}|rst                       t          d
           |D ]S}t          | j        |                                                   }t          d|dd                    |                     T|rt                       t          dd           t          d           |D ]U}t          | j        |                                                   }t          d|dd                    |                     TdS dS )zPrint a report to stdout, listing the found modules with their
        paths, as well as modules that are missing, or seem to be missing.
        z
  %-25s %s)NameFile)----r   Pr_   r`   r   z%-25sr   zMissing modules:?zimported fromrK   z7Submodules that appear to be missing, but could also bez#global names in the parent package:N)	rc   sortedrV   r   rD   rC   any_missing_mayberW   r   )rH   r   keyr   missingmayber   modss           r   reportzModuleFinder.report  s    	l--...l--...dl''))** 	3 	3CS!Az $cs#####cs####'C-!1r2222 //11 	CGGG$%%% C Cdod388::;;c4$))D//BBBB 	CGGGKQTUUUU7888 C Cdod388::;;c4$))D//BBBB	C 	CC Cr   c                 :    |                                  \  }}||z   S )zReturn a list of modules that appear to be missing. Use
        any_missing_maybe() if you want to know which modules are
        certain to be missing, and which *may* be missing.
        )r   )rH   r   r   s      r   any_missingzModuleFinder.any_missing  s#    
 //11r   c                 @   g }g }| j         D ]}|| j        v r|                    d          }|dk     r|                    |           =||dz   d         }|d|         }| j                            |          }|b|| j         |         v r|                    |           ||j        v r|j        r|                    |           |                    |           |                    |           |                                 |                                 ||fS )a  Return two lists, one with modules that are certainly missing
        and one with modules that *may* be missing. The latter names could
        either be submodules *or* just global names in the package.

        The reason it can't always be determined is that it's impossible to
        tell which names are imported when "from module import *" is done
        with an extension module, short of actually importing it.
        r   r   r   N)	rW   rZ   r   r   rV   r   rF   rG   sort)rH   r   r   r   rh   r   pkgnamepkgs           r   r   zModuleFinder.any_missing_maybe  s>    O 	% 	%Dt}$$

3A1uut$$$1Q344jG2A2hG,""7++Cdod333 NN4((((//_ 
) LL&&&& NN4((((t$$$$

~r   c                    t           j                            |j                  x}}| j        D ]6\  }}|                    |          r||t          |          d          z   } n7| j        r`|| j        vrW||k    r| 	                    dd|d|           n| 	                    dd|d           | j        
                    |           t          |j                  }t          t          |                    D ]C}t          ||         t          |                    r|                     ||                   ||<   D|                    t%          |          |          S )Nr   zco_filename z changed to z remains unchanged)r   co_filename)r+   r   normpathr  r[   
startswithr   rX   r\   rr   r   listr   rb   r.   r   r   replacetuple)rH   r   new_filenameoriginal_filenamer   rconstsrh   s           r   r   z"ModuleFinder.replace_paths_in_codeC  s   +-7+;+;BN+K+KK(& 	 	DAq ++A..  #4SVVWW#== : 	;+43GGG000AA'8'8'8 H I I I I AA'8'8'8 ; < < < ''(9:::bl##s6{{## 	B 	BA&)T"XX.. B 66vayAAq	zzE&MM|zLLLr   )Nr   NN)NNr   )r   )r   r
   )rB   rO   rP   rI   rj   ro   rr   rt   r~   r   r   r   r   r   r   r   rv   r   r   r   r   r   r   r   r   r   r   r   rQ   r   r   rS   rS   r   s       
" 
" 
" 
"      > > >8 8 8	 	 	 	! ! ! !F6 6 66  D D D D  8  @  :+ + +> > > >4A A A/% /% /%b  *  ( ( ( ($ C  C  CD  , , ,\M M M M Mr   rS   c                     dd l } 	 |                      t          j        dd          d          \  }}n'# | j        $ r}t	          |           Y d }~d S d }~ww xY wd}d}g }g }|D ]c\  }}	|dk    r|dz   }|dk    rd}|dk    r"||	                    t          j                  z   }|dk    rd}|dk    r|                    |	           d|sd	}
n|d         }
t          j	        d d          }t          j	        
                    |
          |d<   ||z   }|dk    r1t	          d
           |D ]}t	          dt          |                      t          |||          }|dd          D ]g}|dk    rd}|rE|dd          dk    r!|                    |d d         d dg           <|                    |           R|                    |           h|                    |
           |                                 |S )Nr   r   zdmp:qx:z-dz-mz-pz-qz-xzhello.pyzpath:r^   z.*r   )getoptrU   argverrorrc   r{   r+   pathsepr   r   r,   rd   rS   r   r~   rt   r   )r  optsrg   rj   rX   domodsaddpathexcludeoascriptr   itemmfri   s                  r   testr  [  sN   MMM]]38ABB<;;
dd<   c



 EFGG 
 
199AIE99F99
 3 33G99E99NN1  a 8AAA;Dgoof%%DGT>Dqyyg 	% 	%D%d$$$$ 
dE7	+	+BABBx 
 
$;;F 	233x4s3B3xu5555s####LLMM&IIKKKIs   +2 
AAAru   z
[interrupted]r
   )__doc__r   importlib._bootstrap_externalr   importlib.machineryr   r+   r6   rU   r5   r0   r4   r2   r-   r&   r(   r   r   r   r   r>   r@   rS   r  rB   r  KeyboardInterruptrc   rQ   r   r   <module>r#     s   9 9 



 $ $ $ $      				 				 



 


 < < <  ) ) )*1 *1 *1 *1Z       0fM fM fM fM fM fM fM fMR8 8 8v z!TVV ! ! !      ! s   
A+ +A?>A?