Your IP : 52.15.65.43
3
\]/�@s�dZddlZddlZddlZddlZddlZddlmZdddgZ ddd �Z
ddd�Zdd
d�Zddd�Z
dd�Zedkr�ee��Zeje�dS)a�Module/script to byte-compile all .py files to .pyc files.
When called as a script with arguments, this compiles the directories
given as arguments recursively; the -l option prevents it from
recursing into directories.
Without arguments, if compiles all modules on sys.path, without
recursing into subdirectories. (Even though it should do so for
packages -- for now, you'll have to deal with packages separately.)
See module py_compile for details of the actual byte-compilation.
�N)�partial�compile_dir�compile_file�compile_path�
ccs |dkrt|tj�rtj|�}|s0tdj|��ytj|�}Wn.tk
rl|dkrdtdj|��g}YnX|j�x�|D]�}|dkr�q|tj j
||�}|dk r�tj j
||�}nd}tj j|�s�|Vq||dkr||tjkr||tj
kr|tj j|�r|tj j|�r|t|||d|d�EdHq|WdS)N�zListing {!r}...zCan't list {!r}�__pycache__r�)�ddir� maxlevels�quiet)�
isinstance�os�PathLike�fspath�print�format�listdir�OSError�sort�path�join�isdir�curdir�pardir�islink� _walk_dir)�dirr
rr�names�name�fullname�dfile�r"�"/usr/lib64/python3.6/compileall.pyrs0
rFr c Cs�d} |dk rP|dkrtd��n2|dkrPyddlm} Wntk
rNd}YnXt||||d�}
d}|dk r�|dkr�| dk r�|p�d}| |d��0}|jtt||||||d �|
�}
t|
dd
�}WdQRXn&x$|
D]}t|||||||�s�d}q�W|S)a�Byte-compile all modules in the given directory tree.
Arguments (only dir is required):
dir: the directory to byte-compile
maxlevels: maximum recursion level (default 10)
ddir: the directory that will be prepended to the path to the
file as it is compiled into each byte-code file.
force: if True, force compilation, even if timestamps are up-to-date
quiet: full output with False or 0, errors only with 1,
no output with 2
legacy: if True, produce legacy pyc paths instead of PEP 3147 paths
optimize: optimization level or -1 for level of the interpreter
workers: maximum number of parallel workers
Nrz%workers must be greater or equal to 0r )�ProcessPoolExecutor)rrr
T)Zmax_workers)r
�force�rxr�legacy�optimize)�defaultF) �
ValueErrorZconcurrent.futuresr$�ImportErrorr�maprr�min)rrr
r%r&rr'r(�workersr$�files�successZexecutorZresults�filer"r"r#r2s6
cCs�d}|dkr"t|tj�r"tj|�}tjj|�}|dk rFtjj||�} nd} |dk rd|j|�}
|
rd|Stjj|��r�|r�|d}nB|dkr�|dkr�|nd}t j
j||d�}nt j
j|�}tjj|�}
|dd�|dd�}}|d
k�r�|�sXyTt
tj|�j�}tjdt j
j|�}t|d��}|jd
�}WdQRX||k�r>|SWntk
�rVYnX|�sltdj|��ytj||| d|d�}Wn�tjk
�r}zdd}|dk�r�|S|�r�tdj|��ntddd�|jjtjjdd�}|j tjj�}t|�WYdd}~Xn~t!t"tfk
�rv}zLd}|dk�r2|S|�rHtdj|��ntddd�t|j#j$d|�WYdd}~XnX|dk�r�d}|S)aByte-compile one file.
Arguments (only fullname is required):
fullname: the file to byte-compile
ddir: if given, the directory name compiled in to the
byte-code file.
force: if True, force compilation, even if timestamps are up-to-date
quiet: full output with False or 0, errors only with 1,
no output with 2
legacy: if True, produce legacy pyc paths instead of PEP 3147 paths
optimize: optimization level or -1 for level of the interpreter
TrN�crr �)�optimization�z.pyz<4sl�rb�zCompiling {!r}...)r(Fz*** Error compiling {!r}...z*** )�end�backslashreplace)�errors�:���r<)%r
rrrr�basenamer�search�isfile� importlib�util�cache_from_source�dirname�int�stat�st_mtime�structZpack�MAGIC_NUMBER�open�readrrr�
py_compile�compile�PyCompileError�msg�encode�sys�stdout�encoding�decode�SyntaxError�UnicodeError� __class__�__name__)r r
r%r&rr'r(r0rr!Zmo�cfile�optZ cache_dir�head�tail�mtimeZexpectZchandleZactual�ok�errrN�er"r"r#rbsx
$
c
CsXd}xNtjD]D}|s |tjkr6|r6|dkrPtd�q|oNt||d||||d�}qW|S)awByte-compile all module on sys.path.
Arguments (all optional):
skip_curdir: if true, skip current directory (default True)
maxlevels: max recursion level (default 0)
force: as for compile_dir() (default False)
quiet: as for compile_dir() (default 0)
legacy: as for compile_dir() (default False)
optimize: as for compile_dir() (default -1)
TrzSkipping current directoryN)rr'r()rPrrrrr)Zskip_curdirrr%rr'r(r0rr"r"r#r�s
c
Cszddl}|jdd�}|jdddddd d
�|jdtdd
d�|jddddd�|jdddddd�|jddddd�|jdddddd �|jd!d"d#dd$d �|jd%d&d'd(d)�|jd*d+d,d-d.�|jd/d0d1td2d3�|j�}|j}|jr�ddl}|j|j�|_|j dk �r|j }n|j
}|j�r�yJ|jd4k�r4tj
nt|j��$}x|D]}|j|j���qFWWdQRXWn2tk
�r�|jd5k�r�td6j|j��d7SX|jdk �r�|j�p�d|_d8}y�|�r4xj|D]b} tjj| ��rt| |j|j|j|j|j��s*d7}n*t| ||j|j|j|j|j|jd9��s�d7}�q�W|St|j|j|jd:�SWn*tk
�rt|jd5k�rptd;�d7SXd8S)<zScript main program.rNz1Utilities to support installing Python libraries.)Zdescriptionz-lZstore_constrrz!don't recurse into subdirectories)�actionZconstr)�dest�helpz-r� recursionzhcontrol the maximum recursion level. if `-l` and `-r` options are specified, then `-r` takes precedence.)�typerarbz-f�
store_truer%z/force rebuild even if timestamps are up to date)r`rarbz-q�countrzIoutput only error messages; -qq will suppress the error messages as well.)r`rar)rbz-br'z0use legacy (pre-PEP3147) compiled file locationsz-dZDESTDIRr
z�directory to prepend to file paths for use in compile-time tracebacks and in runtime tracebacks in cases where the source file is unavailable)�metavarrar)rbz-xZREGEXPr&zskip files matching the regular expression; the regexp is searched for in the full path of each file considered for compilationz-iZFILE�flistzzadd all the files and directories listed in FILE to the list considered for compilation; if "-", names are read from stdin)rgrarb�compile_destzFILE|DIR�*zrzero or more file and directory names to compile; if no arguments given, defaults to the equivalent of -l sys.path)rg�nargsrbz-jz --workersr zRun compileall concurrently)r)rdrb�-rzError reading file list {}FT)r.)r'r%rz
[interrupted]) �argparse�ArgumentParser�add_argumentrD�
parse_argsrir&�rerLrcrrhrP�stdinrI�append�striprrrrr.rrr?rr
r%r'rr�KeyboardInterrupt)
rm�parser�argsZ
compile_destsrqr�f�liner0rar"r"r#�main�s~
"
rz�__main__)Nrr���)rNFNrFr|r r|)NFNrFr|r|)r rFrFr|)�__doc__rrP�importlib.utilr@rKrG� functoolsr�__all__rrrrrzrWrDZexit_status�exitr"r"r"r#�<module>s$
/
R
[
?>