o
    h                     @   s~   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	e
ZG dd deZdZG dd	 d	eZG d
d deZdS )    )ttLib)safeEval)DefaultTableNc                   @   s   e Zd ZdS )TTXParseErrorN)__name__
__module____qualname__ r	   r	   l/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/fontTools/misc/xmlReader.pyr      s    r   i @  c                   @   sJ   e Zd Z	dddZdddZdd Zd	d
 Zdd Zdd Zdd Z	dS )	XMLReaderNFc                 C   s   |dkrt j}t|dst|d| _d| _n|| _d| _|| _|| _|d ur4d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   r	   r	   r
   __init__   s"   


zXMLReader.__init__c                 C   s   |r	|  j d7  _ | jr)| jdd | j }| jd|d p!d | jd | | j | jr6|   |rA|  j d8  _ d S d S )N   r      d   )	r   r   r   seektellset
_parseFiler   close)r   rootlessfileSizer	   r	   r
   r   ,   s   
zXMLReader.readc                 C   s   | j   d S N)r   r(   )r   r	   r	   r
   r(   :   s   zXMLReader.closec                 C   s~   ddl m} | }| j|_| j|_| j|_d}	 |t	}|s'|
|d d S |t| }| jr8| j|d  |
|d q)Nr   )ParserCreateTr!   r#   )xml.parsers.expatr,   _startElementHandlerStartElementHandler_endElementHandlerEndElementHandler_characterDataHandlerCharacterDataHandlerr   BUFSIZEParselenr   r&   )r   r   r,   parserposchunkr	   r	   r
   r'   =   s    
zXMLReader._parseFilec                 C   s  | j dkr| jr| jg  d| _ d S | j }|d | _ |d}|d ur>t| jdr3tj	| jj
}nt }tj||}|sw|dkrJtd| | jjd u ro| jjso|d}|d urot|dkrktd	| d	 }|| j_| jg  d S |dkr|d urt|| j| j}|  | jg  d S t|}d
| }	| jr| j|	 t|	 |dkrtj}
nd|v sd|v rt|d rt}
nt|}
|
d u rt}
|dkr|| jv r| j| | _n|
|| _| j| j|< | jg  d S |dkr|d urt|| j| jdd}|  | jg  |j | _ d S |dkr+| 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dirnamer;   getcwdjoinr   r   readertablesr6   r   r<   r   r   r   r   xmlToTagsetLabelloginfor?   r   getTableClasscurrentTabler   )r   r;   attrsr   subFilerH   r<   	subReadertagmsg
tableClasslr	   r	   r
   r.   P   sp   







zXMLReader._startElementHandlerc                 C   st   | j dkr8|dkr.| jd r.t| jd d tr.| jd d dkr.| jd d  |7  < d S | jd | d S d S )Nr!   
rC   )r   r   
isinstancestrrD   )r   datar	   r	   r
   r2      s   
zXMLReader._characterDataHandlerc                 C   sj   | j d | _ | jd= | js1| j dkrd | _d S | j dkr3| j\}}}| j|||| j d | _d S d S d S )Nr!   rC   r"   )r   r   r   r   rR   fromXMLr   )r   r;   rS   contentr	   r	   r
   r0      s   



zXMLReader._endElementHandler)NNF)F)
r   r   r   r    r   r(   r'   r.   r2   r0   r	   r	   r	   r
   r      s    

Er   c                   @   s2   e Zd ZdddZdddZddd	Zd
d ZdS )ProgressPrinterr#   c                 C      t | d S r+   print)r   titlemaxvalr	   r	   r
   r          zProgressPrinter.__init__Nc                 C      d S r+   r	   )r   valre   r	   r	   r
   r&         zProgressPrinter.setr!   c                 C   rg   r+   r	   )r   rh   r	   r	   r
   	increment   ri   zProgressPrinter.incrementc                 C   ra   r+   rb   )r   textr	   r	   r
   rN      rf   zProgressPrinter.setLabel)r#   r+   )r!   )r   r   r   r    r&   rj   rN   r	   r	   r	   r
   r`      s
    


r`   )	fontToolsr   fontTools.misc.textToolsr   #fontTools.ttLib.tables.DefaultTabler   r   rF   logging	getLoggerr   rO   	Exceptionr   r4   objectr   r`   r	   r	   r	   r
   <module>   s    
 