
    jkeU	                     h    d dl mZ d dlZ ej                  d      Zd Zd Z eed      d        Zy)	    )DefaultTableNzfontTools.mergec                  :     |j                  dd       fd}|S )zOReturns a decorator function that adds a new method to one or
    more classes.allowDefaultTableFc                 
   g }D ]{  }||v r|j                  |       s|t        k7  sJ d       | j                  |j                  vs"J d|j                  d| j                  d       t	        || j                  |        } y )NzOops, table class not found.zOops, class 'z' has method 'z'.)appendr   __name____dict__setattr)methoddoneclazzallowDefaultclazzess      6/usr/lib/python3/dist-packages/fontTools/merge/base.pywrapperzadd_method.<locals>.wrapper   s     	4E}KK5L#8X:XX8u~~5W6;nnfooVW5E6??F3	4     )get)r   kwargsr   r   s   `  @r   
add_methodr      s"     ::159L Nr   c           	      D  	 | D cg c]  }|t         us| } }| st         S | D cg c]  }||	 } }| sy | d   j                  t        fd| D              sJ |        j                  }        }i }t	        j
                  t	               gd | D         }|D ]0  		 |	   }|t         u r |	fd| D              }|t         us,||	<   2 ||_	        |S c c}w c c}w # t        $ r2 	 |d   }n(# t        $ r t        d	dj                        w xY wY ww xY w)Nr   c              3   :   K   | ]  }t        |      k(    y wN)type).0itemr   s     r   	<genexpr>zmergeObjects.<locals>.<genexpr>*   s     3ttDzU"3s   c              3   N   K   | ]  }t        |      j                           y wr   )varskeys)r   tables     r   r   zmergeObjects.<locals>.<genexpr>0   s      Ee!1!1!3 Es   #%*zDon't know how to merge key z
 of class c              3   @   K   | ]  }t        |t                y wr   )getattrNotImplemented)r   r    keys     r   r   zmergeObjects.<locals>.<genexpr>=   s     P575#~>Ps   )
r$   	__class__allmergeMapsetunionKeyError	Exceptionr   r	   )
lstr   logicreturnTable
returnDictallKeys
mergeLogicvaluer   r%   s
           @@r   mergeObjectsr4   !   sN   
>D4~#=4
>C
>
4D4#34
4C
4FE3s338S83NNE'KJiiF E EFG $	sJ 'PCPP&#JsO$  &KC ? 5  	"3Z
 DGX  	s>   CCCC"C$$	D.C43D4%DDDT)r   c                     t        | d      s&t        j                  d| j                         t        S | j
                  }t        |t              r|j                  | | j
                  |      S  ||      S )Nr(   zDon't know how to merge '%s'.)	hasattrloginfotableTagr$   r(   
isinstancedictr4   )selfmtablesr.   s       r   merger?   F   sY    4$0$--@MME%~~dDMM6::V}r   )#fontTools.ttLib.tables.DefaultTabler   logging	getLoggerr7   r   r4   r?    r   r   <module>rD      sH   
 =  g)**"J LD1
 2
r   