� !A?hO���dZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z gd�Z dd�Z dddddd �d �Z dddddd �d �Z dd �Zd�Zedkr&ee�� ��Zeje��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, 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�|dkr.t|tj��rtj|��}|s"t d�|���� tj|��}n:#t$r-|dkr"t d�|����g}YnwxYw|���|D]�}|dkr� tj � ||��}tj � |��s|V��M|dkry|tj kri|tj krYtj � |��r:tj �|��st||dz |���Ed{V����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�fullnames �7/opt/alt/python-internal/lib64/python3.11/compileall.pyrrs����� �q�y�y�Z��R�[�1�1�y��i��n�n�� �-� ��&�&�s�+�+�,�,�,��� �3������ ���� �1�9�9� �#�*�*�3�/�/� 0� 0� 0��������� �J�J�L�L�L�� .� .�� �=� � � ��7�<�<��T�*�*���w�}�}�X�&�&� .��N�N�N�N��!�m�m��� � 1� 1�d�b�i�6G�6G��g�m�m�H�%�%�7H�.0�g�n�n�X�.F�.F�7H� ��Y��]�',�.�.�.� .� .� .� .� .� .� .�� .� .s�A1�14B(�'B(F�����r ��stripdir� prependdir� limit_sl_dest�hardlink_dupesc �P�d}|�| �| �td���|�|} |} d}|dkrtd���|dkr*ddlm} |��ddlm}n#t $rd}YnwxYw|�t j��}t|||���}d }|dkrp|�n|pd}||� ��5}|� tt||||||| | | | | � � � |��}t|d � ��}ddd��n #1swxYwYn"|D]}t|||||||| | | | | � � � sd}� |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)r r T)� max_workers) �ddir�force�rxr �legacy�optimize�invalidation_moder%r&r'r()�defaultr$F) � ValueError�concurrent.futures.processr+�concurrent.futuresr,�NotImplementedError�sys�getrecursionlimitr�maprr�min)rr r.r/r0r r1r2�workersr3r%r&r'r(r,r+�files�success�executor�results�files r"rr0s/��8�� ��X�1�Z�5K��G�I�I� I� ����� �����{�{��@�A�A�A��!�|�|�C�C�C�C�C�C� ?� � � "� "� "� ?� >� >� >� >� >� >��#� � � ��G�G�G� �������)�+�+� � �c��)� <� <� <�E��G��!�|�|�+�7��/�T�� � �W� 5� 5� 5� 1���l�l�7�<�04�E�.0��28�4<�=N�4<�6@�9F�:H� $J� $J� $J�$)� *� *�G��'�4�0�0�0�G� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1���� 1� 1� 1� 1��� � �D���d�E�2�u� &��2C�)1�j�.;�/=� ?�?�?� �  ��� �Ns%� A� A"�!A"�&AC8�8C<�?C<c �j �|�|�| �td���d} tj|��}|�tj|��nd}tj�|��} d}|� tj�|| ��}|��|�tjj��}|�tjj��}t|��}t||��D] \}}||kr|� |���!tjj|�}| �C|�!tj�| |��}n tj�| |��}t|t��r|g}tt|����}| r"t|��dkrtd���|�|�|��}|r| S| �htj�|��rIt%| �����t%|�����jvr| Si}tj�|���rK|D]h}|r |dz||<� |dkr1|dkr|nd }t,j�||� ��}|||<�Dt,j�|��}|||<�i| dd �| d d�}}|d k�r�|s� ttj|��j��}t7jd t,jjd|dz��}|���D]G}t?|d��5}|� d��}ddd��n #1swxYwY||krn�H| Sn#tB$rYnwxYw|s"tEd�#|���� tI|��D]�\}}||}tKj&|||d||���} |dkrS| rQ|||dz }!tOj(||!d���r)tj)|��tj*|!|���� | dkrd} �nD#tJj+$r�}"d} |dkr| cYd}"~"S|r#tEd�#|����ntEdd ���tXj-j.ptYj/��}#|"j0�1|#d����2|#��}$tE|$��Yd}"~"n�d}"~"wtfthtBf$rl}%d} |dkr| cYd}%~%S|r#tEd�#|����ntEdd ���tE|%j5j6dz|%��Yd}%~%nd}%~%wwxYw| 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*Tr zXHardlinking of duplicated bytecode makes sense only for more than one optimization level�crr �)� optimization�����z.pyz<4sLLl���rb� zCompiling {!r}...)r2r3F)�shallowz*** Error compiling {!r}...z*** )�end�backslashreplace)�errors�:)7r5rrr�basenamer�split�sep�list�zip�remover�int�sorted�set�len�searchrr�resolve�parents�isfile� importlib�util�cache_from_source�stat�st_mtime�struct�pack� MAGIC_NUMBER�values�open�readrrr� enumerate� py_compile�compile�filecmp�cmp�unlink�link�PyCompileErrorr9�stdout�encoding�getdefaultencoding�msg�encode�decode� SyntaxError� UnicodeError� __class__�__name__)&r!r.r/r0r r1r2r3r%r&r'r(r?r �dfile�fullname_parts�stripdir_parts� ddir_parts�spart�opart�mo� opt_cfiles� opt_level�opt�cfile�head�tail�mtime�expect�chandle�actual�index�ok�previous_cfile�errrqrs�es& r"rr}sy��6 ��X�1�Z�5K��G�I�I� I��G��y��"�"�H�&.�&:�r�y��"�"�"��H� �7� � �H� %� %�D� �E� ���� � �T�4�(�(����!����� �4�4��!����� �4�4���.�)�)� ����?�?� )� )�L�E�5���~�~��!�!�%�(�(�(���� �j�)���� �=��G�L�L��X�6�6�E�E��G�L�L��U�3�3�E��(�C� � ���:���c�(�m�m�$�$�H��G�#�h�-�-�!�+�+��F�G�G� G� �~� �Y�Y�x� � �� � ��N�� �R�W�^�^�H�%=�%=� � � � � � &� &� (� (��X���0F�0F�0H�0H�0P� P� P��N��J� �w�~�~�h���B$�!� 2� 2�I�� 2�(0�3�� �9�%�%���>�>�'0�A�~�~�)�)�2�C�&�^�=�=�%�C�>�9�9�E�,1�J�y�)�)�%�N�<�<�X�F�F�E�,1�J�y�)�)��#�2�#�Y��R�S�S� �d�� �5�=�=�� � ����� 1� 1� :�;�;�E�#�[��)�.�2M�)*�E�K�,?�A�A�F�!+�!2�!2�!4�!4�'�'��!�%��.�.�6�'�%,�\�\�"�%5�%5�F�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6�!�V�+�+�!�E�,� '��"�������D������ <��)�0�0��:�:�;�;�;�" $�(1�(�(;�(;� ;� ;�$�E�9�&�y�1�E�#�+�H�e�U�D�5>�>O�Q�Q�Q�B��q�y�y�^�y�)3�H�U�Q�Y�4G�)H��"�;�u�n�e�L�L�L�;��I�e�,�,�,��G�N�E�:�:�:�� ;�@��7�7�#�G���/�,� � � ����A�:�:�"�N�N�N�N�N�N��*��7�>�>�x�H�H�I�I�I�I��&�b�)�)�)�)��:�.�J�#�2H�2J�2J���g�n�n�X�6H�n�I�I�P�P�QY�Z�Z���c� � � � � � � � �������w�7� 5� 5� 5����A�:�:�"�N�N�N�N�N�N��*��7�>�>�x�H�H�I�I�I�I��&�b�)�)�)�)��a�k�*�S�0�!�4�4�4�4�4�4�4�4����� 5���� �Nsv�1A5N�&N�< N�N � N�N � N� N,�+N,�BQ/�/V0�> T*�V0� BT*�*V0� V+� V0�AV+�+V0c ��d}tjD]E}|r|tjkr|r|dkrt d���,|ot ||d|||||���}�F|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() Tr zSkipping current directoryN)r r1r2r3)r9rrrrr) � skip_curdirr r/r r1r2r3r?rs r"rrs����G��x����� �s�b�i�'�'�[�'��q�y�y��2�3�3�3��� �+�������!�"3� #� #� #�G�G� �N�c�� �ddl}|�d���}|�dddddd� ��|�d td d � ��|�dddd���|�ddddd���|�dddd���|�ddddd���|�d d!d"dd#���|�d$d%d&dd'���|�d(d)d*dd+���|�d,d-d.d/�0��|�d1d2d3d4�5��|�d6d7d8td9�:��d;�tjD��}|�d��|�d?d@tdAdB�C��|�dDdEdFdG�0��|�dHddIdJ���|���}|j}|j r#ddl }|� |j ��|_ |j dKkrd|_ |j �|j }n|j}|j�dLg|_t!|j��d8kr|jr|�dM��|j�#|j�|j�|�dN��|jr� |jdOkr t.jnt3|jdP�Q��5}|D])}|�|������* ddd��n #1swxYwYnC#t8$r6|jdRkr't=dS�|j����YdTSwxYw|j r@|j �!dOdU���"��} tj| } nd} dV} |r�|D]�} tFj$�%| ��rPtM| |j|j'|j |j|j(| |j|j|j|j |j�W� � sdT} �qtS| ||j|j'|j |j|j(|j*| |j|j|j|j |j�X��sdT} ��| StW|j(|j'|j| �Y��S#tX$r|jdRkrt=dZ��YdTSwxYw)[zScript main program.rNz1Utilities to support installing Python libraries.)� descriptionz-l� store_constr z!don't recurse into subdirectories)�action�constr4�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)r�r�r�z-q�countr zIoutput only error messages; -qq will suppress the error messages as well.)r�r�r4r�z-br1z0use legacy (pre-PEP3147) compiled file locationsz-d�DESTDIRr.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�r4r�z-s�STRIPDIRr%z�part of path to left-strip from path to source file - for example buildroot. `-d` and `-s` options cannot be specified together.z-p� 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-x�REGEXPr0zskip files matching the regular expression; the regexp is searched for in the full path of each file considered for compilationz-i�FILE�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)r4r�r�c�h�g|]/}|j����dd����0S)�_�-)r �lower�replace)�.0�modes r"� zmain..isJ��F�F�F�"��)�/�/�+�+�3�3�C��=�=�F�F�Fr�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).)r�r�r�r�z-e�DIRr'z+Ignore symlinks pointing outsite of the DIRz--hardlink-dupesr(zHardlink duplicated pyc filesrEr#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)rqr zError reading file list {}Fr�T)r3r%r&r2r'r()r=r3r%r&r2r'r()r1r/r r3z [interrupted])-�argparse�ArgumentParser� add_argumentrUri�PycInvalidationModerV� parse_argsr�r0�rerjr'r�r r�rXr(�errorr.r%r&r�r9�stdinrfr��striprr rrr3r��upperrrr\rr/r1rr=r�KeyboardInterrupt) r��parser�invalidation_modes�args� compile_destsr�r �f�line�ivl_moder3r?r�s r"�mainr�4s����O�O�O� � $� $�G�%�I�I�F� ����]�!� $�;�@��B�B�B� ����3�[�<��>�>�>� ����\��N��P�P�P� ����W�7�A�;��<�<�<� ����\��O��Q�Q�Q� ����i�v�t�,��.�.�.�  ����j� � $�4��6�6�6�  ����l�,� $�4��6�6�6� ����h�T�4�H��J�J�J� ����f�7�B��D�D�D� ���� �#�A��C�C�C� ����k�1� �'D��F�F�F�F�F�&0�&D�F�F�F�� ���-� &�'9� :� :�7��9�9�9�  ����X�C�l�K��M�M�M� ����e�/�J��L�L�L� ���*�<�-�<��>�>�>� � � � � �D��%�M� �w�&�� � � ��*�*�T�W�%�%��� ��R���!��� �~�!��N� � ��N� � ����$��� �4�?���q� � �T�%8� �� � �C� E� E� E� �y�� � �!�T�_�%@�� � �E�F�F�F� �z� � �#�z�3���#�)�)����g�6�6�6� 7�;<��7�7�D�!�(�(������6�6�6�6�7� 7� 7� 7� 7� 7� 7� 7� 7� 7� 7� 7���� 7� 7� 7� 7���� � � ��z�A�~�~��2�9�9�$�*�E�E�F�F�F��5�5� ����  ��!��)�1�1�#�s�;�;�A�A�C�C��&�:�8�D��� ���G� � � E�%� (� (���7�>�>�$�'�'�(�'��d�i���T�W�(,� �D�K�:K�15��37�?�15��6:�6H�7;�7J�L�L�L�(�#(���&�t�Y�� �'+�z�4�7�D�J�'+�{�D�L�9J�04� �26�/�04��59�5G�6:�6I�K�K�K� (�#(����N��t�{�$�*�&*�j�2C�E�E�E� E�� ���� �:��>�>� �#� $� $� $��u�u����sO�-L:�4-L.�" L:�.L2�2L:�5L2�6L:�:r�s}�� � � � � � � � � � ��������� � � � ����������������� 7� 7� 7��.�.�.�.�.7<�EF�"&�K�48��t�E�K�K�K�K�K�ZCD�(*�#'�S�59�d�#�E�S�S�S�S�S�jAB�(*�#'�����DV�V�V�r �z����#�$�$�&�&�j�/�/�K� �C�H�[�������r�