o
    hU	                     @   sF   d dl mZ d dlZedZdd Zdd Zeedd	d
d ZdS )    )DefaultTableNzfontTools.mergec                     s   | dd  fdd}|S )zOReturns a decorator function that adds a new method to one or
    more classes.allowDefaultTableFc                    sh   g }D ]-}||v rq| |  s|tksJ d| j|jvs*J d|j| jf t|| j|  qd S )NzOops, table class not found.z!Oops, class '%s' has method '%s'.)appendr   __name____dict__setattr)methoddoneclazzallowDefaultclazzes h/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/fontTools/merge/base.pywrapper   s   
zadd_method.<locals>.wrapper)get)r   kwargsr   r   r   r   
add_method   s   r   c                    s  dd | D } | st S dd | D } | sd S | d j t fdd| D s*J |  j}  }i }tjt gdd | D R  }|D ]Az| }W n  tyk   z|d }W n tyh   td	 jf w Y nw |t u rqqC|fd
d| D }|t ur||< qC||_	|S )Nc                 S   s   g | ]}|t ur|qS r   )NotImplemented.0itemr   r   r   
<listcomp>"       z mergeObjects.<locals>.<listcomp>c                 S   s   g | ]}|d ur|qS Nr   r   r   r   r   r   %   r   r   c                 3   s    | ]	}t | kV  qd S r   )typer   )r
   r   r   	<genexpr>*       zmergeObjects.<locals>.<genexpr>c                 s   s    | ]	}t | V  qd S r   )varskeysr   tabler   r   r   r   0   r   *z*Don't know how to merge key %s of class %sc                 3   s    | ]	}t | tV  qd S r   )getattrr   r    )keyr   r   r   =   r   )
r   	__class__allmergeMapsetunionKeyError	Exceptionr   r   )lstlogicreturnTable
returnDictallKeys
mergeLogicvaluer   )r
   r$   r   mergeObjects!   sB   
r3   T)r   c                 C   sD   t | dstd| j tS | j}t|tr|| | j|S ||S )Nr'   zDon't know how to merge '%s'.)	hasattrloginfotableTagr   r'   
isinstancedictr3   )selfmtablesr-   r   r   r   mergeF   s   

r=   )#fontTools.ttLib.tables.DefaultTabler   logging	getLoggerr5   r   r3   r=   r   r   r   r   <module>   s   

%