403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.9/site-packages/sphinx/pycode/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.9/site-packages/sphinx/pycode/__pycache__/parser.cpython-39.pyc
a

�abUS�@szdZddlZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZddlmZmZddlmZmZmZmZmZddlmZdd	lmZmZe�d
�Ze�d�Ze�d�Ze e d
�dd�Z!ej"eej#d�dd�Z$d%ej"ej%ee d�dd�Z&e e d�dd�Z'Gdd�d�Z(Gdd�d�Z)Gdd�de)�Z*Gdd �d ej+�Z,Gd!d"�d"e)�Z-Gd#d$�d$�Z.dS)&z�
    sphinx.pycode.parser
    ~~~~~~~~~~~~~~~~~~~~

    Utilities parsing and analyzing Python code.

    :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�OrderedDict)�	Signature)�DEDENT�INDENT�NAME�NEWLINE�NUMBER�OP�STRING)�COMMENT�NL)�Any�Dict�List�Optional�Tuple)�ast)�parse�unparsez^\s*#: ?(.*)
?
?$z^\s*$z^\s*(#.*)?$)�code�returncCs|�dd�S)N�� )�replace)r�r�8/usr/lib/python3.9/site-packages/sphinx/pycode/parser.py�filter_whitespacesr��nodercCst|tj�r|jS|jgSdS)z3Get list of targets from Assign and AnnAssign node.N)�
isinstancer�Assign�targets�target)rrrr�get_assign_targets sr#)r�selfrc	Cs|r
|j}|jj}|dvr(td|��n�|dkrX|dusB|j|krJ|jgStd|��n�|dvr�g}|jD],}z|�t||��Wqjty�Yqj0qj|S|dkr�|jjjdkr�|r�|jj|kr�dt|j	|�d	gStd|��n0|d
kr�|gS|dk�r
t|j|�St
d|��dS)
z�Convert assignment-AST to variable names.

    This raises `TypeError` if the assignment does not create new variable::

        ary[0] = 'foo'
        dic["bar"] = 'baz'
        # => TypeError
    )ZIndexZNumZSlice�StrZ	Subscriptz%r does not create new variable�NameNz*The assignment %r is not instance variable)rrZ	Attributez%sr�strZStarredzUnexpected node name %r)�arg�	__class__�__name__�	TypeError�id�elts�extend�get_lvar_names�value�attr�NotImplementedError)rr$Zself_idZ	node_name�members�eltrrrr/(s4	

r/)�srcCs:dd�dd�}||_t�|�}|r2|�d��d�SdSdS)z1Remove common leading indentation from docstring.N�rcSsdS�Nrrrrr�dummyTszdedent_docstring.<locals>.dummyz
�)�__doc__�inspectZgetdoc�lstrip�rstrip)r5r8�	docstringrrr�dedent_docstringRs
r?c@sfeZdZdZeeeeefeeefedd�dd�Zee	d�dd�Z
ee	d	�d
d�Zed�d
d�ZdS)�Tokenz)Better token wrapper for tokenize module.N)�kindr0�start�end�sourcercCs"||_||_||_||_||_dSr7)rAr0rBrCrD)r$rAr0rBrCrDrrr�__init__cs
zToken.__init__)�otherrcCsft|t�r|j|kSt|t�r(|j|kSt|ttf�rJ|j|jgt|�kS|durVdStd|��dS)NFzUnknown value: %r)r�intrAr'r0�list�tuple�
ValueError)r$rFrrr�__eq__ks



zToken.__eq__)�
conditionsrcst�fdd�|D��S)Nc3s|]}�|kVqdSr7r)�.0�	candidate�r$rr�	<genexpr>x�zToken.match.<locals>.<genexpr>)�any)r$rLrrOr�matchwszToken.matchr6cCsdtj|j|j��fS)Nz<Token kind=%r value=%r>)�tokenize�tok_namerAr0�striprOrrr�__repr__zs�zToken.__repr__)
r*�
__module__�__qualname__r:rGr
rr'rE�boolrKrSrWrrrrr@`s�r@c@sReZdZeedd�dd�Zeed�dd�Zed�d	d
�Z	e
eed�dd
�ZdS)�TokenProcessorN)�buffersrcs2t|��||_t��fdd��|_d|_d|_dS)Ncst��Sr7)�nextr��linesrr�<lambda>�rQz)TokenProcessor.__init__.<locals>.<lambda>)�iterr\rT�generate_tokens�tokens�current�previous)r$r\rr^rrE�s
zTokenProcessor.__init__��linenorcCs|j|dS�zReturns specified line.��r\�r$rgrrr�get_line�szTokenProcessor.get_liner6cCs<z|j|_tt|j��|_Wnty4d|_Yn0|jS)z_Fetch the next token from source code.

        Returns ``None`` if sequence finished.
        N)rdrer@r]rc�
StopIterationrOrrr�fetch_token�szTokenProcessor.fetch_token)�	conditionrcCs�g}|��r�|�|j�|j|kr&q�q|jtdgkrH||�tdg�7}q|jtdgkrj||�tdg�7}q|jtdgkr||�tdg�7}q|S)zlFetch tokens until specified token appeared.

        .. note:: This also handles parenthesis well.
        �(�)�{�}�[�])rn�appendrdr	�fetch_until)r$rorcrrrrw�s
zTokenProcessor.fetch_until)r*rXrYrr'rErGrlr@rnr
rwrrrrr[s
r[csLeZdZdZeedd��fdd�Zeed�dd�Zdd�d	d
�Z	�Z
S)�AfterCommentParserz�Python source code parser to pick up comments after assignments.

    This parser takes code which starts with an assignment statement,
    and returns the comment for the variable if one exists.
    N�r_rcst��|�d|_dSr7)�superrE�comment�r$r_�r)rrrE�szAfterCommentParser.__init__r6cCs�g}|��r�|�|j�|jtdgkr:||�tdg�7}q|jtdgkr\||�tdg�7}q|jtdgkr~||�tdg�7}q|jtkr�||�t�7}q|jtdgkr�q�q|jjttt	t
fvrq�q|S)z%Fetch right-hand value of assignment.rprqrrrsrtru�;)rnrvrdr	rwrrrArrr
)r$rcrrr�fetch_rvalue�s 
zAfterCommentParser.fetch_rvaluecCsP|���tdgtt�s"|jsJ�q|jtdgkr8|��|jtkrL|jj|_dS)z3Parse the code and obtain comment after assignment.�=N)	rnrSr	rrrdrr0r{rOrrrr�s
zAfterCommentParser.parse)r*rXrYr:rr'rEr@rr�
__classcell__rrr}rrx�srxcs�eZdZdZeeedd��fdd�Zeeeed�dd�Zedd�d	d
�Z	edd�dd�Z
ejdd
�dd�Z
eedd�dd�Zeejdd�dd�Zeejed�dd�Zeejed�dd�Zeejd�dd�Zeed�dd �Zejdd!��fd"d#�Zejdd!�d$d%�Zejdd!�d&d'�Zejdd!�d(d)�Zej dd!�d*d+�Z!ej"dd!�d,d-�Z#ej$dd!�d.d/�Z%ej&dd!�d0d1�Z'ejdd!�d2d3�Z(ej)dd!�d4d5�Z*�Z+S)6�VariableCommentPickerz7Python source code parser to pick up variable comments.N)r\�encodingrcsnt��|_||_||_g|_g|_d|_t�|_	i|_
d|_i|_g|_
i|_d|_d|_d|_t���dSr7)�	itertools�count�counterr\r��context�current_classes�current_functionr�comments�annotationsre�	deforders�finals�	overloads�typing�typing_final�typing_overloadrzrE)r$r\r�r}rrrE�s 
zVariableCommentPicker.__init__)�namercCsD|jr4|jr.|jddkr.|jdd�|gSdSn|j|gSdS)z;Get qualified name for given object as a list of string(s).���rEN)r�r�r�)r$r�rrr�get_qualname_for�s
z&VariableCommentPicker.get_qualname_forcCs(|�|�}|r$t|j�|jd�|�<dS�N�.)r�r]r�r��join�r$r��qualnamerrr�	add_entry�s
zVariableCommentPicker.add_entrycCs$|�|�}|r |j�d�|��dSr�)r�r�rvr�r�rrr�add_final_entry�s
z%VariableCommentPicker.add_final_entry)�funcrcCsBddlm}|�|j�}|r>|j�d�|�g�}|�||��dS)Nr)�signature_from_astr�)Zsphinx.util.inspectr�r�r�r��
setdefaultr�rv)r$r�r�r�r�rrr�add_overload_entrys
z(VariableCommentPicker.add_overload_entry)r�r{rcCs2|�|�}|r.d�|dd��}||j||f<dS�Nr�r�)r�r�r�)r$r�r{r��basenamerrr�add_variable_comments
z*VariableCommentPicker.add_variable_comment)r��
annotationrcCs6|�|�}|r2d�|dd��}t|�|j||f<dSr�)r�r�rr�)r$r�r�r�r�rrr�add_variable_annotations
z-VariableCommentPicker.add_variable_annotation)�
decoratorsrc	Csfg}|jr|�d|j�|jr,|�|j�|D]0}zt|�|vrJWdSWq0ty^Yq00q0dS)Nz%s.finalTF)r�rvr�rr2)r$r��final�	decoratorrrr�is_finalszVariableCommentPicker.is_finalc	Csfg}|jr|�d|j�|jr,|�|j�|D]0}zt|�|vrJWdSWq0ty^Yq00q0dS)Nz%s.overloadTF)r�rvr�rr2)r$r��overloadr�rrr�is_overload'sz!VariableCommentPicker.is_overloadr6cCsJ|jr|jjjr|jjjdS|jrBt|jjdd�rB|jjjdSdSdS)z8Returns the name of the first argument if in a function.r�posonlyargsN)r��args�getattrr�rOrrr�get_self7s�zVariableCommentPicker.get_selfrfcCs|j|dSrhrjrkrrrrlBszVariableCommentPicker.get_linercst��|�||_dS)z(Updates self.previous to the given node.N)rz�visitre�r$rr}rrr�FszVariableCommentPicker.visitcCsn|jD]b}|�|jp|j�|jdkr6|jp0|j|_q|jdkrP|jpJ|j|_q|jdkr|jpd|j|_qdS)�8Handles Import node and record the order of definitions.r�ztyping.finalztyping.overloadN)�namesr��asnamer�r�r�r��r$rr�rrr�visit_ImportKs



z"VariableCommentPicker.visit_ImportcCsh|jD]\}|�|jp|j�|jdkr@|jdkr@|jp:|j|_q|jdkr|jdkr|jp^|j|_qdS)r�r�r�r�N)r�r�r�r��moduler�r�r�rrr�visit_ImportFromWs
z&VariableCommentPicker.visit_ImportFromcs�z0t|�}t�fdd�|D�g�}��|j�}WntyDYdS0t|d�rp|jrp|D]}��||j�qZn(t|d�r�|jr�|D]}��||j�q�t	||j
d�g�j|jd��}|��|j
�rt�|j
��r|D]$}��|t�d|j
����|�q�dSt�|d|j
���r�g}t|jd�D]@}��|jd|�}	t�|	��rh|�t�d|	��n�qr�q0|�r�td�t|���}
|D]}��||
���|��q�dS|D]}��|��q�dS)	z3Handles Assign node and pick up a variable comment.csg|]}t|���d��qS)rO)r/r�)rM�trOrr�
<listcomp>erQz6VariableCommentPicker.visit_Assign.<locals>.<listcomp>Nr��type_commentz\1ri�
)r#�sumrlrgr+�hasattrr�r�r�rx�
col_offsetr\rr{�
comment_rerSr��subr��	indent_re�rangervr?r��reversed)r$rr!�varnamesZcurrent_line�varname�parserZ
comment_lines�iZbefore_liner{rrOr�visit_AssignasH�
z"VariableCommentPicker.visit_AssigncCs|�|�dS)z6Handles AnnAssign node and pick up a variable comment.N)r�r�rrr�visit_AnnAssign�sz%VariableCommentPicker.visit_AnnAssigncCs�t|jtjtjf�r�t|jtj�r�zpt|j�}t|d|�	��}|D]J}t|jj
t�r`|jj
}n|jj
�|j
ppd�}|�|t|��|�|�qDWnty�Yn0dS)z2Handles Expr node and pick up a comment if string.r�utf-8N)rrerr �	AnnAssignr0r%r#r/r�r5r'�decoder�r�r?r�r+)r$rr!r�r�r>rrr�
visit_Expr�s�

z VariableCommentPicker.visit_ExprcCs0|jD]}|�|�q|jD]}|�|�qdS)z�Handles Try node and processes body and else-clause.

        .. note:: pycode parser ignores objects definition in except-clause.
        N)�bodyr��orelse)r$rZsubnoderrr�	visit_Try�s

zVariableCommentPicker.visit_TrycCst|j�|j�|�|j�|�|j�r2|�|j�|j�|j�||_|j	D]}|�
|�qL|j��|j��dS)z&Handles ClassDef node and set context.N)r�rvr�r�r��decorator_listr�r�rer�r��pop�r$r�childrrr�visit_ClassDef�s

z$VariableCommentPicker.visit_ClassDefcCs�|jdur~|�|j�|�|j�r.|�|j�|�|j�rD|�|�|j�	|j�||_|j
D]}|�|�q^|j��d|_dS)z)Handles FunctionDef node and set context.N)
r�r�r�r�r�r�r�r�r�rvr�r�r�r�rrr�visit_FunctionDef�s



z'VariableCommentPicker.visit_FunctionDefcCs|�|�dS)z.Handles AsyncFunctionDef node and set context.N)r�r�rrr�visit_AsyncFunctionDef�sz,VariableCommentPicker.visit_AsyncFunctionDef),r*rXrYr:rr'rErr�r�r�rZFunctionDefr�r��ASTr��exprrZr�r�r(r�rGrlr�ZImportr�Z
ImportFromr�r r�r�r�ZExprr�ZTryr�ZClassDefr�r�ZAsyncFunctionDefr�r�rrr}rr��s,
0

r�csteZdZdZeedd��fdd�Zeeeeefdd�dd�Z	dd	�d
d�Z
edd�d
d�Zdd	�dd�Z�Z
S)�DefinitionFinderzXPython source code parser to detect location of functions,
    classes and methods.
    Nrycs(t��|�d|_g|_g|_i|_dSr7)rzrEr�r��indents�definitionsr|r}rrrE�s
zDefinitionFinder.__init__)r��entryrcCs4|jr&|jdddkr&|ddkr&n
||j|<dS)zAdd a location of definition.r�r�defN)r�r�)r$r�r�rrr�add_definition�s$zDefinitionFinder.add_definitionr6cCs�|��}|durq�q|tkrq|tdgkrX|jdusF|j�tttt�rX|j	dur�||_	q|�t
dg�rr|�d�q|�t
dg�r�|�d�q|tkr�|j�
d�q|tkr|��qdS)z1Parse the code to obtain location of definitions.N�@�classr�)rFNN)rnrr	rerSrrrrr�r�parse_definitionr�rv�finalize_block)r$�tokenrrrr�s$�
zDefinitionFinder.parse)�typrcCs�|��}|j�|j�d�|j�}|jr<|jjd}d|_n
|jd}|�tdg�|���	t
t�r�|�t�|j
�|||f�n"|�||||jdf�|j��dS)zParse AST of definition.r�rN�:)rnr�rvr0r�r�rBrwr	rSrrrr�r�rCr�)r$r�r��funcname�	start_posrrrr��s

z!DefinitionFinder.parse_definitioncCsj|j��}|ddkrf|\}}}|jjdd}t�|�|��rJ|d8}q0|�||||f�|j��dS)zFinalize definition block.rrFriN)	r�r�rdrC�emptyline_rerSrlr�r�)r$Z
definitionr�r�r�Zend_posrrrr�s


zDefinitionFinder.finalize_block)r*rXrYr:rr'rErrGr�rr�r�r�rrr}rr��sr�c@sNeZdZdZdeedd�dd�Zdd�dd	�Zdd�d
d�Zdd�dd
�ZdS)�ParserzyPython source code parser to pick up variable comments.

    This is a better wrapper for ``VariableCommentPicker``.
    r�N)rr�rcCs8t|�|_||_i|_i|_i|_i|_g|_i|_dSr7)	rrr�r�r�r�r�r�r�)r$rr�rrrrE#s
zParser.__init__r6cCs|��|��dS)zParse the source code.N)�parse_commentsr�rOrrrr-szParser.parsecCsTt|j�}t|j�d�|j�}|�|�|j|_|j|_|j|_|j	|_	|j
|_
dS)z$Parse the code and pick up comments.TN)rrr��
splitlinesr�r�r�r�r�r�r�)r$ZtreeZpickerrrrr�2s

zParser.parse_commentscCs$t|j�d��}|��|j|_dS)z0Parse the location of definitions from the code.TN)r�rr�rr�)r$r�rrrr�=szParser.parse_definition)r�)	r*rXrYr:r'rErr�r�rrrrr�s

r�)N)/r:r;r��rerT�collectionsrrr�rrrrrr	r
rrr�r
rrrrZsphinx.pycode.astrrr�compiler�r�r�r'rr�r�r#r(r/r?r@r[rxZNodeVisitorr�r�r�rrrr�<module>s2	$


*--zK

Youez - 2016 - github.com/yon3zu
LinuXploit