
    Ki                         d Z dZ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mZ ddlmZ  G d de      Z G d de      Zy# e$ r' 	 ddlZ G d d      Zee_        n# e$ r dZY nw xY wY dw xY w)z+
Directives for figures and simple images.
reStructuredText    )url2pathnameNc                       e Zd Zy)PILN)__name__
__module____qualname__     r/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/docutils/parsers/rst/directives/images.pyr   r      s    r   r   )nodes)fully_normalize_namewhitespace_normalize_name)	Directive)
directivesstates)normalize_optionsc            
           e Zd ZdZdZeez   ZdZd Zd ZdZ	dZ
dZej                  ej                  ej                  ej                   eej"                  eej$                  ej                  d		Zd
 Zy)Image)leftcenterright)topmiddlebottom)embedlinklazyc                 J    t        j                  | t        j                        S N)r   choicer   align_valuesarguments    r   alignzImage.align%   s       5+=+=>>r   c                 J    t        j                  | t        j                        S r    )r   r!   r   loading_valuesr#   s    r   loadingzImage.loading+   s      5+?+?@@r      r   T)	altheightwidthscaler%   targetr(   classnamec           
         d| j                   v rt        | j                  t        j                        rf| j                   d   | j
                  vr| j                  d| j                  d| j                   d   ddj                  | j
                        d      | j                   d   | j                  vrK| j                  d| j                  d| j                   d   ddj                  | j                        d      g }t        j                  | j                  d         }|| j                   d	<   d }d
| j                   v rt        j                  | j                   d
         j                         }t        |      }| j                  j!                  || j"                  | j$                        \  }}|dk(  rt'        j(                  |      }nl|dk(  rVt'        j(                  t+        |      t-        |            }||_        | j                  j0                  j3                  |       n|j5                  |       | j                   d
= t7        | j                         }t'        j8                  | j"                  fi |}| j:                  j=                  | j$                        \  |_        |_         | jC                  |       |r||z  }||gz   S ||gz   S )Nr%   z
Error in "z" directive: "zp" is not a valid value for the "align" option within a substitution definition.  Valid values for "align" are: "z", "z".zO" is not a valid value for the "align" option.  Valid values for "align" are: "r   urir.   refuri)r3   refname)r4   r0   )"options
isinstancestater   SubstitutionDefalign_v_valueserrorr0   joinalign_h_valuesr   r2   	argumentsescape2null
splitlineslistparse_target
block_textlinenor   	referencer   r   indirect_reference_namedocumentnote_refnameappendr   imagestate_machineget_source_and_linesourcelineadd_name)	selfmessagesrD   reference_nodeblocktarget_typedatar5   
image_nodes	            r   runz	Image.run<   sT   dll"$**f&<&<=<<(0C0CC**  99dll7&;!;;t':':;	=> > g&d.A.AAjj yy$,,w"7{{4#6#679: :
 NN4>>!#45	'Ut||#&&X&((2
 KE $

 7 7t!5Kh&!&!=	)!&06248": :>6

##00@%X&#DLL1[[<G<
 ..BB4;;O			j!j(N~...zl**r   N)r   r   r	   r<   r9   r"   r'   r%   r(   required_argumentsoptional_argumentsfinal_argument_whitespacer   	unchangedlength_or_unitless length_or_percentage_or_unitless
percentageunchanged_requiredclass_optionoption_specrV   r
   r   r   r   r      s    0N0N!N2L.N?A  $$..'::&GG&11!'::%&33%//1K/+r   r   c                       e Zd Zd Zd Zej                  j                         Zeed<   ej                  ed<   ej                  ed<   eed<   dZd Zy	)
Figurec                 J    t        j                  | t        j                        S r    )r   r!   rb   r<   r#   s    r   r%   zFigure.alignp   s      6+@+@AAr   c                 V    | j                         dk(  ryt        j                  | d      S )NrI   px)lowerr   r\   r#   s    r   figwidth_valuezFigure.figwidth_values   s'    >>w&>>xNNr   figwidthfigclassfignamer%   Tc                    | j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }t        j                  |       \  }t	        |t
        j                        r|gS t        j                  d|      }| j                  j                  | j                        \  |_        |_        |dk(  rt        r| j                  j                  j                   j"                  rt%        |d         }	 t        j                  j'                  |      5 }d|j(                  d	   z  |d
<   d d d        | j                  j                  j                   j*                  j-                  |j/                  dd             n|||d
<   |r|dxx   |z  cc<   |rM|d   j5                  t        j6                  |             | j                  j                  j9                  ||       |r||d<   | j:                  rt        j<                         }	| j                  j?                  | j:                  | j@                  |	       tC        |	      D ]"  \  }
}t	        |t
        jD                  t
        jF                  f      r||z  }7t	        |t
        jH                        rTt        jJ                  |jL                  dg|jN                   }|j                  |_        |j                  |_        ||z  } nt	        |t
        jP                        rtS        |      d	k(  r nW| jT                  jW                  dt        jX                  | jZ                  | jZ                        | j                        }||gc S  tS        |	      
dz   kD  r|t        j\                  dg|	|
dz   d   z  }|gS # 1 sw Y   vxY w# t0        t2        f$ r Y :w xY w)Nrh   ri   rj   r%    rI   r2   z%dpxr   r,   \/classesnamesz4Figure caption must be a paragraph or empty comment.)rM   r)   )/r5   popr   rV   r6   r   system_messagefigurerJ   rK   rC   rL   rM   r   r7   rF   settingsfile_insertion_enabledr   opensizerecord_dependenciesaddreplaceOSErrorUnicodeEncodeErrorrH   r   note_explicit_targetcontentElementnested_parsecontent_offset	enumerater.   pending	paragraphcaption	rawsourcechildrencommentlenreporterr:   literal_blockrB   legend)rO   rh   
figclassesrj   r%   rU   figure_node	imagepathimgnodeichildr   r:   s                 r   rV   z
Figure.run   sJ   <<##J5\\%%j$7
,,""9d3  $/		$j%"6"67<ll2z233DKK@		[-wtzz**33JJ(E):;	6	2 Dc/5/CG,D
 JJ''00DDHH!))$46!#+K 	"j0" ''(B(B7(KLJJ44[+N#(K << ==?DJJ##DLL$2E2EtL%dO ,5eellEMM%BC5(KeU__5#mmEOOR =-2^^=G%*\\GN#(::GL7*KeU]]3E
a++J''I , & $U++%,& 4y1Q3u||B<acd<<}UD D!34 s*   1O' O&O' O$O' 'O:9O:N)r   r   r	   r%   rg   r   r`   copyr   r_   rZ   has_contentrV   r
   r   r   rb   rb   n   sb    BO ##((*K,K
(55K
'11K	 KK9r   rb   )__doc____docformat__urllib.requestr   	PIL.Imager   ImportErrorr   docutilsr   docutils.nodesr   r   docutils.parsers.rstr   r   r   docutils.parsers.rst.rolesr   rb   r
   r   r   <module>r      s   
 # '  J * 3 8M+I M+`LU L  	 s5   A	 	A5A%$A5%A/,A5.A//A54A5