a
    w=ic                      @   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 )zLReturns a decorator function that adds a new method to one or
	more classes.allowDefaultTableFc                    sh   g }D ]Z}||v rq| |  s4|tks4J d| j|jvsTJ 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 e/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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 sTJ |  j}  }i }tjt gdd | D R  }|D ]z| }W nD ty   z|d }W n$ ty   td	 jf Y n0 Y n0 |t u rq|fd
d| D }|t ur||< q||_	|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>%   r   zmergeObjects.<locals>.<genexpr>c                 s   s   | ]}t | V  qd S r   )varskeysr   tabler   r   r   r   +   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   7   r   )
r   	__class__allmergeMapsetunionKeyError	Exceptionr   r   )lstlogicZreturnTableZ
returnDictZallKeysZ
mergeLogicvaluer   )r
   r"   r   mergeObjects   s:    

r-   T)r   c                 C   sH   t | dstd| j tS | j}t|tr<|| | j|S ||S d S )Nr%   zDon't know how to merge '%s'.)	hasattrloginfoZtableTagr   r%   
isinstancedictr-   )selfmZtablesr+   r   r   r   merge?   s    

r5   )Z#fontTools.ttLib.tables.DefaultTabler   logging	getLoggerr/   r   r-   r5   r   r   r   r   <module>   s   
#
