Ë
    òT•j“\  ã                   óè   — 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yy# e$ r  ed«       Y yw xY w)z3Find modules used by a script, using introspection.é    Né   é   é   é   é   é   c                 óN   — t         j                  | g «      j                  |«       y ©N)ÚpackagePathMapÚ
setdefaultÚappend)ÚpackagenameÚpaths     ú#/usr/lib/python3.12/modulefinder.pyÚAddPackagePathr      s   € Ü×Ñ˜k¨2Ó.×5Ñ5°dÕ;ó    c                 ó   — |t         | <   y r
   )ÚreplacePackageMap)ÚoldnameÚnewnames     r   ÚReplacePackager   )   s   € Ø!(Ô�gÒr   c                 ó   — t         j                  j                  j                  «        t         j                  j                  j	                  | |«      }|€t        dj                  | ¬«      | ¬«      ‚|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                  j                  | «      r)dt        j                  j!                  |«      ddt"        ffS t%        |j                  t         j                  j&                  «      rt(        }nvt%        |j                  t         j                  j*                  «      rt,        }nAt%        |j                  t         j                  j.                  «      rt0        }nddddt2        ffS t5        j6                  |«      }t        j                  j9                  |«      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ä×Ñ×)Ñ)×3Ñ3°D¸$Ó?€Dà€|ÜÐ4×;Ñ;ÀÐ;ÓFÈTÔRÐRð ‡{�{”i×)Ñ)×9Ñ9Ñ9Ø�T˜B ¤JÐ/Ð/Ð/à‡{�{”i×)Ñ)×8Ñ8Ñ8Ø�T˜B ¤JÐ/Ð/Ð/à—‘€Ià‡{�{×Ñ˜dÔ#Ø”R—W‘W—_‘_ YÓ/°"°b¼.Ð1IÐIÐIä�$—+‘+œy×2Ñ2×CÑCÔDÜ‰ä	�D—K‘K¤×!4Ñ!4×!HÑ!HÔ	IÜ‰ä	�D—K‘K¤×!4Ñ!4×!IÑ!IÔ	JÜ‰ð �T˜B ¤MÐ2Ð2Ð2ä�<‰<˜	Ó"€DÜ�W‰W×Ñ˜iÓ(¨Ñ,€Fà�˜V T¨4Ð0Ð0Ð0r   c                   ó   — e Zd Zdd„Zd„ Zy)ÚModuleNc                 óX   — || _         || _        || _        d | _        i | _        i | _        y r
   )Ú__name__Ú__file__Ú__path__Ú__code__ÚglobalnamesÚstarimports)Úselfr   r<   r   s       r   Ú__init__zModule.__init__\   s2   € ØˆŒØˆŒØˆŒØˆŒð ˆÔð ˆÕr   c                 ó¦   — 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   sR   � ØŸ=š=Ð*ˆØ�=‰=Ð$Ù˜dŸmšmÐ-Ñ-ˆAØ�=‰=Ð$Ù˜dŸmšmÐ-Ñ-ˆAØ�‰GˆØˆr   )NN)rB   Ú
__module__Ú__qualname__rI   rN   © r   r   r@   r@   Z   s   „ óó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y) ÚModuleFinderNc                 ó¨   — |€t         j                  }|| _        i | _        i | _        || _        d| _        |�|ng | _        |�|ng | _        g | _        y )Nr   )	Úsysr   ÚmodulesÚ
badmodulesÚdebugÚindentÚexcludesÚreplace_pathsÚprocessed_paths)rH   r   rX   rZ   r[   s        r   rI   zModuleFinder.__init__t   sX   € Øˆ<Ü—8‘8ˆDØˆŒ	ØˆŒØˆŒØˆŒ
ØˆŒØ$,Ð$8™¸bˆŒØ.;Ð.G™]ÈRˆÔØ!ˆÕr   c                 óÚ   — || j                   k  r\t        | j                  «      D ]  }t        dd¬«       Œ t        |d¬«       |D ]  }t        t	        |«      d¬«       Œ t        «        y y )Nú   ú ©Úend)rX   ÚrangerY   ÚprintÚrepr)rH   ÚlevelÚstrÚargsÚiÚargs         r   ÚmsgzModuleFinder.msg€   sa   € Ø�D—J‘JÒÜ˜4Ÿ;™;Ó'ò &�Ü�e Ö%ð&ä�#˜3ÕØò *�Ü”d˜3“i SÖ)ð*ä�Gð r   c                 ót   — |d   }|| j                   k  r$| j                  dz   | _         | j                  |Ž  y y ©Nr   r   ©rX   rY   rj   ©rH   rg   re   s      r   ÚmsginzModuleFinder.msgin‰   ó8   € Ø�Q‘ˆØ�D—J‘JÒØŸ+™+¨™/ˆDŒKØˆD�H‰H�dŠOð r   c                 ót   — |d   }|| j                   k  r$| j                  dz
  | _         | j                  |Ž  y y rl   rm   rn   s      r   ÚmsgoutzModuleFinder.msgout�   rp   r   c                 ó¸   — | j                  dd|«       t        j                  |«      5 }ddt        f}| j	                  d|||«       d d d «       y # 1 sw Y   y xY w)Nr   Ú
run_scriptr   r   Ú__main__)rj   r6   r7   r0   Úload_module)rH   ÚpathnameÚfpÚstuffs       r   rt   zModuleFinder.run_script•   sU   € Ø�‰��L (Ô+Ü�\‰\˜(Ó#ð 	> rØ˜œzÐ*ˆEØ×Ñ˜Z¨¨X°uÔ=÷	>÷ 	>ñ 	>ús   ©AÁAc                 ó  — t         j                  j                  |«      \  }}t         j                  j                  |«      \  }}t	        j
                  |«      5 }|dt        f}| j                  ||||«       d d d «       y # 1 sw Y   y xY w)Nr   )r+   r   Úsplitr8   r6   r7   r0   rv   )rH   rw   Údirr   Úextrx   ry   s          r   Ú	load_filezModuleFinder.load_file›   ss   € Ü—G‘G—M‘M (Ó+‰	ˆˆTÜ—G‘G×$Ñ$ TÓ*‰	ˆˆcÜ�\‰\˜(Ó#ð 	8 rØ˜$¤
Ð+ˆEØ×Ñ˜T 2 x°Ô7÷	8÷ 	8ñ 	8ús   ÁBÂB
c                 óè   — | j                  dd||||«       | j                  ||¬«      }| j                  ||«      \  }}| j                  ||«      }|s|S |j                  r| j                  ||«       y )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¢   su   € Ø�‰��M 4¨°¸5ÔAØ×&Ñ& v°UÐ&Ó;ˆØ×(Ñ(¨°Ó6‰ˆˆ4Ø�N‰N˜1˜dÓ#ˆÙØˆHØ�:Š:Ø× Ñ   HÔ-Ør   c                 óþ  — | j                  dd||«       |r|dk(  r| j                  dd«       y |j                  }|dk\  r§|j                  r|dz  }|dk(  r*| j                  |   }||u sJ ‚| j                  dd|«       |S |j                  d«      |k  rt        d«      ‚dj                  |j                  d«      d |  «      }| j                  |   }| j                  dd|«       |S |j                  r*| j                  |   }||u sJ ‚| j                  dd|«       |S d|v rK|j                  d«      }|d | }| j                  |   }|j                  |k(  sJ ‚| j                  dd|«       |S | j                  dd«       y )	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Ù˜ !šØ�K‰K˜Ð5Ô6ØØ—‘ˆØ�AŠ:Ø�ŠØ˜‘
�Ø˜ŠzØŸ™ eÑ,�Ø Ñ'Ð'Ð'Ø—‘˜AÐ4°fÔ=Ø�Ø�{‰{˜3Ó %Ò'Ü!Ð"@ÓAÐAØ—H‘H˜UŸ[™[¨Ó-¨g°¨vÐ6Ó7ˆEØ—\‘\ %Ñ(ˆFØ�K‰K˜Ð0°&Ô9ØˆMØ�?Š?Ø—\‘\ %Ñ(ˆFØ˜VÑ#Ð#Ð#Ø�K‰K˜Ð0°&Ô9ØˆMØ�%‰<Ø—‘˜CÓ ˆAØ˜"˜1�IˆEØ—\‘\ %Ñ(ˆFØ—?‘? eÒ+Ð+Ð+Ø�K‰K˜Ð0°&Ô9ØˆMØ�‰�AÐ1Ô2Ør   c                 óª  — | j                  dd||«       d|v r|j                  d«      }|d | }||dz   d  }n|}d}|r|j                  ›d|›�}n|}| j                  |||«      }|r| j	                  dd||f«       ||fS |r2|}d }| j                  |||«      }|r| j	                  dd||f«       ||fS | j	                  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Ð   sü   € Ø�
‰
�1Ð)¨6°4Ô8Ø�$‰;Ø—	‘	˜#“ˆAØ˜˜�8ˆDØ˜˜!™˜�:‰DàˆDØˆDÙØ%Ÿ›±Ð5‰EàˆEØ×Ñ˜t U¨FÓ3ˆÙØ�K‰K˜Ð1°A°t°9Ô=Ø�d�7ˆNÙØˆEØˆFØ×"Ñ" 4¨°Ó7ˆAÙØ—‘˜AÐ5¸¸4°yÔAØ˜$�w�Ø�‰�AÐ;¸UÔCÜÐ,¨uÑ4Ó5Ð5r   c                 óL  — | j                  dd||«       |}|rx|j                  d«      }|dk  rt        |«      }|d | ||dz   d  }}|j                  ›d|›�}| j	                  |||«      }|s!| j                  dd|«       t        d|z   «      ‚|rŒx| j                  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´   € Ø�
‰
�1�k 1 dÔ+ØˆÙØ—	‘	˜#“ˆAØ�1Šuœ#˜d›)�aØ˜b˜q˜ 4¨¨!©¨ :�$ˆDØ Ÿz›z©4Ð0ˆEØ×"Ñ" 4¨°Ó2ˆAÙØ—‘˜AÐCÀUÔKÜ!Ð"4°uÑ"<Ó=Ð=ò ð 	�‰�A�~ qÔ)Øˆr   c                 ó  — | j                  dd|||«       |D ]s  }|dk(  r+|rŒ| j                  |«      }|sŒ| j                  ||d«       Œ3t        ||«      rŒ@|j                  ›d|›�}| j                  |||«      }|rŒgt        d|z   «      ‚ y )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ˆCØ�cŠzÚ Ø×2Ñ2°1Ó5�CÚØ×,Ñ,¨Q°°QÕ7Ü˜Q •_Ø%&§Z£Z±Ð5�Ø×+Ñ+¨C°¸!Ó<�ÚÜ%Ð&8¸7Ñ&BÓCÐCñ
	Dr   c                 ó
  — |j                   sy i }g }|t        j                  j                  d d  z  }|t        j                  j                  d d  z  }|t        j                  j
                  d d  z  }|j                   D ]R  }	 t        j                  |«      }|D ]5  }d }|D ]  }t        |«      }	||	 d  |k(  sŒ|d |	  } n |sŒ+|dk7  sŒ1|||<   Œ7 ŒT |j                  «       S # t        $ r | j                  dd|«       Y Œƒw xY w)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  s$  € Ø�zŠzØØˆð ˆØ”I×'Ñ'×:Ñ:¹1Ð=Ñ=ˆØ”I×'Ñ'×7Ñ7¹Ð:Ñ:ˆØ”I×'Ñ'×9Ñ9¹!Ð<Ñ<ˆØ—:‘:ò 	'ˆCðÜŸ
™
 3›�ð ò '�Ø�Ø$ò �DÜ˜D›	�AØ˜Q˜B˜C�y DÓ(Ø" 3 Q B˜i˜Ùð	ò
 ˜3 *Ó,Ø#&�G˜C’Lñ'ð	'ð �|‰|‹~Ðøô ò Ø—‘˜Ð2°CÔ8Ùðús   ÂC#Ã#DÄDc                 ór  — | j                  dd|||«       	 | j                  |   }| j                  dd|«       |S # t        $ r Y nw xY w|| j                  v r| j                  dd«       y |r|j
                  €| j                  dd«       y 	 | j                  ||xr |j
                  |«      \  }}}n"# t        $ r | j                  ddd «       Y y w xY w	 | j                  ||||«      }|r)|j                  «        n# |r|j                  «        w w xY w|rt        |||«       | j                  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$  sD  € Ø�
‰
�1�o x°¸Ô@ð	Ø—‘˜VÑ$ˆAð �K‰K˜Ð-¨qÔ1ØˆHøô	 ò 	Ùð	úð
 �T—_‘_Ñ$Ø�K‰K˜Ð2Ô3ØÙ�f—o‘oÐ-Ø�K‰K˜Ð2Ô3Øð	Ø"&×"2Ñ"2°8Ø39Ò3M¸f¿o¹oÈvó#WÑˆB�™%øäò 	Ø�K‰K˜Ð-¨tÔ4Ùð	úð	Ø× Ñ  ¨¨X°uÓ=ˆAáØ—‘•
øñ Ø—‘•
ð úáÜ�F˜H aÔ(Ø�‰�AÐ)¨1Ô-Øˆs-   —; »	AÁAÂ%B3 Â3CÃCÃC= Ã=Dc                 óÔ  — |\  }}}| j                  dd||xr d|«       |t        k(  r'| j                  ||«      }| j                  dd|«       |S |t        k(  rt        |j                  «       |d«      }	n_|t        k(  rT	 |j                  «       }
t        j                  j                  |
|i «       t        j                  t        |
«      dd  «      }	nd }	| j!                  |«      }||_        |	r6| j$                  r| j'                  |	«      }	|	|_        | j+                  |	|«       | j                  dd|«       |S # t        $ r%}| j                  ddt        |«      z   |«       ‚ d }~ww xY w)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  sN  € Ø&Ñˆ��dØ�
‰
�1�m V¨Rª[°D¸(ÔCØ”>Ò!Ø×!Ñ! &¨(Ó3ˆAØ�K‰K˜Ð+¨QÔ/ØˆHØ”:ÒÜ˜Ÿ™› H¨fÓ5‰BØ”\Ò!ðØ—w‘w“y�Ü×-Ñ-×;Ñ;¸DÀ&È"ÔMô —‘œz¨$Ó/°°Ð4Ó5‰BàˆBØ�O‰O˜FÓ#ˆØˆŒ
ÙØ×!Ò!Ø×/Ñ/°Ó3�ØˆAŒJØ�N‰N˜2˜qÔ!Ø�‰�AÐ'¨Ô+Øˆøô ò Ø—‘˜AÐ4´s¸3³xÑ?ÀÔJØûðús   Á?1D9 Ä9	E'Å E"Å"E'c                 ó    — || j                   vri | j                   |<   |rd| j                   |   |j                  <   y d| j                   |   d<   y )Nr   ú-)rW   rB   )rH   r   r†   s      r   Ú_add_badmodulezModuleFinder._add_badmodulea  sI   € Ø�t—‘Ñ&Ø$&ˆD�O‰O˜DÑ!ÙØ56ˆD�O‰O˜DÑ! &§/¡/Ò2à)*ˆD�O‰O˜DÑ! #Ò&r   c           	      ó’  — || j                   v r| j                  ||«       y 	 | j                  |||¬«       |rH|D ]B  }|dz   |z   }|| j                   v r| j                  ||«       Œ,	 | j                  |||g|¬«       ŒD y y # t        $ r8}| j	                  ddt        |«      «       | j                  ||«       Y d }~Œƒd }~ww xY w# t        $ r8}| j	                  ddt        |«      «       | j                  ||«       Y d }~y d }~wt        $ r8}| j	                  ddt        |«      «       | j                  ||«       Y d }~y 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Ô-Øð	>Ø×Ñ˜T 6°ÐÔ7ñ Ø#ò 	>�CØ# c™z¨CÑ/�HØ 4§?¡?Ñ2Ø×+Ñ+¨H°fÔ=Ø ð>Ø×(Ñ(¨¨v¸°uÀEÐ(ÕJñ	>ð øô 'ò >ØŸ™  N´C¸³HÔ=Ø×+Ñ+¨H°f×=Ñ=ûð>ûô ò 	.Ø�H‰H�Q˜¬¨C«Ô1Ø×Ñ  f×-Ñ-ûÜò 	.Ø�H‰H�Q˜¬¨C«Ô1Ø×Ñ  f×-Ñ-ûð	.ús;   £C Á(BÂ	CÂ.B>Â>CÃ	EÃ.DÄEÄ.EÅEc              #   ó¸   K  — t        j                  |«      D ]	  }d|ff–— Œ t        j                  |«      D ]  \  }}}|dk(  r	d||ff–— Œd|||ff–— Œ y ­w)NÚstorer   Úabsolute_importÚrelative_import)ÚdisÚ_find_store_namesÚ_find_imports)rH   rÊ   r   re   r‡   s        r   Úscan_opcodeszModuleFinder.scan_opcodesƒ  sy   è ø€ ä×)Ñ)¨"Ó-ò 	#ˆDØ˜D˜7Ð"Ó"ð	#ä%(×%6Ñ%6°rÓ%:ò 	AÑ!ˆD�%˜Ø˜ŠzØ'¨(°DÐ)9Ð9Ó9à'¨%°¸4Ð)@Ð@Ó@ñ		Aùs   ‚AAc                 óð  — |j                   }| j                  } ||«      D �]”  \  }}|dk(  r|\  }d|j                  |<   Œ |dk(  �r|\  }}d}	|�d|v rd}	|D �
cg c]
  }
|
dk7  sŒ	|
‘Œ }}
| j                  |||d¬«       |	sŒbd }|j                  r+| j
                  j                  |j                  dz   |z   «      }|€| j
                  j                  |«      }|�i|j                  j                  |j                  «       |j                  j                  |j                  «       |j                  ��Œd|j                  |<   �Œ#d|j                  |<   �Œ4|dk(  rS|\  }}}|r| j                  ||||¬«       �ŒX| j                  ||¬«      }| j                  |j                  d |d¬«       �ŒŒt        |«      ‚ |j                  D ]*  }t        |t        |«      «      sŒ| j!                  ||«       Œ, y c c}
w )	NrÕ   r   rÖ   r   rž   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ÚfÚmmre   rˆ   Úcs                  r   rÆ   zModuleFinder.scan_code�  sî  € Ø�z‰zˆØ×#Ñ#ˆÙ! "›+ó (	)‰JˆD�$Ø�wŠØ‘�Ø&'�—‘˜dÒ#ØÐ*Ó*Ø!%‘�˜$Ø�	ØÐ'Ø˜h‘Ø$%˜	Ø+3Ö@ a°q¸C³x¢Ð@�HÐ@Ø×&Ñ& t¨Q°ÀÐ&ÔBÚð �BØ—z’zð "Ÿ\™\×-Ñ-¨a¯j©j¸3Ñ.>ÀÑ.EÓF˜Ø�zØ!Ÿ\™\×-Ñ-¨dÓ3˜Ø�~ØŸ™×,Ñ,¨R¯^©^Ô<ØŸ™×,Ñ,¨R¯^©^Ô<ØŸ;™;Ò.Ø23˜AŸM™M¨$Ó/à./˜Ÿ™ dÓ+ØÐ*Ò*Ø(,Ñ%��x ÙØ×*Ñ*¨4°°HÀEÐ*ÖJà!×2Ñ2°1¸EÐ2ÓB�FØ×*Ñ*¨6¯?©?¸DÀ(ÐRSÐ*ÖTô # 4Ó(Ð(ðQ(	)ðT —‘ò 	%ˆAÜ˜!œT "›XÕ&Ø—‘˜q !Õ$ñ	%ùòA  As   Á
G3Á%G3c                 óÖ  — | j                  dd||«       t        j                  |«      }|r|}| j                  |«      }||_        |g|_        |j
                  t        j                  |g «      z   |_        | j                  d|j
                  «      \  }}}	 | j                  ||||«       | j                  dd|«       ||r|j                  «        S S # |r|j                  «        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Õ   € Ø�
‰
�1�n f¨hÔ7Ü#×'Ñ'¨Ó/ˆÙØˆFØ�O‰O˜FÓ#ˆØˆŒ
Ø�ZˆŒ
ð —Z‘Z¤.×"4Ñ"4°V¸RÓ"@Ñ@ˆŒ
à×)Ñ)¨*°a·j±jÓA‰ˆˆC�ð	Ø×Ñ˜V R¨¨eÔ4Ø�K‰K˜Ð,¨aÔ0ØáØ—‘•
ð ø‰rØ—‘•
ð ús   Â(C ÃC(c                 ót   — || j                   v r| j                   |   S t        |«      x| j                   |<   }|S r
   )rV   r@   )rH   r¸   r‹   s      r   rÄ   zModuleFinder.add_moduleÓ  s9   € Ø�T—\‘\Ñ!Ø—<‘< Ñ'Ð'Ü#)¨&£>Ð1ˆ�‰�VÑ˜qØˆr   c                 óø   — |�|j                   dz   |z   }n|}|| j                  v r| j                  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Ñ/‰HàˆHØ�t—}‘}Ñ$Ø�K‰K˜Ð4°hÔ?Ü˜dÓ#Ð#àˆ<Ø”s×/Ñ/Ñ/Ø˜d R¨¬ZÐ$8Ð9Ð9à—9‘9ˆDä˜D $Ó'Ð'r   c           	      ó  — t        «        t        ddz  «       t        ddz  «       t        | j                  j                  «       «      }|D ]U  }| j                  |   }|j                  rt        dd¬«       nt        dd¬«       t        d|z  |j
                  xs d	«       ŒW | j                  «       \  }}|r_t        «        t        d
«       |D ]E  }t        | j                  |   j                  «       «      }t        d|ddj                  |«      «       ŒG |rmt        «        t        dd¬«       t        d«       |D ]E  }t        | j                  |   j                  «       «      }t        d|ddj                  |«      «       ŒG yy)z’Print 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ë  sZ  € ô 	ŒÜˆlÐ-Ñ-Ô.ÜˆlÐ-Ñ-Ô.ä�d—l‘l×'Ñ'Ó)Ó*ˆØò 	3ˆCØ—‘˜SÑ!ˆAØ�zŠzÜ�c˜sÖ#ä�c˜sÕ#Ü�'˜C‘- §¡Ò!1¨rÕ2ð	3ð ×/Ñ/Ó1‰ˆ�ÙÜŒGÜÐ$Ô%Øò C�Ü˜dŸo™o¨dÑ3×8Ñ8Ó:Ó;�Ü�c˜4 °$·)±)¸D³/ÕBðCñ ÜŒGÜÐKÐQTÕUÜÐ7Ô8Øò C�Ü˜dŸo™o¨dÑ3×8Ñ8Ó:Ó;�Ü�c˜4 °$·)±)¸D³/ÕBñCð	 r   c                 ó2   — | j                  «       \  }}||z   S )z½Return 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‰ˆ�Ø˜‰Ðr   c                 ó  — g }g }| j                   D ]Ö  }|| j                  v rŒ|j                  d«      }|dk  r|j                  |«       Œ:||dz   d }|d| }| j                  j                  |«      }|�b|| j                   |   v r|j                  |«       Œ‡||j                  v rŒ–|j                  r|j                  |«       Œ´|j                  |«       ŒÆ|j                  |«       ŒØ |j                  «        |j                  «        ||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‘Oò 	%ˆDØ�t—}‘}Ñ$ØØ—
‘
˜3“ˆAØ�1ŠuØ—‘˜tÔ$ØØ˜1˜Q™3˜4�jˆGØ˜2˜A�hˆGØ—,‘,×"Ñ" 7Ó+ˆCØˆØ˜dŸo™o¨dÑ3Ñ3ð —N‘N 4Õ(Ø §¡Ñ/àØ—_’_ð —L‘L Õ&ð —N‘N 4Õ(à—‘˜tÕ$ð=	%ð> 	�‰ŒØ�
‰
ŒØ˜ˆ~Ðr   c                 óŽ  — t         j                  j                  |j                  «      x}}| j                  D ])  \  }}|j                  |«      sŒ||t        |«      d  z   } n | j                  r]|| j                  vrO||k7  r| j                  dd|›d|›�«       n| j                  dd|›d�«       | j                  j                  |«       t        |j                  «      }t        t        |«      «      D ]2  }t        ||   t        |«      «      sŒ| j!                  ||   «      ||<   Œ4 |j#                  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  s2  € Ü+-¯7©7×+;Ñ+;¸B¿N¹NÓ+KÐKˆÐ(Ø×&Ñ&ò 	‰DˆAˆqØ ×+Ñ+¨AÕ.Ø Ð#4´S¸³V°WÐ#=Ñ=�Ùð	ð
 �:Š:Ð+°4×3GÑ3GÑGØÐ0Ò0Ø—‘™AÚ'8¹ð Hõ Ið —‘™AÚ'8ð ;ô <à× Ñ ×'Ñ'Ð(9Ô:ä�b—l‘lÓ#ˆÜ”s˜6“{Ó#ò 	BˆAÜ˜& ™)¤T¨"£XÕ.Ø ×6Ñ6°v¸a±yÓA��q’	ð	Bð �z‰z¤E¨&£M¸|ˆzÓ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ó	ó!òF6ò6óDòò8ò@ò:+ó>ò4Aò/%òbò*ó(ò$ CòDò,ó\Mr   rS   c                  ód  — dd l } 	 | j                  t        j                  dd  d«      \  }}d}d}g }g }|D ][  \  }}	|dk(  r|dz   }|dk(  rd}|dk(  r"||	j                  t        j                  «      z   }|dk(  rd}|dk(  sŒK|j                  |	«       Œ] |sd	}
n|d   }
t        j                  d d  }t        j                  j                  |
«      |d<   ||z   }|dkD  r't	        d
«       |D ]  }t	        dt        |«      «       Œ t        |||«      }|dd  D ]O  }|dk(  rd}Œ|r2|dd  dk(  r|j                  |d d d dg«       Œ-|j                  |«       Œ?|j                  |«       ŒQ |j                  |
«       |j!                  «        |S # | j                  $ r}t	        |«       Y d }~y d }~ww xY w)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  [  sÈ  € ãðØ—]‘]¤3§8¡8¨A¨B <°Ó;‰
ˆˆdð €EØ€FØ€GØ€GØò 
‰ˆˆ1Ø�Š9Ø˜A‘IˆEØ�Š9ØˆFØ�Š9Ø §¡¬¯
©
Ó 3Ñ3ˆGØ�Š9ØˆEØ�‹9Ø�N‰N˜1Õð
ñ Ø‰à�a‘ˆô �8‰8‘Aˆ;€DÜ�g‰g�o‰o˜fÓ%€Dˆ�GØ�T‰>€DØˆq‚yÜˆgŒØò 	%ˆDÜ�%œ˜d›Õ$ð	%ô 
�d˜E 7Ó	+€BØ�A�Bˆxò 
ˆØ�$Š;ØˆFØÙØ�2�3ˆx˜4ÒØ—‘˜s 3 B˜x¨°¨uÕ5à—‘˜sÕ#à�L‰L˜Õð
ð ‡M�M�&ÔØ‡I�I„KØ€Iøðg �<‰<ò ÜˆcŒ
Üûðús   †&F ÆF/ÆF*Æ*F/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ã 
Û $Û Û Û 	Û 	Û 
ð €Ø€
Ø€Ø€Ø€Ø€
Ø€
ð €ò<ð Ð ò)ó*1÷Zñ ÷0fMñ fMòR8ðv ˆzÒð!Ù‹V‰ð øð ò !ÙÐÖ ð!ús   ÁA! Á!A1Á0A1