;
"Ic            
   @   s  d  Z  d d l Z d d l m Z m Z m Z m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z m Z m Z m Z d d l Z d d d d d g Z d	   Z Gd
   d  Z e   Z Gd   d e  Z Gd   d e  Z Gd   d e  Z Gd   d e  Z e d k o d d l Z d d l Z e e j d  j   Z  e e  e j! j" e j d  d d  Z# xC e# j$   D]1 Z% e# j& e%  Z' e( e' e' j)   e' j*    qsWn d S(   u2   Interface to the compiler's internal symbol tablesi    N(   u   USEu
   DEF_GLOBALu	   DEF_LOCALu	   DEF_PARAMu   DEF_FREE_GLOBALu   DEF_FREE_CLASSu
   DEF_IMPORTu	   DEF_BOUNDu   OPT_IMPORT_STARu	   SCOPE_OFFu
   SCOPE_MASKu   FREEu   GLOBAL_IMPLICITu   GLOBAL_EXPLICITu   symtableu   SymbolTableu   Classu   Functionu   Symbolc             C   sN   t  j |  | |  } x) | j   D] } | j d k o Pq" q" Wt | |  S(   Nu   top(   u	   _symtableu   symtableu   valuesu   nameu   _newSymbolTable(   u   codeu   filenameu   compile_typeu   rawu   top(    (    u%   /mit/python/lib/python3.0/symtable.pyu   symtable   s     	c             B   s)   |  Ee  Z d    Z d   Z d   Z d S(   c             C   s   t  j   |  _ d  S(   N(   u   weakrefu   WeakValueDictionaryu   _SymbolTableFactory__memo(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   __init__   s    c             C   sO   | j  t j k o t | |  S| j  t j k o t | |  St | |  S(   N(   u   typeu	   _symtableu   TYPE_FUNCTIONu   Functionu
   TYPE_CLASSu   Classu   SymbolTable(   u   selfu   tableu   filename(    (    u%   /mit/python/lib/python3.0/symtable.pyu   new   s
    c             C   sS   | | f } |  j  j | d   } | d  k o! |  j | |  } |  j  | <n | S(   N(   u   _SymbolTableFactory__memou   getu   Noneu   new(   u   selfu   tableu   filenameu   keyu   obj(    (    u%   /mit/python/lib/python3.0/symtable.pyu   __call__   s
    !N(   u   __name__u
   __module__u   __init__u   newu   __call__(   u
   __locals__(    (    u%   /mit/python/lib/python3.0/symtable.pyu   SymbolTableFactory   s   
		u   SymbolTableFactoryc             B   s   |  Ee  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d S(   c             C   s   | |  _  | |  _ i  |  _ d  S(   N(   u   _tableu	   _filenameu   _symbols(   u   selfu	   raw_tableu   filename(    (    u%   /mit/python/lib/python3.0/symtable.pyu   __init__+   s    		c             C   sq   |  j  t k o
 d } n d |  j  j } |  j j d k o d j | |  j  Sd j | |  j j |  j  Sd  S(   Nu    u   %s u   globalu   <{0}SymbolTable for module {1}>u   <{0}SymbolTable for {1} in {2}>(   u	   __class__u   SymbolTableu   __name__u   _tableu   nameu   formatu	   _filename(   u   selfu   kind(    (    u%   /mit/python/lib/python3.0/symtable.pyu   __repr__0   s    
		c             C   sU   |  j  j t j k o d S|  j  j t j k o d S|  j  j t j k o d Sd  S(   Nu   moduleu   functionu   class(   u   _tableu   typeu	   _symtableu   TYPE_MODULEu   TYPE_FUNCTIONu
   TYPE_CLASS(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_type=   s    c             C   s
   |  j  j S(   N(   u   _tableu   id(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_idG   s    c             C   s
   |  j  j S(   N(   u   _tableu   name(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_nameJ   s    c             C   s
   |  j  j S(   N(   u   _tableu   lineno(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu
   get_linenoM   s    c             C   s'   t  |  j j t j k o |  j j  S(   N(   u   boolu   _tableu   typeu	   _symtableu   TYPE_FUNCTIONu	   optimized(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   is_optimizedP   s    c             C   s   t  |  j j  S(   N(   u   boolu   _tableu   nested(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu	   is_nestedT   s    c             C   s   t  |  j j  S(   N(   u   boolu   _tableu   children(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   has_childrenW   s    c             C   s   d S(   u7   Return true if the scope uses exec.  Deprecated method.F(   u   False(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   has_execZ   s    c             C   s   t  |  j j t @ S(   u&   Return true if the scope uses import *(   u   boolu   _tableu	   optimizedu   OPT_IMPORT_STAR(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   has_import_star^   s    c             C   s   |  j  j j   S(   N(   u   _tableu   symbolsu   keys(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_identifiersb   s    c             C   sc   |  j  j |  } | d  k o@ |  j j | } |  j |  } t | | |  } |  j  | <n | S(   N(   u   _symbolsu   getu   Noneu   _tableu   symbolsu   _SymbolTable__check_childrenu   Symbol(   u   selfu   nameu   symu   flagsu
   namespaces(    (    u%   /mit/python/lib/python3.0/symtable.pyu   lookupe   s    !c                s     f d     j    D S(   Nc                s$   g  } |  ] } |   j  |  q
 S(    (   u   lookup(   u   .0u   _[1]u   ident(   u   self(    u%   /mit/python/lib/python3.0/symtable.pyu
   <listcomp>n   s    (   u   get_identifiers(   u   self(    (   u   selfu%   /mit/python/lib/python3.0/symtable.pyu   get_symbolsm   s    c                s      f d     j  j D S(   Nc                s;   g  } |  ]- } | j    k o | t |  j  q
 q
 S(    (   u   nameu   _newSymbolTableu	   _filename(   u   .0u   _[1]u   st(   u   nameu   self(    u%   /mit/python/lib/python3.0/symtable.pyu
   <listcomp>q   s   (   u   _tableu   children(   u   selfu   name(    (   u   selfu   nameu%   /mit/python/lib/python3.0/symtable.pyu   __check_childrenp   s    c                s     f d     j  j D S(   Nc                s'   g  } |  ] } | t  |   j  q
 S(    (   u   _newSymbolTableu	   _filename(   u   .0u   _[1]u   st(   u   self(    u%   /mit/python/lib/python3.0/symtable.pyu
   <listcomp>v   s   (   u   _tableu   children(   u   self(    (   u   selfu%   /mit/python/lib/python3.0/symtable.pyu   get_childrenu   s    N(   u   __name__u
   __module__u   __init__u   __repr__u   get_typeu   get_idu   get_nameu
   get_linenou   is_optimizedu	   is_nestedu   has_childrenu   has_execu   has_import_staru   get_identifiersu   lookupu   get_symbolsu   _SymbolTable__check_childrenu   get_children(   u
   __locals__(    (    u%   /mit/python/lib/python3.0/symtable.pyu   SymbolTable)   s    
			
												c             B   sS   |  Ee  Z d Z d Z d Z d Z d    Z d   Z d   Z	 d   Z
 d   Z d S(   c                s#   t     f d    j   D  S(   Nc                s6   g  } |  ]( }    j  j |  o | | q
 q
 S(    (   u   _tableu   symbols(   u   .0u   _[1]u   ident(   u   selfu	   test_func(    u%   /mit/python/lib/python3.0/symtable.pyu
   <listcomp>   s    (   u   tupleu   get_identifiers(   u   selfu	   test_func(    (   u	   test_funcu   selfu%   /mit/python/lib/python3.0/symtable.pyu   __idents_matching   s    c             C   s0   |  j  d  k o |  j d    |  _  n |  j  S(   Nc             S   s   |  t  @S(    (   u	   DEF_PARAM(   u   x(    (    u%   /mit/python/lib/python3.0/symtable.pyu   <lambda>   s    (   u   _Function__paramsu   Noneu   _Function__idents_matching(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_parameters   s    c             C   s0   |  j  d  k o |  j d    |  _  n |  j  S(   Nc             S   s   |  t  @S(    (   u	   DEF_BOUND(   u   x(    (    u%   /mit/python/lib/python3.0/symtable.pyu   <lambda>   s    (   u   _Function__localsu   Noneu   _Function__idents_matching(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu
   get_locals   s    c                sH   |  j  d  k o1 t t f     f d   } |  j |  |  _  n |  j  S(   Nc                s   |  t  ?t @  k S(    (   u	   SCOPE_OFFu
   SCOPE_MASK(   u   x(   u   glob(    u%   /mit/python/lib/python3.0/symtable.pyu   <lambda>   s    (   u   _Function__globalsu   Noneu   GLOBAL_IMPLICITu   GLOBAL_EXPLICITu   _Function__idents_matching(   u   selfu   test(    (   u   globu%   /mit/python/lib/python3.0/symtable.pyu   get_globals   s
    c             C   s6   |  j  d  k o d   } |  j |  |  _  n |  j  S(   Nc             S   s   |  t  ?t @t k S(    (   u	   SCOPE_OFFu
   SCOPE_MASKu   FREE(   u   x(    (    u%   /mit/python/lib/python3.0/symtable.pyu   <lambda>   s    (   u   _Function__freesu   Noneu   _Function__idents_matching(   u   selfu   is_free(    (    u%   /mit/python/lib/python3.0/symtable.pyu	   get_frees   s    	N(   u   __name__u
   __module__u   Noneu   _Function__paramsu   _Function__localsu   _Function__freesu   _Function__globalsu   _Function__idents_matchingu   get_parametersu
   get_localsu   get_globalsu	   get_frees(   u
   __locals__(    (    u%   /mit/python/lib/python3.0/symtable.pyu   Functionz   s   
				c             B   s   |  Ee  Z d Z d    Z d S(   c             C   sT   |  j  d  k o= i  } x! |  j j D] } d | | j <q# Wt |  |  _  n |  j  S(   Ni   (   u   _Class__methodsu   Noneu   _tableu   childrenu   nameu   tuple(   u   selfu   du   st(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_methods   s     N(   u   __name__u
   __module__u   Noneu   _Class__methodsu   get_methods(   u
   __locals__(    (    u%   /mit/python/lib/python3.0/symtable.pyu   Class   s   
c             B   s   |  Ee  Z d d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d S(   c             C   s7   | |  _  | |  _ | t ?t @|  _ | p d |  _ d  S(   N(    (   u   _Symbol__nameu   _Symbol__flagsu	   SCOPE_OFFu
   SCOPE_MASKu   _Symbol__scopeu   _Symbol__namespaces(   u   selfu   nameu   flagsu
   namespaces(    (    u%   /mit/python/lib/python3.0/symtable.pyu   __init__   s    		c             C   s   d j  |  j  S(   Nu   <symbol {0!r}>(   u   formatu   _Symbol__name(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   __repr__   s    c             C   s   |  j  S(   N(   u   _Symbol__name(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_name   s    c             C   s   t  |  j t j @ S(   N(   u   boolu   _Symbol__flagsu	   _symtableu   USE(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   is_referenced   s    c             C   s   t  |  j t @ S(   N(   u   boolu   _Symbol__flagsu	   DEF_PARAM(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   is_parameter   s    c             C   s   t  |  j t t f k  S(   N(   u   boolu   _Symbol__scopeu   GLOBAL_IMPLICITu   GLOBAL_EXPLICIT(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu	   is_global   s    c             C   s   t  |  j t @ S(   N(   u   boolu   _Symbol__flagsu	   DEF_BOUND(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   is_local   s    c             C   s   t  |  j t k  S(   N(   u   boolu   _Symbol__scopeu   FREE(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   is_free   s    c             C   s   t  |  j t @ S(   N(   u   boolu   _Symbol__flagsu
   DEF_IMPORT(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   is_imported   s    c             C   s   t  |  j t @ S(   N(   u   boolu   _Symbol__flagsu	   DEF_LOCAL(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   is_assigned   s    c             C   s   t  |  j  S(   u  Returns true if name binding introduces new namespace.

        If the name is used as the target of a function or class
        statement, this will be true.

        Note that a single name can be bound to multiple objects.  If
        is_namespace() is true, the name may also be bound to other
        objects, like an int or list, that does not introduce a new
        namespace.
        (   u   boolu   _Symbol__namespaces(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   is_namespace   s    c             C   s   |  j  S(   u.   Return a list of namespaces bound to this name(   u   _Symbol__namespaces(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_namespaces   s    c             C   s1   t  |  j  d k o t d   n |  j d S(   u   Returns the single namespace bound to this name.

        Raises ValueError if the name is bound to multiple namespaces.
        i   u$   name is bound to multiple namespacesi    (   u   lenu   _Symbol__namespacesu
   ValueError(   u   self(    (    u%   /mit/python/lib/python3.0/symtable.pyu   get_namespace   s    N(   u   __name__u
   __module__u   Noneu   __init__u   __repr__u   get_nameu   is_referencedu   is_parameteru	   is_globalu   is_localu   is_freeu   is_importedu   is_assignedu   is_namespaceu   get_namespacesu   get_namespace(   u
   __locals__(    (    u%   /mit/python/lib/python3.0/symtable.pyu   Symbol   s   
											u   __main__i   u   exec(+   u   __doc__u	   _symtableu   USEu
   DEF_GLOBALu	   DEF_LOCALu	   DEF_PARAMu   DEF_FREE_GLOBALu   DEF_FREE_CLASSu
   DEF_IMPORTu	   DEF_BOUNDu   OPT_IMPORT_STARu	   SCOPE_OFFu
   SCOPE_MASKu   FREEu   GLOBAL_IMPLICITu   GLOBAL_EXPLICITu   weakrefu   __all__u   symtableu   SymbolTableFactoryu   _newSymbolTableu   objectu   SymbolTableu   Functionu   Classu   Symbolu   __name__u   osu   sysu   openu   argvu   readu   srcu   pathu   splitu   modu   get_identifiersu   identu   lookupu   infou   printu   is_localu   is_namespace(    (    (    u%   /mit/python/lib/python3.0/symtable.pyu   <module>   s&   ^		Q$=) 