Current File : //opt/alt/python310/lib64/python3.10/__pycache__/compileall.cpython-310.pyc
o
S�gO�@s�dZddlZddlZddlZddlZddlZddlZddlm Z ddl
mZgd�Zddd�Z
dddddd�dd
�Z dddddd�dd�Z ddd�Zdd�Zedkrhee��Ze�e�dSdS)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_pathccs��|dkrt|tj�rt�|�}|std�|��zt�|�}Wnty6|dkr2td�|��g}Ynw|��|D]>}|dkrDq=tj �
||�}tj �|�sU|Vq=|dkr{|tjkr{|tj
kr{tj �|�r{tj �|�s{t||d|d�EdHq=dS)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 �1/opt/alt/python310/lib64/python3.10/compileall.pyrs:�
�
�
�
���rF���r ��stripdir�
prependdir�
limit_sl_dest�hardlink_dupesc
CsZd}|dur|
dus|durtd��|dur|}
|}d}|dkr$td��|dkrEddlm}z|�Wnty>d}Ynwddlm}|durMt��}t|||d�}d }|dkr�|dur�|pad}||d
��#}|� t
t||||||| |
|||
d�|�}t|d d�}Wd�|S1s�wY|S|D]}t|||||||| |
|||
d
�s�d}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 prependdirrz%workers must be greater or equal to 0r )�_check_system_limits)�ProcessPoolExecutor)rr
T)Zmax_workers)�ddir�force�rxr�legacy�optimize�invalidation_moder$r%r&r')�defaultr#F)
�
ValueErrorZconcurrent.futures.processr)�NotImplementedErrorZconcurrent.futuresr*�sys�getrecursionlimitr�maprr�min)rr
r+r,r-rr.r/�workersr0r$r%r&r'r*r)�files�successZexecutorZresults�filer r r!r0sh
��
�
�����rc&
Csn|dur|dus| durtd��d}t�|�}|dur t�|�nd}tj�|�}
d}|dur5tj�||
�}|durd|�tjj�}|�tjj�}t|�}t ||�D]
\}}||kr]|�
|�qPtjj|�}| dur{|durttj�| |�}ntj�| |�}t|t�r�|g}t
t|��}|r�t|�dkr�td��|dur�|�|�}|r�|S|
dur�tj�|�r�t|
���t|���jvr�|Si}tj�|��r5|D].}|r�|d||<q�|dkr�|dkr�|nd }tjj||d
�}|||<q�tj�|�}|||<q�|
dd�|
dd�}}|dk�r5|�sXzCtt�|�j�}t�d
tjjd|d@�}|��D]%}t|d��
}|� d�}Wd�n 1�s;wY||k�rGn�q#|WSWn
t!�yWYnw|�sbt"d�#|��z?t$|�D]8\}}||}t%j&|||d||d�} |dk�r�|�r�|||d}!t'j(||!dd��r�t�)|�t�*|!|��qgWn�t%j+�y�}"z?d}|dk�r�|WYd}"~"S|�r�t"d�#|��nt"dd d�t,j-j.�p�t,�/�}#|"j0j1|#dd��2|#�}$t"|$�WYd}"~"|Sd}"~"wt3t4t!f�y-}%z0d}|dk�r|WYd}%~%S|�rt"d�#|��nt"dd d�t"|%j5j6d|%�WYd}%~%|Sd}%~%ww| dk�r5d}|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: 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.
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
Nr(TrzXHardlinking of duplicated bytecode makes sense only for more than one optimization level�crr �)�optimization���z.pyz<4sLLl���rb�zCompiling {!r}...)r/r0F)Zshallowz*** Error compiling {!r}...z*** )�end�backslashreplace)�errors�:)7r2r
rr�basenamer�split�sep�list�zip�remover�int�sorted�set�len�searchrrZresolve�parents�isfile� importlib�util�cache_from_source�stat�st_mtime�structZpack�MAGIC_NUMBER�values�open�readrrr� enumerate�
py_compile�compile�filecmpZcmp�unlink�link�PyCompileErrorr4�stdout�encoding�getdefaultencoding�msg�encode�decode�SyntaxError�UnicodeError� __class__�__name__)&rr+r,r-rr.r/r0r$r%r&r'r:r�dfileZfullname_partsZstripdir_partsZ
ddir_partsZspartZopartZmoZ
opt_cfiles� opt_level�opt�cfile�head�tail�mtimeZexpectZchandleZactual�index�okZprevious_cfile�errrerg�er r r!r}s�
�
�
��
����
��
��
��
rc CsTd}tjD]"}|r|tjkr|r|dkrtd�q|o&t||d|||||d�}q|S)a�Byte-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)
invalidation_mode: as for compiler_dir()
TrzSkipping current directoryN)rr.r/r0)r4rr
rrr) Zskip_curdirr
r,rr.r/r0r:rr r r!rs"
��
rc
Cs�ddl}|jdd�}|jddddddd �|jd
tddd
�|jddddd�|jdddddd�|jddddd�|jdddddd�|jd d!d"dd#d�|jd$d%d&dd'd�|jd(d)d*dd+d�|jd,d-d.d/d0�|jd1d2d3d4d5�|jd6d7d8td9d:�d;d<�tjD�}|jd=t|�d>d?�|jd@dAtdBdCdD�|jdEdFdGdHd0�|jdIddJdKd�|��}|j}|j r�ddl
}|�|j �|_ |jdLkr�d|_|j
dur�|j
}n|j}|jdur�dMg|_t|j�d8kr�|jr�|�dN�|jdu�r|jdus�|jdu�r|�dO�|j�rQz0|jdPk�rtjnt|jdQdR��}|D]
}|�|����qWd�n 1�s1wYWnt�yP|jdSk�rMtdT�|j��YdUSw|j �rd|j �!dPdV��"�} tj| }
nd}
dW}z^|�r�|D]I}t#j$�%|��r�t&||j|j'|j |j|j(|
|j|j|j|j|jdX��s�dU}�qnt)|||j|j'|j |j|j(|j*|
|j|j|j|j|jdY��s�dU}�qn|WSt+|j(|j'|j|
dZ�WSt,�y�|jdSk�r�td[�YdUSw)\zScript main program.rNz1Utilities to support installing Python libraries.)�descriptionz-lZstore_constr
z!don't recurse into subdirectories)�actionZconstr1�dest�helpz-r� recursionzhcontrol the maximum recursion level. if `-l` and `-r` options are specified, then `-r` takes precedence.)�typer{r|z-f�
store_truer,z/force rebuild even if timestamps are up to date)rzr{r|z-q�countrzIoutput only error messages; -qq will suppress the error messages as well.)rzr{r1r|z-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)�metavarr{r1r|z-sZSTRIPDIRr$z�part of path to left-strip from path to source file - for example buildroot. `-d` and `-s` options cannot be specified together.z-pZ
PREPENDDIRr%z�path to add as prefix to path to source file - for example / to make it absolute when some part is removed by `-s` option. `-d` and `-p` options cannot be specified together.z-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)r�r{r|�compile_destzFILE|DIR�*zrzero or more file and directory names to compile; if no arguments given, defaults to the equivalent of -l sys.path)r��nargsr|z-jz --workersr zRun compileall concurrently)r1r~r|cSsg|]}|j���dd��qS)�_�-)r�lower�replace)�.0�moder r r!�
<listcomp>is�zmain.<locals>.<listcomp>z--invalidation-modez�set .pyc invalidation mode; defaults to "checked-hash" if the SOURCE_DATE_EPOCH environment variable is set, and "timestamp" otherwise.)�choicesr|z-o�append�
opt_levelsz�Optimization levels to run compilation with. Default is -1 which uses the optimization level of the Python interpreter itself (see -O).)rzr~r{r|z-eZDIRr&z+Ignore symlinks pointing outsite of the DIRz--hardlink-dupesr'zHardlink duplicated pyc filesr=r"zYHardlinking of duplicated bytecode makes sense only for more than one optimization level.z.-d cannot be used in combination with -s or -pr�zutf-8)rerzError reading file list {}Fr�T)r0r$r%r/r&r')r8r0r$r%r/r&r')r.r,rr0z
[interrupted])-�argparse�ArgumentParser�add_argumentrLr^�PycInvalidationModerM�
parse_argsr�r-�rer_r&r}r
r�rOr'�errorr+r$r%r�r4�stdinr[r��striprrrrr0r��upperr
rrRrr,r.rr8r�KeyboardInterrupt)
r��parserZinvalidation_modes�argsZ
compile_destsr�r
�f�lineZivl_moder0r:r{r r r!�main4s�
�
�
��
��
�
��
�
�
����
��
�������
� �
��r��__main__)r) NNFNrFr"r N)NFNrFr"N)r rFrFr"N)�__doc__r
r4�importlib.utilrSr^rXr`� functoolsrZpathlibr�__all__rrrrr�rmrLZexit_status�exitr r r r!�<module>sH
��M��
�"�