File: //lib/python3.12/__pycache__/compileall.cpython-312.pyc
�
    )!�hvP  �                   ��   � d Z ddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ g d�Zdd�Z
	 	 	 dddddd�d	�Z	 	 	 dddddd�d
�Z	 	 	 dd�Zd� Zed
k(  r! e e�        �      Z ej*                  e�       yy)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, it 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              #   �  K  � |dk  r/t        | t        j                  �      rt        j                  | �      } |st	        dj                  | �      �       	 t        j                  | �      }|j                  �        |D ]�  }|dk(  r�	t        j                  j                  | |�      }t        j                  j                  |�      s|�� �M|dkD  s�S|t        j                  k7  s�g|t        j                  k7  s�{t        j                  j                  |�      s��t        j                  j                  |�      r��t        ||dz
  |��      E d {  ���  �� y # t        $ r% |dk  rt	        dj                  | �      �       g }Y ��w xY w7 �8�w)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�fullnames         �!/usr/lib/python3.12/compileall.pyr   r      s-  � �� ��q�y�Z��R�[�[�1��i�i��n���
��&�&�s�+�,���
�
�3���
 
�J�J�L�� 	.���=� ���7�7�<�<��T�*���w�w�}�}�X�&��N��!�m���	�	� 1�d�b�i�i�6G��g�g�m�m�H�%�b�g�g�n�n�X�.F� ��Y��]�',�.� 
.� 
.�	.�� � ��1�9��#�*�*�3�/�0�����
.�sU   �AF�E �)A$F�F�"F�6F�F�6F�
F�F�*F �<F�?F � FF��stripdir�
prependdir�
limit_sl_dest�hardlink_dupesc
                �  � d}|�|
�|�t        d�      �|�| }
|}d}|dk  rt        d�      �|dk7  rddlm} 	  |�        ddlm} |�t
        j                  �       }t        | ||��      }d	}|dk7  r�|�	 ddl	}|j                  �       d
k(  r|j                  d�      }nd}|xs d} |||��      5 }|j                  t        t        |||||||	|
|||
�
�      |�      }t!        |d	��      }ddd�       |S |D ]  }t        ||||||||	|
|||
��      r�d}� |S # t
        $ r d}Y ��w xY w# t        $ r d}Y ��w xY w# 1 sw Y   |S xY w)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   )�_check_system_limits)�ProcessPoolExecutor)r
   r   T�fork�
forkserver)�max_workers�
mp_context)�ddir�force�rxr
   �legacy�optimize�invalidation_moder$   r%   r&