
    ]Mh                         d dl mZ d dlmZ d dlmZ d dlZd dlZd dlZ ej	        e
          Z G d de          ZdZ G d d	e          Z G d
 de          ZdS )    )ttLib)safeEval)DefaultTableNc                       e Zd ZdS )TTXParseErrorN)__name__
__module____qualname__     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/misc/xmlReader.pyr   r      s        Dr   r   i @  c                   >    e Zd Z	 d
dZddZd Zd Zd Zd Zd	 Z	dS )	XMLReaderNFc                 *   |dk    rt           j        }t          |d          st          |d          | _        d| _        n|| _        d| _        || _        || _        |ddlm	}  |dd	           || _
        d | _        g | _        || _        d| _        d S )
N-readrbTFr   )deprecateArgumentquietzconfigure logging instead)sysstdinhasattropenfile_closeStreamttFontprogressfontTools.misc.loggingToolsr   r   rootcontentStackcontentOnly	stackSize)self
fileOrPathr   r   r   r!   r   s          r   __init__zXMLReader.__init__   s     Jz6** 	&Z..DI $D #DI %D EEEEEEg'BCCCDJ	&r   c                    |r| xj         dz  c_         | j        rn| j                            dd           | j                                        }| j                            d|dz  pd           | j                            d           |                     | j                   | j        r|                                  |r| xj         dz  c_         d S d S )N   r      d   )	r"   r   r   seektellset
_parseFiler   close)r#   rootlessfileSizes      r   r   zXMLReader.read,   s     	 NNaNN= 	INN1a   y~~''HMaS!5A666INN1	""" 	JJLLL 	 NNaNNNN	  	 r   c                 8    | j                                          d S N)r   r.   )r#   s    r   r.   zXMLReader.close:   s    	r   c                 r   ddl m}  |            }| j        |_        | j        |_        | j        |_        d}	 |                    t                    }|s|
                    |d           d S |t          |          z   }| j        r| j                            |dz             |
                    |d           )Nr   )ParserCreateTr'   r)   )xml.parsers.expatr4   _startElementHandlerStartElementHandler_endElementHandlerEndElementHandler_characterDataHandlerCharacterDataHandlerr   BUFSIZEParselenr   r,   )r#   r   r4   parserposchunks         r   r-   zXMLReader._parseFile=   s    222222%)%>"#'#: &*&@#	#IIg&&E UA&&&E

"C} .!!#*---LL"""	#r   c                 8   | j         dk    r*| j        r#| j                            g            d| _         d S | j         }|dz   | _         |                    d          }|rt          | j        d          r*t          j        	                    | j        j
                  }nt          j                    }t          j                            ||          }|s|dk    rt          d|z            | j        j        W| j        j        sK|                    d          }|4t#          |          dk    rt%          d	|z   d	z             }|| j        _        | j                            g            d S |dk    rS|Kt)          || j        | j                  }|                                 | j                            g            d S t/          j        |          }d
|z  }	| j        r| j                            |	           t4                              |	           |dk    rt.          j        }
nBd|v sd|v rt%          |d                   rt:          }
nt/          j        |          }
|
t:          }
|dk    r|| j        v r| j        |         | _        n |
|          | _        | j        | j        |<   | j                            g            d S |dk    r[|Yt)          || j        | j        d          }|                                 | j                            g            |j         | _         d S |dk    r1| j                            g            ||| j        d         f| _         d S g }| j        d                             |||f           | j                            |           d S )Nr'   r(   srcnamer   zillegal root tag: %ssfntVersion   "zParsing '%s' table...
GlyphOrderERRORrawlocaT)r!   )!r"   r!   r    appendgetr   r   ospathdirnamerD   getcwdjoinr   r   readertablesr>   r   rE   r   r   r   r   xmlToTagsetLabelloginforH   r   getTableClasscurrentTabler   )r#   rD   attrsr"   subFilerQ   rE   	subReadertagmsg
tableClassls               r   r6   zXMLReader._startElementHandlerP   s   >Q4#3 $$R(((DNFN	"Q))E""ty&)) &'//$).99 )++gll7G44G 0	(x#$:T$ABBB{!)$+2D)#ii66*;''1,,&.s[/@3/F&G&G.9DK+$$R(((((!^^"%gt{DMJJ	   !((,,,.&&C)C/C} ,&&s+++HHSMMMl"""-

E!!eunn%,9O9On)

"055
%!-Jf}}!3!3 %)K$4!!$.JsOO!#'#4C $$R(((((!^^ 3!'4;SWXXXINN$$R(((!DIII!^^$$R(((ud&7&;<DIIIAb!(($q)9:::$$Q'''''r   c                 :   | j         dk    r|dk    rg| j        d         rZt          | j        d         d         t                    r4| j        d         d         dk    r| j        d         dxx         |z  cc<   d S | j        d                             |           d S d S )Nr'   
rL   )r"   r    
isinstancestrrM   )r#   datas     r   r:   zXMLReader._characterDataHandler   s    >A %b) t04R8#>>  %b)"-55!"%b)))T1)))))!"%,,T22222 r   c                     | j         dz
  | _         | j        d= | j        sU| j         dk    r	d | _        d S | j         dk    r8| j        \  }}}| j                            |||| j                   d | _        d S d S d S )Nr'   rL   r(   )r"   r    r!   r   r[   fromXMLr   )r#   rD   r\   contents       r   r8   zXMLReader._endElementHandler   s    !+b! 	!~"" 			1$$'+y$eW!))$wLLL 				! 	! %$r   )NNF)F)
r   r	   r
   r%   r   r.   r-   r6   r:   r8   r   r   r   r   r      s        IN   0         # # #&C( C( C(J3 3 3 	! 	! 	! 	! 	!r   r   c                   ,    e Zd ZddZd	dZd
dZd ZdS )ProgressPrinterr)   c                 $    t          |           d S r2   print)r#   titlemaxvals      r   r%   zProgressPrinter.__init__   s    er   Nc                     d S r2   r   )r#   valrq   s      r   r,   zProgressPrinter.set       r   r'   c                     d S r2   r   )r#   rs   s     r   	incrementzProgressPrinter.increment   rt   r   c                 $    t          |           d S r2   rn   )r#   texts     r   rW   zProgressPrinter.setLabel   s    dr   )r)   r2   )r'   )r   r	   r
   r%   r,   rv   rW   r   r   r   rl   rl      s_                     r   rl   )	fontToolsr   fontTools.misc.textToolsr   #fontTools.ttLib.tables.DefaultTabler   r   rO   logging	getLoggerr   rX   	Exceptionr   r<   objectr   rl   r   r   r   <module>r      s         - - - - - - < < < < < < 



 				  g!!	 	 	 	 	I 	 	 	 [! [! [! [! [! [! [! [!|    f     r   