OwlCyberSecurity - MANAGER
Edit File: package_index.cpython-311.pyc
� ����,�Re������������������������������d�Z�ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddlZddlZddl ZddlZddlZddlZddlmZ�ddlZddlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$�ddl%m&Z&�ddl'm(Z(�ddl)m*Z*�ddl+m,Z,�dd l-m.Z.��ej/��������d ������������Z0�ej/��������dej1��������������������Z2�ej/��������d������������Z3�ej/��������d ej1��������������������j4��������Z5d�6����������������������������������Z7g�d�Z8dZ9dZ:e:�;���������������������dj;��������ej<����������e�������������Z=d��Z>d��Z?d��Z@d1d�ZAd1d�ZBd1d�ZCdedfd�ZDd��ZE�ej/��������dej1��������������������ZF �eEd����������������ZG�G�d��d������������ZH�G�d ��d!eH������������ZI�G�d"��d#e������������ZJ�ej/��������d$������������jK��������ZLd%��ZMd&��ZNd2d'�ZOd(��ZP�G�d)��d*������������ZQ�G�d+��d,ejR��������������������ZSejT��������jU��������fd-�ZVd.��ZW��eOe9������������eV������������ZVd/��ZXd0��ZYdS�)3z$PyPI and direct package downloading.�����N��wraps)� CHECKOUT_DIST�Distribution�BINARY_DIST�normalize_path�SOURCE_DIST�Environment�find_distributions� safe_name�safe_version�to_filename�Requirement�DEVELOP_DIST�EGG_DIST� parse_version)�log)�DistutilsError)� translate)�Wheel��unique_everseenz^egg=([-A-Za-z0-9_.+!]+)$zhref\s*=\s*['"]?([^'"> ]+)z�<a href="([^"#]+)">([^<]+)</a>\n\s+\(<a (?:title="MD5 hash"\n\s+)href="[^?]+\?:action=show_md5&digest=([0-9a-f]{32})">md5</a>\)z([-+.a-z0-9]{2,}):z.tar.gz .tar.bz2 .tar .zip .tgz)�PackageIndex�distros_for_url�parse_bdist_wininst�interpret_distro_name����z<setuptools/{setuptools.__version__} Python-urllib/{py_major}z{}.{})�py_major� setuptoolsc������������������v����� �t����������j��������|�������������S�#�t����������$�r}t����������d|���������������|�d�}~ww�xY�w)Nz/Not a URL, existing file, or requirement spec: )r����parse� ValueErrorr���)�spec�es��� ��/builddir/build/BUILDROOT/alt-python311-setuptools-65.6.3-2.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/setuptools/package_index.py�parse_requirement_argr&���E���sV�������� ��&�&�&����������n�CG�4�I� �� �� ��������s������ 8�3�8c����������������������|�������������������������������������}d\��}}}|���������������������d������������r�|���������������������d������������r |�dd����������}d}n{|���������������������dd������������r|�d d ����������}|�dd����������}d}nN|���������������������d������������r |�dd����������}d }n,|���������������������dd������������r|�d d ����������}|�dd����������}d }|||fS�)z=Return (base,pyversion) or (None,None) for possible .exe name)NNN�.exez .win32.exeNi�����win32z .win32-pyi�i�������z.win-amd64.exei�z win-amd64z .win-amd64-pyi��)�lower�endswith� startswith)�namer+����base�py_ver�plats��� r%���r���r���N���s�������� �J�J�L�L�E�)��D�&�$��~�~�f������>�>�,�'�'�� �����:�D��D�D� � � �k�3� /� /�� ��"�R�%�[�F�����:�D��D�D� �^�^�,� -� -�� �����:�D��D�D� � � �o�s� 3� 3�� ��"�R�%�[�F�����:�D��D����������c����������������������t�����������j�����������������������������|�������������}|\��}}}}}}t�����������j�����������������������������|���������������������d������������d���������������������}|dk����r>|dk����r8t�����������j�����������������������������|���������������������d������������d���������������������}d|v�r|���������������������dd������������\��}}||fS�)N�/���zsourceforge.net�download����#����)�urllibr!����urlparse�unquote�split) �url�parts�scheme�server�path� parameters�query�fragmentr/���s ��� r%����egg_info_for_urlrF���f���s��������L�!�!�#�&�&�E�8=�5�F�F�D�*�e�X��<���� � �3���� 3�4�4�D� �"�"�"�t�z�'9�'9��|�#�#�D�J�J�s�O�O�B�$7�8�8�� �d�{�{����C��+�+���h���>�r2���c��������������#������K����t����������|�������������\��}}t����������|�||������������D�]}|V����|rNt�������������������������������|������������}|r4t ����������|�|���������������������d������������|t�����������������������D�] }|V����dS�dS�dS�)zEYield egg or source distribution objects that might be found at a URLr9���)� precedenceN)rF����distros_for_location�EGG_FRAGMENT�matchr����groupr���)r>����metadatar/���rE����distrK���s��� r%���r���r���q���s�����������%�c�*�*�N�D�(�$�S�$��9�9������� � � � �����"�"�8�,�,���� �-��U�[�[��^�^�X�-������� �� ���� � � � � ��� �� � �� r2���c����������������������|����������������������d������������r |dd����������}|����������������������d������������rd|v�rt����������j��������|�||������������gS�|����������������������d������������rOd|v�rKt����������|������������}|�����������������������������������sg�S�t����������|�|j��������|j��������t����������dz����������������gS�|����������������������d ������������r.t����������|������������\��}}}|�t����������|�|||t����������|������������S�t����������D�]B}|����������������������|������������r+|dt����������|�����������������������}t����������|�||������������c�S��Cg�S�) z:Yield egg or source distribution objects based on basename�.egg.zipNr*���z.egg�-z.whlr9���)�location�project_name�versionrH���r(���) r,���r���� from_locationr���� is_compatiblerS���rT���r���r���r���r���� EXTENSIONS�len)rR����basenamerM����wheel�win_baser0����platform�exts��� r%���rI���rI������s����������$�$��!��C�R�C�=������ � ��J�S�H�_�_��*�8�X�x�H�H�I�I����� � �� �S�H�_�_��h�����"�"�$�$�� ��I��!�"�/�� �#�a�<� �� �� � �� ������ � ���%8��%B�%B�"��&�(���(��(�H�f�k�8����� � ���G��G�����S�!�!�� G���3�s�8�8�)��,�H�(��8�X�F�F�F�F�F� G���Ir2���c������������������x�����t����������t����������|�������������t����������j�����������������������������|�������������|������������S�)zEYield possible egg or source distribution objects based on a filename)rI���r����osrB���rY���)�filenamerM���s��� r%����distros_for_filenamera�������s3��������x� � �"�'�"2�"2�8�"<�"<�h�����r2���c��������������#����`��K����|����������������������d������������}|s#t����������d��|dd����������D���������������������������rdS�t����������dt����������|������������dz���������������D�]P}t ����������|�|d���������������������|d|����������������������d���������������������||d����������������������|||�������������V����QdS�)z�Generate alternative interpretations of a source distro name Note: if `location` is a filesystem filename, you should call ``pkg_resources.normalize_path()`` on it before passing it to this routine! rQ���c��������������3����@���K����|�]}t����������j��������d�|������������V����dS�)z py\d\.\d$N)�rerK���)�.0�ps��� r%���� <genexpr>z(interpret_distro_name.<locals>.<genexpr>����s.����������K�K�A�b�h�|�Q�7�7�K�K�K�K�K�Kr2�������Nr9���)� py_versionrH���r\���)r=����any�rangerX���r����join)rR���rY���rM���ri���rH���r\���r?���rf���s��� r%���r���r�������s�����������*� �N�N�3���E����#�K�K��q�r�r��K�K�K�K�K����� �1�c�%�j�j�1�n� %� %�� �� ������H�H�U�2�A�2�Y����H�H�U�1�2�2�Y���!�!�� �� �� �� �� �� �� � �� r2���c������������������<�������t��������������������������fd���������������}|S�)zs Wrap a function returning an iterable such that the resulting iterable only ever yields unique items. c�������������������.������t������������|�i�|��������������S��Nr���)�args�kwargs�funcs��� �r%����wrapperzunique_values.<locals>.wrapper����s ��������t�t�T�4�V�4�4�5�5�5r2���r���)rr���rs���s���` r%���� unique_valuesrt�������s5���������4�[�[�6��6��6��6���[�6���Nr2���z3<([^>]*\srel\s{0,10}=\s{0,10}['"]?([^'" >]+)[^>]*)>c����������� ���#�������K����t��������������������������������|������������D�]�}|�����������������������������������\��}}t����������t ����������t ����������j��������|��������������������������������������������������������d������������������������������������}d|v�sd|v�r_t�������������������������������|������������D�]D}t����������j�����������������������������|�t����������|���������������������d������������������������������������V����E��dD�]|}|���������������������|������������}|dk����r_t�������������������������������||������������}|rBt����������j�����������������������������|�t����������|���������������������d������������������������������������V����}dS�)zEFind rel="homepage" and rel="download" links in `page`, yielding URLs�,�homepager6���r9���)z <th>Home Pagez<th>Download URLr5���N)�REL�finditer�groups�set�map�str�stripr+���r=����HREFr:���r!����urljoin� htmldecoderL����find�search)r>����pagerK����tag�rel�rels�poss��� r%����find_external_linksr��������sM�������������d�#�#��L��L���<�<�>�>���S��3�s�y�#�)�)�+�+�"3�"3�C�"8�"8�9�9�:�:�������t�!3�!3����s�+�+�� L�� L���l�*�*�3� �5�;�;�q�>�>�0J�0J�K�K�K�K�K�K��4��L��L���i�i��n�n���"�9�9��K�K��c�*�*�E��� L��l�*�*�3� �5�;�;�q�>�>�0J�0J�K�K�K�K�K��L��Lr2���c��������������������$�����e�Zd�ZdZd��Zd��Zd��ZdS�)�ContentCheckerzP A null content checker that defines the interface for checking content c�����������������������dS�)z3 Feed a block of data to the hash. N����self�blocks��� r%����feedzContentChecker.feed����s ������� �r2���c�����������������������dS�)zC Check the hash. Return False if validation fails. Tr�����r����s��� r%����is_validzContentChecker.is_valid���s ��������tr2���c�����������������������dS�)zu Call reporter with information about the checker (hash name) substituted into the template. Nr����)r�����reporter�templates��� r%����reportzContentChecker.report��s ������ � �r2���N)�__name__� __module__�__qualname__�__doc__r����r����r����r����r2���r%���r����r��������sK�����������������������������������r2���r����c��������������������\�����e�Zd�Z�ej��������d������������Zd��Zed����������������Zd��Z d��Z d��ZdS�)�HashCheckerzK(?P<hash_name>sha1|sha224|sha384|sha256|sha512|md5)=(?P<expected>[a-f0-9]+)c������������������T�����||�_���������t����������j��������|������������|�_��������||�_��������d�S�ro���)� hash_name�hashlib�new�hash�expected)r����r����r����s��� r%����__init__zHashChecker.__init__��s%������"����K� �*�*�� � �� � � r2���c������������������������t�����������j�����������������������������|������������d���������}|st������������������������S�|�j�����������������������������|������������}|st������������������������S��|�di�|�������������������������������������S�)z5Construct a (possibly null) ContentChecker from a URLr5���r����)r:���r!���r;���r�����patternr����� groupdict)�clsr>���rE���rK���s��� r%����from_urlzHashChecker.from_url��s{��������<�(�(��-�-�b�1���� $�!�#�#�#���"�"�8�,�,���� $�!�#�#�#��s�'�'�U�_�_�&�&�'�'�'r2���c������������������:�����|�j������������������������������|�������������d�S�ro���)r�����updater����s��� r%���r����zHashChecker.feed$��s������� ��������r2���c������������������F�����|�j��������������������������������������������|�j��������k����S�ro���)r����� hexdigestr����r����s��� r%���r����zHashChecker.is_valid'��s�������y�"�"�$�$�� �5�5r2���c������������������,�����||�j���������z��}�||������������S�ro���)r����)r����r����r�����msgs��� r%���r����zHashChecker.report*��s���������'���x��}�}�r2���N)r����r����r����rd����compiler����r�����classmethodr����r����r����r����r����r2���r%���r����r������s����������������b�j� #����G� !��!��!� ��(��(���[�(� �� �� �6��6��6���������r2���r����c��������������������.������e�Zd�ZdZ � � � �d+��fd� Z��fd�Zd,d �Zd,d �Zd,d�Zd��Z d ��Z d��Zd��Zd��Z d-d�Zd��Zd-��fd� Zd��Zd��Zd��Zd��Zd��Z � � � �d.d�Zd/d�Zd��ZdZd��Zd��Zd-d�Zd ��Zd!��Zd"��Zd#��Z d$��Z!e"d,d%���������������Z#d&��Z$d'��Z%d(��Z&d)��Z'd*��Z(��xZ)S�)0r���z;A distribution index that scans web pages for download URLs�https://pypi.org/simple/��*NTc������������������r������t������������������������j��������|i�|���|dd�|���������������������d�����������������������z���|�_��������i�|�_��������i�|�_��������i�|�_��������t����������j��������d� ��������������������t����������t����������|������������������������������������j��������|�_ ��������g�|�_��������t����������j��������j��������|�_��������d�S�)Nr4����|)�superr����r,���� index_url�scanned_urls�fetched_urls� package_pagesrd���r����rl���r|���r���rK����allows�to_scanr:����request�urlopen�opener)r����r�����hosts� ca_bundle� verify_sslrp����kw� __class__s��� �r%���r����zPackageIndex.__init__2��s��������� �����$�%�"�%�%�%�"�S�)F�y�/A�/A�#�/F�/F�+F�)F�%G�G�������������j����#�i��*?�*?�!@�!@�A�A�G�������n�,����r2���c������������������������ �t����������|j���������������������n#�t����������$�r�Y�d�S�w�xY�wt���������������������������������������������|������������S�ro���)r���rT���� Exceptionr�����add)r����rN���r����s��� �r%���r����zPackageIndex.addD��sS������� ��$�,�'�'�'�'���� �� �� ��F�F� �����w�w�{�{�4� � � s������ &�&Fc����������� �����������||�j���������v�r|sdS�d|�j���������|<���t����������|������������s|����������������������|�������������dS�t����������t ����������|������������������������}|r-|����������������������|������������sdS�|����������������������d|�������������|s|r ||�j��������v�r$t����������t����������|�j ��������|�������������������������dS�|����������������������|������������sd|�j��������|<���dS�|�� ��������������������d|�������������d|�j��������|<���d}|����������������������|||z��������������}|�dS�t����������|t����������j��������j��������������������r(|j��������dk����r|�� ��������������������d|j��������z���������������d|�j��������|j��������<���d|j�����������������������������d d �����������������������������������������������vr|������������������������������������dS�|j��������}|�����������������������������������}t����������|t0����������������������sTt����������|t����������j��������j��������������������rd}n|j�����������������������������d������������pd}|���������������������|d ������������}|������������������������������������t6�������������������������������|������������D�]W} t����������j�����������������������������|t?����������| � ��������������������d������������������������������������} |��!��������������������| ��������������X|�"��������������������|�j#��������������������r-tI����������|dd������������dk����r|��%��������������������||������������}dS�dS�dS�)z<Evaluate a URL as a possible download, and maybe retrieve itNTzFound link: %sz Reading %sz<Download error on %s: %%s -- Some packages may not be found!i���zAuthentication error: %s�html�content-type��zlatin-1�charset�ignorer9����code���)&r����� URL_SCHEME�process_filename�listr����url_ok�debugr����r|���r�����info�open_url� isinstancer:����error� HTTPErrorr����r����r>����headers�getr+����close�readr}���� get_param�decoder���ry���r!���r����r����rL����process_urlr-���r�����getattr� process_index)r����r>����retrieve�dists�tmpl�fr/���r����r����rK����links��� r%���r����zPackageIndex.process_urlM��s�������$�#�#�#�H�#��F�!%���#���#���� 2��!�!�#�&�&�&��F����-�-�.�.�E��� 2��{�{�3�'�'����F�� � �+�S�1�1�1��� ��� �C�4�+<�$<�$<���T�X�u�%�%�&�&�&��F��{�{�3���� �%)�D��c�"��F�� � �,��$�$�$�!%���#��M���M�M�#�t�c�z�*�*���9��F��a���/�0�0�� :�Q�V�s�]�]��I�I�0�1�5�8�9�9�9�#'���!�%� ������~�r�:�:�@�@�B�B�B�B� �G�G�I�I�I��F��u���v�v�x�x���$��$�$�� 2��!�V�\�3�4�4�� F�#����)�-�-�i�8�8�E�I���;�;�w��1�1�D� ��� � � ��]�]�4�(�(�� #�� #�E��<�'�'��j����Q���.H�.H�I�I�D����T�"�"�"�"��>�>�$�.�)�)�� 1�g�a���.F�.F�#�.M�.M��%�%�c�4�0�0�D�D�D� 1�� 1�.M�.Mr2���c������������������ ����t�����������j�����������������������������|������������s|����������������������d|�������������d�S�t�����������j�����������������������������|������������rl|sjt�����������j�����������������������������|������������}t����������j��������|������������D�]6}|����������������������t�����������j�����������������������������||������������d��������������7t����������|������������}|r:|�� ��������������������d|�������������t����������t����������|�j ��������|�������������������������d�S�d�S�)Nz Not found: %sTz Found: %s)r_���rB����exists�warn�isdir�realpath�listdirr����rl���ra���r����r����r|���r����)r�����fn�nestedrB����itemr����s��� r%���r����zPackageIndex.process_filename���s��������w�~�~�b�!�!�� ��I�I�o�r�*�*�*��F� �7�=�=����� F�V�� F��7�#�#�B�'�'�D�� �4�(�(�� F�� F���%�%�b�g�l�l�4��&>�&>��E�E�E�E�$�R�(�(���� '��J�J�{�B�'�'�'���T�X�u�%�%�&�&�&�&�&� '�� 'r2���c������������������N����t����������|������������}|o*|���������������������d�����������������������������������������������dk����}|s8|����������������������t����������j�����������������������������|������������d���������������������rdS�d}|rt����������||z���������������|����������������������||�������������d�S�)Nr9����fileTzN Note: Bypassing %s (disallowed host; see http://bit.ly/2hrImnY for details). ) r����rL���r+���r����r:���r!���r;���r���r����)r����r>����fatal�s�is_filer����s��� r%���r����zPackageIndex.url_ok���s��������s�O�O���4����� � �(�(�*�*�f�4���� �d�k�k�&�,�"7�"7��"<�"<�Q�"?�@�@�� ��4� 4�� ���� � ��s��+�+�+��I�I�c�3�����r2���c�����������������������t����������t����������j��������j��������|������������}d��|D���������������}t ����������t����������j��������|�j��������|�������������������������d�S�)Nc��������������3����v���K����|�]4}t����������j��������|������������D�]}|���������������������d��������������||fV�����5dS�)z .egg-linkN)r_���r����r,���)re���rB����entrys��� r%���rg���z.PackageIndex.scan_egg_links.<locals>.<genexpr>���sm����������� �� ����D�)�)� �� ����~�~�k�*�*� � �5�M� �� �� �� �� �� �� r2���)�filterr_���rB���r����r����� itertools�starmap� scan_egg_link)r�����search_path�dirs� egg_linkss��� r%����scan_egg_linkszPackageIndex.scan_egg_links���sY�������b�g�m�[�1�1�� �� �� �� �� � �� �Y� �t�1�9� =� =�>�>�>�>�>r2���c����������� �����������t����������t����������j�����������������������������||������������������������5�}t ����������t����������d�t ����������t����������j��������|������������������������������������}d�d�d��������������n#�1�swxY�w�Y���t����������|������������dk����rd�S�|\��}}t����������t����������j�����������������������������||������������������������D�]?}t����������j��������j��������|g|�R���|_��������t����������|_ ��������|����������������������|��������������@d�S�)Nrh���)�openr_���rB���rl���r����r����r|���r}���r~���rX���r���rR���r ���rH���r����)r����rB���r����� raw_lines�lines�egg_path� setup_pathrN���s��� r%���r����zPackageIndex.scan_egg_link���s)����� �"�'�,�,�t�U�+�+� ,� ,�� B� ����c�#�)�Y�&?�&?�@�@�A�A�E� B�� B�� B�� B�� B�� B�� B�� B�� B�� B�� B����� B�� B�� B�� B���u�:�:��?�?��F�$���*�&�r�w�|�|�D�(�'C�'C�D�D�� �� �D��G�L��6��6�6�6�D�M�)�D�O��H�H�T�N�N�N�N� �� s����6A0�0A4�7A4c����������� �����������d}|����������������������|�j��������������������s|S�t����������t����������t����������j��������j��������|t����������|�j��������������������d��������������������������������d������������������������������������}t����������|������������dk����s d|d���������v�r|S�t����������|d���������������������}t����������|d���������������������}d|�j�����������������������������|� ����������������������������������i�������������|<���t����������|������������t����������|������������fS�)N)NNr4���rh���r8���r9���r���T)r-���r����r����r|���r:���r!���r<���rX���r=���r���r ���r����� setdefaultr+���r���)r����r�����NO_MATCH_SENTINELr?����pkg�vers��� r%����_scanzPackageIndex._scan���s�������&�����t�~�.�.�� %�$�$��S���-�t�C���4G�4G�4I�4I�/J�/P�/P�QT�/U�/U�V�V�W�W���u�:�:��?�?�c�U�1�X�o�o�$�$����a��!�!���5��8�$�$��?C���%�%�c�i�i�k�k�2�6�6�t�<��3����S�!1�!1�1�1r2���c������������������\����t��������������������������������|������������D�]f} �|����������������������t����������j�����������������������������|t ����������|���������������������d��������������������������������������������������W#�t����������$�r�Y��cw�xY�w|����������������������|������������\��}}|sdS�t����������||������������D�]c}t����������|������������\��}}|���������������������d������������r%|s#|r|d|�d|��z ��}n|����������������������|�������������|�� ��������������������|��������������dt�������������������������������d��|������������S�)z#Process the contents of a PyPI pager9���r�����.pyz#egg=rQ���c������������������6�����d|�����������������������ddd������������z��S�)Nz<a href="%s#md5=%s">%s</a>r9�������rh���)rL���)�ms��� r%����<lambda>z,PackageIndex.process_index.<locals>.<lambda>���s������2�Q�W�W�Q��1�5E�5E�E��r2���)r���ry���r��r:���r!���r����r����rL���r"���r����rF���r,����need_version_info�scan_url�PYPI_MD5�sub) r����r>���r����rK���r ��r���new_urlr/����frags ��� r%���r����zPackageIndex.process_index���sN�������]�]�4�(�(�� �� �E� �� � �6�<�/�/��Z����A���5O�5O�P�P�Q�Q�Q�Q���� �� �� ��� ������:�:�c�?�?���S��� ��2��+�3��5�5�� #�� #�G�)�'�2�2�J�D�$��}�}�U�#�#�� 0�D�� 0���0��G�s�s�s�C�C�8�8�G�G��*�*�3�/�/�/��M�M�'�"�"�"�"��|�|�E�E�t� �� �� s����AA2�2 A?�>A?c������������������2�����|�����������������������d|�������������d�S�)NzPPage at %s links to .py file(s) without version info; an index scan is required.)�scan_all�r����r>���s��� r%���r��zPackageIndex.need_version_info���s*������� � � �� �� �� �� �� r2���c�����������������������|�j���������|�j��������vr%|r�|�j��������|g|�R����|����������������������d�������������|����������������������|�j����������������������d�S�)Nz6Scanning index of all packages (this may take a while))r����r����r����r����r���r����r����rp���s��� r%���r��zPackageIndex.scan_all���sa�������>��!2�2�2��� &��� �#�%��%�%�%�%��I�I�N�O�O�O�� � �d�n�%�%�%�%�%r2���c�����������������������|�����������������������|�j��������|j��������z���dz����������������|�j�����������������������������|j��������������������s%|�����������������������|�j��������|j��������z���dz����������������|�j�����������������������������|j��������������������s|����������������������|�������������t����������|�j�����������������������������|j��������d������������������������D�]}|�����������������������|��������������d�S�)Nr4���r����) r��r�����unsafe_namer����r�����keyrS����not_found_in_indexr����)r�����requirementr>���s��� r%���� find_packageszPackageIndex.find_packages���s�������� � �d�n�{�'>�>��D�E�E�E��!�%�%�k�o�6�6�� K��M�M�$�.�;�+C�C�c�I�J�J�J��!�%�%�k�o�6�6�� 1��#�#�K�0�0�0���*�.�.�{���C�C�D�D�� �� �C��M�M�#����� �� r2���c�����������������������|��������������������������������������|����������������������|�������������|�|j�����������������D�]!}||v�r|c�S�|����������������������d||��������������"t ����������t ����������|����������������������������������||������������S�)Nz%s does not match %s)�prescanr&��r#��r����r����r����obtain)r����r%��� installerrN���r����s��� �r%���r)��zPackageIndex.obtain��s�����������������;�'�'�'����)�� B�� B�D��{�"�"������J�J�-�{�D�A�A�A�A��\�4�(�(�/�/��Y�G�G�Gr2���c������������������2����|����������������������|�j��������d|z���������������|�����������������������������������sd|������������������������������������t ����������j��������|�������������t ����������|j��������j���������dt����������j ��������� ��������������������|�������������d��������������dS�)z- checker is a ContentChecker zValidating %%s checksum for %sz validation failed for z; possible download problem?N)r����r����r����r����r_����unlinkr���r����r.���rB���rY���)r�����checkerr`����tfps��� r%���� check_hashzPackageIndex.check_hash ��s�������� ���t�z�#C�h�#N�O�O�O����!�!�� ��I�I�K�K�K��I�h���� ���<�$�$�$�b�g�&6�&6�x�&@�&@�&@�&@�B����� � �� r2���c�����������������������|D�]y}|�j����������@t����������|������������r1|���������������������d������������st����������t ����������|������������������������r|����������������������|��������������_|�j������������������������������|��������������zdS�)z;Add `urls` to the list that will be prescanned for searchesN�file:)r����r����r-���r����r���r���append)r�����urlsr>���s��� r%����add_find_linkszPackageIndex.add_find_links��s��������� )�� )�C���$�!�#����%��>�>�'�*�*��%�����,�,�-�-��%��� � �c�"�"�"�"����#�#�C�(�(�(�(� )�� )r2���c������������������p�����|�j���������r't����������t����������|�j��������|�j����������������������������������d|�_���������dS�)z7Scan urls scheduled for prescanning (e.g. --find-links)N)r����r����r|���r��r����s��� r%���r(��zPackageIndex.prescan*��s3�������<�� 3���T�]�D�L�1�1�2�2�2�����r2���c�����������������������|�|j������������������r |�j��������d}}n |�j��������d}}�|||j���������������������|�������������������������������������d�S�)Nz#Couldn't retrieve index page for %rz3Couldn't find index page for %r (maybe misspelled?))r#��r����r����r"��r��)r����r%���methr����s��� r%���r$��zPackageIndex.not_found_in_index0��sX��������� �� �� �#H�#�D�D��� �E���D�� ��S�+�)�*�*�*�� � �����r2���c�����������������������t����������|t����������������������s�t����������|������������}|rj|����������������������|���������������������d������������||������������}t����������|������������\��}}|���������������������d������������r|����������������������|||������������}|S�t����������j ��������� ��������������������|������������r|S�t����������|������������}t����������|�� ��������������������||������������dd������������S�)a��Locate and/or download `spec` to `tmpdir`, returning a local path `spec` may be a ``Requirement`` object, or a string containing a URL, an existing local filename, or a project/version requirement spec (i.e. the string form of a ``Requirement`` object). If it is the URL of a .py file with an unambiguous ``#egg=name-version`` tag (i.e., one that escapes ``-`` as ``_`` throughout), a trivial ``setup.py`` is automatically created alongside the downloaded file. If `spec` is a ``Requirement`` object or a string containing a project/version requirement spec, this method returns the location of a matching distribution (possibly after downloading it to `tmpdir`). If `spec` is a locally existing file or directory name, it is simply returned unchanged. If `spec` is a URL, it is downloaded to a subpath of `tmpdir`, and the local filename is returned. Various errors may be raised if a problem occurs during downloading. r9���r��rR���N)r����r���r����� _download_urlrL���rF���r,���� gen_setupr_���rB���r����r&���r�����fetch_distribution)r����r#����tmpdirr@����foundr/���rE���s��� r%���r6���zPackageIndex.download;��s�������$��$��,�,�� 3���%�%�F��� 3��*�*�6�<�<��?�?�D�&�I�I��!1�$�!7�!7���h��=�=��'�'��D� �N�N�5�(�F�C�C�E��������%�%�� 3���,�T�2�2���t�.�.�t�V�<�<�j�$�O�O�Or2���c�������������������������� ��������������������������d|�������������i�� d}d ���� ��fd� }|r4�������������������������������������������������������������|��������������||������������}|s|��|||������������}|�&��j������������������������������������������������||������������}|�"|s �����������������������|��������������||������������}|������������������������d�rdpd|�������������dS�������������������������d|�������������|���������������������|j���������������������S�) a|��Obtain a distribution suitable for fulfilling `requirement` `requirement` must be a ``pkg_resources.Requirement`` instance. If necessary, or if the `force_scan` flag is set, the requirement is searched for in the (online) package index as well as the locally installed packages. If a distribution matching `requirement` is found, the returned distribution's ``location`` is the value you would have gotten from calling the ``download()`` method with the matching distribution's URL or filename. If no matching distribution is found, ``None`` is returned. If the `source` flag is set, only source distributions and source checkout links will be considered. Unless the `develop_ok` flag is set, development and system eggs (i.e., those using the ``.egg-info`` format) will be ignored. zSearching for %sNc������������������Z�����|��}||�j������������������D�]�}|j��������t����������k����r"�s |�vr����������������������d|�������������d�|<����4||�v�o|j��������t����������k����p��}|rJ����������������������|j��������� ������������}||_��������t����������j ��������� ��������������������|j��������������������r|c�S���d�S�)Nz&Skipping development or system egg: %sr9���)r#��rH���r���r����r ���r6���rR����download_locationr_���rB���r����) �req�envrN����test�loc� develop_okr�����skipped�sourcer<��s ��� �����r%���r����z-PackageIndex.fetch_distribution.<locals>.find{��s���������{�����C�G��� $�� $���?�l�2�2�:�2��7�*�*�� � �D� �������)*��� ���s�{�U���;�(F�(T�f�*����$��-�-�� �v�>�>�C�-0�D�*��w�~�~�d�&<�=�=��$�#�����! $�� $r2���z:No local packages or working download links found for %s%sza source distribution of r����zBest match: %s)rR���ro���)r����r(��r&��r����r�����cloner@��) r����r%��r<��� force_scanrG��rE���local_indexrN���r����rF��s ���` ` `` @r%���r;��zPackageIndex.fetch_distribution]��sn����������4� � � �$�k�2�2�2����� $�� $�� $�� $�� $�� $�� $�� $�� $�� $�.��� %��L�L�N�N�N����{�+�+�+��4��$�$�D��� 2��/��4��[�1�1�D��<��|�'��������4��$�$�D��<� �<����{�+�+�+��4��$�$�D��<��I�I�L��7�7�=�2�� �� �� �� �� �� �I�I�&��-�-�-��:�:�t�'=�:�>�>�>r2���c������������������H�����|�����������������������||||������������}|�|j��������S�dS�)a3��Obtain a file suitable for fulfilling `requirement` DEPRECATED; use the ``fetch_distribution()`` method now instead. For backward compatibility, this routine is identical but returns the ``location`` of the downloaded distribution instead of a distribution object. N)r;��rR���)r����r%��r<��rI��rG��rN���s��� r%����fetchzPackageIndex.fetch���s0��������&�&�{�F�J��O�O�����=� ��tr2���c����������������������t��������������������������������|������������}|r.d��t����������||���������������������d������������d�������������D���������������pg�}t ����������|������������dk�����rXt ����������j�����������������������������|������������}t ����������j�����������������������������|������������|k����rvt ����������j��������� ��������������������||������������}t ����������j��������� ��������������������|������������r t ����������j�����������������������������||������������st����������j ��������||�������������|}t����������t ����������j��������� ��������������������|d������������d������������5�}|���������������������d|d���������j���������d|d���������j���������dt ����������j�����������������������������|������������d����������d ��������������d�d�d��������������n#�1�swxY�w�Y���|S�|rt'����������d |�d|���������������t'����������d�������������) Nc������������������ �����g�|�]}|j���������� |��S�r����)rT���)re����ds��� r%���� <listcomp>z*PackageIndex.gen_setup.<locals>.<listcomp>���s0��������������9�������r2���r9���zsetup.py�wz(from setuptools import setup setup(name=r���z , version=z, py_modules=[z]) z9Can't unambiguously interpret project/version identifier zI; any dashes in the name or version should be escaped using underscores. zpCan't process plain .py files without an '#egg=name-version' suffix to enable automatic setup script generation.)rJ���rK���r���rL���rX���r_���rB���rY����dirnamerl���r�����samefile�shutil�copy2r���writerS���rT����splitextr���) r����r`���rE���r<��rK���r����rY����dstr����s ��� r%���r:��zPackageIndex.gen_setup���s������"�"�8�,�,���� ����.�x����Q����N�N������ ���� ���u�:�:��?�?��w�'�'��1�1�H���w���x�(�(�F�2�2��g�l�l�6�8�4�4������s�+�+��#���0@�0@��3�0O�0O��#��L��3�/�/�/�"�H��b�g�l�l�6�:�6�6��<�<�� ��� � � ���a��-�-�-��a��(�(�(���(�(��2�2�1�5�5�5������� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� ���O� �� � �.��&.�X�X�u�u�6����� ��!�G����� s����AF,�,F0�3F0i� ��c����������������������|�����������������������d|�������������d�} �t�������������������������������|������������}|����������������������|������������}t ����������|t ����������j��������j��������������������r"t����������d|�d|j ���������d|j �����������������������|������������������������������������}d}|�j��������}d}d|v�rP|���������������������d������������} t����������t����������t����������| ������������������������}|����������������������|||||�������������t#����������|d ������������5�} �|���������������������|������������}|rI|���������������������|�������������| ���������������������|�������������|dz ��}|����������������������|||||�������������nn�b|����������������������||| �������������d�d�d��������������n#�1�swxY�w�Y���||r|������������������������������������S�S�#�|r|������������������������������������w�w�xY�w)NzDownloading %szCan't download �: � r���r5���zcontent-lengthzContent-Length�wbTr9���)r����r����r����r����r����r:���r����r����r���r����r�����dl_blocksize�get_all�maxr|����int� reporthookr��r����r����rV��r/��r����)r����r>���r`����fpr-��r�����blocknum�bs�size�sizesr.��r����s��� r%����_download_tozPackageIndex._download_to���s������ � �"�C�(�(�(� �� �!�*�*�3�/�/�G����s�#�#�B��"�f�l�4�5�5�� �$�n�25�#�#�r�w�w�w����G��������g�g�i�i�G��H��"�B��D��7�*�*����(8�9�9���3�s�E�?�?�+�+������X�x��T�B�B�B��h��%�%�� 8����G�G�B�K�K�E�������U�+�+�+�� � �%�(�(�(� �A� ������X�x��T�J�J�J�J���������3�7�7�7� 8�� 8�� 8�� 8�� 8�� 8�� 8�� 8�� 8�� 8�� 8����� 8�� 8�� 8�� 8����� ���� � � � � ��r�� ���� � � � � ���s1����C3F8�� A;F�F8��F�F8��F�F8��8Gc�����������������������d�S�ro���r����)r����r>���r`���rc���blksizere��s��� r%���ra��zPackageIndex.reporthook��s�������r2���c����������������������|����������������������d������������rt����������|������������S� �t����������||�j��������������������S�#�t����������t ����������j��������j��������f$�r]}d���������������������d��|j ��������D���������������������������}|r|�� ��������������������||�������������nt����������|�d|��������������|�Y�d�}~d�S�d�}~wt����������j ��������j��������$�r}|cY�d�}~S�d�}~wt����������j ��������j��������$�rD}|r|�� ��������������������||j���������������������nt����������d|�d|j����������������������|�Y�d�}~d�S�d�}~wt ����������j��������j��������$�rC}|r|�� ��������������������||j���������������������nt����������|�d|j����������������������|�Y�d�}~d�S�d�}~wt ����������j��������j��������t(����������j ��������f$�r:}|r|�� ��������������������||�������������nt����������d|�d|��������������|�Y�d�}~d�S�d�}~ww�xY�w)Nr1��r[��c������������������,�����g�|�]}t����������|��������������S�r����)r}���)re����args��� r%���rP��z)PackageIndex.open_url.<locals>.<listcomp>��s������7�7�7��C��H�H�7�7�7r2���zDownload error for rZ��z7 returned a bad status line. The server might be down, )r-���� local_open�open_with_authr����r"����http�client� InvalidURLrl���rp���r����r���r:���r����r�����URLError�reason� BadStatusLine�line� HTTPException�socket)r����r>����warning�vr����s��� r%���r����zPackageIndex.open_url��so������>�>�'�"�"�� #��c�?�?�"� T�!�#�t�{�3�3�3���D�K�2�3�� B�� B�� B��(�(�7�7���7�7�7�8�8�C��� B�� � �'�3�'�'�'�'�$����S�S�%9�:�:��A��(�'�'�'�'�'�������|�%�� �� �� ��H�H�H�H�H�H������|�$�� �� �� ��� �� � �'�1�8�,�,�,�,�$�n�36�3�3����A�������-�,�,�,�,�,����� ��{�(�� �� �� ��� �� � �'�1�6�*�*�*�*�$�"%�#�#�q�v�v�/��������+�*�*�*�*�*��������)�6�<�8�� T�� T�� T��� T�� � �'�1�%�%�%�%�$�n�C�C�C���%K�L�L�RS�S��&�%�%�%�%�%����� T���sL����;��G�AB.�.G�C�G�G�#9D"�"G�98E7�7#G�/G�Gc����������������������t����������|������������\��}}|r3d|v�r.|���������������������dd���������������������������������dd������������}d|v��.nd}|���������������������d������������r |d�d����������}t����������j�����������������������������||������������}|dk����s|���������������������d ������������r|����������������������||������������S�|d k����s|���������������������d������������r|����������������������||������������S�|���������������������d������������r|�� ��������������������||������������S�|d k����rBt����������j�����������������������������t����������j �����������������������������|������������d���������������������S�|����������������������|d�������������|����������������������||������������S�)Nz..�.�\�_�__downloaded__rP���r*����svnzsvn+�gitzgit+zhg+r����rh���T)rF����replacer,���r_���rB���rl���r-���� _download_svn� _download_git�_download_hgr:���r�����url2pathnamer!���r;���r�����_attempt_download)r����r@���r>���r<��r.���rE���r`���s��� r%���r9��zPackageIndex._download_url4��s�������*�#�.�.���h��� $��$�,�,��|�|�D�#�.�.�6�6�t�S�A�A����$�,�,���$�D��=�=��$�$�� �����9�D��7�<�<���-�-����U�?�?�f�/�/��7�7�?��%�%�c�8�4�4�4� �u�_�_�� 1� 1�&� 9� 9�_��%�%�c�8�4�4�4� � � �u� %� %�� 9��$�$�S�(�3�3�3� �v� � ��>�.�.�v�|�/D�/D�S�/I�/I�!�/L�M�M�M��K�K��T�"�"�"��)�)�#�x�8�8�8r2���c������������������2�����|�����������������������|d�������������d�S�)NT)r����r��s��� r%���r��zPackageIndex.scan_urlQ��s����������d�#�#�#�#�#r2���c�����������������������|�����������������������||������������}d|���������������������dd�����������������������������������������������v�r|����������������������|||������������S�|S�)Nr����r����r����)rg��r����r+����_download_html)r����r>���r`���r����s��� r%���r���zPackageIndex._attempt_downloadT��sY�������#�#�C��2�2���W�[�[���4�4�:�:�<�<�<�<��&�&�s�G�X�>�>�>��Or2���c������������������t����t����������|������������}|D�]m}|�����������������������������������rWt����������j��������d|������������r@|������������������������������������t����������j��������|�������������|����������������������||������������c�S��n�n|������������������������������������t����������j��������|�������������t����������d|z����������������)Nz <title>([^- ]+ - )?Revision \d+:zUnexpected HTML page found at ) r��r~���rd���r����r����r_���r,��r���r���)r����r>���r����r`���r����ru��s��� r%���r���zPackageIndex._download_html[��s��������H�~�~���� �� �D��z�z�|�|�� ��9�@�$�G�G��=��J�J�L�L�L��I�h�'�'�'��-�-�c�8�<�<�<�<�<��� �� � � ���� � �(�����=��C�D�D�Dr2���c�����������������������t����������j��������dt�����������������������|���������������������dd������������d���������}d}|��������������������������������������������������������d������������r�d|v�r�t����������j�����������������������������|������������\��}}}}}} |s�|���������������������d������������r�d |d d�����������v�r�|d d��������������������������������d d������������\��}}t����������|������������\��} }| rTd| v�r"| ���������������������dd������������\��}} d|�d | ��}nd| z���}|}|||||| f}t����������j��������� ��������������������|������������}|����������������������d||�������������t����������j ��������d|�d|�d|���������������|S�)Nz"SVN download support is deprecatedr8���r9���r���r����zsvn:�@z//r4���rh����:z --username=z --password=z'Doing subversion checkout from %s to %szsvn checkoutz -q r[��)�warningsr�����UserWarningr=���r+���r-���r:���r!���r;���� _splituser� urlunparser����r_����system)r����r>���r`����credsr@����netlocrB���rf����qr�����auth�host�user�pwr?���s��� r%���r���zPackageIndex._download_svnj��s������� �:�K�H�H�H��i�i��Q����"�����9�9�;�;�!�!�&�)�)�� 9�c�S�j�j�,2�L�,A�,A�#�,F�,F�)�F�F�D�!�Q���� 9�d�o�o�d�3�3�� 9��t�A�B�B�x���#�A�B�B�x�~�~�c�1�5�5����'��/�/� ��d���9��d�{�{�#'�:�:�c�1�#5�#5���b�b�BF�$�$��� K��� .�� 5��!�F�"�F�C��A�q�8�E� �,�1�1�%�8�8�C�� � �;�S�(�K�K�K� � � �u�u�u�c�c�c�8�8�D�E�E�E��r2���c������������������J����t�����������j�����������������������������|�������������\��}}}}}|���������������������dd������������d���������}|���������������������dd������������d���������}d�}d|v�r|���������������������dd������������\��}}t�����������j�����������������������������||||df������������}�|�|fS�)N�+r9���r5���r8���r���r���r����)r:���r!����urlsplitr=����rsplit� urlunsplit)r>���� pop_prefixr@���r���rB���rD���r���revs��� r%����_vcs_split_rev_from_urlz$PackageIndex._vcs_split_rev_from_url���s�������,2�L�,A�,A�#�,F�,F�)����e�T����c�1�%�%�b�)����z�z�#�q�!�!�!�$�����$�;�;����C��+�+�I�D�#���l�%�%�v�v�t�U�B�&G�H�H���C�x�r2���c������������������8����|����������������������dd������������d���������}|����������������������|d�������������\��}}|����������������������d||�������������t����������j��������d|�d|���������������|�0|����������������������d |�������������t����������j��������d |�d|���������������|S�)Nr8���r9���r���T�r���zDoing git clone from %s to %szgit clone --quiet r[��zChecking out %szgit -C z checkout --quiet �r=���r���r����r_���r����r����r>���r`���r���s��� r%���r���zPackageIndex._download_git���s��������>�>�#�q�)�)�!�,���/�/���/�E�E���S�� � �1�3��A�A�A� � � �s�s�s�H�H�=�>�>�>��?��I�I�'��-�-�-��I�I���H�H��C�� �� �� ���r2���c������������������:����|����������������������dd������������d���������}|����������������������|d�������������\��}}|����������������������d||�������������t����������j��������d|�d|���������������|�1|����������������������d |�������������t����������j��������d |�d|�d��������������|S�) Nr8���r9���r���Tr���zDoing hg clone from %s to %szhg clone --quiet r[��zUpdating to %sz hg --cwd z up -C -r z -qr���r���s��� r%���r���zPackageIndex._download_hg���s��������>�>�#�q�)�)�!�,���/�/���/�E�E���S�� � �0�#�x�@�@�@� � � �c�c�c�8�8�<�=�=�=��?��I�I�&��,�,�,��I�I���H�H��C�C�� �� �� ���r2���c������������������*�����t����������j��������|g|�R����d�S�ro���)r���r����r ��s��� r%���r����zPackageIndex.debug���s ������� �#��������r2���c������������������*�����t����������j��������|g|�R����d�S�ro���)r���r����r ��s��� r%���r����zPackageIndex.info���� ����������t������r2���c������������������*�����t����������j��������|g|�R����d�S�ro���)r���r����r ��s��� r%���r����zPackageIndex.warn���r���r2���)r����r����NT)Fro���)FFFN)FF)*r����r����r����r����r����r����r����r����r����r��r����r��r����r��r��r&��r)��r/��r4��r(��r$��r6���r;��rL��r:��r]��rg��ra��r����r9��r��r���r���r����staticmethodr���r���r���r����r����r����� __classcell__�r����s���@r%���r���r���/��s���������������E�E��-����-��-��-��-��-��-�$!��!��!��!��!�31��31��31��31�j'��'��'��'� �� �� �� �?��?��?������ 2��2��2� �� �� �: �� �� �&��&��&��&� �� �� �H��H��H��H��H��H������ )�� )�� )������ �� �� � P�� P�� P�L�����N?��N?��N?��N?�`�������,��,��,�\��L�"��"��"�H �� �� � T�� T�� T�� T�D9��9��9�:$��$��$������ E�� E�� E������,���������\��"�����&�����&����������������������r2���r���z!&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?c������������������T�����|�����������������������d������������}t����������j��������|������������S�)Nr���)rL���r�����unescape)rK����whats��� r%���� decode_entityr������s!�������;�;�q�>�>�D��=����r2���c������������������,�����t����������t����������|�������������S�)a�� Decode HTML entities in the given text. >>> htmldecode( ... 'https://../package_name-0.1.2.tar.gz' ... '?tokena=A&tokenb=B">package_name-0.1.2.tar.gz') 'https://../package_name-0.1.2.tar.gz?tokena=A&tokenb=B">package_name-0.1.2.tar.gz' )� entity_subr���)�texts��� r%���r����r�������s��������m�T�*�*�*r2���c���������������������������fd�}|S�)Nc�����������������������������fd�}|S�)Nc�������������������������t����������j����������������������}t����������j���������������������� ���|�i�|��t����������j��������|�������������S�#�t����������j��������|�������������w�xY�wro���)rw���getdefaulttimeout�setdefaulttimeout)rp���rq����old_timeoutrr����timeouts��� ��r%����_socket_timeoutz@socket_timeout.<locals>._socket_timeout.<locals>._socket_timeout���sd������� �2�4�4�K��$�W�-�-�-� 6��t�T�,�V�,�,��(��5�5�5�5���(��5�5�5�5���s����A��Ar����)rr���r���r���s���` �r%���r���z'socket_timeout.<locals>._socket_timeout���s*�������� 6�� 6�� 6�� 6�� 6�� 6���r2���r����)r���r���s���` r%����socket_timeoutr������s$������� �� �� �� �� ���r2���c������������������������t�����������j�����������������������������|�������������}|�����������������������������������}t ����������j��������|������������}|�����������������������������������}|���������������������dd������������S�)a9�� Encode auth from a URL suitable for an HTTP header. >>> str(_encode_auth('username%3Apassword')) 'dXNlcm5hbWU6cGFzc3dvcmQ=' Long auth strings should not cause a newline to be inserted. >>> long_auth = 'username:' + 'password'*10 >>> chr(10) in str(_encode_auth(long_auth)) False � r����)r:���r!���r<����encode�base64� b64encoder����r���)r����auth_s� auth_bytes� encoded_bytes�encodeds��� r%����_encode_authr������s[��������\� !� !�$� '� '�F������J��$�Z�0�0�M��"�"�$�$�G��?�?�4��$�$�$r2���c��������������������$�����e�Zd�ZdZd��Zd��Zd��ZdS�)� Credentialz: A username/password pair. Use like a namedtuple. c������������������"�����||�_���������||�_��������d�S�ro�����username�password)r����r���r���s��� r%���r����zCredential.__init__��s������ �� � �� � � r2���c��������������#����.���K����|�j���������V���|�j��������V���d�S�ro���r���r����s��� r%����__iter__zCredential.__iter__��s(�����������m�����m�����r2���c������������������&�����dt����������|�������������z��S�)Nz%(username)s:%(password)s)�varsr����s��� r%����__str__zCredential.__str__ ��s������*�T�$�Z�Z�7�7r2���N)r����r����r����r����r����r���r���r����r2���r%���r���r������sK�����������������!��!��!������8��8��8��8��8r2���r���c��������������������@�������e�Zd�Z��fd�Zed����������������Zd��Zd��Z��xZS�)� PyPIConfigc������������������j�����t��������������������������������g�d�d������������}t���������������������������������������������|�������������t����������j�����������������������������t����������j�����������������������������d������������d������������}t����������j�����������������������������|������������r|�� ��������������������|�������������dS�dS�)z% Load from ~/.pypirc )r���r���� repositoryr�����~z.pypircN) �dict�fromkeysr����r����r_���rB���rl���� expanduserr����r����)r�����defaults�rcr����s��� �r%���r����zPyPIConfig.__init__��s����������=�=�!G�!G�!G��L�L�� ������"�"�"� �W�\�\�"�'�,�,�S�1�1�9� =� =�� �7�>�>�"���� ��I�I�b�M�M�M�M�M� �� r2���c���������������������������fd���������������������������������������D���������������}t����������t������������j��������|������������������������S�)Nc������������������d������g�|�],}�����������������������|d�������������������������������������������������*|��-S�)r���)r����r~���)re����sectionr����s��� �r%���rP��z2PyPIConfig.creds_by_repository.<locals>.<listcomp>��sI��������& ��& ��& ���x�x���.�.�4�4�6�6�& ��& ��& ��& r2���)�sectionsr���r|����_get_repo_cred)r�����sections_with_repositoriess���` r%����creds_by_repositoryzPyPIConfig.creds_by_repository��sR�������& ��& ��& ��& ��=�=�?�?�& ��& ��& �"���C��+�-G�H�H�I�I�Ir2���c����������������������|�����������������������|d�����������������������������������������������}|t����������|�����������������������|d�����������������������������������������������|�����������������������|d�����������������������������������������������������������fS�)Nr���r���r���)r����r~���r���)r����r����repos��� r%���r���zPyPIConfig._get_repo_cred#��st�������x�x���.�.�4�4�6�6���Z��H�H�W�j�)�)�/�/�1�1��H�H�W�j�)�)�/�/�1�1� �� �� �� r2���c������������������v�����|�j��������������������������������������������D�]\��}}|���������������������|������������r|c�S��dS�)z� If the URL indicated appears to be a repository defined in this config, return the credential for that repository. N)r����itemsr-���)r����r>���r����creds��� r%����find_credentialzPyPIConfig.find_credential*��sS������ �!%� 8� >� >� @� @�� �� ��J���~�~�j�)�)�� ����� � �� r2���) r����r����r����r�����propertyr���r���r���r���r���s���@r%���r���r��� ��st��������������� �� �� �� �� ���J��J���X�J� �� �� �������������r2���r���c�����������������������t�����������j�����������������������������|�������������}|\��}}}}}}|���������������������d������������rt����������j�����������������������������d�������������|dv�rt����������|������������\��} } nd} | sMt������������������������� ��������������������|�������������}|r*t����������|������������} |j��������|�f}t����������j ��������dg|�R����| rodt����������| ������������z���} || ||||f} t�����������j�����������������������������| ������������}t�����������j�����������������������������|������������}|���������������������d| �������������nt�����������j�����������������������������|�������������}|���������������������dt&������������������������||������������}| rct�����������j�����������������������������|j��������������������\��}}}}}}||k����r2|| k����r,||||||f} t�����������j�����������������������������| ������������|_��������|S�) z4Open a urllib2 request, handling HTTP authenticationr���znonnumeric port: '')ro���httpsNz*Authenticating as %s for %s (from .pypirc)zBasic � Authorizationz User-Agent)r:���r!���r;���r,���ro��rp��rq��r���r���r���r}���r���r���r����r���r���r�����Request� add_header� user_agentr>���)r>���r�����parsedr@���r���rB����paramsrD���r��r����addressr���r����r?���r��r����rb���s2�h2�path2�param2�query2�frag2s��� r%���rn��rn��4��s��������\� "� "�3� '� '�F�06�-�F�F�D�&�%������s����<��k�$�$�%:�;�;�;� �"�"�"�"�6�*�*� ��g�g�����J��|�|�+�+�C�0�0���� J��t�9�9�D��=�#�%�D��H�A�I�D�I�I�I�I���.��,�t�,�,�,�����v�u�d�:���,�)�)�%�0�0���.�(�(��1�1�����?�D�1�1�1�1��.�(�(��-�-�����|�Z�0�0�0� �����B���4��06�|�/D�/D�R�V�/L�/L�,��B��v�v�u� ��<�<�B�'�M�M����v�v�u�<�E��\�,�,�U�3�3�B�F� �Ir2���c������������������D�����|�����������������������d������������\��}}}�|r|nd|�fS�)zNsplituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.r���N)� rpartition)r���r����delims��� r%���r���r���c��s0�����������,�,��D�%���#�D�D�t�d�*�*r2���c�����������������������|�S�ro���r����)r>���s��� r%���� fix_sf_urlr���n��s�������Jr2���c�����������������������t�����������j�����������������������������|�������������\��}}}}}}t�����������j�����������������������������|������������}t ����������j�����������������������������|������������rt�����������j�����������������������������|�������������S�|� ��������������������d�������������rt ����������j��������� ��������������������|������������r�g�}t����������j��������|������������D�]�} t ����������j�����������������������������|| ������������} | dk����r>t����������| d������������5�}|�����������������������������������}ddd�������������n#�1�swxY�w�Y����nzt ����������j��������� ��������������������| ������������r| dz ��} |���������������������d���������������������| ����������������������������d} | ���������������������|�d���������������������|������������� ������������}d \��}}nd\��}}}dd i}t#����������j��������|������������}t�����������j�����������������������������|�||||������������S�)z7Read a local path, with special support for directoriesr4���z index.html�rNz<a href="{name}">{name}</a>)r.���zB<html><head><title>{url}</title></head><body>{files}</body></html>r���)r>����files)������OK)r����zPath not foundz Not foundr����z text/html)r:���r!���r;���r����r���r_���rB����isfiler����r,���r����r����rl���r��r����r2���format�io�StringIOr����r����)r>���r@���rA���rB����paramrD���r��r`���r��r�����filepathrb���bodyr�����status�messager�����body_streams��� r%���rm��rm��r��s�����/5�|�/D�/D�S�/I�/I�,�F�F�D�%����~�*�*�4�0�0�H� �w�~�~�h����C��~�%�%�c�*�*�*� ���s� � ��C��� � �h� 7� 7��C�����H�%�%�� @�� @�A��w�|�|�H�a�0�0�H��L� � ��(�C�(�(��%�B��7�7�9�9�D�%��%��%��%��%��%��%��%��%��%��%�����%��%��%��%�������x�(�(�� ��S����L�L�6�=�=�1�=�E�E�F�F�F�F��X�� ���;�;�3�d�i�i��.>�.>�;�?�?�D�#����� B������{�+�G��+�d�#�#�K��<�!�!�#�v�w���M�M�Ms����D(�(D, �/D, ro���)r���)Zr�����sysr_���rd���r��rT��rw��r���r����r����r����configparserr�����http.clientro���urllib.parser:����urllib.request�urllib.error� functoolsr���r���� pkg_resourcesr���r���r���r���r ���r ���r���r���r ���r���r���r���r���r���� distutilsr����distutils.errorsr����fnmatchr����setuptools.wheelr���� setuptools.extern.more_itertoolsr���r����rJ����Ir���r��rK���r����r=���rW����__all__�_SOCKET_TIMEOUT�_tmplr���version_infor���r&���r���rF���r���rI���ra���r���rt���rx���r����r����r����r���r��r���r���r����r���r���r����RawConfigParserr���r����r����rn��r���r���rm��r����r2���r%����<module>r!�����s������*��*�� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � ��������������������������������������������������������������������������������������������������������������������������������������������������� �������������+��+��+��+��+��+��������������"��"��"��"��"��"��<��<��<��<��<��<���r�z�6�7�7���r�z�3�R�T�:�:���2�:�J�������R�Z�,�b�d� 3� 3� 9� � .� 4� 4� 6� 6� ����������F�� �\�\� �W�^�S�-� .�:������� � ����������0������������ �� �� �� �F��������.2�k�TX�# ��# ��# ��# �L �� �� ���b�j�K�R�T�R�R��� ��L��L����L�$���������������2���������.�������BP ��P ��P ��P ��P �;��P ��P ��P �j��R�Z�<� =� =� A� ������ +�� +�� +��������%��%��%�*8��8��8��8��8��8��8��8�"$��$��$��$��$��-��$��$��$�N� &�~�5��+��+��+��+�^+��+��+��1����0�0��@�@�������N��N��N��N��Nr2���