U
    »mœd  ã                   @   s,  d dl Z G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ	G dd„ deƒZ
G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG d d!„ d!eƒZG d"d#„ d#eƒZG d$d%„ d%eƒZdS )&é    Nc                   @   s   e Zd ZdZdS )ÚVarLibErrorz%Base exception for the varLib module.N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úP/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/fontTools/varLib/errors.pyr      s   r   c                   @   s   e Zd ZdZdS )ÚVarLibValidationErrorz>Raised when input data is invalid from varLib's point of view.Nr   r   r   r   r	   r
      s   r
   c                   @   sN   e Zd ZdZddd„Zedd„ ƒZdd„ Zed	d
„ ƒZedd„ ƒZ	dd„ Z
dS )ÚVarLibMergeErrorz=Raised when input data cannot be merged into a variable font.Nc                 K   s8   || _ |si }d|kr(|d | _|d= ng | _|| _d S )NÚstack)Úmergerr   Úcause©Úselfr   Úkwargsr   r   r	   Ú__init__   s    
zVarLibMergeError.__init__c                 C   s   | j S ©N)r   ©r   r   r   r	   Úreason   s    zVarLibMergeError.reasonc                 C   sd   | j d k	rZ| j j| }d|kr6|d  ¡ r6|d  ¡ S t|jdƒrZt|jjdƒrZ|jjjS d|› �S )NÚnameÚfilezmaster number )r   ÚttfsZgetBestFullNameÚhasattrÚreaderr   r   )r   ZixÚttfr   r   r	   Ú_master_name   s    

zVarLibMergeError._master_namec                    sh   dˆ j krddˆ j krd‡ fdd„ˆ j d D ƒ d¡}ˆ  |¡}dˆ j kr\|› dˆ j d › d�}||fS d	S )
NÚexpectedÚgotc                    s   g | ]}|ˆ j d  k‘qS )r   )r   ©Ú.0Úxr   r   r	   Ú
<listcomp>*   s     z-VarLibMergeError.offender.<locals>.<listcomp>FÚlocationú (ú))NN©r   Úindexr   )r   r'   Zmaster_namer   r   r	   Úoffender'   s    ÿ

zVarLibMergeError.offenderc                 C   sT   d| j krPd| j krP| j\}}| j d | }d| jd › d| j d ›d|›d�S dS )	Nr   r   zExpected to see r   ú==z, instead saw Ú
Ú )r   r(   r   )r   Úoffender_indexr(   r   r   r   r	   Údetails3   s
    
$zVarLibMergeError.detailsc                 C   s\   | j \}}d}|rd|› d�}d t| jƒ¡}tjd| j› d|› �dd�}d| | | j S )	Nr+   z!

The problem is likely to be in z:
z"Couldn't merge the fonts, because z:. This happened while performing the following operation: éN   )Úwidthz

)r(   ÚjoinÚreversedr   ÚtextwrapÚfillr   r-   )r   r,   r(   r#   ÚcontextÚbasicr   r   r	   Ú__str__;   s    
ýzVarLibMergeError.__str__)N)r   r   r   r   r   Úpropertyr   r   r(   r-   r6   r   r   r   r	   r      s   

	

r   c                       s$   e Zd ZdZe‡ fdd„ƒZ‡  ZS )ÚShouldBeConstantz9some values were different, but should have been the samec                    sÄ   t ƒ j}ˆ jd dks ˆ jd kr$|S ˆ jd dks6t‚ˆ j\}}ˆ jj| }t‡ fdd„ˆ jjD ƒƒ}dd„ |ˆ jd  jj	j
D ƒ}dd„ |ˆ jd  jj	j
D ƒ}|d	d
 |¡› dd
 |¡› d� S )Nr   z.FeatureCountc                 3   s>   | ]6}ˆ j d  |kr|ˆ j d   jjjˆ jd kr|V  qdS )éÿÿÿÿr   N)r   ÚtableÚFeatureListZFeatureCountr   )r    r   r   r   r	   Ú	<genexpr>V   s   ÿýz+ShouldBeConstant.details.<locals>.<genexpr>c                 S   s   g | ]
}|j ‘qS r   ©Z
FeatureTagr   r   r   r	   r"   ^   s   ÿz,ShouldBeConstant.details.<locals>.<listcomp>r9   c                 S   s   g | ]
}|j ‘qS r   r=   r   r   r   r	   r"   b   s   ÿz2
Incompatible features between masters.
Expected: z, z.
Got: z.
)Úsuperr-   r   r   ÚAssertionErrorr(   r   Únextr:   r;   ZFeatureRecordr0   )r   Zbasic_messager,   Ú_Zbad_ttfZgood_ttfZgood_featuresZbad_features©Ú	__class__r   r	   r-   L   s$    
þþþÿzShouldBeConstant.details)r   r   r   r   r7   r-   Ú__classcell__r   r   rB   r	   r8   I   s   r8   c                   @   s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )Ú
FoundANonezAone of the values in a list was empty when it shouldn't have beenc                 C   s(   dd„ | j d D ƒ d¡}||  |¡fS )Nc                 S   s   g | ]}|d k‘qS r   r   r   r   r   r	   r"   r   s     z'FoundANone.offender.<locals>.<listcomp>r   Tr&   ©r   r'   r   r   r	   r(   p   s    zFoundANone.offenderc                 C   s&   | j | j }}|d › d|d › d�S ©Nr   r)   r   r*   ©r   r   ©r   r   r   r   r   r	   r-   u   s    zFoundANone.detailsN©r   r   r   r   r7   r(   r-   r   r   r   r	   rE   m   s
   
rE   c                   @   s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )ÚNotANonezBone of the values in a list was not empty when it should have beenc                 C   s(   dd„ | j d D ƒ d¡}||  |¡fS )Nc                 S   s   g | ]}|d k	‘qS r   r   r   r   r   r	   r"   €   s     z%NotANone.offender.<locals>.<listcomp>r   Tr&   rF   r   r   r	   r(   ~   s    zNotANone.offenderc                 C   s&   | j | j }}|d › d|d › d�S rG   rH   rI   r   r   r	   r-   ƒ   s    zNotANone.detailsNrJ   r   r   r   r	   rK   {   s
   
rK   c                   @   s   e Zd ZdZdS )ÚMismatchedTypeszdata had inconsistent typesNr   r   r   r   r	   rL   ‰   s   rL   c                   @   s   e Zd ZdZdS )ÚLengthsDifferz*a list of objects had inconsistent lengthsNr   r   r   r   r	   rM   �   s   rM   c                   @   s   e Zd ZdZdS )Ú
KeysDifferz$a list of objects had different keysNr   r   r   r   r	   rN   ‘   s   rN   c                   @   s   e Zd ZdZdS )ÚInconsistentGlyphOrderz0the glyph order was inconsistent between mastersNr   r   r   r   r	   rO   •   s   rO   c                   @   s   e Zd ZdZdS )ÚInconsistentExtensionsz6the masters use extension lookups in inconsistent waysNr   r   r   r   r	   rP   ™   s   rP   c                       s.   e Zd ZdZd‡ fdd„	Zedd„ ƒZ‡  ZS )ÚUnsupportedFormatz6an OpenType subtable (%s) had a format I didn't expectNc                    s"   t ƒ j|f|Ž | jsdg| _d S )Nz.Format)r>   r   r   r   rB   r   r	   r       s    zUnsupportedFormat.__init__c                 C   s4   | j | jd  }d| jkr0|d| jd ›d�7 }|S )NZsubtableÚvaluer$   r%   )r   r   )r   Úsr   r   r	   r   ¥   s    
zUnsupportedFormat.reason)N)r   r   r   r   r   r7   r   rD   r   r   rB   r	   rQ   �   s   rQ   c                   @   s   e Zd ZdZdS )ÚInconsistentFormatszBan OpenType subtable (%s) had inconsistent formats between mastersNr   r   r   r   r	   rT   ­   s   rT   c                   @   s   e Zd ZdS )ÚVarLibCFFMergeErrorN)r   r   r   r   r   r   r	   rU   ±   s   rU   c                   @   s   e Zd ZdZdd„ ZdS )ÚVarLibCFFDictMergeErrorz/Raised when a CFF PrivateDict cannot be merged.c                 C   s6   d|› d|› d�}|D ]}|d|› �7 }q|f| _ d S )NzFor the Private Dict key 'z!', the default font value list:
	z5
had a different number of values than a region font:z
	©Úargs)r   ÚkeyrR   ÚvaluesÚ	error_msgZregion_valuer   r   r	   r   ¸   s
    ÿz VarLibCFFDictMergeError.__init__N©r   r   r   r   r   r   r   r   r	   rV   µ   s   rV   c                   @   s   e Zd ZdZdd„ ZdS )ÚVarLibCFFPointTypeMergeErrorzKRaised when a CFF glyph cannot be merged because of point type differences.c                 C   s0   d|› d|› d|› d|› d|› d�}|f| _ d S )NúGlyph 'ú': 'z' at point index ú in master index z+ differs from the default font point type 'ú'rW   )r   Z
point_typeZpt_indexÚm_indexÚdefault_typeÚ
glyph_namer[   r   r   r	   r   Å   s    "ÿz%VarLibCFFPointTypeMergeError.__init__Nr\   r   r   r   r	   r]   Â   s   r]   c                   @   s   e Zd ZdZdd„ ZdS )ÚVarLibCFFHintTypeMergeErrorzJRaised when a CFF glyph cannot be merged because of hint type differences.c                 C   s0   d|› d|› d|› d|› d|› d�}|f| _ d S )Nr^   r_   z' at index r`   z* differs from the default font hint type 'ra   rW   )r   Z	hint_typeZ	cmd_indexrb   rc   rd   r[   r   r   r	   r   Ñ   s    "ÿz$VarLibCFFHintTypeMergeError.__init__Nr\   r   r   r   r	   re   Î   s   re   c                   @   s   e Zd ZdZdS )ÚVariationModelErrorz(Raised when a variation model is faulty.Nr   r   r   r   r	   rf   Ú   s   rf   )r2   Ú	Exceptionr   r
   r   r8   rE   rK   rL   rM   rN   rO   rP   rQ   rT   rU   rV   r]   re   rf   r   r   r   r	   Ú<module>   s$   =$