Viewing File: /opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-35.pyc



t_JR@sddlZddlZddlZddlZddlZddlZyddlmZWn"ek
rddl	mZYnXddl
mZddlm
Z
mZmZmZmZmZddlmZmZmZejeZdZdZGd	d
d
eZdS)N)Thread)DistlibException)HTTPBasicAuthHandlerRequestHTTPPasswordMgrurlparsebuild_openerstring_types)cached_propertyzip_dirServerProxyzhttps://pypi.org/pypipypic@seZdZdZdZdddZddZdd	Zd
dZdd
Z	ddZ
ddZdddZdddZ
dddZdddddddZddZdddZdd d!Zddd"d#Zd$d%Zd&d'Zdd(d)ZdS)*PackageIndexzc
    This class represents a package index compatible with PyPI, the Python
    Package Index.
    s.----------ThIs_Is_tHe_distlib_index_bouNdaRY_$NcCs|p	t|_|jt|j\}}}}}}|sX|sX|sX|dkrktd|jd|_d|_d|_d|_t	t
jdh}x^d
D]V}	y;tj
|	dgd	|d
|}
|
dkr|	|_PWqtk
rYqXqWWdQRXdS)z
        Initialise an instance.

        :param url: The URL of the index. If not specified, the URL for PyPI is
                    used.
        httphttpszinvalid repository: %sNwgpggpg2z	--versionstdoutstderrr)rr)rr)
DEFAULT_INDEXurlread_configurationrrpassword_handlerssl_verifierrgpg_homeopenosdevnull
subprocess
check_callOSError)selfrschemenetlocpathparamsqueryfragZsinksrcr,/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-1.el7.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/distlib/index.py__init__$s&
!				
		
zPackageIndex.__init__cCs3ddlm}ddlm}|}||S)zs
        Get the distutils command for interacting with PyPI configurations.
        :return: the command.
        r)Distribution)
PyPIRCCommand)distutils.corer/distutils.configr0)r#r/r0dr,r,r-_get_pypirc_commandAs	z PackageIndex._get_pypirc_commandcCsy|j}|j|_|j}|jd|_|jd|_|jdd|_|jd|j|_dS)z
        Read the PyPI access configuration as supported by distutils, getting
        PyPI to do the actual work. This populates ``username``, ``password``,
        ``realm`` and ``url`` attributes from the configuration.
        usernamepasswordrealmr
repositoryN)r4rr8_read_pypircgetr5r6r7)r#ccfgr,r,r-rKszPackageIndex.read_configurationcCs0|j|j}|j|j|jdS)z
        Save the PyPI access configuration. You must have set ``username`` and
        ``password`` attributes before calling this method.

        Again, distutils is used to do the actual work.
        N)check_credentialsr4
_store_pypircr5r6)r#r;r,r,r-save_configurationZs
zPackageIndex.save_configurationcCs|jdks|jdkr*tdt}t|j\}}}}}}|j|j||j|jt||_	dS)zp
        Check that ``username`` and ``password`` have been set, and raise an
        exception if not.
        Nz!username and password must be set)
r5r6rrrradd_passwordr7rr)r#Zpm_r%r,r,r-r=fs	!zPackageIndex.check_credentialscCs|j|j|j}d|d<|j|jg}|j|}d|d<|j|jg}|j|S)aq
        Register a distribution on PyPI, using the provided metadata.

        :param metadata: A :class:`Metadata` instance defining at least a name
                         and version number for the distribution to be
                         registered.
        :return: The HTTP response received from PyPI upon submission of the
                request.
        verifyz:actionsubmit)r=validatetodictencode_requestitemssend_request)r#metadatar3requestresponser,r,r-registerrs




zPackageIndex.registercCsaxP|j}|sP|jdj}|j|tjd||fqW|jdS)ar
        Thread runner for reading lines of from a subprocess into a buffer.

        :param name: The logical name of the stream (used for logging only).
        :param stream: The stream to read from. This will typically a pipe
                       connected to the output stream of a subprocess.
        :param outbuf: The list to append the read lines to.
        zutf-8z%s: %sN)readlinedecoderstripappendloggerdebugclose)r#namestreamZoutbufr*r,r,r-_readers	
zPackageIndex._readercCs|jdddg}|dkr*|j}|rC|jd|g|dk	re|jdddgtj}tjj|tjj|d	}|jd
dd|d
||gt	j
ddj|||fS)a
        Return a suitable command for signing a file.

        :param filename: The pathname to the file to be signed.
        :param signer: The identifier of the signer of the file.
        :param sign_password: The passphrase for the signer's
                              private key used for signing.
        :param keystore: The path to a directory which contains the keys
                         used in verification. If not specified, the
                         instance's ``gpg_home`` attribute is used instead.
        :return: The signing command as a list suitable to be
                 passed to :class:`subprocess.Popen`.
        z--status-fd2z--no-ttyNz	--homedirz--batchz--passphrase-fd0z.ascz
--detach-signz--armorz--local-userz--outputzinvoking: %s )rrextendtempfilemkdtemprr&joinbasenamerQrR)r#filenamesigner
sign_passwordkeystorecmdtdZsfr,r,r-get_sign_commands	%zPackageIndex.get_sign_commandc	Csdtjdtji}|dk	r1tj|d<g}g}tj||}td|jdd|j|f}|jtd|jdd|j|f}|j|dk	r|jj	||jj
|j|j|j|j
||fS)a
        Run a command in a child process , passing it any input data specified.

        :param cmd: The command to run.
        :param input_data: If specified, this must be a byte string containing
                           data to be sent to the child process.
        :return: A tuple consisting of the subprocess' exit code, a list of
                 lines read from the subprocess' ``stdout``, and a list of
                 lines read from the subprocess' ``stderr``.
        rrNstdintargetargs)r PIPEPopenrrVrstartrrfwriterSwaitr]
returncode)	r#rcZ
input_datakwargsrrpt1t2r,r,r-run_commands$	
$
$




zPackageIndex.run_commandc
Csb|j||||\}}|j||jd\}}}	|dkr^td||S)aR
        Sign a file.

        :param filename: The pathname to the file to be signed.
        :param signer: The identifier of the signer of the file.
        :param sign_password: The passphrase for the signer's
                              private key used for signing.
        :param keystore: The path to a directory which contains the keys
                         used in signing. If not specified, the instance's
                         ``gpg_home`` attribute is used instead.
        :return: The absolute pathname of the file where the signature is
                 stored.
        zutf-8rz&sign command failed with error code %s)rersencoder)
r#r_r`rarbrcsig_filer+rrr,r,r-	sign_files	
zPackageIndex.sign_filesdistsourcecCs|jtjj|s,td||j|j}d}	|r|jsgtj	dn|j
||||}	t|d}
|
j}WdQRXt
j|j}t
j|j}
|jddddd	|d
|d|d|
id
tjj||fg}|	rt|	d}
|
j}WdQRX|jdtjj|	|ftjtjj|	|j|j|}|j|S)a
        Upload a release file to the index.

        :param metadata: A :class:`Metadata` instance defining at least a name
                         and version number for the file to be uploaded.
        :param filename: The pathname of the file to be uploaded.
        :param signer: The identifier of the signer of the file.
        :param sign_password: The passphrase for the signer's
                              private key used for signing.
        :param filetype: The type of the file being uploaded. This is the
                        distutils command which produced that file, e.g.
                        ``sdist`` or ``bdist_wheel``.
        :param pyversion: The version of Python which the release relates
                          to. For code compatible with any Python, this would
                          be ``source``, otherwise it would be e.g. ``3.2``.
        :param keystore: The path to a directory which contains the keys
                         used in signing. If not specified, the instance's
                         ``gpg_home`` attribute is used instead.
        :return: The HTTP response received from PyPI upon submission of the
                request.
        z
not found: %sNz)no signing program available - not signedrbz:actionZfile_uploadZprotocol_version1filetype	pyversion
md5_digest
sha256_digestcontentZ
gpg_signature)r=rr&existsrrDrErrQwarningrvrreadhashlibmd5	hexdigestsha256updater^rPshutilrmtreedirnamerFrGrH)r#rIr_r`rar{r|rbr3rufZ	file_datar}r~filesZsig_datarJr,r,r-upload_files>

		

zPackageIndex.upload_filec
Cs|jtjj|s,td|tjj|d}tjj|sctd||j|j|j	}}t
|j}d	d|fd|fg}d||fg}|j||}	|j
|	S)
a2
        Upload documentation to the index.

        :param metadata: A :class:`Metadata` instance defining at least a name
                         and version number for the documentation to be
                         uploaded.
        :param doc_dir: The pathname of the directory which contains the
                        documentation. This should be the directory that
                        contains the ``index.html`` for the documentation.
        :return: The HTTP response received from PyPI upon submission of the
                request.
        znot a directory: %rz
index.htmlz
not found: %r:action
doc_uploadrTversionr)rr)r=rr&isdirrr]rrDrTrrgetvaluerFrH)
r#rIZdoc_dirfnrTrzip_datafieldsrrJr,r,r-upload_documentation(s

z!PackageIndex.upload_documentationcCsv|jdddg}|dkr*|j}|rC|jd|g|jd||gtjddj||S)	a|
        Return a suitable command for verifying a file.

        :param signature_filename: The pathname to the file containing the
                                   signature.
        :param data_filename: The pathname to the file containing the
                              signed data.
        :param keystore: The path to a directory which contains the keys
                         used in verification. If not specified, the
                         instance's ``gpg_home`` attribute is used instead.
        :return: The verifying command as a list suitable to be
                 passed to :class:`subprocess.Popen`.
        z--status-fdrWz--no-ttyNz	--homedirz--verifyzinvoking: %srY)rrrZrQrRr])r#signature_filename
data_filenamerbrcr,r,r-get_verify_commandDs	zPackageIndex.get_verify_commandcCsh|jstd|j|||}|j|\}}}|dkr^td||dkS)a6
        Verify a signature for a file.

        :param signature_filename: The pathname to the file containing the
                                   signature.
        :param data_filename: The pathname to the file containing the
                              signed data.
        :param keystore: The path to a directory which contains the keys
                         used in verification. If not specified, the
                         instance's ``gpg_home`` attribute is used instead.
        :return: True if the signature was verified, else False.
        z0verification unavailable because gpg unavailablerrz(verify command failed with error code %s)rr)rrrrs)r#rrrbrcr+rrr,r,r-verify_signature\s		
zPackageIndex.verify_signaturecCs|dkr"d}tjdnMt|ttfrF|\}}nd}tt|}tjd|t|d}|jt	|}z|j
}	d}
d}d}d}
d	|	krt|	d
}|r||
|
|xj|j|
}|sP|t
|7}|j||r8|j||
d7}
|r||
|
|qWWd|jXWdQRX|dkr||krtd||f|r|j}||krtd||||ftjd
|dS)a
        This is a convenience method for downloading a file from an URL.
        Normally, this will be a file from the index, though currently
        no check is made for this (i.e. a file can be downloaded from
        anywhere).

        The method is just like the :func:`urlretrieve` function in the
        standard library, except that it allows digest computation to be
        done during download and checking that the downloaded data
        matched any expected value.

        :param url: The URL of the file to be downloaded (assumed to be
                    available via an HTTP GET request).
        :param destfile: The pathname where the downloaded file is to be
                         saved.
        :param digest: If specified, this must be a (hasher, value)
                       tuple, where hasher is the algorithm used (e.g.
                       ``'md5'``) and ``value`` is the expected value.
        :param reporthook: The same as for :func:`urlretrieve` in the
                           standard library.
        NzNo digest specifiedrzDigest specified: %swbi rrzcontent-lengthzContent-Lengthz1retrieval incomplete: got only %d out of %d bytesz.%s digest mismatch for %s: expected %s, got %szDigest verified: %s)rQrR
isinstancelisttuplegetattrrrrHrinfointrlenrlrrSrr)r#rdestfiledigest
reporthookZdigesterZhasherZdfpZsfpheaders	blocksizesizerblocknumblockactualr,r,r-
download_fileusV


zPackageIndex.download_filecCsQg}|jr|j|j|jr8|j|jt|}|j|S)z
        Send a standard library :class:`Request` to PyPI and return its
        response.

        :param req: The request to send.
        :return: The HTTP response from PyPI (a standard library HTTPResponse).
        )rrPrr	r)r#reqhandlersopenerr,r,r-rHs		zPackageIndex.send_requestcCs7g}|j}xv|D]n\}}t|ttfs@|g}xA|D]9}|jd|d|jdd|jdfqGWqWxG|D]?\}}	}
|jd|d||	fjdd|
fqW|jd|ddfdj|}d|}d|d	tt|i}
t	|j
||
S)
a&
        Encode fields and files for posting to an HTTP server.

        :param fields: The fields to send as a list of (fieldname, value)
                       tuples.
        :param files: The files to send as a list of (fieldname, filename,
                      file_bytes) tuple.
        s--z)Content-Disposition: form-data; name="%s"zutf-8z8Content-Disposition: form-data; name="%s"; filename="%s"s
smultipart/form-data; boundary=zContent-typezContent-length)boundaryrrrrZrtr]strrrr)r#rrpartsrkvaluesvkeyr_valuebodyctrr,r,r-rFs2		


zPackageIndex.encode_requestcCs_t|trd|i}t|jdd}z|j||pEdSWd|dXdS)NrTtimeoutg@andrS)rr
r
rsearch)r#ZtermsoperatorZ	rpc_proxyr,r,r-rszPackageIndex.search)__name__
__module____qualname____doc__rr.r4rr?r=rLrVrersrvrrrrrrHrFrr,r,r,r-rs*
#8M+r)rloggingrrr r[	threadingrImportErrordummy_threadingrcompatrrrrr	r
utilrrr
	getLoggerrrQr
DEFAULT_REALMobjectrr,r,r,r-<module>s 
.
Back to Directory File Manager