add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

�Wc�����	dZdZddlZddlZddlZddlZddlZddlZddddddddd	d	d
�
Zejd�Z
d�Zejd
ej�Z
dQd�ZdRd�Zejd�Z		dSd�Z	ddlZd�Zgd�Zgd�Zd�Zd�Zd�ZdTd�Zd�ZdUd�Zd �ZdVd!�Zd"�Zd#�Z dRd$�Z!d%�Z"dRd&�Z#d'd(d)d�Z$ejJddfd*�Z&d+�Z'Gd,�d-�Z(d.�Z)Gd/�d0ejTd1d2��Z+da,d3�Z-d4�Z.d5�Z/d6�Z0d7�Z1d8�Z2d9�Z3ejd:ej�Z4ejd;ej�Z5ejd<�Z6ejd=�Z7iZ8dWd>�Z9d?�Z:d@�Z;dA�Z<dB�Z=dC�Z>dD�Z?dE�Z@iZAdXdF�ZBejdG�ZCejdH�ZDdIZEdaFdJ�ZGdK�ZHeIdLkr^dMej�vp
dNej�vZKdOej�vo
dPej�vZLeMeBeLeK��ej�d�dSdS#e$rd�ZY���wxYw)Ya
    Copyright (c) 1999-2000, Marc-Andre Lemburg; mailto:mal@lemburg.com
    Copyright (c) 2000-2010, eGenix.com Software GmbH; mailto:info@egenix.com

    Permission to use, copy, modify, and distribute this software and its
    documentation for any purpose and without fee or royalty is hereby granted,
    provided that the above copyright notice appear in all copies and that
    both that copyright notice and this permission notice appear in
    supporting documentation or portions thereof, including modifications,
    that you make.

    EGENIX.COM SOFTWARE GMBH DISCLAIMS ALL WARRANTIES WITH REGARD TO
    THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
    FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
    INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
    FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
    NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
    WITH THE USE OR PERFORMANCE OF THIS SOFTWARE !

z1.0.8�N�
���(�2��)
�dev�alpha�a�beta�b�c�RC�rc�pl�pz([0-9]+|[._+-])c���g}tj|�D],}|dvs�	t|d�}d}|j
||f��.|S#t$rtj|d�}Y�;wxYw)Nz._+-r�dr)�
_component_re�split�int�
ValueError�_ver_stages�get�extend)�version�result�v�ts    �!/usr/lib64/python3.12/platform.py�_comparable_versionr!�s���
�F�
�
 �
 ��
)�"�"���F�?�?��
*���2�J����
�M�M�1�a�&�!�!�!��M���
*�
*�
*��O�O�A�q�)����
*���s�A
�
"A/�.A/sC(__libc_init)|(GLIBC_([0-9.]+))|(libc(_\w+)?\.so(?:\.(\d[0-9.]*))?)��@c�X�	|sa	tjd�}|jd��}t|�dkr
t	|�S	tj}|s||fSt}tjj|�}t|d�5}|j|�}d}	|	t|�k�r0d|vsd|vrtj!||	�}
nd}
|
r |
j#�t|�kr<|j|�}|r%|t%|	t|�d	z
�d|z}d}	��|
sn�d
�|
j'�D�\}}
}}}}|r|sd}nd|
r"|dkrd}|}nW||�||�krC|}n@|r>|dkr8d}|r|r||�||�kr|}|r|t|�d|kr||z}|
j#�}	|	t|�kr��0ddd�||fS#t
ttf$rY���wxYw#1swY||fSxYw)
N�CS_GNU_LIBC_VERSION�)�maxsplit��rbrslibcsGLIBCi�c�<�g|]}|�|jd�n|��S)N�latin1)�decode)�.0�ss  r �
<listcomp>zlibc_ver.<locals>.<listcomp>�s:��E%�E%�E%��'(�m�����"�"��:�:�E%��libc�glibc)�os�confstrr�len�tuple�AttributeErrorr�OSError�sys�
executabler!�path�realpath�open�read�_libc_search�search�end�max�groups)r:�libr�	chunksize�ver�parts�V�f�binary�pos�m�chunk�libcinitr2�glibcversion�so�threads�	soversions                  r �libc_verrS�s�����:�	��*�*�2�3�C��I�I�q�I�)�E��5�z�Q����U�|�#���^�^�
��z���<���A����!�!�*�-�J�	
�j�$�	�"�1����	�"�����C��K����&� � �H��$6�$6� �'�'���4������1�����3�v�;�.�.����y�)���5�#�C��S��[�4�-?�$@�$A�B�U�J�F��C���q��E%�E%�����E%�E%�A�H�e�\�2�w�	��x���������'�>�>�!�C�*�G�G��Q�|�_�q�q��z�1�1�*�G�G����'�>�>� �C� �y�'�'�Q�Q�y�\�A�A�g�J�5N�5N�"+���w�7�C��L�=�>�#:�g�#E�#E�")�G�"3���%�%�'�C�?�C��K����"�"�"�"�"�F��<���e�
�G�4�	�	�	��D�	����"�"�"�"�"�"�"�"�F��<����s�AG?�EH�?H�H�H)c	��	|jd�}|r|j|�	ttttt
|���}dj|dd�}|S#t$r|}Y�%wxYw)N�.�)r�append�list�map�strrr�join)r�build�l�stringss    r �
_norm_versionr_�s����	�
�
�c��A��u�	��������s�3��C���,�-���h�h�w�r��{�#�G��N�������������s�/A/�/A>�=A>z'(?:([\w ]+) ([\w.]+) .*\[.* ([\d.]+)\])��win32�win16�dosc���	tj|vr|||fSddl}dD]/}	|j||j|jdd��}n|||fS|j�}tj|�}|�D|j�\}}}|ddkr|dd}|ddkr|dd}t|�}|||fS#t
|jf$r
}Yd}~��d}~wwxYw)Nr)rFzcommand /c verz
cmd /c verT)�stdin�stderr�text�shell�����rU)r9�platform�
subprocess�check_output�DEVNULLr8�CalledProcessError�strip�_ver_output�matchrCr_)	�system�releaser�supported_platformsrk�cmd�info�whyrLs	         r �_syscmd_verrxsC��	��|�|�.�.�.��w��'�'�����6�
(�
(��
	��*�*�3�1;�1C�1C�2<�2D�2D�04�15�	+�7�D�
�E��w��'�'��:�:�<�D����$��A��}�#$�8�8�:� �����2�;�#����c�r�l�G��2�;�#����c�r�l�G� ��(���7�G�#�#��+��6�6�7�	�	�	��H�H�H�H�����	���s�+C	�	C)�$C)c����ddd�|}tjdjdj|�|��j	d�}d�|D�}d�|D���fd	�|D�S)
N�Win32_OperatingSystem�Win32_Processor)�OS�CPUzSELECT {} FROM {}�,�c3�<K�|]}|jd����dS)�=N)�	partition�r-�is  r �	<genexpr>z_wmi_query.<locals>.<genexpr>Gs+����5�5�1�a�k�k�#�&�&�&�&�&�5�5r0c�.�i|]}|d|d��S)rr(�r�s  r �
<dictcomp>z_wmi_query.<locals>.<dictcomp>Hs ��4�4�4�A�Q�q�T�1�Q�4�Z�Z�4r0c3�*�K�|]}�|���dS�Nr�)r-�k�	dict_datas  �r r�z_wmi_query.<locals>.<genexpr>Is#�����+�+��	�!������+�+r0)�_wmi�
exec_query�formatr[r)�table�keys�data�
split_datar�s    @r �
_wmi_queryr�>s����)�$�
�
�������2�9�9��H�H�T�N�� 
���5��;�	
�6�5��5�5�
�4�4��4�4�	�+�+�+�+�d�+�+�+r0c��td��)Nz
not supported)r8)r�s r r�r�;s
���o�&�&r0))�rr&r�post11))rri�U�11)���r�10)�r�rVrz8.1)�r�r(r�8)�r�r&r�7)�r�rr�Vista))�r(i��XP64)�r�r(r�XPMedia))r�r&r�XP)�r�rr�2000)
)r��post2022Server))rri|O�
2022Server))rricE�
2019Server)r��
2016Server)r��2012ServerR2)r��
2012Server)r��2008ServerR2)r��
2008Server)r��
2003Server)r��
2000Serverc��t�dvS)N)�IoTUAP�
NanoServer�WindowsCoreHeadless�	IoTEdgeOS)�
win32_editionr�r0r �win32_is_iotr�gs���?�Z�Z�Zr0c� �		ddl}	d}|j|j|�5}|j|d�dcddd�S#t$rddl}Y�TwxYw#1swYnxYw	dS#t$rYdSwxYw#t$rYdSwxYw)Nr�,SOFTWARE\Microsoft\Windows NT\CurrentVersion�	EditionId)�winreg�ImportError�_winreg�	OpenKeyEx�HKEY_LOCAL_MACHINE�QueryValueExr8)r��cvkey�keys   r r�r�js=��
�	%��M�M�M�	�C�E��!�!�&�";�";�U�C�
@�s��*�*�3��<�Q�?�
@�
@�
@�
@�
@�
@�
@���	%�	%�	%�$�$�$�$�$�$�	%����
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
�4���	�	�	���4�	������
�
�
���4�
���sQ�A�A.�A�
A.�A�A?�A�A?�A(�$A.�.
A<�;A<�?
B
�B
c���	tdddddd�\}}}}}t|�dk}|r|dkr	d	|�d
|��}nd	|��}||||fS#t$rYnwxYw	ddlm}n#t
$r	|||d
fcYSwxYw|�}t
|dd�dk}	t�d}tt|jd
��\}	}
}n9#t$r,|jp|dd\}	}
}dj|	|
|�}YnwxYw|dd|	|
fkr?	dj|j�}n!#t$r|dddkrd	|ddz}YnwxYw		ddl}n#t
$rddl}YnwxYw	d}
|j#|j$|
�5}|j'|d�d}ddd�n#1swYnxYwn #t$rYnwxYw#t
$rYnwxYw||||fS)Nr|�Version�ProductType�	BuildType�ServicePackMajorVersion�ServicePackMinorVersionr&�0�SPrUr)�getwindowsversionT�product_typer(rVz{0}.{1}.{2}zSP{}�
z
Service Pack r��CurrentType)r�rr8r9r�r��getattrrxrYrr�platform_versionr��service_pack_majorr7r�r�r�r�r�)r�csd�ptyper��spmajor�spminor�	is_clientr��winver�major�minorr\r�r�r�s               r �
_win32_verr�|s'��
�<F�����%�%�
=
�8��,��w����&�!�+�	��7�w�#�~�~�*�w�*�*��*�*�C�C� �w�.�.�C���U�I�-�-���
�
�
���
����)�)�)�)�)�)�)�)���)�)�)���U�D�(�(�(�(�)�����
�
 �F�����3�q�8�I�<��-��"��!�#�w�}�}�S�'9�:���u�e�e���<�<�<�$�5�5�C�������u�e��&�&�u�e�U�;����<�����b�q�z�e�U�^�#�#�	&��-�-�� 9� 9�:�C�C���	&�	&�	&��3�B�x�?�*�*��S���X�o����	&����
�	%��M�M�M�M���	%�	%�	%�$�$�$�$�$�$�	%����
	�C�E��!�!�&�";�";�U�C�
C�s��+�+�C��?��B��
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�������	�	�	��D�	������
�
�
���
�����C��	�)�)s��AA�
A�A�A�A2�1A2�9C�3D�D�D-�-E�
E�E�G
�E&�#G
�%E&�&G
�*F:�	F-�#
F:�-F6�2F:�:
G�G�

G�Gc����d}t|||�\}}}}|rVttt|j	d����|rt
nt}t�fd�|D�|�}||||fS)NFrUc3�2�K�|]\}}|�ks�
|���dSr�r�)r-r�r�
intversions   �r r�zwin32_ver.<locals>.<genexpr>�s,�����B�B�d�a��!�z�/�/�������B�Br0)r�r6rYrr�_WIN32_CLIENT_RELEASES�_WIN32_SERVER_RELEASES�next)rsrr�r�r��releasesr�s      @r �	win32_verr��s{����I�%/���e�%D�"�G�S�%���w��3�s�G�M�M�#�$6�7�8�
�-6�Y�)�)�<R���B�B�B�B�h�B�B�G�L���G�S�%�'�'r0c�N�d}tjj|�sdS	ddl}t|d�5}|j
|�}ddd�d}d}tj�j}|dvrd}|||fS#t$rYdSwxYw#1swY�OxYw)Nz0/System/Library/CoreServices/SystemVersion.plistrr)�ProductVersion�r"r"r")�ppczPower Macintosh�PowerPC)	r3r;�exists�plistlibr�r=�load�uname�machine)�fnr�rIrrs�versioninfor�s       r �_mac_ver_xmlr��s���	;�B�
�7�7�>�>�"����t������
�b�$���1�
�]�]�1�
��������!�"�G��K��h�h�j� � �G��,�,�,����K��(�(�������t�t����������������s�B
�B�

B�B�B$r�c�.�	t�}|�|S|||fSr�)r�)rsr�r�rvs    r �mac_verr��s*����>�D������K��(�(r0c�d�ddlm}	|j|�}|�|S|S#t$r|cYSwxYw)Nr)�System)�	java.langr��getPropertyr7)�name�defaultr��values    r �
_java_getpropr��s\�� � � � � � ���"�"�4�(���=��N���������������s� � �/�/c�R�		ddl}td|�}td|�}|\}}}td|�}td|�}td|�}|||f}|\}}	}
td|
�}
td|�}td	|	�}	||	|
f}||||fS#t$r	||||fcYSwxYw)
Nrzjava.vendorzjava.versionzjava.vm.namezjava.vm.vendorzjava.vm.versionzjava.os.archzjava.os.namezjava.os.version)r�r�r�)rs�vendor�vminfo�osinfo�java�vm_name�
vm_release�	vm_vendor�os_name�
os_version�os_archs           r �java_verr
�s���	�/������=�&�
1�F��N�G�4�G�%+�"�G�Z���N�G�4�G��.�	�:�I��0�*�=�J�
�j�)�
+�F�#)� �G�Z���N�G�4�G��N�G�4�G��0�*�=�J�
�j�'�
)�F��F�F�F�*�*��!�/�/�/�����.�.�.�.�/���s�B�B&�%B&c��	|dkrf|dkr|||fS|jd�}|r;	t|d�}|dz
}t|�|d<dj|�}|dkrd}n	d}n|dvrd	}|||fS#t$rY�#wxYw)
N�SunOS�5rUrrV�6�Solaris�rarb�Windows)rrrZr[r)rrrsrr]r�s     r �system_aliasrs���������S�=�=��7�G�+�+��M�M�#����1�
&��A�a�D�	����	���5�z��!���(�(�1�+���S�=�=��F�F��F�F�	�%�	%�	%���
�7�G�#�#��'�
�
�
���
���s�A9�9
B�Bc�,�	djd�tt|�D��}|jdd�}|jdd�}|jdd�}|jdd�}|jdd�}|jd	d�}|jd
d�}|jdd�}|jdd
�}	|jdd�}||krn|}�|ddkr|dd}|ddkr�|S)N�-c3�:K�|]}|j����dSr�)ro)r-�xs  r r�z_platform.<locals>.<genexpr>Ns$����=�=�a����	�	�	�	�	�=�=r0� �_�/�\�:�;�"�(�)�unknownr"Tz--ri)r[�filterr5�replace)�argsrj�cleaneds   r �	_platformr%Hs4����x�x�=�=�6�#�t�+<�=�=�=�H�����S�)�H�����S�)�H�����c�*�H�����S�)�H�����S�)�H�����S�)�H�����S�)�H�����S�)�H����	�2�.�H���"�"�4��-���h������	�
�2�,�#�
�
��C�R�=���2�,�#�
�
���Or0c�z�		ddl}	|j�S#t$r|cYSwxYw#t$r|cYSwxYw�Nr)�socketr��gethostnamer8)r�r(s  r �_noder*hsu�����
�
�
���!�!�#�#��	�������������
�����������s��+�(�(�:�:c��	tjj|�}tjj|�r�tjj	tjjtjj
|�tj|���}tjj|�r��|Sr�)r3r;�abspath�islink�normpathr[�dirname�readlink)�filepaths r �_follow_symlinksr2ws�����w�w���x�(�H�
�'�'�.�.��
"�
"��7�7�#�#��G�G�L�L�������2�B�K�K��4I�J�L��
�'�'�.�.��
"�
"���Or0c�`�	tjdvr|S	ddl}t	|�}ttjd��}	|jdd|g|j|��}|s|S|jd�S#t$r|cYSwxYw#t|jf$r|cYSwxYw)	N)rcrarbr�C)�LC_ALL�filez-b)rf�envzlatin-1)
r9rjrkr�r2�dictr3�environrlrmr8rnr,)�targetr�rkr7�outputs     r �_syscmd_filer<�s�����|�|�0�0�0���������f�
%�F��r�z�z�#�
&�
&�C���(�(�&�$��)?�0:�0B�0B�-0�)�2��
�6����=�=��#�#��#�������������
�Z�2�2�3�����������s#�B�"B�B�B�B-�,B-)r"�	WindowsPE)r"r)r"�MSDOSc���	|s)ddl}|jd�}t|dz�dz}|rt|d�}nd}|sX|tj
krCtjtvr'ttj\}}|r|}|r|}||fSd|vrd|vr||fSd|vrd	}nd
|vrd}d|vrd}||fSd
|vrd|vrd}||fSd
}||fSd|vrd}||fSd|vrd}||fS	||fS)Nr�P��bitr"r:z
shared objectz32-bit�32bitz64-bit�64bit�ELF�PErr=�COFFzMS-DOSr>)�struct�calcsizerZr<r9r:rj�_default_architecture)r:�bits�linkagerH�size�fileoutr
r]s        r �architecturerO�s����*�4��
�
�
����s�#���4�!�8�}�u�$���z��z�2�.������7��S�^�^�#�#��<�<�0�0�0�(����6�D�A�q��q����q����W�}���7�"�"��g�'E�'E��W�}���7������	�W�	�	���
��������=��
��������!�G���=���G���=��
�7�	�	�����=��

�W�	�	���
��=��	
���=�r0c�.�	tdd�^}}	gd�t|�}|r|St
jjdd�p!t
jjdd�S#ttf$rY�WwxYw#t$rY�gwxYw)Nr}�Architecture)
�x86�MIPS�Alphar�N�ARM�ia64NN�AMD64NN�ARM64�PROCESSOR_ARCHITEW6432r"�PROCESSOR_ARCHITECTURE)r�rr�
IndexErrorr8r3r9r)�archrs  r �_get_machine_win32r]�s������~�6�
���		�����$�i��D��t���
�
�
���/��4�	5�
�
�
���/��4����J�'�	�	�	��D�	������
�
�
���
���s"�B�A0�0B�B�
B�Bc�2�eZdZed��Zd�Zd�Zd�ZdS)�
_Processorc�l�t|dtj��|j�}|�pdS)N�get_r")r�r9rj�from_subprocess)�cls�funcs  r rz_Processor.gets1���s�1�3�<�<�1�1�3�3F�3F�G���t�v�|��r0c��	tddd�\}}|�d|��S#t$r/tjj	dt��cYSwxYw)Nr}�Manufacturer�Caption�, �PROCESSOR_IDENTIFIER)r�r8r3r9rr])�manufacturer�captions  r �	get_win32z_Processor.get_win32sq��	0�$.�u�n�i�$P�!�L�'��/�/��/�/�/���	P�	P�	P��:�:�>�>�"8�:L�:N�O�O�O�O�	P���s��6A�Ac�n�	ddl}|jdd�\}}|dkrdSdS#t$rYdSwxYw)NrzSYI$_CPU�rT�VAX)�vms_lib�getsyir�)rp�csid�
cpu_numbers   r �get_OpenVMSz_Processor.get_OpenVMS%s`��	;��N�N�N� '�~�~�j�!�<��D�*�(�C�/�/�7�:�U�:��	�	�	�	��D�D�	���s�&�
4�4c���		ddl}	|jddg|jd��j	�S#t$rYdSwxYw#t
|jf$rYdSwxYw)Nrr�z-pT)rfrg)rkr�rlrmror8rn)rks r rbz_Processor.from_subprocess.s���	�	�����	��*�*��$��!�)�)��+���e�g�	
���	�	�	��4�4�	�������6�6�7�	�	�	��D�D�	���s �8�/A	�
A�A�	A#�"A#N)�__name__�
__module__�__qualname__�classmethodrrlrtrbr�r0r r_r_sX�����������0�0�0�;�;�;�����r0r_c��|dkrdS|S)Nr r"r�)�vals r �_unknown_as_blankr|@s���	�!�!�2�*�s�*r0c�j��eZdZ	ejd��Z�fd�Zed��Zd�Z	d�Z
d�Z�xZS)�uname_resultc�D�ttj��Sr�)r|r_r��selfs r �	processorzuname_result.processorRs�� ����!1�2�2r0c�|��tjt�j�|jf�Sr�)�	itertools�chain�super�__iter__r�)r��	__class__s �r r�zuname_result.__iter__Vs,�������G����
�^�^��
�	
r0c���t|j�}|j|g|�R�}t|�|dzkr d|�dt|���}t|��|S)Nr&z	Expected z arguments, got )r5�_fields�__new__�	TypeError)rc�iterable�
num_fieldsr�msgs     r �_makezuname_result._make\sh������%�
�����S�,�8�,�,�,���v�;�*�q�.�(�(�G�j�G�G�#�f�+�G�G�C��C�.� ��
r0c�(�t|�|Sr�)r6)r�r�s  r �__getitem__zuname_result.__getitem__fs���T�{�3��r0c�H�ttt|���Sr�)r5r6�iterr�s r �__len__zuname_result.__len__is���5��d��$�%�%r0c�Z�tt|�dt|j�fSr�)r~r6r5r�r�s r �
__reduce__zuname_result.__reduce__ls"���U�4�[�);�#�d�l�l�*;�<�<�<r0)
rvrwrx�	functools�cached_propertyr�r�ryr�r�r�r��
__classcell__)r�s@r r~r~Fs��������
����3�3��3�
�
�
�
�
������ � � �&�&�&�=�=�=�=�=�=�=r0r~�uname_result_basez#system node release version machinec���	t�tS	tj�x\}}}}}}t|�s�|dkrt�\}}}}|pt�}|r|s6t|�\}}}|dkrd}n|dkr|dkrd}d|ddkrd	}nd}|d
vr|s|dkrd}nd}d}n2|dd
dkr)t�\}}}	}
d}dj|	�}|s|}|dkr|r|dkr|}d}|dkr
|dkrd}d	}|||||f}ttt|��atS#t$r)tj
}t
�}dx}x}}d}Y��.wxYw)Nr"r�razMicrosoft Windowsr�	Microsoftz6.0rVr�rrC�16bitr�r�Javarh�OpenVMSr�)�_uname_cacher3r�r7r9rjr*�anyr�r]rxr
r[r~rYr|)rr�nodersrr��infosr�r�rrr�valss            r r�r�ss���	������:<�(�(�*�D�/���g�w��%��u�:�:��W���+4�;�(�G�W�c�5��5�!3�!5�G���G�G�'2�6�':�$�F�G�W��,�,�,�"����;�&�&�7�i�+?�+?�
#���G�B�Q�K�'�'�%�G�G� �G��'�'�'��7��W�$�$�%�G�G�%�G��F�F�
�B�Q�Z�6�
!�
!�.6�j�+�G�V�V�V��F��i�i��'�G��7� �������w�'�S�.�.��G��G������I�!5�!5������4��'�7�2�D���%6��!=�>�L����C���������w��&(�(��(�'�G�����	���s�D+�+/E�Ec�0�	t�jSr�)r�rrr�r0r rrrr�s���
�7�>�>�r0c�0�	t�jSr�)r�r�r�r0r r�r��s����7�<�<�r0c�0�	t�jSr�)r�rsr�r0r rsrs�����
�7�?�?�r0c�0�	t�jSr�)r�rr�r0r rr�r�r0c�0�	t�jSr�)r�r�r�r0r r�r��r�r0c�0�	t�jSr�)r�r�r�r0r r�r��s����7���r0zL([\w.+]+)\s*\(#?([^,]+)(?:,\s*([\w ]*)(?:,\s*([\w :]*))?)?\)\s*\[([^\]]+)\]?z;IronPython\s*([\d\.]+)(?: \(([\d\.]+)\))? on (.NET [\d\.]+)zU([\d.]+)\s*\(IronPython\s*[\d.]+\s*\(([\d.]+)\) on ([\w.]+ [\d.]+(?: \(\d+-bit\))?)\)zE([\w.+]+)\s*\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*\[PyPy [^\]]+\]?c�*�	|�tj}tj|d�}|�|Sd|vr{d}|j	d�rt
j
|�}ntj
|�}|�tdt|�z��|j�\}}}d}d}�n3tjj	d�rcd}tj
|�}|�tdt|�z��|j�\}}}}	}
|�d}tj}n�d|vrOd}tj
|�}|�tdt|�z��|j�\}}}}	d}n\tj
|�}|�td	t|�z��|j�\}}}}	}d
}|�d}n
|	r|dz|	z}ttd�rtj\}
}}n-ttd
�rtj \}
}}nd}d}|j#d�}
t%|
�dkr$|
j'd�dj)|
�}|||||||f}|t|<|S)N�
IronPythonz*failed to parse IronPython sys.version: %sr"r�Jythonz&failed to parse Jython sys.version: %s�PyPyz$failed to parse PyPy sys.version: %sz'failed to parse CPython sys.version: %s�CPythonr�_git�
_mercurialrUr(r�)r9r�_sys_version_cacher�
startswith�_ironpython_sys_version_parserrq� _ironpython26_sys_version_parserr�reprrCrj�_sys_version_parser�_pypy_sys_version_parser�hasattrr�r�rr5rWr[)�sys_versionrr�rqr�alt_version�compiler�buildno�	builddate�	buildtimer�branch�revisionr]s              r �_sys_versionr�$s����&���k�k�� �
#�
#�K��
6�F�
���
��{�"�"����!�!�,�/�/�2�8�8��E�E�E�4�:�:�;�G�E��=��<��[�!�"�#�
#�*/����&���h����	�	�	���	 �	 ��	(�	(���#�)�)�+�6���=��8��[�!�"�#�
#�5:�L�L�N�1���)�Y�����I��<�<���	�;�	�	���(�.�.�{�;���=��C�!�+�.�/�0�
0�16����.���)�Y����$�)�)�+�6���=��9��[�!�"�#�
#��l�l�n�	9���)�Y�������I�I�
�Y�!�C��)�3�I��s�F���!�h�h���6�8�8�	��l�	#�	#�!�n�n���6�8�8�����	�
�
�c��A�
�1�v��{�{�	����
�
��(�(�1�+���G�V�X�w�	�8�
L�F�&,��{�#��Mr0c�(�	t�dSr'�r�r�r0r �python_implementationr�������>�!��r0c�(�	t�dS)Nr&r�r�r0r �python_versionr��s����>�!��r0c�^�	tt�djd��S)Nr&rU)r6r�rr�r0r �python_version_tupler��s&�������"�(�(��-�.�.r0c�(�	t�dS)Nr(r�r�r0r �
python_branchr��s����>�!��r0c�(�	t�dS)NrVr�r�r0r �python_revisionr��r�r0c�"�	t�ddS)Nr�r�r�r�r0r �python_buildr��s����>�!�A��r0c�(�	t�dS)Nr�r�r�r0r �python_compilerr��s����>�!��r0c	���	tj||fd�}|�|St�\}}}}}}||krd}|rt|||�\}}}|dkrt	�d}	|	rd}|	}|dkr4t|�\}
}}}
|rt
||�}n�t
||||�}n�|dvr%t�\}}t
||||d||z�}n�|dkr=t�\}}}\}}}|s|st
|||�}nVt
|||d	|||�}nB|rt
||�}n1ttj�\}}t
||||||�}|t||f<|S)
Nr"�Darwinr�macOSr)�Linux�withr��on)�_platform_cacherr�rr�r�r%rSr
rOr9r:)�aliased�terserrrr�rsrr�r��
macos_release�rel�versr�r�rj�libcname�libcversionr�rrrrr	rKrLs                         r rjrj�s����"�
 �
 �'�5�!1�4�
8�F�
���
�:?��6�F�D�'�7�G�Y��)����	��w�#/����#I� ����
�����	�!��
��=��F�#�G�
���� )�'� 2���T�3���5� ���1�H�H� ���'�3�?�H�H�	�:�	�	� (�
���+��V�W�g�y�#�%�k�1�3���
�6�	�	�7?�z�4��1�f�4�w�
�G��5��� ���'�:�H�H� ���'�!%�!(�*�g�?�H�H��5� ���1�H�H�(����8�M�D�'� ���'�!*�D�'�;�H�)1�O�W�e�$�%��Or0zA^(?P<name>[a-zA-Z0-9_]+)=(?P<quote>["']?)(?P<value>.*)(?P=quote)$z\\([\\\$\"\'`]))z/etc/os-releasez/usr/lib/os-releasec���dddd�}|D]W}tj|�}|��tjd|j	d��||j	d�<�Y|S)Nr��linux)�NAME�ID�PRETTY_NAMEz\1r�r�)�_os_release_linerq�_os_release_unescape�sub�group)�linesrv�line�mos    r �_parse_os_releaser�6sv�������D�����
�
#�
#�D�
)��
�>��%9�%=�%=��r�x�x��(�&�D����&�!�"�"��Kr0c�|�	t�pd}tD]?}	t|d��5}t|�addd�tj�St	|ddj
t�����tj�S#1swY�\xYw#t$r}|j
}Yd}~��d}~wwxYw)Nzutf-8)�encodingzUnable to read files rh)�_os_release_cache�_os_release_candidatesr=r�r8�errnor[�copy)r��	candidaterI�es    r �freedesktop_os_releaser�Is���� ���/�	�	�I�
 ��)�g�6�6�=�!�(9�!�(<�%�=�=�=�=�=���!�!�#�#���K��	�	�2H�(I�K�K��
�
�!�!�#�#�=�=�=�=�=�=�=�=�=������
 �
 �
 ��������������
 ���s-�B�B�	B�B	�B�
B;�%B6�6B;�__main__r�z--terse�
nonaliasedz--nonaliased)Nr"r"r#)r")r"r"r"r`)r"r"r"r")r"r�r")r"r"r�r�r�)rr)O�
__copyright__�__version__�collectionsr3�rer9r�r�r�compilerr!�ASCIIr?rSr_rprxr�r�r�r�r�r�r�r�r�r�r�r�r
rr%r*r2r<rJr:rOr]r_r|�
namedtupler~r�r�rrr�rsrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rjr�r�r�r�r�r�rv�argvr�r��print�exitr�r0r �<module>rs����r�
�*������	�	�	�	�	�	�	�	�
�
�
�
����������
�b��R�	�
�B�

�C�	�	����
�
�-�.�
�
�
�
��r�z�z�B�DF�8�8�	M��H�H�H�H�T
�
�
�
��b�j�j�-�.��02�#<�/$�/$�/$�/$�b,��K�K�K�
,�,�,���������[�[�[����$<*�<*�<*�|
(�
(�
(�
(�)�)�)�,)�)�)�)�&	�	�	�+�+�+�+�F&$�&$�&$�T���@
�
�
�
�	�	�	� $� $� $� $�N�
����� �N�N��R�I�I�I�I�X���8&�&�&�&�&�&�&�R+�+�+�'=�'=�'=�'=�'=��K����-�/�'=�'=�T��U�U�U�r���������������
�
�
�!�b�j�j���h�h� ��",������8�8�	"%��$.�2�:�:�:�$� �&�2�:�:����
��f�f�f�f�P������	/�	/�	/���������������H�H�H�H�^�2�:�:�I���"�r�z�z�"4�5��C�������&$�$�$�2�z���
����
 �
9�I����$9�E��3�8�8�+�N�N�c�h�h�4N�G�	�E�(�(�7�E�
"�#�#��C�H�H�Q�K�K�K�K����Q!�'�'�'�'�'�'�'�'�'���s�H2�2H>�=H>