a
    èÝEbÂ  ã                   @   sð   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Z
ddlmZmZ dZzd dlZW nD ey¬   zd dlZW n$ ey¦ Z zW Y dZ[n
dZ[0 0 Y n0 e d¡Zdd„ Zd	d
„ Zddd„Zdd„ Zdd„ Zddd„ZdS )é    N)Úclosing)Úpartialé   )Úfont_to_quadraticÚfonts_to_quadraticzfontTools.cu2quc                   C   s$   z
t  ¡ W S  ty   Y dS 0 d S )Nr   )ÚmpÚ	cpu_countÚNotImplementedError© r
   r
   úS/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/fontTools/cu2qu/cli.pyÚ
_cpu_count   s    
r   c                 C   s"   t tjdƒrtj | ¡S t | ¡S )NÚopen)ÚhasattrÚ
ufo_moduleZFontr   )Úpathr
   r
   r   Úopen_ufo    s    r   c                 K   s\   t | ƒ}t d| ¡ t|fi |¤ŽrJt d|¡ |r@| |¡ qX| ¡  n|rXt| |ƒ d S )NzConverting curves for %sú	Saving %s)r   ÚloggerÚinfor   ÚsaveÚ	_copytree)Ú
input_pathÚoutput_pathÚkwargsÚufor
   r
   r   Ú_font_to_quadratic&   s    
r   c                 C   s@   t j t j t j | ¡¡¡} t j t j t j |¡¡¡}| |kS )N)Úosr   ÚnormcaseÚabspathÚrealpath)Zpath1Zpath2r
   r
   r   Ú	_samepath3   s    r    c                 C   s>   t | |ƒrt d¡ d S tj |¡r.t |¡ t | |¡ d S )Nz6input and output paths are the same file; skipped copy)	r    r   Údebugr   r   ÚexistsÚshutilÚrmtreeÚcopytree)r   r   r
   r
   r   r   :   s    


r   c              
      s(  t jdd�}|jddtjd� |jdddd	d
� |jddddd� |jddtdddd� |jddddd� | ¡ }|jddddd� |jd d!td"d#tƒ d$d%d&� | ¡ }|jd'd(dd)d*d+� |jd,d-dd.d/d+� | 	| ¡}t
du rì| d0¡ |jsød1}n|jd#k�r
d2}nd3}tj|d4� t|jƒd#k�r<|j�r<| d5¡ |j�r–|j‰ tj ˆ ¡�sdt ˆ ¡ ntj ˆ ¡�s€| d6ˆ  ¡ ‡ fd7d8„|jD ƒ}n"|j�r¨|jg}ndgt|jƒ }t|jdk|j|jd9�}|j�rlt d:¡ d;d8„ |jD ƒ}t|fi |¤Ž�rBt||ƒD ]0\}	}
t d<|
¡ |
�r4|	  |
¡ n|	  ¡  �qn(t|j|ƒD ]\}}
|
�rNt!||
ƒ �qNn¸|j"d#k�rŠt#t|jƒ|j"ƒnd#}|d#k�rút$t%fi |¤Ž}t d=|¡ t&t' (|¡ƒ�$}| )|t|j|ƒ¡ W d  ƒ n1 �sî0    Y  n*t|j|ƒD ]\}}
t%||
fi |¤Ž �qdS )>z1Convert a UFO font from cubic to quadratic curvesZcu2qu)Úprogz	--versionÚversion)Úactionr'   Úinfilesú+ZINPUTz%one or more input UFO source file(s).)ÚnargsÚmetavarÚhelpz-vz	--verboseÚcountr   )r(   Údefaultz-ez--conversion-errorÚERRORNz<maxiumum approximation error measured in EM (default: 0.001))Útyper,   r/   r-   z--keep-directionÚreverse_directionÚstore_falsez$do not reverse the contour direction)Údestr(   r-   z-iz--interpolatableÚ
store_truez@whether curve conversion should keep interpolation compatibility)r(   r-   z-jz--jobsú?r   ÚNz9Convert using N multiple processes (default: %(default)s))r1   r+   r/   Úconstr,   r-   z-oz--output-fileZOUTPUTzsoutput filename for the converted UFO. By default fonts are modified in place. This only works with a single input.)r/   r,   r-   z-dz--output-dirZ	DIRECTORYz-output directory where to save converted UFOsz9Either ufoLib2 or defcon are required to run this script.ÚWARNINGÚINFOÚDEBUG)Úlevelz2-o/--output-file can't be used with multile inputsz'%s' is not a directoryc                    s"   g | ]}t j ˆ t j |¡¡‘qS r
   )r   r   ÚjoinÚbasename)Ú.0Úp©Ú
output_dirr
   r   Ú
<listcomp>‘   s   ÿzmain.<locals>.<listcomp>)Z
dump_statsZ
max_err_emr2   zConverting curves compatiblyc                 S   s   g | ]}t |ƒ‘qS r
   )r   )r?   Úinfiler
   r
   r   rC   ¡   ó    r   zRunning %d parallel processes)*ÚargparseÚArgumentParserÚadd_argumentÚ	fontToolsÚ__version__ÚfloatÚadd_mutually_exclusive_groupÚintr   Ú
parse_argsr   ÚerrorÚverboseÚloggingÚbasicConfigÚlenr)   Zoutput_filerB   r   r   r"   ÚmkdirÚisdirÚdictZconversion_errorr2   Zinterpolatabler   r   r   Úzipr   r   ÚjobsÚminr   r   r   r   ZPoolÚstarmap)ÚargsÚparserZmode_parserZoutput_parserÚoptionsr<   Zoutput_pathsr   Zufosr   r   r   rX   ÚfuncÚpoolr
   rA   r   ÚmainC   sÚ    ÿüúüüø
ûû



þ

þ
ÿÿÿ
6r`   )N)N)r   rF   rQ   r#   Úmultiprocessingr   Ú
contextlibr   Ú	functoolsr   rI   r   r   r   r   ZufoLib2ÚImportErrorZdefconÚeÚ	getLoggerr   r   r   r   r    r   r`   r
   r
   r
   r   Ú<module>   s.   

	