
    z%i,                         	 d dl Z d dlZd dlZg dZi Z G d d      Z G d de      Z G d de      Zdd	Z	dd
Z
ddZddZddZ G d de j                        Zd Zd Zedk(  r e        yy)    N)
readmodulereadmodule_exClassFunctionc                       e Zd Z	 d Zy)_Objectc                     || _         || _        || _        || _        || _        || _        i | _        || |j                  |<   y y N)modulenamefilelineno
end_linenoparentchildren)selfr   r   r   r   r   r   s          :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/pyclbr.py__init__z_Object.__init__7   sL    		$$(FOOD!     N)__name__
__module____qualname__r    r   r   r   r   5   s
    1	)r   r   c                   *     e Zd Z	 	 ddd fdZ xZS )r   Nr   c                |    t         |   ||||||       || _        t        |t              r||j
                  |<   y y r
   )superr   is_async
isinstancer   methods)	r   r   r   r   r   r   r   r   	__class__s	           r   r   zFunction.__init__F   s>    tVZH fe$#)FNN4  %r   )NFr   r   r   r   __classcell__r!   s   @r   r   r   D   s    =',*<@* *r   r   c                   *     e Zd Z	 	 ddd fdZ xZS )r   Nr   c                R    t         |   ||||||       |xs g | _         i | _        y r
   )r   r   r    )	r   r   r   super_r   r   r   r   r!   s	           r   r   zClass.__init__P   s,    tVZH\r
r   r
   r"   r$   s   @r   r   r   N   s    ',0 r   r   c           	      P    	 t        | j                  || j                  || ||      S )N)r   r   r   )r   r   r   )ob	func_namer   r   r   s        r   _nest_functionr+   Y   s+    0BIIy"''6ZI Ir   c           	      P    	 t        | j                  ||| j                  || |      S )Nr   r   )r   r   r   )r)   
class_namer   r   r   s        r   _nest_classr/   ^   s)    -Jrwwz3 3r   c                     	 i }t        | |xs g       j                         D ]  \  }}t        |t              s|||<    |S r
   )_readmoduleitemsr   r   )r   pathreskeyvalues        r   r   r   d   sO    
 C!&$*"5;;= 
UeU#CH Jr   c                 $    	 t        | |xs g       S r
   )r1   )r   r3   s     r   r   r   p   s     vtzr**r   c                    	 ||d| }n| }|t         v r	t         |   S i }| t        j                  v r||t         | <   |S | j                  d      }|dk\  rQ| d | }| |dz   d  }t	        |||      }||d|}d|vrt        dj                  |            t	        ||d   |      S d }	||}
n|t        j                  z   }
t        j                  j                  ||
      }|t        d||      |t         |<   |j                  |j                  |d<   	 |j                  j                  |      }||S |j                  j!                  |      }t#        ||||||      S # t        t
        f$ r |cY S w xY w)N.r      __path__zNo package named {}zno module named )r   )_modulessysbuiltin_module_namesrfindr1   ImportErrorformatr3   	importlibutil_find_spec_from_pathModuleNotFoundErrorsubmodule_search_locationsloader
get_sourceAttributeErrorget_filename_create_tree)r   r3   	inpackage
fullmoduletreeipackage	submoduler   fsearch_pathspecsourcefnames                 r   r1   r1   z   s     )62

 X
## D )))i.? 	SAAv!*1Q34L	WdI6 !*G4GV#3::7CDD9fZ&8'BB 	ASXXo>>..z;GD|!$4ZN"C*UUHZ&&2::Z''
3
 >KKK$$Z0E
D%yII K( s   E" "E65E6c                   6    e Zd Zd Zd ZdddZd Zd Zd Zy	)
_ModuleBrowserc                 X    || _         || _        || _        || _        || _        g | _        y r
   )r3   rN   r   r   rL   stack)r   r   r3   r   rN   rL   s         r   r   z_ModuleBrowser.__init__   s,    			"
r   c           	         g }|j                   D ]  }t        j                  |      }|| j                  v r|j	                  | j                  |          Et        |j                  d      x}      dkD  r8|^ }}}|t        v ss|j	                  t        |   j                  ||             |j	                  |        | j                  r| j                  d   nd }	t        | j                  |j                  || j                  |j                  |	|j                        }|	|| j                  |j                  <   | j                  j	                  |       | j!                  |       | j                  j#                          y )Nr9   r:   r-   )basesastunparserN   appendlensplitr<   getrZ   r   r   r   r   r   r   generic_visitpop)
r   noder]   baser   names_r   class_r   s
             r   visit_ClassDefz_ModuleBrowser.visit_ClassDef   s,   JJ 	#D;;t$Dtyy TYYt_-djjo-U.2 &+"FFX%LL&!1!5!5fd!CDT"	# $(::B4t{{DIIudii$B>#)DIIdii 

&!4 

r   Fr   c          	         | j                   r| j                   d   nd }t        | j                  |j                  | j                  |j
                  |||j                        }||| j                  |j                  <   | j                   j                  |       | j                  |       | j                   j                          y )Nr\   r   )rZ   r   r   r   r   r   r   rN   r`   rd   re   )r   rf   r   r   functions        r   visit_FunctionDefz _ModuleBrowser.visit_FunctionDef   s    #'::B4DKKDIIt{{"HJ>#+DIIdii 

(#4 

r   c                 *    | j                  |d       y )NTrl   )ro   )r   rf   s     r   visit_AsyncFunctionDefz%_ModuleBrowser.visit_AsyncFunctionDef   s    td3r   c                    |j                   dk7  ry |j                  D ]/  }	 	 t        |j                  | j                  | j
                         1 y # t        $ r t        |j                  g        Y $w xY w# t        t        f$ r Y iw xY w)Nr   )
col_offsetrh   r1   r   r3   rL   r@   SyntaxError)r   rf   r   s      r   visit_Importz_ModuleBrowser.visit_Import   s~    ??ajj 		F1TYYG		 # 1R01-  s)   +AA2/A51A22A55BBc                     |j                   dk7  ry 	 d|j                  z  }|j                  r||j                  z  }t        || j                  | j
                        }|j                  D ]  }|j                  |v r5||j                     | j                  |j                  xs |j                  <   F|j                  dk(  sV|j                         D ]&  \  }}|j                  d      r|| j                  |<   (  y # t        t        f$ r Y y w xY w)Nr   r9   *ri   )rs   levelr   r1   r3   rL   r@   rt   rh   r   rN   asnamer2   
startswith)r   rf   r   r   import_nameimport_values         r   visit_ImportFromz_ModuleBrowser.visit_ImportFrom   s    ??a	4::%F{{$++% DNNCF JJ 	:DyyF"6<TYY6G		$++23c!17 :-K"--c2 -9DIIk*:		: [) 		s   AC; ;DDN)	r   r   r   r   rk   ro   rq   ru   r}   r   r   r   rX   rX      s%    2 38 4:r   rX   c                     t        | ||||      }|j                  t        j                  |             |j                  S r
   )rX   visitr^   parserN   )rM   r3   rV   rU   rN   rL   mbrowsers          r   rK   rK     s3    j$tYGHNN399V$%==r   c                  &   	 dd l } 	 t        j                  d   }| j                  j                  |      r\| j                  j                  |      g}| j                  j                  |      }|j                         j                  d      r|d d }ng }t        ||      }d }t        |j                         |d      }d}|rA|j                         }t        |t              r$t!        |d	      sd|_        t        |t$              rRt        |j&                  j                         |d      }|D ]  }	|j"                  |z   |	_         |j)                  |       t        |t*              rIt-        d
j/                  d|j"                  z  |j0                  |j2                  |j4                               nMt        |t6              r=t-        dj/                  d|j"                  z  |j0                  |j4                               |r@y y #  t        }Y xY w)Nr   r:   z.pyc                     t        | dd      S )Nr   r   )getattr)as    r   <lambda>z_main.<locals>.<lambda>"  s    71h2 r   T)r5   reverse   indentz{}class {} {} {} z{}def {} {})osr=   argv__file__r3   existsdirnamebasenamelowerendswithr   sortedvaluesre   r   listhasattrr   r   r   extendr   printrA   r   r   r   r   )
r   modr3   rN   
lineno_keyobjsindent_levelobjnew_objsr)   s
             r   _mainr     s   Ehhqk 
ww~~c$%ggs#99;&cr(Cd#D2J$++-Z>DL
hhjc4 sH%CJc7#cll113",d<H 6JJ5	6KK!c5!$6#

*CHHciiLNX&-&&sSZZ'73::NO% s   H H__main__)Fr
   )r^   r=   importlib.utilrB   __all__r<   r   r   r   r+   r/   r   r   r1   NodeVisitorrX   rK   r   r   r   r   r   <module>r      s   )V  
 
>) )*w *G I
3
+=J@P:S__ P:f$PL z	G r   