ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5dU                  	   @   sF  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mZ d dlZdddddgZdd ZG d	d
 d
Ze ZG dd dZG dd deZG dd deZG dd dZedkrBd dlZd dlZeejd  Ze Z W 5 Q R X ee ej!"ejd  d dZ#e#$ D ]$Z%e#&e%Z'e(e'e') e'*  qdS )    N)USE
DEF_GLOBALDEF_NONLOCAL	DEF_LOCAL	DEF_PARAM
DEF_IMPORT	DEF_BOUND	DEF_ANNOT	SCOPE_OFF
SCOPE_MASKFREELOCALGLOBAL_IMPLICITGLOBAL_EXPLICITCELLsymtableSymbolTableClassFunctionSymbolc                 C   s   t | ||}t||S N)	_symtabler   _newSymbolTable)codefilenameZcompile_typetop r    /usr/lib64/python3.8/symtable.pyr      s    c                   @   s$   e Zd Zdd Zdd Zdd ZdS )SymbolTableFactoryc                 C   s   t  | _d S r   )weakrefZWeakValueDictionary_SymbolTableFactory__memoselfr   r   r   __init__   s    zSymbolTableFactory.__init__c                 C   s6   |j tjkrt||S |j tjkr,t||S t||S r   )typer   TYPE_FUNCTIONr   
TYPE_CLASSr   r   )r"   tabler   r   r   r   new   s
    

zSymbolTableFactory.newc                 C   s8   ||f}| j |d }|d kr4| || }| j |< |S r   )r    getr(   )r"   r'   r   keyobjr   r   r   __call__   s
    zSymbolTableFactory.__call__N)__name__
__module____qualname__r#   r(   r,   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) r   c                 C   s   || _ || _i | _d S r   )_table	_filename_symbols)r"   Z	raw_tabler   r   r   r   r#   '   s    zSymbolTable.__init__c                 C   sN   | j tkrd}nd| j j }| jjdkr6d|| jS d|| jj| jS d S )N z%s r   z<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>)	__class__r   r-   r0   nameformatr1   )r"   Zkindr   r   r   __repr__,   s    
zSymbolTable.__repr__c                 C   s:   | j jtjkrdS | j jtjkr$dS | j jtjkr6dS d S )NmoduleZfunctionclass)r0   r$   r   ZTYPE_MODULEr%   r&   r!   r   r   r   get_type9   s    zSymbolTable.get_typec                 C   s   | j jS r   )r0   idr!   r   r   r   get_idC   s    zSymbolTable.get_idc                 C   s   | j jS r   )r0   r5   r!   r   r   r   get_nameF   s    zSymbolTable.get_namec                 C   s   | j jS r   )r0   linenor!   r   r   r   
get_linenoI   s    zSymbolTable.get_linenoc                 C   s   t | jjtjkS r   )boolr0   r$   r   r%   r!   r   r   r   is_optimizedL   s    zSymbolTable.is_optimizedc                 C   s   t | jjS r   )r@   r0   nestedr!   r   r   r   	is_nestedO   s    zSymbolTable.is_nestedc                 C   s   t | jjS r   )r@   r0   childrenr!   r   r   r   has_childrenR   s    zSymbolTable.has_childrenc                 C   s   dS )NFr   r!   r   r   r   has_execU   s    zSymbolTable.has_execc                 C   s   | j j S r   )r0   symbolskeysr!   r   r   r   get_identifiersY   s    zSymbolTable.get_identifiersc                 C   sT   | j |}|d krP| jj| }| |}| jjdk}t||||d }| j |< |S )Nr   module_scope)r2   r)   r0   rG   _SymbolTable__check_childrenr5   r   )r"   r5   Zsymflags
namespacesrK   r   r   r   lookup\   s    
zSymbolTable.lookupc                    s    fdd   D S )Nc                    s   g | ]}  |qS r   )rO   .0identr!   r   r   
<listcomp>g   s     z+SymbolTable.get_symbols.<locals>.<listcomp>)rI   r!   r   r!   r   get_symbolsf   s    zSymbolTable.get_symbolsc                    s    fddj jD S )Nc                    s"   g | ]}|j  krt|jqS r   )r5   r   r1   rQ   str5   r"   r   r   rS   j   s   
z0SymbolTable.__check_children.<locals>.<listcomp>r0   rD   )r"   r5   r   rW   r   Z__check_childreni   s    zSymbolTable.__check_childrenc                    s    fdd j jD S )Nc                    s   g | ]}t | jqS r   )r   r1   rU   r!   r   r   rS   o   s   z,SymbolTable.get_children.<locals>.<listcomp>rX   r!   r   r!   r   get_childrenn   s    
zSymbolTable.get_childrenN)r-   r.   r/   r#   r7   r:   r<   r=   r?   rA   rC   rE   rF   rI   rO   rT   rL   rY   r   r   r   r   r   %   s   

c                   @   sP   e Zd ZdZdZdZdZdZdd Zdd Z	dd Z
dd	 Zd
d Zdd ZdS )r   Nc                    s   t  fdd  D S )Nc                 3   s"   | ]} j j| r|V  qd S r   )r0   rG   rP   r"   Z	test_funcr   r   	<genexpr>}   s    z-Function.__idents_matching.<locals>.<genexpr>)tuplerI   rZ   r   rZ   r   Z__idents_matching|   s    zFunction.__idents_matchingc                 C   s    | j d kr| dd | _ | j S )Nc                 S   s   | t @ S r   )r   xr   r   r   <lambda>       z)Function.get_parameters.<locals>.<lambda>)_Function__params_Function__idents_matchingr!   r   r   r   get_parameters   s    
zFunction.get_parametersc                    s0   | j d kr*ttf  fdd}| || _ | j S )Nc                    s   | t ? t@  kS r   r
   r   r]   Zlocsr   r   r_      r`   z%Function.get_locals.<locals>.<lambda>)_Function__localsr   r   rb   r"   Ztestr   re   r   
get_locals   s
    
zFunction.get_localsc                    s0   | j d kr*ttf  fdd}| || _ | j S )Nc                    s   | t ? t@  kS r   rd   r]   Zglobr   r   r_      r`   z&Function.get_globals.<locals>.<lambda>)_Function__globalsr   r   rb   rg   r   ri   r   get_globals   s
    
zFunction.get_globalsc                 C   s    | j d kr| dd | _ | j S )Nc                 S   s   | t @ S r   )r   r]   r   r   r   r_      r`   z(Function.get_nonlocals.<locals>.<lambda>)_Function__nonlocalsrb   r!   r   r   r   get_nonlocals   s    
zFunction.get_nonlocalsc                 C   s$   | j d krdd }| || _ | j S )Nc                 S   s   | t ? t@ tkS r   )r
   r   r   r]   r   r   r   r_      r`   z$Function.get_frees.<locals>.<lambda>)_Function__freesrb   )r"   is_freer   r   r   	get_frees   s    
zFunction.get_frees)r-   r.   r/   ra   rf   rn   rj   rl   rb   rc   rh   rk   rm   rp   r   r   r   r   r   s   s   c                   @   s   e Zd ZdZdd ZdS )r   Nc                 C   s6   | j d kr0i }| jjD ]}d||j< qt|| _ | j S )N   )_Class__methodsr0   rD   r5   r\   )r"   drV   r   r   r   get_methods   s    

zClass.get_methods)r-   r.   r/   rr   rt   r   r   r   r   r      s   c                   @   s   e Zd Zd$ddddZdd Zdd	 Zd
d Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# ZdS )%r   NFrJ   c                C   s.   || _ || _|t? t@ | _|p d| _|| _d S )Nr   )_Symbol__name_Symbol__flagsr
   r   _Symbol__scope_Symbol__namespaces_Symbol__module_scope)r"   r5   rM   rN   rK   r   r   r   r#      s
    
zSymbol.__init__c                 C   s   d | jS )Nz<symbol {0!r}>)r6   ru   r!   r   r   r   r7      s    zSymbol.__repr__c                 C   s   | j S r   )ru   r!   r   r   r   r=      s    zSymbol.get_namec                 C   s   t | jtj@ S r   )r@   rv   r   r   r!   r   r   r   is_referenced   s    zSymbol.is_referencedc                 C   s   t | jt@ S r   )r@   rv   r   r!   r   r   r   is_parameter   s    zSymbol.is_parameterc                 C   s"   t | jttfkp| jo| jt@ S r   )r@   rw   r   r   ry   rv   r   r!   r   r   r   	is_global   s    zSymbol.is_globalc                 C   s   t | jt@ S r   )r@   rv   r   r!   r   r   r   is_nonlocal   s    zSymbol.is_nonlocalc                 C   s   t | jtkS r   )r@   rw   r   r!   r   r   r   is_declared_global   s    zSymbol.is_declared_globalc                 C   s"   t | jttfkp| jo| jt@ S r   )r@   rw   r   r   ry   rv   r   r!   r   r   r   is_local   s    zSymbol.is_localc                 C   s   t | jt@ S r   )r@   rv   r	   r!   r   r   r   is_annotated   s    zSymbol.is_annotatedc                 C   s   t | jtkS r   )r@   rw   r   r!   r   r   r   ro      s    zSymbol.is_freec                 C   s   t | jt@ S r   )r@   rv   r   r!   r   r   r   is_imported   s    zSymbol.is_importedc                 C   s   t | jt@ S r   )r@   rv   r   r!   r   r   r   is_assigned   s    zSymbol.is_assignedc                 C   s
   t | jS r   )r@   rx   r!   r   r   r   is_namespace   s    zSymbol.is_namespacec                 C   s   | j S r   )rx   r!   r   r   r   get_namespaces   s    zSymbol.get_namespacesc                 C   s    t | jdkrtd| jd S )Nrq   z$name is bound to multiple namespacesr   )lenrx   
ValueErrorr!   r   r   r   get_namespace   s    zSymbol.get_namespace)N)r-   r.   r/   r#   r7   r=   rz   r{   r|   r}   r~   r   r   ro   r   r   r   r   r   r   r   r   r   r      s    __main__rq   exec)+r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   __all__r   r   r   r   r   r   r   r-   ossysopenargvfreadsrcpathsplitmodrI   rR   rO   infoprintr   r   r   r   r   r   <module>   s$   DN,M

