
    -Ph                       d dl mZ d dlZd dlmZ d dlmZ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 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! erd dlm"Z" d dl
m#Z# d dl$m%Z% d dl&m'Z'm(Z(  ej)        e*          Z+ G d dej,                  Z, G d dej-                  Z- G d de          Z. G d de          Z/ G d de          Z0d$d#Z1dS )%    )annotationsN)Path)TYPE_CHECKINGcast)nodes)make_id)
directives)imagestables)Meta)set_classes)optional_int)__)logging)SphinxDirective)set_source_info)SEPrelpath)ClassVar)Node)Sphinx)ExtensionMetadata
OptionSpecc                  $     e Zd ZdZd fdZ xZS )FigureziThe figure directive which applies `:name:` option to the figure node
    instead of the image node.
    return
list[Node]c                   | j                             dd           }t                                                      }t	          |          dk    s t          |d         t          j                  r|S t	          |          dk    sJ t          d|d                   }|r|| j         d<   | 	                    |           |j
        5t	          |          dk    r"t          d|d                   }|j
        |_
        |gS )Nname   r      znodes.figureznodes.caption)optionspopsuperrunlen
isinstancer   system_messager   add_nameline)selfr   resultfigure_nodecaption	__class__s        Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/directives/patches.pyr%   z
Figure.run&   s    |--v;;!z&)U5IJJM6{{a>6!955 	'#'DL MM+&&& #K(8(8A(=(=?KN;;G&|K}    r   r   __name__
__module____qualname____doc__r%   __classcell__r/   s   @r0   r   r   !   G                  r1   r   c                  $     e Zd ZdZd fdZ xZS )CSVTablezThe csv-table directive which searches a CSV file from Sphinx project's source
    directory when an absolute path is given via :file: option.
    r   r   c                T   d| j         v r| j         d                             t          t          j        f          r| j        j        j        j        }t          | j         d                   }|
                                r6t                              t          d          |j        | j        f           nT|j        | j         d         dd          z  }|                    |j                  j        }t'          ||          | j         d<   t)                                                      S )Nfilez":file:" option for csv-table directive now recognizes an absolute path as a relative path from source directory. Please update your document.locationr!   )r"   
startswithr   ossepstatedocumentsettingsenvr   existsloggerwarningr   docnamelinenosrcdirdoc2pathparentr   r$   r%   )r+   rG   filenameabspathdoc_dirr/   s        r0   r%   zCSVTable.run@   s   T\!!dl6&:&E&EsBFm&T&T!*%.2CDL011H   A7 
 "k4;7      *t|F';ABB'??,,s{33:'.w'@'@V$ww{{}}r1   r2   r3   r9   s   @r0   r<   r<   ;   r:   r1   r<   c                  Z    e Zd ZU dZdZej        ej        ej        e	dZ
ded<   dZdd	Zd
S )CodezqParse and mark up content of a code block.

    This is compatible with docutils' :rst:dir:`code` directive.
    r!   )classforcer   number-linesClassVar[OptionSpec]option_specTr   r   c                   |                                   t          | j                   d                    | j                  }t          j        ||| j                            dg           d| j        v i           }|                     |           t          | |           | j
        r| j
        d         |d<   n | j        j        j        p| j        j        |d<   d| j        v r(d|d	<   | j        d         r| j        d         |d
         d<   |gS )N
classesrV   )r\   rV   highlight_argsr   languagerW   Tlinenosr]   linenostart)assert_has_contentr   r"   joincontentr   literal_blockgetr)   r   	argumentsrG   current_documenthighlight_languageconfig)r+   codenodes      r0   r%   zCode.rund   s$   !!!DL!!!yy&&"L$$Y33T\)
 
 
 	dd###> 
	#~a0D )< 2;1 
 T\))"DO |N+ U8<^8T%&}5vr1   Nr2   )r4   r5   r6   r7   optional_argumentsr	   class_optionflag	unchangedr   rY   __annotations__has_contentr%    r1   r0   rT   rT   U   sw          
 ($$	) )K     K" " " " " "r1   rT   c                  |    e Zd ZU dZdZdZdZej        ej        ej	        ej
        ej
        dZded<   dd	ZddZdS )MathDirectiveTr   r!   )labelr   rU   no-wrapnowraprX   rY   r   r   c                \   d| j         vrd| j         v r| j         d         | j         d<   d                    | j                  }| j        r | j        d         r| j        d         dz   |z   }| j                             d| j                             d                    }t          j        ||| j                             dg           | j        j        d |	          }d| j         v x|d<   |d<   | 	                    |           | 
                    |           |g}|                     |           |S )
Nrv   rw   r[   r   z

ru   r   rU   )r\   rK   numberru   )r"   rb   rc   rf   re   r   
math_blockrG   rK   r)   r   
add_target)r+   latexru   rk   rets        r0   r%   zMathDirective.run   s7    DL((X-E-E&*l8&<DL#		$,''> 	7dnQ/ 	7N1%.6E  $,*:*:6*B*BCCL$$Wb11H$
 
 
 ,5+DDY$x.dT"""&
r1   r}   Nonec                Z   t          d|d                   }|d         dk    s| j        j        r6|d         s.| j                            d          }| j        j         d| |d<   |d         sd S | j        j        j        }|                    | j        j        |d         |           |	                    |d                   |d<   t          d	|d         z            }t          j        dd|g
          }| j        j                            |           |                    d|           d S )Nznodes.math_blockr   ru    zsphinx.ext.math#equations:r?   ry   zequation-%s)ids)r   ri   math_number_allrG   new_serialnorK   domainsmath_domainnote_equationget_equation_number_forr   r   targetrD   rE   note_explicit_targetinsert)r+   r}   rk   seqdomainnode_idr   s          r0   r{   zMathDirective.add_target   s0   &A// =B4;#>tG}(''(CDDC#x/77#77DM G} 	F !-TX-tG}tLLL77WFFX -$w-788b"7)444
00888

1fr1   Nr2   )r}   r   r   r~   )r4   r5   r6   rq   required_argumentsrl   final_argument_whitespacer	   ro   rm   rn   rY   rp   r%   r{   rr   r1   r0   rt   rt      s         K $%$(?/) )K       6     r1   rt   c                  H    e Zd ZdZdZdZdZej        ej	        d dZ
dd	Zd
S )RubriczA patch of the docutils' :rst:dir:`rubric` directive,
    which adds a level option to specify the heading level of the rubric.
    r!   r   Tc                ,    t          j        | d          S )N)123456)r	   choice)cs    r0   <lambda>zRubric.<lambda>   s    :#4Q8V#W#W r1   )rU   r   heading-levelr   )list[nodes.rubric | nodes.system_message]c                B   t          | j                   | j        d         }|                     || j                  \  }}d| j        v r"t          | j        d                   | j        d<   t          j        |dg|R i | j        }|                     |           |g|S )Nr   )rL   r   r   )	r   r"   rf   parse_inlinerL   intr   rubricr)   )r+   rubric_text	textnodesmessagesr   s        r0   r%   z
Rubric.run   s    DL!!!nQ'"//DK/PP	8dl**,/_0M,N,NDL)k2J	JJJT\JJf"""r1   N)r   r   )r4   r5   r6   r7   r   rl   r   r	   rm   ro   rY   r%   rr   r1   r0   r   r      sd           $($WW K# # # # # #r1   r   appr   r   r   c                F   t          j        dt                     t          j        dt                     t          j        dt                     t          j        dt
                     t          j        dt                     t          j        dt                     dddd	S )
Nfiguremetaz	csv-tablerj   mathr   builtinT)versionparallel_read_safeparallel_write_safe)r	   register_directiver   r   r<   rT   rt   r   )r   s    r0   setupr      s    !(F333!&$///!+x888!&$///!&-888!(F333 "#  r1   )r   r   r   r   )2
__future__r   rB   pathlibr   typingr   r   docutilsr   docutils.nodesr   docutils.parsers.rstr	   docutils.parsers.rst.directivesr
   r   $docutils.parsers.rst.directives.miscr   docutils.parsers.rst.rolesr   sphinx.directivesr   sphinx.localer   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.nodesr   sphinx.util.osutilr   r   r   r   sphinx.applicationr   sphinx.util.typingr   r   	getLoggerr4   rI   r   r<   rT   rt   r   r   rr   r1   r0   <module>r      s   " " " " " " 				       & & & & & & & &       " " " " " " + + + + + + : : : : : : : : 5 5 5 5 5 5 2 2 2 2 2 2 * * * * * *             0 0 0 0 0 0 - - - - - - + + + + + + + + A######))))))@@@@@@@@ 
	8	$	$    V]   4    v   41 1 1 1 1? 1 1 1h= = = = =O = = =@# # # # #_ # # #2     r1   