a
    —ÆàgU	  ã                   @   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 ]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© úM/var/www/sistema_ama/venv/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 ræq†|‡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   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!   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   ÚmergeF   s    

r5   )Z#fontTools.ttLib.tables.DefaultTabler   ÚloggingÚ	getLoggerr/   r   r-   r5   r   r   r   r   Ú<module>   s   
%
