o2Uc @@sddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZddlmZddlZddlmZmZddlmZddlmZmZmZmZm Z m!Z!m"Z"ddl#m$Z$dd l%m&Z&m'Z'dd l(m)Z)dd l*m+Z+dd l,m-Z-dd l.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5ddl6Z6ddl7m8Z8m9Z9ddl:m;Z;m<Z<ddl=m>Z>ddl?m@Z@ddlAmBZBddddddddddd g ZCejDeEZFd!ZGd"e;fd#YZHd$e8fd%YZId&e1fd'YZJd(e9fd)YZKd*e6jLfd+YZMddd,ZOe jPd-e jQZRe jPd.e jQZSd/ZTd0ZUd1ZVd2ZWeXd3ZYd4ZZd5Z[d6Z\d7Z]d8Z^d9Z_d:Z`ddd;Zadd<Zbd=e5jcfd>YZddeXdd?Zed@ZfdAZgdS(Bi(tabsolute_importN(tparse(trequest(tInstallationErrort HashMismatch(tPyPI(tsplitexttrmtreet format_sizet display_patht backup_dirtask_path_existst unpack_file(tcheck_path_owner(tDownloadProgressBartDownloadProgressSpinner(twrite_delete_marker_file(tvcs(tsix(tCacheControlAdapter(t FileCache(t LockError(t xmlrpc_client(t BaseAdaptert HTTPAdapter(tAuthBaset HTTPBasicAuth(tResponse(tCaseInsensitiveDict(turllib3tget_file_contenttis_urlt url_to_patht path_to_urltis_archive_filetunpack_vcs_linktunpack_file_urlt is_vcs_urlt is_file_urltunpack_http_urlt unpack_urlc C@siidd6tjd6d6tjd6itjd6d6}|dddkrjtj|ddUstidcS@s|dS(Ni((R6((s2/usr/lib/python2.7/vendor-packages/pip/download.pyR7YstlibtlibctdistrotdarwinisOS Xtsystemtreleasetcpus9{data[installer][name]}/{data[installer][version]} {json}tdatatjsont separatorst,t:t sort_keys(RCRD(R)t __version__tplatformtpython_versiontpython_implementationtsystpypy_version_infot releaseleveltjointstrt startswithtdicttfiltertziptlinux_distributiontlibc_vertmac_verR=t setdefaultR>tmachinetformatRAtdumpstTrue(R@RKR6R;R:((s2/usr/lib/python2.7/vendor-packages/pip/download.pyt user_agent6sN  -$! "%    tMultiDomainBasicAuthcB@s/eZedZdZdZdZRS(cC@s||_i|_dS(N(t promptingt passwords(tselfR]((s2/usr/lib/python2.7/vendor-packages/pip/download.pyt__init__us cC@stj|j}|jjddd}tj|d |f|d|_|jj|d\}}|dkr|j |j\}}n|s|r||f|j||jddS|dfSdS(NRaiiRD(NN(RhtsplitRk(R_Rgtuserinfo((s2/usr/lib/python2.7/vendor-packages/pip/download.pyRls    (t__name__t __module__RZR`RsRnRl(((s2/usr/lib/python2.7/vendor-packages/pip/download.pyR\ss   "tLocalFSAdaptercB@s)eZddddddZdZRS(c C@st|j}t}d|_|j|_ytj|} Wn%tk rg} d|_| |_n}Xtj j | j dt } t j|dpd} ti| d6| jd6| d6|_t|d |_|jj|_|S( Niitusegmtis text/plains Content-TypesContent-Lengths Last-Modifiedtrb(R RfRRttoststattOSErrorRytemailtutilst formatdatetst_mtimeRZt mimetypest guess_typeRtst_sizetheaderstopentclose( R_RtstreamttimeouttverifytcerttproxiestpathnameRtstatstexctmodifiedt content_type((s2/usr/lib/python2.7/vendor-packages/pip/download.pyR|s$      cC@sdS(N((R_((s2/usr/lib/python2.7/vendor-packages/pip/download.pyRsN(RRRkR|R(((s2/usr/lib/python2.7/vendor-packages/pip/download.pyRs  t SafeFileCachecB@s2eZdZdZdZdZdZRS(sw A file based cache which is safe to use even when the target directory may not be accessible or writable. cO@sKtt|j||t|jsGtjd|jd|_ndS(NsThe directory '%s' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want the -H flag.(tsuperRR`R t directorytloggertwarningRk(R_targsR((s2/usr/lib/python2.7/vendor-packages/pip/download.pyR`s  cO@sQ|jdkrdSytt|j||SWntttfk rLnXdS(N(RRkRRRjRRtIOError(R_RR((s2/usr/lib/python2.7/vendor-packages/pip/download.pyRjs cO@sQ|jdkrdSytt|j||SWntttfk rLnXdS(N(RRkRRtsetRRR(R_RR((s2/usr/lib/python2.7/vendor-packages/pip/download.pyRs cO@sQ|jdkrdSytt|j||SWntttfk rLnXdS(N(RRkRRtdeleteRRR(R_RR((s2/usr/lib/python2.7/vendor-packages/pip/download.pyRs (RRt__doc__R`RjRR(((s2/usr/lib/python2.7/vendor-packages/pip/download.pyRs   tInsecureHTTPAdaptercB@seZdZRS(cC@sd|_d|_dS(Nt CERT_NONE(t cert_reqsRktca_certs(R_tconnRfRR((s2/usr/lib/python2.7/vendor-packages/pip/download.pyt cert_verify%s (RRR(((s2/usr/lib/python2.7/vendor-packages/pip/download.pyR#st PipSessioncB@s eZdZdZdZRS(c O@s/|jdd}|jdd}|jdg}tt|j||t|jd|dkrit}nt|||||rt|ndS(sOUnpack link. If link is a VCS link: if only_download, export into download_dir and ignore location else unpack into location for other types of link: - unpack into location - if download_dir, copy the file into download_dir - if only_download, mark location for deletion N(R%R#R&R$RRkRR'(RRR+RR((s2/usr/lib/python2.7/vendor-packages/pip/download.pyR(s    cC@s|jjddd}y0|j|didd6dt}|jWn2tjk r}}tjd|j j |nX|j jd d }|j }|j jd }|rt j|\} } | jd p|}nt|d} | stj|} | r|| 7}qn| rd|j|jkrdtjj|jd} | rd|| 7}qdntjj||} t| d } t||| WdQX| |fS(s6Download link url into temp_dir using provided sessiont#iiRtidentitysAccept-EncodingRsHTTP error %s while getting %ss content-typeRbscontent-dispositionRtwbN(RfRRjRZRR>R?RRRcRtRRtcgit parse_headerRRtguess_extensionRRRMRR(RRR,t target_urlRRRRtcontent_dispositionttypetparamsRt file_pathR((s2/usr/lib/python2.7/vendor-packages/pip/download.pyR)s<   cC@stjj||j}tjj|rtjd||jrt||}yt ||Wqt k rtj d|tj |dSXn|SdS(s Check download_dir for previously downloaded file with correct hash If a correct file is found return its path else None sFile was already downloaded %ss;Previously-downloaded file %s has bad hash, re-downloading.N(RRRMRRRRRRRRRR*Rk(RR+t download_pathR((s2/usr/lib/python2.7/vendor-packages/pip/download.pyR(Qs   (ht __future__RRFt email.utilsRRRwRAR RRRGtreR RJR&tpip._vendor.six.moves.urllibRRdRRR)tpip.exceptionsRRt pip.modelsRt pip.utilsRRRR R R R tpip.utils.filesystemR t pip.utils.uiRRt pip.locationsRtpip.vcsRt pip._vendorRtpip._vendor.cachecontrolRtpip._vendor.cachecontrol.cachesRtpip._vendor.lockfileRtpip._vendor.six.movesRR>trequests.adaptersRRt requests.authRRtrequests.modelsRtrequests.structuresRtrequests.packagesRt__all__t getLoggerRRR[R\RRRtSessionRRkRtcompiletIRRRR R!R"RR#RR%R&RRRR%R'R$R5R4R(R)R((((s2/usr/lib/python2.7/vendor-packages/pip/download.pyts              4     =M!BH-         f ! *# ;