
    7 f                       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  ej        e          Zd j        Z G d d          Zd&dZd'dZ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)Sphinxc                     d S N r       Z/var/www/equiseq/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_defr5   &   s     M  !9Q	H H H H"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.   r/   r0   r1   r2   SyntaxError
_is_lambda_get_arguments_inner)r    r3   r4   subjects       r   _get_argumentsr<   @   s    "3''[)) 	%Y|f455Fk!n)!,GGYv&&Fk!nGY   tt   c?? 	 44
 	  (((s   A:A= =B.B.,B.c               V    t          | t          j                  o| j        t          k    S r   )
isinstancetypes
LambdaTyper   _LAMBDA_NAMExs    r   r9   r9   c   s!    a)**Iqz\/IIr   rC   c                   t          | t          j        t          j        t          j        f          r| j        S t          | t          j        t          j        f          rt          | j	                  S d S r   )
r>   r.   AsyncFunctionDefFunctionDefLambdaargsAssign	AnnAssignr:   valuerB   s    r   r:   r:   g   sY    !c*COSZHII v!cj#-011 -#AG,,,4r   lines	list[str]positionast.AST
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)rL   rN   lines      r   get_default_valuerZ   o   sl    ?h1111,-D+H,CCDD 4J'   tts   38 AAappr
   bound_methodboolr   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        f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-   insertr1   r2   r<   r8   defaultskw_defaultsismethodhasattr	signaturer`   listrb   values	enumeratera   emptykindKEYWORD_ONLYpopPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrZ   ast_unparsereplacer   rc   rW   __dict__NotImplementedErrorloggerwarningr   )r[   r    r\   rL   rH   sigrh   ri   rb   iparamra   rK   excs                 r   update_defvaluer   {   sP   :/ !#&&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&   
 	 \ \ \rOPPRUWZ[[[[[[[[[\sa   AA( (A>=A>B 
B B 8GJ. 
J J+'J. *J++J. .K?	K?)K::K?dict[str, Any]c                    |                      ddd           |                     dt                     t          j        ddS )Nre   FTz autodoc-before-process-signature)versionparallel_read_safe)add_config_valueconnectr   sphinx__display_version__)r[   s    r   setupr      sJ    4eTBBBKK2ODDD -"  r   )r    r	   r   r!   )r    r	   r   r6   )rC   r	   r   r6   )rL   rM   rN   rO   r   rP   )r[   r
   r    r	   r\   r]   r   r   )r[   r
   r   r   )"__doc__
__future__r   r.   r+   r?   r)   typingr   r   sphinx.deprecationr   sphinx.localer   sphinx.pycode.astr   rv   sphinx.utilr   r	   sphinx.applicationr
   	getLoggerr   rz   rA   r   r5   r<   r9   r:   rZ   r   r   r   r   r   <module>r      s    # " " " " " 



                 7 7 7 7 7 7       4 4 4 4 4 4       *))))))		8	$	$&          4 )  )  )  )FJ J J   	 	 	 	B\ B\ B\ B\J     r   