Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
B

Úú˜Ùسiã@sÄddlZddlZddlZddlZddlZddlZyddlmZWn ek
r`ddl	mZYnXddl
mZddlm
Z
mZmZmZmZmZddlmZmZe e¡ZdZdZGd	d
„d
eƒZdS)éN)ÚThreadé)ÚDistlibException)ÚHTTPBasicAuthHandlerÚRequestÚHTTPPasswordMgrÚurlparseÚbuild_openerÚstring_types)Úzip_dirÚServerProxyzhttps://pypi.org/pypiÚpypic@s¶eZdZdZdZd*dd„Zdd„Zdd	„Zd
d„Zdd
„Z	dd„Z
dd„Zd+dd„Zd,dd„Z
d-dd„Zd.dd„Zdd„Zd/dd„Zd0d d!„Zd1d"d#„Zd$d%„Zd&d'„Zd2d(d)„ZdS)3ÚPackageIndexzc
    This class represents a package index compatible with PyPI, the Python
    Package Index.
    s.----------ThIs_Is_tHe_distlib_index_bouNdaRY_$Nc
CsÊ|pt|_| ¡t|jƒ\}}}}}}|s<|s<|s<|dkrJtd|jƒ‚d|_d|_d|_d|_t	t
jdƒR}xJdD]B}	y(tj
|	dg||d}
|
dkr |	|_PWqvtk
r¶YqvXqvWWdQRXdS)	z”
        Initialise an instance.

        :param url: The URL of the index. If not specified, the URL for PyPI is
                    used.
        )ÚhttpÚhttpszinvalid repository: %sNÚw)ÚgpgZgpg2z	--version)ÚstdoutÚstderrr)Ú
DEFAULT_INDEXÚurlÚread_configurationrrÚpassword_handlerÚssl_verifierrÚgpg_homeÚopenÚosÚdevnullÚ
subprocessÚ
check_callÚOSError)ÚselfrÚschemeÚnetlocÚpathÚparamsÚqueryÚfragZsinkÚsÚrc©r*ú‹/build/wlanpi-profiler-SHjkbd/wlanpi-profiler-1.0.8/debian/wlanpi-profiler/opt/wlanpi-profiler/lib/python3.7/site-packages/distlib/index.pyÚ__init__$s&

zPackageIndex.__init__cCsddlm}|ƒS)zs
        Get the distutils command for interacting with PyPI configurations.
        :return: the command.
        r)Ú_get_pypirc_command)Úutilr-)r!Úcmdr*r*r+r-Asz PackageIndex._get_pypirc_commandcCsNddlm}||ƒ}| d¡|_| d¡|_| dd¡|_| d|j¡|_dS)	zÃ
        Read the PyPI access configuration as supported by distutils. This populates
        ``username``, ``password``, ``realm`` and ``url`` attributes from the
        configuration.
        r)Ú_load_pypircÚusernameÚpasswordÚrealmr
Ú
repositoryN)r.r0Úgetr1r2r3r)r!r0Úcfgr*r*r+rIszPackageIndex.read_configurationcCs | ¡ddlm}||ƒdS)z”
        Save the PyPI access configuration. You must have set ``username`` and
        ``password`` attributes before calling this method.
        r)Ú
_store_pypircN)Úcheck_credentialsr.r7)r!r7r*r*r+Úsave_configurationVszPackageIndex.save_configurationcCs\|jdks|jdkrtdƒ‚tƒ}t|jƒ\}}}}}}| |j||j|j¡t|ƒ|_	dS)zp
        Check that ``username`` and ``password`` have been set, and raise an
        exception if not.
        Nz!username and password must be set)
r1r2rrrrÚadd_passwordr3rr)r!ZpmÚ_r#r*r*r+r8_szPackageIndex.check_credentialscCs\| ¡| ¡| ¡}d|d<| | ¡g¡}| |¡}d|d<| | ¡g¡}| |¡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:actionÚsubmit)r8ÚvalidateÚtodictÚencode_requestÚitemsÚsend_request)r!ÚmetadataÚdÚrequestÚresponser*r*r+Úregisterks

zPackageIndex.registercCsJx<| ¡}|sP| d¡ ¡}| |¡t d||f¡qW| ¡dS)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)ÚreadlineÚdecodeÚrstripÚappendÚloggerÚdebugÚclose)r!ÚnameÚstreamZoutbufr(r*r*r+Ú_readers	
zPackageIndex._readerc	Csš|jdddg}|dkr|j}|r.| d|g¡|dk	rF| dddg¡t ¡}tj |tj |¡d	¡}| d
dd|d
||g¡t	 
dd |¡¡||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-fdÚ2z--no-ttyNz	--homedirz--batchz--passphrase-fdÚ0z.ascz
--detach-signz--armorz--local-userz--outputzinvoking: %sú )rrÚextendÚtempfileÚmkdtemprr$ÚjoinÚbasenamerLrM)r!ÚfilenameÚsignerÚ
sign_passwordÚkeystorer/ÚtdZsfr*r*r+Úget_sign_command‘s
zPackageIndex.get_sign_commandc	Cs´tjtjdœ}|dk	r tj|d<g}g}tj|f|Ž}t|jd|j|fd}| ¡t|jd|j|fd}| ¡|dk	r|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``.
        )rrNÚstdinr)ÚtargetÚargsr)rÚPIPEÚPopenrrQrÚstartrr`ÚwriterNÚwaitrXÚ
returncode)	r!r/Z
input_dataÚkwargsrrÚpÚt1Út2r*r*r+Úrun_command®s$


zPackageIndex.run_commandc
CsD| ||||¡\}}| || d¡¡\}}}	|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)r_rmÚencoder)
r!rZr[r\r]r/Úsig_filer)rrr*r*r+Ú	sign_fileÑs

zPackageIndex.sign_fileÚsdistÚsourcec	Cs(| ¡tj |¡s td|ƒ‚| ¡| ¡}d}	|rZ|jsJt 	d¡n| 
||||¡}	t|dƒ}
|
 ¡}WdQRXt
 |¡ ¡}t
 |¡ ¡}
| dd||||
dœ¡dtj |¡|fg}|	rt|	dƒ}
|
 ¡}WdQRX| d	tj |	¡|f¡t tj |	¡¡| | ¡|¡}| |¡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 signedÚrbZfile_uploadÚ1)z:actionZprotocol_versionÚfiletypeÚ	pyversionÚ
md5_digestÚ
sha256_digestÚcontentZ
gpg_signature)r8rr$Úexistsrr>r?rrLÚwarningrprÚreadÚhashlibÚmd5Ú	hexdigestÚsha256ÚupdaterYrKÚshutilÚrmtreeÚdirnamer@rArB)r!rCrZr[r\rurvr]rDroÚfZ	file_datarwrxÚfilesZsig_datarEr*r*r+Úupload_fileès>

zPackageIndex.upload_filec
Csœ| ¡tj |¡s td|ƒ‚tj |d¡}tj |¡sFtd|ƒ‚| ¡|j|j	}}t
|ƒ ¡}dd|fd|fg}d||fg}| ||¡}	| 
|	¡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)z:actionZ
doc_uploadrOÚversionry)r8rr$ÚisdirrrXrzr>rOrˆrÚgetvaluer@rB)
r!rCZdoc_dirÚfnrOrˆÚzip_dataÚfieldsr†rEr*r*r+Úupload_documentation!s
z!PackageIndex.upload_documentationcCsT|jdddg}|dkr|j}|r.| d|g¡| d||g¡t dd |¡¡|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-fdrRz--no-ttyNz	--homedirz--verifyzinvoking: %srT)rrrUrLrMrX)r!Úsignature_filenameÚ
data_filenamer]r/r*r*r+Úget_verify_command=szPackageIndex.get_verify_commandcCsH|jstdƒ‚| |||¡}| |¡\}}}|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 unavailable)rrz(verify command failed with error code %sr)rrr‘rm)r!rrr]r/r)rrr*r*r+Úverify_signatureUszPackageIndex.verify_signaturec	Csp|dkrd}t d¡n6t|ttfƒr0|\}}nd}tt|ƒƒ}t d|¡t|dƒ²}| t	|ƒ¡}z’| 
¡}	d}
d}d}d}
d	|	kr–t|	d
ƒ}|r¦||
|
|ƒxP| |
¡}|s¸P|t
|ƒ7}| |¡|rÜ| |¡|
d7}
|r¨||
|
|ƒq¨WWd| ¡XWdQRX|dkr4||kr4td||fƒ‚|rl| ¡}||kr`td
||||fƒ‚t d|¡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 specifiedr~zDigest specified: %sÚwbi éÿÿÿÿrzcontent-lengthzContent-Lengthrz1retrieval incomplete: got only %d out of %d bytesz.%s digest mismatch for %s: expected %s, got %szDigest verified: %s)rLrMÚ
isinstanceÚlistÚtupleÚgetattrr}rrBrÚinfoÚintr|ÚlenrfrrNrr)r!rÚdestfileÚdigestÚ
reporthookZdigesterZhasherZdfpZsfpÚheadersÚ	blocksizeÚsizer|ÚblocknumÚblockÚactualr*r*r+Ú
download_filensV




zPackageIndex.download_filecCs:g}|jr| |j¡|jr(| |j¡t|Ž}| |¡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).
        )rrKrr	r)r!ÚreqÚhandlersÚopenerr*r*r+rB»szPackageIndex.send_requestc
Csäg}|j}xX|D]P\}}t|ttfƒs,|g}x2|D]*}| d|d| d¡d| d¡f¡q2WqWx6|D].\}}	}
| d|d||	f d¡d|
f¡qjW| d|ddf¡d |¡}d|}|tt|ƒƒdœ}
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-8óz8Content-Disposition: form-data; name="%s"; filename="%s"s
smultipart/form-data; boundary=)zContent-typezContent-length)Úboundaryr•r–r—rUrnrXÚstrr›rr)r!rr†ÚpartsrªÚkÚvaluesÚvÚkeyrZÚvalueÚbodyÚctrŸr*r*r+r@Ës2


zPackageIndex.encode_requestcCsBt|tƒrd|i}t|jdd}z| ||p.d¡S|dƒƒXdS)NrOg@)ÚtimeoutÚandrN)r•r
rrÚsearch)r!ZtermsÚoperatorZ	rpc_proxyr*r*r+r¶ös
zPackageIndex.search)N)N)N)N)NNrqrrN)N)N)NN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rªr,r-rr9r8rGrQr_rmrpr‡rŽr‘r’r¥rBr@r¶r*r*r*r+rs*

	

#

8


M+r)r}Úloggingrr‚rrVÚ	threadingrÚImportErrorZdummy_threadingÚrÚcompatrrrrr	r
r.rrÚ	getLoggerr¸rLrÚ
DEFAULT_REALMÚobjectrr*r*r*r+Ú<module>s