
    7 f.                      d Z ddlm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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"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/m0Z0m1Z1m2Z2m3Z3 e
r ddl4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z>  e%j?        e@          ZA eBeBjC                  ZD ejE        dejF                  ZG ejE        d          ZHdvdZI G d d          ZJ G d d          ZK eJ            ZL eK            ZM eN            ZO eN            ZP eN            ZQdwd"ZRdxd$ZSdyd&ZTdzd(ZUdzd)ZV eN            ZWd{d*ZXd|d,ZYd}d0ZZd~dd6Z[	 	 	 ddd=Z\ G d> d?e]          Z^ G d@ dA          Z_ G dB dC          Z` G dD dEe`          Za G dF dGe`          Zb G dH dIe`          Zc G dJ dK          Zd G dL dMed          Ze G dN dOedeb          Zf G dP dQef          ZgdRgZhdSgZi G dT dUedeb          Zj G dV dWej          Zk G dX dY          Zl G dZ d[el          Zm G d\ d]el          Zn G d^ d_emeneb          Zo G d` daedec          Zp G db dcel          Zq G dd deel          Zr G df dgel          Zs G dh diel          Zt G dj dkemereseteqeeec	  	        Zu G dl dmeeec          ZvddsZwdduZxd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CallableTypeVar)
StringList)ENUMConfig)RemovedInSphinx80Warning)get_class_membersimport_moduleimport_object)ismockmock
undecorate)___)ModuleAnalyzerPycodeError)inspectlogging)prepare_docstringseparate_metadata)evaluate_signaturegetdocobject_descriptionsafe_getattrstringify_signature)
OptionSpecget_type_hintsrestifystringify_annotation)IteratorSequence)
ModuleType)Sphinx)BuildEnvironment)DocumenterBridgea  ^ ([\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+__$xr   returnc                    | S N )r+   s    Q/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/ext/autodoc/__init__.pyidentityr1   A   s    H    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/   selfr5   s     r0   __contains__z_All.__contains__H   s    tr2   Nonec                    d S r.   r/   r9   s     r0   appendz_All.appendK       r2   Nr5   r   r,   r6   )r5   r   r,   r<   )__name__
__module____qualname____doc__r;   r>   r/   r2   r0   r4   r4   E   sB        EE        r2   r4   c                      e Zd ZdZddZdS )	_EmptyzGA special value for :exclude-members: that never matches to any member.r5   r   r,   r6   c                    dS NFr/   r9   s     r0   r;   z_Empty.__contains__R   s    ur2   Nr@   )rA   rB   rC   rD   r;   r/   r2   r0   rF   rF   O   s.        QQ     r2   rF   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.r8   FNc                ^    g | ]*}|                                 |                                 +S r/   strip.0r+   s     r0   
<listcomp>z"members_option.<locals>.<listcomp>d   s-    ???aQWWYY?		???r2   ,)ALLsplitrI   s    r0   members_optionrV   ]   s>    
l
	t??399S>>????r2   object | set[str]c                V    | dv rt           S d |                     d          D             S )z-Used to convert the :exclude-members: option.r8   c                ^    h | ]*}|                                 |                                 +S r/   rM   rO   s     r0   	<setcomp>z)exclude_members_option.<locals>.<setcomp>k   s-    ;;;!;AGGII;;;r2   rR   )EMPTYrT   rU   s    r0   exclude_members_optionr\   g   s0    
l;;syy~~;;;;r2   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.r8   objectc                6    h | ]}|                                 S r/   rM   rO   s     r0   rZ   z+inherited_members_option.<locals>.<setcomp>s   s     222a		222r2   rR   )rT   setrU   s    r0   inherited_members_optionrb   n   sD    
lz	 22399S>>2222uur2   
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.r8   N)alphabeticalbysource	groupwisez)invalid value for member-order option: %s
ValueErrorr   rU   s    r0   member_order_optionrj   x   s?    
lt	9	9	9
GHH3NOOOr2   c                L    | dv r| S t          t          d          | z            )zDUsed to convert the :class-doc-from: option to autoclass directives.)bothclassinitz+invalid value for class-doc-from option: %srh   rU   s    r0   class_doc_from_optionro      s/    
'''
IJJSPQQQr2   c                    | dv rt           S | S )Nr8   )SUPPRESSrU   s    r0   annotation_optionrr      s    
l
r2   r6   c                    dS )znUsed to convert flag options to auto directives.  (Instead of
    directives.flag(), which returns None).
    Tr/   rU   s    r0   bool_optionrt      s	     4r2   optionsdictr<   c                    |                      d          t          u rdS |                     dg           }dD ];}|| v r5| |         t          dfvr$| |         D ]}||vr|                    |           <dS )zWMerge :private-members: and :special-members: options to the
    :members: option.
    membersN>   private-membersspecial-members)getrS   
setdefaultr>   )ru   rx   keymembers       r0   merge_members_optionr      s     {{9$$  B//G5 + +'>>gcl3+==!#, + +((NN6***	+ +r2   preintpostwhatr   c                     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_strnameobjr   ru   lines	list[str]r,   r<   c                    r|vrd S |d = r%|r|d         s|                     d           | d = |r|d         r|                    d           d S d S d S )N )popr>   )	r   r   r   r   ru   r   r   r   r   s	         r0   processzcut_lines.<locals>.process   s     	E%%F$3$K 	 U2Y 		"teff 	U2Y 	LL	 	 	 	r2   r   r(   r   r   r   r   r   r   ru   r   r   r   r,   r<   r/   )r   r   r   r   s   ``` r0   	cut_linesr      s4            Nr2   Fmarkerr   Sequence[str] | None	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   ru   r   r   r,   r<   c                h   r|vrd S d} }|d 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   )	enumerater   matchr>   )r   r   r   r   ru   r   deleteddelete
orig_linesiliner   r   	marker_rer   s              r0   r   zbetween.<locals>.process   s    	E%%F111X
 ,, 	! 	!GAt 		!g+&&&1t$$ !# !IIa'k***qLG 	"Y 	"!E!!!H 	U2Y 	LL	 	 	 	r2   r   )recompile)r   r   r   r   r   r   s    ``` @r0   betweenr      sK     
6""I        * Nr2   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 r.   )r   supercopyr:   	__class__s    r0   r   zOptions.copy   s    uww||~~&&&r2   r   r   r   c                ^    	 | |                     dd                   S # t          $ r Y d S w xY w)Nr   -)replaceKeyError)r:   r   s     r0   __getattr__zOptions.__getattr__   sB    	S#..// 	 	 	44	s    
,,)r,   r   )r   r   r,   r   )rA   rB   rC   rD   r   r   __classcell__r   s   @r0   r   r      sW        HH' ' ' ' ' '       r2   r   c                  *    e Zd ZdZddddddZd ZdS )ObjectMembera}  A member of object.

    This is used for the result of `Documenter.get_module_members()` to
    represent each member of the object.

    .. Note::

       An instance of this class behaves as a tuple of (name, object)
       for compatibility to old Sphinx.  The behavior will be dropped
       in the future.  Therefore extensions should not use the tuple
       interface.
    NF)	docstringclass_skippedr   r   r   r   r   rc   r   r   r6   r,   r<   c               L    || _         || _        || _        || _        || _        d S r.   )rA   r_   r   r   r   )r:   r   r   r   r   r   s         r0   __init__zObjectMember.__init__  s)    "r2   c                b    t          j        dt          d           | j        | j        f|         S )NzZThe tuple interface of ObjectMember is deprecated. Use (obj.__name__, obj.object) instead.   
stacklevel)warningswarnr   rA   r_   )r:   indexs     r0   __getitem__zObjectMember.__getitem__  s<     @.1	> 	> 	> 	> t{+E22r2   )r   r   r   r   r   rc   r   r   r   r6   r,   r<   )rA   rB   rC   rD   r   r   r/   r2   r0   r   r      sW          HL#U     3 3 3 3 3r2   r   c                  ,   e Zd ZU dZdZdZdZdZdZe	e	dZ
ded<   dRdZedSd            ZdTdUdZedVd            ZdWd"ZdXd)ZdYd*ZdZd[d-Zd\d.ZdYd/Zd]d1Zd\d2Zd]d3Zd]d4Zd^d6Zd_d8Zd`d<Zd\d=Zdad@Z dbdCZ!dcdGZ"dZdddIZ#dedMZ$	 	 	 	 dfdgdQZ%dNS )h
Documenterae  
    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.
    r_      r   T)no-indexnoindexr!   option_specr   r   r   r   defargsr,   c                4    t          | j        j        ||g|R  S )z5getattr() override for types such as Zope interfaces.)autodoc_attrgetterenvr   )r:   r   r   r   s       r0   get_attrzDocumenter.get_attr=  s     !$(,TDGDDDDr2   r~   
membernameisattrr6   parentc                $    d}t          |          )z?Called to see if a member can be documented by this Documenter.!must be implemented in subclassesNotImplementedError)clsr~   r   r   r   msgs         r0   can_document_memberzDocumenter.can_document_memberA  s     2!#&&&r2   r   	directiver*   indentr<   c                   || _         |j        j        | _        |j        | _        |j        | _        || _        || _        d| _        d | _        g | _	        d| _
        d | _        d| _        d | _        d| _        d | _        d | _        d S Nr   )r   r   configgenoptru   r   r   modnamemoduleobjpathfullnameargsretannr_   object_namer   analyzer)r:   r   r   r   s       r0   r   zDocumenter.__init__H  s    "'m2%.] '	 )-"$ !%	/3r2   dict[str, type[Documenter]]c                .    | j         j        j        j        S )z%Returns registered Documenter classes)r   r   registrydocumentersr:   s    r0   r   zDocumenter.documentersa  s     x|$00r2   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)rN   r   resultr>   r   )r:   r   r   r   s       r0   add_linezDocumenter.add_linef  si    ::<< 	>(DN!(t);VMfMMMMMM(DN!(V=f======r2   r   rc   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   )r:   r   r   r   r   r   s         r0   resolve_namezDocumenter.resolve_namem  s     2!#&&&r2   c                   t                               | j                  }|:t                              t          d          | j        | j        fz  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 || _        || _        || _        | j        pd| j        rdd                    | j                  z   ndz   | _        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rstriprT   r   r   autodoc_mock_importsr   r   r   r   r   joinr   )
r:   matchedexplicit_modnamer   r   tp_listr   r   r   r   s
             r0   
parse_namezDocumenter.parse_namey  s     %%di00?NN2ABBdlTXT]E^^ )  + + +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	,,":>,N# 6 666BPts   !C::C>C>F
raiseerrorc                0   t          | j        j                  5  	 t          | j        | j        | 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.
        
attrgetterwarningiserrorNTr   r   r   r   subtypeF)r   r   r  r   r   r   r   r   autodoc_warningiserrorr   r   r   r_   r   r   ImportErrorr   r   r   r   note_reread)r:   r  retexcs       r0   r   zDocumenter.import_object  s    $+233 	 	#DL$,/3}37;3UW W W KNGT[$*:DK$+&& :",T["9"9DK	 	 	 	 	 	 	 	     sx{OTTT$$&&&uuu	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	s6   DA:B$$
D.AD2DD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.
        rB   N)r   r_   r   r   s    r0   get_real_modnamezDocumenter.get_real_modname  s#     }}T[,==MMr2   c                    | j         j        rdS t          j        | j                  }|                     |dd          }|r|| j        k    rdS dS )z`Check if *self.object* is really defined in the module given by
        *self.modname*.
        TrB   NF)ru   imported_membersr   	unpartialr_   r   r   )r:   subjectr   s      r0   check_modulezDocumenter.check_module  s[     <( 	4#DK00--t<< 	w$,..5tr2   kwargsc                    dS )z}Format the argument signature of *self.object*.

        Should return None if the object does not have a signature.
        r   r/   r:   r  s     r0   format_argszDocumenter.format_args  s	    
 rr2   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    r0   format_namezDocumenter.format_name  s     xx%%55r2   c                j    |r	  | j         di |S # t          $ r Y nw xY w|                                  S Nr/   )r  	TypeErrorr  s     r0   _call_format_argszDocumenter._call_format_args  s\     	't'11&111   
 !!!s    
c           	        | j         d| j         z  }| 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        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.
        Nz(%s)z^(\(.*\))\s+->\s+(.*)$r   r   z+error while formatting arguments for %s: %sr   r   autodoc-process-signaturez -> %sr   r/   )r   r   r#  r   r   group	Exceptionr   r   r   r   r   eventsemit_firstresultr   r_   ru   )r:   r  r   r   r  r  r   s          r0   format_signaturezDocumenter.format_signature  sW   
 9 DI%D[FF-t-7777 2 h'@$GGG 2&}}Q//!(q!1!1   r"OPP#}c	  C C C
 112M26,26+t|TSY[ [  	"!LD&&@Hv--bAA2s   AA. .
B482B//B4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        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:z   :module: %sN)getattrr   r  get_sourcenamer   rT   r   lenru   no_indexr   r   r   )	r:   r+  r-  r   r   
sourcenameprefixr   sig_lines	            r0   add_directive_headerzDocumenter.add_directive_header	  s4   x..D/4<@@	!!((**
 /v..	...$SYYt__55 	+ 	+KAxMMV5T5855$& & &Avvs6{{*<  	7DL$8 	7MM/:666< 	G MM*T\9:FFFFF	G 	Gr2   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   r_   r   r   autodoc_inherit_docstringsr   r   r   statedocumentsettings	tab_widthr   )r:   r   rA  s      r0   get_doczDocumenter.get_doc  s_     4;t{7];(8: :	 	=,5>HI%i;;<<	r2   
docstringslist[list[str]]Iterator[str]c           	   #     K   |D ]q}| j         j        r[| j         j                            d| j        | j        | j        | j        |           |r!|d         dk    r|                    d           |E d{V  rdS )z7Let the user process the docstrings before adding them.autodoc-process-docstringr   r   N)r   r   emitr   r   r_   ru   r>   )r:   rC  docstringliness      r0   process_doczDocumenter.process_doc,  s      ( 	& 	&Nx| .!!"="&,t{"&,@ @ @ " .nR&8B&>&>"))"---%%%%%%%%%	& 	&r2   c                    t          j        | j        dd           r7t          j        | j        dd           r| j        j         d| j        j         }n| j        }| j        r| j        j         d| S d|z  S )NrB   rC   r   z:docstring of zdocstring of %s)r   r   r_   rB   rC   r   r   srcname)r:   r   s     r0   r4  zDocumenter.get_sourcename;  s     lDAA 	%$T[.$GG	% +0MM4;3KMMHH}H= 	0m+EE8EEE$x//r2   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 ]\  }}|                     |||           |rCt          |j        |j                  D ]*\  }}
|                     ||
d         |
d                    )dS dS )z>Add content from docstrings, attribute documentation and user.Tr   Nr   Fr   r   )r4  r   find_attr_docsr   r  listr   rJ  r   rB  r>   zipdataitems)r:   rM  r   r7  	attr_docsr}   attribute_docstringsr   r   rC  srcs              r0   add_contentzDocumenter.add_contentI  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 !2L4FGG 4 4	cdCFCF3333	4 	44 4r2   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   )r:   rY  r   s      r0   get_object_memberszDocumenter.get_object_membersp  s     2!#&&&r2   rx   list[ObjectMember]list[tuple[str, Any, bool]]c           
         d fd}g }d                      j                  } j        r j                                        }ni }|D ]>}	 |j        }|j        }	nG# t          $ r: t          |t                    r |\  }}	t          j
        d	t          d
           Y nw xY w|	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^t2                              |          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        t>          u r |||          rd}n|p j        j        }t          |t                    r	|j         rd} j!        j"        r4 j!        j"        #                    d j$        ||	|  j                  }|| }nK# tJ          $ r>}tL          '                    tQ          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,   r6   c                L   j         j        pt                      }t          j        j                  roj        j        D ]b}|j        |v r|j        k    r dS | |j        v r dS | 	                    |di           v r dS t          |t                    r|j        |u r dS cdS )NTF__annotations__)ru   inherited_membersra   r   isclassr_   __mro__rA   __dict__r   
isinstancer   r   )r   r   rb  r   r:   s       r0   is_filtered_inherited_memberz?Documenter.filter_members.<locals>.is_filtered_inherited_member  s     $ > G#%%t{++ 
%;. 	% 	%C|'888SDK=O=O#tts|++$uut}}S2CRHHHH$uu!#|44 %s9J9J$uu5r2   r   zReturning tuples of (name, object) as the second return value from get_object_members() is deprecated. Return ObjectMember(name, object) instances instead.r   r   Nr   rD   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,   r6   )+r  r   r   rP  rA   r_   AttributeErrorrf  r   r   r   r   INSTANCEATTRr   r   r   r=  r   r   r   r6   
startswithr   ru   exclude_membersspecial_member_rer   special_membersundoc_membersprivate_membersrx   rS   r   r   r   r)  r   r'  r   r   r   r   r>   )r:   rx   rY  rg  r  	namespacerU  r   r   r~   r   docr   cls_docmetadatahas_doc	isprivatekeep	skip_userr  s   `                   r0   filter_memberszDocumenter.filter_membersz  s   	 	 	 	 	 	"  HHT\**	= 	4466III  v	9 v	9C \
!   c<00  &)"
FK -	      |+S	:/F)/SF_VT]DK4Z![*6 6!#s++ C mmFK>> #"mmCDAAG#~~"c<00 (S] (-C 1# 6 6Xs))(( $II)) %II * 5 5c : :I&>> ,Ey*&=Y&N&Nl2 )E DL$@@@ 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$,3388SII 4$  'D$,*Dc<00 !S[ ! D 8< - $ = =-t|Z $,!0 !0I !,#,}   r #L  M  M#y*fc	  S S S 	  9

J7888
s,   AAB B 3I.L""
M*,4M%%M*all_membersc                P   
  j          j        j        d<    j        r j        d          j        j        d<   |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
 j        |o
            &d j        j        d<   d j        j        d<   dS )zGenerate reST for member documentation.

        If *all_members* is True, document all members, else those given by
        *self.options.members*.
        autodoc:moduler   autodoc:classc                D    g | ]}|                               |S r/   )r   )rP   r   r   r~   mnamer:   s     r0   rQ   z/Documenter.document_members.<locals>.<listcomp>3  sH     P P Ps11&%NNPs P P Pr2   c                    | j         S r.   )priority)r   s    r0   <lambda>z-Documenter.document_members.<locals>.<lambda>9  s     r2   r}   ::r   r   T)r|  real_modnamer  N)r   r   	temp_datar   ru   rb  rx   rS   r\  r{  r   valuessortr  r   r   r>   member_orderr   autodoc_member_ordersort_membersgenerater  )r:   r|  rY  members_check_modulerx   memberdocumentersclasses
full_mname
documenterr  r   r~   r  s   `         @@@r0   document_memberszDocumenter.document_members  s&    04|+,< 	B26,q/DH/ 0L20L(C/ 	 )-(?(?(I(I%g <>'+':':7H'M'M 	; 	;#UFFP P P P P P Pd&6&=&=&?&? P P PG LL55L666 !L,,,sxx8N$,8N8N8N/O/OOJ$T^ZMMJ$$j&%9::::|0TDK4T --.?NN"3 	B 	BJ t/@1@&j   B B B B
 04+,.2?+++r2   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.rg   c                6    | d         j         | d         j        fS Nr   )r  r   es    r0   r  z)Documenter.sort_members.<locals>.<lambda>Q  s    AaD,=qty+I r2   r  rf   entrytuple[Documenter, bool]r,   r   c                    | d         j                             d          d         }                    |t                              S Nr   r  r   )r   rT   r{   r5  )r  r   tagorders     r0   keyfuncz(Documenter.sort_members.<locals>.keyfuncY  s;    $Qx}22488;H#<<#h--@@@r2   c                    | d         j         S r  r   r  s    r0   r  z)Documenter.sort_members.<locals>.<lambda>^      1Q49 r2   r  r  r,   r   )r  r   r  )r:   r   r  r  r  s       @r0   r  zDocumenter.sort_membersL  s     K!I!IJJJJj   } .=1A A A A A A   W ---!4!4555r2   Nr  r  c                .   |                                  s3t                              t          d          | j        z  d           dS |                                 sdS |                                 }|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)          |                                 pg g           }	t-          | j                  r1|	s/t                              t          d          | j        d           |r|                                 sdS |                                 }
|                     d|
           	 |                                 }nH# t8          $ r;}t                              t          d	          | j        |d           Y d}~dS d}~ww xY w|                     |           |                     d|
           | xj        | j         z  c_        | !                    |           | "                    |           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   Nz$[autodoc] module analyzer failed: %s__file__r   zA mocked object is detected: %rz+error while formatting signature for %s: %s)#r  r   r   r   r   r   r  r  r   
for_moduler   rP  r   record_dependenciesaddrL  r   debugr3  r   sumrB  r   r_   r  r4  r   r*  r'  r   r:  r   content_indentrX  r  )r:   rM  r  r  r|  guess_modnamer  module___file__r   rC  r7  r+  s               r0   r  zDocumenter.generateb  s^       	NN I J J 	 !*	  + + +
 F !!## 	F --//!-!>	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    !$DLLNN$8b" = =
$+ 	6z 	6NN2?@@99  6 6 6  	$$&& ((**

 	b*%%%	''))CC 	 	 	NN2KLL=#I  ? ? ?FFFFF	 	!!#&&&b*%%% 	t** 	&&& 	k*****sC   <7C 
E
'AEE
8F 
FFI# #
J(-0J##J()r   r   r   r   r   r   r,   r   
r~   r   r   r   r   r6   r   r   r,   r6   )r   )r   r*   r   r   r   r   r,   r<   )r,   r   )r   r   r   r   r   r   r,   r<   
r   rc   r   r   r   r   r   r   r,   r   r,   r6   Fr  r6   r,   r6   r,   r   r  r   r,   r   r+  r   r,   r<   r,   r;  )rC  rD  r,   rE  rM  rN  r,   r<   rY  r6   r,   rZ  )rx   r]  rY  r6   r,   r^  r|  r6   r,   r<   r   r  r  r   r,   r  NNFF
rM  rN  r  rc   r  r6   r|  r6   r,   r<   )&rA   rB   rC   rD   r   r  r  r  titles_allowedrt   r   ra  r   classmethodr   r   propertyr   r   r   r  r   r  r  r  r  r#  r*  r:  rB  rJ  r4  rX  r\  r{  r  r  r  r/   r2   r0   r   r     s           GNHLN   K    
E E E E ' ' ' ['4 4 4 4 42 1 1 1 X1> > > >
' 
' 
' 
'# # # #J    ,N N N N      	6 	6 	6 	6	" 	" 	" 	"! ! ! !FG G G G,   & & & &0 0 0 0%4 %4 %4 %4N' ' ' 'c c c cJ+3 +3 +3 +3 +3Z   0 +/#'"!`+ `+ `+ `+ `+ `+ `+r2   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Zded<   d< fdZd= fdZed>d%            Zd?d,Zd@ fd-ZdAdB fd0ZdCd2ZdDd4ZdEd7ZdF fd;Z xZS )GModuleDocumenterz6
    Specialized Documenter subclass for modules.
    r   r   r   rx   undoc-membersr   inherited-membersshow-inheritancesynopsisplatform
deprecatedmember-orderexclude-membersry   rz   zimported-memberszignore-module-allno-valuer   r!   r   r   r   r,   r<   c                j     t                      j        |  t          | j                   d | _        d S r.   )r   r   r   ru   __all__r:   r   r   s     r0   r   zModuleDocumenter.__init__  s2    $T\***-1r2   rM  rN  c                   | j         }| xj         | j        z  c_         t                                          d            || _         |rCt	          |j        |j                  D ]*\  }}|                     ||d         |d                    )d S d S )Nr   r   )r   _extra_indentr   rX  rR  rS  rT  r   )r:   rM  
old_indentr   rW  r   s        r0   rX  zModuleDocumenter.add_content  s    [
t))D!!!  	4 !2L4FGG 4 4	cdCFCF3333	4 	44 4r2   r~   r   r   r   r6   r   c                    dS rH   r/   r   r~   r   r   r   s        r0   r   z$ModuleDocumenter.can_document_member  s	     ur2   r   rc   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   r:   r   r   r   r   s        r0   r   zModuleDocumenter.resolve_name  sE    NN2KLL )  + + +
d"B&&r2   c                    t                                                      }| j        s| j        r1t                              t          d          | j        z  d           |S )Nz@signature arguments or return annotation given for automodule %sr   r   )r   r  r   r   r   r   r   r   )r:   r  r   s     r0   r  zModuleDocumenter.parse_name  sl    gg  ""9 	+ 	+NN2 8 9 9;?=I )  + + + 
r2   Fr  c                L   t                                          |          }	 | j        j        st	          j        | j                  | _        nU# t          $ rH}t          
                    t          d          |j        d         | j        fz  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   ru   ignore_module_allr   getallr_   r  ri   r   r   r   r   r   )r:   r  r  r  r   s       r0   r   zModuleDocumenter.import_object  s    gg##J//	I<1 ;&~dk:: 	I 	I 	INN2 C D DHQK78>G  I I I I I I I I	I 
s   *A 
B!>BB!r+  c                h   t                               | |           |                                 }| j        j        r#|                     d| j        j        z   |           | j        j        r#|                     d| j        j        z   |           | j        j        r|                     d|           d S d S )Nz   :synopsis: z   :platform: z   :deprecated:)r   r:  r4  ru   r  r   r  r  )r:   r+  r7  s      r0   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88	9 	9r2   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   r1  )r   )r   rU  dirr_   r   r   r   r{   r   r  rk  r   getannotationsrl  )r:   rU  rx   r   valuer   s         r0   get_module_membersz#ModuleDocumenter.get_module_members  sC   = 	/III+-$$ 	 	D$T[$==%== .&u--E%MM2t*b99	 ,T5DIIiDXDX Y Y Y!    *4;77 	M 	MD7""%MM2t*b99	 ,T<7;yy7K7K!M !M !M s   A4B%%
B21B2rY  rZ  c           	        |                                  }|ry| j        #dt          |                                          fS |                                D ]}|j        | j        vrd|_        dt          |                                          fS | j        j        pg }g }|D ]d}||v r|                    ||                    "t          
                    t          d          t          | j        dd          |fz  d           ed|fS )NTFzHmissing attribute mentioned in :members: option: module %s, attribute %srA   z???r   r   )r  r  rQ  r  rA   r   ru   rx   r>   r   r   r   r   r_   )r:   rY  rx   r~   
memberlistr  r   s          r0   r\  z#ModuleDocumenter.get_object_members2  s6   ))++ 	|# T'.."2"23333%nn.. . .Fdl::)-d7>>#3#34444-3JC" 3 37??JJwt}----NN2 '@ $A $A$0j%$P$PRV#W$X )2 # 3 3 3 3 #:r2   r   r  r  c                2   |dk    rl| j         re| j         J | j         t                    t                    |                    d            d	fd}|                    |           |S t	                                          ||          S )
Nrf   c                    | d         j         S r  r  r  s    r0   r  z/ModuleDocumenter.sort_members.<locals>.<lambda>U  r  r2   r  r  r  r,   r   c                    | d         j                             d          d         }|v r                    |          S S r  )r   rT   r   )r  r   
module_allmodule_all_lenmodule_all_sets     r0   r  z.ModuleDocumenter.sort_members.<locals>.keyfuncX  sF    Qx}**4003>))%++D111))r2   r  )r  ra   r5  r  r   r  )r:   r   r  r  r  r  r  r   s       @@@r0   r  zModuleDocumenter.sort_membersL  s    J4<<+++J __N __N !4!4555* * * * * * * * )))77''U;;;r2   r   r   r,   r<   r  r  r  r  r  r  r  )r,   r  r  r  )rA   rB   rC   rD   r   r  r  rV   rt   rb   r1   rj   r\   r   ra  r   rX  r  r   r   r  r   r:  r  r\  r  r   r   s   @r0   r  r    s          GNM
>
#2K
K
!46N
 	K
 *4X
 	H	
 +K	

 	+

 .?@V
 	>
 ,=n
 	K
 *=k
 	K
 	;
K 
 
 
 
2 2 2 2 2 2
4 4 4 4 4 4    [
' ' ' '           9 9 9 9   6   4< < < < < < < < < <r2   r  c                      e Zd ZdZddZdS )ModuleLevelDocumenterzo
    Specialized Documenter subclass for objects on module level (functions,
    classes, data/constants).
    r   rc   r   r   r   r   r   r,   r   c                    ||||gz   fS |r|                     d          }|||gz   fS | j        j                            d          }|s| j        j                            d          }|||gz   fS )Nr   r~  	py:module)r   r   r  r{   ref_contextr  s        r0   r   z"ModuleLevelDocumenter.resolve_namej  s    Gtf,,, 	-kk#&&GGtf,,, ($(()9:: 	<h*..{;;G4&(((r2   Nr  rA   rB   rC   rD   r   r/   r2   r0   r  r  e  s2         ) ) ) ) ) )r2   r  c                      e Zd ZdZddZdS )ClassLevelDocumenterz_
    Specialized Documenter subclass for objects on class level (methods,
    attributes).
    r   rc   r   r   r   r   r   r,   r   c                   ||||gz   fS |r|                     d          }nH| j        j                            d          }|%| j        j                            d          }|d g fS |}|                    d          \  }}}|g}|s| j        j                            d          }|s| j        j                            d          }|||gz   fS )Nr   r  zpy:classr~  r  )r   r   r  r{   r  
rpartition)	r:   r   r   r   r   mod_clsmod_cls_sepr   s	            r0   r   z!ClassLevelDocumenter.resolve_name  s    Gtf,,, 	kk#&&GG
 x)--o>>H8/33J??#8OG#..s33c% 	?h(,,-=>>G 	<h*..{;;G4&(((r2   Nr  r  r/   r2   r0   r  r  |  s2         ) ) ) ) ) )r2   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   rd  c              3  $   K   | ]}|j         V  d S r.   )rA   rP   r   s     r0   	<genexpr>z:DocstringSignatureMixin._find_signature.<locals>.<genexpr>  s$      "O"OC3<"O"O"O"O"O"Or2   )NN\r1  r   (z) -> )r   rf  ClassDocumenterr>   hasattrr_   extendrd  rB  r  r  r   endswithr   r   r   r   r   r>  r?  r@  rA  r   r  )r:   valid_namesrC  r   r   doclinesjr   r   exmodr   r   r  r   r   r   rA  s                    r0   _find_signaturez'DocstringSignatureMixin._find_signature  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	*;DIIhqSTuvvFV<W<W<E+G +G$Q' >!6\FF $++,C,C,C6,C,CDDDD! " r2   c                `    | j         | j         S t                                                      S r.   )r  r   rB  r   s    r0   rB  zDocstringSignatureMixin.get_doc  s)    +''ww   r2   r  r   r   c                    |  | j         1| j        j        r%|                                 }||\  | _         | _         t                      j        di |}| j        rd                    |g| j        z             S |S )Nr1  r/   )	r   r   autodoc_docstring_signaturer  r   r   r*  r  r  )r:   r  r   r+  r   s       r0   r*  z(DocstringSignatureMixin.format_signature  s    IK;  ))++F!)/&	4;&egg&0000 	99cUT%55666Jr2   r,   r  r  r  )rA   rB   rC   rD   r  ra  r  r  rB  r*  r   r   s   @r0   r  r    s           /3O2222K2 2 2 2h! ! ! ! ! !
         r2   r  c                  $     e Zd ZdZd fdZ xZS )DocstringStripSignatureMixinzz
    Mixin for AttributeDocumenter to provide the
    feature of stripping any function signature from the docstring.
    r  r   r,   r   c                    | j         ,| j        j        r |                                 }|
|\  }| _         t                      j        di |S r!  )r   r   r  r  r   r   r*  )r:   r  r   _argsr   s       r0   r*  z-DocstringStripSignatureMixin.format_signature  s\    I7 
 ))++F! &,"t{'uww'11&111r2   r  )rA   rB   rC   rD   r*  r   r   s   @r0   r  r    sG         2 2 2 2 2 2 2 2 2 2r2   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 )'FunctionDocumenterz8
    Specialized Documenter subclass for functions.
    function   r~   r   r   r   r   r6   r   r,   c                    t          j        |          p<t          j        |          p(t          j        |          ot	          |t
                    S r.   )r   
isfunction	isbuiltin	isroutinerf  r  r  s        r0   r   z&FunctionDocumenter.can_document_member  sO     "6** Ug.?.G.G U"6**Sz&BR/S/S	Vr2   r  c                8   | j         j        dv r|                    dd           | j         j        dk    r|                    dd           	 | j        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_annotationFshortunqualified_typehintsT autodoc-before-process-signaturetype_aliases-Failed to get a function signature for %s: %sr   r  \\)r   autodoc_typehintsr|   autodoc_typehints_formatr   r   rH  r_   r   	signatureautodoc_type_aliasesr    r"  r   r   r   r   ri   strip_signature_backslashr   )r:   r  r+  r   r  s        r0   r  zFunctionDocumenter.format_args  s>   ;(,CCC/777;/7::5t<<<		HL@$+uUUU#DKdk>^___C&s55f55DD 	 	 	NN2MNN=#/ / /22222 	 	 	DDD	 ;0 	.<<f--Ds   AB% %
C5/.C##C54C5Fr|  r<   c                    d S r.   r/   r:   r|  s     r0   r  z#FunctionDocumenter.document_members)  r?   r2   r+  c                   |                                  }t                                          |           t          j        | j                  st          j        | j                  r|                     d|           d S d S )N
   :async:)r4  r   r:  r   iscoroutinefunctionr_   isasyncgenfunctionr   )r:   r+  r7  r   s      r0   r:  z'FunctionDocumenter.add_directive_header,  s{    ((**
$$S)))&t{33 	4w7QRVR]7^7^ 	4MM,
33333	4 	4r2   c                :   | j         j        dk    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}|                     |	|          }t/          ||
| j         j                  }t1          |fi |}|
                    |           Vd
                    |          S )Nr!  r"  Tr   r  Fr   r$  __globals__r1  r/   )r   r)  r|   r   r  r   	overloadsr(  r   r*  r>   r   is_singledispatch_functionr_   r   rT  annotate_to_first_argumentr  r   r*  r+  r   merge_default_valuer   r    )r:   r  sigs
overloadedr+  typfuncdispatchfuncr  actualr4  overloadr   s               r0   r*  z#FunctionDocumenter.format_signature3  s&   ;/7::5t<<<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&t{48K4TV V VF&t{M2FFK M3CHHT\4J4JK ! !33FHEE-h.2k.NP P *(==f==C    yyr2   r>  r   r?  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rQ  rD  r  r   r{   r   rB  r   r:   r>  r?  rD  r   paramactual_params          r0   r8  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6r2   r<  r   r;  r   Callable | 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.r$  r&  Nr   c                     d S r.   r/   r/   r2   r0   dummyz<FunctionDocumenter.annotate_to_first_argument.<locals>.dummyt      Dr2   
annotationrC  r   r*  r   r+  r"  r   r   r   r   ri   r5  rD  rQ  r  rQ  r   emptyr   __signature__rk  r:   r<  r;  r+  r  rN  paramss          r0   r7  z-FunctionDocumenter.annotate_to_first_argumentf  s`   	#Dt{7WXXXCC 	 	 	NN2MNN=#/ / /44444 	 	 	44	 s~!##4	 	 	 cn++--..!99?22q	))S)99F1I&)kk% '2 '' ''#"I.   tt ,    # 
A2.A!!A21A21D D#"D#r  r  r  r  r  r>  r   r?  r   r,   r   r<  r   r;  r   r,   rJ  )rA   rB   rC   rD   r   r  r  r   r  r  r:  r*  r8  r7  r   r   s   @r0   r  r    s          GLV V V [V   ,    4 4 4 4 4 4' ' ' ' ' 'R7 7 7 7       r2   r  c                  ,     e Zd ZdZdZdZd	 fdZ xZS )
DecoratorDocumenterzB
    Specialized Documenter subclass for decorator functions.
    	decoratorr   r  r   r,   r   c                F     t                      j        di |}d|v r|S dS )NrR   r   r/   )r   r  )r:   r  r   r   s      r0   r  zDecoratorDocumenter.format_args  s2    "uww",,V,,$;;K2r2   r  )rA   rB   rC   rD   r   r  r  r   r   s   @r0   r[  r[    sU          G H         r2   r[  zenum.EnumMeta.__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dZded<   dZdZd	ed
<   dZded<   d7 fdZed8d            Zd9d: fdZd;dZd<dZd= fd Zd< fd!Zd>d#Zd?d%Zd@ fd'ZdAd*ZdBd,ZdCd.ZdD fd1Zd9dE fd3Z 	 	 	 	 dFdG fd6Z! xZ"S )Hr  z6
    Specialized Documenter subclass for classes.
    rm      )rx   r  r   r  r  r  r  ry   rz   class-doc-fromr   r!   r      Nr   _signature_classr   r   _signature_method_namer   r,   r<   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   rz   )	r   r   r   autodoc_class_signatureru   r   rp  r>   r   r  s     r0   r   zClassDocumenter.__init__  s    $;.+==<,,..DL |+33<j2I.//,33I>>>,33J???T\*****r2   r~   r   r   r6   r   c                    t          |t                    p*|o(t          j        |          pt          |t                    S r.   )rf  r   r   	isNewTyper	   r  s        r0   r   z#ClassDocumenter.can_document_member  s?     &$'' SQ)&11PZ5P5P	Sr2   Fr  c                `   t                                          |          }|rt          | j        d          r!| j        d         | j        j        k    | _        nd| _        t          j        | j                  st          | j        t                    rt          | j        d| j                  }|| j        k    rr| j                            |          rX| j        t          |          d                              d                              d          }|| j        z   | _        || _        |S )NrA   r   TrB   r   )r   r   r  r_   r   rA   doc_as_attrr   ri  rf  r	   r3  r   rm  r5  rN   rT   )r:   r  r  r   basesr   s        r0   r   zClassDocumenter.import_object  s   gg##J//  
	+t{J// ($(L$48L$L  #'  -- +DK1Q1Q +!$+|T\JJdl**t|/F/Fw/O/O* LW7==cBBHHMME#(4<#7DL#*DL
r2   /tuple[Any | None, str | None, Signature | None]c                    t          j         j                  st           j        t                    rdS d fd}t           j        d          r.t           j        j        t                    rd d  j        j        fS  |t           j                  d	          }||j	         d
|j
         t          v rd }|j j        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 }|] j        j                            d|d           	 t          j        |d j        j                  } j        d|fS # t$          $ r Y nw xY w | j        d          }|] j        j                            d|d           	 t          j        |d j        j                  } j        d|fS # t$          $ r Y nw xY w j        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 )zF Get the `attr` function or method from `obj`, if it is user-defined. N)r   is_builtin_class_methodr   ismethodr  )r   ro  r:   s     r0   #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Kr2   rT  __call__r   r#  Tbound_methodr%  rf  r   F)r   r   ro  r   r,   r   )r   ri  r_   rf  r	   r  rT  r   r   rB   rC   _METACLASS_CALL_BLACKLISTr   r   rH  r*  r   r+  ri   _CLASS_NEW_BLACKLIST)r:   rs  callr+  newrn   s   `     r0   _get_signaturezClassDocumenter._get_signature  s+   T[)) 	$ZW-M-M 	$##	 	 	 	 	 	 DK11 	94;4i@@	9t{888 3243D3DjQQ/77D$577;TTTHL@$MMM'459[5UW W WDK((*c99    21$+yII?.553#3559MMM?HL@#tLLL'$59[5UW W W{Is22    324;
KKHL@$MMM'459[5UW W W{J33    	<dk5QQQ	#DKe151QS S SCs?" 	 	 	D	
  sH   7D 
D#"D#7*F" "
F/.F/'*H 
HH	*I4 4
J Jr  c                   | j         j        dv r|                    dd           | j         j        dk    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 )
Nr  r   Fr!  r"  Tz0Failed to get a constructor signature for %s: %sr   show_return_annotation)r   r(  r|   r)  r{  rb  r"  r   r   r   r   rc  r    )r:   r  rc  r+  r  s        r0   r  zClassDocumenter.format_args4  s    ;(,CCC/777;/7::5t<<<	AEATATAVAV>D!#933 	 	 	NN2PQQ=#/ / /22222		
 '=&B#;2"3OOuOOOOs   A* *
B-4.B((B-r  c                    t                                                      }|
|d         d f}t          | j                  D ],\  }}|                    d          r|d d         | j        |<   -|S )Nr   z -> Nonei)r   r  r   r  r  )r:   r   r   r+  r   s       r0   r  zClassDocumenter._find_signatureH  s{    ((**Qi&F 011 	/ 	/FAs||J'' / '*#2#h #r2   c                   | j         rdS | j        j        dk    rdS | j        j        dk    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   re  r!  r"  Tr  r4  r   )rD  return_annotationr1  )rk  r   rg  r)  r|   r   r*  get_overloaded_signaturesr(  r   rb  rc  r   r+  rQ  rD  r  r   r   rS  r    r>   r  )
r:   r  r+  r9  r5  methodr4  r?  rD  r   s
            r0   r*  z ClassDocumenter.format_signatureV  s    	2;.+==2;/7::5t<<<gg&&((2244	 	6&@@!$"79TVZ[[F&v}bAAK% ! !-h.2k.NP P "("5"<"<">">??
#++z!""~>Go , O O)(==f==C    ! KKyyr2   list[Signature]c                d   | j         r| j        r| j         j        D ]}	 t          j        |j                  }|                                 d                    |j        | j        g          }||j	        v r|j	        
                    |g           c S ||j        v rg c S # t          $ r Y w xY wg S )Nr   )rb  rc  rd  r   r  rB   analyzer  rC   r5  r{   r  r   )r:   r   r   qualnames       r0   r  z)ClassDocumenter.get_overloaded_signaturesv  s      	T%@ 	,4  
-8HHH$$&&&"xx)94;V(WXXH8#555'155hCCCCC!X%666!			 7 #   D 	s   A1B 
B  
B-,B-rc   c                    t          | j        d| j                  }t          | j        dd           }|t          | j        dd           }|rd|v rd }|r|rd                    ||g          S d S )NrB   rC   rA   z<locals>r   )r   r_   r   r  )r:   __modname__rC   s      r0   get_canonical_fullnamez&ClassDocumenter.get_canonical_fullname  s    "4;dlKK#DKFF'ZFFL 	 J,66L 	< 	88[,78884r2   r+  c                   |                                  }| j        rd| _        t                                          |           t          j        | j                  st          | j        t                    rd S | j
        r<d                    | j                  | j
        j        v r|                     d|           |                                 }| j        s?t          j        | j                  s&|r$| j        |k    r|                     d|z  |           | j        sM| j        j        rBt          j        | j                  rt)          | j        j                  }nJt-          | j        d          r3t/          | j        j                  rt)          | j        j                  }ng }| j        j                            d| j        | j        | j        |           | j        j        dk    rd |D             }nd	 |D             }|                                  }|                     d
|           |                     dt=          d          d                    |          z  z   |           d S d S d S )N	attributer   
   :final:z   :canonical: %s	__bases__autodoc-process-basesr!  c                .    g | ]}t          |d           S )smartr#   r  s     r0   rQ   z8ClassDocumenter.add_directive_header.<locals>.<listcomp>  s"    GGG#W 5 5GGGr2   c                ,    g | ]}t          |          S r/   r  r  s     r0   rQ   z8ClassDocumenter.add_directive_header.<locals>.<listcomp>  s    >>>>>>r2   r   r   z	Bases: %s, )r4  rk  r/  r   r:  r   ri  r_   rf  r	   r   r  r   finalsr   r  r   ru   show_inheritancegetorigbasesrQ  __orig_bases__r  r5  r  r   r(  rH  r   r)  r   )r:   r+  r7  canonical_fullnamerl  base_classesr   s         r0   r:  z$ClassDocumenter.add_directive_header  sq   ((**
 	-!,D$$S)))T[)) 	ZW-M-M 	F= 	4SXXdl33t}7KKKMM,
333!88::  	P):4;)G)G 	P&	P+/=<N+N+N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HO  !8!%T\5R R R {3w>>GGGGG>>>>>,,..JMM"j)))MM%!K..499\3J3J"JJJWWWWW+	X 	X 	X 	Xr2   rY  rZ  c                    t           j         j         j         j        j                  }|sx j        j        sdg fS g } j        j        D ]U}||v r|                    ||                    "t          
                    t          d          | j        fz  d           Vd|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   r_   )rP   mr:   s     r0   rQ   z6ClassDocumenter.get_object_members.<locals>.<listcomp>  s'    RRR!(dk:Q:Q1:Q:Q:Qr2   )r   r_   r   r   r   r=  ru   rx   r>   r   r   r   r   rb  rQ  r  )r:   rY  rx   selectedr   s   `    r0   r\  z"ClassDocumenter.get_object_members  s%   #DKt}$(K$JL L 	S<' !by H, J J7??OOGDM2222NN2&I#J#J$($-#8$9?H # J J J J(?"\+ 	S$w~~//0000RRRRgnn&6&6RRRRRr2   r;  c                
   t          | j        t                    r| j        j        t          j        k    rg S t          j        d d         dk     rQt          j        | j                  st          | j        t                    r| j        	                    d          
                    d          }| j        }t          t          |                    D ]}d                    |d t          |          |z
                     }|t          |          |z
  d          |z   }	 t          j        |          }|                                 d|d         f}t%          |j                            |g                     }|r|| _        || _        |gc S # t*          $ r Y w xY w| j        r|                                 rg S d S t1          | dd           }	|	|	S | j                            d| j        j                  }
g }t9          | j        | j                  }|r|                    |           |
dv r)|                     | j        d	d           }t9          || j        | j        j        | j        d	          }|>|t          j         j        k    s'|	                                t          j         j        k    rd }|s|                     | j        d
d           }t9          || 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`  )rl   rn   r   rf  rn   c                0    g | ]}t          |          S r/   )r   )rP   r   rA  s     r0   rQ   z+ClassDocumenter.get_doc.<locals>.<listcomp>  s$    TTTI!)Y77TTTr2   )'rf  r_   r	   rD   sysversion_infor   ri  r   rN   rT   r   ranger5  r  r   r  r  rQ  rU  r{   r   rk  get_variable_commentr3  ru   r   autoclass_contentr   r   r>   r=  r   rf  r   r>  r?  r@  rA  )r:   partsorig_objpathr   new_modnamenew_objpathr   r}   commentr   classdoc_fromrC  attrdocstringr   initdocstringrf  rA  s                   @r0   rB  zClassDocumenter.get_doc  s   dk7++ 	{"go55	BQB')) -- DK1Q1Q **3//55c::#|s5zz**  A"%((5#e**q.+A"B"BK"'E

Q"8<"GK
#1#<[#I#I ((***!;r?3"&x'9'='=c2'F'F"G"G" -+6DL+6DL$+9,,,- '    	((** 	t/66L(()94;;XYY
t{DM:: 	-m,,, ,,,}}T[*dCCH"8T]#';#I#';
< <M )&/"999$$&&&/*AAA $  
)--YEE &w'+{'M'+{I!? !? "-"fn&<<<"((**fn.DDD$(M 5 F**"/JJ%%m444N(1:D	TTTTTTTTs   "A,F
FF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   rk  r   r  r   r  r  rQ  rU  r{   r   )r:   r}   r   s      r0   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/rM  rN  c                *   t          j        | j                  rg| j        j        dk    rt          | j        j        d          }nt          | j        j                  }t          t          d          |z  dgd          }t          | j        t                    r_t          | j        j                  g}| j        j        D ]X}| j        j        dk    r$|                    t          |d                     6|                    t          |                     Y| j        j        r\| j        j        dk    rt          | j        j        d          }nt          | 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	 t/          j        | j                  | _        | j                                         n# t6          $ r Y nw xY w| j        r|                                 sn	 | j        j        dk    rt          | j        d          }nt          | j                  }t          t          d          |z  gd          }n# t:          $ r Y nw xY wt=                                          |           d S )Nr!  r  alias of %sr   )r   zbound=\ zcovariant=Truezcontravariant=Truezalias of TypeVar(%s)r  ) r   ri  r_   r   r)  r#   __supertype__r
   r   rf  r	   reprrA   __constraints__r>   r$   	__bound____covariant____contravariant__r  rk  r   r  r   r  r   r  r   r  rk  r   rX  )r:   rM  	supertypeattrs
constraintboundaliasr   s          r0   rX  zClassDocumenter.add_content'  s   T[)) 	U{3w>>#DK$=wGG		#DK$=>>	%q'7'7)'CR&HQSTTTLdk7++ 	$+.//0E"k9 C C
;77BBLL!5j'!J!JKKKKLL!5j!A!ABBBB{$ 2;77BB#DK$97CCEE#DK$9::E[50111{( /-...{, 31222%)**TYYu-=-==rB  L  	0E0E0G0G G G . 9$, G G%%''''     	D$=$=$?$? 	;77BB#DK99EE#DK00E)1]+;+;e+C*DRPPP!    	L)))))s%   !7I 
I&%I&AK" "
K/.K/r|  c                \    | j         rd S t                                          |           d S r.   )rk  r   r  )r:   r|  r   s     r0   r  z ClassDocumenter.document_membersY  s1     	F  -----r2   r  r  c                L    t                                          |||          S )N)rM  r  r|  )r   r  )r:   rM  r  r  r|  r   s        r0   r  zClassDocumenter.generate^  s.     ww\-9,7   9 9 	9r2   r  r  r  r  )r,   rm  r  r  )r,   r  )r,   rc   r  r  r  )r,   r  r  r  r  r  )#rA   rB   rC   rD   r   r  rV   rt   rb   rj   r\   ro   r   ra  r  rb  rc  r   r  r   r   r{  r  r  r*  r  r  r:  r\  rB  r  rX  r  r  r   r   s   @r0   r  r    s}          GL!K6N'9L1)n/ K     H     "$$$$$+ + + + + + S S S [S
      "P  P  P  P dP P P P(          @   "   (X (X (X (X (X (XTS S S S(FU FU FU FUP
 
 
 
0* 0* 0* 0* 0* 0*d. . . . . . . +/#'"!9 9 9 9 9 9 9 9 9 9 9r2   r  c                  F    e Zd ZdZdZdZej        dz   Zedd            Z	dS )ExceptionDocumenterz>
    Specialized ClassDocumenter subclass for exceptions.
    	exceptionr     r~   r   r   r   r   r6   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.)rf  r   
issubclassBaseExceptionr"  rA   ri   )r   r~   r   r   r   r  r   s          r0   r   z'ExceptionDocumenter.can_document_membery  s    
	+fd++Q
6=0Q0QQ 	+ 	+ 	+
 < I If I I)I I I  S//s*	+s   ), 
A AANr  )
rA   rB   rC   rD   r   r  r  r  r  r   r/   r2   r0   r  r  o  sW          GL '!+H+ + + [+ + +r2   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   r_   r   r   r,   r6   c                    dS )z,Check directive header should be suppressed.Fr/   r   s    r0    should_suppress_directive_headerz8DataDocumenterMixinBase.should_suppress_directive_header      ur2   c                    dS )z*Check :value: header should be suppressed.Fr/   r   s    r0   should_suppress_value_headerz4DataDocumenterMixinBase.should_suppress_value_header  r  r2   rM  r
   r<   c                    dS )z4Update docstring, for example with TypeVar variance.Nr/   )r:   rM  s     r0   update_contentz&DataDocumenterMixinBase.update_content  s    r2   Nr  rM  r
   r,   r<   )rA   rB   rC   ra  r  r  r  r/   r2   r0   r  r    s         NNNLLLKKKKKK           r2   r  c                  0     e Zd ZdZd	 fdZd
 fdZ xZS )GenericAliasMixinzt
    Mixin for DataDocumenter and AttributeDocumenter to provide the feature for
    supporting GenericAliases.
    r,   r6   c                v    t          j        | j                  pt                                                      S r.   )r   isgenericaliasr_   r   r  r   s    r0   r  z2GenericAliasMixin.should_suppress_directive_header  s0    &t{33 ;88::	<r2   rM  r
   r<   c                h   t          j        | j                  rv| j        j        dk    rt          | j        d          }nt          | j                  }|                    t          d          |z  d           |                    dd           t                      	                    |           d S )Nr!  r  r  r   )
r   r  r_   r   r)  r#   r>   r   r   r  )r:   rM  r  r   s      r0   r  z GenericAliasMixin.update_content  s    !$+.. 	({3w>>W55,,- 0 05 8"===B'''|,,,,,r2   r  r  )rA   rB   rC   rD   r  r  r   r   s   @r0   r  r    se         
< < < < < <
- 
- 
- 
- 
- 
- 
- 
- 
- 
-r2   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  r6   r,   c                h   	 t                                          d          S # t          $ r}	 t          | j        j                  5  t          | j        | j        j                  }t          |d | j        j
                  }| 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  r   r   r   r   r  F)r   r   r  r   r   r  r   r   r  r"   r+  r   UNINITIALIZED_ATTRr_   r   r   r   r   r   r  )r:   r  r  r   r   r   s        r0   r   z.UninitializedGlobalVariableMixin.import_object  s   	77((D(999 	 	 	
$+:;; $ $*4<9[\\F"0151Q#S #SK|B';66&8&,#$ $ $ $ $ $ $ $ $ $ $ $ 7	$ $ $ $ $ $ $ $ $ $ $ $ $ $ $      NN38A;YNPPPH  """55555%	s^   !% D1C
AC(C:CC
	
CC
	CD,
CD,CAD,,D1c                `    | j         t          u pt                                                      S r.   r_   r  r   r  r   s    r0   r  z=UninitializedGlobalVariableMixin.should_suppress_value_header  +    11 74466	8r2   r;  c                d    | j         t          u rg S t                                                      S r.   r_   r  r   rB  r   s    r0   rB  z(UninitializedGlobalVariableMixin.get_doc  s*    ;,,,I77??$$$r2   r  r  r  r  rA   rB   rC   rD   r   r  rB  r   r   s   @r0   r  r    s         
      .8 8 8 8 8 8% % % % % % % % % %r2   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d. fd!Zd/ fd$Z xZS )0DataDocumenterz9
    Specialized Documenter subclass for data items.
    rS  (   ir!   r   rQ  r  r~   r   r   r   r   r6   r   r,   c                0    t          |t                    o|S r.   )rf  r  r  s        r0   r   z"DataDocumenter.can_document_member  s     &"233>>r2   r<   c                6   t          t          j        |                    }||_        	 t	          j        | j                  }|                                 |j        	                                D ]\  \  }}}|dk    r	||vr|||<   dS # t          $ r Y dS w xY w)9Update __annotations__ to support type_comment and so on.r   N)rv   r   r  ra  r   r  r   r  r   rT  r   )r:   r   r   r   	classnameattrnamerQ  s          r0   update_annotationsz!DataDocumenter.update_annotations  s    71&99::!,	%0>>H5=5I5O5O5Q5Q 7 71%Hz??x{'B'B,6K)7 7  	 	 	DD	s   AB
 

BBFr  c                    t                                          |          }| j        r|                     | j                   |S r.   )r   r   r   r  r:   r  r  r   s      r0   r   zDataDocumenter.import_object  s?    gg##J//; 	1##DK000
r2   c                    t                                                      rdS |                                 pg }t          d                    t          |g                               \  }}d|v rdS dS NTr1  z
hide-valueFr   r  rB  r   r  r  r:   rt  r   rv  r   s       r0   r  z+DataDocumenter.should_suppress_value_header  sm    77//11 	4,,..&BC"3DIIc#rll4K4K"L"LIxx''tur2   r+  c                   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                  }| j        d         |v r|| j        j        dk    r*t           |j        | j        d                   d          }n)t           |j        | j        d                   d          }|                     d|z   |           	 | j        j        s(|                                 st'          | j                  rd S t+          | j                  }|                     d|z   |           d S # t,          $ r Y d S w xY w	Nz   :annotation: %sr  r   r!  r  fully-qualified-except-typing
   :type: z   :value: r   r:  r4  ru   rQ  rq   r  r   r   r(  r"   r   r+  r   r)  r$   r{   no_valuer  r   r_   r   ri   r:   r+  r7  r   objreprr   s        r0   r:  z#DataDocumenter.add_directive_header  s   $$S)))((**
<"h..$2W2W2Y2Y.D\$ 	MM.1HH$& & & & & {,66,T[$-1[-MO O<#{22{;wFF"6{t|TVGW7X7X7>#@ #@ #7{t|TVGW7X7X7V#X #XMM,"8*EEEL) GT-N-N-P-P Gt{++GD0==GMM-'"9:FFFFF      4F2 -F2 2
G ?G r|  c                    d S r.   r/   r.  s     r0   r  zDataDocumenter.document_members/  r?   r2   c                Z    |                      | j        p| j        dd           }|p| j        S NrB   r   r   r_   r   r:   r  s     r0   r  zDataDocumenter.get_real_modname2  -    }}T[%?DKtTT+t|+r2   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  rU  rQ  r   )r:   r  r   r}   s       r0   get_module_commentz!DataDocumenter.get_module_comment6  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   rB  )r:   r  r   s     r0   rB  zDataDocumenter.get_docB  sA    ))$,r*:;; 	%977??$$$r2   rM  rN  c                    d | _         |st                      }|                     |           t                                          |           d S r.   r   r
   r  r   rX  r:   rM  r   s     r0   rX  zDataDocumenter.add_contentJ  sO      	(%<<LL)))L)))))r2   r  r   r   r,   r<   r  r  r  r  r  r  )r  r   r,   r  r  r  )rA   rB   rC   rD   r   r  r  rv   r  r   ra  rr   rt   r  r   r  r   r  r:  r  r  r   rB  rX  r   r   s   @r0   r  r    s~          GLH"d#8#DEEKEEEE 1K)K
? ? ? [?         	 	 	 	 	 	     @    , , , ,
 
 
 
% % % % % %	* 	* 	* 	* 	* 	* 	* 	* 	* 	*r2   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 ).MethodDocumenterzQ
    Specialized Documenter subclass for methods (normal, static and class).
    r  2   r   r~   r   r   r   r   r6   r   r,   c                V    t          j        |          ot          |t                     S r.   )r   r  rf  r  r  s        r0   r   z$MethodDocumenter.can_document_member_  s(      ((UFDT1U1U-UUr2   Fr  c                4   t                                          |          }|s|S | j        j                            | j                  }|| j        }t          j        |          s!t          j	        || j        | j                  r| j
        dz
  | _
        |S )Nr   r   r   )r   r   r   re  r{   r   r_   r   isclassmethodisstaticmethodr  )r:   r  r  r   r   s       r0   r   zMethodDocumenter.import_objectd  s    gg##J// 	J k"&&t'788;+C!#&& 	6&s$BRSSS	6 !% 1A 5D
r2   r  c                p   | j         j        dv r|                    dd           | j         j        dk    r|                    dd           	 | j        t          j        k    r| j        t          k    rd}nt          j        | j        | j        | j	                  rM| j
        j                            d	| j        d           t          j        | j        d| j         j        
          }nL| j
        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 )Nr  r   Fr!  r"  Tz()r  r#  ru  +Failed to get a method signature for %s: %sr   r  r'  )r   r(  r|   r)  r_   r   r   r   r  r   r   r   rH  r*  r+  r    r"  r   r   r   r   ri   r,  r   )r:   r  r   r+  r  s        r0   r  zMethodDocumenter.format_argsu  s   ;(,CCC/777;/7::5t<<<	{fo--$+2G2G
 )$+4;TM]^^^ [HL%%&H$+W\]]]!+DKe9=9Y[ [ [CC HL%%&H$+W[\\\!+DKd9=9Y[ [ [C*399&99 	 	 	NN2KLL=#/ / /22222 	 	 	DDD	 ;0 	.<<f--Ds   C4E 
F.E??FFr+  r<   c                   t                                          |           |                                 }| j        j                            | j        | j                  }t          j	        |          r| 
                    d|           t          j        |          st          j        |          r| 
                    d|           t          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:r0     :classmethod:r  z   :staticmethod:r   r  )r   r:  r4  r   re  r{   r   r_   r   isabstractmethodr   r1  r2  r  r  r   r  r   r  )r:   r+  r7  r   r   s       r0   r:  z%MethodDocumenter.add_directive_header  sY   $$S)))((**
k"&&t'7EE#C(( 	=MM/<<<&s++ 	4w/I#/N/N 	4MM,
333 %% 	: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Kr2   r|  c                    d S r.   r/   r.  s     r0   r  z!MethodDocumenter.document_members  r?   r2   c                   | j         j        dk    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|                     ||          }|rWt+          | 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        
          }
t7          | j        di           }| j        j        d                    | j                           D ]}|                     |
|          }t;          ||| j         j                  }t          j        | j        | j        | j        	          sDt=          |j                                                   }|!                    |dd                    }tE          |fi |}|
                    |           d                    |          S )Nr!  r"  Tr   r  Fr   r   r  ru  r4  r   rC  r1  r/   )#r   r)  r|   r   r  r   r5  r(  r   r*  r>   r   re  r{   r   is_singledispatch_method
dispatcherr   rT  r_   r7  r  r   r  r   r*  r+  r   r8  r   rQ  rD  r  r   r    )r:   r  r9  r:  r+  methr;  r<  dispatchmethr  r>  r4  r?  rD  r   s                 r0   r*  z!MethodDocumenter.format_signature  s   ;/7::5t<<<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&==#'#B#B4#M#ML# C%5dnb%I%I
,0K
),8
).0T
*J$?$?$A$ABBB 	!$-3%dkt{IYZZZ Z *4;U8<8XZ Z Z !*4;T8<8XZ Z Z 't{M2FFK M3CHHT\4J4JK 
! 
!33FHEE-h.2k.NP P -dkt{373CE E E K!%h&9&@&@&B&B!C!CJ'//:abb>/JJH)(==f==C    yyr2   r>  r   r?  c                8   t          |j                                                  }t          |          D ]O\  }}|j                            |j                  }|r)|j        dk    r|                    |j                  ||<   P|                    |          S rA  rE  rF  s          r0   r8  z$MethodDocumenter.merge_default_value  rI  r2   r<  r   r;  r   rJ  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 )rL  r$  r  Nr   c                     d S r.   r/   r/   r2   r0   rN  z:MethodDocumenter.annotate_to_first_argument.<locals>.dummy  rO  r2   rP  rC  rR  rU  s          r0   r7  z+MethodDocumenter.annotate_to_first_argument  s`   	#Dt{7WXXXCC 	 	 	NN2KLL=#/ / /44444 	 	 	44	 s~!##4	 	 	 cn++--..!99?22q	))S)99F1I&)kk% '2 '' ''#"I.   tt rW  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   )tabsizerf  )r  r   r   r_   r   r   r=  r   r   r   rD   rN   r   r>  r?  r@  rA  r   rf  r   rB  )r:   r   rA  r   s      r0   rB  zMethodDocumenter.get_doc	  s{   +
 ''<z))t{DM#{E#{D,<> >I %fo555""fo&=== 	  N09BL	))YGGGHH	\"**t{DM#{E#{D,<> >I %fn444""fn&<<< 	  N09BL	))YGGGHH	77??$$$r2   r  r  r  r  r  r  rX  rY  r  )rA   rB   rC   rD   r   r/  r  r  r  r   r   r  r:  r  r*  r8  r7  rB  r   r   s   @r0   r  r  V  s5         GMLHV V V [V      "! ! ! !F4 4 4 4 4 4     2 2 2 2 2 2h7 7 7 7   <"% "% "% "% "% "% "% "% "% "%r2   r  c                  >     e Zd ZdZd
d fdZd fdZd fd	Z xZS )NonDataDescriptorMixina  
    Mixin 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  r6   r,   c                    t                                          |          }|r!t          j        | j                  sd| _        nd| _        |S )NTF)r   r   r   isattributedescriptorr_   non_data_descriptorr  s      r0   r   z$NonDataDescriptorMixin.import_object5	  sN    gg##J// 	-w4T[AA 	-'+D$$',D$
r2   c                h    t          | dd           pt                                                      S Nr#  F)r3  r   r  r   s    r0   r  z3NonDataDescriptorMixin.should_suppress_value_header>	  s3    D"7??? ;88::	<r2   r;  c                j    t          | dd          rd S t                                                      S r%  )r3  r   rB  r   s    r0   rB  zNonDataDescriptorMixin.get_docB	  s3    4.66 	% 477??$$$r2   r  r  r  r  r  r   s   @r0   r   r   ,	  s               < < < < < <% % % % % % % % % %r2   r   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 )
SlotsMixinzX
    Mixin for AttributeDocumenter to provide the feature for supporting __slots__.
    r,   r6   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   ri   r"  )r:   parent___slots__s     r0   isslotsattributezSlotsMixin.isslotsattributeP	  sa    	#*#3DK#@#@@ |B'+;;;uI& 	 	 	55	s   ). AAFr  c                    t                                          |          }|                                 rt          | _        |S r.   )r   r   r,  	SLOTSATTRr_   r  s      r0   r   zSlotsMixin.import_objectZ	  s:    gg##J//  "" 	$#DK
r2   c                d    | j         t          u rdS t                                                      S r8   )r_   r.  r   r  r   s    r0   r  z'SlotsMixin.should_suppress_value_headera	  s+    ;)##47777999r2   r;  c                   | j         t          u r	 t          j        | j                  }|rC|                    | j        d                   r#t          || j        d                            }|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   )r_   r.  r   r*  r   r{   r   r   ri   r   r   r   rC   r   rB  )r:   r+  r   r  r   s       r0   rB  zSlotsMixin.get_docg	  s    ;)##
#*#3DK#@#@ # (8(<(<T\"=M(N(N  12B4<PRCS2T U UI%;&I   r"KLL $ 8#>Y  P P P						
 77??$$$s$   AA1 /A1 1
B=;7B82B=8B=r  r  r  r  )	rA   rB   rC   rD   r,  r   r  rB  r   r   s   @r0   r(  r(  K	  s                  : : : : : :% % % % % % % % % %r2   r(  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 )RuntimeInstanceAttributeMixina1  
    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,   r6   c                z    |                      || j        d                   rdS |                     |          rdS dS )z8Check the subject is an attribute defined in __init__().r   TF)get_attribute_commentr   +is_runtime_instance_attribute_not_commented)r:   r   s     r0   is_runtime_instance_attributez;RuntimeInstanceAttributeMixin.is_runtime_instance_attribute	  sH     %%fdl2.>?? 	4;;FCC 	4ur2   c                b   t          j        |          D ]}	 t          |d          }t          |d          }t          j        |          }|                                 |r5| j        r.d                    || j        d         g          }||j        v r dS # t          t          f$ r Y w xY wdS )zHCheck the subject is an attribute defined in __init__() without comment.rB   rC   r   r   TF)r   getmror   r   r  r  r   r  r  rk  r   )r:   r   r   r   r  r   r}   s          r0   r5  zIRuntimeInstanceAttributeMixin.is_runtime_instance_attribute_not_commented	  s    >&)) 	 	C%c<88'^<<)4V<<  """ $ $((Hdl2.>#?@@Ch///#tt"K0    us   A<BB,+B,Fr  c           	     z   	 t                                          d          S # t          $ r
}	 t          | j        j                  5  t          | j        | j        dd         d| j        | j        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)z`Check the existence of runtime instance attribute after failing to import the
        attribute.Tr  Nr   rm   r	  r  r   r   r   r  F)r   r   r  r   r   r  r   r   r   r  r6  RUNTIME_INSTANCE_ATTRIBUTEr_   r   r   r   r   r   r  r:   r  r  r  r   r   s        r0   r   z+RuntimeInstanceAttributeMixin.import_object	  s   	77((D(999 	 	 	$+:;; $ $'dl3B36G37=7;{7Y[ [ [C !VF99&AA $&*&E&,#$ $ $ $ $ $ $ $ $ $ $ $
$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $      NN38A;YNPPPH  """55555%	s^   !% D:C
A'C1CCC	CC	CD5
C(%D5'C((AD55D:c                `    | j         | j        u pt                                                      S r.   )r_   r:  r   r  r   s    r0   r  z:RuntimeInstanceAttributeMixin.should_suppress_value_header	  s-    t>> 74466	8r2   r;  c                    | j         | j        u r|                     | j                  rd S t	                                                      S r.   )r_   r:  r5  r   r   rB  r   s    r0   rB  z%RuntimeInstanceAttributeMixin.get_doc	  sD    K4:::@@MM ;477??$$$r2   r   r   r,   r6   r  r  r  r  )rA   rB   rC   rD   r_   r:  r6  r5  r   r  rB  r   r   s   @r0   r2  r2  x	  s        	 	 "(      $      28 8 8 8 8 8% % % % % % % % % %r2   r2  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 )#UninitializedInstanceAttributeMixinz
    Mixin 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,   r6   c                V    t          |d| j        j                  }| j        d         |v S )z2Check the subject is an annotation only attribute.Nr   )r"   r   r+  r   )r:   r   r   s      r0   #is_uninitialized_instance_attributezGUninitializedInstanceAttributeMixin.is_uninitialized_instance_attribute	  s*    $VT4;3STT|B;..r2   Fr  c                   	 t                                          d          S # t          $ r}	 t          | j        | j        dd         d| j        | j        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)eCheck the exisitence of uninitialized instance attribute when failed to import
        the attribute.Tr  Nr   rm   r	  r  r   r   r   r  F)r   r   r  r   r   r   r   r  rB  r  r_   r   r   r   r   r   r  r;  s        r0   r   z1UninitializedInstanceAttributeMixin.import_object	  s-   	77((D(999 	 	 	
#DL$,ss2CW/3}37;3UW W W Q;;FCC  "4DK"(DK44444       NN38A;YNPPPH  """55555#	s4   !% 
C;A%BC6
B)&C6(B))AC66C;c                `    | j         t          u pt                                                      S r.   r  r   s    r0   r  z@UninitializedInstanceAttributeMixin.should_suppress_value_header	  r  r2   r;  c                d    | j         t          u rd S t                                                      S r.   r  r   s    r0   rB  z+UninitializedInstanceAttributeMixin.get_doc	  s*    ;,,,4ww   r2   r>  r  r  r  r  )	rA   rB   rC   rD   rB  r   r  rB  r   r   s   @r0   r@  r@  	  s         / / / /
      08 8 8 8 8 8! ! ! ! ! ! ! ! ! !r2   r@  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d. fdZd/ fdZd0d!Zd1 fd#Zd2 fd&Z xZS )3AttributeDocumenterz9
    Specialized Documenter subclass for attributes.
    r  <   r!   r   rQ  r  r  r   r   r,   r6   c                z    t          j        |           p't          j        |           pt          j        |           S r.   )r   r  r  rr  )r   s    r0   is_function_or_methodz)AttributeDocumenter.is_function_or_method	
  s4    !#&&Y'*;C*@*@YGDTUXDYDYYr2   r~   r   r   r   r   c                    t          |t                    rdS t          j        |          rdS t          j        |          st          |t
                    sdS dS )NFT)rf  r  r   r"  r  r   r  s        r0   r   z'AttributeDocumenter.can_document_member
  sb     f.// 	5(00 	4 (( 	FD1I1I 	4ur2   Fr|  r<   c                    d S r.   r/   r.  s     r0   r  z$AttributeDocumenter.document_members
  r?   r2   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  rB   rC   N)rv   r   r  ra  r8  r   r   r  r  r   rT  rk  r   r"  )
r:   r   r   r   r   r  r   r  r  rQ  s
             r0   r  z&AttributeDocumenter.update_annotations
  s,   	w5f==>>K%0F"~f--  
)#|<<F+C@@H-8@@H$$&&&=E=Q=W=W=Y=Y ? ?9-Hz$00X[5P5P4>K1? '4   D  	* 	 	 	DD	s6   >C A9B;:C ;CC CC C)(C)r  c                    t                                          |          }t          j        | j                  r| j        j        | _        | j        r|                     | j                   |S r.   )r   r   r   isenumattributer_   r  r   r  r  s      r0   r   z!AttributeDocumenter.import_object1
  s`    gg##J//"4;// 	,++DK; 	1##DK000
r2   c                Z    |                      | j        p| j        dd           }|p| j        S r  r  r  s     r0   r  z$AttributeDocumenter.get_real_modname:
  r  r2   c                    t                                                      rdS |                                 }|r9t          d                    t          |g                               \  }}d|v rdS dS r  r  r  s       r0   r  z0AttributeDocumenter.should_suppress_value_header>
  sp    77//11 	 4,,..C  &7		#c2,,8O8O&P&P#	88++4ur2   r+  c                   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                  }| j        d         |v r|| j        j        dk    r*t           |j        | j        d                   d          }n)t           |j        | j        d                   d          }|                     d|z   |           	 | j        j        s(|                                 st'          | j                  rd S t+          | j                  }|                     d|z   |           d S # t,          $ r Y d S w xY wr  r  r  s        r0   r:  z(AttributeDocumenter.add_directive_headerJ
  s   $$S)))((**
<"h..$2W2W2Y2Y.D\$ 	MM.1HH*UUUUU{,66,T[$-1[-MO O<#{22{;wFF"6{t|TVGW7X7X7>#@ #@ #7{t|TVGW7X7X7V#X #XMM,"8*EEEL) GT-N-N-P-P Gt{++GD0==GMM-'"9:FFFFF   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 )NrB   rC   )r   r8  r   r   r  r  r   rU  rQ  rk  r   )r:   r   r  r   r   r  r   r}   s           r0   r4  z)AttributeDocumenter.get_attribute_commenti
  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)r4  r   r   r   r=  r   rB  )r:   r  origr   s      r0   rB  zAttributeDocumenter.get_docz
  s    ,,T[$,r:JKK 	9	: ;9D5:DK277??$$59DK22TDK29999s   7A2 2B rM  rN  c                    d | _         |t                      }|                     |           t                                          |           d S r.   r  r  s     r0   rX  zAttributeDocumenter.add_content
  sM     %<<LL)))L)))))r2   )r   r   r,   r6   r  r  r  r  r  r  r  r  )r   r   r  r   r,   r  r  r  )rA   rB   rC   rD   r   r  rv   r  r   ra  rr   rt   r  staticmethodrK  r  r   r  r  r   r  r  r:  r4  rB  rX  r   r   s   @r0   rH  rH  	  s          GL"d#8#DEEKEEEE 1K)K
 HZ Z Z \Z    [       ,      , , , ,
 
 
 
 
 
     >   ": : : : : : * * * * * * * * * *r2   rH  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 Z xZS )!PropertyDocumenterz9
    Specialized Documenter subclass for properties.
    r  rI  r   r~   r   r   r   r   r6   r   r,   c                   t          |t                    rot          j        |          rdS t	          |j        di           }|                    |          }t          |t                    ot          j        |j                  S dS )NTre  F)	rf  r  r   
ispropertyr   r_   r{   r  __func__)r   r~   r   r   r   re  r   s          r0   r   z&PropertyDocumenter.can_document_member
  sz     fo.. 	!&)) Yt'z2FFll:..!#{33X8J3<8X8XX5r2   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 )rD  re  r   TF)r   r   r   r\  r_   r   r   r{   r   rf  r  r]  r  )r:   r  r  re  r   r   s        r0   r   z PropertyDocumenter.import_object
  s     gg##J// 	w)$+66 	#DKR@@H,,t|B/00C#{++ 0B3<0P0P !l%)"tu"
r2   r  c                    |                                  }|dS | j        j                            d|d            t	                      j        di |S )Nr   r#  Fr/   )_get_property_getterr   r   rH  r   r  )r:   r  r<  r   s      r0   r  zPropertyDocumenter.format_args
  sZ    ((**<2 	<dEJJJ"uww",,V,,,r2   r|  r<   c                    d S r.   r/   r.  s     r0   r  z#PropertyDocumenter.document_members
  r?   r2   c                Z    |                      | j        p| j        dd           }|p| j        S r  r  r  s     r0   r  z#PropertyDocumenter.get_real_modname
  r  r2   r+  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rV| j	        j        dk    rt#          |j        d          }nt#          |j        d          }|                     d|z   |           d S d S # t$          $ r9}t&                              t+          d	          | j        |           Y d }~d S d }~wt.          $ r Y d S w xY w)
Nr  r  r  r$  r!  r  r  r  r&  )r   r:  r4  r   r  r_   r   r  r`  r   r(  r*  r+  r  r   rS  r)  r$   r"  r   r   r   r   ri   )r:   r+  r7  r<  r*  r  r  r   s          r0   r:  z'PropertyDocumenter.add_directive_header
  s   $$S)))((**
#DK00 	=MM/<<< 	:MM,j999((**<4;8FBBF	)$7;{7WY Y YI*)/AA;77BB293NPWXXGG293N3RT TGlW4jAAAAA BA  	 	 	NN2MNN=#/ / /DDDDD 	 	 	DD	s   ,BD7 7
F.E55FFc                    t          | j        dd           r| j        j        S t          | j        dd           r| j        j        S d S )Nfgetr<  )r   r_   re  r<  r   s    r0   r`  z'PropertyDocumenter._get_property_getter
  sI    VT22 	$;##VT22 	$;##tr2   r  r  r  r  r  r  r  )rA   rB   rC   rD   r   r  rH  r  r  r   r   r  r  r  r:  r`  r   r   s   @r0   rZ  rZ  
  s          GL #+a/H
 
 
 [
      "- - - - - -    , , , ,     :      r2   rZ  r   r(   r   r   r   c                    | j         j                                        D ]!\  }}t          ||          r |||g|R  c S "t	          ||g|R  S )zAlternative getattr() for types)r   autodoc_attrgettrsrT  rf  r   )r   r   r   r   r;  r<  s         r0   r   r   
  sw    \4::<< - -	Tc3 	-4T,G,,,,,,	- T,G,,,,r2   dict[str, Any]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           | 
                    ddd           | 
                    dg d           | 
                    dddt          dddd                     | 
                    dddt          ddd                     | 
                    di d           | 
                    dddt          dd                     | 
                    ddd           | 
                    ddd           |                     d           |                     d            |                     d!           |                     d"           |                     d#           |                     d$           |                     d%           |                     d&           t          j        dd'S )(Nr  rm   Trl   rn   r  re   rf   rg   rg  mixedre  autodoc_default_optionsr  r  r(  r*  r  r  $autodoc_typehints_description_targetall
documenteddocumented_paramsr+  r)  r!  r   zfully-qualifiedr  r=  r#  rG  r%  rj  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  r  r[  r  rH  rZ  add_config_valuer   	add_eventsetup_extensionsphinx__display_version__)r   s    r0   setuprx  
  s   +,,,?+++.///>***-....///+,,,.///-...,gtT&'SY=Z=Z[[[/nj+FFH H H2GT4Q\C]C]^^^2B===6dCCC/T:::,k4k=&&IIK K K?e\3FGGI I I/T:::3We/99; ; ;14>>>5tTBBBMM4555MM-...MM-...MM'(((MM)***>???9:::67771NNNr2   )r+   r   r,   r   )rI   r   r,   rJ   )rI   r   r,   rW   )rI   r   r,   r]   )rI   r   r,   rc   )rI   r   r,   r   )rI   r   r,   r6   )ru   rv   r,   r<   )r   N)r   r   r   r   r   rc   r,   r   )NFF)
r   r   r   r   r   r6   r   r6   r,   r   )
r   r(   r   r   r   r   r   r   r,   r   )r   r(   r,   rh  )yrD   
__future__r   r   r  r   r   r   r   typingr   r   r   r	   docutils.statemachiner
   rv  sphinx.configr   r   sphinx.deprecationr   sphinx.ext.autodoc.importerr   r   r   sphinx.ext.autodoc.mockr   r   r   sphinx.localer   r   sphinx.pycoder   r   sphinx.utilr   sphinx.util.docstringsr   r   sphinx.util.inspectr   r   r   r   r    sphinx.util.typingr!   r"   r#   r$   collections.abcr%   r&   typesr'   sphinx.applicationr(   sphinx.environmentr)   sphinx.ext.autodoc.directiver*   	getLoggerrA   r   r   __subclasses__MethodDescriptorTyper   VERBOSEr   ro  r1   r4   rF   rS   r[   r_   r  rl  r.  rV   r\   rb   rj   ro   rq   rr   rt   r   r   r   rv   r   r   r   r  r  r  r  r  r  r[  rw  rx  r  r  r  r  r  r  r  r   r(  r2  r@  rH  rZ  r   rx  r/   r2   r0   <module>r     s    # " " " " " 				 



  ( ( ( ( ( ( ( ( 8 8 8 8 8 8 8 8 8 8 8 8 , , , , , ,  & & & & & & & & 7 7 7 7 7 7 W W W W W W W W W W < < < < < < < < < <         5 5 5 5 5 5 5 5 ( ( ( ( ( ( ( ( G G G G G G G G              Y X X X X X X X X X X X >22222222      ))))))333333======		8	$	$
 tD/00  
 z  BJ|,,                   dffVXX vxxFHH	@ @ @ @< < < <   P P P PR R R R 688      + + + +$    < "&	% % % % %T	 	 	 	 	d 	 	 	3 3 3 3 3 3 3 3:e
+ e
+ e
+ e
+ e
+ e
+ e
+ e
+P]< ]< ]< ]< ]<z ]< ]< ]<@) ) ) ) )J ) ) ). )  )  )  )  ):  )  )  )FN N N N N N N Nb2 2 2 2 2#: 2 2 2*} } } } }02G } } }@    ,   *    
H9 H9 H9 H9 H9-/D H9 H9 H9V+ + + + +/ + + +4       ,- - - - -/ - - -.%% %% %% %% %%'> %% %% %%Pu* u* u* u* u*&57Lu* u* u*pS% S% S% S% S%.0D S% S% S%l% % % % %4 % % %>*% *% *% *% *%( *% *% *%ZK% K% K% K% K%$; K% K% K%\/! /! /! /! /!*A /! /! /!dZ* Z* Z* Z* Z*+Z7=?U68LZ* Z* Z*z\ \ \ \ \5-\ \ \~- - - -%O %O %O %O %O %Or2   