Ë
    ÚÍ:jÎ  ã                  ó8  — d Z ddlmZ ddlmZmZmZ ddlmZm	Z	m
Z
mZ ddlZddlZddlZddlZddlZdZ ej$                  d«      ZdZej-                   ej.                   edd	«      d
 edd«       edd«      d«      e«      Z G d„ de«      Zd„ Zd„ Zd„ Zd„ Zy)z*xmlWriter.py -- Simple XML authoring classé    )Úannotations)ÚBinaryIOÚCallableÚTextIO)ÚbyteordÚstrjoinÚtobytesÚtostrNz  zfontTools.ttxú?é	   )é   é   é   é    i Ø  i à  )iþÿ  iÿÿ  c                  ó¢   — e Zd Zedddf	 	 	 	 	 	 	 	 	 	 	 dd„Zd„ Zd„ Zdd„Zdd„Zd	„ Z	dd
„Z
d„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	XMLWriterNÚutf_8ú
c                ól  — |j                  «       j                  dd«      j                  dd«      dk7  rt        d«      ‚|dk(  rt        j                  }|  t        |d«      sKt        |t        t        j                  f«      st        d«      ‚|| _        t        |d«      | _        d	| _        nd | _        || _        d
| _        	 | j                  j                  d«       t         | _        | j#                  |«      | _        |€%| j#                  t        j(                  «      | _        n| j#                  |«      | _        d| _        g | _        d| _        || _        d| _        | j7                  d«       | j9                  «        y # t        $ r) | j                  j                  d«       t$        | _        Y ŒÉw xY w)Nú-Ú Ú_Úutf8z!Only UTF-8 encoding is supported.Úwritez]fileOrPath must be a file path (str or PathLike) if it isn't an object with a `write` method.ÚwbTFó    r   é   z&<?xml version="1.0" encoding="UTF-8"?>)ÚlowerÚreplaceÚ	ExceptionÚsysÚstdoutÚhasattrÚ
isinstanceÚstrÚosÚPathLikeÚ	TypeErrorÚfilenameÚopenÚfileÚ_closeStreamr   r	   Útotyper
   ÚindentwhiteÚlinesepÚ
newlinestrÚindentlevelÚstackÚ
needindentÚidlefuncÚidlecounterÚ	_writerawÚnewline)ÚselfÚ
fileOrPathr.   r4   Úencodingr0   s         úm/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/fontTools/misc/xmlWriter.pyÚ__init__zXMLWriter.__init__   sm  € ð �>‰>Ó×#Ñ# C¨Ó,×4Ñ4°S¸"Ó=ÀÒGÜÐ?Ó@Ð@Ø˜ÒÜŸ™ˆJÙÜ�z 7Ô+Ü˜j¬3´·±Ð*<Ô=ÜØsóð ð 'ˆDŒMÜ˜Z¨Ó.ˆDŒIØ $ˆDÕà ˆDŒMà"ˆDŒIØ %ˆDÔð	 ð �I‰I�O‰O˜CÔ Ü!ˆDŒKð
  Ÿ;™; {Ó3ˆÔØÐØ"Ÿk™k¬"¯*©*Ó5ˆD�Oà"Ÿk™k¨*Ó5ˆDŒOØˆÔØˆŒ
ØˆŒØ ˆŒØˆÔØ�‰Ð?Ô@Ø�‰�øô ò 	 à�I‰I�O‰O˜BÔÜˆDŽKð	 ús   Ã&F Æ/F3Æ2F3c                ó   — | S ©N© ©r8   s    r;   Ú	__enter__zXMLWriter.__enter__O   s   € Øˆr   c                ó$   — | j                  «        y r>   )Úclose)r8   Úexception_typeÚexception_valueÚ	tracebacks       r;   Ú__exit__zXMLWriter.__exit__R   s   € Ø�
‰
�r   c                óª   — | j                   rGt        | j                  t        t        j
                  f«      rJ ‚| j                  j                  «        y y r>   )r,   r$   r+   r%   r&   r'   rC   r@   s    r;   rC   zXMLWriter.closeU   s;   € Ø×ÒÜ! $§)¡)¬c´2·;±;Ð-?Ô@Ð@Ð@Ø�I‰I�O‰OÕð r   c                ó<   — | j                  t        |«      |¬«       y)zWrites text.©ÚindentN©r6   Úescape)r8   ÚstringrK   s      r;   r   zXMLWriter.writeZ   s   € à�‰”v˜f“~¨fˆÕ5r   c                ó2   — | j                  d|z   dz   «       y)zWrites text in a CDATA section.z	<![CDATA[z]]>N)r6   ©r8   rN   s     r;   Ú
writecdatazXMLWriter.writecdata^   s   € à�‰�{ VÑ+¨eÑ3Õ4r   c                ó<   — | j                  t        |«      |¬«       y)z¸Writes a bytes() sequence into the XML, escaping
        non-ASCII bytes.  When this is read in xmlReader,
        the original bytes can be recovered by encoding to
        'latin-1'.)ÚstripN)r6   Ú
escape8bit)r8   ÚdatarS   s      r;   Ú	write8bitzXMLWriter.write8bitb   s   € ð
 	�‰”z $Ó'¨uˆÕ5r   c                ó<   — | j                  t        |«      d¬«       y)z Writes text without indentation.FrJ   NrL   rP   s     r;   Úwrite_noindentzXMLWriter.write_noindenti   s   € à�‰”v˜f“~¨eˆÕ4r   c                ó  — |rE| j                   r9| j                  j                  | j                  | j                  z  «       d| _         | j                  |d¬«      }|r|j                  «       }| j                  j                  |«       y)z Writes bytes, possibly indented.r   r   )r:   N)r3   r+   r   r1   r.   r-   rS   )r8   rU   rK   rS   Úss        r;   r6   zXMLWriter._writerawm   sc   € á�d—o’oØ�I‰I�O‰O˜D×,Ñ,¨t×/?Ñ/?Ñ?Ô@ØˆDŒOØ�K‰K˜ wˆKÓ/ˆÙØ—‘“	ˆAØ�	‰	�‰˜Õr   c                óÊ   — | j                   j                  | j                  «       d| _        | j                  }|dz  s| j
                  �| j                  «        |dz   | _        y )Nr   éd   )r+   r   r0   r3   r5   r4   )r8   r5   s     r;   r7   zXMLWriter.newlinew   sN   € Ø�	‰	�‰˜Ÿ™Ô(ØˆŒØ×&Ñ&ˆØ˜SÒ  T§]¡]Ð%>Ø�M‰MŒOØ&¨™?ˆÕr   c                óè   — t        |«      }|j                  d«      }| j                  d|d   z   «       |dd  D ]&  }| j                  «        | j                  d|z   «       Œ( | j                  d«       y )Nr   z<!-- r   r   z     z -->)rM   Úsplitr6   r7   )r8   rU   ÚlinesÚlines       r;   ÚcommentzXMLWriter.comment   sj   € Ü�d‹|ˆØ—
‘
˜4Ó ˆØ�‰�w  q¡Ñ)Ô*Ø˜!˜"�Iò 	+ˆDØ�L‰LŒNØ�N‰N˜7 T™>Õ*ð	+ð 	�‰�vÕr   c                óZ   —  | j                   |i |¤Ž}d|›|›d�}| j                  |«       y )Nú<z/>)Ústringifyattrsr6   ©r8   Ú_TAG_ÚargsÚkwargsÚattrdatarU   s         r;   Ú	simpletagzXMLWriter.simpletagˆ   s/   € Ø&�4×&Ñ&¨Ð7°Ñ7‰Ù!¢8Ð,ˆØ�‰�tÕr   c                ó°   —  | j                   |i |¤Ž}d|›|›d�}| j                  |«       | j                  j                  |«       | j	                  «        y )Nrc   ú>)rd   r6   r2   ÚappendrK   re   s         r;   ÚbegintagzXMLWriter.begintag�   sJ   € Ø&�4×&Ñ&¨Ð7°Ñ7‰Ù ¢(Ð+ˆØ�‰�tÔØ�
‰
×Ñ˜%Ô Ø�‰�r   c                ó´   — | j                   r| j                   d   |k(  sJ d«       ‚| j                   d= | j                  «        d|z  }| j                  |«       y )Néÿÿÿÿznonmatching endtagz</%s>)r2   Údedentr6   )r8   rf   rU   s      r;   ÚendtagzXMLWriter.endtag”   sM   € Ø�zŠz˜dŸj™j¨™n°Ò5ÐKÐ7KÓKÐ5Ø�J‰J�rˆNØ�‰ŒØ˜‰ˆØ�‰�tÕr   c                óü   — d}|dz  }d}t        dt        |«      |«      D ]Z  }t        ||||z    «      }d}d}t        d||«      D ]  }	||z   ||	|	|z    z   }d}Œ | j                  |«       | j	                  «        Œ\ y )Né   é   é   r   r   ú )ÚrangeÚlenÚhexStrr6   r7   )
r8   rU   Ú
linelengthÚhexlinelengthÚ	chunksizeÚiÚhexliner`   ÚwhiteÚjs
             r;   ÚdumphexzXMLWriter.dumphex›   s�   € Øˆ
Ø" Q™ˆØˆ	Ü�qœ#˜d›) ZÓ0ò 	ˆAÜ˜T ! a¨*¡nÐ5Ó6ˆGØˆDØˆEÜ˜1˜m¨YÓ7ò �Ø˜e‘| g¨a°!°i±-Ð&@Ñ@�Ø‘ðð �N‰N˜4Ô Ø�L‰L�Nñ	r   c                ó,   — | j                   dz   | _         y )Nr   ©r1   r@   s    r;   rK   zXMLWriter.indent©   s   € Ø×+Ñ+¨aÑ/ˆÕr   c                óN   — | j                   dkD  sJ ‚| j                   dz
  | _         y )Nr   r   r„   r@   s    r;   rq   zXMLWriter.dedent¬   s)   € Ø×Ñ !Ò#Ð#Ð#Ø×+Ñ+¨aÑ/ˆÕr   c                óü   — |r|rJ ‚t        |j                  «       «      }n|rt        |«      dk(  sJ ‚|d   }nyd}|D ];  \  }}t        |t        t
        f«      st        |«      }|d|›dt        |«      ›d�z   }Œ= |S )Nr   r   r   rw   z="ú")ÚsortedÚitemsry   r$   Úbytesr%   Ú
escapeattr)r8   rg   rh   Ú
attributesrU   ÚattrÚvalues          r;   rd   zXMLWriter.stringifyattrs°   s‡   € ÙÙˆO�8Ü §¡£Ó/‰JÙÜ�t“9 ’>Ð!�>Ø˜a™‰JàØˆØ%ò 	A‰KˆD�%Ü˜e¤e¬S \Ô2Ü˜E›
�Ùª¬j¸Õ.?Ð@Ñ@‰Dð	Að ˆr   )r9   z*str | os.PathLike[str] | BinaryIO | TextIOr.   r%   r4   zCallable[[], None] | Noner:   r%   r0   zstr | bytesÚreturnÚNone)r�   r�   )T)F)TF)Ú__name__Ú
__module__Ú__qualname__ÚINDENTr<   rA   rG   rC   r   rQ   rV   rX   r6   r7   ra   rj   rn   rr   r‚   rK   rq   rd   r?   r   r;   r   r      s¥   „ ð "Ø.2ØØ"&ð0à>ð0ð ð0ð ,ð	0ð
 ð0ð  ð0ð 
ó0òdòóó
6ò5ó6ò5óò+òòò
òòò0ò0ór   r   c                óv  — t        | d«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd	«      } | j                  t        «      }|| k7  rJd
}t	        | «      }t        | «      |kD  rt	        | d| «      dd dz   }t        j                  d|t        «       |S )zQEscape characters not allowed in `XML 1.0 <https://www.w3.org/TR/xml/#NT-Char>`_.r   ú&z&amp;rc   z&lt;rl   z&gt;úz&#13;é
   Nr   rp   z...zEIllegal XML character(s) found; replacing offending string %r with %r)	r
   r   Ú	translateÚILLEGAL_XML_CHARSÚreprry   ÚTTX_LOGÚwarningÚREPLACEMENT)rU   ÚnewDataÚmaxLenÚpreviews       r;   rM   rM   Á   s¶   € ä��wÓ€DØ�<‰<˜˜WÓ%€DØ�<‰<˜˜VÓ$€DØ�<‰<˜˜VÓ$€DØ�<‰<˜˜gÓ&€Dà�n‰nÔ.Ó/€GØ�$‚ØˆÜ�t“*ˆÜˆt‹9�vÒÜ˜4  ˜=Ó)¨!¨BÐ/°%Ñ7ˆGÜ�‰ØSØÜô	
ð
 €Nr   c                ó@   — t        | «      } | j                  dd«      } | S )Nr‡   z&quot;)rM   r   )rU   s    r;   r‹   r‹   ×   s    € Ü�$‹<€DØ�<‰<˜˜XÓ&€DØ€Kr   c                óP   — d„ }t        t        || j                  d«      «      «      S )zInput is Unicode string.c                ób   — t        | «      }d|cxk  rdk  r	n n| dvr| S dt        |«      z   dz   S )Nr   é   z<&>z&#ú;)Úordr›   )ÚcÚns     r;   Ú
escapecharzescape8bit.<locals>.escapecharà   s4   € Ü�‹FˆØ�Œ>�c�>˜a u™nØˆHàœ$˜q›'‘> CÑ'Ð'r   zlatin-1)r   ÚmapÚdecode)rU   rª   s     r;   rT   rT   Ý   s$   € ò(ô ”3�z 4§;¡;¨yÓ#9Ó:Ó;Ð;r   c                ó|   — t         j                  }d}| D ]$  }t        |«      }|||dz	  dz     z   ||dz     z   }Œ& |S )Nr   é   é   )rN   Ú	hexdigitsr   )rZ   ÚhÚrr¨   r~   s        r;   rz   rz   ê   sU   € Ü×Ñ€AØ
€AØò /ˆÜ�A‹JˆØ��1˜‘6˜S‘.Ñ!Ñ! A a¨#¡g¡JÑ.‰ð/ð €Hr   ) Ú__doc__Ú
__future__r   Útypingr   r   r   ÚfontTools.misc.textToolsr   r   r	   r
   r!   r&   rN   ÚloggingÚ	itertoolsr”   Ú	getLoggerrœ   rž   ÚdictÚfromkeysÚchainrx   rš   Úobjectr   rM   r‹   rT   rz   r?   r   r;   ú<module>r¾      s«   ðÙ 0å "ç -Ñ -ß EÓ EÛ 
Û 	Û Û Û à	€Ø
ˆ'×
Ñ
˜OÓ
,€Ø€Ø—M‘MØ€I‡O�OÙˆd�DÓØÙˆd�DÓÙˆf�fÓØóð ó	Ð ôb�ô bòJò,ò
<ór   