
    -Ph                    $   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mZ ddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ erdd	lmZ dd
lmZ ddlmZ  ej        e          Zd j        Z G 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 ).zPreserve function defaults.

Preserve the default argument values of function signatures in source code
and keep them not evaluated for readability.
    )annotationsN)TYPE_CHECKING)RemovedInSphinx90Warning)__)unparse)logging)Any)Sphinx)ExtensionMetadatac                     d S N r       d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/ext/autodoc/preserve_defaults.py<lambda>r      s     r   c                      e Zd ZddZd	dZdS )
DefaultValuenamestrreturnNonec                    || _         d S r   r   )selfr   s     r   __init__zDefaultValue.__init__    s    			r   c                    | j         S r   r   )r   s    r   __repr__zDefaultValue.__repr__#   s
    yr   N)r   r   r   r   )r   r   )__name__
__module____qualname__r   r   r   r   r   r   r      s<                r   r   objr	   r   ast.FunctionDef | Nonec                ^   t          j        dt          d           	 t          j        |           }|                    d          r/t          j        d|z             }|j        d         j        d         S t          j        |          }|j        d         S # t          t          f$ r Y dS w xY w)zGet FunctionDef object from living object.

    This tries to parse original code for living object and returns
    AST node for given *obj*.
    zsphinx.ext.autodoc.preserve_defaults.get_function_def is deprecated and scheduled for removal in Sphinx 9. Use sphinx.ext.autodoc.preserve_defaults._get_arguments() to extract AST arguments objects from a lambda or regular function.   )
stacklevel 		if True:
r   N)warningswarnr   inspect	getsource
startswithastparsebodyOSError	TypeError)r!   sourcemodules      r   get_function_defr6   '   s     M	
 	!   "3''[)) 	" Y|f455F;q>&q))Yv&&F;q>!Y   tts   AB 6 B B,+B,ast.arguments | Nonec                  	 t          j        |           }|                    d          r0t          j        d|z             }|j        d         j        d         }n!t          j        |          }|j        d         }n4# t          t          f$ r Y dS t          $ r t          |           rY dS  w xY wt          |          S )zParse 'ast.arguments' from an object.

    This tries to parse the original code for an object and returns
    an 'ast.arguments' node.
    r&   r)   r   N)r,   r-   r.   r/   r0   r1   r2   r3   SyntaxError
_is_lambda_get_arguments_inner)r!   r4   r5   subjects       r   _get_argumentsr=   E   s    "3''[)) 	%Y|f455Fk!n)!,GGYv&&Fk!nGY   tt   c?? 	 44
 	  (((s   A:A= =B.B.,B.xboolc               V    t          | t          j                  o| j        t          k    S r   )
isinstancetypes
LambdaTyper   _LAMBDA_NAMEr>   s    r   r:   r:   h   s!    a)**Iqz\/IIr   c                   t          | t          j        t          j        z  t          j        z            r| j        S t          | t          j        t          j        z            rt          | j	                  S d S r   )
rA   r/   AsyncFunctionDefFunctionDefLambdaargsAssign	AnnAssignr;   valuerE   s    r   r;   r;   l   s\    !S)CO;cjHII v!SZ#-/00 -#AG,,,4r   lines	list[str]positionast.expr
str | Nonec                    	 |j         |j        k    r$| |j         dz
           }||j        |j                 S d S # t          t
          f$ r Y d S w xY w)N   )lineno
end_lineno
col_offsetend_col_offsetAttributeError
IndexError)rN   rP   lines      r   get_default_valuer\   t   sl    ?h1111,-D+h.EEFF 4J'   tts   38 AAappr
   bound_methodr   c                   | j         j        sdS 	 t          j        |                                          }|d                             d          r|                    dd           n# t          t          f$ r g }Y nw xY w	 t          |          }n# t          $ r Y dS w xY w|dS |j        s	|j        sdS 	 |r>t          j        |          r*t          |d          rt          j        |j                  }nt          j        |          }t#          |j                  }t#          |j                  }t#          |j                                                  }t)          |          D ]\  }	}
|
j        |
j        u r&|
j        |
j        k    r|                    d           :|
j        |
j        |
j        hv r]|                    d          }t9          ||          }|t;          |          }|
                    t?          |                    ||	<   |                    d          }t9          ||          }|t;          |          }|
                    t?          |                    ||	<   
|                    |          }	 ||_         dS # tB          $ r ||j"        d<   Y dS w xY w# tB          t          f$ r Y dS tF          $ r4}tH          %                    tM          d	          ||           Y d}~dS d}~ww xY w)
z2Update defvalue info of *obj* using type_comments.Nr   r&    __func__)default)
parameters__signature__z3Failed to parse a default argument value for %r: %s)'configautodoc_preserve_defaultsr,   r-   
splitlinesr.   insertr2   r3   r=   r9   defaultskw_defaultsismethodhasattr	signaturera   listrc   values	enumeraterb   emptykindKEYWORD_ONLYpopPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr\   ast_unparsereplacer   rd   rY   __dict__NotImplementedErrorloggerwarningr   )r]   r!   r^   rN   rJ   sigri   rj   rc   iparamrb   rM   excs                 r   update_defvaluer      s\   :/ !#&&11338{++ 	 LLBY   c""   | 	= !1 *
 	)G,S11 	)gc:6N6N 	)#CL11CC#C((C&&4+,,#.//1122
!*-- 	O 	OHAu}++:!333OOA&&&:%"79T!UUU&ll1ooG-eW==E} +G 4 4$)MM,u:M:MM$N$NJqMM)ooa00G-eW==E} +G 4 4$)MM,u:M:MM$N$NJqMMkkZk00	0 #C 	0 	0 	0,/CL))))	0 I&   
 	 
 
 
DEEsC	
 	
 	
 	
 	
 	
 	
 	
 	

sa   AA( (A>=A>B 
B B 8GJ. 
J J+'J. *J++J. .K?	K?)K::K?r   c                    |                      dddt          t          h                     |                     dt                     t
          j        ddS )Nrf   Fenv)rB   z autodoc-before-process-signatureT)versionparallel_read_safe)add_config_value	frozensetr?   connectr   sphinx__display_version__)r]   s    r   setupr      sc    #UED69J9J     KK2ODDD -"  r   )r!   r	   r   r"   )r!   r	   r   r7   )r>   r	   r   r?   )r>   r	   r   r7   )rN   rO   rP   rQ   r   rR   )r]   r
   r!   r	   r^   r?   r   r   )r]   r
   r   r   )$__doc__
__future__r   r/   r,   rB   r*   typingr   r   sphinx.deprecationr   sphinx.localer   sphinx.pycode.astr   rw   sphinx.utilr   r	   sphinx.applicationr
   sphinx.util.typingr   	getLoggerr   r{   rD   r   r6   r=   r:   r;   r\   r   r   r   r   r   <module>r      s    # " " " " " 



                 7 7 7 7 7 7       4 4 4 4 4 4       5))))))444444		8	$	$&          < )  )  )  )FJ J J J   	 	 	 	D
 D
 D
 D
N	 	 	 	 	 	r   