o
    iU	                     @   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ZallowDefaultclazzes c/var/www/html/eduruby.in/lip-sync/lip-sync-env/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logicZreturnTableZ
returnDictZallKeysZ
mergeLogicvaluer   )r
   r#   r   mergeObjects!   sB   
r.   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infoZtableTagr   r&   
isinstancedictr.   )selfmZtablesr,   r   r   r   mergeF   s   

r6   )Z#fontTools.ttLib.tables.DefaultTabler   logging	getLoggerr0   r   r.   r6   r   r   r   r   <module>   s   

%