
    -Ph              	         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ er*d dlmZ d dlmZ d dlmZ d dl
mZ d dlmZ d dlmZ d dlmZ  ej         e!          Z"g dZ# e$h d          Z% G d de&e'ee'ge'f         f                   Z( G d d          Z)d+d Z*d,d'Z+ G d( d)e          Z,d*S )-    )annotations)Callable)TYPE_CHECKING)nodes)
StringList)assemble_option_dict)Options)logging)SphinxDirectiveswitch_source_input)nested_parse_to_nodes)Any)Node)RSTState)Reporter)Config)BuildEnvironment)
Documenter)memberszundoc-memberszno-indexzno-index-entryzinherited-memberszshow-inheritanceprivate-membersspecial-memberszignore-module-allexclude-memberszmember-orderzimported-memberszclass-doc-fromzno-value>   r   r   r   r   c                  "    e Zd ZdZd
dZddZd	S )DummyOptionSpecz"An option_spec allows any options.returnboolc                    dS )z&Behaves like some options are defined.T )selfs    \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/ext/autodoc/directive.py__bool__zDummyOptionSpec.__bool__:   s    t    _keystrCallable[[str], str]c                    d S )Nc                    | S Nr   )xs    r    <lambda>z-DummyOptionSpec.__getitem__.<locals>.<lambda>?   s     r"   r   )r   r#   s     r    __getitem__zDummyOptionSpec.__getitem__>   s
    {r"   N)r   r   )r#   r$   r   r%   )__name__
__module____qualname____doc__r!   r+   r   r"   r    r   r   7   sB        ,,        r"   r   c                      e Zd ZdZddZdS )DocumenterBridgez'A parameters container for Documenters.envr   reporterReporter | Noneoptionsr	   linenointstater   r   Nonec                    || _         || _        || _        || _        t	                      | _        t                      | _        || _        d S r(   )	r2   	_reportergenoptr6   setrecord_dependenciesr   resultr8   )r   r2   r3   r5   r6   r8   s         r    __init__zDocumenterBridge.__init__E   sB     !-0UU  ll


r"   N)r2   r   r3   r4   r5   r	   r6   r7   r8   r   r   r9   )r,   r-   r.   r/   r@   r   r"   r    r1   r1   B   s.        11     r"   r1   
documentertype[Documenter]configr   r5   dict[str, str]r   r	   c                4   |j         }t          D ]}|| j        vr|                    d|z   d          du }||v rx|sv||v rft	          ||         t
                    rK|t          v rA||         9||                             d          r||          d||         dd          ||<   ||         ||<   |                    |          ||         	                    d          ||<   t          t          |                                | j                            S )z0Recognize options of Documenter from user input.zno-TN+,   )autodoc_default_optionsAUTODOC_DEFAULT_OPTIONSoption_specpop
isinstancer$   AUTODOC_EXTENDABLE_OPTIONS
startswithgetlstripr	   r   items)rA   rC   r5   default_optionsnamenegateds         r    process_documenter_optionsrV   V   s2    4O' 6 6z---++edlD11T9?""7"w:od.CS#I#I 555t}0WT]5M5Mc5R5R0+:4+@(V(V74=QRQSQSCT(V(V / 5[[*#DM0055GDM'9OPPQQQr"   r8   r   contentr   r   
list[Node]c                   t          | |          5  |j        rt          | |          cddd           S t          j                    }| j        |_        |                     |d|d           |j        cddd           S # 1 swxY w Y   dS )z1Parse an item of content generated by Documenter.Nr   F)match_titles)r   titles_allowedr   r   	paragraphdocumentnested_parsechildren)r8   rW   rA   nodes       r    parse_generated_contentra   p   s     
UG	,	,  $ 	9(88          7At%@@@}                 s   B >B  BBc                  >    e Zd ZdZ e            ZdZdZdZdZ	d	dZ
dS )
AutodocDirectivezA directive class for all autodoc directives. It works as a dispatcher of Documenters.

    It invokes a Documenter upon running. After the processing, it parses and returns
    the content generated by Documenter.
    TrH   r   r   rX   c                   | j         j        j        }	 |                    | j                  \  }}n# t
          $ r d\  }}Y nw xY wt                              d||| j                   | j	        dd          }| j
        j        j        |         }	 t          || j        | j                  }nU# t           t"          t$          f$ r;}t                              d| j	        || j
        j        |f           g cY d }~S d }~ww xY wt+          | j
        |||| j                   } ||| j        d                   }	|	                    | j                   |j        sg S t                              dd	                    |j                             |j        D ]+}
| j         j        j        j                            |
           ,t=          | j         |j        |	          }|S )
N)NNz[autodoc] %s:%s: input:
%s   z=An option to %s is either unknown or has an invalid value: %s)locationr   )more_contentz[autodoc] output:
%s
)r8   r]   r3   get_source_and_liner6   AttributeErrorloggerdebug
block_textrT   r2   	_registrydocumentersrV   rC   r5   KeyError
ValueError	TypeErrorerrordocnamer1   	argumentsgeneraterW   r?   joinr>   settingsaddra   )r   r3   sourcer6   objtypedocclsdocumenter_optionsexcparamsrA   fnr?   s               r    runzAutodocDirective.run   s   :&/	*%99 NFFF  	* 	* 	*)NFFFF	*2FFDOTTT )ABB-#/8	!;T\" " *i0 	 	 	LLO	(*F3	     IIIIII	 "Hh 2FDJ
 
 VFDN1$566
666} 	I,dii.F.FGGG , 	E 	EBJ(<@@DDDD(V]JOOs-   1 AAB+ +C=0C82C=8C=N)r   rX   )r,   r-   r.   r/   r   rK   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   r   r"   r    rc   rc      sX          "/##KK $/ / / / / /r"   rc   N)rA   rB   rC   r   r5   rD   r   r	   )r8   r   rW   r   rA   r   r   rX   )-
__future__r   collections.abcr   typingr   docutilsr   docutils.statemachiner   docutils.utilsr   sphinx.ext.autodocr	   sphinx.utilr
   sphinx.util.docutilsr   r   sphinx.util.parsingr   r   docutils.nodesr   docutils.parsers.rst.statesr   r   sphinx.configr   sphinx.environmentr   r   	getLoggerr,   rk   rJ   	frozensetrN   dictr$   r   r1   rV   ra   rc   r   r"   r    <module>r      sS   " " " " " " $ $ $ $ $ $                   , , , , , , / / / / / / & & & & & &       E E E E E E E E 5 5 5 5 5 5 	.######444444''''''$$$$$$333333------		8	$	$   " 'Y ( ( (       d3# 445          (R R R R4   < < < < < < < < < <r"   