
    }c"                     ~   d dl Z d dlZd dl mZ d dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZ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% d dl&m'Z' d dl(m)Z)m*Z*m+Z+ d dl,m-Z- 	 d dl.m/Z0 n# e1$ r	 d dl2m/Z0 Y nw xY werd dl3m4Z4  e#j5        e6          Z7 G d dej8                  Z8 G d de0e%          Z/ G d dej9                  Z9 G d dej:                  Z: G d dej;                  Z; G d d e%          Z< G d! d"e%          Z=d#d$d%ee>ef         fd&Z?dS )'    N)path)TYPE_CHECKINGAnyDictListSequenceTuplecast)nodes)Nodemake_idsystem_message)
directives)imagestables)set_classes)addnodes)RemovedInSphinx60Warning)optional_int)
MathDomain)__)logging)SphinxDirective)set_source_info)SEPos_pathrelpath)
OptionSpec)Meta)Sphinxc                   4     e Zd ZdZdee         f fdZ xZS )FigureziThe figure directive which applies `:name:` option to the figure node
    instead of the image node.
    returnc                 "   | j                             dd           }t                                                      }t	          |          dk    s t          |d         t          j                  r|S t	          |          dk    sJ t          t          j	        |d                   }|r|| j         d<   | 
                    |           |j        ?t	          |          dk    r,t          t          j        |d                   }|j        |_        |gS )Nname   r      )optionspopsuperrunlen
isinstancer   r   r
   figureadd_namelinecaption)selfr%   resultfigure_noder1   	__class__s        9lib/python3.11/site-packages/sphinx/directives/patches.pyr+   z
Figure.run)   s    |--v;;! 	z&)U5IJJ 	M6{{a5<33 	'#'DL MM+&&&  	,K(8(8A(= 	,5=+a.99G&|K}    __name__
__module____qualname____doc__r   r   r+   __classcell__r5   s   @r6   r"   r"   $   sR         T$Z          r7   r"   c                   0     e Zd Zdee         f fdZ xZS )r   r#   c                    t                                                      }|D ]}t          |t          j                  rt          |j        d         d         t          j                  rf|j        d         d         }| j        	                    | j        j
                  |_        | j        |_        |d         |_        t          j        |_        |S )Nr   r   content)r*   r+   r-   r   pendingdetailsr   docutils_metaenvdoc2pathdocnamesourcelinenor0   
rawcontentmetar5   )r2   r3   noderK   r5   s       r6   r+   zMeta.run?   s     	/ 	/D 4// /$,w/2H4JKK/|G,Q/"h//0@AA K	"&y/ "*r7   )r9   r:   r;   r   r   r+   r=   r>   s   @r6   r   r   >   sH        Xd^          r7   r   c                   j     e Zd ZdZdee         f fdZdeej	        ee
         f         f fdZ xZS )RSTTablezxThe table directive which sets source and line information to its caption.

    Only for docutils-0.13 or older version.r#   c                 x    t          j        dt                     t                                                      S )NzRSTTable is deprecated.warningswarnr   r*   r+   r2   r5   s    r6   r+   zRSTTable.runV   s/    /.	0 	0 	0ww{{}}r7   c                 v    t                                                      \  }}|rt          | |           ||fS Nr*   
make_titler   r2   titlemessager5   s      r6   rW   zRSTTable.make_title[   >    ++--w 	)D%(((g~r7   r9   r:   r;   r<   r   r   r+   r	   r   rY   r   rW   r=   r>   s   @r6   rN   rN   Q           0 0T$Z      
E%+tN/C"CD          r7   rN   c                   4     e Zd ZdZdee         f 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#   c                    d| j         v r| j         d                             t          t          j        f          r| j        j        j        j        }| j         d         }t          j
        |          r6t                              t          d          |j        | j        f           n~t          j        |j        t%          | j         d         dd                              }t          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settingsrE   r   existsloggerwarningr   rG   rI   joinsrcdirr   dirnamerF   r   r*   r+   )r2   rE   filenameabspathdocdirr5   s        r6   r+   zCSVTable.runh   s   T\! 	@dl6&:&E&EsBFm&T&T 	@*%.2C|F+H{8$$ @r #A  B  B *-dk(B  D D D D
 )CJV8LQRR8P0Q0QRRcll3;&?&?@@'.w'?'?V$ww{{}}r7   r8   r>   s   @r6   r_   r_   c   sR         T$Z          r7   r_   c                   j     e Zd ZdZdee         f fdZdeej	        ee
         f         f fdZ xZS )	ListTablez}The list-table directive which sets source and line information to its caption.

    Only for docutils-0.13 or older version.r#   c                 x    t          j        dt                     t                                                      S )NzListTable is deprecated.rP   rS   s    r6   r+   zListTable.run~   s/    0.	0 	0 	0ww{{}}r7   c                 v    t                                                      \  }}|rt          | |           ||fS rU   rV   rX   s      r6   rW   zListTable.make_title   r[   r7   r\   r>   s   @r6   rt   rt   y   r]   r7   rt   c                   j    e Zd ZU dZdZej        ej        ej        e	dZ
eed<   dZdee         f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option_specTr#   c                 4   |                                   t          | j                   d                    | j                  }t          j        ||| j                            dg           d| j        v i           }|                     |           t          | |           | j
        r| j
        d         |d<   n-| j        j                            d| j        j                  |d<   d| j        v r(d	|d
<   | j        d         r| j        d         |d         d<   |gS )N
classesrz   )r   rz   highlight_argsr   languagehighlight_languager{   Tlinenosr   linenostart)assert_has_contentr   r(   rm   rA   r   literal_blockgetr/   r   	argumentsrE   	temp_dataconfigr   )r2   coderL   s      r6   r+   zCode.run   s0   !!!DL!!!yy&&"4+/<+;+;Ir+J+J)0DL)@246 6 6 	dd###> 	V#~a0D
  $x1556J6:k6T V  VD T\) 	U"DO |N+ U8<^8T%&}5vr7   N)r9   r:   r;   r<   optional_argumentsr   class_optionflag	unchangedr   r|   r   __annotations__has_contentr   r   r+    r7   r6   rx   rx      s           ($$	 K    KT$Z      r7   rx   c                       e Zd ZU dZdZdZdZej        ej        ej	        ej
        dZeed<   dee         fdZdee         dd	fd
Zd	S )MathDirectiveTr   r'   )labelr%   ry   nowrapr|   r#   c           
         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           }| 	                    |           | 
                    |           |g}|                     |           |S )	Nr~   r   z

r   r%   ry   r   )r   rG   numberr   r   )rm   rA   r   r(   r   r   
math_blockrE   rG   r/   r   
add_target)r2   latexr   rL   rets        r6   r+   zMathDirective.run   s    		$,''> 	7dnQ/ 	7N1%.6E  $,*:*:6*B*BCCu(,(8(8"(E(E(,(8'+&+'/4<'?A A A 	dT"""&
r7   r   Nc                    t          t          j        |d                   }|d         dk    s| j        j        r6|d         s.| j                            d          }d| j        j        |fz  |d<   |d         sd S t          t          | j        	                    d                    }|
                    | j        j        |d         |           |                    |d                   |d<   t          d	|d         z            }t          j        dd|g
          }| j        j                            |           |                    d|           d S )Nr   r    zsphinx.ext.math#equationsz%s:%dmathrb   r   zequation-%s)ids)r
   r   r   r   math_number_allrE   new_serialnorG   r   
get_domainnote_equationget_equation_number_forr   targetrg   rh   note_explicit_targetinsert)r2   r   rL   seqdomainnode_idr   s          r6   r   zMathDirective.add_target   sF   E$c!f-- =B 	>4;#> 	>tG} 	>(''(CDDC#tx'7&==DM G} 	F j$("5"5f"="=>>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r7   )r9   r:   r;   r   required_argumentsr   final_argument_whitespacer   r   r   r   r|   r   r   r   r   r+   r   r   r7   r6   r   r      s         K $%$(/	 K   T$Z    $d4j T      r7   r   appr    r#   c                    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 )	Nr.   rK   z	csv-tabler   r   builtinT)versionparallel_read_safeparallel_write_safe)r   register_directiver"   r   r_   rx   r   )r   s    r6   setupr      s{    !(F333!&$///!+x888!&$///!&-888 "#  r7   )@re   rQ   r   typingr   r   r   r   r   r	   r
   docutilsr   docutils.nodesr   r   r   docutils.parsers.rstr   docutils.parsers.rst.directivesr   r   docutils.parsers.rst.rolesr   sphinxr   sphinx.deprecationr   sphinx.directivesr   sphinx.domains.mathr   sphinx.localer   sphinx.utilr   sphinx.util.docutilsr   sphinx.util.nodesr   sphinx.util.osutilr   r   r   sphinx.util.typingr   $docutils.parsers.rst.directives.miscr   MetaBaseImportError$docutils.parsers.rst.directives.htmlsphinx.applicationr    	getLoggerr9   rk   r"   rN   r_   rt   rx   r   strr   r   r7   r6   <module>r      st   				        H H H H H H H H H H H H H H H H H H       8 8 8 8 8 8 8 8 8 8 + + + + + + : : : : : : : : 2 2 2 2 2 2       7 7 7 7 7 7 * * * * * * * * * * * *             0 0 0 0 0 0 - - - - - - 4 4 4 4 4 4 4 4 4 4 ) ) ) ) ) )FEEEEEEE F F FEEEEEEEEF  *)))))) 
	8	$	$    V]   4    8_   &    v   $    v   ,        $+ + + + +? + + +\3 3 3 3 3O 3 3 3lx DcN      s   B BB