
    rbi                    R   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                     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dS )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dS )(	XMLWriterNutf_8

fileOrPath*str | os.PathLike[str] | BinaryIO | TextIOindentwhitestridlefuncCallable[[], None] | Noneencoding
newlinestrstr | bytesreturnNonec                   |                                                     dd                              dd          dk    rt          d          |dk    rt          j        }|  t          |d          sTt          |t          t          j	        f          st          d          || _        t          |d          | _        d	| _        nd | _        || _        d
| _        	 | j                            d           t           | _        n6# t          $ r) | j                            d           t$          | _        Y nw xY w|                     |          | _        |%|                     t          j                  | _        n|                     |          | _        d| _        g | _        d| _        || _        d| _        |                     d           |                                  d S )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
isinstancer   osPathLike	TypeErrorfilenameopenfile_closeStreamr%   r	   totyper
   r   linesepr   indentlevelstack
needindentr   idlecounter	_writerawnewline)selfr   r   r   r   r   s         h/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/fontTools/misc/xmlWriter.py__init__zXMLWriter.__init__   s    >>##C,,44S"==GG?@@@J4z7++ 	&j3*<== s   'DMZ..DI $D DM"DI %D	  IOOC   !DKK 	  	  	 IOOBDKKK	   ;;{33"kk"*55DOO"kk*55DO
 ?@@@s   &D 0D87D8c                    | S N r?   s    r@   	__enter__zXMLWriter.__enter__O   s    r'   c                .    |                                   d S rC   )close)r?   exception_typeexception_value	tracebacks       r@   __exit__zXMLWriter.__exit__R   s    

r'   c                    | j         rCt          | j        t          t          j        f          rJ | j                                         d S d S rC   )r6   r/   r5   r   r0   r1   rH   rE   s    r@   rH   zXMLWriter.closeU   sN     	!$)c2;-?@@@@@IOO	 	r'   Tc                N    |                      t          |          |           dS )zWrites text.indentNr=   escape)r?   stringrP   s      r@   r%   zXMLWriter.writeZ   s$    vf~~f55555r'   c                <    |                      d|z   dz              dS )zWrites text in a CDATA section.z	<![CDATA[z]]>N)r=   r?   rS   s     r@   
writecdatazXMLWriter.writecdata^   s$    {V+e344444r'   Fc                N    |                      t          |          |           dS )zWrites 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)r=   
escape8bit)r?   datarX   s      r@   	write8bitzXMLWriter.write8bitb   s(    
 	z$''u55555r'   c                N    |                      t          |          d           dS )z Writes text without indentation.FrO   NrQ   rU   s     r@   write_noindentzXMLWriter.write_noindenti   s$    vf~~e44444r'   c                   |r5| j         r.| j                            | j        | j        z             d| _         |                     |d          }|r|                                }| j                            |           dS )z Writes bytes, possibly indented.r   r   )r   N)r;   r5   r%   r9   r   r7   rX   )r?   rZ   rP   rX   ss        r@   r=   zXMLWriter._writerawm   s}     	 do 	 IOOD,t/??@@@DOKKwK// 			A	r'   c                    | j                             | j                   d| _        | j        }|dz  s| j        |                                  |dz   | _        d S )Nr(   d   )r5   r%   r   r;   r<   r   )r?   r<   s     r@   r>   zXMLWriter.newlinew   sZ    	(((&S  	T]%>MMOOO&?r'   c                &   t          |          }|                    d          }|                     d|d         z              |dd          D ].}|                                  |                     d|z              /|                     d           d S )Nr   z<!-- r   r(   z     z -->)rR   splitr=   r>   )r?   rZ   lineslines       r@   commentzXMLWriter.comment   s    d||

4  wq)***!""I 	+ 	+DLLNNNNN7T>****vr'   c                Z     | j         |i |}d||d}|                     |           d S )N<z/>)stringifyattrsr=   r?   _TAG_argskwargsattrdatarZ   s         r@   	simpletagzXMLWriter.simpletag   sC    &4&777!E888,tr'   c                     | j         |i |}d||d}|                     |           | j                            |           |                                  d S )Nrh   >)ri   r=   r:   appendrP   rj   s         r@   begintagzXMLWriter.begintag   sd    &4&777 5(((+t
%   r'   c                    | j         r| j         d         |k    s
J d            | j         d= |                                  d|z  }|                     |           d S )Nznonmatching endtagz</%s>)r:   dedentr=   )r?   rk   rZ   s      r@   endtagzXMLWriter.endtag   s`    zKdjn5557K555JrNtr'   c                :   d}|dz  }d}t          dt          |          |          D ]r}t          ||||z                      }d}d}t          d||          D ]}	||z   ||	|	|z            z   }d}|                     |           |                                  sd S )N         r   r"    )rangelenhexStrr=   r>   )
r?   rZ   
linelengthhexlinelength	chunksizeihexlinere   whitejs
             r@   dumphexzXMLWriter.dumphex   s    
"Q	q#d))Z00 	 	AT!a*n"4566GDE1mY77  e|ga!i-.?&@@NN4   LLNNNN	 	r'   c                $    | j         dz   | _         d S )Nr(   r9   rE   s    r@   rP   zXMLWriter.indent   s    +a/r'   c                >    | j         dk    sJ | j         dz
  | _         d S )Nr   r(   r   rE   s    r@   rv   zXMLWriter.dedent   s,    !####+a/r'   c                6   |r&|rJ t          |                                          }n"|rt          |          dk    sJ |d         }ndS d}|D ]I\  }}t          |t          t
          f          st          |          }|d|dt          |          dz   }J|S )Nr(   r   r"   r|   z="")sorteditemsr~   r/   bytesr   
escapeattr)r?   rl   rm   
attributesrZ   attrvalues          r@   ri   zXMLWriter.stringifyattrs   s     	OOO//JJ 	t99>>>>aJJ2% 	A 	AKD%eeS\22 #E

4j.?.?.?.?@@DDr'   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )T)F)TF)__name__
__module____qualname__INDENTrA   rF   rL   rH   r%   rV   r[   r]   r=   r>   rf   ro   rs   rw   r   rP   rv   ri   rD   r'   r@   r   r      sO        ".2"&0 0 0 0 0d       
6 6 6 65 5 56 6 6 65 5 5   + + +    
      0 0 00 0 0    r'   r   c                   t          | d          } |                     dd          } |                     dd          } |                     dd          } |                     dd	          } |                     t                    }|| k    rgd
}t	          |           }t          |           |k    r"t	          | d|                   dd         dz   }t                              d|t                     |S )zQEscape characters not allowed in `XML 1.0 <https://www.w3.org/TR/xml/#NT-Char>`_.r   &z&amp;rh   z&lt;rq   z&gt;z&#13;
   Nr(   ru   z...zEIllegal XML character(s) found; replacing offending string %r with %r)	r
   r*   	translateILLEGAL_XML_CHARSreprr~   TTX_LOGwarningREPLACEMENT)rZ   newDatamaxLenpreviews       r@   rR   rR      s    wD<<W%%D<<V$$D<<V$$D<<g&&Dnn.//G$t**t99v4=))!B$/%7GS	
 	
 	

 Nr'   c                P    t          |           } |                     dd          } | S )Nr   z&quot;)rR   r*   )rZ   s    r@   r   r      s%    $<<D<<X&&DKr'   c                h    d }t          t          ||                     d                              S )zInput is Unicode string.c                v    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   sH    FF>>>>c>>>>>aunnH$q''>C''r'   zlatin-1)r   mapdecode)rZ   r   s     r@   rY   rY      s7    ( ( ( 3z4;;y#9#9::;;;r'   c                    t           j        }d}| D ].}t          |          }|||dz	  dz           z   ||dz           z   }/|S )Nr"         )rS   	hexdigitsr   )r_   hrr   r   s        r@   r   r      sT    A
A / /AJJ16S.!!Aa#gJ.Hr'   ) __doc__
__future__r   typingr   r   r   fontTools.misc.textToolsr   r   r	   r
   r,   r0   rS   logging	itertoolsr   	getLoggerr   r   dictfromkeyschainr}   r   objectr   rR   r   rY   r   rD   r'   r@   <module>r      s   0 0 " " " " " " - - - - - - - - - - E E E E E E E E E E E E 



 				      	
'
O
,
,MMIOdDdDff  	 	 b b b b b b b bJ  ,  
< 
< 
<    r'   