Edit File: util.cpython-311.pyc
� ����m�d���������������������������d�dl�Z�d�dlmZ�d�dlZd�dlZd�dlmZ�d�dlZd�dl Z d�dl Z d�dlZd�dlZd�dl Z d�dlZ �d�dlZn #�e$�r�dZY�nw�xY�wd�dlZd�dlZd�dlZd�dlZd�dlZ �d�dlZn#�e$�r�d�dlZY�nw�xY�wd�dlZddlmZ�ddlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0��e j1��������e2������������Z3�e j4��������d������������Z5�e j4��������d������������Z6�e j4��������d ������������Z7�e j4��������d ������������Z8�e j4��������d������������Z9�e j4��������d������������Z:�e j4��������d ������������Z;�e j4��������d������������Z<d��Z=d��Z>d��Z?d��Z@d��ZAdkd�ZBd��ZCd��ZDd��ZEejF��������d����������������ZGejF��������d����������������ZHejF��������dld���������������ZI�G�d��deJ������������ZKd��ZL�G�d��d eJ������������ZMd!��ZN�G�d"��d#eJ������������ZO�e j4��������d$e jP��������������������ZQd%��ZRdmd&�ZSd'��ZTd(��ZUd)��ZVd*��ZWd+��ZX�e j4��������d,e jY��������������������ZZ�e j4��������d-������������Z[dmd.�Z\�e j4��������d/������������Z]d0��Z^d1��Z_d2��Z`d3Zad4��Zbd5��Zc�G�d6��d7eJ������������Zd�G�d8��d9eJ������������Ze�G�d:��d;eJ������������Zfd<Zgdnd>�Zhd?��Zid@Zj�G�dA��dBeJ������������Zk�e j4��������dC������������Zl�e j4��������dD������������Zm�e j4��������dE������������ZndF��ZdG��Zoer:ddHlmpZqmrZrmsZs��G�dI��dJe$jt��������������������Zt�G�dK��dLeq������������Zp�G�dM��dNepe'������������Zu�G�dO��dPe%jv��������������������Zver�G�dQ��dRe%jw��������������������Zw�G�dS��dTe%jx��������������������ZxdU��Zy�G�dV��dWeJ������������Zz�G�dX��dYez������������Z{�G�dZ��d[ez������������Z|�G�d\��d]e(������������Z}�G�d^��d_eJ������������Z~d`��Z�G�da��dbeJ������������Z�dc��Z�dd��Z�de��Z�dfdgdhdi�Z�dj��Z�dS�)o�����N)�deque)�iglob����)�DistlibException)�string_types� text_type�shutil� raw_input�StringIO�cache_from_source�urlopen�urljoin�httplib� xmlrpclib� splittype�HTTPHandler�BaseConfigurator�valid_ident� Container�configparser�URLError�ZipFile�fsdecode�unquote�urlparsez^([\w\.-]+)\s*z^([\w\.*+-]+)\s*z^(<=?|>=?|={2,3}|[~!]=)\s*z*^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*z^or\b\s*z ^and\b\s*z(\S+)\s*z(([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)c������������������F���������d�����fd���fd���fd����|�������������S�)ae�� Parse a marker string and return a dictionary containing a marker expression. The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in the expression grammar, or strings. A string contained in quotes is to be interpreted as a literal string, and a string not contained in quotes is a variable (such as os_name). c����������������������t��������������������������������|�������������}|r8|�����������������������������������d���������}|�|�����������������������������������d�����������}��ns|�st ����������d�������������|�d���������}|dvrt ����������d|�z���������������d���������������������|d������������}|�dd�����������}�|g}|�r�|�d���������|k����rn�|�d���������|k����r |���������������������|�������������|�dd�����������}�nwt�������������������������������|�������������}|st ����������d|�z���������������|���������������������|�����������������������������������d����������������������|�|�����������������������������������d�����������}�|���d���������������������|������������}t ����������d|z���������������|���������������������|�������������d���������������������|������������}|�dd������������ ����������������������������������}�||�fS�) Nr���zunexpected end of inputz'"zinvalid expression: %s��r���zerror in string literal: %szunterminated string: %s) � IDENTIFIER�match�groups�end�SyntaxError�replace�append�STRING_CHUNK�join�lstrip)� remaining�m�result�q�oq�parts�ss��� �]/builddir/build/BUILD/cloudlinux-venv-1.0.2/venv/lib/python3.11/site-packages/distlib/util.py� marker_varz parse_marker.<locals>.marker_varA���s���������Y�'�'���� /��X�X�Z�Z��]�F�!�!�%�%�'�'�(�(�+�I�I��� /��7�8�8�8��!��A���~�~�!�":�Y�"F�G�G�G����q�"�%�%�B�!�!�"�"� �I��C�E��� A��Q�<�1�$�$���q�\�R�'�'��L�L��$�$�$� )�!�"�"� �I�I�$�*�*�9�5�5�A���U�)�*G�)�*S�T�T�T��L�L������A��/�/�/� )�!�%�%�'�'�(�(� 3�I���� A���G�G�E�N�N��!�";�a�"?�@�@�@��L�L��O�O�O��W�W�U�^�^�F�!�!�"�"� �,�,�.�.�I��y� � �����c������������������������|�ro|�d���������dk����rc��|�dd�����������������������������������������������������������\��}}�|�d���������dk����rt����������d|�z���������������|�dd�����������������������������������������������}�n{��|�������������\��}}�|�rit�������������������������������|�������������}|snL|�����������������������������������d���������}|�|�����������������������������������d�����������}���|�������������\��}}�|||d�}|��i|}||�fS�)Nr����(r����)�unterminated parenthesis: %s��op�lhs�rhs)r(���r#���� MARKER_OPr ���r!���r"���)r)���r+���r9���r*���r8���r:����markerr1���s��� ��r0����marker_exprz!parse_marker.<locals>.marker_expre���s�������� ��1���,�,� &��y����}�';�';�'=�'=� >� >��F�I���|�s�"�"�!�"@�9�"L�M�M�M�!�!�"�"� �,�,�.�.�I�I�'�Z� �2�2�N�C���� 9��O�O�I�.�.�������X�X�Z�Z��]��%�a�e�e�g�g�h�h�/� �!+��I�!6�!6���Y���C�8�8����� 9���F��y� � r2���c���������������������������|�������������\��}}�|�rOt��������������������������������|�������������}|sn2|�|�����������������������������������d�����������}���|�������������\��}}�d||d�}|��O||�fS�)N�andr7���)�ANDr ���r"���)r)���r9���r*���r:���r=���s��� �r0���� marker_andz parse_marker.<locals>.marker_andx���s��������$��Y�/�/���Y��� 8�� � �)�$�$�A��� ��!�!�%�%�'�'�(�(�+�I�(�[��3�3�N�C���s�3�7�7�C� ��� 8���I�~�r2���c���������������������������|�������������\��}}�|�rOt��������������������������������|�������������}|sn2|�|�����������������������������������d�����������}���|�������������\��}}�d||d�}|��O||�fS�)N�orr7���)�ORr ���r"���)r)���r9���r*���r:���rA���s��� �r0���r<���zparse_marker.<locals>.marker����s��������#��I�.�.���Y��� 7�����#�#�A��� ��!�!�%�%�'�'�(�(�+�I�'�Z� �2�2�N�C���c�#�6�6�C� ��� 7���I�~�r2�����)� marker_stringr<���rA���r=���r1���s��� @@@@r0����parse_markerrG���8���sx����������"!��"!��"!�H!��!��!��!��!��!�& �� �� �� �� � �� �� �� �� ���6�-� � � r2���c�����������������������|�������������������������������������}|r|���������������������d������������rdS�t�������������������������������|������������}|st ����������d|z���������������|�����������������������������������d���������}||�����������������������������������d����������}dx}x}x}}|�r"|d���������dk�����r|���������������������dd������������}|dk�����rt ����������d|z���������������|d|����������} ||dz���d���������������������������������������������}g�}| r�t�������������������������������| ������������}|st ����������d | z���������������|� ��������������������|�����������������������������������d����������������������| |�����������������������������������d����������} | sn<| d���������d k����rt ����������d| z���������������| dd���������������������������������������������} | ��|sd}|�r�|d���������dk����r�|dd���������������������������������������������}t�������������������������������|������������}|st ����������d |z���������������|�����������������������������������d���������}t����������|������������} | j��������r| j ��������st ����������d|z���������������||�����������������������������������d���������������������������������������������}�n.d��}|d���������dk����r�||������������\��}}�n|���������������������dd������������}|dk�����rt ����������d|z���������������|d|����������} ||dz���d���������������������������������������������}t�������������������������������| ������������r�|| ������������\��}}n�t�������������������������������| ������������}|st ����������d| z���������������|�����������������������������������d���������} | |�����������������������������������d���������������������������������������������} | rt ����������d| z���������������d| fg}|rL|d���������dk����rt ����������d|z���������������|dd���������������������������������������������}t!����������|������������\��}}|r|d���������dk����rt ����������d|z���������������|s|}n$|�dd���������������������d��|D�����������������������������}t%����������||||||�������������S�)z� Parse a requirement passed in as a string. Return a Container whose attributes contain the various parts of the requirement. �#Nzname expected: %sr����[�]r���zunterminated extra: %szmalformed extra: %s�,zcomma expected in extras: %s�@zinvalid URI: %szInvalid URL: %sc������������������t����t��������������������������������|�������������}d}|�rg�} �|�����������������������������������d���������}|�|�����������������������������������d����������}�t�������������������������������|�������������}|st����������d|�z���������������|�����������������������������������d���������}|���������������������||f�������������|�|�����������������������������������d����������}�|�r|�d���������dk����rnO|�dd���������������������������������������������}�|�sn0t��������������������������������|�������������}|st����������d|�z�����������������|sd}||�fS�)z| Return a list of operator, version tuples if any are specified, else None. NTr���zinvalid version: %srL���r����invalid constraint: %s)� COMPARE_OPr ���r!���r"����VERSION_IDENTIFIERr#���r%���r(���)� ver_remainingr*����versionsr8����vs��� r0����get_versionsz'parse_requirement.<locals>.get_versions����sT����� ��$�$�]�3�3������(�!�H�X��X�X�Z�Z��]��(5�a�e�e�g�g�h�h�(?� �.�4�4�]�C�C�� ��U�"-�.C�m�.S�"T�"T�T��H�H�J�J�q�M�� ����Q��0�0�0�(5�a�e�e�g�g�h�h�(?� �,��"� �a�0@�C�0G�0G�!�(5�a�b�b�(9�(@�(@�(B�(B� �� -��"�!�&�,�,�]�;�;�� ��X�"-�.F��.V�"W�"W�W�%X�&�$��(�#'����.�.r2���r4���r5���r6���rO���z~=�;zinvalid requirement: %szunexpected trailing data: %s� �, c�����������������������g�|�]}d�|z����S�)z%s %srE���)�.0�cons��� r0���� <listcomp>z%parse_requirement.<locals>.<listcomp> ��s������,O�,O�,O�s�W�s�]�,O�,O�,Or2���)�name�extras�constraintsr<����url�requirement)�strip� startswithr���r ���r#���r!���r"����findr(���r%���� NON_SPACEr����scheme�netlocrP���rQ���rG���r'���r���)�reqr)���r*����distnamer^���� mark_exprrS����uri�ir/����trU����_rT����rss��� r0����parse_requirementrp�������s������ �� � ���I���� �,�,�S�1�1����t�����#�#�A���;��-� �9�:�:�:��x�x�z�z�!�}�H��!�%�%�'�'�(�(�#�I�*.�.�F�.�Y�.��C����Y�q�\�S�(�(��N�N�3��"�"���q�5�5��6��B�C�C�C��a��c�N���a�!�e�f�f�%�,�,�.�.� ����� �� � ��#�#�A��� =�!�"7�!�";�<�<�<��M�M�!�(�(�*�*�Q�-�(�(�(��!�%�%�'�'�(�(��A��� ����t�s�{�{�!�"@�1�"D�E�E�E��!�"�"������A���� ���� ��F���G+��Q�<�3���!�!�"�"� �,�,�.�.�I���� �*�*�A��� A�!�"3�i�"?�@�@�@��(�(�*�*�Q�-�C��� � �A� ��H�� ;���� ;�!�"3�c�"9�:�:�:�!�!�%�%�'�'�(�(�+�2�2�4�4�I�I� /�� /�� /�@���|�s�"�"�&2�l�9�&=�&=�#��)�)��N�N�3��*�*���q�5�5�%�&D�y�&P�Q�Q�Q��a��c�N��%�a�!�e�f�f�-�4�4�6�6� ���#�#�A�&�&�� +�".�,�q�/�/�K�H�a�a�*�0�0��3�3�A���H�)�*B�Q�*F�G�G�G���� � �1� �A��!�%�%�'�'�(�(��*�*�,�,�A���H�)�*B�Q�*F�G�G�G�!%�q� �{�H���7��Q�<�3����7�)�C�D�D�D��a�b�b�M�(�(�*�*� �+�I�6�6�� �9���F�Y�q�\�S�(�(��8�9�D�E�E�E���R� ��� ���$�)�)�,O�,O�h�,O�,O�,O�"P�"P�"P� Q���(�6�x�%�3�B�@��@��@��@r2���c�����������������������d��}i�}|D�]�\��}}}t�����������j�����������������������������|�|������������}t����������|������������D�]�}t�����������j�����������������������������||������������} t����������| ������������D�]v} �||�| ������������}|�|���������������������|d��������������'�||| ������������}|���������������������t�����������j��������j��������d���������������������������������d������������} | dz���|z���||<����w����|S�)z%Find destinations for resources filesc����������������������|�����������������������t����������j��������j��������d������������}�|����������������������t����������j��������j��������d������������}|���������������������|�������������sJ��|t����������|�������������d��������������������������������d������������S��N�/)r$����os�path�seprc����lenr(���)�rootrv���s��� r0����get_rel_pathz)get_resources_dests.<locals>.get_rel_path��sk�������|�|�B�G�K��-�-���|�|�B�G�K��-�-�����t�$�$�$�$�$��C��I�I�J�J��&�&�s�+�+�+r2���Nrt���)ru���rv���r'���r����popr$���rw����rstrip)�resources_root�rulesrz����destinations�base�suffix�dest�prefix�abs_base�abs_glob�abs_path� resource_file�rel_path�rel_dests��� r0����get_resources_destsr������s�����,��,��,���L�#��L��L���f�d�����n�d�3�3���f� � �� L�� L�H��w�|�|�H�f�5�5�H�!�(�O�O�� L�� L�� ,��^�X� F� F� ��<� �$�$�]�D�9�9�9�9�+�|�H�h�?�?�H�#�|�|�B�G�K��=�=�D�D�S�I�I�H�2:�S�.�8�2K�L��/�/� L� L���r2���c������������������������t����������t����������d������������rd}�n.t����������j��������t����������t����������dt����������j��������������������k����}�|�S�)N�real_prefixT�base_prefix)�hasattr�sysr�����getattr�r+���s��� r0����in_venvr����(��s=�������s�M�"�"��G�������w�s�M�3�:�F�F�F���Mr2���c�������������������f�����t�����������j��������}�t����������|�t����������������������st ����������|�������������}�|�S��N)r����� executable� isinstancer���r���r����s��� r0����get_executabler����2��s/��������^�F��f�i�(�(��"��&�!�!���Mr2���c�����������������������|�} �t����������|������������}|�}|s|r|}|r)|d��������������������������������������������}||v�rn|rd|||�fz��}�C|S�)NTr���z %c: %s %s)r ����lower)�prompt� allowed_chars�error_prompt�default�pr/����cs��� r0����proceedr����D��s|�������A� =��a�L�L������ �W�� ��A��� =��!�� � ���A��M�!�!���� =� �A�|�V�#<�<�� =�� �Hr2���c�����������������������t����������|t����������������������r|�����������������������������������}i�}|D�]}||�v�r|�|���������||<����|S�r����)r����r����split)�d�keysr+����keys��� r0����extract_by_keyr����T��sQ�������$��%�%����z�z�|�|�� �F���!��!���!�8�8��C�&�F�3�K���Mr2���c����������������������t�����������j��������d���������dk����r�t����������j��������d������������|�������������}�|������������������������������������}t����������|������������}� �t ����������j��������|�������������}|d���������d���������d���������}|�����������������������������������D�]>\��}}|�����������������������������������D�]$\��}}|�d|��}t����������|������������} | �J��| ||<����%�?|S�#�t����������$�r�|����������������������dd�������������Y�nw�xY�wd��} t����������j ����������������������} ��| ||��������������nX#�t����������j��������$�rF�|�������������������������������������t!����������j��������|������������}t����������|������������}��| ||��������������Y�nw�xY�wi�}|�����������������������������������D�]C}i�x||<���}|���������������������|������������D�]$\��} }| �d|��}t����������|������������} | �J��| || <����%�D|S�) Nr��������utf-8� extensionszpython.exports�exports� = c������������������~�����t����������|�d������������r|����������������������|�������������d�S�|����������������������|�������������d�S�)N� read_file)r����r�����readfp)�cp�streams��� r0����read_streamz!read_exports.<locals>.read_streamq��sD�������2�{�#�#�� ��L�L�� � � � � ��I�I�f�����r2���)r�����version_info�codecs� getreader�readr����json�load�items�get_export_entry� Exception�seekr����ConfigParser�MissingSectionHeaderError�close�textwrap�dedent�sections)r�����data�jdatar+����group�entries�krT���r/����entryr����r����r����r]����values��� r0����read_exportsr����]��s:����� ����a���*��!�'�*�*�6�2�2���;�;�=�=�D� �d�^�^�F��� �&�!�!���|�$�%5�6�y�A��$�l�l�n�n�� #�� #�N�E�7�� � ���� #�� #���1�!"���A�A�&��(��+�+���(�(�(�"��� � � #� �� ������������A�q���������������� � "� $� $�B� ���B��������1�� �� �� ���������t�$�$���$������B������� ������F��{�{�}�}��"��"�� "�"��s��g��8�8�C�=�=�� "�� "�K�D�%�!�T�T�5�5�)�A�$�Q�'�'�E��$�$�$�!�G�D�M�M� "���Ms&����A<C�� C8�7C8�D��AE4�3E4c����������������������t�����������j��������d���������dk����r�t����������j��������d������������|������������}t ����������j����������������������}|������������������������������������D�]�\��}}|���������������������|�������������|�����������������������������������D�]e}|j ���������|j ��������}n|j ���������d|j ����������}|j��������r |�dd���������������������|j���������������������d�}|� ��������������������||j��������|��������������f��|���������������������|�������������d�S�)Nr���r����r�����:z [rX���rK���)r����r����r����� getwriterr���r����r�����add_section�valuesr����r�����flagsr'����setr]����write)r����r����r����r����rT���r����r/���s��� r0���� write_exportsr�������s����� ����a���*��!�'�*�*�6�2�2�� � "� $� $�B�� � ���� %�� %���1� ���q�����X�X�Z�Z�� %�� %�E��|�#��L���$�|�|�|�U�\�\�:���{�� <�!"���D�I�I�e�k�$:�$:�$:�$:�;���F�F�1�e�j�!�$�$�$�$� %���H�H�V�����r2���c���������������#�������K����t����������j����������������������}� �|�V���t����������j��������|��������������d�S�#�t����������j��������|��������������w�xY�wr����)�tempfile�mkdtempr ����rmtree)�tds��� r0����tempdirr�������sN���������� � � � �B������� �b�������� �b�������s ����1��Ac��������������#�������K����t����������j����������������������} �t����������j��������|��������������d�V���t����������j��������|�������������d�S�#�t����������j��������|�������������w�xY�wr����)ru����getcwd�chdir)r�����cwds��� r0���r����r�������sO���������� �)�+�+�C�� ������ ���� ��� � � � � ����� � � � ��������A��A����c��������������#�������K����t����������j����������������������} �t����������j��������|��������������d�V���t����������j��������|�������������d�S�#�t����������j��������|�������������w�xY�wr����)�socket�getdefaulttimeout�setdefaulttimeout)�seconds�ctos��� r0����socket_timeoutr�������sa���������� � "� $� $�C�&�� ��)�)�)� ����� ��%�%�%�%�%��� ��%�%�%�%���r����c�������������������������e�Zd�Zd��Zdd�ZdS�)�cached_propertyc�����������������������||�_���������d�S�r����)�func)�selfr����s��� r0����__init__zcached_property.__init__���s �������� � � r2���Nc�����������������������|�|�S�|�����������������������|������������}t�������������������������������||�j���������j��������|�������������|S�r����)r�����object�__setattr__�__name__)r�����obj�clsr����s��� r0����__get__zcached_property.__get__���s=�������;��K�� � �#�������3�� � 2�E�:�:�:��r2���r����)r����� __module__�__qualname__r����r����rE���r2���r0���r����r�������s7������������������� ����������r2���r����c����������������������t�����������j��������dk����r|�S�|�s|�S�|�d���������dk����rt����������d|�z���������������|�d���������dk����rt����������d|�z���������������|����������������������d������������}t�����������j��������|v�r-|���������������������t�����������j���������������������t�����������j��������|v��-|st�����������j��������S�t����������j��������j��������|��S�)a���Return 'pathname' as a name that will work on the native filesystem. The path is split on '/' and put back together again using the current directory separator. Needed because filenames in the setup script are always supplied in Unix style, and have to be converted to the local convention before we can actually use them in the filesystem. Raises ValueError on non-Unix-ish systems if 'pathname' either starts or ends with a slash. rt���r���zpath '%s' cannot be absolute���zpath '%s' cannot end with '/')ru���rw���� ValueErrorr�����curdir�removerv���r'���)�pathname�pathss��� r0����convert_pathr�������s�������� �v��}�}����������{�c����7�(�B�C�C�C���|�s����8�8�C�D�D�D��N�N�3���E� �)�u� � � ���R�Y����� �)�u� � �����y�� �7�<���r2���c��������������������v�����e�Zd�Zdd�Zd��Zd��Zd��Zdd�Zdd �Zd ��Z d��Z d��Zd ��Zd��Z dd�Zd��Zd��Zd��Zd��ZdS�)�FileOperatorFc������������������b�����||�_���������t������������������������|�_��������|�������������������������������������d�S�r����)�dry_runr�����ensured�_init_record)r����r��s��� r0���r����zFileOperator.__init__���s,����������u�u����������r2���c������������������`�����d|�_���������t������������������������|�_��������t������������������������|�_��������d�S��NF)�recordr����� files_written�dirs_created�r����s��� r0���r��zFileOperator._init_record���s'��������� �U�U����E�E����r2���c������������������L�����|�j���������r|�j�����������������������������|�������������d�S�d�S�r����)r��r���add)r����rv���s��� r0����record_as_writtenzFileOperator.record_as_written���s3�������;�� )���"�"�4�(�(�(�(�(� )�� )r2���c������������������H����t�����������j�����������������������������|������������s/t����������dt�����������j�����������������������������|������������z���������������t�����������j�����������������������������|������������sdS�t����������j��������|������������j��������t����������j��������|������������j��������k����S�)a���Tell if the target is newer than the source. Returns true if 'source' exists and is more recently modified than 'target', or if 'source' exists and 'target' doesn't. Returns false if both exist and 'target' is the same age or younger than 'source'. Raise PackagingFileError if 'source' does not exist. Note that this test is not very accurate: files created in the same second will have the same "age". zfile '%r' does not existT)ru���rv����existsr����abspath�stat�st_mtime)r�����source�targets��� r0����newerzFileOperator.newer���s���������w�~�~�f�%�%�� <�"�#=�#%�7�?�?�6�#:�#:�$;��<��<�� <��w�~�~�f�%�%�� ��4��w�v���'�"�'�&�/�/�*B�B�Br2���Tc����������������������|�����������������������t����������j�����������������������������|�������������������������t�������������������������������d||�������������|�j��������s�d}|rht����������j�����������������������������|������������rd|z��}nCt����������j�����������������������������|������������r$t����������j��������� ��������������������|������������sd|z��}|rt����������|dz����������������t����������j��������||�������������|�� ��������������������|�������������dS�)z8Copy a file respecting dry-run and force flags. zCopying %s to %sNz%s is a symlinkz%s is a non-regular filez which would be overwritten)� ensure_dirru���rv����dirname�logger�infor���islinkr���isfiler����r ����copyfiler��)r�����infile�outfile�check�msgs��� r0���� copy_filezFileOperator.copy_file��s�������� ��������0�0�1�1�1����&���8�8�8��|�� -��C��� ?��7�>�>�'�*�*��?�+�g�5�C�C��W�^�^�G�,�,��?�R�W�^�^�G�5L�5L��?�4�w�>�C��� F� ��'D�!D�E�E�E��O�F�G�,�,�,����w�'�'�'�'�'r2���Nc����������������������t�����������j�����������������������������|������������rJ��|����������������������t�����������j�����������������������������|�������������������������t �������������������������������d||�������������|�j��������sn|�t����������|d������������}nt����������j��������|d|�������������} �t����������j��������||�������������|������������������������������������n#�|������������������������������������w�xY�w|�� ��������������������|�������������d�S�)NzCopying stream %s to %s�wb�w��encoding)ru���rv����isdirr��r��r��r��r���openr����r ����copyfileobjr����r��)r�����instreamr��r&��� outstreams��� r0����copy_streamzFileOperator.copy_stream��s��������7�=�=��)�)�)�)�)���������0�0�1�1�1����-�x��A�A�A��|�� "��� ��$�/�/� � �"�K���x�H�H�H� � "��"�8�Y�7�7�7����!�!�!�!�� ���!�!�!�!�������w�'�'�'�'�'s����"C��C"c����������������������|�����������������������t����������j�����������������������������|�������������������������|�j��������spt����������j�����������������������������|������������rt����������j��������|�������������t����������|d������������5�}|���������������������|�������������d�d�d��������������n#�1�swxY�w�Y���|�� ��������������������|�������������d�S�)Nr#��) r��ru���rv���r��r��r��r����r(��r����r��)r����rv���r�����fs��� r0����write_binary_filezFileOperator.write_binary_file'��s���������������-�-�.�.�.��|�� ��w�~�~�d�#�#�� �� �$�����d�D�!�!�� �Q����� � � � �� �� �� �� �� �� �� �� �� �� ����� �� �� �� ����t�$�$�$�$�$s����=B�B#�&B#c������������������X�����|�����������������������||���������������������|�������������������������d�S�r����)r/���encode)r����rv���r����r&��s��� r0����write_text_filezFileOperator.write_text_file0��s*���������t�T�[�[��%:�%:�;�;�;�;�;r2���c������������������^����t�����������j��������dk����s t�����������j��������dk����r�t�����������j��������dk����rz|D�]y}|�j��������rt�������������������������������d|��������������%t����������j��������|������������j��������|z��|z��}t�������������������������������d||�������������t����������j��������||��������������vd�S�d�S�d�S�)N�posix�javazchanging mode of %szchanging mode of %s to %o) ru���r]����_namer��r��r��r���st_mode�chmod)r�����bits�mask�filesr.���modes��� r0����set_modezFileOperator.set_mode3��s������� �7�g���"�'�V�"3�"3���G�8K�8K���� &�� &���<��&��K�K� 5�q�9�9�9�9��G�A�J�J�.��5��=�D��K�K� ;�Q��E�E�E��H�Q��%�%�%�%��#4�"3�8K�8K� &�� &r2���c������������������0�����|�����������������������dd|������������S�)Nim��i���)r=��)r/���r.��s��� r0����<lambda>zFileOperator.<lambda>?��s������q�z�z�%���'C�'C��r2���c�����������������������t�����������j�����������������������������|������������}||�j��������vr�t�����������j�����������������������������|������������s�|�j�����������������������������|�������������t�����������j�����������������������������|������������\��}}|����������������������|�������������t����������� ��������������������d|z���������������|�j ��������st����������j��������|�������������|�j��������r |�j �����������������������������|�������������d�S�d�S�d�S�d�S�)NzCreating %s)ru���rv���r��r��r��r��r����r��r��r��r���mkdirr��r��)r����rv���r����r.��s��� r0���r��zFileOperator.ensure_dirA��s��������w���t�$�$���t�|�#�#�B�G�N�N�4�,@�,@�#��L���T�"�"�"��7�=�=��&�&�D�A�q��O�O�A�����K�K� ��,�-�-�-��<�� ��������{�� ,��!�%�%�d�+�+�+�+�+��$�#�#�#� ,�� ,r2���c����������������������t����������||�������������}t�������������������������������d||�������������|�j��������s�|s|����������������������||������������r3|sd�}n.|���������������������|������������sJ��|t ����������|������������d�����������}i�}|r)t����������t����������d������������rt����������j ��������j ��������|d<���t����������j��������|||dfi�|���|����������������������|�������������|S�)NzByte-compiling %s to %s�PycInvalidationMode�invalidation_modeT) r���r��r��r��r��rc���rx���r����� py_compilerC���CHECKED_HASH�compiler��) r����rv����optimize�forcer�����hashed_invalidation�dpath�diagpath�compile_kwargss ��� r0����byte_compilezFileOperator.byte_compileM��s�������!�$�H��5�5�����-�t�U�;�;�;��|�� N��� 2�� � �4��/�/�� 2���2�#�H�H��?�?�6�2�2�2�2�2�#�C��K�K�L�L�1�H��N�"�� b�w�z�;P�'Q�'Q�� b�6@�6T�6a��2�3���t�U�H�d�M�M�n�M�M�M����u�%�%�%��r2���c����������������������t�����������j�����������������������������|�������������r+t�����������j�����������������������������|������������r�t�����������j�����������������������������|������������sft �������������������������������d|�������������|�j��������st����������j ��������|�������������|�j ��������r%||�j��������v�r|�j�����������������������������|�������������d�S�d�S�d�S�t�����������j�����������������������������|������������rd}nd}t �������������������������������d||�������������|�j��������st����������j��������|�������������|�j ��������r'||�j ��������v�r |�j �����������������������������|�������������d�S�d�S�d�S�d�S�)NzRemoving directory tree at %s�link�filezRemoving %s %s)ru���rv���r��r'��r��r���debugr��r ���r����r��r��r����r��)r����rv���r/���s��� r0����ensure_removedzFileOperator.ensure_removed^��sX����� �7�>�>�$���� 8��w�}�}�T�"�"�� 8�2�7�>�>�$�+?�+?�� 8����<�d�C�C�C��|��(��M�$�'�'�'��;��7��t�0�0�0��)�0�0��6�6�6�6�6�7��7�0�0���7�>�>�$�'�'����A�A��A����-�q�$�7�7�7��|��$��I�d�O�O�O��;��8��t�1�1�1��*�1�1�$�7�7�7�7�7�% 8�� 8� 8��8�1�1r2���c������������������������d}|sit�����������j�����������������������������|������������r t����������j��������|t�����������j��������������������}n*t�����������j�����������������������������|������������}||k����rn|}|�i|S�r��)ru���rv���r���access�W_OKr��)r����rv���r+����parents��� r0����is_writablezFileOperator.is_writables��sp���������� ��w�~�~�d�#�#�� ���4���1�1����W�_�_�T�*�*�F���~�~���D���� ��� r2���c������������������\�����|�j���������sJ��|�j��������|�j��������f}|�������������������������������������|S�)zV Commit recorded changes, turn off recording, return changes. )r��r��r��r��)r����r+���s��� r0����commitzFileOperator.commit��s9������ ��{�����#�T�%6�6��������� r2���c�����������������������|�j���������s�t����������|�j��������������������D�]5}t����������j�����������������������������|������������rt����������j��������|��������������6t����������|�j��������d�������������}|D�]o}t����������j ��������|������������}|rC|dgk����sJ��t����������j��������� ��������������������||d���������������������}t����������j��������|�������������t����������j��������|��������������p|�������������������������������������d�S�)NT)�reverse�__pycache__r���) r���listr��ru���rv���r��r�����sortedr���listdirr'����rmdirr��)r����r.���dirsr�����flist�sds��� r0����rollbackzFileOperator.rollback���s��������|�� ��$�,�-�-�� !�� !���7�>�>�!�$�$��!��I�a�L�L�L����$�+�T�:�:�:�D��� �� ��� �1� � ����!� �]�O�3�3�3�3�����a��q��2�2�B��H�R�L�L�L���������������r2����F�Tr����)FFNF)r����r����r����r����r��r��r��r!��r,��r/��r2��r=���set_executable_moder��rN��rS��rX��rZ��re��rE���r2���r0���r����r�������s�������������������� "��"��"� )��)��)�C��C��C�((��(��(��(�" (�� (�� (�� (�%��%��%�<��<��<� &�� &�� &��D�C�� ,�� ,�� ,��������"8��8��8�* �� �� ��������������r2���r����c������������������ ����|�t�����������j��������v�rt�����������j��������|����������}nt����������|�������������}|�|}nM|���������������������d������������}t ����������||���������������������d������������������������}|D�]}t ����������||������������}�|S�)N�.r���)r�����modules� __import__r����r����r{���)�module_name�dotted_path�modr+���r.���r����s��� r0����resolverp�����s��������c�k�!�!��k�+�&�����%�%��������!�!�#�&�&����e�i�i��l�l�+�+���� (�� (�A��V�Q�'�'�F�F��Mr2���c��������������������D�����e�Zd�Zd��Zed����������������Zd��Zd��Zej ��������Z dS�)�ExportEntryc������������������>�����||�_���������||�_��������||�_��������||�_��������d�S�r�����r]���r����r����r����)r����r]���r����r����r����s��� r0���r����zExportEntry.__init__���s"�������� ��������� � � r2���c������������������6�����t����������|�j��������|�j��������������������S�r����)rp��r����r����r ��s��� r0���r����zExportEntry.value���s�������t�{�D�K�0�0�0r2���c����������� �������H�����d|�j����������d|�j���������d|�j���������d|�j���������d� S�)Nz <ExportEntry r����r����rW����>rt��r ��s��� r0����__repr__zExportEntry.__repr__���s2��������04� � � �4�;�;�;�04����T�Z�Z�Z�I�� Ir2���c�����������������������t����������|t����������������������sd}n@|�j��������|j��������k����o/|�j��������|j��������k����o|�j��������|j��������k����o|�j��������|j��������k����}|S�r��)r����rr��r]���r����r����r����)r�����otherr+���s��� r0����__eq__zExportEntry.__eq__���sh�������%��-�-�� 1��F�F��i�5�:�-��0��k�U�\�1�0��k�U�\�1�0���j�E�K�/�� ��� r2���N) r����r����r����r����r����r����rx��r{��r�����__hash__rE���r2���r0���rr��rr�����sb���������������������1��1���_�1�I��I��I���������H�H�Hr2���rr��z�(?P<name>([^\[]\S*)) \s*=\s*(?P<callable>(\w+)([:\.]\w+)*) \s*(\[\s*(?P<flags>[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? c����������������������t��������������������������������|�������������}|sd�}d|�v�sd|�v�rt����������d|�z���������������n�|�����������������������������������}|d���������}|d���������}|���������������������d������������}|dk����r|d�}}n0|dk����rt����������d|�z���������������|���������������������d������������\��}}|d ���������} | �d|�v�sd|�v�rt����������d|�z���������������g�} nd ��| ���������������������d������������D���������������} t ����������|||| ������������}|S�)NrJ���rK���zInvalid specification '%s'r]����callabler����r���r���r����c������������������6�����g�|�]}|��������������������������������������S�rE����rb���)rZ���r.��s��� r0���r\���z$get_export_entry.<locals>.<listcomp>���s ������9�9�9�1�Q�W�W�Y�Y�9�9�9r2���rL���)�ENTRY_RE�searchr���� groupdict�countr����rr��) � specificationr*���r+���r����r]���rv����colonsr����r����r����s ��� r0���r����r�������sX�������� �&�&�A���:����-���3�-�#7�#7�"��$*�,9�$:��;��;�� ;��$8�� �K�K�M�M����y����}�����C�����Q�;�;�!�4�F�F�F���{�{�&��(.�0=�(>��?��?��?�!�Z�Z��_�_�N�F�F��'� ���=��m�#�#�s�m�';�';�&��(.�0=�(>��?��?��?��E�E�9�9����C�(8�(8�9�9�9�E��T�6�6�5�9�9���Mr2���c����������������������|��d}�t�����������j��������dk����r.dt�����������j��������v�r t�����������j�����������������������������d������������}nt�����������j�����������������������������d������������}t�����������j�����������������������������|������������r=t����������j��������|t�����������j��������������������}|st����������� ��������������������d|�������������nG �t����������j��������|�������������d}n/#�t����������$�r"�t����������� ��������������������d |d� �������������d}Y�nw�xY�w|s.t����������j����������������������}t����������� ��������������������d|�������������t�����������j�����������������������������||�������������S�) a��� Return the default base location for distlib caches. If the directory does not exist, it is created. Use the suffix provided for the base directory, and default to '.distlib' if it isn't provided. On Windows, if LOCALAPPDATA is defined in the environment, then it is assumed to be a directory, and will be the parent directory of the result. On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home directory - using os.expanduser('~') - will be the parent directory of the result. The result is just the directory '.distlib' in the parent directory as determined above, or with the name specified with ``suffix``. Nz.distlib�nt�LOCALAPPDATAz $localappdata�~z(Directory exists but is not writable: %sTzUnable to create %s)�exc_infoFz#Default location unusable, using %s)ru���r]����environrv���� expandvars� expanduserr'��rU��rV��r���warning�makedirs�OSErrorr����r����r'���)r����r+����usables��� r0����get_cache_baser������s:�������~��� �w�$���>�R�Z�7�7���#�#�O�4�4������#�#�C�(�(��� �w�}�}�V���� ���6�2�7�+�+���� O��N�N�E�v�N�N�N�� ��K������F�F���� �� �� ��N�N�0�&�4�N�H�H�H��F�F�F� �������F��!�#�#�����<�f�E�E�E� �7�<�<���'�'�'s����?C��)D�Dc�����������������������t�����������j�����������������������������t�����������j�����������������������������|�������������������������\��}}|r|���������������������dd������������}|���������������������t�����������j��������d������������}||z���dz���S�)a�� Convert an absolute path to a directory name for use in a cache. The algorithm used is: #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. #. Any occurrence of ``os.sep`` is replaced with ``'--'``. #. ``'.cache'`` is appended. r����z---z--z.cache)ru���rv���� splitdriver��r$���rw���)rv���r����r����s��� r0����path_to_cache_dirr�����sj��������7���b�g�o�o�d�3�3�4�4�D�A�q���"� �I�I�c�5�!�!�� � � �"�&�$���A��q�5�8��r2���c������������������:�����|�����������������������d������������s|�dz���S�|�S�rs���)�endswith)r/���s��� r0����ensure_slashr���$��s"�������:�:�c�?�?����3�w���Hr2���c������������������������d�x}}d|�v�r9|�����������������������dd������������\��}}�d|vr|}n|���������������������dd������������\��}}|rt����������|������������}|rt����������|������������}|||�fS�)NrM���r���r����)�rsplitr����r���)rg����username�passwordr����s��� r0����parse_credentialsr���*��s���������H�x� �f�}�}����s�A�.�.�����f����H�H�!'���c�1�!5�!5��H�h���%��8�$�$����%��8�$�$���X�v�%�%r2���c�������������������V�����t����������j��������d������������}�t����������j��������|��������������|�S�)N����)ru����umaskr����s��� r0����get_process_umaskr���9��s$������ �X�d�^�^�F��H�V�����Mr2���c������������������r�����d}d�}t����������|�������������D�]\��}}t����������|t����������������������sd}�n�|�J��|S�)NTF)� enumerater����r���)�seqr+���rl���r/���s��� r0����is_string_sequencer���>��sV������ �F��A��#���������1��!�\�*�*�� ��F��E� �� �=�=�=��Mr2���z3([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-([a-z0-9_.+-]+)z -py(\d\.?\d?)c������������������z����d}d}t����������|����������������������������������dd������������}�t�������������������������������|�������������}|r1|���������������������d������������}|�d|���������������������������������������������}�|r{t ����������|�������������t ����������|������������dz���k����rXt����������j��������t����������j ��������|������������dz���|�������������}|r,|� ����������������������������������}|�d|����������|�|dz���d����������|f}|�Gt�������������������������������|�������������}|r+|���������������������d������������|���������������������d������������|f}|S�)zw Extract name, version, python version from a filename (no extension) Return name, version, pyver or None NrW����-r���z\br����)r���r$����PYTHON_VERSIONr���r�����startrx����rer ����escaper"����PROJECT_NAME_AND_VERSION)�filename�project_namer+����pyverr*����ns��� r0����split_filenamer���M��s+�������F��E��x� � �(�(��c�2�2�H����h�'�'�A���(����� � ���J�Q�W�W�Y�Y�J�'����;��H� � ��L�(9�(9�A�(=�=�=��H�R�Y�|�,�,�u�4�h�?�?���� ;������A��b�q�b�\�8�A��E�F�F�#3�U�:�F� �~�$�*�*�8�4�4���� 3��W�W�Q�Z�Z�������U�2�F��Mr2���z-(?P<name>[\w .-]+)\s*\(\s*(?P<ver>[^\s)]+)\)$c������������������������t��������������������������������|�������������}|st����������d|�z���������������|�����������������������������������}|d�������������������������������������������������������������������������������|d���������fS�)z� A utility method used to get name and version from a string. From e.g. a Provides-Dist value. :param p: A value in a form 'foo (1.0)' :return: The name and version as a tuple. z$Ill-formed name/version string: '%s'r]����ver)�NAME_VERSION_REr ���r���r���rb���r����)r����r*���r����s��� r0����parse_name_and_versionr���i��sj������� ���a� � �A���M��G�!�K�L�L�L� ��� � �A��V�9�?�?���"�"�$�$�a��h�.�.r2���c����������������������t������������������������}t����������|�pg�������������}�t����������|pg�������������}d|�v�r|����������������������d�������������||z��}|�D�]�}|dk����r|���������������������|��������������|���������������������d������������rE|dd�����������}||vrt�������������������������������d|z���������������||v�r|���������������������|��������������x||vrt�������������������������������d|z���������������|���������������������|���������������|S�)N�*r���r���zundeclared extra: %s)r����r����r��rc���r��r���)� requested� availabler+����r�unwanteds��� r0���� get_extrasr���x��s����� �U�U�F��I�O��$�$�I��I�O��$�$�I� �i�����������)��� ��������8�8��J�J�q�M�M�M�M� �\�\�#� � �� �����u�H��y�(�(����5��@�A�A�A��6�!�!�� � �h�'�'�'��� �!�!����5��9�:�:�:��J�J�q�M�M�M�M��Mr2���c����������������������i�} �t����������|�������������}|�����������������������������������}|���������������������d������������}|���������������������d������������st�������������������������������d|�������������n1�t ����������j��������d������������|������������}t����������j ��������|������������}n3#�t����������$�r&}t�������������������������������d|�|�������������Y�d�}~nd�}~ww�xY�w|S�)NzContent-Typezapplication/jsonz(Unexpected response for JSON request: %sr����z&Failed to get external data for %s: %s)r ���r���getrc���r��rR��r����r����r����r����r����� exception)r`���r+����resp�headers�ct�reader�es��� r0����_get_external_datar������s������� �F�K���s�|�|���)�)�+�+�� �[�[�� (� (���}�}�/�0�0�� '��L�L�C�R�H�H�H�H�.�V�%�g�.�.�t�4�4�F���Y�v�&�&�F�����K��K��K����A�3��J�J�J�J�J�J�J�J�����K�����Ms����BB�� C�)C � Cz'https://www.red-dove.com/pypi/projects/c�����������������������|�d����������������������������������������������d|��d�}t����������t����������|������������}t����������|������������}|S�)Nr���rt���z /project.json��upperr����_external_data_base_urlr���)r]���r`���r+���s��� r0����get_project_datar������sB������"&�q�'�-�-�/�/�/�/�4�4�4� 8�C� �)�3� /� /�C� �� $� $�F��Mr2���c�����������������������|�d����������������������������������������������d|��d|�d�}t����������t����������|������������}t����������|������������S�)Nr���rt���z /package-z.jsonr���)r]����versionr`���s��� r0����get_package_datar������sD������%)�!�W�]�]�_�_�_�_�d�d�d�G�G�G� D�C� �)�3� /� /�C��c�"�"�"r2���c��������������������$�����e�Zd�ZdZd��Zd��Zd��ZdS�)�Cachez� A class implementing a cache for resources that need to live in the file system e.g. shared libraries. This class was moved from resources to here because it could be used by other modules, e.g. the wheel module. c������������������d����t�����������j�����������������������������|������������st����������j��������|�������������t����������j��������|������������j��������dz��dk����rt�������������������������������d|�������������t�����������j�����������������������������t�����������j��������� ��������������������|������������������������|�_ ��������dS�)zu Initialise an instance. :param base: The base directory where the cache should be located. �?���r���zDirectory '%s' is not privateN)ru���rv���r'��r���r��r7��r��r���r���normpathr����)r����r����s��� r0���r����zCache.__init__���s���������w�}�}�T�"�"�� ��K������G�D�M�M�!�D�(�Q�.�.��N�N�<�d�C�C�C��G�O�O�B�G�$4�$4�T�$:�$:�;�;�� � � r2���c������������������ �����t����������|������������S�)zN Converts a resource prefix to a directory name in the cache. )r���)r����r����s��� r0���� prefix_to_dirzCache.prefix_to_dir���s�������!��(�(�(r2���c�����������������������g�}t����������j��������|�j��������������������D�]�}t�����������j�����������������������������|�j��������|������������} �t�����������j�����������������������������|������������st�����������j�����������������������������|������������rt����������j��������|�������������n3t�����������j�����������������������������|������������rt����������j ��������|���������������#�t����������$�r�|���������������������|�������������Y���w�xY�w|S�)z" Clear the cache. ) ru���r`��r����rv���r'���r��r��r����r'��r ���r����r����r%���)r�����not_removed�fns��� r0����clearzCache.clear���s�����������*�T�Y�'�'�� '�� '�B�����d�i��,�,�B� '��7�>�>�"�%�%��&������);�);��&��I�b�M�M�M�M��W�]�]�2�&�&��&��M�"�%�%�%����� '�� '�� '��"�"�2�&�&�&�&�&� '�����s����BC�C-�,C-N)r����r����r�����__doc__r����r���r���rE���r2���r0���r���r������sK�����������������<��<��<�)��)��)���������r2���r���c��������������������2�����e�Zd�ZdZd��Zd d�Zd��Zd��Zd��ZdS�) � EventMixinz1 A very simple publish/subscribe system. c�����������������������i�|�_���������d�S�r����)�_subscribersr ��s��� r0���r����zEventMixin.__init__���s����������r2���Tc�����������������������|�j���������}||vrt����������|g������������||<���dS�||���������}|r|���������������������|�������������dS�|���������������������|�������������dS�)a`�� Add a subscriber for an event. :param event: The name of an event. :param subscriber: The subscriber to be added (and called when the event is published). :param append: Whether to append or prepend the subscriber to an existing subscriber list for the event. N)r���r���r%���� appendleft)r�����event� subscriberr%����subs�sqs��� r0���r��zEventMixin.add���so�������� ���������-�-�D��K�K�K��e��B��� *�� � �*�%�%�%�%�%�� � �j�)�)�)�)�)r2���c������������������v�����|�j���������}||vrt����������d|z���������������||������������������������������|�������������dS�)z� Remove a subscriber for an event. :param event: The name of an event. :param subscriber: The subscriber to be removed. zNo subscribers: %rN)r���r����r����)r����r���r���r���s��� r0���r����zEventMixin.remove���sI�������� �������1�E�9�:�:�:��U����:�&�&�&�&�&r2���c������������������R�����t����������|�j�����������������������������|d������������������������S�)z� Return an iterator for the subscribers for an event. :param event: The event to return subscribers for. rE���)�iterr���r���)r����r���s��� r0����get_subscriberszEventMixin.get_subscribers��s%������ ��D�%�)�)�%��4�4�5�5�5r2���c����������������������g�}|�����������������������|������������D�]Q} ��||g|�R�i�|��}n,#�t����������$�r�t�������������������������������d�������������d}Y�nw�xY�w|���������������������|��������������Rt�������������������������������d||||�������������|S�)a^�� Publish a event and return a list of values returned by its subscribers. :param event: The event to publish. :param args: The positional arguments to pass to the event's subscribers. :param kwargs: The keyword arguments to pass to the event's subscribers. z"Exception during event publicationNz/publish %s: args = %s, kwargs = %s, result = %s)r���r����r��r���r%���rR��)r����r����args�kwargsr+���r���r����s��� r0����publishzEventMixin.publish ��s�����������.�.�u�5�5�� !�� !�J� �"� �5�:�4�:�:�:�6�:�:������ �� �� �� � �!E�F�F�F����� ����� �M�M�%� � � � ����F��D�&�&� 2�� 2�� 2�� s����(�&A�ANrg��) r����r����r����r���r����r��r����r���r���rE���r2���r0���r���r������sn����������������������*��*��*��*�( '�� '�� '�6��6��6���������r2���r���c��������������������f�����e�Zd�Zd��Zd��Zdd�Zd��Zd��Zd��Zd��Z e d ����������������Ze d ����������������ZdS�) � Sequencerc������������������H�����i�|�_���������i�|�_��������t������������������������|�_��������d�S�r����)�_preds�_succsr�����_nodesr ��s��� r0���r����zSequencer.__init__(��s�������������e�e����r2���c������������������:�����|�j������������������������������|�������������d�S�r����)r���r��)r�����nodes��� r0����add_nodezSequencer.add_node-��s���������������r2���Fc������������������0����||�j���������v�r|�j������������������������������|�������������|r�t����������|�j�����������������������������|d������������������������D�]}|����������������������||��������������t����������|�j�����������������������������|d������������������������D�]}|����������������������||��������������t ����������|�j�������������������������������������������������������D�]\��}}|s|�j��������|=��t ����������|�j�������������������������������������������������������D�]\��}}|s|�j��������|=��d�S�d�S�)NrE���)r���r����r����r���r���r���r^��r����)r����r����edgesr����r/���r����rT���s��� r0����remove_nodezSequencer.remove_node0��s3������4�;����K���t�$�$�$��� '�������r�2�2�3�3�� %�� %�����A�t�$�$�$�$�������r�2�2�3�3�� %�� %�����D�!�$�$�$�$��T�[�.�.�0�0�1�1�� '�� '���1���'���A����T�[�.�.�0�0�1�1�� '�� '���1���'���A��� '�� '� '�� 'r2���c�����������������������||k����sJ��|�j������������������������������|t���������������������������������������������������������|�������������|�j�����������������������������|t���������������������������������������������������������|�������������d�S�r����)r���� setdefaultr����r��r���)r�����pred�succs��� r0���r��z Sequencer.add@��si�������t�|�|�|�|�����t�S�U�U�+�+�/�/��5�5�5�����t�S�U�U�+�+�/�/��5�5�5�5�5r2���c������������������(����||k����sJ�� �|�j���������|���������}|�j��������|���������}n #�t����������$�r�t����������d|z���������������w�xY�w �|���������������������|�������������|���������������������|�������������d�S�#�t����������$�r�t����������|�d|���������������w�xY�w)Nz%r not a successor of anythingz not a successor of )r���r����KeyErrorr����r����)r����r���r����preds�succss��� r0���r����zSequencer.removeE��s��������t�|�|�|�|� F��K��%�E��K��%�E�E���� F�� F�� F��=��D�E�E�E� F���� H��L�L������L�L���������� H�� H�� H��4�4�4���F�G�G�G� H���s����%��A�*A2��2Bc������������������8�����||�j���������v�p||�j��������v�p||�j��������v�S�r����)r���r���r���)r�����steps��� r0����is_stepzSequencer.is_stepR��s.���������#��$�t�t�{�':��$����#� %r2���c����������������������|�����������������������|������������st����������d|z���������������g�}g�}t������������������������}|���������������������|�������������|r�|���������������������d������������}||v�r1||k����r*|���������������������|�������������|���������������������|�������������nZ|���������������������|�������������|���������������������|�������������|�j�����������������������������|d������������}|� ��������������������|�������������|��t����������|������������S�)NzUnknown: %rr���rE���)r��r����r����r%���r{���r����r��r���r����extend�reversed)r�����finalr+����todo�seenr��r���s��� r0���� get_stepszSequencer.get_stepsV��s�������|�|�E�"�"�� 4��]�U�2�3�3�3������u�u�����E������ #��8�8�A�;�;�D��t�|�|���5�=�=��M�M�$�'�'�'��M�M�$�'�'�'���������� � �d�#�#�#������b�1�1�����E�"�"�"���� #� �����r2���c������������������v������������dg�g��i��i��g��|�j�����������������fd���D�]}|�vr��|���������������S�)Nr���c������������������<������d����������|�<����d����������|�<����dxx���������dz ��cc<���� ����������������������|�������������� ��|����������}n#�t����������$�r�g�}Y�nw�xY�w|D�]T}|�vr+��|�������������t�����������|�����������|����������������������|�<����1|� v�rt�����������|�����������|����������������������|�<����U�|�����������|����������k����rZg�} �� �����������������������������������}|����������������������|�������������||�k����rn�1t ����������|������������}� ����������������������|�������������d�S�d�S��Nr���r���)r%���r�����minr{����tuple)r���� successors� successor�connected_component� component�graph�index� index_counter�lowlinksr+����stack� strongconnects��� �������r0���r��z3Sequencer.strong_connections.<locals>.strongconnectz��sx������'��*�E�$�K�*�1�-�H�T�N��!�����!�����L�L����� �"�4�[� � ���� �� �� �� � � � ����'�� J�� J� ��H�,�,�!�M�)�,�,�,�%(��$����8K�%L�%L�H�T�N�N��%�'�'��&)��$���i�8H�%I�%I�H�T�N�����~��t��,�,�&(�#�0� %� � ���I�'�.�.�y�9�9�9� �D�(�(�%�0��"�"5�6�6� �� � �i�(�(�(�(�(��-�,s����A��A�A)r���) r����r���r��r��r��r��r+���r��r��s ��� @@@@@@@r0����strong_connectionszSequencer.strong_connectionso��s����������������� ������������ )�� )�� )�� )�� )�� )�� )�� )�� )�� )�� )�D��� $�� $�D��8�#�#�� �d�#�#�#��� r2���c����������� �����������dg}|�j���������D�]0}|�j���������|���������}|D�]}|���������������������d|�d|�d����������������1|�j��������D�]}|���������������������d|z����������������|���������������������d�������������d���������������������|������������S�)Nzdigraph G {z z -> rV���z %s;�}� )r���r%���r���r'���)r����r+���r���r���r���r���s��� r0����dotz Sequencer.dot���s�����������K�� <�� <�D��K��%�E��� <�� <��� � � �t�t�t�T�T�T�:�;�;�;�;� <��K�� *�� *�D��M�M�'�D�.�)�)�)�)�� � �c�����y�y�� � � r2���Nrf��) r����r����r����r����r���r���r��r����r��r ���propertyr��r��rE���r2���r0���r���r���'��s�������������������� �����'��'��'��'� 6��6��6� H��H��H�%��%��%� �� �� �2��0��0���X�0�d�� !�� !���X� !�� !�� !r2���r���)�.tar.gz�.tar.bz2�.tar�.zip�.tgz�.tbz�.whlTc���������������������������fd�}t�����������j�������������������������������������������t������������������������d�}|�x|����������������������d������������rd}n`|����������������������d������������rd}d}nF|����������������������d������������rd}d }n,|����������������������d ������������rd}d}nt����������d |�z��������������� �|dk����r7t ����������|�d������������}|r$|�����������������������������������}|D�] }�||��������������n;t����������j ��������|�|������������}|r$|� ����������������������������������}|D�] }�||��������������|dk����rft����������j��������d���������dk�����rP|� ����������������������������������D�];} t����������| j��������t ����������������������s| j�����������������������������d������������| _���������<d��} | |_��������|�����������������������������������|r|������������������������������������d�S�d�S�#�|r|������������������������������������w�w�xY�w)Nc������������������P�����t����������|�t����������������������s|����������������������d������������}�t����������j�����������������������������t����������j������������������������������|�������������������������}|����������������������������������r|����������t����������j��������k����rt����������d|z���������������d�S�)Nr����zpath outside destination: %r) r����r����decoderu���rv���r��r'���rc���rw���r����)rv���r�����dest_dir�plens��� ��r0���� check_pathzunarchive.<locals>.check_path���s���������$� �*�*�� (��;�;�w�'�'�D��G�O�O�B�G�L�L��4�8�8�9�9���|�|�H�%�%�� A��4��B�F�):�):��;�a�?�@�@�@��*;�):r2���)r#��r&���zip)r ��r$���tgzzr:gz)r!��r%���tbzzr:bz2r"���tarr���zUnknown format for %rr���r����r����c����������������������� �t����������j��������|�|������������S�#�t�����������j��������$�r!}t����������t ����������|�������������������������d}~ww�xY�w)z9Run tarfile.tar_filter, but raise the expected ValueErrorN)�tarfile� tar_filter�FilterErrorr�����str)�memberrv����excs��� r0����extraction_filterz$unarchive.<locals>.extraction_filter���sP������ +��)�&�$�7�7�7���&�� +�� +�� +� ��S���*�*�*����� +���s������A�A�A)ru���rv���r��rx���r���r����r����namelistr2��r(���getnamesr����r����� getmembersr����r]���r���r)��r8��� extractallr����)�archive_filenamer*���formatr��r,���archiver<���namesr]����tarinfor8��r+��s��� ` @r0���� unarchiverB�����sp�������A��A��A��A��A��A���w���x�(�(�H��x�=�=�D��G� �~��$�$�%5�6�6�� I��F�F� � &� &�':� ;� ;�� I��F��D�D� � &� &�';� <� <�� I��F��D�D� � &� &�v� .� .�� I��F��D�D��4�7G�G�H�H�H�&��U�?�?��.��4�4�G��� %��(�(�*�*��!��%��%�D��J�t�$�$�$�$���l�#3�T�:�:�G��� %��(�(�*�*��!��%��%�D��J�t�$�$�$�$��U�?�?�s�/��2�Q�6�6� �#�-�-�/�/�� @�� @��!�'�,� �:�:��@�#*�<�#6�#6�w�#?�#?�G�L�� +�� +�� +��%6��!����8�$�$�$���� ��M�M�O�O�O�O�O� �� ��7�� ��M�M�O�O�O�O� ���s ����4DG��G*c����������������������t����������j����������������������}t����������|�������������}t����������|d������������5�}t ����������j��������|�������������D�]k\��}}}|D�]b}t����������j�����������������������������||������������}||d����������} t����������j�����������������������������| |������������} |���������������������|| ��������������c�l �ddd�������������n#�1�swxY�w�Y���|S�)z*zip a directory tree into a BytesIO objectr$��N) �io�BytesIOrx���r���ru����walkrv���r'���r����)� directoryr+����dlen�zfry���rb��r;��r]����full�relr����s��� r0����zip_dirrL�����s����� �Z�\�\�F��y�>�>�D� ��� � ��%��!#���!3�!3�� %�� %��D�$���� %�� %���w�|�|�D�$�/�/���4�5�5�k���w�|�|�C��.�.������t�$�$�$�$� %� %�%��%��%��%��%��%��%��%��%��%��%�����%��%��%��%���Ms����BC�C�C)r����K�M�G�T�Pc�������������������������e�Zd�ZdZdd�Zd��Zd��Zd��Zd��Ze d ����������������Z e d ����������������Zd��Ze d����������������Z e d ����������������ZdS�)�Progress�UNKNOWNr����d���c������������������n�����|�||k����sJ��|x|�_���������|�_��������||�_��������d�|�_��������d|�_��������d|�_��������d�S�)Nr���F)r���cur�max�started�elapsed�done)r�����minval�maxvals��� r0���r����zProgress.__init__��sE�������~��6�!1�!1�!1�!1�$�$���4�8������������ � � r2���c�����������������������|�j���������|k����sJ��|�j��������� ||�j��������k����sJ��||�_��������t����������j����������������������}|�j��������� ||�_��������d�S�||�j��������z ��|�_��������d�S�r����)r��rX��rW���timerY��rZ��)r�����curval�nows��� r0����updatezProgress.update��sf�������x�6�!�!�!�!��x��6�T�X�#5�#5�#5�#5�����i�k�k���<���D�L�L�L����-�D�L�L�Lr2���c������������������P�����|dk����sJ��|�����������������������|�j��������|z����������������d�S�)Nr���)rb��rW��)r�����incrs��� r0���� incrementzProgress.increment!��s-�������q�y�y�y�y����D�H�t�O�$�$�$�$�$r2���c������������������:�����|�����������������������|�j���������������������|�S�r����)rb��r��r ��s��� r0���r���zProgress.start%��s���������D�H�����r2���c������������������V�����|�j����������|����������������������|�j����������������������d|�_��������d�S��NT)rX��rb��r[��r ��s��� r0����stopz Progress.stop)��s)�������8���K�K���!�!�!��� � � r2���c������������������,�����|�j����������|�j��������n|�j���������S�r����)rX���unknownr ��s��� r0����maximumzProgress.maximum.��s������#�x�/�t�|�|�T�X�=r2���c������������������|�����|�j���������rd}n1|�j���������d}n'd|�j��������|�j��������z ��z��|�j��������|�j��������z ��z��}d|z��}|S�)Nz100 %z ?? %g������Y@z%3d %%)r[��rX��rW��r��)r����r+���rT���s��� r0���� percentagezProgress.percentage2��sQ�������9�� "��F�F� �X� ��F�F����D�H�,�-���D�H�1D�E�A���\�F�� r2���c�����������������������|dk����r|�j����������|�j��������|�j��������k����rd}n't����������j��������dt����������j��������|������������������������}|S�)Nr���z??:??:??z%H:%M:%S)rX��rW��r��r_���strftime�gmtime)r�����durationr+���s��� r0����format_durationzProgress.format_duration=��sI��������M�M�t�x�/�4�8�t�x�3G�3G��F�F���]�:�t�{�8�/D�/D�E�E�F�� r2���c������������������"����|�j���������r d}|�j��������}ned}|�j���������d}nY|�j��������dk����s|�j��������|�j��������k����rd}n;t����������|�j��������|�j��������z ��������������}||�j��������|�j��������z ��z��}|dz ��|�j��������z��}|�d|����������������������|��������������S�)N�DonezETA r����r���r���z: )r[��rZ��rX��rW��r���floatrs��)r����r����rm���s��� r0����ETAzProgress.ETAF��s��������9�� +��F���A�A���F��x��������"�"�t�x�4�8�';�';������$�(�T�X�-�.�.���T�X���(�(����U�d�l�*��!�6�6�4�#7�#7��#:�#:�#:�;�;r2���c�����������������������|�j���������dk����rd}n|�j��������|�j��������z ��|�j���������z��}t����������D�]}|dk�����r�n|dz��}�d||fz��S�)Nr���g��������i���g�����@�@z%d %sB/s)rZ��rW��r���UNITS)r����r+����units��� r0����speedzProgress.speedY��sc�������<�1����F�F��h���)�T�\�9�F��� �� �D���}�}����f��F�F��V�T�N�*�*r2���N)r���rU��)r����r����r����rk��r����rb��re��r���ri��r��rl��rn��rs��rw��r{��rE���r2���r0���rS��rS����s����������������G��������.��.��.�%��%��%����������� ��>��>���X�>��������X���������<��<���X�<�$�� +�� +���X� +�� +�� +r2���rS��z\{([^}]*)\}z[^/\\,{]\*\*|\*\*[^/\\,}]z^[^{]*\}|\{[^}]*$c������������������������t��������������������������������|�������������rd}t����������||�z���������������t�������������������������������|�������������rd}t����������||�z���������������t ����������|�������������S�)zAExtended globbing function that supports ** and {opt1,opt2,opt3}.z7invalid glob %r: recursive glob "**" must be used alonez2invalid glob %r: mismatching set marker '{' or '}')�_CHECK_RECURSIVE_GLOBr���r�����_CHECK_MISMATCH_SET�_iglob)� path_globr ��s��� r0���r���r���n��sj�������#�#�I�.�.��*�K����y��)�)�)��!�!�)�,�,��*�F����y��)�)�)��)���r2���c��������������#�������K����t��������������������������������|�d������������}t����������|������������dk����rit����������|������������dk����s J�|���������������|\��}}}|���������������������d������������D�].}t����������d���������������������|||f������������������������D�]}|V�����/d�S�d|�vrt����������|�������������D�]}|V����d�S�|����������������������dd������������\��}}|dk����rd}|dk����rd}n*|���������������������d������������}|���������������������d ������������}t����������j��������|������������D�]Y\��}}} t����������j ��������� ��������������������|������������}t����������t����������j �����������������������������||������������������������D�]} | V�����Zd�S�) Nr���r����rL���r���z**rj��r���rt����\)� RICH_GLOBr����rx���r��r'���� std_iglobr(���ru���rF��rv���r���)r����rich_path_globr����r����r�����itemrv����radical�dirr;��r���s��� r0���r��r��y��s�����������_�_�Y��2�2�N� �>���Q����>�"�"�a�'�'�'��'�'�'�,����V��I�I�c�N�N�� �� �D��r�w�w���f�'=�>�>�?�?�� �� ��� � � � � � �� ���y� � �!�)�,�,�� �� ��� � � � � �� ��(�o�o�d�A�6�6�O�F�G���|�|����"�}�}�����"�.�.��-�-��!�.�.��.�.��$&�G�F�O�O�� �� � ��c�5��w�'�'��-�-�� �����d�G�!<�!<�=�=�����B��H�H�H�H�� �� r2���)�HTTPSHandler�match_hostname�CertificateErrorc�������������������������e�Zd�ZdZdZd��ZdS�)�HTTPSConnectionNTc�����������������������t����������j��������|�j��������|�j��������f|�j��������������������}t����������|�dd������������r||�_��������|�������������������������������������t����������j ��������t����������j ��������������������}t����������t����������d������������r|xj��������t����������j ��������z��c_��������t����������|�dd�������������r |���������������������|�j��������|�j���������������������i�}|�j��������rLt����������j��������|_��������|���������������������|�j����������������������t����������t����������dd������������r |�j��������|d<����|j��������|fi�|��|�_��������|�j��������r�|�j��������r� �t/����������|�j�������������������������������������������|�j���������������������t2�������������������������������d|�j���������������������d�S�#�t6����������$�r?�|�j�����������������������������t�����������j���������������������|�j����������������������������������������������w�xY�wd�S�d�S�) N�_tunnel_hostF�OP_NO_SSLv2� cert_file)�cafile�HAS_SNI�server_hostnamezHost verified: %s)r�����create_connection�host�port�timeoutr�����sock�_tunnel�ssl� SSLContext�PROTOCOL_SSLv23r�����optionsr����load_cert_chainr����key_file�ca_certs� CERT_REQUIRED�verify_mode�load_verify_locations�wrap_socket�check_domainr����getpeercertr��rR��r����shutdown� SHUT_RDWRr����)r����r����contextr���s��� r0����connectzHTTPSConnection.connect���s�������+�T�Y�� �,B�D�L�Q�Q�D��t�^�U�3�3�� � �� ��������n�S�%8�9�9�G��s�M�*�*�� 3����3�?�2����t�[�$�/�/�� G��'�'���� �F�F�F��F��}�� :�&)�&7��#��-�-�T�]�-�C�C�C��3� �5�1�1��:�04� �F�,�-�+��+�D�;�;�F�;�;�D�I��}�� ��!2�� ��"�4�9�#8�#8�#:�#:�D�I�F�F�F��L�L�!4�d�i�@�@�@�@�@��'��������I�&�&�v�'7�8�8�8��I�O�O�%�%�%������ �� �� �� s����AF��A G)r����r����r����r���r���r���rE���r2���r0���r���r������s-������������������ �� �� �� �� r2���r���c��������������������"�����e�Zd�Zdd�Zd��Zd��ZdS�)r���Tc������������������J�����t����������j��������|��������������||�_��������||�_��������d�S�r����)�BaseHTTPSHandlerr����r���r���)r����r���r���s��� r0���r����zHTTPSHandler.__init__���s(�������%�d�+�+�+�$�D�M� ,�D���r2���c������������������\�����t����������|i�|��}|�j��������r|�j��������|_��������|�j��������|_��������|S�)a�� This is called to create a connection instance. Normally you'd pass a connection class to do_open, but it doesn't actually check for a class, and just expects a callable. As long as we behave just as a constructor would have, we should be OK. If it ever changes so that we *must* pass a class, we'll create an UnsafeHTTPSConnection class which just sets check_domain to False in the class definition, and choose which one to pass to do_open. )r���r���r���)r����r���r���r+���s��� r0����_conn_makerzHTTPSHandler._conn_maker���s9�������%�d�5�f�5�5�F��}�� 8�"&�-���&*�&7��#��Mr2���c����������������������� �|�����������������������|�j��������|������������S�#�t����������$�r3}dt����������|j��������������������v�rt����������d|j��������z�����������������d�}~ww�xY�w)Nzcertificate verify failedz*Unable to verify server certificate for %s)�do_openr���r���r5���reasonr���r���)r����rh���r���s��� r0���� https_openzHTTPSHandler.https_open���sy������ ��|�|�D�$4�c�:�:�:���� �� �� �.�#�a�h�-�-�?�?�*��,4�69�h�,?��@��@��@������� ���s������ A�.A�ANrg��)r����r����r����r����r���r���rE���r2���r0���r���r������sF�������������� -�� -�� -�� -� �� �� � �� �� �� �� r2���r���c�������������������������e�Zd�Zd��ZdS�)�HTTPSOnlyHandlerc������������������&�����t����������d|z���������������)NzAUnexpected HTTP request on what should be a secure connection: %s)r���)r����rh���s��� r0���� http_openzHTTPSOnlyHandler.http_open���s!��������,�.1�2��3��3�� 3r2���N)r����r����r����r���rE���r2���r0���r���r������s#�������������� 3�� 3�� 3�� 3�� 3r2���r���c�������������������������e�Zd�Zdd�Zd��ZdS�)� Transportr���c������������������T�����||�_���������t����������j�����������������������������|�|�������������d�S�r����)r���r���r���r�����r����r����use_datetimes��� r0���r����zTransport.__init__���s(�����������$�$�T�<�8�8�8�8�8r2���c������������������������|�����������������������|������������\��}}}|�j��������r||�j��������d���������k����r"||�_��������|t����������j��������|������������f|�_��������|�j��������d���������S�r ��)� get_host_info�_connection�_extra_headersr����HTTPConnection)r����r����h�eh�x509s��� r0����make_connectionzTransport.make_connection���sf�������(�(��.�.���2�t���� ?�4�4�+;�A�+>�#>�#>�"$�D��#�W�%;�A�%>�%>�>�D�����"�"r2���N�r����r����r����r����r����r���rE���r2���r0���r���r������s7��������������9��9��9��9�#��#��#��#��#r2���r���c�������������������������e�Zd�Zdd�Zd��ZdS�)� SafeTransportr���c������������������T�����||�_���������t����������j�����������������������������|�|�������������d�S�r����)r���r���r���r����r���s��� r0���r����zSafeTransport.__init__���s(������"�D�L��#�,�,�T�<�@�@�@�@�@r2���c������������������������|�����������������������|������������\��}}}|si�}|�j��������|d<���|�j��������r||�j��������d���������k����r!||�_��������|t ����������j��������|d�fi�|��f|�_��������|�j��������d���������S�)Nr���r���r���)r���r���r���r���r���r���)r����r���r���r���r���s��� r0���r���zSafeTransport.make_connection��s������� �.�.�t�4�4�M�A�r�6��� ��� $��F�9���#�� K�t�t�/?��/B�'B�'B�&(��#�#'��)@��D��*K��*K�CI�*K��*K��$K�� ��#�A�&�&r2���Nr���r���rE���r2���r0���r���r������s;�������������� A�� A�� A�� A� '�� '�� '�� '�� 'r2���r���c�������������������������e�Zd�Zd��ZdS�)�ServerProxyc������������������&����|����������������������dd�������������x|�_��������}|�Yt����������|������������d���������}|���������������������dd������������}|dk����rt����������}nt ����������}�|||�������������x|d<���}||�_��������t����������j��������j ��������|�|fi�|���d�S�)Nr���r���r����https)r���� transport) r{���r���r���r���r���r���r���r���r���r����)r����rk���r���r���rf���r����tclsrm���s��� r0���r����zServerProxy.__init__��s�������!'���I�t�!<�!<�<���w�����c�]�]�1�%�F�!�:�:�n�a�8�8�L��� � �$��� ��&*�d�7��&N�&N�&N�N�F�;��!��D�N���&�t�S�;�;�F�;�;�;�;�;r2���N)r����r����r����r����rE���r2���r0���r���r��� ��s#��������������<��<��<��<��<r2���r���c������������������j�����t�����������j��������d���������dk�����r|dz ��}n d|d<���d|d<���t����������|�|fi�|��S�)Nr���r�����br����newliner����r&��)r����r����r(��)r���r<��r���s��� r0���� _csv_openr���#��sN������ ����Q����������y���%��z����D�#�#�F�#�#�#r2���c��������������������\�����e�Zd�Z�ed�������������ed�������������ed������������d�Zd��Zd��ZdS�)�CSVBaserL����"r��)� delimiter� quotechar�lineterminatorc�����������������������|�S�r����rE���r ��s��� r0���� __enter__zCSVBase.__enter__5����������r2���c������������������8�����|�j���������������������������������������������d�S�r����)r����r����)r����r���s��� r0����__exit__zCSVBase.__exit__8��s��������������r2���N)r����r����r����r5���defaultsr���r���rE���r2���r0���r���r���.��s_���������������S��X�X��S��X�X��#�d�)�)����H��������������r2���r���c��������������������$�����e�Zd�Zd��Zd��Zd��ZeZdS�)� CSVReaderc����������������������d|v�rC|d���������}t�����������j��������d���������dk����r�t����������j��������d������������|������������}||�_��������nt����������|d���������d������������|�_��������t ����������j��������|�j��������fi�|�j����������|�_��������d�S�)Nr����r���r����r����rv���r���) r����r����r����r����r����r����csvr���r���)r����r���r����s��� r0���r����zCSVReader.__init__=��s��������v����H�%�F����"�a�'�'�2��)�'�2�2�6�:�:�� �D�K�K�#�F�6�N�C�8�8�D�K��j���>�>�� �>�>����r2���c�����������������������|�S�r����rE���r ��s��� r0����__iter__zCSVReader.__iter__H��r���r2���c������������������������t����������|�j��������������������}t����������j��������d���������dk�����rBt ����������|������������D�]2\��}}t����������|t����������������������s|���������������������d������������||<����3|S��Nr���r����r����)�nextr���r����r����r���r����r���r)��)r����r+���rl���r���s��� r0���r���zCSVReader.nextK��sl�������d�k�"�"����A���"�"�$�V�,�,�� 5�� 5���4�!�$� �2�2��5� $���G� 4� 4�F�1�I��� r2���N)r����r����r����r����r���r����__next__rE���r2���r0���r���r���<��sB�������������� ?�� ?�� ?�������������H�H�Hr2���r���c�������������������������e�Zd�Zd��Zd��ZdS�)� CSVWriterc������������������r�����t����������|d������������|�_��������t����������j��������|�j��������fi�|�j����������|�_��������d�S�)Nr$��)r���r����r����writerr���)r����r���r���s��� r0���r����zCSVWriter.__init__V��s4��������C�(�(����j���>�>�� �>�>����r2���c�����������������������t�����������j��������d���������dk�����rHg�}|D�]A}t����������|t����������������������r|���������������������d������������}|���������������������|��������������B|}|�j�����������������������������|�������������d�S�r���)r����r����r����r���r1��r%���r����writerow)r�����rowr���r���s��� r0���r���zCSVWriter.writerowZ��s~��������A���"�"��A��� �� ���d�I�.�.��0��;�;�w�/�/�D����������C�����S�!�!�!�!�!r2���N)r����r����r����r����r���rE���r2���r0���r���r���U��s2��������������?��?��?�"��"��"��"��"r2���r���c��������������������\�������e�Zd�Z�eej��������������������Zded<���d��fd� Zd��Zd��Zd��Z ��xZ S�) �Configurator�inc_convert�incNc������������������������t����������t����������|����������������������������������|�������������|pt����������j����������������������|�_��������d�S�r����)�superr���r����ru���r����r����)r�����configr����� __class__s��� �r0���r����zConfigurator.__init__m��s7������� �l�D�!�!�*�*�6�2�2�2��'�B�I�K�K�� � � r2���c������������������������� ��� ��fd�� �����������������������d������������}t����������|������������s�����������������������|������������}�����������������������dd�������������}�����������������������dd������������}|rt����������� fd�|D���������������������������}�� fd��D���������������}t ����������|������������}�||i�|��}|r4|�����������������������������������D�]\��}} t ����������||�� | �������������������������� |S�)Nc������������������J�����t����������|�t����������t����������f������������r%�t����������|��������������fd�|�D���������������������������}n`t����������|�t����������������������r6d|�v�r����������������������|�������������}n1i�}|�D�]}��|�|���������������������||<����n����������������������|�������������}|S�)Nc������������������&������g�|�] }��|��������������S�rE���rE���)rZ���rl����converts��� �r0���r\���zBConfigurator.configure_custom.<locals>.convert.<locals>.<listcomp>t��s!�������!8�!8�!8��'�'�!�*�*�!8�!8�!8r2����())r����r^��r���type�dict�configure_customr���)�or+���r����r���r����s��� ��r0���r���z.Configurator.configure_custom.<locals>.convertr��s���������!�d�E�]�+�+�� )� ��a���!8�!8�!8�!8�a�!8�!8�!8�9�9����A�t�$�$�� )��1�9�9�!�2�2�1�5�5�F�F��F���2��2��$+�G�A�a�D�M�M��q� � �2�����a�����Mr2���r���rj��z[]rE���c������������������&������g�|�] }��|��������������S�rE���rE���)rZ���r��r���s��� �r0���r\���z1Configurator.configure_custom.<locals>.<listcomp>���s!�������3�3�3��'�'�!�*�*�3�3�3r2���c������������������T������g�|�]$}t����������|�������������|���|���������������������f��%S�rE���)r���)rZ���r����r���r���s��� ��r0���r\���z1Configurator.configure_custom.<locals>.<listcomp>���s7�������K�K�K�Q�K��N�N�K�!�W�W�V�A�Y�'�'�(�K�K�Kr2���)r{���r~��rp��r��r��r�����setattr)r����r���r�����propsr���r����r���r+���r���rT���r���s���`` @r0���r��zConfigurator.configure_customq��s#�������� �� �� �� �� �� �� �J�J�t������{�{�� ����Q���A�� � �3��%�%���z�z�$��#�#���� 5��3�3�3�3�d�3�3�3�4�4�D�K�K�K�K�K�&�K�K�K���e������D�#�F�#�#���� /���� � �� /�� /���1����7�7�1�:�:�.�.�.�.�� r2���c�����������������������|�j���������|���������}t����������|t����������������������r#d|v�r|����������������������|������������x|�j���������|<���}|S�)Nr���)r���r����r��r��)r����r����r+���s��� r0����__getitem__zConfigurator.__getitem__���sM��������S�!���f�d�#�#�� F�����(,�(=�(=�f�(E�(E�E�D�K���v�� r2���c����������������������t�����������j�����������������������������|������������s%t�����������j�����������������������������|�j��������|������������}t����������j��������|dd�������������5�}t����������j��������|������������}ddd�������������n#�1�swxY�w�Y���|S�)z*Default converter for the inc:// protocol.r���r����r%��N) ru���rv����isabsr'���r����r����r(��r����r����)r����r����r.��r+���s��� r0���r���zConfigurator.inc_convert���s��������w�}�}�U�#�#�� 3��G�L�L���E�2�2�E� �[���g� 6� 6� 6�� "�!��Y�q�\�\�F� "�� "�� "�� "�� "�� "�� "�� "�� "�� "�� "����� "�� "�� "�� "�� s����A=�=B�Br����)r����r����r����r��r����value_convertersr����r��r ��r���� __classcell__)r���s���@r0���r���r���h��s�����������������t�,�=�>�>��+��U��(��(��(��(��(��(������>�����������������r2���r���c��������������������&�����e�Zd�ZdZdd�Zd��Zd��ZdS�)�SubprocessMixinzC Mixin for running subprocesses and capturing their output FNc������������������"�����||�_���������||�_��������d�S�r����)�verbose�progress)r����r��r��s��� r0���r����zSubprocessMixin.__init__���s��������� �� � � r2���c������������������~����|�j���������}|�j��������} �|�����������������������������������}|sn�|� �|||�������������nr|s t����������j�����������������������������d�������������n2t����������j�����������������������������|���������������������d�������������������������t����������j����������������������������������������������|������������������������������������dS�)z� Read lines from a subprocess' output stream and either pass to a progress callable (if specified) or write progress information to sys.stderr. TNrj��r����) r��r���readliner�����stderrr����r)���flushr����)r����r����r���r��r��r/���s��� r0���r���zSubprocessMixin.reader���s������� ��=���,�� #����!�!�A��� ���#����G�$�$�$�$���8��J�$�$�S�)�)�)�)��J�$�$�Q�X�X�g�%6�%6�7�7�7�� � � �"�"�"� #�� �������r2���c������������������0����t����������j��������|ft�����������j��������t�����������j��������d�|��}t����������j��������|�j��������|j��������df�������������}|������������������������������������t����������j��������|�j��������|j��������df�������������}|������������������������������������|� �����������������������������������|� �����������������������������������|� �����������������������������������|�j���������|����������������������dd�������������n&|�j��������rt����������j�����������������������������d�������������|S�)N)�stdoutr��r��)r��r���r��zdone.�mainzdone. )� subprocess�Popen�PIPE� threading�Threadr���r��r���r���waitr'���r��r��r����r����)r�����cmdr���r�����t1�t2s��� r0����run_commandzSubprocessMixin.run_command���s���������S�� ?���$.�O� ?�� ?�7=� ?�� ?�� � �T�[���(�7K� L� L� L�� ��� � � � � �T�[���(�7K� L� L� L�� ��� � � � ������ ��� � � � ��� � � ��=�$��M�M�'�6�*�*�*�*� �\�� (��J���Y�'�'�'��r2���)FN)r����r����r����r���r����r���r$��rE���r2���r0���r��r�����sP�����������������!��!��!��!������*��������r2���r��c������������������R�����t����������j��������dd|������������������������������������������������S�)z,Normalize a python package name a la PEP 503z[-_.]+r���)r����subr����)r]���s��� r0����normalize_namer'�����s$��������6�(�C��&�&�,�,�.�.�.r2���c��������������������*�����e�Zd�ZdZdZdd�Zd��Zd��ZdS�)� PyPIRCFilezhttps://upload.pypi.org/legacy/�pypiNc�����������������������|�=t�����������j�����������������������������t�����������j�����������������������������d������������d������������}||�_��������||�_��������d�S�)Nr���z.pypirc)ru���rv���r'���r���r���r`���)r����r���r`���s��� r0���r����zPyPIRCFile.__init__���s>������ �:�����b�g�0�0��5�5�y�A�A�B��� �����r2���c����������������������i�}t�����������j�����������������������������|�j���������������������r�|�j��������p|�j��������}t ����������j����������������������}|���������������������|�j���������������������|� ����������������������������������}d|v�r�|� ��������������������dd������������}d��|���������������������d������������D���������������}|g�k����r d|v�rdg}�n|D�]�}d|i}|� ��������������������|d������������|d<���d|�j��������fd |�j��������fd fD�]:\��}} |� ��������������������||������������r|� ��������������������||������������||<����5| ||<����;|dk����r||�j��������dfv�r|�j��������|d<�����|d���������|k����r|d���������|k����ri�}��nod|v�rkd}|� ��������������������|d������������r|� ��������������������|d������������}n|�j��������}|� ��������������������|d������������|� ��������������������|d������������|||�j��������d �}|S�)N� distutilsz index-serversc������������������f�����g�|�].}|������������������������������������d�k�����|��������������������������������������/S�)r���r���)rZ����servers��� r0���r\���z#PyPIRCFile.read.<locals>.<listcomp>���s<�������5��5��5�v�%�|�|�~�~��3�3��#�L�L�N�N�3�3�3r2���r��r*��r/��r���� repository�realm)r���Nzserver-loginr���)r���r���r0��r/��r1��)ru���rv���r��r���r`����DEFAULT_REPOSITORYr����RawConfigParserr����r����r���r����� DEFAULT_REALM� has_option) r����r+���r0��r���r����� index_servers�_serversr/��r����r����s ��� r0���r����zPyPIRCFile.read���sJ������� �7�>�>�$�-�(�(��4 ���<�T�%<�J�!�1�3�3�F��K�K�� �&�&�&����(�(�H��h�&�&� &� � �;�� H� H� �5��5�)�/�/��5�5�5��5��5����r�>�>���)�)�$*�8���"*��(��(��"*�F�!3��-3�Z�Z�� �-K�-K��z�*��/;�D�<S�-T�.5�t�7I�-J�-?�-A��6��6�L�C��� &�0�0���=�=��6�.4�j�j���.E�.E��s���.5��s��� �#�f�,�,�&�4�+B�F�*K�K�K�37�3J�F�<�0�0�$�X�.�*�<�<�$�\�2�j�@�@�%'�F��+(�,� �8�+�+�'���$�$�V�\�:�:��9�!'���F�L�!A�!A�J�J�!%�!8�J� &� � �6�:� >� >� &� � �6�:� >� >�",�$�!�/������� r2���c����������������������t����������j����������������������}|�j��������}|���������������������|�������������|���������������������d������������s|���������������������d�������������|���������������������dd|�������������|���������������������dd|�������������t����������|d������������5�}|���������������������|�������������d�d�d��������������d�S�#�1�swxY�w�Y���d�S�)Nr*��r���r���r$��) r���r3��r���r�����has_sectionr����r����r(��r����)r����r���r���r���r���r.��s��� r0���rb��zPyPIRCFile.update!��s��������-�/�/�� �]�����B�����!�!�&�)�)�� '����v�&�&�&�� � �6�:�x�0�0�0�� � �6�:�x�0�0�0� �"�c�]�]�� �a��L�L��O�O�O� �� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� �� �� s����B;�;B?�B?�NN)r����r����r����r2��r4��r����r����rb��rE���r2���r0���r)��r)�����sR��������������:���M��������8��8��8�t �� �� �� �� r2���r)��c������������������P�����t����������|�j��������������������������������������������������������S�)zG Read the PyPI access configuration as supported by distutils. )r`���)r)��r`���r�����r��s��� r0����_load_pypircr=��-��s#��������%�)�$�$�$�)�)�+�+�+r2���c������������������^�����t���������������������������������������������|�j��������|�j���������������������d�S�r����)r)��rb��r���r���r<��s��� r0���� _store_pypircr?��3��s&�������L�L�������7�7�7�7�7r2���c�������������������$����t�����������j��������dk����rrdt����������j�������������������������������������������v�rdS�dt����������j�������������������������������������������v�rdS�dt����������j�������������������������������������������v�rdS�t����������j��������S�dt�����������j��������v�rt�����������j��������d���������S�t�����������j��������d k����st����������t�����������d ������������st����������j��������S�t����������j����������������������\��}�}}}}|������������������������������������� ��������������������dd������������}�|� ��������������������d d������������� ��������������������dd������������}|�dd����������dk����r|��d|��S�|�dd����������dk����rQ|d���������dk����rDd}�dt����������|d���������������������dz ��|dd����������fz��}ddd�}|d|t����������j�����������������z��z ��}n�|�dd����������dk����rddlm }��|��������������S�|�dd ����������d!k����rMd!}�t����������j��������d"t����������j��������������������}|���������������������|������������}|r|�����������������������������������}n\|�dd ����������d#k����rNddl} �dd$lm} �n#�t,����������$�r�ddl} Y�nw�xY�w| ���������������������| �����������������������������������|�||������������\��}�}}|��d|�d|��S�)%a���Return a string that identifies the current platform. This is used mainly to distinguish platform-specific build directories and platform-specific built distributions. Typically includes the OS name and version and the architecture (as supplied by 'os.uname()'), although the exact information included depends on the OS; eg. on Linux, the kernel version isn't particularly important. Examples of returned values: linux-i586 linux-alpha (?) solaris-2.6-sun4u Windows will return one of: win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) win32 (all others - specifically, sys.platform is returned) For other non-POSIX platforms, currently just returns 'sys.platform'. r����amd64� win-amd64z(arm)� win-arm32z(arm64)z win-arm64�_PYTHON_HOST_PLATFORMr4���unamert���r���rW���rn���r���N�����linux�sunosr����5�solarisz%d.%sr���������32bit�64bit)i���l��������z.%s�aix)�aix_platform�����cygwinz[\d.]+�darwin)� sysconfig)ru���r]���r����r���r�����platformr���r����rE��r$����int�maxsize�_aix_supportrO��r���rG���ASCIIr ���r�����_osx_supportr-��rS���ImportError�get_platform_osx�get_config_vars)�osnamer����releaser����machine�bitnessrO���rel_rer*���rY��rS��s��� r0����get_host_platformrb��;��s������(� �w�$����c�k�'�'�)�)�)�)��;��c�k�'�'�)�)�)�)��;����)�)�+�+�+�+��;��|����"�*�,�,��z�1�2�2� �w�'�����W�!5�!5����|���13�� � �-�V�T�7�G�W���\�\�^�^� #� #�C�� ,� ,�F��o�o�c�3�'�'�/�/��S�9�9�G� �b�q�b�z�W����"�6�6�7�7�+�+� �����w� � ��1�:�����F���W�Q�Z���1�!4�g�a�b�b�k� B�B�G��#*�w�G�G�G��u�w�s�{�3�3�3�G�� �����u� � �-�-�-�-�-�-��|�~�~�� �����x� � �����Y���1�1���L�L��!�!���� ��g�g�i�i�G�� �����x� � ����� �+�+�+�+�+�+�+���� �� �� ������� ����#/�#@�#@�(1�(A�(A�(C�(C�(.���$B��$B� ����� ������'�'�2�2s����?I��I�I�win32rB��rC��)�x86�x64�armc�������������������������t�����������j��������dk����rt������������������������S�t�����������j�����������������������������d������������}�|�t ����������vrt������������������������S�t ����������|����������S�)Nr����VSCMD_ARG_TGT_ARCH)ru���r]���rb��r���r����_TARGET_TO_PLAT)�cross_compilation_targets��� r0����get_platformrk�����sQ������ �w�$��� �"�"�"�!�z�~�~�.B�C�C����6�6� �"�"�"��3�4�4r2���r:��)r����r����rh��)�r�����collectionsr���� contextlibr����globr���r���rD��r�����loggingru���rE��r���r����r���rZ��r��r����r2��r����r����r���dummy_threadingr_��r���r����compatr���r���r ���r ���r���r���r ���r���r���r���r���r���r���r���r���r���r���r���r���r���r���� getLoggerr����r��rG��r���rQ���rP���r;���rD���r@���re���r&���rG���rp���r����r����r����r����r����r����r�����contextmanagerr����r����r����r����r����r����r����rp��rr���VERBOSEr���r����r���r���r���r���r���r����Ir���r���r���r���r���r���r���r���r���r���r���r���r����ARCHIVE_EXTENSIONSrB��rL��ry��rS��r���r}��r~��r��r���r���r���r���r���r���r���r���r���r���r���r���r���r���r��r'��r)��r=��r?��rb��ri��rk��rE���r2���r0����<module>rw�����s� ���� �� � � ���������������������� � � � ��#��#��#��#��#��#�� � � � ������������ � � � ���������� � � � �� � � � ���J�J�J�J��������� �C�C�C�������������� � � � ����������������(���������(��(��(�'�'�'�'�'�'�(���������������������(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(��(�� �� �8� $� $����R�Z�)� *� *� ��R�Z� 3�4�4��� �R�Z�5� 6� 6� ��B�J�D�E�E� ��R�Z������b�j������B�J�{�#�#� ��r�z�E�F�F��V!��V!��V!�rz@��z@��z@�z�����4����������$ �� �� �� � �����,��,��,�^�����&�����������������������&��&��&����&����������f������� �� �� �6u��u��u��u��u�6��u��u��u�n��������������&�������8��2�:�����:�'��'�� �����>&(��&(��&(��&(�R�����" �� �� �&��&��&������ ������&�2�:��'8�9;��?��?������,�-�-���������2��"�*��9��:��:�� /�� /�� /������2�����(�D��������#��#��#�)��)��)��)��)�F��)��)��)�XC��C��C��C��C���C��C��C�PE!��E!��E!��E!��E!���E!��E!��E!�V.���@��@��@��@�F�����"� $��W+��W+��W+��W+��W+�v��W+��W+��W+�z� �B�J�~�&�&� �"�� �#?�@�@��� �b�j�!5�6�6�������������6���V3�+��+��+��+��+��+��+��+��+��+����������'�1�������B���������'�������R3��3��3��3��3�<���3��3��3� #�� #�� #�� #�� #� �#�� #�� #�� #����'�'��'��'��'��'� �/��'��'��'�"<��<��<��<��<�)�'��<��<��<�,$��$��$����������f�����������������������2 "�� "�� "�� "�� "��� "�� "�� "�&4��4��4��4��4�#��4��4��4�n+��+��+��+��+�f��+��+��+�\/��/��/�O��O��O��O��O���O��O��O�b,��,��,�8��8��8�R3��R3��R3�l� �������5��5��5��5��5s!����;��A�A�A"��" A.�-A.