a
´i‰N ã @ s¾ d Z ddlZddlZddlZddlZddlZddlZddlm Z ddl
mZ g d¢Zddd„Z
ddddddœdd
„Zddddddœdd„Zddd„Zdd„ Zedkrºeeƒ ƒZe e¡ 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)ÚPath)Úcompile_dirÚcompile_fileÚcompile_pathc c sú |dk rt | tjƒrt | ¡} |s0td | ¡ƒ zt | ¡}W n, tyj |dk rbtd | ¡ƒ g }Y n0 | ¡ |D ]|}|dkr†qxtj
| |¡}tj |¡s¨|V qx|dkrx|tjkrx|tj
krxtj |¡rxtj |¡sxt||d |d�E d H qxd S )Né zListing {!r}...zCan't list {!r}Ú__pycache__r é )Ú maxlevelsÚquiet)Ú
isinstanceÚosÚPathLikeÚfspathÚprintÚformatÚlistdirÚOSErrorÚsortÚpathÚjoinÚisdirÚcurdirÚpardirÚislinkÚ _walk_dir)Údirr
r ÚnamesÚnameÚfullname© r ú"/usr/lib64/python3.9/compileall.pyr s2
ÿ
ÿ
ÿr Féÿÿÿÿr ©ÚstripdirÚ
prependdirÚ
limit_sl_destÚhardlink_dupesc
C sN d}|dur$|
dus|dur$t dƒ‚|dur8| }
|}d}|dk rHt dƒ‚|dkrxzddlm} W n tyv d}Y n0 |du rˆt ¡ }t| ||d�}d}|dk�r|du�r|p´d}||d ��D}| tt ||||||| |
|||
d
�|¡}t
|dd�}W d ƒ n1 �s0 Y n2|D ],}t |||||||| |
|||
d��sd
}�q|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 `sys.getrecursionlimit()`)
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: int or list of optimization levels or -1 for level of
the interpreter. Multiple levels leads to multiple compiled
files each with one optimization level.
workers: maximum number of parallel workers
invalidation_mode: how the up-to-dateness of the pyc will be checked
stripdir: part of path to left-strip from source file path
prependdir: path to prepend to beginning of original file path, applied
after stripdir
limit_sl_dest: ignore symlinks if they are pointing outside of
the defined path
hardlink_dupes: hardlink duplicated pyc files
NúPDestination dir (ddir) cannot be used in combination with stripdir or prependdirr z%workers must be greater or equal to 0r )ÚProcessPoolExecutor)r r
T)Úmax_workers)ÚddirÚforceÚrxr ÚlegacyÚoptimizeÚinvalidation_moder$ r% r&