File: //usr/lib64/python3.9/__pycache__/compileall.cpython-39.pyc
a
    �DOg�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&