a
    w=ic                     @   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
   d/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/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sd1}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rt#t|j|j"nd#}|d#krt$t%fi |}td=| t&t'(|$}|)|t|j| W d   n1 s0    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.   

	