;
Êâ"Ic               @   s¡  d  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	 Z	 e
 e j d ƒ o
 d Z n d Z e e j j d ƒ g ƒ Z e e j j d ƒ g ƒ Z e e j j d	 ƒ g ƒ Z e e j j d
 ƒ g ƒ Z e e g Z e e j g ƒ Z i  Z d „  Z i  Z d „  Z Gd „  d ƒ Z Gd „  d ƒ Z d „  Z e d k o2 y e ƒ  Z Wn e k
 o e  d ƒ Yn Xn d S(   u3   Find modules used by a script, using introspection.i    (   u
   generatorsNu   newlinesu   Uu   ru
   LOAD_CONSTu   IMPORT_NAMEu
   STORE_NAMEu   STORE_GLOBALc             C   s-   t  j |  g  ƒ } | j | ƒ | t  |  <d  S(   N(   u   packagePathMapu   getu   append(   u   packagenameu   pathu   paths(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   AddPackagePath$   s    c             C   s   | t  |  <d  S(   N(   u   replacePackageMap(   u   oldnameu   newname(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   ReplacePackage0   s    c             B   s&   |  Ee  Z d d d  „ Z d „  Z d S(   c             C   s:   | |  _  | |  _ | |  _ d  |  _ i  |  _ i  |  _ d  S(   N(   u   __name__u   __file__u   __path__u   Noneu   __code__u   globalnamesu   starimports(   u   selfu   nameu   fileu   path(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   __init__6   s    					c             C   sn   d |  j  f } |  j d  k	 o | d |  j f } n |  j d  k	 o | d |  j f } n | d } | S(   Nu	   Module(%ru   , %ru   )(   u   __name__u   __file__u   Noneu   __path__(   u   selfu   s(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   __repr__C   s    
N(   u   __name__u
   __module__u   Noneu   __init__u   __repr__(   u
   __locals__(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   Module4   s   
u   Modulec             B   s%  |  Ee  Z d d  g  g  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d d d d „ Z	 d d	 „ Z
 d
 „  Z d „  Z d  d „ Z d „  Z d „  Z d „  Z d „  Z d d „ Z e j d „ Z e j d „ Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d S(   i    c             C   sf   | d  k o t j } n | |  _ i  |  _ i  |  _ | |  _ d |  _ | |  _ | |  _ g  |  _	 d  S(   Ni    (
   u   Noneu   sysu   pathu   modulesu
   badmodulesu   debugu   indentu   excludesu   replace_pathsu   processed_paths(   u   selfu   pathu   debugu   excludesu   replace_paths(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   __init__N   s    							c             G   s€   | |  j  k ol x' t |  j ƒ D] } t d d d ƒq  Wt | d d ƒx$ | D] } t t | ƒ d d ƒqQ Wt ƒ  n d  S(   Nu      u   endu    (   u   debugu   rangeu   indentu   printu   repr(   u   selfu   levelu   stru   argsu   iu   arg(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   msgZ   s      c             G   s?   | d } | |  j  k o! |  j d |  _ |  j | Œ  n d  S(   Ni    i   (   u   debugu   indentu   msg(   u   selfu   argsu   level(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   msginc   s    
c             G   s?   | d } | |  j  k o! |  j d |  _ |  j | Œ  n d  S(   Ni    i   (   u   debugu   indentu   msg(   u   selfu   argsu   level(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   msgouti   s    
c             C   sN   |  j  d d | ƒ t | t ƒ } d d t j f } |  j d | | | ƒ d  S(   Ni   u
   run_scriptu    u   ru   __main__(   u   msgu   openu	   READ_MODEu   impu	   PY_SOURCEu   load_module(   u   selfu   pathnameu   fpu   stuff(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu
   run_scripto   s    c             C   sk   t  j j | ƒ \ } } t  j j | ƒ \ } } t | t ƒ } | d t j f } |  j | | | | ƒ d  S(   Nu   r(	   u   osu   pathu   splitu   splitextu   openu	   READ_MODEu   impu	   PY_SOURCEu   load_module(   u   selfu   pathnameu   diru   nameu   extu   fpu   stuff(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu	   load_fileu   s
    iÿÿÿÿc       	      C   s‰   |  j  d d | | | | ƒ |  j | d | ƒ} |  j | | ƒ \ } } |  j | | ƒ } | p | S| j o |  j | | ƒ n d  S(   Ni   u   import_hooku   level(   u   msgu   determine_parentu   find_head_packageu	   load_tailu   __path__u   ensure_fromlistu   None(	   u   selfu   nameu   calleru   fromlistu   levelu   parentu   qu   tailu   m(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   import_hook|   s    
c             C   sá  |  j  d d | | ƒ | p | d k o |  j d d ƒ d  S| j } | d k oÌ | j o | d 8} n | d k o9 |  j | } | | k p t ‚ |  j d d | ƒ | S| j d ƒ | k  o t d ƒ ‚ n d j	 | j
 d ƒ d  | … ƒ } |  j | } |  j d d | ƒ | S| j o9 |  j | } | | k p t ‚ |  j d d | ƒ | Sd | k o[ | j d ƒ } | d  | … } |  j | } | j | k p t ‚ |  j d d | ƒ | S|  j d d ƒ d  S(	   Ni   u   determine_parenti    u   determine_parent -> Nonei   u   determine_parent ->u   .u   relative importpath too deep(   u   msginu   msgoutu   Noneu   __name__u   __path__u   modulesu   AssertionErroru   countu   ImportErroru   joinu   splitu   rfind(   u   selfu   calleru   levelu   pnameu   parentu   i(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   determine_parent‡   sB    	
#
c             C   sH  |  j  d d | | ƒ d | k o7 | j d ƒ } | d  | … } | | d d  … } n | } d } | o d | j | f } n | } |  j | | | ƒ } | o$ |  j d d | | f ƒ | | f S| oP | } d  } |  j | | | ƒ } | o$ |  j d d | | f ƒ | | f Sn |  j d d | ƒ t d	 | ƒ ‚ d  S(
   Ni   u   find_head_packageu   .i   u    u   %s.%su   find_head_package ->u"   raise ImportError: No module namedu   No module named (   u   msginu   findu   __name__u   import_moduleu   msgoutu   Noneu   ImportError(   u   selfu   parentu   nameu   iu   headu   tailu   qnameu   q(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   find_head_packageª   s.    c             C   sé   |  j  d d | | ƒ | } x³ | o« | j d ƒ } | d k  o t | ƒ } n | d  | … | | d d  … } } d | j | f } |  j | | | ƒ } | p' |  j d d | ƒ t d | ƒ ‚ q q W|  j d d	 | ƒ | S(
   Ni   u	   load_tailu   .i    i   u   %s.%su"   raise ImportError: No module namedu   No module named u   load_tail ->(   u   msginu   findu   lenu   __name__u   import_moduleu   msgoutu   ImportError(   u   selfu   qu   tailu   mu   iu   headu   mname(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu	   load_tailÅ   s      %c             C   sÎ   |  j  d d | | | ƒ x® | D]¦ } | d k o< | p1 |  j | ƒ } | o |  j | | d ƒ qk qÆ q  t | | ƒ pG d | j | f } |  j | | | ƒ } | p t d | ƒ ‚ qÆ q  q  Wd  S(   Ni   u   ensure_fromlistu   *i   u   %s.%su   No module named (   u   msgu   find_all_submodulesu   ensure_fromlistu   hasattru   __name__u   import_moduleu   ImportError(   u   selfu   mu   fromlistu	   recursiveu   subu   allu   subnameu   submod(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   ensure_fromlistÔ   s     c             C   s(  | j  p d  Si  } g  } x% t j ƒ  D] } | j | d ƒ q( WxØ | j  D]Í } y t j | ƒ } Wn- t j k
 o |  j d d | ƒ wM Yn Xx | D]y } d  } xH | D]@ }	 t	 |	 ƒ }
 | |
 d  … |	 k o | d  |
 … } Pq° q° W| o | d k o | | | <q q WqM W| j
 ƒ  S(   Ni    i   u   can't list directoryu   __init__(   u   __path__u   impu   get_suffixesu   appendu   osu   listdiru   erroru   msgu   Noneu   lenu   keys(   u   selfu   mu   modulesu   suffixesu   tripleu   diru   namesu   nameu   modu   suffu   n(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   find_all_submodulesâ   s4    
 
 	  	c             C   sj  |  j  d d | | | ƒ y |  j | } Wn t k
 o Yn X|  j d d | ƒ | S| |  j k o |  j d d ƒ d  S| o% | j d  k o |  j d d ƒ d  Sy, |  j | | o | j | ƒ \ } } } Wn+ t k
 o |  j d d d  ƒ d  SYn Xz |  j	 | | | | ƒ } Wd  | o | j
 ƒ  n X| o t | | | ƒ n |  j d d | ƒ | S(   Ni   u   import_moduleu   import_module ->u   import_module -> None(   u   msginu   modulesu   KeyErroru   msgoutu
   badmodulesu   Noneu   __path__u   find_moduleu   ImportErroru   load_moduleu   closeu   setattr(   u   selfu   partnameu   fqnameu   parentu   mu   fpu   pathnameu   stuff(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   import_moduleý   s6    	#
 c       
      C   s‚  | \ } } } |  j  d d | | o d | ƒ | t j k o* |  j | | ƒ } |  j d d | ƒ | S| t j k o  t | j ƒ  d | d ƒ }	 nz | t j k oc | j d ƒ t j	 ƒ  k o' |  j d d | ƒ t
 d	 | ƒ ‚ n | j d ƒ t j | ƒ }	 n d  }	 |  j | ƒ } | | _ |	 o: |  j o |  j |	 ƒ }	 n |	 | _ |  j |	 | ƒ n |  j d d | ƒ | S(
   Ni   u   load_moduleu   fpu   load_module ->u   
u   execi   u#   raise ImportError: Bad magic numberu   Bad magic number in %s(   u   msginu   impu   PKG_DIRECTORYu   load_packageu   msgoutu	   PY_SOURCEu   compileu   readu   PY_COMPILEDu	   get_magicu   ImportErroru   marshalu   loadu   Noneu
   add_moduleu   __file__u   replace_pathsu   replace_paths_in_codeu   __code__u	   scan_code(
   u   selfu   fqnameu   fpu   pathnameu	   file_infou   suffixu   modeu   typeu   mu   co(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   load_module  s0      	
	c             C   sU   | |  j  k o i  |  j  | <n | o d |  j  | | j <n d |  j  | d <d  S(   Ni   u   -(   u
   badmodulesu   __name__(   u   selfu   nameu   caller(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   _add_badmodule6  s
    c             C   sZ  | |  j  k o |  j | | ƒ d  Sy |  j | | d | ƒWnP t k
 oD } z. |  j d d t | ƒ ƒ |  j | | ƒ WYd  d  } ~ XnÆ X| o½ xº | D]® } | |  j  k o |  j | | ƒ q  n y  |  j | | | g d | ƒWq  t k
 oR } z< |  j d d t | ƒ ƒ | d | } |  j | | ƒ WYd  d  } ~ Xq  Xq  Wn d  S(   Nu   leveli   u   ImportError:u   .(   u
   badmodulesu   _add_badmoduleu   import_hooku   ImportErroru   msgu   str(   u   selfu   nameu   calleru   fromlistu   levelu   msgu   subu   fullname(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   _safe_import_hook>  s(    $  c       
      c   s(  | j  } | j } | j } x| oþ | d } | t k oE | d | d d … ƒ \ } d | | f f V| d d  … } q n | t k o` | d t k oO | d | d  d … ƒ \ } }	 d | | | |	 f f V| d d  … } q n | t k o | d d  … } q | d d  … } q Wd  S(	   Ni    u   <Hi   i   u   storeu   <xHxHi   u   import(   u   co_codeu   co_namesu	   co_constsu	   STORE_OPSu
   LOAD_CONSTu   IMPORT_NAMEu   HAVE_ARGUMENT(
   u   selfu   cou   unpacku   codeu   namesu   constsu   cu   opargu   oparg_1u   oparg_2(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   scan_opcodesU  s&    			 
c             c   su  | j  } | j } | j } t t t } xE| o=t | d g ƒ } | t k oE | d | d d … ƒ \ } d | | f f V| d d  … } q, n | d  d d … | k o‰ | d | d  d … ƒ \ }	 }
 } | |	 } | d k o d | |
 | | f f Vn d	 | | |
 | | f f V| d d  … } q, n | t k o | d d  … } q, | d d  … } q, Wd  S(
   Ni    u   <Hi   i   u   storei	   u   <xHxHxHu   absolute_importu   relative_import(   u   co_codeu   co_namesu	   co_constsu
   LOAD_CONSTu   IMPORT_NAMEu   bytesu	   STORE_OPSu   HAVE_ARGUMENT(   u   selfu   cou   unpacku   codeu   namesu   constsu   LOAD_LOAD_AND_IMPORTu   cu   opargu   oparg_1u   oparg_2u   oparg_3u   level(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   scan_opcodes_25m  s.    			 "
c             C   sn  | j  } t j d k o |  j } n
 |  j } xú| | ƒ D]ì\ } } | d k o | \ } d | j | <q< | d k o+| \ } } d }	 | d  k	 o+ d | k o
 d }	 n d „  | Dƒ } n |  j | | | d	 d ƒ|	 o½ d  }
 | j o! |  j	 j
 | j d
 | ƒ }
 n |
 d  k o |  j	 j
 | ƒ }
 n |
 d  k	 oK | j j |
 j ƒ | j j |
 j ƒ |
 j d  k o d | j | <qŸq£d | j | <q(q< | d k oh | \ } } } | o |  j | | | d	 | ƒq(|  j | d	 | ƒ} |  j | j d  | d	 d ƒq< t | ƒ ‚ q< Wx; | j D]0 } t | t | ƒ ƒ o |  j | | ƒ q6q6Wd  S(   Ni   i   u   storei   u   absolute_importi    u   *c             S   s,   g  } |  ] } | d  k o | | q
 q
 S(   u   *(    (   u   .0u   _[1]u   f(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu
   <listcomp>š  s    u   levelu   .u   relative_import(   i   i   (   u   co_codeu   sysu   version_infou   scan_opcodes_25u   scan_opcodesu   globalnamesu   Noneu   _safe_import_hooku   __path__u   modulesu   getu   __name__u   updateu   starimportsu   __code__u   determine_parentu   RuntimeErroru	   co_constsu
   isinstanceu   typeu	   scan_code(   u   selfu   cou   mu   codeu   scanneru   whatu   argsu   nameu   fromlistu	   have_staru   mmu   levelu   parentu   c(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu	   scan_codeŠ  sP    		 	

! 
 c             C   sÁ   |  j  d d | | ƒ t j | ƒ } | o
 | } n |  j | ƒ } | | _ | g | _ | j t j | g  ƒ | _ |  j d | j ƒ \ } } } |  j | | | | ƒ |  j	 d d | ƒ | S(   Ni   u   load_packageu   __init__u   load_package ->(
   u   msginu   replacePackageMapu   getu
   add_moduleu   __file__u   __path__u   packagePathMapu   find_moduleu   load_moduleu   msgout(   u   selfu   fqnameu   pathnameu   newnameu   mu   fpu   bufu   stuff(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   load_package¾  s    
	c             C   s7   | |  j  k o |  j  | St | ƒ |  j  | <} | S(   N(   u   modulesu   Module(   u   selfu   fqnameu   m(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu
   add_moduleÏ  s    c             C   s¯   | d  k	 o | j d | } n | } | |  j k o# |  j d d | ƒ t | ƒ ‚ n | d  k o7 | t j k o d  d  d d t j f f S|  j	 } n t j
 | | ƒ S(   Nu   .i   u   find_module -> Excludedu    (   u   Noneu   __name__u   excludesu   msgoutu   ImportErroru   sysu   builtin_module_namesu   impu	   C_BUILTINu   pathu   find_module(   u   selfu   nameu   pathu   parentu   fullname(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   find_moduleÕ  s    c             C   s‰  t  ƒ  t  d d ƒ t  d d ƒ t |  j j ƒ  ƒ } xd | D]\ } |  j | } | j o t  d d d ƒn t  d d d ƒt  d	 | | j p d
 ƒ q? W|  j ƒ  \ } } | o[ t  ƒ  t  d ƒ xG | D]; } t |  j | j ƒ  ƒ } t  d | d d j | ƒ ƒ qÐ Wn | ok t  ƒ  t  d d d ƒt  d ƒ xG | D]; } t |  j | j ƒ  ƒ } t  d | d d j | ƒ ƒ qBWn d S(   u’   Print a report to stdout, listing the found modules with their
        paths, as well as modules that are missing, or seem to be missing.
        u
     %-25s %su   Nameu   Fileu   ----u   Pu   endu    u   mu   %-25su    u   Missing modules:u   ?u   imported fromu   , u7   Submodules thay appear to be missing, but could also beu#   global names in the parent package:N(   u   Nameu   File(   u   ----u   ----(	   u   printu   sortedu   modulesu   keysu   __path__u   __file__u   any_missing_maybeu
   badmodulesu   join(   u   selfu   keysu   keyu   mu   missingu   maybeu   nameu   mods(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   reportæ  s6     

 $
 c             C   s   |  j  ƒ  \ } } | | S(   u½   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.
        (   u   any_missing_maybe(   u   selfu   missingu   maybe(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   any_missing  s    c             C   s:  g  } g  } x|  j  D]} | |  j k o q n | j d ƒ } | d k  o | j | ƒ q n | | d d … } | d | … } |  j j | ƒ } | d k	 oe | |  j  | k o | j | ƒ q| | j k o q| j o | j | ƒ q| j | ƒ q | j | ƒ q W| j	 ƒ  | j	 ƒ  | | f S(   u®  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.
        u   .i    i   N(
   u
   badmodulesu   excludesu   rfindu   appendu   modulesu   getu   Noneu   globalnamesu   starimportsu   sort(   u   selfu   missingu   maybeu   nameu   iu   subnameu   pkgnameu   pkg(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   any_missing_maybe  s2    	
 


c             C   s‘  t  j j | j ƒ } } xF |  j D]; \ } } | j | ƒ o | | t | ƒ d  … } Pq# q# W|  j of | |  j k oV | | k o |  j	 d d | | f ƒ n |  j	 d d | f ƒ |  j j
 | ƒ n t | j ƒ } xO t t | ƒ ƒ D]; } t | | t | ƒ ƒ o |  j | | ƒ | | <qô qô Wt j | j | j | j | j | j t | ƒ | j | j | | j | j | j | j | j ƒ S(   Ni   u   co_filename %r changed to %ru    co_filename %r remains unchanged(    u   osu   pathu   normpathu   co_filenameu   replace_pathsu
   startswithu   lenu   debugu   processed_pathsu   msgoutu   appendu   listu	   co_constsu   rangeu
   isinstanceu   typeu   replace_paths_in_codeu   typesu   CodeTypeu   co_argcountu
   co_nlocalsu   co_stacksizeu   co_flagsu   co_codeu   tupleu   co_namesu   co_varnamesu   co_nameu   co_firstlinenou	   co_lnotabu   co_freevarsu   co_cellvars(   u   selfu   cou   new_filenameu   original_filenameu   fu   ru   constsu   i(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   replace_paths_in_code>  s.    
 	 N(   u   __name__u
   __module__u   Noneu   __init__u   msgu   msginu   msgoutu
   run_scriptu	   load_fileu   import_hooku   determine_parentu   find_head_packageu	   load_tailu   ensure_fromlistu   find_all_submodulesu   import_moduleu   load_moduleu   _add_badmoduleu   _safe_import_hooku   structu   unpacku   scan_opcodesu   scan_opcodes_25u	   scan_codeu   load_packageu
   add_moduleu   find_moduleu   reportu   any_missingu   any_missing_maybeu   replace_paths_in_code(   u
   __locals__(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   ModuleFinderL   s4   
						#							4			"		.u   ModuleFinderc              C   s|  d d  l  }  y) |  j  t j d d  … d ƒ \ } } Wn8 |  j k
 o) } z t | ƒ d  SWYd  d  } ~ Xn Xd } d } g  } g  } x¢ | D]š \ } }	 | d k o | d } n | d k o
 d } n | d k o | |	 j t j ƒ } n | d k o
 d } n | d k o | j |	 ƒ q q W| p
 d	 }
 n | d }
 t j	 d  d  … } t j	 j
 |
 ƒ | d <| | } | d k o2 t d
 ƒ x% | D] } t d t | ƒ ƒ q™Wn t | | | ƒ } x’ | d d  … D]€ } | d k o d } qÝn | oL | d d  … d k o$ | j | d  d … d  d g ƒ q]| j | ƒ qÝ| j | ƒ qÝW| j |
 ƒ | j ƒ  | S(   Ni    i   u   dmp:qx:u   -du   -mu   -pu   -qu   -xu   hello.pyu   path:u      iþÿÿÿu   .*u   *(   u   getoptu   sysu   argvu   erroru   printu   splitu   osu   pathsepu   appendu   pathu   dirnameu   repru   ModuleFinderu   import_hooku   Noneu	   load_fileu
   run_scriptu   report(   u   getoptu   optsu   argsu   msgu   debugu   domodsu   addpathu   excludeu   ou   au   scriptu   pathu   itemu   mfu   arg(    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   testZ  s^    )
 





  $
u   __main__u   
[interrupt](!   u   __doc__u
   __future__u
   generatorsu   disu   impu   marshalu   osu   sysu   typesu   structu   hasattru
   __stdout__u	   READ_MODEu   bytesu   opnameu   indexu
   LOAD_CONSTu   IMPORT_NAMEu
   STORE_NAMEu   STORE_GLOBALu	   STORE_OPSu   HAVE_ARGUMENTu   packagePathMapu   AddPackagePathu   replacePackageMapu   ReplacePackageu   Moduleu   ModuleFinderu   testu   __name__u   mfu   KeyboardInterruptu   print(    (    (    u)   /mit/python/lib/python3.0/modulefinder.pyu   <module>   s>   
		ÿ ÿ 	;