
    -Ph                      U 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m	Z	 ddl
mZmZmZm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mZmZ dd
lmZmZmZ ddlmZm Z  ddl!m"Z" ddl#mZm$Z$ ddl%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1 eruddl2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl
m8Z8m9Z9m:Z: ddl;m<Z< ddlm=Z= ddl>m?Z?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF ddl.mGZGmHZHmIZI e9d         ZJe3e<eJeKeeLeKeMf         eNeK         gdf         ZOdePd<    e$jQ        eR          ZS eTeTjU                  ZV ejW        dejX                  ZY ejW        d          ZZdd$Z[dd'Z\ G d( d)          Z] G d* d+          Z^ e]            Z_ e^            Z` ea            Zb ea            Zc ea            Zddd.Zedd0Zfdd2Zgdd4Zhdd5Zi ea            Zjdd6Zkdd8Zldd<Zm	 dddBZn	 	 	 dddHZo G dI dJeLeKef                   Zp G dK dL          Zq G dM dN          Zr G dO dPer          Zs G dQ dRer          Zt G dS dTer          Zu G dU dV          Zv G dW dXev          Zw G dY dZevet          Zx G d[ d\ex          Zy ezd]h          Z{ ezd^h          Z| G d_ d`evet          Z} G da dbe}          Z~ G dc dd          Z G de dfe          Z G dg dhe          Z G di djeeet          Z G dk dleveu          Z G dm dne          Z G do dpe          Z G dq dre          Z G ds dte          Z G du dveeeeeeweu	  	        Z G dw dxeweu          Zdd~ZddZdS )a  Extension to create automatic documentation from code docstrings.

Automatically insert docstrings for functions, classes or whole modules into
the doctree, thus avoiding duplication between docstrings and documentation
for those who like elaborate docstrings.
    )annotationsN)	Parameter	Signature)TYPE_CHECKINGAnyNewTypeTypeVar)
StringList)ENUM)PycodeError)get_class_membersimport_moduleimport_object)ismockmock
undecorate)___)ModuleAnalyzer)inspectlogging)prepare_docstringseparate_metadata)evaluate_signaturegetdocobject_descriptionsafe_getattrstringify_signature)get_type_hintsrestifystringify_annotation)CallableIteratorSequence)
ModuleType)ClassVarLiteral	TypeAlias)Sphinx)Config)BuildEnvironment_CurrentDocument)EventManager)DocumenterBridge)SphinxComponentRegistry)ExtensionMetadata
OptionSpec_RestifyMode)moduleclass	exceptionfunctionmethod	attributer(    _AutodocProcessDocstringListenera  ^ ([\w.]+::)?            # explicit module name
          ([\w.]+\.)?            # module and/or class name(s)
          (\w+)  \s*             # thing name
          (?: \[\s*(.*?)\s*])?   # optional: type parameters list
          (?: \((.*)\)           # optional: arguments
           (?:\s* -> \s* (.*))?  #           return annotation
          )? $                   # and nothing more
    z	^__\S+__$typehints_format#Literal['fully-qualified', 'short']returnr2   c                    | dk    rdS dS )Nshortsmartzfully-qualified-except-typing )r:   s    [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/ext/autodoc/__init__.py_get_render_moderB   P   s     7""w**    xr   c                    | S Nr@   )rD   s    rA   identityrG   X   s    HrC   c                  "    e Zd ZdZd
dZddZd	S )_Allz;A special value for :*-members: that matches to any member.itemr   r<   boolc                    dS NTr@   selfrJ   s     rA   __contains__z_All.__contains___   s    trC   Nonec                    d S rF   r@   rN   s     rA   appendz_All.appendb       rC   NrJ   r   r<   rK   )rJ   r   r<   rQ   )__name__
__module____qualname____doc__rP   rS   r@   rC   rA   rI   rI   \   sB        EE        rC   rI   c                      e Zd ZdZddZdS )	_EmptyzGA special value for :exclude-members: that never matches to any member.rJ   r   r<   rK   c                    dS NFr@   rN   s     rA   rP   z_Empty.__contains__i   s    urC   NrU   )rV   rW   rX   rY   rP   r@   rC   rA   r[   r[   f   s.        QQ     rC   r[   argobject | list[str]c                b    | dv rt           S | du rdS d |                     d          D             S )z8Used to convert the :members: option to auto directives.   NTFNc                ^    g | ]*}|                                 |                                 +S r@   strip.0rD   s     rA   
<listcomp>z"members_option.<locals>.<listcomp>{   s-    ???aQWWYY?		???rC   ,)ALLsplitr^   s    rA   members_optionrl   t   s>    
l
	t??399S>>????rC   object | set[str]c                V    | dv rt           S d |                     d          D             S )z-Used to convert the :exclude-members: option.ra   c                ^    h | ]*}|                                 |                                 +S r@   rc   re   s     rA   	<setcomp>z)exclude_members_option.<locals>.<setcomp>   s-    ;;;!;AGGII;;;rC   rh   )EMPTYrj   rk   s    rA   exclude_members_optionrr   ~   s0    
l;;syy~~;;;;rC   set[str]c                n    | dv rdhS | rd |                      d          D             S t                      S )zBUsed to convert the :inherited-members: option to auto directives.ra   objectc                6    h | ]}|                                 S r@   rc   re   s     rA   rp   z+inherited_members_option.<locals>.<setcomp>   s     222a		222rC   rh   )rj   setrk   s    rA   inherited_members_optionrx      sD    
lz	 22399S>>2222uurC   
str | Nonec                X    | dv rdS | dv r| S t          t          d          | z            )z=Used to convert the :member-order: option to auto directives.ra   N>   bysource	groupwisealphabeticalz)invalid value for member-order option: %s
ValueErrorr   rk   s    rA   member_order_optionr      s?    
lt	9	9	9
GHH3NOOOrC   c                L    | dv r| S t          t          d          | z            )zDUsed to convert the :class-doc-from: option to autoclass directives.>   bothinitr4   z+invalid value for class-doc-from option: %sr~   rk   s    rA   class_doc_from_optionr      s/    
'''
IJJSPQQQrC   c                    | dv rt           S | S )Nra   )SUPPRESSrk   s    rA   annotation_optionr      s    
l
rC   rK   c                    dS )znUsed to convert flag options to auto directives.  (Instead of
    directives.flag(), which returns None).
    Tr@   rk   s    rA   bool_optionr      s	     4rC   optionsdict[str, Any]rQ   c                    |                      d          t          u rdS |                     dg           }dD ]@}|                      |          }|'|t          ur|D ]}||vr|                    |           AdS )zWMerge :private-members: and :special-members: options to the
    :members: option.
    membersN)private-membersspecial-members)getri   
setdefaultrS   )r   r   keyother_membersmembers        rA   merge_members_optionr      s     {{9$$  B//G5 + +C(($c)A)A' + +((NN6***+ +rC   preintpostwhatSequence[str] | Nonec                     |st                      n5t          |t                    rt          |h          nt          |          d fd}|S )a  Return a listener that removes the first *pre* and last *post*
    lines of every docstring.  If *what* is a sequence of strings,
    only docstrings of a type in *what* will be processed.

    Use like this (e.g. in the ``setup()`` function of :file:`conf.py`)::

       from sphinx.ext.autodoc import cut_lines

       app.connect('autodoc-process-docstring', cut_lines(4, what={'module'}))

    This can (and should) be used in place of :confval:`automodule_skip_lines`.
    appr)   what__AutodocObjTypenamestrobjr   r   dict[str, bool]lines	list[str]r<   rQ   c                    r|vrd S |d = r%|r|d         s|                     d           | d = |r|d         r|                    d           d S d S d S )N )poprS   )	r   r   r   r   r   r   r   r   what_uniques	         rA   processzcut_lines.<locals>.process   s      	533F$3$K 	 U2Y 		"teff 	U2Y 	LL	 	 	 	rC   r   r)   r   r   r   r   r   r   r   r   r   r   r<   rQ   )	frozenset
isinstancer   )r   r   r   r   r   s   ``  @rA   	cut_linesr      sw      &&/kk	D#		 &''oo       ( NrC   Fmarkerr   	keepemptyexcludec                H    t          j        |           dfd}|S )an  Return a listener that either keeps, or if *exclude* is True excludes,
    lines between lines that match the *marker* regular expression.  If no line
    matches, the resulting docstring would be empty, so no change will be made
    unless *keepempty* is true.

    If *what* is a sequence of strings, only docstrings of a type in *what* will
    be processed.
    r   r)   r   r   r   r   r   r   r   r   r   r   r<   rQ   c                |   r|vrd S d} }|                                 }t          |          D ][\  }	}
|r|                    |	|z
             |dz  }                    |
          r"| }|r|                    |	|z
             |dz  }\|s	s||d d <   |r|d         r|                    d           d S d S d S )Nr      r   r   )copy	enumerater   matchrS   )r   r   r   r   r   r   deleteddelete
orig_linesiliner   r   	marker_rer   s              rA   r   zbetween.<locals>.process  s     	E%%FZZ\\
 ,, 	! 	!GAt 		!g+&&&1t$$ !# !IIa'k***qLG 	"Y 	"!E!!!H 	U2Y 	LL	 	 	 	rC   r   )recompile)r   r   r   r   r   r   s    ``` @rA   betweenr      sK     
6""I        8 NrC   c                  ,     e Zd ZdZd fdZd	dZ xZS )
Optionsz>A dict/attribute hybrid that returns None on nonexisting keys.r<   c                ^    t          t                                                                S rF   )r   superr   rO   	__class__s    rA   r   zOptions.copy)  s    uww||~~&&&rC   r   r   r   c                ^    	 | |                     dd                   S # t          $ r Y d S w xY w)Nr   -)replaceKeyError)rO   r   s     rA   __getattr__zOptions.__getattr__,  sB    	S#..// 	 	 	44	s    
,,)r<   r   )r   r   r<   r   )rV   rW   rX   rY   r   r   __classcell__r   s   @rA   r   r   &  sW        HH' ' ' ' ' '       rC   r   c                  d    e Zd ZU dZdZded<   ded<   ded<   ded	<   d
ed<   ddddddZddZdS )ObjectMemberzA member of object.

    This is used for the result of `Documenter.get_module_members()` to
    represent each member of the object.
    rV   ru   	docstringclass_skippedr   rV   r   ru   ry   r   r   rK   r   NF)r   r   r   r   r   r<   rQ   c               L    || _         || _        || _        || _        || _        d S rF   r   )rO   r   r   r   r   r   s         rA   __init__zObjectMember.__init__B  s+     "rC   c                X    d| j         d| j        d| j        d| j        d| j        dS )NzObjectMember(name=z, obj=z, docstring=z	, class_=z
, skipped=)r   rO   s    rA   __repr__zObjectMember.__repr__Q  sb    M ;    k	 
 |  	
rC   )r   r   r   r   r   ry   r   r   r   rK   r<   rQ   r<   r   )rV   rW   rX   rY   	__slots____annotations__r   r   r@   rC   rA   r   r   3  s           GIMMMKKKKKKMMM !%     	
 	
 	
 	
 	
 	
rC   r   c                  B   e Zd ZU dZdZdZdZdZdZe	e	e	dZ
ded<   dUdZedVd            Z	 dWdXdZedYd            ZdZd$Zd[d+Zd\d,Zd]d^d/Zd_d0Zd\d1Zd`d3Zd_d4Zd`d5Zd`d6Zdad8Zdbd:Zdcd>Zd_d?ZdddBZ dedEZ!dfdIZ"d]dgdKZ#dhdOZ$	 	 	 	 didjdSZ%	 	 	 	 didjdTZ&dPS )k
Documentera`  A Documenter knows how to autodocument a single object type.  When
    registered with the AutoDirective, it will be used to document objects
    of that type when needed by autodoc.

    Its *objtype* attribute selects what auto directive it is assigned to
    (the directive name is 'auto' + objtype), and what directive it generates
    by default, though that can be overridden by an attribute called
    *directivetype*.

    A Documenter has an *option_spec* that works like a docutils directive's;
    in fact, it will be used to parse an auto directive's options that matches
    the Documenter.
    ru      r   T)no-indexno-index-entrynoindexClassVar[OptionSpec]option_specr   r   r   r   defargsr<   c                8    t          ||g|R d| j        j        iS )z5getattr() override for types such as Zope interfaces.registry)autodoc_attrgetterenv	_registry)rO   r   r   r   s       rA   get_attrzDocumenter.get_attr~  s'    !#tSgSSS@RSSSrC   clstype[Documenter]r   
membernameisattrrK   parentc                $    d}t          |          )z?Called to see if a member can be documented by this Documenter.!must be implemented in subclassesNotImplementedError)r   r   r   r   r   msgs         rA   can_document_memberzDocumenter.can_document_member  s    
 2!#&&&rC   r   	directiver.   indentrQ   c                R   || _         |j        j        | _        |j        | _        |j        j        | _        |j        j        | _        |j        | _        || _	        || _
        d| _        d | _        g | _        d| _        d | _        d| _        d | _        d| _        d | _        d | _        d S Nr   )r   r   configcurrent_document_current_documentevents_eventsgenoptr   r   r   modnamer3   objpathfullnameargsretannru   object_namer   analyzer)rO   r   r   r   s       rA   r   zDocumenter.__init__  s     #'m2%.]3<=3Q%.]%9 '	 )-"$ !%	/3rC   dict[str, type[Documenter]]c                $    | j         j        j        S )z%Returns registered Documenter classes)r   r   documentersr   s    rA   r
  zDocumenter.documenters  s     x!--rC   r   sourcelinenor   c                    |                                 r# | j        j        j        | j        |z   |g|R   dS  | j        j        j        d|g|R   dS )z0Append one line of generated reST to the output.r   N)rd   r   resultrS   r   )rO   r   r  r  s       rA   add_linezDocumenter.add_line  si    ::<< 	>(DN!(t);VMfMMMMMM(DN!(V=f======rC   r  ry   parentspathbasetuple[str | None, list[str]]c                $    d}t          |          )a@  Resolve the module and name of the object to document given by the
        arguments and the current module/class.

        Must return a pair of the module name and a chain of attributes; for
        example, it would return ``('zipfile', ['ZipFile', 'open'])`` for the
        ``zipfile.ZipFile.open`` method.
        r   r   )rO   r  r  r  r  r   s         rA   resolve_namezDocumenter.resolve_name  s     2!#&&&rC   c                   t                               | j                  }|7t                              t          d          | j        | j        d           dS |                                \  }}}}}}|7|dd         }|r(|                    d          	                    d          ng }	nd}g }	t          | j        j                  5  |                     ||	||          \  }| _        ddd           n# 1 swxY w Y   |sdS || _        || _        || _        d                    | j        pdg| j        R           | _        d	S )
zDetermine what module to import and what attribute to document.

        Returns True and sets *self.modname*, *self.objpath*, *self.fullname*,
        *self.args* and *self.retann* if parsing and resolving was successful.
        Nz!invalid signature for auto%s (%r)autodoctypeF.r   T)py_ext_sig_rer   r   loggerwarningr   objtypegroupsrstriprj   r   r   autodoc_mock_importsr  r  r  r  r  joinr  )
rO   matchedexplicit_modnamer  r  tp_listr  r  r  r  s
             rA   
parse_namezDocumenter.parse_name  s     %%di00?NN677		     5>Enn>N>N;$gtV '&ss+G59Adkk#&&,,S111rGGGG$+233 	T 	T$($5$5gwd$S$S!GT\	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T  	5	$,"4"!Dt|!D!DEEts   
!C77C;>C;F
raiseerrorc                   t          | j        j                  5  	 t          | j        | j        | j        | j                  }|\  | _        | _	        | _
        | _        t          | j                  rt          | j                  | _        	 ddd           dS # t          $ rZ}|r t                              |j        d         dd           | j                                         Y d}~ddd           dS d}~ww xY w# 1 swxY w Y   dS )	zImport the object given by *self.modname* and *self.objpath* and set
        it as *self.object*.

        Returns True if successful, False if an error occurred.
        
attrgetterNTr   r  r   r  subtypeF)r   r   r"  r   r  r  r  r   r3   r   r  ru   r   r   ImportErrorr  r  r  r   note_reread)rO   r(  retexcs       rA   r   zDocumenter.import_object  su    $+233 	 	#L$,   KNGT[$*:DK$+&& :",T["9"9DK	 	 	 	 	 	 	 	     sx{OTTT$$&&&uuu	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	s6   D A/B
C=#AC8'D 8C==D  DDc                H    |                      | j        dd          p| j        S )zGet the real module name of an object to document.

        It can differ from the name of the module through which the object was
        imported.
        rW   N)r   ru   r  r   s    rA   get_real_modnamezDocumenter.get_real_modname  s#     }}T[,==MMrC   c                    | j         j        rdS t          j        | j                  }|                     |dd          }| p
|| j        k    S )z`Check if *self.object* is really defined in the module given by
        *self.modname*.
        TrW   N)r   imported_membersr   	unpartialru   r   r  )rO   subjectr  s      rA   check_modulezDocumenter.check_module  sQ     <( 	4#DK00--t<<{5g55rC   kwargsc                    dS )z}Format the argument signature of *self.object*.

        Should return None if the object does not have a signature.
        r   r@   rO   r9  s     rA   format_argszDocumenter.format_args  s	    
 rrC   c                D    d                     | j                  p| j        S )zFormat the name of *self.object*.

        This normally should be something that can be parsed by the generated
        directive, but doesn't need to be (Sphinx will display it unparsed
        then).
        r  )r#  r  r  r   s    rA   format_namezDocumenter.format_name  s     xx%%55rC   c                j    |r	  | j         di |S # t          $ r Y nw xY w|                                  S Nr@   )r<  	TypeErrorr;  s     rA   _call_format_argszDocumenter._call_format_args#  s\     	't'11&111   
 !!!s    
c           	        | j         d| j          d}| j        }n	 d} | j        di |}|rAt          j        d|          }|r*|                    d          }|                    d          }nI# t          $ r<}t                              t          d          | j
        |d	           d}Y d}~nd}~ww xY w| j                            d
| j        | j
        | j        | j        ||          }|r|\  }}|||rd|z  ndz   S dS )zFormat the signature (arguments and return annotation) of the object.

        Let the user process it via the ``autodoc-process-signature`` event.
        N(r   z^(\(.*\))\s+->\s+(.*)$r      z+error while formatting arguments for %s: %sr  r  autodoc-process-signaturez -> %sr   r@   )r  r  rB  r   r   group	Exceptionr  r  r   r  r   emit_firstresultr  ru   r   )rO   r9  r  r  r$  r1  r  s          rA   format_signaturezDocumenter.format_signature.  s^   
 9 #ty###D[FF-t-7777 2 h'@$GGG 2&}}Q//!(q!1!1   DEEM"	      ..'LMKL
 
  	"!LD&&@Hv--bAA2s   AA/ /
B592B00B5sigc                \   t          | dd          }t          | d| j                  }|                                 }|                                 }d| d| d}t	          |                    d                    D ]9\  }}|                     | | | |           |dk    rd	t          |          z  }:| j        j	        s| j        j
        r|                     d
|           | j        j        r|                     d|           | j        r |                     d| j        z  |           dS dS )z>Add the directive header and options to the generated content.domainpydirectivetypez.. :z:: 
r    z   :no-index:   :no-index-entry:z   :module: %sN)getattrr  r>  get_sourcenamer   rj   r  lenr   no_indexr   no_index_entryr  r  )	rO   rK  rM  r   r   
sourcenameprefixr   sig_lines	            rA   add_directive_headerzDocumenter.add_directive_header[  sO   x..D/4<@@	!!((**
 /v..	...$SYYt__55 	+ 	+KAxMMV5T5855zBBBAvvs6{{*<  	7DL$8 	7MM/:666<& 	=MM/<<<< 	G MM*T\9:FFFFF	G 	GrC   list[list[str]] | Nonec                    t          | j        | j        | j        j        | j        | j                  }|r,| j        j        j	        j
        j        }t          ||          gS g S )zDecode and return lines of the docstring(s) for the object.

        When it returns None, autodoc-process-docstring will not be called for this
        object.
        )r   ru   r   r   autodoc_inherit_docstringsr   r  r   statedocumentsettings	tab_widthr   )rO   r   rc  s      rA   get_doczDocumenter.get_docr  se     KMK2K
 
	  	=,5>HI%i;;<<	rC   
docstringslist[list[str]]Iterator[str]c           	   #     K   |D ]c}| j         R| j                             d| j        | j        | j        | j        |           |r|d         r|                    d           |E d{V  ddS )z7Let the user process the docstrings before adding them.Nautodoc-process-docstringr   r   )r   emitr  r  ru   r   rS   )rO   re  docstringliness      rA   process_doczDocumenter.process_doc  s      ( 	& 	&N|'!!/LMKL"   " .nR&8 ."))"---%%%%%%%%%!	& 	&rC   c                    t          j        | j        dd           }t          j        | j        dd           }|r|r| j        j         d| j        j         }n| j        }| j        r| j        j         d| S d|z  S )NrW   rX   r  z:docstring of zdocstring of %s)r   r   ru   rW   rX   r  r  srcname)rO   
obj_moduleobj_qualnamer  s       rA   rU  zDocumenter.get_sourcename  s    )$+|TJJ
+DKNN 	%, 	% +0MM4;3KMMHH}H= 	0m+EE8EEE$x//rC   more_contentStringList | Nonec                   d}|                                  }| j        r| j                                        }| j        rd                    | j        dd                   | j        d         f}||v rWd}t          ||                   g}t          |                     |                    D ]\  }}|                     |||           |rm| 	                                }	|	nV|	s|	
                    g            t          |                     |	                    D ]\  }}|                     |||           |rEt          |j        |j        d          D ]*\  }}
|                     ||
d         |
d                    )dS dS )	z>Add content from docstrings, attribute documentation and user.Tr  Nr   Fstrictr   r   )rU  r  find_attr_docsr  r#  listr   rl  r  rd  rS   zipdataitems)rO   rq  r   rY  	attr_docsr   attribute_docstringsr   r   re  srcs              rA   add_contentzDocumenter.add_content  s   	 ((**
= 	;4466I| 	;xxSbS 122DL4DE)## %I -13,@,@+A(#,T-=-=>R-S-S#T#T ; ;4dJ::::  	7J!! * %%b)))()9)9*)E)EFF 7 7GAtMM$
A6666  	4 !2L4FtTTT 4 4	cdCFCF3333	4 	44 4rC   want_alltuple[bool, list[ObjectMember]]c                $    d}t          |          )a+  Return `(members_check_module, members)` where `members` is a
        list of `(membername, member)` pairs of the members of *self.object*.

        If *want_all* is True, return all members.  Else, only return those
        members given by *self.options.members* (which may also be None).
        r   r   )rO   r  r   s      rA   get_object_memberszDocumenter.get_object_members  s     2!#&&&rC   r   list[ObjectMember]list[tuple[str, Any, bool]]c           
     p    d fd}g }d                      j                  } j        r j                                        }ni }|D ]}|j        }|j        }	|	t          u p||f|v }
	 t          |	 j         j	        j
         j        |          }t          |t                    sd	}                     |	d
d	          }|r                     |dd	          }||k    rd	}t          |t                    r|j        r|j        }t          |          \  }}t!          |          }d|v rd}nd|v rd}n|                    d          }d}t%          |	          r||f|vrn j        j        r| j        j        v rd}n|r^t*                              |          rD j        j        r5| j        j        v r'|dk    rd}n |||          rd}n|p j        j        }nd}n||f|v r%|r |r j        j        d}n| j        j        v }nud}nr|r@|r>|s j        j        r- j        j        d}nQ |||          rd}nB| j        j        v }n3d}n0 j        j        t6          u r |||          rd}n|p j        j        }t          |t                    r	|j        rd} j        / j                            d j        ||	|  j                  }|| }nK# t@          $ r>}tB          "                    tG          d           j$        ||	|d           d}Y d	}~nd	}~ww xY w|r|%                    ||	|
f           |S )a  Filter the given member list.

        Members are skipped if

        - they are private (except if given explicitly or the private-members
          option is set)
        - they are special methods (except if given explicitly or the
          special-members option is set)
        - they are undocumented (except if the undoc-members option is set)

        The user can override the skipping decision by connecting to the
        ``autodoc-skip-member`` event.
        r   r   r   r   r<   rK   c                   j         j        pt                      }t                      }t          j        j                  rj        j        D ]| j        v r|                               j	        |v r)j        k    rt          fd|D                       r dS | j        v r dS |                     di           v r dS t          |t                    r|j        u r dS dS )Nc              3  8   K   | ]}t          |          V  d S rF   )
issubclass)rf   potential_childr   s     rA   	<genexpr>zRDocumenter.filter_members.<locals>.is_filtered_inherited_member.<locals>.<genexpr>  s>          APJ<<           rC   TFr   )r   inherited_membersrw   r   isclassru   __mro____dict__addrV   anyr   r   r   r   )r   r   r  seenr   rO   s       @rA   is_filtered_inherited_memberz?Documenter.filter_members.<locals>.is_filtered_inherited_member  s#    $ > G#%%55Dt{++ %;. % %Cs|++(9994;..        TX        /  $tts|++$uut}}S2CRHHHH$uu!#|44 %s9J9J$uu5rC   r  Nr   rY   privateTpublicFr   autodoc-skip-memberz`autodoc: failed to determine %s.%s (%r) to be documented, the following exception was raised:
%sr  r  )r   r   r   r   r<   rK   )&r#  r  r  rv  rV   ru   INSTANCEATTRr   r   r   r_  r   r   r   r   r   rK   
startswithr   r   exclude_membersspecial_member_rer   special_membersundoc_membersprivate_membersr   ri   r   r   rI  r  rH  r  r  r   r   rS   )rO   r   r  r  r0  	namespacer{  r   r   r   r   docr   cls_docmetadatahas_doc	isprivatekeep	skip_userr1  s   `                   rA   filter_memberszDocumenter.filter_members  si   "	 	 	 	 	 	4  HHT\**	= 	4466III  @	9 @	9CJZF |+S	:/F)/SFvMK:K  "#s++ C mmFK>> #"mmCDAAG#~~"c<00 (S] (-C 1# 6 6Xs))(( $II)) %II * 5 5c : :I&>> 1Ey*&=Y&N&NL0.E"dl&BBB !DD (E"3"9"9*"E"E (E 4%&$,*FFF%22#(DD99*cJJ I#(DD#*#Hdl.HDD$,	99 $I $<7?#(DD#-1M#MDD  $ E) E %$,"< %<7?#(DD99*cJJ N#(DD#-1M#MDD$|+s227S7S"C8 82  %  'D$,*Dc<00 !S[ ! D <+ $ = =-" ! !I !,#,}   B  I"  
 
 
   9

J7888
s   *I$K
L4LLall_membersc                b   
  j          j        _         j        r j        d          j        _        |p j        j        p j        j        t          u } 	                    |          \  }}g } 
                    ||          D ]\  

 fd j                                        D             }|s1|                    d             j          dd                    g  j        R           z   } |d          j        | j                  }|                    |
f            j        j        p j        j        }	d |D             }                     ||	          }|D ].\  }
|j         sJ |                    d	 j        |o
 
           /d j        _        d j        _        dS )zGenerate reST for member documentation.

        If *all_members* is True, document all members, else those given by
        *self.options.members*.
        r   c                D    g | ]}|                               |S r@   )r   )rf   r   r   r   mnamerO   s     rA   rg   z/Documenter.document_members.<locals>.<listcomp>  sC       **65&$GG  rC   c                    | j         S rF   )priority)r   s    rA   <lambda>z-Documenter.document_members.<locals>.<lambda>  s     rC   r   ::r  r   c                l    g | ]1\  }}|                                 |                                -||f2S r@   )r'  r   )rf   
documenterr   s      rA   rg   z/Documenter.document_members.<locals>.<listcomp>  sY     
 
 
"
F$$&&
 ,6+C+C+E+E
 
 
 
rC   T)r  real_modnamer8  r   N)r  r   autodoc_moduler  autodoc_classr   r  r   ri   r  r  r
  valuessortr#  r   r   rS   member_orderr   autodoc_member_ordersort_members	_generater  )rO   r  r  members_check_moduler   member_documentersclasses
full_mnamer  r  r   r   r  s   `         @@@rA   document_memberszDocumenter.document_members  s7    15-< 	C37<?D"0 X4<9XT\=QUX=X 	 )-(?(?(I(I%g =?%)%8%8(%K%K 	< 	<!E66      +2244  G
  LL55L666 !L,,,sxx8N$,8N8N8N/O/OOJ$T^ZMMJ%%z6&:;;;;|0TDK4T
 
&8
 
 

 "../A<PP"4 	 	J%%%%    !.1@&j !     13-/1,,,rC   r
  list[tuple[Documenter, bool]]orderc                    |dk    r|                     d            nM|dk    r0| j        r(| j        j        dfd	}|                     |           n|                     d
            |S )zSort the given member list.r|   c                6    | d         j         | d         j        fS Nr   )r  r   es    rA   r  z)Documenter.sort_members.<locals>.<lambda>  s    AaD,=qty+I rC   r  r{   entrytuple[Documenter, bool]r<   r   c                    | d         j                             d          d         }                    |t                              S Nr   r  r   )r   rj   r   rV  )r  r  tagorders     rA   keyfuncz(Documenter.sort_members.<locals>.keyfunc  s;    $Qx}22488;H#<<#h--@@@rC   c                    | d         j         S r  r   r  s    rA   r  z)Documenter.sort_members.<locals>.<lambda>      1Q49 rC   r  r  r<   r   )r  r  r  )rO   r
  r  r  r  s       @rA   r  zDocumenter.sort_members  s     K!I!IJJJJj   } .=1A A A A A A   W ---!4!4555rC   Nr  r8  c                    |                                  s1t                              t          d          | j        d           dS |                                 sdS |                     ||||           dS )a  Generate reST for the object given by *self.name*, and possibly for
        its members.

        If *more_content* is given, include that content. If *real_modname* is
        given, use that module name to find attribute docs. If *check_module* is
        True, only generate if the object is defined in the module name it is
        imported from. If *all_members* is True, document all members.
        zdon't know which module to import for autodocumenting %r (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)r  r  N)r'  r  r  r   r   r   r  )rO   rq  r  r8  r  s        rA   generatezDocumenter.generate  s        	NNJ 
 	     F !!## 	F|\<MMMMMrC   c                   |                                  }|p|| _        	 t          j        | j                  | _        | j                                         | j        j                            | j        j	                   np# t          $ rc}t                              d|           d | _        t          | j        dd          x}r| j        j                            |           Y d }~nd }~ww xY w| j        |k    rJ	 t          j        |          }| j        j                            |j	                   n# t          $ r Y nw xY wt          j        t"          j        |                                 pg g           }	t)          | j                  r2|	s0t                              t/          d          | j        dd           |r|                                 sd S |                                 }
|                     d|
           	 |                                 }nH# t:          $ r;}t                              t/          d          | j        |d	           Y d }~d S d }~ww xY w|                     |           |                     d|
           | xj         | j!        z  c_         | "                    |           | #                    |           d S )
Nz$[autodoc] module analyzer failed: %s__file__r   zA mocked object is detected: %rr  mocked_objectr,  z+error while formatting signature for %s: %sr  )$r3  r  r   
for_moduler  rv  r   record_dependenciesr  rn  r   r  debugrT  r3   	functoolsreduceoperatoriaddrd  r   ru   r  r   r   r8  rU  r  rJ  rH  r  r\  r   content_indentr~  r  )rO   rq  r  r8  r  guess_modnamer1  module___file__r  re  rY  rK  s               rA   r  zDocumenter._generate  s    --//!-!>	J*5d6GHHDM M((*** N.224=3HIIII  	H 	H 	HLL?EEE DM")$+z2"F"FF H266GGG	H --)4]CC266x7GHHHH    !* 0M4<<>>/R!
 !

 $+ 	z 	NN455	'	      	$$&& ((**

 	b*%%%		''))CC 	 	 	NN@AA	     FFFFF	 	!!#&&&b*%%% 	t** 	&&& 	k*****sB   7B   
C-
AC((C-<8D5 5
EEH 
I!0II)r   r   r   r   r   r   r<   r   r   r   r   r   r   r   r   rK   r   r   r<   rK   )r   )r   r.   r   r   r   r   r<   rQ   )r<   r  )r   r   r  r   r  r   r<   rQ   
r  ry   r  r   r  r   r  r   r<   r  r<   rK   Fr(  rK   r<   rK   r   r9  r   r<   r   rK  r   r<   rQ   r<   r]  )re  rf  r<   rg  rq  rr  r<   rQ   r  rK   r<   r  )r   r  r  rK   r<   r  r  rK   r<   rQ   r
  r  r  r   r<   r  NNFF
rq  rr  r  ry   r8  rK   r  rK   r<   rQ   )'rV   rW   rX   rY   r  r  r  r  titles_allowedr   r   r   r   classmethodr   r   propertyr
  r  r  r'  r   r3  r8  r<  r>  rB  rJ  r\  rd  rl  rU  r~  r  r  r  r  r  r  r@   rC   rA   r   r   ]  s           GNHLN  %) )K    T T T T ' ' ' [' EG4 4 4 4 4: . . . X.> > > >' ' ' '& & & &P    ,N N N N	6 	6 	6 	6   	6 	6 	6 	6	" 	" 	" 	"+ + + +ZG G G G.   $& & & &(0 0 0 0%4 %4 %4 %4N' ' ' 'x x x xt>2 >2 >2 >2 >2@   4 +/#'"! N  N  N  N  NH +/#'"!U+ U+ U+ U+ U+ U+ U+rC   r   c                      e Zd ZU dZdZdZdZi dedededed	e	d
ede
de
dededededededededeZded<   d? fdZd@ fdZedAd(            ZdBd/ZdC fd0ZdDdE fd3ZdFd5ZdGd7ZdHd:ZdI fd>Z xZS )JModuleDocumenterz,Specialized Documenter subclass for modules.r3   r   r   r   undoc-membersr   r   inherited-membersshow-inheritancesynopsisplatform
deprecatedmember-orderexclude-membersr   r   zimported-memberszignore-module-allno-valuer   r   r   r  r   r<   rQ   c                j     t                      j        |  t          | j                   d | _        d S rF   )r   r   r   r   __all__rO   r  r   s     rA   r   zModuleDocumenter.__init__  s2    $T\***-1rC   rq  rr  c                "   | j         }| xj         | j        z  c_         t                                          d            || _         |rEt	          |j        |j        d          D ]*\  }}|                     ||d         |d                    )d S d S )NTrt  r   r   )r   _extra_indentr   r~  rx  ry  rz  r  )rO   rq  
old_indentr   r}  r   s        rA   r~  zModuleDocumenter.add_content  s    [
t))D!!!  	4 !2L4FtTTT 4 4	cdCFCF3333	4 	44 4rC   r   r   r   r   r   r   rK   r   c                    dS r]   r@   r   r   r   r   r   s        rA   r   z$ModuleDocumenter.can_document_member  s	    
 urC   r  ry   r  r  r  r  c                j    |)t                               t          d          d           |pd|z   g fS )Nz*"::" in automodule name doesn't make senser  r  r   )r  r  r   rO   r  r  r  r  s        rA   r  zModuleDocumenter.resolve_name  sI     NN@AA	     
d"B&&rC   c                    t                                                      }| j        s| j        r/t                              t          d          | j        d           |S )Nz@signature arguments or return annotation given for automodule %sr  r  )r   r'  r  r  r  r  r   r  )rO   r0  r   s     rA   r'  zModuleDocumenter.parse_name  sa    gg  ""9 	 	NNUVV    
 
rC   Fr(  c                F   t                                          |          }	 | j        j        st	          j        | j                  | _        nR# t          $ rE}t          
                    t          d          |j        d         | j        d           Y d }~nd }~ww xY w|S )NzN__all__ should be a list of strings, not %r (in module %s) -- ignoring __all__r   r  r  )r   r   r   ignore_module_allr   getallru   r  r   r  r  r   r  r  )rO   r(  r0  r1  r   s       rA   r   zModuleDocumenter.import_object  s    gg##J//	<1 ;&~dk:: 
	 
	 
	NN9           
	 
s   *A 
B;BBrK  c                   t                               | |           |                                 }| j        j        r#|                     d| j        j        z   |           | j        j        r#|                     d| j        j        z   |           | j        j        r|                     d|           | j        j        r|                     d|           d S d S )Nz   :synopsis: z   :platform: z   :deprecated:rS  )	r   r\  rU  r   r  r  r  r  rX  )rO   rK  rY  s      rA   r\  z%ModuleDocumenter.add_directive_header  s    ''c222((**
 <  	PMM*T\-BBJOOO<  	PMM*T\-BBJOOO<" 	9MM+Z888<& 	=MM/<<<<<	= 	=rC   dict[str, ObjectMember]c                8   | j         r| j         j        }ni }i }t          | j                  D ]}	 t	          | j        |d          }t          |          rt          |          }|                    d|fg           }t          ||d	                    |                    ||<   x# t          $ r Y w xY wt          j        | j                  D ]K}||vrE|                    d|fg           }t          |t          d	                    |                    ||<   L|S )zGet members of target module.Nr   rQ  )r   )r  r{  dirru   r   r   r   r   r   r#  AttributeErrorr   getannotationsr  )rO   r{  r   r   valuer   s         rA   get_module_membersz#ModuleDocumenter.get_module_members  sG   = 	/III+-$$ 
	 
	D	$T[$==%== .&u--E%MM2t*b99	 ,%499Y+?+?! ! ! "    *4;77 	 	D7""%MM2t*b99	 ,,$))I2F2F! ! ! s   A4B%%
B21B2r  r  c           	        |                                  }|ry| j        #dt          |                                          fS |                                D ]}|j        | j        vrd|_        dt          |                                          fS | j        j        pg }g }|D ]a}||v r|                    ||                    "t          
                    t          d          t          | j        dd          |d           bd|fS )NTFzHmissing attribute mentioned in :members: option: module %s, attribute %srV   z???r  r  )r  r  rw  r  rV   r   r   r   rS   r  r  r   r   ru   )rO   r  r   r   
memberlistr0  r   s          rA   r  z#ModuleDocumenter.get_object_members  s+   ))++ 	|# T'.."2"23333%nn.. . .Fdl::)-d7>>#3#34444-3JC"  7??JJwt}----NN6  %T[*eDD& #     #:rC   r
  r  r  c                2   |dk    rl| j         re| j         J | j         t                    t                    |                    d            d	fd}|                    |           |S t	                                          ||          S )
Nr{   c                    | d         j         S r  r  r  s    rA   r  z/ModuleDocumenter.sort_members.<locals>.<lambda>  r  rC   r  r  r  r<   r   c                    | d         j                             d          d         }|v r                    |          S S r  )r   rj   index)r  r   
module_allmodule_all_lenmodule_all_sets     rA   r  z.ModuleDocumenter.sort_members.<locals>.keyfunc  sF    Qx}**4003>))%++D111))rC   r  )r  rw   rV  r  r   r  )rO   r
  r  r  r  r  r  r   s       @@@rA   r  zModuleDocumenter.sort_members  s     J4<<+++J __N __N !4!4555* * * * * * * * )))77''U;;;rC   r  r   r<   rQ   r  r  r  r  r  r  r  )r<   r
  r  r  )rV   rW   rX   rY   r  r  r  rl   r   rx   rG   r   rr   r   r   r   r~  r  r   r  r'  r   r\  r  r  r  r   r   s   @rA   r  r  d  s'        66GNM)>)) 	K) 	+	)
 	5) 	K) 	H) 	H) 	k) 	+) 	1) 	>) 	>) 	K) 	[)  	K!)" 	;#)K    (2 2 2 2 2 2
4 4 4 4 4 4    [' ' ' '           (= = = =   <   >< < < < < < < < < <rC   r  c                      e Zd ZdZddZdS )ModuleLevelDocumenterzjSpecialized Documenter subclass for objects on module level (functions,
    classes, data/constants).
    r  ry   r  r   r  r   r  r<   r  c                    ||g ||fS |r|                     d          }|g ||fS | j        j        }|s| j        j                            d          }|g ||fS )Nr  	py:module)r!  r   r  r   ref_contextr   r  s        rA   r  z"ModuleLevelDocumenter.resolve_name'  s     ,g,t,,, 	-kk#&&G,g,t,,, (7 	<h*..{;;G('(4(((rC   Nr  rV   rW   rX   rY   r  r@   rC   rA   r  r  "  s2         ) ) ) ) ) )rC   r  c                      e Zd ZdZddZdS )ClassLevelDocumenterzZSpecialized Documenter subclass for objects on class level (methods,
    attributes).
    r  ry   r  r   r  r   r  r<   r  c                T   ||g ||fS |r|                     d          }n4| j        j        }|s&| j        j                            dd          }|sd g fS |                    d          \  }}}|g}|s| j        j        }|s| j        j                            d          }|g ||fS )Nr  zpy:classr   r  )r!  r   r  r   r  r   
rpartitionr  )rO   r  r  r  r  mod_clssepr   s           rA   r  z!ClassLevelDocumenter.resolve_name?  s     ,g,t,,, 	$kk#&&GG
 ,:G $(.22:rBB $8O#..s33c% 	<,;G 	<h*..{;;G('(4(((rC   Nr  r   r@   rC   rA   r"  r"  :  s2         ) ) ) ) ) )rC   r"  c                  V     e Zd ZU dZdZded<   g Zded<   dd	Zd fd
Zd fdZ	 xZ
S )DocstringSignatureMixinz~Mixin for FunctionDocumenter and MethodDocumenter to provide the
    feature of reading the signature from the docstring.
    Nr]  _new_docstringsr   _signaturesr<   $tuple[str | None, str | None] | Nonec           	        | j         d         g}t          | t                    rS|                    d           t	          | j        d          r)|                    d | j        j        D                        |                                 }|dS |d d          | _	        g | _
        d }t          |          D ]\  }}t          |          D ]\  }}|s n|                    d          r'|                    d                                          }t                              |          }|s n|                                \  }	}
}}}}||vr n{| j        }|j        j        j        j        }t-          d                    ||dz   d                    |          | j	        |<   |||f}| j
                            d	| d
|            | n|S )Nr   r   r  c              3  $   K   | ]}|j         V  d S rF   )rV   )rf   r   s     rA   r  z:DocstringSignatureMixin._find_signature.<locals>.<genexpr>k  s$      "O"OC3<"O"O"O"O"O"OrC   )NN\rQ  r   rD  z) -> )r  r   ClassDocumenterrS   hasattrru   extendr  rd  r)  r*  r   endswithr!  r  r   r   r   r`  ra  rb  rc  r   r#  )rO   valid_namesre  r  r   doclinesjr   r   exmodr  r  r&  r  r  r   rc  s                    rA   _find_signaturez'DocstringSignatureMixin._find_signaturee  s   |B'(dO,, 	Pz***t{I.. P"""O"O4;;N"O"O"OOOO\\^^
:)!!!}$Z00 #	 #	KAx$X.. E E4 E==&& 6;;t,,3355D &++D11 E;@<<>>8tT7D& {**E !N	%O4=G	*;IIhq1uww/00)+ +$Q' >!6\FF $++,C,C,C6,C,CDDDD! " rC   c                `    | j         | j         S t                                                      S rF   )r)  r   rd  r   s    rA   rd  zDocstringSignatureMixin.get_doc  s)    +''ww   rC   r9  r   r   c                    |  | j         1| j        j        r%|                                 }||\  | _         | _         t                      j        di |}| j        rd                    |g| j        R           S |S )NrQ  r@   )	r  r   autodoc_docstring_signaturer7  r  r   rJ  r*  r#  )rO   r9  r  rK  r   s       rA   rJ  z(DocstringSignatureMixin.format_signature  s    9!H ))++F!)/&	4;&egg&0000 	99c5D$455666JrC   r<   r+  r  r  )rV   rW   rX   rY   r)  r   r*  r7  rd  rJ  r   r   s   @rA   r(  r(  ]  s           /3O2222K3 3 3 3j! ! ! ! ! !
         rC   r(  c                  $     e Zd ZdZd fdZ xZS )DocstringStripSignatureMixinzuMixin for AttributeDocumenter to provide the
    feature of stripping any function signature from the docstring.
    r9  r   r<   r   c                    | j         ,| j        j        r |                                 }|
|\  }| _         t                      j        di |S r@  )r  r   r:  r7  r  r   rJ  )rO   r9  r  _argsr   s       rA   rJ  z-DocstringStripSignatureMixin.format_signature  sY    9!H ))++F! &,"t{'uww'11&111rC   r  )rV   rW   rX   rY   rJ  r   r   s   @rA   r=  r=    sG         
2 
2 
2 
2 
2 
2 
2 
2 
2 
2rC   r=  c                  r     e Zd ZdZdZdZed"d            Zd#dZd$d%dZ	d& fdZ
d# fdZd'dZd(d!Z xZS ))FunctionDocumenterz.Specialized Documenter subclass for functions.r6      r   r   r   r   r   r   r   rK   r   r<   c                    t          j        |          p<t          j        |          p(t          j        |          ot	          |t
                    S rF   )r   
isfunction	isbuiltin	isroutiner   r  r  s        rA   r   z&FunctionDocumenter.can_document_member  sO     v&& T ((T!&))RjAQ.R.R	
rC   r9  c                r   | j         j        dv r|                    dd           | j         j        dk    r|                    dd           | j         j        r|                    dd           	 | j                            d| j        d           t          j	        | j        | j         j
        	          }t          |fi |}nS# t          $ r9}t                              t          d
          | j        |           Y d }~dS d }~wt"          $ r d}Y nw xY w| j         j        r|                    dd          }|S )N>   nonedescriptionshow_annotationFr>   unqualified_typehintsTshort_literals autodoc-before-process-signaturetype_aliases-Failed to get a function signature for %s: %sr   r.  \\)r   autodoc_typehintsr   autodoc_typehints_format"python_display_short_literal_typesr   rj  ru   r   	signatureautodoc_type_aliasesr   rA  r  r  r   r  r   strip_signature_backslashr   )rO   r9  rK  r  r1  s        rA   r<  zFunctionDocumenter.format_args  sl   ;(,CCC/777;/7::5t<<<;9 	6.555	L@$+uUUU#$+*J  C 's55f55DD 	 	 	NNBCCT]TW   22222 	 	 	DDD	 ;0 	.<<f--Ds   .AC 
D.D  DDFr  rQ   c                    d S rF   r@   rO   r  s     rA   r  z#FunctionDocumenter.document_members  rT   rC   rK  c                   |                                  }t                                          |           t          j        | j                  }t          j        | j                  }|s|r|                     d|           d S d S )N
   :async:)rU  r   r\  r   iscoroutinefunctionru   isasyncgenfunctionr  )rO   rK  rY  is_corois_acoror   s        rA   r\  z'FunctionDocumenter.add_directive_header  s    ((**
$$S)))-dk::-dk:: 	4h 	4MM,
33333	4 	4rC   c                ~   | j         j        dk    r|                    dd           | j         j        r|                    dd           g }| j        r9d                    | j                  | j        j        v r| j         j        dk    rd}n0d} t                      j
        di |}|                    |           t          j        | j                  r| j        j                                        D ]r\  }}|t          u r|                     ||          }|rKt%          | j        d          }||_        dg|_        |                    |
                                           s|r| j        t          j        | j        | j         j        	          }	t-          | j        d
i           }
| j        j        d                    | j                           D ]U}|                     |	|          }t1          ||
| j         j                  }t3          |fi |}|                    |           Vd                    |          S )Nr>   rK  TrL  r  rH  Fr   rN  __globals__rQ  r@   )r   rS  r   rT  r  r#  r  	overloadsrR  r   rJ  rS   r   is_singledispatch_functionru   r   rz  annotate_to_first_argumentrA  r   rU  rV  r   merge_default_valuer   r   )rO   r9  sigs
overloadedrK  typfuncdispatchfuncr  actualra  overloadr   s               rA   rJ  z#FunctionDocumenter.format_signature  sI   ;/7::5t<<<;9 	6.555M
	&&$-*AAA-77 JJJ*%''*44V44CKK-dk:: 	C![17799 	C 	C	T&==#'#B#B4#M#ML# C%7%K%K
,8
).0T
*J$?$?$A$ABBB 	!$-3&$+*J  F 't{M2FFK M3CHHT\4J4JK ! !33FHEE-k4;+K  *(==f==C    yyrC   rk  r   rl  c                8   t          |j                                                  }t          |          D ]O\  }}|j                            |j                  }|r)|j        dk    r|                    |j                  ||<   P|                    |          S zGMerge default values of actual implementation to the overload variants.z...)default
parametersrw  rq  r  r   r   r   ro  r   rO   rk  rl  rq  r   paramactual_params          rA   re  z&FunctionDocumenter.merge_default_value'      (-446677
!*-- 	L 	LHAu!,00<<L L 6 6 %l6J K K
1:666rC   ri  Callable[..., Any]rh  r  Callable[..., Any] | Nonec                P   	 t          j        || j        j                  }nR# t          $ r9}t
                              t          d          | j        |           Y d}~dS d}~wt          $ r Y dS w xY wt          |j                  dk    rdS d }t          |j                                                  }|d         j        t          j        u rU|d                             |          |d<   	 |                    |          |_        |S # t&          t          f$ r Y dS w xY w|S )?Annotate type hint to the first argument of function if needed.rN  rP  Nr   c                     d S rF   r@   r@   rC   rA   dummyz<FunctionDocumenter.annotate_to_first_argument.<locals>.dummyB      DrC   
annotationrp  r   rU  r   rV  rA  r  r  r   r  r   rV  rq  rw  r  r  r   emptyr   __signature__r  rO   ri  rh  rK  r1  r|  paramss          rA   rd  z-FunctionDocumenter.annotate_to_first_argument1  s[   	#Dt{7WXXXCC 	 	 	NNBCCT]TW   44444 	 	 	44	 s~!##4	 	 	 cn++--..!99?22q	))S)99F1I&)kkVk&D&D#"I.   tt ,    # 
A2.A!!A21A21D D#"D#r  r  r  r  r  rk  r   rl  r   r<   r   ri  rw  rh  r  r<   rx  )rV   rW   rX   rY   r  r  r  r   r<  r  r\  rJ  re  rd  r   r   s   @rA   rA  rA    s        88GL
 
 
 [
   6    4 4 4 4 4 4- - - - - -^7 7 7 7       rC   rA  c                  ,     e Zd ZdZdZdZd	 fdZ xZS )
DecoratorDocumenterz8Specialized Documenter subclass for decorator functions.	decoratorr   r9  r   r<   r   c                F     t                      j        di |}d|v r|S dS )Nrh   r   r@   )r   r<  )rO   r9  r  r   s      rA   r<  zDecoratorDocumenter.format_argsZ  s2    "uww",,V,,$;;K2rC   r  )rV   rW   rX   rY   r  r  r<  r   r   s   @rA   r  r  R  sO        BBG H         rC   r  zenum.EnumType.__call__ztyping.Generic.__new__c                  (    e Zd ZU dZdZdZeeeeeee	e
eeeedZded<   dZdZd	ed
<   dZded<   d9 fdZed:d            Zd;d< fdZd=dZd>d Zd? fd"Zd> fd#Zd@d%ZdAd'ZdB fd)ZdCd,ZdDd.ZdEd0ZdF fd3Zd;dG fd5Z 	 	 	 	 dHdI fd8Z! xZ"S )Jr/  z,Specialized Documenter subclass for classes.r4      )r   r  r   r   r  r  r  r  r   r   class-doc-fromr   r   r      Nr   _signature_classr   r   _signature_method_namer  r<   rQ   c                f    t                      j        |  | j        j        dk    ru| j                                        | _        | j        j        ddg| j        d<   n>| j        j                            d           | j        j                            d           t          | j                   d S )N	separated__new__r   r   )	r   r   r   autodoc_class_signaturer   r   r  rS   r   r  s     rA   r   zClassDocumenter.__init__  s    $;.+==<,,..DL |+33<j2I.//,33I>>>,33J???T\*****rC   r   r   r   r   r   rK   r   c                j    t          |t                    p|ot          |t          t          z            S rF   )r   r  r   r	   r  s        rA   r   z#ClassDocumenter.can_document_member  s2     &$'' 
<z&'G*;<<	
rC   Fr(  c                <   t                                          |          }|rt          | j        d          r!| j        d         | j        j        k    | _        nd| _        t          | j        t          t          z            rt          | j        d| j                  }|| j        k    rr| j                            |          rX| j        t          |          d                              d                              d          }|| j        z   | _        || _        |S )NrV   r   TrW   r  )r   r   r0  ru   r  rV   doc_as_attrr   r   r	   rT  r  r  rV  rd   rj   )rO   r(  r0  r  basesr   s        rA   r   zClassDocumenter.import_object  s    gg##J//  
	+t{J// (#'<#3t{7K#K  #' $+w'899 +!$+|T\JJdl**t|/F/Fw/O/O* LW8>>sCCII#NNE#(4<#7DL#*DL
rC   /tuple[Any | None, str | None, Signature | None]c                h    t           j        t          t          z            rdS d fd}t	           j        d          r j        j        }t          |t                    rd d |fS t          j        d d	         d
v rEt          |          r6t           |            x}t                    rd d t          j        |          fS  |t           j                  d          }||j         d|j         t           v rd }|e j                            d|d           	 t          j        |d j        j                  }t           j                  d|fS # t,          $ r Y nw xY w | j        d          }||j         d|j         t.          v rd }|X j                            d|d           	 t          j        |d j        j                  } j        d|fS # t,          $ r Y nw xY w | j        d          }|X j                            d|d           	 t          j        |d j        j                  } j        d|fS # t,          $ r Y nw xY w j                            d j        d           	 t          j         j        d j        j                  }d d |fS # t,          $ r Y nw xY wdS )N)NNNr   r   attrr   r<   c                    t          j        | |          rdS                     | |d          }t          j        |          st          j        |          sdS |S )zDGet the `attr` function or method from `obj`, if it is user-defined.N)r   is_builtin_class_methodr   ismethodrD  )r   r  rO   s     rA   #get_user_defined_function_or_methodzKClassDocumenter._get_signature.<locals>.get_user_defined_function_or_method  sa    .sD99 t==dD11D$T** g.@.F.F tKrC   r  rE  >         r     __call__r  rM  Tbound_methodrO  r  r   F)r   r   r  r   r<   r   )r   ru   r   r	   r0  r  r   sysversion_infocallabler   r   signature_from_strr  rW   rX   _METACLASS_CALL_BLACKLISTr   rj  rU  r   rV  r   _CLASS_NEW_BLACKLIST)rO   r  
object_sigobject_sig_strcallrK  newr   s   `       rA   _get_signaturezClassDocumenter._get_signature  st   dk7W#455 	$##	 	 	 	 	 	 4;00 	R2J*i00 .T:--#'999hz>R>R9

<ncBB Rw'A.'Q'QQQ 3243D3DjQQ/77D$577;TTTL@$MMM'!%!%!A  
 DK((*c99    21$+yII?.553#3559MMM?L@#tLLL'!%!%!A  
 {Is22    324;
KKL@$MMM'!%!%!A  
 {J33    	<dk5QQQ	#"![=  C
 s?" 	 	 	D	
  sH   7E 
E E /*G 
G'&G'*I 
II7*J" "
J/.J/r9  c                   | j         j        dv r|                    dd           | j         j        dk    r|                    dd           | j         j        r|                    dd           	 |                                 \  | _        }}nF# t          $ r9}t          	                    t          d          | j        |           Y d }~d	S d }~ww xY w|pd	| _        |d	S t          |fd
di|S )N>   rH  rI  rJ  Fr>   rK  TrL  z0Failed to get a constructor signature for %s: %sr   show_return_annotation)r   rR  r   rS  rT  r  r  rA  r  r  r   r  r  r   )rO   r9  r  rK  r1  s        rA   r<  zClassDocumenter.format_args  s$   ;(,CCC/777;/7::5t<<<;9 	6.555		AEATATAVAV>D!#933 	 	 	NNEFF  
 22222	 '=&B#;2"3OOuOOOOs   .B 
C.C

Cr+  c                    t                                                      }|
|d         d f}t          | j                  D ],\  }}|                    d          r|d d         | j        |<   -|S )Nr   z -> Nonei)r   r7  r   r*  r2  )rO   r  r   rK  r   s       rA   r7  zClassDocumenter._find_signature0  s{    ((**Qi&F 011 	/ 	/FAs||J'' / '*#2#h #rC   c                *   | j         rdS | j        j        dk    rdS | j        j        dk    r|                    dd           | j        j        r|                    dd           t                                                      }g }|                                 }|r| j        j	        dk    rt          | j        | j        d           }t          |di           }|D ]}t          ||| j        j                  }t          |j                                                  }|                    |d	d          t&          j        
          }t+          |fi |}|                    |           n|                    |           d                    |          S )Nr   r  r>   rK  TrL  rH  ra  r   )rq  return_annotationrQ  )r  r   r  rS  r   rT  r   rJ  get_overloaded_signaturesrR  r   r  r  r   rV  rw  rq  r  r   r   r  r   rS   r#  )
rO   r9  rK  rf  rb  r7   ra  rl  rq  r   s
            rA   rJ  z ClassDocumenter.format_signature>  s    	2;.+==2;/7::5t<<<;9 	6.555gg&&((2244	 	6&@@!%t'BD F 'v}bAAK% 
! 
!-k4;+K  "("5"<"<">">??
#++)!""~ ,   *(==f==C    
! KKyyrC   list[Signature]c                D   | j         r| j        r| j         j        D ]}	 t          j        |j                  }|                                 |j         d| j         }||j        v r|j        	                    |g           c S ||j
        v rg c S u# t          $ r Y w xY wg S )Nr  )r  r  r  r   r  rW   analyzerX   rb  r   r  r   )rO   r   r  qualnames       rA   r  z)ClassDocumenter.get_overloaded_signaturesd  s      	T%@ 	,4  
-8HHH$$&&&"%"2RRT5PRRH8#555'155hCCCCC!X%666!			 7 #   D 	s   A!B
B
BBry   c                    t          | j        d| j                  }t          | j        dd           }|t          | j        dd           }|rd|v rd }|r	|r| d| S d S )NrW   rX   rV   z<locals>r  )r   ru   r  )rO   __modname__rX   s      rA   get_canonical_fullnamez&ClassDocumenter.get_canonical_fullnameu  s    "4;dlKK#DKFF'ZFFL 	 J,66L 	< 	!22L2224rC   rK  c                   |                                  }| j        rd| _        t                                          |           t          | j        t          t          z            rd S | j	        r<d
                    | j                  | j	        j        v r|                     d|           |                                 }| j        s@t          | j        t                    s&|r$| j        |k    r|                     d|z  |           | j        sF| j        j        r;t%          j        | j                  rt)          | j        j                  }nJt-          | j        d          r3t/          | j        j                  rt)          | j        j                  }ng }| j                            d| j        | j        | j        |           t7          | j        j                  fd|D             }|                                  }|                     d|           |                     d	t=          d
          d
                    |          z  z   |           d S d S d S )Nr8   r  
   :final:z   :canonical: %s	__bases__autodoc-process-basesc                2    g | ]}t          |           S )mode)r    )rf   r   r  s     rA   rg   z8ClassDocumenter.add_directive_header.<locals>.<listcomp>  s&    EEEGCd333EEErC   r   r   z	Bases: %s, )rU  r  rO  r   r\  r   ru   r   r	   r  r#  r  finalsr  r  r  r   show_inheritancer   getorigbasesrw  __orig_bases__r0  rV  r  r   rj  rB   r   rS  r   )rO   rK  rY  canonical_fullnamer  base_classesr  r   s         @rA   r\  z$ClassDocumenter.add_directive_header  sU   ((**
 	-!,D$$S)))dk7W#455 	F= 	4SXXdl33t}7KKKMM,
333!88:: 	Pt{G44	P #	P !333MM-0BBJOOO  	XDL$A 	X#DK00  T[788k22 s4;;P7Q7Q T[233L'T\SX   $DK$HIIDEEEEuEEEL,,..JMM"j)))MM%!K..499\3J3J"JJJWWWWW)	X 	X 	X 	XrC   r  r  c                    t           j         j         j         j        j                  }|su j        j        sdg fS g } j        j        D ]R}||v r|                    ||                    "t          
                    t          d          | j        d           Sd|fS  j        j        r#dt          |                                          fS d fd|                                D             fS )NFz!missing attribute %s in object %sr  r  c                4    g | ]}|j         j        k    |S r@   )r   ru   )rf   mrO   s     rA   rg   z6ClassDocumenter.get_object_members.<locals>.<listcomp>  s'    RRR!(dk:Q:Q1:Q:Q:QrC   )r   ru   r  r   r   r_  r   r   rS   r  r  r   r  r  rw  r  )rO   r  r   selectedr   s   `    rA   r  z"ClassDocumenter.get_object_members  s   #KLMK2	
 
  	S<' !by H, 	 	7??OOGDM2222NN>??&	 #     (?"\+ 	S$w~~//0000RRRRgnn&6&6RRRRRrC   r]  c                6   t          | j        t                    r| j        j        t          j        k    rg S | j        r|                                 rg S d S t          | dd           }||S | j                            d| j	        j
                  }g }t          | j        | j                  }|r|                    |           |dv r)|                     | j        dd           }t          || j        | j	        j        | j        d          }|>|t          j        j        k    s'|                                t          j        j        k    rd }|s|                     | j        dd           }t          || j        | j	        j        | j        d          }|>|t          j        j        k    s'|                                t          j        j        k    rd }|r|dk    r|g}n|                    |           | j        j        j        j        j        fd|D             S )Nr)  r  >   r   r   r   r  r   c                0    g | ]}t          |          S r@   )r   )rf   r   rc  s     rA   rg   z+ClassDocumenter.get_doc.<locals>.<listcomp>  s$    TTTI!)Y77TTTrC   )r   ru   r	   rY   r  get_variable_commentrT  r   r   r   autoclass_contentr   r   rS   r_  r   rd   r  r   r`  ra  rb  rc  )	rO   r   classdoc_fromre  attrdocstringr   initdocstringr  rc  s	           @rA   rd  zClassDocumenter.get_doc  s,   dk7++ 	{"go55	 	((** 	t/66L((dk;
 
 
t{DM:: 	-m,,, ,,,}}T[*dCCH"6 M (!888 &&((FO,CCC $  )--YEE &MK:K! ! !,!V^%;;;$**,,0FFF$(M 5 F**"/JJ%%m444N(1:D	TTTTTTTTrC   list[str] | Nonec                d   	 dd                     | j                  f}| j        rt          j        | j                  }n&t          j        |                                           }|                                 t          |j	        
                    |g                     S # t          $ r Y d S w xY w)Nr   r  )r#  r  r  r   r  r  r3  r  rw  r{  r   r   )rO   r   r  s      rA   r  z$ClassDocumenter.get_variable_comment  s    		sxx--.C N)4T\BB)4T5J5J5L5LMM*..sB77888 	 	 	44	s   BB! !
B/.B/rq  rr  c                   t          | j        j                  | j        j        t	          | j        t                    r>t          | j        j                  }t          t          d          |z  dgd          }t	          | j        t                    rt          | j        j                  g}|                    fd| j        j        D                        | j        j        r3t          | j        j                  }|                    d|z              | j        j        r|                    d           | j        j        r|                    d           t          t          d	          d
                    |          z  dgd          }| j        rf| j        |                                 k    rI	 t1          j        | j                  | _        | j                                         n# t8          $ r Y nw xY w| j        r^|                                 sJ	 t          | j                  }t          t          d          |z  gd          }n# t<          $ r Y nw xY wt?                                           |           d S )Nr  alias of %sr   )r  c              3  <   K   | ]}t          |           V  dS )rL  N)r!   )rf   
constraintr  rL  s     rA   r  z.ClassDocumenter.add_content.<locals>.<genexpr>$  sF         %ZnUUU     rC   zbound=\ zcovariant=Truezcontravariant=Truezalias of TypeVar(%s)r  )!rB   r   rS  rT  r   ru   r   r    __supertype__r
   r   r	   reprrV   r1  __constraints__	__bound__rS   __covariant____contravariant__r#  r  r  r3  r   r  r  r  r   r  r  r   r~  )	rO   rq  	supertypeattrsboundaliasr  rL  r   s	         @@rA   r~  zClassDocumenter.add_content  s    DEEGdk7++ 	U 9EEEI%q'7'7)'CR&HQSTTTLdk7++ 	$+.//0ELL     "&+"=      {$ 2 5DAAA[50111{( /-...{, 31222%)**TYYu-=-==rB2  L  	0E0E0G0G G G . 9$, G G%%''''     	D$=$=$?$? 	$777)1]+;+;e+C*DRPPP!    	L)))))s$   =7G5 5
HH!8I 
I'&I'r  c                \    | j         rd S t                                          |           d S rF   )r  r   r  )rO   r  r   s     rA   r  z ClassDocumenter.document_membersD  s1     	F  -----rC   r  r8  c                L    t                                          |||          S )N)rq  r8  r  )r   r  )rO   rq  r  r8  r  r   s        rA   r  zClassDocumenter.generateI  s/     ww%%#   
 
 	
rC   r  r  r  r  )r<   r  r  r;  )r<   r  )r<   ry   r  r  r  )r<   r  r  r  r  r  )#rV   rW   rX   rY   r  r  rl   r   rx   r   rr   r   r   r   r  r  r  r   r  r   r   r  r<  r7  rJ  r  r  r\  r  rd  r  r~  r  r  r   r   s   @rA   r/  r/  p  sx        66GL!$%5'+1))/) )K    $ H     "$$$$$+ + + + + + 
 
 
 [
      "a  a  a  a FP P P P2     $ $ $ $ $ $L   "   +X +X +X +X +X +XZS S S S8@U @U @U @UD
 
 
 
(* (* (* (* (* (*T. . . . . . . +/#'"!
 
 
 
 
 
 
 
 
 
 
rC   r/  c                  F    e Zd ZdZdZdZej        dz   Zedd            Z	dS )ExceptionDocumenterz4Specialized ClassDocumenter subclass for exceptions.r5   
      r   r   r   r   r   r   r   rK   r   r<   c                    	 t          |t                    ot          |t                    S # t          $ r%}| j         d| d| d}t          |          |d }~ww xY w)Nz failed to discern if member z with membername z is a BaseException subclass.)r   r  r  BaseExceptionrA  rV   r   )r   r   r   r   r   r1  r   s          rA   r   z'ExceptionDocumenter.can_document_membere  s    
	+fd++Q
6=0Q0QQ 	+ 	+ 	+
 < I If I I)I I I  S//s*	+s   ), 
A AANr  )
rV   rW   rX   rY   r  r  r/  r  r  r   r@   rC   rA   r  r  \  sQ        >>GL '!+H+ + + [+ + +rC   r  c                  d    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ddZddZddZdS )DataDocumenterMixinBaser*   r   r+   r   r   r  r   r   ru   r   r  r<   rK   c                    dS )z,Check directive header should be suppressed.Fr@   r   s    rA    should_suppress_directive_headerz8DataDocumenterMixinBase.should_suppress_directive_header      urC   c                    dS )z*Check :value: header should be suppressed.Fr@   r   s    rA   should_suppress_value_headerz4DataDocumenterMixinBase.should_suppress_value_header  r  rC   rq  r
   rQ   c                    dS )z4Update docstring, for example with TypeVar variance.Nr@   )rO   rq  s     rA   update_contentz&DataDocumenterMixinBase.update_content  s    rC   Nr  rq  r
   r<   rQ   )rV   rW   rX   r   r  r  r  r@   rC   rA   r  r  v  s         NNNLLLKKKKKK           rC   r  c                  0     e Zd ZdZd	 fdZd
 fdZ xZS )GenericAliasMixinzoMixin for DataDocumenter and AttributeDocumenter to provide the feature for
    supporting GenericAliases.
    r<   rK   c                v    t          j        | j                  pt                                                      S rF   )r   isgenericaliasru   r   r  r   s    rA   r  z2GenericAliasMixin.should_suppress_directive_header  s0    "4;// :ww7799	
rC   rq  r
   rQ   c                R   t          j        | j                  rkt          | j        j                  }t          | j        |          }|                    t          d          |z  d           |                    dd           t                      
                    |           d S )Nr  r  r   )r   r   ru   rB   r   rS  r    rS   r   r   r  )rO   rq  r  r  r   s       rA   r  z GenericAliasMixin.update_content  s    !$+.. 	(#DK$HIIDDKd333E- 0 05 8"===B'''|,,,,,rC   r  r  )rV   rW   rX   rY   r  r  r   r   s   @rA   r  r    se         
 
 
 
 
 
- - - - - - - - - -rC   r  c                  >     e Zd ZdZd
d fdZd fdZd fd	Z xZS ) UninitializedGlobalVariableMixinz~Mixin for DataDocumenter to provide the feature for supporting uninitialized
    (type annotation only) global variables.
    Fr(  rK   r<   c                T   	 t                                          d          S # t          $ r}	 t          | j        j                  5  t          | j                  }t          |d | j        j	        d          }| j
        d         |v r%t          | _        || _        	 d d d            Y d }~dS 	 d d d            n# 1 swxY w Y   n# t          $ r Y nw xY w|r t                              |j        d         dd           | j                                         Y d }~d	S d }~ww xY w)
NTr(  include_extrasr   r   r  r   r,  F)r   r   r.  r   r   r"  r   r  r   rV  r  UNINITIALIZED_ATTRru   r   r  r  r  r   r/  )rO   r(  r1  r   r   r   s        rA   r   z.UninitializedGlobalVariableMixin.import_object  s   	77((D(999 	 	 	$+:;; $ $*4<88F"08'+	# # #K |B';66&8&,#$ $ $ $ $ $ $ $ $ $ $ $ 7$ $ $ $ $ $ $ $ $ $ $ $ $ $ $      NN38A;YNPPPH  """55555-	s^   !% 
D'C	AB<C0C<C 	 CC 	CD"
CD"CAD""D'c                `    | j         t          u pt                                                      S rF   ru   r  r   r  r   s    rA   r  z=UninitializedGlobalVariableMixin.should_suppress_value_header  (    K--W1U1U1W1W	
rC   r]  c                d    | j         t          u rg S t                                                      S rF   ru   r  r   rd  r   s    rA   rd  z(UninitializedGlobalVariableMixin.get_doc  s*    ;,,,I77??$$$rC   r  r  r  r  rV   rW   rX   rY   r   r  rd  r   r   s   @rA   r  r    s               6
 
 
 
 
 

% % % % % % % % % %rC   r  c                       e Zd ZU dZdZdZdZ eej	                  Z	de
d<   ee	d<   ee	d<   ed'd            Zd(dZd)d* fdZd+ fdZd, fdZd)d-dZd.dZd/d!Zd0 fd#Zd1 fd&Z xZS )2DataDocumenterz/Specialized Documenter subclass for data items.ry  (   ir   r   r  r  r   r   r   r   r   r   r   rK   r   r<   c                0    t          |t                    o|S rF   )r   r  r  s        rA   r   z"DataDocumenter.can_document_member  s     &"233>>rC   rQ   c                .   t          t          j        |                    }||_        	 t	          j        | j                  }|                                 |j        	                                D ]\  \  }}}|s	||vr|||<   dS # t          $ r Y dS w xY w)9Update __annotations__ to support type_comment and so on.N)dictr   r  r   r   r  r  r  r   rz  r   )rO   r   r   r  	classnameattrnamer  s          rA   update_annotationsz!DataDocumenter.update_annotations  s    71&99::!,	%0>>H5=5I5O5O5Q5Q 7 71%Hz  7X[%@%@,6K)7 7  	 	 	DD	s   AB 
BBFr(  c                    t                                          |          }| j        r|                     | j                   |S rF   )r   r   r   r  rO   r(  r0  r   s      rA   r   zDataDocumenter.import_object  s?    gg##J//; 	1##DK000
rC   c           	     
   t                                                      rdS |                                 pg }t          d                    t          j        t          j        |g                               \  }}d|v rdS dS NTrQ  z
hide-valueF	r   r  rd  r   r#  r  r  r  r  rO   r  r   r  r   s       rA   r  z+DataDocumenter.should_suppress_value_header  s}    77//11 	4,,..&BC"3		)*8=#rBBCC# #Ix x''turC   rK  c                d   t                                          |           |                                 }| j        j        t
          u s|                                 rd S | j        j        r%|                     d| j        j        z  |           d S | j        j	        dk    rt          | j        d | j        j        d          }| j        d         |v rit          | j        j                  }| j        j        }t#           |j        | j        d                   ||          }|                     d|z   |           	 | j        j        s(|                                 st+          | j                  rd S t/          | j                  }|                     d|z   |           d S # t0          $ r Y d S w xY w	Nz   :annotation: %srH  Tr  r   r  
   :type: z   :value: r   r\  rU  r   r  r   r  r  r   rR  r   r   rV  r  rB   rS  rT  r!   r   no_valuer  r   ru   r   r   rO   rK  rY  r   r  rL  objreprr   s          rA   r\  z#DataDocumenter.add_directive_header	     $$S)))((**
L#x//4466 0 D\$  	MM.1HH*UUUUU{,66,KK4#'	   <#{22+DK,PQQD%)[%SN2'R(899'5  G
 MM,"8*EEEL)G88::G dk**G
 D0==GMM-'"9:FFFFF      <4F! 2-F! !
F/.F/r  c                    d S rF   r@   rY  s     rA   r  zDataDocumenter.document_members,	  rT   rC   c                Z    |                      | j        p| j        dd           }|p| j        S NrW   r   r   ru   r  rO   r  s     rA   r3  zDataDocumenter.get_real_modname/	  -    }}T[%?DKtTT+t|+rC   r  r  c                    	 t          j        | j                  }|                                 d|f}||j        v rt          |j        |                   S n# t          $ r Y nw xY wd S r   )r   r  r  r  r{  rw  r   )rO   r  r  r   s       rA   get_module_commentz!DataDocumenter.get_module_comment3	  s    	%0>>Hx.Ch(((H.s3444 ) 	 	 	D	 ts   AA 
A$#A$r]  c                    |                      | j        d                   }|r|gS t                                                      S )Nr   )r/  r  r   rd  )rO   commentr   s     rA   rd  zDataDocumenter.get_doc?	  sA    ))$,r*:;; 	%977??$$$rC   rq  rr  c                    d | _         |st                      }|                     |           t                                          |           d S rF   r  r
   r  r   r~  rO   rq  r   s     rA   r~  zDataDocumenter.add_contentG	  sO      	(%<<LL)))L)))))rC   r  r   r   r<   rQ   r  r  r  r  r  r   )r  r   r<   r  r  r  )rV   rW   rX   rY   r  r  r  r  r  r   r   r   r   r  r   r  r   r  r\  r  r3  r/  rd  r~  r   r   s   @rA   r  r    sz         :9GLH(,-B-N(O(OKOOOO 1K)K
? ? ? [?
              ( ( ( ( ( (T    , , , ,
 
 
 
% % % % % %	* 	* 	* 	* 	* 	* 	* 	* 	* 	*rC   r  c                       e Zd ZdZdZdZdZdZed'd            Z	d(d) fdZ
d*dZd+ fdZd(d,dZd* fdZd-dZd.d$Zd/ fd&Z xZS )0MethodDocumenterzGSpecialized Documenter subclass for methods (normal, static and class).r7   2   r   r   r   r   r   r   r   r   rK   r   r<   c                V    t          j        |          ot          |t                     S rF   )r   rF  r   r  r  s        rA   r   z$MethodDocumenter.can_document_member[	  s(      ((UFDT1U1U-UUrC   Fr(  c                R   t                                          |          }|s|S | j        j                            | j        | j                  }t          j        || j        | j                  r| xj	        dz  c_	        n$t          j
        |          r| xj	        dz  c_	        |S )Nr   r   r   rE  )r   r   r   r  r   r  ru   r   isstaticmethodr  isclassmethod)rO   r(  r0  r   r   s       rA   r   zMethodDocumenter.import_objecta	  s    gg##J// 	J k"&&t'7EE!#4;T=MNNN 	#""3'' 	# "
rC   r9  c                   | j         j        dv r|                    dd           | j         j        dk    r|                    dd           | j         j        r|                    dd           	 | j        t
          j        k    r| j        t
          k    rd}nt          j	        | j        | j        | j
        	          rH| j                            d
| j        d           t          j        | j        d| j         j                  }nG| j                            d
| j        d           t          j        | j        d| j         j                  }t          |fi |}nS# t           $ r9}t"                              t'          d          | j        |           Y d }~dS d }~wt*          $ r d}Y nw xY w| j         j        r|                    dd          }|S )N>   rH  rI  rJ  Fr>   rK  TrL  z()r;  rM  r  +Failed to get a method signature for %s: %sr   r.  rQ  )r   rR  r   rS  rT  ru   r   r   r   r<  r  r   rj  rU  rV  r   rA  r  r  r   r  r   rW  r   )rO   r9  r  rK  r1  s        rA   r<  zMethodDocumenter.format_argsq	  s   ;(,CCC/777;/7::5t<<<;9 	6.555#	{fo--$+2G2G
 )KT[t7G    L%%:DK   "+%*%)[%E  CC L%%:DK   "+%)%)[%E  C
 +399&99 	 	 	NN@AA4=RU   22222 	 	 	DDD	 ;0 	.<<f--Ds   .C*E 
F)#.FF)(F)rK  rQ   c                @   t                                          |           |                                 }| j        j                            | j        | j                  }t          j	        |          r| 
                    d|           t          j        |          st          j        |          r| 
                    d|           t          j        |          s-t          j        |          r/t          j        |j                  r| 
                    d|           t          j        || j        | j                  r| 
                    d|           | j        r>d                    | j                  | j        j        v r| 
                    d|           d S d S d S )N   :abstractmethod:r[     :classmethod:r;  z   :staticmethod:r  r  )r   r\  rU  r   r  r   r  ru   r   isabstractmethodr  r\  r]  is_classmethod_likeis_singledispatch_methodri  r<  r  r#  r  r  )rO   rK  rY  r   r   s       rA   r\  z%MethodDocumenter.add_directive_header	  s   $$S)))((**
k"&&t'7EE#C(( 	=MM/<<<&s++ 	4w/I#/N/N 	4MM,
333',,	:/44	: +CH55	:
 MM,j999!#4;T=MNNN 	;MM-z:::= 	4SXXdl33t}7KKKMM,
33333	4 	4KKrC   r  c                    d S rF   r@   rY  s     rA   r  z!MethodDocumenter.document_members	  rT   rC   c                   | j         j        dk    r|                    dd           | j         j        r|                    dd           g }| j        r9d                    | j                  | j        j        v r| j         j        dk    rd}n0d} t                      j
        di |}|                    |           | j        j                            | j        d                   }t          j        |          r|j        j                                        D ]\  }}|t(          u rt          j        |          r|j        }|                     ||          }|rWt1          | j        d	          }	| j        |	_        ||	_        d	g|	_        |                    |	
                                           |r{| j        st          j        | j        | j        | j        
          r't          j        | j        d| j         j                  }
n&t          j        | j        d| j         j                  }
t=          | j        di           }| j        j        d                    | j                           D ]}|                     |
|          }tA          ||| j         j                  }t          j        | j        | j        | j        
          sDtC          |j"        #                                          }|$                    |dd                    }tK          |fi |}|                    |           d                    |          S )Nr>   rK  TrL  r  rH  Fr   r   r;  r  ra  r   rp  rQ  r@   )&r   rS  r   rT  r  r#  r  rb  rR  r   rJ  rS   r   r  r   r   rE  
dispatcherr   rz  ru   r=  __func__rd  r7  r   r<  r  rU  rV  r   re  r   rw  rq  r  r   r   )rO   r9  rf  rg  rK  methrh  ri  dispatchmethr  rk  ra  rl  rq  r   s                 rA   rJ  z!MethodDocumenter.format_signature	  sH   ;/7::5t<<<;9 	6.555M
	&&$-*AAA-77 JJJ*%''*44V44CKK{#''R(899+D11 	C!_5;;== C C	T&==,T22 -#}#'#B#B4#M#ML# C%5dnb%I%I
,0K
),8
).0T
*J$?$?$A$ABBB 	!$-3%43C    !*K!&!%!A   !*K!%!%!A   't{M2FFK M3CHHT\4J4JK ! !33FHEE-k4;+K  -KT[t7G   K "&h&9&@&@&B&B!C!CJ'//:abb>/JJH)(==f==C    yyrC   rk  r   rl  c                8   t          |j                                                  }t          |          D ]O\  }}|j                            |j                  }|r)|j        dk    r|                    |j                  ||<   P|                    |          S rn  rr  rs  s          rA   re  z$MethodDocumenter.merge_default_value	  rv  rC   ri  rw  rh  r  rx  c                P   	 t          j        || j        j                  }nR# t          $ r9}t
                              t          d          | j        |           Y d}~dS d}~wt          $ r Y dS w xY wt          |j                  dk    rdS d }t          |j                                                  }|d         j        t          j        u rU|d                             |          |d<   	 |                    |          |_        |S # t&          t          f$ r Y dS w xY w|S )rz  rN  r?  Nr   c                     d S rF   r@   r@   rC   rA   r|  z:MethodDocumenter.annotate_to_first_argument.<locals>.dummy
  r}  rC   r~  rp  r  r  s          rA   rd  z+MethodDocumenter.annotate_to_first_argument
  se   	#Dt{7WXXXCC 	 	 	NN@AA4=RU   44444 	 	 	44	 s~!##4	 	 	 cn++--..!99?22q	))S)99F1I&)kk% '2 ' '# "I.   tt r  r]  c                ,   | j         | j         S | j        d         dk    rt          | j        | j        | j        j        | j        | j                  }|>|t          j	        j
        k    s'|                                t          j	        j
        k    rd }|r-| j        j        j        j        j        }t#          ||          gS g S | j        d         dk    rt          | j        | j        | j        j        | j        | j                  }|>|t          j        j
        k    s'|                                t          j        j
        k    rd }|r-| j        j        j        j        j        }t#          ||          gS g S t'                                                      S )Nr   r   )tabsizer  )r)  r  r   ru   r   r   r_  r   r  r   rY   rd   r   r`  ra  rb  rc  r   r  r   rd  )rO   r   rc  r   s      rA   rd  zMethodDocumenter.get_doc*
  s   +
 ''<z))6  I $V_444??$$(??? 	  N09BL	))YGGGHH	\"**6  I $V^333??$$(>>> 	  N09BL	))YGGGHH	77??$$$rC   r  r  r  r  r  r  r  r  r  )rV   rW   rX   rY   r  rO  r  r  r  r   r   r<  r\  r  rJ  re  rd  rd  r   r   s   @rA   r7  r7  S	  s6       QQGMLHV V V [V
       0 0 0 0d4 4 4 4 4 4(    B B B B B BH7 7 7 7       D,% ,% ,% ,% ,% ,% ,% ,% ,% ,%rC   r7  c                  >     e Zd ZdZd
d fdZd fdZd fd	Z xZS )NonDataDescriptorMixinzMixin for AttributeDocumenter to provide the feature for supporting non
    data-descriptors.

    .. note:: This mix-in must be inherited after other mix-ins.  Otherwise, docstring
              and :value: header will be suppressed unexpectedly.
    Fr(  rK   r<   c                    t                                          |          }|r!t          j        | j                  sd| _        nd| _        |S )NTF)r   r   r   isattributedescriptorru   non_data_descriptorr  s      rA   r   z$NonDataDescriptorMixin.import_objecta
  sN    gg##J// 	-w4T[AA 	-'+D$$',D$
rC   c                h    t          | dd           pt                                                      S NrU  F)rT  r   r  r   s    rA   r  z3NonDataDescriptorMixin.should_suppress_value_headerj
  s3    3U;;; :ww7799	
rC   r]  c                j    t          | dd          rd S t                                                      S rW  )rT  r   rd  r   s    rA   rd  zNonDataDescriptorMixin.get_docp
  s3    4.66 	% 477??$$$rC   r  r  r  r  r  r   s   @rA   rR  rR  Y
  s               
 
 
 
 
 
% % % % % % % % % %rC   rR  c                  F     e Zd ZdZddZdd fdZd fdZd fd
Z xZS )
SlotsMixinzNMixin for AttributeDocumenter to provide the feature for supporting __slots__.r<   rK   c                    	 t          j        | j                  x}r| j        d         |v S dS # t          t
          f$ r Y dS w xY w)z/Check the subject is an attribute in __slots__.r   F)r   getslotsr   r  r   rA  )rO   parent___slots__s     rA   isslotsattributezSlotsMixin.isslotsattribute|
  sa    	#*#3DK#@#@@ |B'+;;;uI& 	 	 	55	s   ). AAFr(  c                    t                                          |          }|                                 rt          | _        |S rF   )r   r   r^  	SLOTSATTRru   r  s      rA   r   zSlotsMixin.import_object
  s:    gg##J//  "" 	$#DK
rC   c                d    | j         t          u rdS t                                                      S rM   )ru   r`  r   r  r   s    rA   r  z'SlotsMixin.should_suppress_value_header
  s+    ;)##47777999rC   r]  c                   | j         t          u r	 t          j        | j                  }|r4|                    | j        d                   x}rt          |          }|gS g S # t          $ rB}t          
                    t          d          | j        j        |fd           g cY d }~S d }~ww xY wt                                                      S )Nr   z'Invalid __slots__ found on %s. Ignored.r  r  )ru   r`  r   r\  r   r   r  r   r   r  r  r   rX   r   rd  )rO   r]  r   r1  r   s       rA   rd  zSlotsMixin.get_doc
  s    ;)###*#3DK#@#@ # !1!5!5dl26F!G!GGI !2) < <I%;&I   @AA[-s3"    
 						 77??$$$s$   AA"  A" "
B.,7B)#B.)B.r  r  r  r  )	rV   rW   rX   rY   r^  r   r  rd  r   r   s   @rA   rZ  rZ  y
  s        XX         : : : : : :% % % % % % % % % %rC   rZ  c                  b     e Zd ZdZ e            ZddZddZdd fd
Zd fdZ	d fdZ
 xZS )RuntimeInstanceAttributeMixina-  Mixin for AttributeDocumenter to provide the feature for supporting runtime
    instance attributes (that are defined in __init__() methods with doc-comments).

    Example::

        class Foo:
            def __init__(self):
                self.attr = None  #: This is a target of this mix-in.
    r   r   r<   rK   c                r    |                      || j        d                   rdS |                     |          S )z8Check the subject is an attribute defined in __init__().r   T)get_attribute_commentr  +is_runtime_instance_attribute_not_commented)rO   r   s     rA   is_runtime_instance_attributez;RuntimeInstanceAttributeMixin.is_runtime_instance_attribute
  s<     %%fdl2.>?? 	4??GGGrC   c                B   t          j        |          D ]}	 t          |d          }t          |d          }t          j        |          }|                                 |r%| j        r| d| j        d          }||j        v r dS s# t          t          f$ r Y w xY wdS )zHCheck the subject is an attribute defined in __init__() without comment.rW   rX   r  r   TF)
r   getmror   r   r  r  r  r  r  r   )rO   r   r   r3   r  r  r   s          rA   rg  zIRuntimeInstanceAttributeMixin.is_runtime_instance_attribute_not_commented
  s    >&)) 	 	C%c<88'^<<)4V<<  """ $ $%::R(8::Ch///#tt"K0    us   A,BBBFr(  c                b   	 t                                          d          S # t          $ r}	 t          | j        j                  5  t          | j        | j        dd         d| j                  }|d         }| 	                    |          r%| j
        | _        || _        	 ddd           Y d}~dS 	 ddd           n# 1 swxY w Y   n# t          $ r Y nw xY w|r t                              |j        d         d	d
           | j                                         Y d}~dS d}~ww xY w)ziCheck the existence of runtime instance attribute after failing to import the
        attribute.
        Tr  Nr   r4   r*  r  r   r  r   r,  F)r   r   r.  r   r   r"  r  r  r   rh  RUNTIME_INSTANCE_ATTRIBUTEru   r   r  r  r  r   r/  rO   r(  r1  r0  r   r   s        rA   r   z+RuntimeInstanceAttributeMixin.import_object
  s   	77((D(999 	 	 	$+:;; $ $'SbS)#'=	  C !VF99&AA $&*&E&,#$ $ $ $ $ $ $ $ $ $ $ $$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $      NN38A;YNPPPH  """55555+	s^   !% 
D.C	AC%C7CC	C
C	CD)
CD)CAD))D.c                `    | j         | j        u pt                                                      S rF   )ru   rl  r   r  r   s    rA   r  z:RuntimeInstanceAttributeMixin.should_suppress_value_header
  s-    K4:: 6ww3355	
rC   r]  c                    | j         | j        u r|                     | j                  rd S t	                                                      S rF   )ru   rl  rg  r   r   rd  r   s    rA   rd  z%RuntimeInstanceAttributeMixin.get_doc
  sF    K4:::@@MM ; 477??$$$rC   r   r   r<   rK   r  r  r  r  )rV   rW   rX   rY   ru   rl  rh  rg  r   r  rd  r   r   s   @rA   rd  rd  
  s          "(H H H H   $      :
 
 
 
 
 
% % % % % % % % % %rC   rd  c                  F     e Zd ZdZddZdd fd	Zd fd
Zd fdZ xZS )#UninitializedInstanceAttributeMixinzMixin for AttributeDocumenter to provide the feature for supporting uninitialized
    instance attributes (PEP-526 styled, annotation only attributes).

    Example::

        class Foo:
            attr: int  #: This is a target of this mix-in.
    r   r   r<   rK   c                Z    t          |d| j        j        d          }| j        d         |v S )z2Check the subject is an annotation only attribute.NTr  r   )r   r   rV  r  )rO   r   r   s      rA   #is_uninitialized_instance_attributezGUninitializedInstanceAttributeMixin.is_uninitialized_instance_attribute  s8    $D$+:4
 
 
 |B;..rC   Fr(  c                   	 t                                          d          S # t          $ r}	 t          | j        | j        dd         d| j                  }|d         }|                     |          rt          | _        || _	        Y d}~dS n# t          $ r Y nw xY w|r t                              |j        d         d	d
           | j                                         Y d}~dS d}~ww xY w)mCheck the existence of uninitialized instance attribute when failed to import
        the attribute.
        Tr  Nr   r4   r*  r  r   r  r   r,  F)r   r   r.  r  r  r   rt  r  ru   r   r  r  r  r   r/  rm  s        rA   r   z1UninitializedInstanceAttributeMixin.import_object  s%   	77((D(999 	 	 	#LL"%#}	   Q;;FCC  "4DK"(DK44444       NN38A;YNPPPH  """55555)	s4   !% 
C0ABC+
BC+BAC++C0c                `    | j         t          u pt                                                      S rF   r
  r   s    rA   r  z@UninitializedInstanceAttributeMixin.should_suppress_value_header)  r  rC   r]  c                d    | j         t          u rd S t                                                      S rF   r  r   s    rA   rd  z+UninitializedInstanceAttributeMixin.get_doc.  s*    ;,,,4ww   rC   rp  r  r  r  r  )	rV   rW   rX   rY   rt  r   r  rd  r   r   s   @rA   rr  rr  
  s         / / / /      8
 
 
 
 
 

! ! ! ! ! ! ! ! ! !rC   rr  c                       e Zd ZU dZdZdZ eej                  Zde	d<   e
ed<   eed<   dZed)d            Zed*d            Zd+d,dZd-dZd+d. fdZd/dZd0 fdZd1 fd Zd2d#Zd3 fd%Zd4 fd(Z xZS )5AttributeDocumenterz/Specialized Documenter subclass for attributes.r8   <   r   r   r  r  r  r   r   r<   rK   c                z    t          j        |           p't          j        |           pt          j        |           S rF   )r   rD  rE  r  )r   s    rA   is_function_or_methodz)AttributeDocumenter.is_function_or_methodI  s8     s##Vw'8'='=VAQRUAVAV	
rC   r   r   r   r   r   r   r   c                    t          |t                    rdS t          j        |          rdS t          j        |           ot          |t
                     S )NFT)r   r  r   rT  rF  r  r  s        rA   r   z'AttributeDocumenter.can_document_memberO  sZ     f.// 	5(00 	4$V,,,MZ5M5M1MMrC   Fr  rQ   c                    d S rF   r@   rY  s     rA   r  z$AttributeDocumenter.document_membersY  rT   rC   c                   	 t          t          j        |                    }||_        t          j        |          D ]}	 t          |d          }t          |d          }t          j        |          }|                                 |j	        }|
                                D ]\  \  }}	}
||k    r	|	|vr|
||	<   # t          t          f$ r Y w xY wdS # t          t          f$ r Y dS w xY w)r  rW   rX   N)r  r   r  r   rj  r   r   r  r  r   rz  r  r   rA  )rO   r   r   r   r3   r  r  annsr  r  r  s              rA   r  z&AttributeDocumenter.update_annotations\  s-   	w5f==>>K%0F"~f--  )#|<<F+C@@H-8@@H$$&&&#/D=AZZ\\ ? ?9-Hz$00X[5P5P4>K1? '4   D  	* 	 	 	DD	s6   >C A;B=<C =CC CC C+*C+r(  c                    t                                          |          }t          j        | j                  r| j        j        | _        | j        r|                     | j                   |S rF   )r   r   r   isenumattributeru   r  r   r  r  s      rA   r   z!AttributeDocumenter.import_objects  s`    gg##J//"4;// 	,++DK; 	1##DK000
rC   c                Z    |                      | j        p| j        dd           }|p| j        S r*  r+  r,  s     rA   r3  z$AttributeDocumenter.get_real_modname|  r-  rC   c           	     
   t                                                      rdS |                                 }|rIt          d                    t          j        t          j        |g                               \  }}d|v rdS dS r  r  r  s       rA   r  z0AttributeDocumenter.should_suppress_value_header  s    77//11 		 4,,..C  &7IIi.x}c2FFGG' '#	8  8++4urC   rK  c                d   t                                          |           |                                 }| j        j        t
          u s|                                 rd S | j        j        r%|                     d| j        j        z  |           d S | j        j	        dk    rt          | j        d | j        j        d          }| j        d         |v rit          | j        j                  }| j        j        }t#           |j        | j        d                   ||          }|                     d|z   |           	 | j        j        s(|                                 st+          | j                  rd S t/          | j                  }|                     d|z   |           d S # t0          $ r Y d S w xY wr   r"  r$  s          rA   r\  z(AttributeDocumenter.add_directive_header  r&  r'  r  r  c                X   t          j        |          D ]}	 t          |d          }t          |d          }t          j        |          }|                                 |r0| j        r)||f}||j        v rt          |j        |                   c S ~# t          t          f$ r Y w xY wd S )NrW   rX   )r   rj  r   r   r  r  r  r{  rw  r  r   )rO   r   r  r   r3   r  r  r   s           rA   rf  z)AttributeDocumenter.get_attribute_comment  s    >&)) 	 	C%c<88'^<<)4V<<  """ = =#X.Ch000#H$6s$;<<<<<"K0    ts   A7BB'&B'r]  c                   |                      | j        | j        d                   }|r|gS 	 | j        j        }d| j        _        t                                                      || j        _        S # || j        _        w xY w)Nr   F)rf  r   r  r   r_  r   rd  )rO   r1  origr   s      rA   rd  zAttributeDocumenter.get_doc  s    ,,T[$,r:JKK 	9	: ;9D5:DK277??$$59DK22TDK29999s   7A2 2B rq  rr  c                    d | _         |t                      }|                     |           t                                          |           d S rF   r3  r4  s     rA   r~  zAttributeDocumenter.add_content  sM     %<<LL)))L)))))rC   )r   r   r<   rK   r  r  r  r5  r  r   r  r  )r   r   r  r   r<   r  r  r  )rV   rW   rX   rY   r  r  r  r  r   r   r   r   r  staticmethodr}  r  r   r  r  r   r3  r  r\  rf  rd  r~  r   r   s   @rA   rz  rz  4  s         :9GL(,-B-N(O(OKOOOO 1K)K
 H
 
 
 \

 N N N [N       .      , , , ,     ( ( ( ( ( (T   ": : : : : : * * * * * * * * * *rC   rz  c                       e Zd ZdZdZdZej        dz   Zedd            Z	dd fdZ
d  fdZdd!dZd"dZd# fdZd$dZ xZS )%PropertyDocumenterz/Specialized Documenter subclass for properties.r  r{  r   r   r   r   r   r   r   r   rK   r   r<   c                   t          |t                    rot          j        |          rdS t	          |j        di           }|                    |          }t          |t                    ot          j        |j                  S dS )NTr  F)	r   r/  r   
ispropertyr   ru   r   r  rI  )r   r   r   r   r   r  r   s          rA   r   z&PropertyDocumenter.can_document_member  sz     fo.. 	!&)) Yt'z2FFll:..!#{33X8J3<8X8XX5rC   Fr(  c                   t                                          |          }|rt          j        | j                  s{t          | j        di           }|                    | j        d                   }t          |t                    r.t          j        |j                  r|j        | _        d| _        dS dS d| _        |S )rv  r  r   TF)r   r   r   r  ru   r   r   r   r  r   r  rI  r=  )rO   r(  r0  r  r   r   s        rA   r   z PropertyDocumenter.import_object  s     gg##J// 	w)$+66 	#DKR@@H,,t|B/00C#{++ 0B3<0P0P !l+/"tu"
rC   r9  c                    |                                  }|dS | j                            d|d            t                      j        di |S )Nr   rM  Fr@   )_get_property_getterr   rj  r   r<  )rO   r9  ri  r   s      rA   r<  zPropertyDocumenter.format_args  sX    ((**<2 	<dEJJJ"uww",,V,,,rC   r  rQ   c                    d S rF   r@   rY  s     rA   r  z#PropertyDocumenter.document_members  rT   rC   c                Z    |                      | j        p| j        dd           }|p| j        S r*  r+  r,  s     rA   r3  z#PropertyDocumenter.get_real_modname  r-  rC   rK  c                   t                                          |           |                                 }t          j        | j                  r|                     d|           | j        r|                     d|           |                                 }|| j	        j
        dk    rd S 	 t          j        || j	        j                  }|j        t          j        urWt!          | j	        j                  }| j	        j        }t'          |j        ||          }|                     d|z   |           d S d S # t(          $ r9}t*                              t/          d          | j        |           Y d }~d S d }~wt2          $ r Y d S w xY w)NrA  rB  rH  rN  r  r!  rP  )r   r\  rU  r   rC  ru   r  r=  r  r   rR  rU  rV  r  r   r  rB   rS  rT  r!   rA  r  r  r   r  r   )
rO   rK  rY  ri  rU  r  rL  r%  r1  r   s
            rA   r\  z'PropertyDocumenter.add_directive_header  s   $$S)))((**
#DK00 	=MM/<<< 	:MM,j999((**<4;8FBBF	)4;#C  I *)/AA'(LMM!%!O./n   lW4jAAAAA BA  	 	 	NNBCCT]TW   DDDDD 	 	 	DD	s   ,BD8 8
F.E66FFrx  c                    t          | j        dd           r| j        j        S t          | j        dd           r| j        j        S d S )Nfgetri  )r   ru   r  ri  r   s    rA   r  z'PropertyDocumenter._get_property_getter=  sI    VT22 	$;##VT22 	$;##trC   r  r  r  r  r  r   r  )r<   rx  )rV   rW   rX   rY   r  r  rz  r  r  r   r   r<  r  r3  r\  r  r   r   s   @rA   r  r    s        99GL #+a/H   [      $- - - - - -    , , , ,     >       rC   r  r   r   r   r   r/   c                   |j                                         D ]!\  }}t          | |          r || |g|R  c S "t          | |g|R  S )zAlternative getattr() for types)autodoc_attrgettersrz  r   r   )r   r   r   r   rh  ri  s         rA   r   r   E  sw     17799 - -	Tc3 	-4T,G,,,,,,	- T,G,,,,rC   r   r)   r0   c                >   |                      t                     |                      t                     |                      t                     |                      t                     |                      t
                     |                      t                     |                      t                     |                      t                     |                      t                     | 
                    dddt          ddd                     | 
                    dddt          dd	d
                     | 
                    dddt          dd                     | 
                    di dt          t          h                     | 
                    dddt          t          h                     | 
                    dg dt          t          t           h                     | 
                    dddt          dddd                     | 
                    dddt          ddd                     | 
                    di dt          t          h                     | 
                    dddt          dd                     | 
                    dddt          t          h                     | 
                    dddt          t          h                     |                     d            |                     d!           |                     d"           |                     d#           |                     d$           |                     d%           |                     d&           |                     d'           t&          j        dd(S ))Nr  r4   r   r   r   )typesr  r}   r{   r|   r  mixedr  autodoc_default_optionsr:  Tr"  rR  rU  rI  rH  $autodoc_typehints_description_targetall
documenteddocumented_paramsrV  rS  r>   zfully-qualifiedautodoc_warningiserrorr_  rM  ri  rF  r  r  z$sphinx.ext.autodoc.preserve_defaultszsphinx.ext.autodoc.type_commentzsphinx.ext.autodoc.typehints)versionparallel_read_safe)add_autodocumenterr  r/  r  r  rA  r  r7  rz  r  add_config_valuer   r   r  rK   rw  tuple	add_eventsetup_extensionsphinx__display_version__)r   s    rA   setupr  P  s   +,,,?+++.///>***-....///+,,,.///-...67F++	     >:{;;	     !7K((	     2BYPTvEVEVWWW%tU)TF:K:K     ED%=1I1I     ;vv>>	     .5,(;<<	     /U)TFBSBSTTT"$g..	     14iQUPVFWFWXXX$dED69J9J     MM4555MM-...MM-...MM'(((MM)***>???9:::6777 -"  rC   )r:   r;   r<   r2   )rD   r   r<   r   )r^   r   r<   r_   )r^   r   r<   rm   )r^   r   r<   rs   )r^   r   r<   ry   )r^   r   r<   r   )r^   r   r<   rK   )r   r   r<   rQ   )r   N)r   r   r   r   r   r   r<   r9   )NFF)
r   r   r   r   r   rK   r   rK   r<   r9   )
r   r   r   r   r   r   r   r/   r<   r   )r   r)   r<   r0   )rY   
__future__r   r  r  r   r  r   r   r   typingr   r   r   r	   docutils.statemachiner
   r  sphinx.configr   sphinx.errorsr   sphinx.ext.autodoc.importerr   r   r   sphinx.ext.autodoc.mockr   r   r   sphinx.localer   r   sphinx.pycoder   sphinx.utilr   sphinx.util.docstringsr   r   sphinx.util.inspectr   r   r   r   r   sphinx.util.typingr   r    r!   collections.abcr"   r#   r$   r  r%   r&   r'   r(   sphinx.applicationr)   r*   sphinx.environmentr+   r,   sphinx.eventsr-   sphinx.ext.autodoc.directiver.   sphinx.registryr/   r0   r1   r2   r   r   r  rK   rw  r9   r   	getLoggerrV   r  r  __subclasses__MethodDescriptorTyper   VERBOSEr  r  rB   rG   rI   r[   ri   rq   ru   r  r  r`  rl   rr   rx   r   r   r   r   r   r   r   r   r   r   r   r  r  r"  r(  r=  rA  r  r   r  r  r/  r  r  r  r  r  r7  rR  rZ  rd  rr  rz  r  r   r  r@   rC   rA   <module>r     s	     # " " " " "      				 



 ( ( ( ( ( ( ( ( 7 7 7 7 7 7 7 7 7 7 7 7 , , , , , ,        % % % % % % W W W W W W W W W W < < < < < < < < < <         ( ( ( ( ( ( ( ( ( ( ( ( ( ( G G G G G G G G              M L L L L L L L L L <<<<<<<<<<      3333333333))))))$$$$$$EEEEEEEE******======777777NNNNNNNNNNIO 3;	#sDdOT#YGM3$     
	8	$	$
 tD/00  
 J
 
 BJ|,, + + + +                  dffVXX vxxFHH	@ @ @ @< < < <   P P P PR R R R 688      + + + +* ;?* * * * *^ "&	, , , , ,d
 
 
 
 
d38n 
 
 
'
 '
 '
 '
 '
 '
 '
 '
TD+ D+ D+ D+ D+ D+ D+ D+N{< {< {< {< {<z {< {< {<|) ) ) ) )J ) ) )0 )  )  )  )  ):  )  )  )FN N N N N N N Nb2 2 2 2 2#: 2 2 2$O O O O O02G O O Od    ,   & &I'    !y"   
i
 i
 i
 i
 i
-/D i
 i
 i
X+ + + + +/ + + +4       ,- - - - -/ - - -,)% )% )% )% )%'> )% )% )%XB* B* B* B* B*79NB* B* B*JC% C% C% C% C%.0D C% C% C%L% % % % %4 % % %@-% -% -% -% -%( -% -% -%`P% P% P% P% P%$; P% P% P%f5! 5! 5! 5! 5!*A 5! 5! 5!pm* m* m* m* m*!' m* m* m*`^ ^ ^ ^ ^57K ^ ^ ^B- - - -H H H H H HrC   