
    O&i                     X   d Z ddlZddlZddlZddlmZ ddlmZmZmZ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 dd	lmZ  ej        e          Z G d
 d          Zdede	ej                 fdZdee         dej        de	e         fdZdedededdfdZ dedeeef         f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.
    N)	Parameter)AnyDictListOptional)Sphinx)__)parse)unparse)loggingc                   *    e Zd ZdeddfdZdefdZdS )DefaultValuenamereturnNc                     || _         d S Nr   )selfr   s     q/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/ext/autodoc/preserve_defaults.py__init__zDefaultValue.__init__   s    			    c                     | j         S r   r   )r   s    r   __repr__zDefaultValue.__repr__   s
    yr   )__name__
__module____qualname__strr   r    r   r   r   r      sQ        S T    #      r   r   objr   c                    	 t          j        |           }|                    d          r*t          d|z             }|j        d         j        d         S t          |          }|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*.
     z\tz	if True:
r   N)inspect	getsource
startswith	ast_parsebodyOSError	TypeError)r   sourcemodules      r   get_function_defr,      s    
"3''\** 	" |f455F;q>&q))v&&F;q>!Y   tts   AA1 A1 1BBlinespositionc                     	 t           j        dk     rd S |j        |j        k    r$| |j        dz
           }||j        |j                 S d S # t          t          f$ r Y d S w xY w)N)         )sysversion_infolineno
end_lineno
col_offsetend_col_offsetAttributeError
IndexError)r-   r.   lines      r   get_default_valuer<   2   s    
f$$4_ 3331,-D+H,CCDD 4J'   tts   A
 3A
 
AAappbound_methodc                 "   | 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          |          }|j
        j        s|j
        j        rt          j        |          }t          |j
        j                  }t          |j
        j                  }t          |j                                                  }t#          |          D ]\  }	}
|
j        |
j        u r&|
j        |
j        k    r|                    d           :|
j        |
j        |
j        fv r]|                    d          }t3          ||          }|t5          |          }|
                    t9          |                    ||	<   |                    d          }t3          ||          }|t5          |          }|
                    t9          |                    ||	<   
|rIt          j        |          r5t          j        dt<          j                  }|                    d|           |                    |          }|r t          j        |          r||j        d<   dS ||_         dS dS # tB          t          f$ r Y dS tD          $ r4}tF          $                    tK          d	          ||           Y d}~dS d}~ww xY w)
z2Update defvalue info of *obj* using type_comments.Nr   r!    )defaultcls)
parameters__signature__z3Failed to parse a default argument value for %r: %s)&configautodoc_preserve_defaultsr#   r$   
splitlinesr%   insertr(   r)   r,   argsdefaultskw_defaults	signaturelistrC   values	enumeraterA   emptykindKEYWORD_ONLYpopPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr<   ast_unparsereplacer   ismethodr   __dict__rD   r9   NotImplementedErrorloggerwarningr	   )r=   r   r>   r-   functionsigrJ   rK   rC   iparamrA   valuerB   excs                  r   update_defvaluerc   @   s'   :/ !#&&11338|,, 	 LLBY   )\#C((=! "	(X]%> "	(#C((CHM233Hx}899Kcn335566J%j11 S S5=EK//zU%777#***ze&;U=X%YYY"*,,q// 1% A A =$/$8$8E(-l5>Q>Q(R(R
1"-//!"4"4 1% A A =$/$8$8E(-l5>Q>Q(R(R
1 * 0 5 5 *'y/NOO!!!S)))+++44C ( 0 5 5 (03_---$'!!!E"	( "	(F I&    \ \ \rOPPRUWZ[[[[[[[[[\s7   AA( (A>=A>H.J= 2J= =L	L)L		Lc                     |                      ddd           |                     dt                     t          j        ddS )NrF   FTz autodoc-before-process-signature)versionparallel_read_safe)add_config_valueconnectrc   sphinx__display_version__)r=   s    r   setuprk   x   sJ    4eTBBBKK2ODDD -"  r   )"__doc__astr#   r3   r   typingr   r   r   r   ri   sphinx.applicationr   sphinx.localer	   sphinx.pycode.astr
   r&   r   rV   sphinx.utilr   	getLoggerr   r[   r   FunctionDefr,   r   ASTr<   boolrc   rk   r   r   r   <module>rw      s    


  



       , , , , , , , , , , , ,  % % % % % %       0 0 0 0 0 0 4 4 4 4 4 4      		8	$	$       # (3?";    &T#Y #' hsm    5\ 5\c 5\ 5\$ 5\ 5\ 5\ 5\pv $sCx.      r   