403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.6/site-packages/setuptools/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.opt-1.pyc
3

��a���@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
ZddlZddlZddlZddlmZddlZddlmZmZmZmZmZmZmZmZmZm 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
�Z0ej/dej1�Z2ej/d�Z3ej/d
ej1�j4Z5dj6�Z7ddddgZ8dZ9dZ:e:j;dj;ej<�ed�Z=dd�Z>dd�Z?dd�Z@dAdd�ZAdBdd�ZBdCdd �ZCdedfd!d�ZDd"d#�ZEej/d$ej1�ZFeEd%d&��ZGGd'd(�d(�ZHGd)d*�d*eH�ZIGd+d�de�ZJej/d,�jKZLd-d.�ZMd/d0�ZNdDd1d2�ZOd3d4�ZPGd5d6�d6�ZQGd7d8�d8ejR�ZSejTjUfd9d:�ZVd;d<�ZWeOe9�eV�ZVd=d>�ZXd?d@�ZYdS)Ez#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&amp;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{}.{})Zpy_major�
setuptoolscCsBy
tj|�Stk
r<}ztd|f�|�WYdd}~XnXdS)Nz1Not a URL, existing file, or requirement spec: %r)r
�parse�
ValueErrorr)�spec�e�r �#/usr/lib/python3.6/package_index.py�parse_requirement_arg6s

r"cCs�|j�}d\}}}|jd�r�|jd�r8|dd�}d}nn|jdd�rb|dd�}|dd�}d}nD|jd
�r~|dd�}d}n(|jd
d�r�|dd�}|dd�}d}|||fS)z=Return (base,pyversion) or (None,None) for possible .exe nameNz.exez
.win32.exe�
�win32z	.win32-py���z.win-amd64.exe�z	win-amd64z
.win-amd64-py�)NNNi����i�i�������i�i�i��i����r*i��)�lower�endswith�
startswith)�namer+�base�py_verZplatr r r!r?s$



c	Csxtjj|�}|\}}}}}}tjj|jd�d�}|dkrX|dkrXtjj|jd�d�}d|krp|jdd�\}}||fS)	N�/�zsourceforge.net�download��#������)�urllibr�urlparse�unquote�split)	�url�parts�scheme�server�pathZ
parameters�query�fragmentr/r r r!�egg_info_for_urlWsrCccsdt|�\}}xt|||�D]
}|VqW|r`tj|�}|r`x$t||jd�|td�D]
}|VqRWdS)zEYield egg or source distribution objects that might be found at a URLr2)�
precedenceN)rC�distros_for_location�EGG_FRAGMENT�matchr�groupr)r<�metadatar/rB�distrGr r r!rbs

cCs�|jd�r|dd
�}|jd�r8d|kr8tj|||�gS|jd�rxd|krxt|�}|j�s^gSt||j|jtdd�gS|jd	�r�t|�\}}}|dk	r�t	||||t
|�Sx4tD],}|j|�r�|dt|��}t	|||�Sq�WgS)z:Yield egg or source distribution objects based on basenamez.egg.zipNr'z.egg�-z.whlr2)�location�project_name�versionrDz.exer*)
r,rZ
from_locationrZ
is_compatiblerMrNrrrr�
EXTENSIONS�len)rL�basenamerIZwheelZwin_baser0�platformZextr r r!rEps.



rEcCstt|�tjj|�|�S)zEYield possible egg or source distribution objects based on a filename)rEr�osr@rQ)�filenamerIr r r!�distros_for_filename�srUc
cs�|jd�}|r.tdd�|dd�D��r.dSxNtdt|�d�D]8}t||dj|d|��dj||d��|||d�VqBWdS)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!
    rKcss|]}tjd|�VqdS)z	py\d\.\d$N)�rerG)�.0�pr r r!�	<genexpr>�sz(interpret_distro_name.<locals>.<genexpr>r4Nr2)�
py_versionrDrR)r;�any�rangerPr�join)rLrQrIrZrDrRr=rXr r r!r�s
 $cst���fdd��}|S)zs
    Wrap a function returning an iterable such that the resulting iterable
    only ever yields unique items.
    cst�||��S)N)r)�args�kwargs)�funcr r!�wrapper�szunique_values.<locals>.wrapper)r)r`rar )r`r!�
unique_values�srbz(<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>ccs�xvtj|�D]h}|j�\}}tttj|j�jd���}d|ksFd|krx,t	j|�D]}t
jj|t
|jd���VqRWqWxHdD]@}|j|�}|d	kr~t	j||�}|r~t
jj|t
|jd���Vq~WdS)
zEFind rel="homepage" and rel="download" links in `page`, yielding URLs�,Zhomepager3r2�
<th>Home Page�<th>Download URLN)rdrer6)�REL�finditer�groups�set�map�str�stripr+r;�HREFr8r�urljoin�
htmldecoderH�find�search)r<�pagerG�tagZrelZrels�posr r r!�find_external_links�s"

ruc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�ContentCheckerzP
    A null content checker that defines the interface for checking content
    cCsdS)z3
        Feed a block of data to the hash.
        Nr )�self�blockr r r!�feed�szContentChecker.feedcCsdS)zC
        Check the hash. Return False if validation fails.
        Tr )rwr r r!�is_valid�szContentChecker.is_validcCsdS)zu
        Call reporter with information about the checker (hash name)
        substituted into the template.
        Nr )rw�reporter�templater r r!�report�szContentChecker.reportN)�__name__�
__module__�__qualname__�__doc__ryrzr}r r r r!rv�srvc@sBeZdZejd�Zdd�Zedd��Zdd�Z	dd	�Z
d
d�ZdS)
�HashCheckerzK(?P<hash_name>sha1|sha224|sha384|sha256|sha512|md5)=(?P<expected>[a-f0-9]+)cCs||_tj|�|_||_dS)N)�	hash_name�hashlib�new�hash�expected)rwr�r�r r r!�__init__�szHashChecker.__init__cCs>tjj|�d}|st�S|jj|�}|s0t�S|f|j��S)z5Construct a (possibly null) ContentChecker from a URLr2r6)r8rr9rv�patternrq�	groupdict)�clsr<rBrGr r r!�from_urlszHashChecker.from_urlcCs|jj|�dS)N)r��update)rwrxr r r!ryszHashChecker.feedcCs|jj�|jkS)N)r�Z	hexdigestr�)rwr r r!rzszHashChecker.is_validcCs||j}||�S)N)r�)rwr{r|�msgr r r!r}s
zHashChecker.reportN)r~rr�rV�compiler�r��classmethodr�ryrzr}r r r r!r��sr�csPeZdZdZdOdd�Z�fdd	�ZdPdd�ZdQd
d�ZdRdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dSdd�Zdd�ZdT�fdd �	Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�ZdUd+d,�ZdVd-d.�Zd/d0�Zd1Zd2d3�Zd4d5�ZdWd6d7�Zd8d9�Zd:d;�Zd<d=�Zd>d?�Z d@dA�Z!e"dXdBdC��Z#dDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'dLdM�Z(�Z)S)Yrz;A distribution index that scans web pages for download URLs�https://pypi.org/simple/�*NTcOsltj|f|�|�|dd|jd��|_i|_i|_i|_tjdj	t
t|���j|_
g|_tjj|_dS)Nr1�|)rr�r,�	index_url�scanned_urls�fetched_urls�
package_pagesrVr�r]rjrrG�allows�to_scanr8�request�urlopen�opener)rwr�ZhostsZ	ca_bundleZ
verify_sslr^�kwr r r!r�szPackageIndex.__init__cs0yt|j�Wntk
r"dSXt�j|�S)N)rrN�	Exception�super�add)rwrJ)�	__class__r r!r�)s
zPackageIndex.addFcCs�||jkr|rdSd|j|<t|�s4|j|�dStt|��}|r^|j|�sRdS|jd|�|sr|sr||jkr�tt|j	|��dS|j|�s�d|j|<dS|j
d|�d|j|<d}|j|||�}|dkr�dSt|t
jj�o�|jdk�r�|j
d|j�d|j|j<d|jjd	d
�j�k�r.|j�dS|j}|j�}t|t��s|t|t
jj��r^d}n|jjd��pnd}|j|d
�}|j�x6tj|�D](}	t
jj|t|	j d���}
|j!|
��q�W|j"|j#��r�t$|dd�dk�r�|j%||�}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�htmlzcontent-type�zlatin-1�charset�ignorer2�codei�)&r��
URL_SCHEME�process_filename�listr�url_ok�debugr�rjr��info�open_url�
isinstancer8�error�	HTTPErrorr�r�r<�headers�getr+�close�readrkZ	get_param�decodermrgrrnrorH�process_urlr-r��getattr�
process_index)rwr<Zretrieve�dists�tmpl�fr/rrr�rG�linkr r r!r�2sT





 zPackageIndex.process_urlcCs�tjj|�s|jd|�dStjj|�rd|rdtjj|�}x(tj|�D]}|jtjj||�d�qFWt	|�}|r�|j
d|�tt|j
|��dS)Nz
Not found: %sTz	Found: %s)rSr@�exists�warn�isdir�realpath�listdirr�r]rUr�r�rjr�)rw�fn�nestedr@�itemr�r r r!r�gszPackageIndex.process_filenamecCsbt|�}|o|jd�j�dk}|s8|jtjj|�d�r<dSd}|rRt||��n|j||�dS)Nr2�fileTzN
Note: Bypassing %s (disallowed host; see http://bit.ly/2hrImnY for details).
)	r�rHr+r�r8rr9rr�)rwr<Zfatal�s�is_filer�r r r!r�wszPackageIndex.url_okcCs2ttjj|�}dd�|D�}ttj|j|��dS)Ncss0|](}tj|�D]}|jd�r||fVqqdS)z	.egg-linkN)rSr�r,)rWr@�entryr r r!rY�sz.PackageIndex.scan_egg_links.<locals>.<genexpr>)�filterrSr@r�r��	itertools�starmap�
scan_egg_link)rwZsearch_path�dirsZ	egg_linksr r r!�scan_egg_links�szPackageIndex.scan_egg_linksc
Cs�ttjj||���}ttdttj|���}WdQRXt	|�dkrDdS|\}}x>t
tjj||��D](}tjj|f|��|_t|_
|j|�q`WdS)Nr4)�openrSr@r]r�r�rjrkrlrPr	rLrrDr�)rwr@r�Z	raw_lines�linesZegg_pathZ
setup_pathrJr r r!r��s zPackageIndex.scan_egg_linkcCs�d}|j|j�s|Stttjj|t|j�d�jd���}t|�dksRd|dkrV|St	|d�}t
|d�}d|jj|j
�i�|<t|�t|�fS)Nr1r4r5r2rT)NN)r-r�r�rjr8rr:rPr;r
rr��
setdefaultr+r)rwr�ZNO_MATCH_SENTINELr=�pkg�verr r r!�_scan�s"zPackageIndex._scanc	
Cs�xJtj|�D]<}y"|jtjj|t|jd����Wqtk
rFYqXqW|j|�\}}|sbdSxXt	||�D]J}t
|�\}}|jd�r�|r�|r�|d||f7}n
|j|�|j
|�qnWtjdd�|�S)z#Process the contents of a PyPI pager2r�z.pyz
#egg=%s-%scSsd|jddd�S)Nz<a href="%s#md5=%s">%s</a>r2�r4)rH)�mr r r!�<lambda>�sz,PackageIndex.process_index.<locals>.<lambda>)rmrgr�r8rrnrorHrrurCr,�need_version_info�scan_url�PYPI_MD5�sub)	rwr<rrrGr�r��new_urlr/�fragr r r!r��s""

zPackageIndex.process_indexcCs|jd|�dS)NzPPage at %s links to .py file(s) without version info; an index scan is required.)�scan_all)rwr<r r r!r��szPackageIndex.need_version_infocGs:|j|jkr*|r |j|f|��|jd�|j|j�dS)Nz6Scanning index of all packages (this may take a while))r�r�r�r�r�)rwr�r^r r r!r��szPackageIndex.scan_allcCs~|j|j|jd�|jj|j�s:|j|j|jd�|jj|j�sR|j|�x&t|jj|jf��D]}|j|�qhWdS)Nr1)	r�r��unsafe_namer�r��keyrM�not_found_in_indexr�)rw�requirementr<r r r!�
find_packages�s
zPackageIndex.find_packagescsR|j�|j|�x,||jD]}||kr.|S|jd||�qWtt|�j||�S)Nz%s does not match %s)�prescanr�r�r�r�r�obtain)rwr�Z	installerrJ)r�r r!r��s
zPackageIndex.obtaincCsL|j|jd|�|j�sH|j�tj|�td|jjtj	j
|�f��dS)z-
        checker is a ContentChecker
        zValidating %%s checksum for %sz7%s validation failed for %s; possible download problem?N)r}r�rzr�rS�unlinkrr�r.r@rQ)rw�checkerrT�tfpr r r!�
check_hash�s

zPackageIndex.check_hashcCsTxN|D]F}|jdks4t|�s4|jd�s4tt|��r@|j|�q|jj|�qWdS)z;Add `urls` to the list that will be prescanned for searchesNzfile:)r�r�r-r�rr��append)rwZurlsr<r r r!�add_find_linkss



zPackageIndex.add_find_linkscCs"|jrtt|j|j��d|_dS)z7Scan urls scheduled for prescanning (e.g. --find-links)N)r�r�rjr�)rwr r r!r�szPackageIndex.prescancCs<||jr|jd}}n|jd}}|||j�|j�dS)Nz#Couldn't retrieve index page for %rz3Couldn't find index page for %r (maybe misspelled?))r�r�r�r�r�)rwr��methr�r r r!r�s
zPackageIndex.not_found_in_indexcCs~t|t�sjt|�}|rR|j|jd�||�}t|�\}}|jd�rN|j|||�}|Stj	j
|�rb|St|�}t|j
||�dd�S)aLocate 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.
        r2z.pyrLN)r�r
r��
_download_urlrHrCr,�	gen_setuprSr@r�r"r��fetch_distribution)rwr�tmpdirr>�foundr/rBr r r!r3#s

zPackageIndex.downloadc	s��jd|�i�d}d
�����fdd�	}|rH�j��j|�||�}|r`|dk	r`|||�}|dkr��jdk	rz�j�||�}|dkr�|r��j|�||�}|dkrˆjd�r�dp�d|�n�jd|�|j|jd	�SdS)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 %sNcs�|dkr�}x�||jD]t}|jtkrJ�rJ|�kr�jd|�d�|<q||ko`|jtkp`�}|r�j|j��}||_tj	j
|j�r|SqWdS)Nz&Skipping development or system egg: %sr2)r�rDrr�rr3rL�download_locationrSr@r�)Zreq�envrJZtest�loc)�
develop_okrw�skipped�sourcer�r r!rp]s z-PackageIndex.fetch_distribution.<locals>.findz:No local packages or working download links found for %s%sza source distribution of r�zBest match: %s)rL)N)r�r�r�r�r�Zcloner�)	rwr�r��
force_scanr�r�Zlocal_indexrJrpr )r�rwr�r�r�r!r�Es0




zPackageIndex.fetch_distributioncCs"|j||||�}|dk	r|jSdS)a3Obtain 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�rL)rwr�r�r�r�rJr r r!�fetch�szPackageIndex.fetchc

Cs�tj|�}|r*dd�t||jd�d�D�p,g}t|�dkr�tjj|�}tjj|�|kr�tjj	||�}ddl
m}|||�s�tj
||�|}ttjj	|d�d��2}	|	jd|dj|djtjj|�df�WdQRX|S|r�td	||f��ntd
��dS)NcSsg|]}|jr|�qSr )rN)rW�dr r r!�
<listcomp>�sz*PackageIndex.gen_setup.<locals>.<listcomp>r2r)�samefilezsetup.py�wzIfrom setuptools import setup
setup(name=%r, version=%r, py_modules=[%r])
z�Can't unambiguously interpret project/version identifier %r; any dashes in the name or version should be escaped using underscores. %rzpCan't process plain .py files without an '#egg=name-version' suffix to enable automatic setup script generation.)rFrGrrHrPrSr@rQ�dirnamer]Zsetuptools.command.easy_installr��shutilZcopy2r��writerMrN�splitextr)
rwrTrBr�rGr�rQ�dstr�r�r r r!r��s2

 zPackageIndex.gen_setupi cCs|jd|�d}z�tj|�}|j|�}t|tjj�rJtd||j	|j
f��|j�}d}|j}d}d|kr�|jd�}	t
tt|	��}|j|||||�t|d��Z}
xD|j|�}|r�|j|�|
j|�|d7}|j|||||�q�Pq�W|j|||
�WdQRX|S|�r|j�XdS)	NzDownloading %szCan't download %s: %s %srr2zcontent-lengthzContent-Length�wbr6)r�r�r�r�r�r8r�r�rr�r��dl_blocksizeZget_all�maxrj�int�
reporthookr�r�ryrr�r�)rwr<rT�fpr�r��blocknum�bs�sizeZsizesr�rxr r r!�_download_to�s:





zPackageIndex._download_tocCsdS)Nr )rwr<rTr	Zblksizerr r r!r�szPackageIndex.reporthookcCs�|jd�rt|�Syt||j�Sttjjfk
r�}z@djdd�|j	D��}|r`|j
||�ntd||f�|�WYdd}~X�ntj
jk
r�}z|Sd}~Xn�tj
jk
r�}z.|r�|j
||j�ntd||jf�|�WYdd}~Xn�tjjk
�rB}z0|�r|j
||j�ntd||jf�|�WYdd}~XnTtjjtj
fk
�r�}z,|�rr|j
||�ntd||f�|�WYdd}~XnXdS)Nzfile:� cSsg|]}t|��qSr )rk)rW�argr r r!r��sz)PackageIndex.open_url.<locals>.<listcomp>z%s %szDownload error for %s: %sz;%s returned a bad status line. The server might be down, %s)r-�
local_open�open_with_authr�r�http�client�
InvalidURLr]r^r�rr8r�r�ZURLError�reasonZ
BadStatusLine�lineZ
HTTPException�socket)rwr<Zwarning�vr�r r r!r��s8
$ zPackageIndex.open_urlcCs�t|�\}}|r4x&d|kr0|jdd�jdd�}qWnd}|jd�rN|dd�}tjj||�}|dksn|jd	�rz|j||�S|d
ks�|jd�r�|j||�S|jd�r�|j	||�S|d
kr�t
jjt
j
j|�d�S|j|d�|j||�SdS)Nz..�.�\�_Z__downloaded__z.egg.zipr'Zsvnzsvn+Zgitzgit+zhg+r�r4Tr*)rC�replacer,rSr@r]r-�
_download_svn�
_download_git�_download_hgr8r��url2pathnamerr9r��_attempt_download)rwr>r<r�r.rBrTr r r!r�s$


zPackageIndex._download_urlcCs|j|d�dS)NT)r�)rwr<r r r!r�1szPackageIndex.scan_urlcCs6|j||�}d|jdd�j�kr.|j|||�S|SdS)Nr�zcontent-typer�)rr�r+�_download_html)rwr<rTr�r r r!r 4szPackageIndex._attempt_downloadcCslt|�}x@|D]8}|j�rtjd|�rD|j�tj|�|j||�SPqW|j�tj|�td|��dS)Nz <title>([^- ]+ - )?Revision \d+:zUnexpected HTML page found at )	r�rlrVrqr�rSr�rr)rwr<r�rTr�rr r r!r!;s


zPackageIndex._download_htmlcCs
tjdt�|jdd�d}d}|j�jd�r�d|kr�tjj|�\}}}}}}	|r�|jd�r�d	|d
d�kr�|d
d�jd	d�\}}t	|�\}
}|
r�d|
kr�|
jdd�\}}
d||
f}nd
|
}|}||||||	f}tjj
|�}|jd||�tj
d|||f�|S)Nz"SVN download support is deprecatedr5r2rr�zsvn:�@z//r1r4�:z --username=%s --password=%sz --username=z'Doing subversion checkout from %s to %szsvn checkout%s -q %s %s)�warningsr��UserWarningr;r+r-r8rr9�
_splituser�
urlunparser�rS�system)rwr<rTZcredsr>�netlocr@rX�qr��auth�host�userZpwr=r r r!rJs& zPackageIndex._download_svncCsptjj|�\}}}}}|jdd�d}|jdd�d}d}d|krR|jdd�\}}tjj||||df�}||fS)N�+r2r5rr"r�r6)r8rZurlsplitr;�rsplitZ
urlunsplit)r<�
pop_prefixr>r)r@rAr��revr r r!�_vcs_split_rev_from_url`sz$PackageIndex._vcs_split_rev_from_urlcCsl|jdd�d}|j|dd�\}}|jd||�tjd||f�|dk	rh|jd|�tjd	||f�|S)
Nr5r2rT)r0zDoing git clone from %s to %szgit clone --quiet %s %szChecking out %szgit -C %s checkout --quiet %s)r;r2r�rSr()rwr<rTr1r r r!rrs
zPackageIndex._download_gitcCsl|jdd�d}|j|dd�\}}|jd||�tjd||f�|dk	rh|jd|�tjd	||f�|S)
Nr5r2rT)r0zDoing hg clone from %s to %szhg clone --quiet %s %szUpdating to %szhg --cwd %s up -C -r %s -q)r;r2r�rSr()rwr<rTr1r r r!r�s
zPackageIndex._download_hgcGstj|f|��dS)N)rr�)rwr�r^r r r!r��szPackageIndex.debugcGstj|f|��dS)N)rr�)rwr�r^r r r!r��szPackageIndex.infocGstj|f|��dS)N)rr�)rwr�r^r r r!r��szPackageIndex.warn�r�)r�r3NT)F)F)F)N)N)FFFN)FF)N)F)*r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r3r�r�r�rrrr�r�r�r r!r�staticmethodr2rrr�r�r��
__classcell__r r )r�r!rsP
	
5




		
#
J

)$
#z!&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?cCs|jd�}tj|�S)Nr)rHr�Zunescape)rGZwhatr r r!�
decode_entity�s
r6cCs
tt|�S)a
    Decode HTML entities in the given text.

    >>> htmldecode(
    ...     'https://../package_name-0.1.2.tar.gz'
    ...     '?tokena=A&amp;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_subr6)�textr r r!ro�s	rocs�fdd�}|S)Ncs��fdd�}|S)Ncs.tj�}tj��z
�||�Stj|�XdS)N)rZgetdefaulttimeoutZsetdefaulttimeout)r^r_Zold_timeout)r`�timeoutr r!�_socket_timeout�s


z@socket_timeout.<locals>._socket_timeout.<locals>._socket_timeoutr )r`r:)r9)r`r!r:�sz'socket_timeout.<locals>._socket_timeoutr )r9r:r )r9r!�socket_timeout�sr;cCs2tjj|�}|j�}tj|�}|j�}|jdd�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�)r8rr:�encode�base64Z	b64encoder�r)r+Zauth_sZ
auth_bytesZ
encoded_bytesZencodedr r r!�_encode_auth�s

r?c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
Credentialz:
    A username/password pair. Use like a namedtuple.
    cCs||_||_dS)N)�username�password)rwrArBr r r!r��szCredential.__init__ccs|jV|jVdS)N)rArB)rwr r r!�__iter__�szCredential.__iter__cCsdt|�S)Nz%(username)s:%(password)s)�vars)rwr r r!�__str__�szCredential.__str__N)r~rr�r�r�rCrEr r r r!r@�sr@c@s0eZdZdd�Zedd��Zdd�Zdd�Zd	S)
�
PyPIConfigcCsPtjdddgd�}tjj||�tjjtjjd�d�}tjj	|�rL|j
|�dS)z%
        Load from ~/.pypirc
        rArB�
repositoryr��~z.pypircN)�dict�fromkeys�configparser�RawConfigParserr�rSr@r]�
expanduserr�r�)rw�defaultsZrcr r r!r��s
zPyPIConfig.__init__cs&�fdd��j�D�}tt�j|��S)Ncs g|]}�j|d�j�r|�qS)rG)r�rl)rW�section)rwr r!r��sz2PyPIConfig.creds_by_repository.<locals>.<listcomp>)ZsectionsrIrj�_get_repo_cred)rwZsections_with_repositoriesr )rwr!�creds_by_repository�szPyPIConfig.creds_by_repositorycCs6|j|d�j�}|t|j|d�j�|j|d�j��fS)NrGrArB)r�rlr@)rwrOZrepor r r!rP�szPyPIConfig._get_repo_credcCs*x$|jj�D]\}}|j|�r|SqWdS)z�
        If the URL indicated appears to be a repository defined in this
        config, return the credential for that repository.
        N)rQ�itemsr-)rwr<rG�credr r r!�find_credentials
zPyPIConfig.find_credentialN)r~rr�r��propertyrQrPrTr r r r!rF�s	rFcCs<tjj|�}|\}}}}}}|jd�r2tjjd��|d
krHt|�\}	}
nd}	|	s�t�j	|�}|r�t
|�}	|j|f}tj
d|��|	r�dt|	�}	||
||||f}
tjj|
�}tjj|�}|jd|	�ntjj|�}|jd	t�||�}|	�r8tjj|j�\}}}}}}||k�r8||
k�r8||||||f}
tjj|
�|_|S)z4Open a urllib2 request, handling HTTP authenticationr#znonnumeric port: ''r�httpsN�*Authenticating as %s for %s (from .pypirc)zBasic Z
Authorizationz
User-Agent)rrV)rW)r8rr9r,rrrr&rFrTrkrArr�r?r'r�ZRequestZ
add_header�
user_agentr<)r<r�Zparsedr>r)r@�paramsrAr�r+ZaddressrSr�r=r�r�r�s2Zh2Zpath2Zparam2Zquery2Zfrag2r r r!r
s8

rcCs |jd�\}}}|r|nd|fS)zNsplituser('user[:passwd]@host[:port]')
    --> 'user[:passwd]', 'host[:port]'.r"N)�
rpartition)r,r-Zdelimr r r!r&<sr&cCs|S)Nr )r<r r r!�
fix_sf_urlGsr\cCstjj|�\}}}}}}tjj|�}tjj|�r<tjj|�S|j	d�r�tjj
|�r�g}x�tj|�D]b}	tjj||	�}
|	dkr�t
|
d��}|j�}WdQRXPntjj
|
�r�|	d7}	|jdj|	d��qbWd}
|
j|dj|�d	�}d\}}n
d\}}}ddi}tj|�}tjj|||||�S)z7Read a local path, with special support for directoriesr1z
index.html�rNz<a href="{name}">{name}</a>)r.zB<html><head><title>{url}</title></head><body>{files}</body></html>r<)r<�files���OK��Path not found�	Not foundzcontent-typez	text/html)r_r`)rarbrc)r8rr9r�rrSr@�isfiler�r,r�r�r]r�r�r��format�io�StringIOr�r�)r<r>r?r@ZparamrAr�rTr^r��filepathrZbodyr��status�messager�Zbody_streamr r r!rKs,


r)N)N)N)r)Zr��sysrSrVrfr�rr>r�r�r$rKr�Zhttp.clientrZurllib.parser8Zurllib.requestZurllib.error�	functoolsrrZ
pkg_resourcesrrrrrrr	r
rrr
rrrZ	distutilsrZdistutils.errorsrZfnmatchrZsetuptools.wheelrZ setuptools.extern.more_itertoolsrr�rF�Irmr�rGr�r;rO�__all__Z_SOCKET_TIMEOUTZ_tmplre�version_inforXr"rrCrrErUrrbrfrurvr�rr�r7r6ror;r?r@rLrFr�r�rr&r\rr r r r!�<module>s�@
	

!
!
!

&/

Youez - 2016 - github.com/yon3zu
LinuXploit