o2Uc@@sldZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZddlmZddlmZmZmZmZddlmZmZdd lmZdd lmZmZmZm Z dd l!m"Z"m#Z#dd l$m%Z%dd l&m'Z'm(Z(ddl)m*Z*m+Z+m,Z,ddl-m.Z.ddl/m0Z0m1Z1m2Z2ddl3m Z4ddl5Z5ddl6m7Z7dgZ8dddfdddfdddfdddfdde9fgZ:ej;e<Z=de>fdYZ?de>fdYZ@de>fdYZAeAeZBdS(s!Routines related to PyPI, indexesi(tabsolute_importN(tparse(trequest(t ipaddress(tInftcached_propertytnormalize_nametsplitext(tRemovedInPip7WarningtRemovedInPip8Warning(t indent_log(tDistributionNotFoundtBestVersionAlreadyInstalledtInvalidWheelFilenametUnsupportedWheel(t url_to_patht path_to_url(tPyPI(tWheelt wheel_ext(tsupported_tagstsupported_tags_noarcht get_platform(tInstallationCandidate(thtml5libt pkg_resourcestsix(tSSLErrort PackageFinderthttpst*t localhosts 127.0.0.0/8s::1/128tfilec B@seZdZeddeededdZdZdZdZ dZ dZ dZ dZ d Zejd Zejd ejZejd Zd ZdZdZdZdZdZRS(sThis finds packages. This is meant to match easy_install's technique for looking for packages, by reading pages and looking for appropriate links c C@s| dkrtdn||_||_g|_t|_||_td|D|_td|D|_ |j|j O_||_ g|r|ngD]} d| df^q|_ t |_ t |_||_| |_| |_dS(Ns>PackageFinder() missing 1 required keyword argument: 'session'cs@s|]}t|VqdS(N(R(t.0tn((s//usr/lib/python2.7/vendor-packages/pip/index.pys Pscs@s|]}t|VqdS(N(R(R!R"((s//usr/lib/python2.7/vendor-packages/pip/index.pys TsR(tNonet TypeErrort find_linkst index_urlstdependency_linkstsett logged_linkst use_wheeltallow_externaltallow_unverifiedtallow_all_externaltsecure_originstFalsetneed_warn_externaltneed_warn_unverifiedtallow_all_prereleasestprocess_dependency_linkstsession( tselfR%R&R*R+R,R-R2t trusted_hostsR3R4thost((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__init__;s(        .    cC@s0|jr,tjdt|jj|ndS(NsXDependency Links processing has been deprecated and will be removed in a future release.(R3twarningstwarnRR'textend(R5tlinks((s//usr/lib/python2.7/vendor-packages/pip/index.pytadd_dependency_linksts  c @sGggfd}x|D]}tjj|}|jd}||jk}|sg|r,|rv|}n t|}|rtjj|rtjj|}xztj|D]}|tjj ||qWq9|r tjj|r j |q9tjj |r9||q9q%j |q%WfS(st Sort locations into "files" (archives) and "urls", and return a pair of lists (files,urls) c@sLt|}tj|dtddkr;j|n j|dS(Ntstrictis text/html(Rt mimetypest guess_typeR/tappend(tpathturl(tfilesturls(s//usr/lib/python2.7/vendor-packages/pip/index.pyt sort_paths sfile:( tosRBtexistst startswithR%RtisdirtrealpathtlistdirtjoinRAtisfile( R5t locationsRFRCt is_local_patht is_file_urlt is_find_linkRBtitem((RDREs//usr/lib/python2.7/vendor-packages/pip/index.pyt_sort_locationss*     cC@s|jrtt}|jtkr-d}n]|jjtkrt|jj}|j sst d|jn|j }n| }|j |fS|j SdS(sL Function used to generate link sort key for link tuples. The greater the return value, the more preferred it is. If not finding wheels, then sorted by version only. If finding wheels, then the sort order is by version, then: 1. existing installs 2. wheels ordered via Wheel.support_index_min() 3. source archives Note: it was considered to embed this logic into the Link comparison operators, but then different sdist links with the same version, would have to be considered equal isB%s is not a supported wheel for this platform. It can't be sorted.N( R*tlenRtlocationtINSTALLED_VERSIONtextRRtfilenamet supportedRtsupport_index_mintversion(R5t candidatet support_numtpritwheel((s//usr/lib/python2.7/vendor-packages/pip/index.pyt_candidate_sort_keys     cC@st|d|jdtS(s Bring the latest version (and wheels) to the front, but maintain the existing ordering as secondary. See the docstring for `_link_sort_key` for details. This function is isolated for easier unit testing. tkeytreverse(tsortedRatTrue(R5tapplicable_versions((s//usr/lib/python2.7/vendor-packages/pip/index.pyt_sort_versionss cC@stjt|}|j|j|jf}xt|jD]G}|d|dkrk|ddkrkq;nytj t |dt j s|ddkr|dn|djd}tjt |dt j r|dn|djd}Wn;tk r4|d|dkrG|ddkrGq;qGnX||krGq;n|d|dkr|ddkr|ddk rq;nPq;W|jd|j|jtjdtdS(NiRitutf8isThis repository located at %s is not a trusted host, if this repository is available via HTTPS it is recommend to use HTTPS instead, otherwise you may silence this warning with '--trusted-host %s'.sImplicitly allowing locations which are not hosted at a secure origin is deprecated and will require the use of --trusted-host in the future.(t urllib_parseturlparsetstrtschemethostnametporttSECURE_ORIGINSR.Rt ip_addresst isinstanceRt text_typeR#tdecodet ip_networkt ValueErrortwarningR9R:R(R5tloggerRVtparsedtorigint secure_origintaddrtnetwork((s//usr/lib/python2.7/vendor-packages/pip/index.pyt_validate_secure_origins<$  $   c @sfd}|jd}|jrt||jddt}|j||}|dkrtjt|krt j d|j |ft |j t|jddt|p|jqndk rg|jD]}||^q|j}nt|j}|j|\}} |j|j\} } |j| g| D]}t|dt^qU}|jg| D]}t|^qtjd|x.|D]&} tjd| |jt| qWg} | j|jg|jD]}t|ddt^q|j jg}xb|j||D]N}tjd|jt*|j|j|j|j jWdQXq@Wt|jg|jD]}t|^q|j j}|r tjd d jg|D]}|jj^qnt|jg|D]}t|^q|j j}| r| r| r| rtjd ||jrtj d |j n|j!rtj d |j nt"d|ng}|j#dk rt$|j |j#j%t&g}n|rH|j'dttjdd jg|D]}t(|jj^q#n|| ||}t)|j*j+g|D]}|j%^qmd|j,r|j,nd}g|D]}|j%|kr|^q}||}|j-|}t.d|D}| rU|rU|djt&kr0tjd|j#j%n!tjd|j#j%|dddS|stjd|d jt/t)d|Ddt0|jrtj dn|j!rtj d |j nt"d|n|djt&kr0tjd|j#j%d jd|dDp#dt1nt2|dkrrtjd|dj%d jd |Dn|dj}|j3dk r|j3 rtj d!|j n|j4rt j d"|j t5n|S(#Nc@s2tj|}|jds.|d}n|S(Nt/(t posixpathRMtendswith(RCtloc(turl_name(s//usr/lib/python2.7/vendor-packages/pip/index.pytmkurl_pypi_urls ittrustedsyFailed to find %r at %s. It is suggested to upgrade your index to support normalized names as the name in /simple/{name}.s#URLs to search for versions for %s:s* %ss-fsAnalyzing links from page %ssdependency_links found: %ss, s<Could not find any downloads that satisfy the requirement %ssqSome externally hosted files were ignored as access to them may be unreliable (use --allow-external %s to allow).sWSome insecure and unverifiable files were ignored (use --allow-unverified %s to allow).s$No distributions at all found for %sRcsLocal files found: %st prereleasescs@s|]}|jtkVqdS(N(RVRW(R!ti((s//usr/lib/python2.7/vendor-packages/pip/index.pys ssLExisting installed version (%s) is most up-to-date and satisfies requirementsUExisting installed version (%s) satisfies requirement (most up-to-date version is %s)isNCould not find a version that satisfies the requirement %s (from versions: %s)cs@s|]}t|jVqdS(N(RkR\(R!R((s//usr/lib/python2.7/vendor-packages/pip/index.pys sRbsnSome externally hosted files were ignored as access to them may be unreliable (use --allow-external to allow).s,No distributions matching the version for %ss=Installed version (%s) is most up-to-date (past versions: %s)cs@s|]}t|jVqdS(N(RkR\(R!R((s//usr/lib/python2.7/vendor-packages/pip/index.pys sitnones)Using version %s (newest of versions: %s)cs@s|]}t|jVqdS(N(RkR\(R!R((s//usr/lib/python2.7/vendor-packages/pip/index.pys ss,%s is potentially insecure and unverifiable.sb%s discovered using a deprecated method of parsing, in the future it will no longer be discovered.(6RR#R&tLinkRet _get_pageRtnetlocRkR9R:tnameR t_find_url_nameR%tlistRTR'R;RwtdebugR}t_package_versionstlowert _get_pagesRCR R<RMRVtcriticalR0RvR1R t satisfied_byRR\RWtsortRR(t specifiertfilterR2RgtanyRdt parse_versionR RUt verifiablet_deprecated_regexR(R5treqtupgradeRtmain_index_urltpageRCROtfile_locationst url_locationst _flocationst _ulocationsRVtfound_versionst page_versionstdependency_versionsR\t file_versionstinstalled_versionR]t all_versionstxt _versionsRftexisting_applicabletselected_version((Rs//usr/lib/python2.7/vendor-packages/pip/index.pytfind_requirements   !   ) %& ( ) 4&     ) (                cC@s|jjds$|jd7_n|j||}|dkrVtjd|dSt|j}xU|jD]J}t j |j j d}|t|krotj d|||SqoWdS(s Finds the true URL name of a package, when the given name isn't quite correct. This is usually used to implement case-insensitivity. R~sCannot fetch index base URL %sNs!Real name of requirement %s is %s(RCRRR#RwRRRR<RtbasenameRBtrstripR(R5t index_urlRRRt norm_nametlinktbase((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs  c c@s5t|}t}x|r0|jd}||kr?qn|j||j||}|dkrpqn|Vx|jD]}t|jj }||j kr|j rt |_ tjd|qn|jdk r|j r||jkrtjd|t |_qn|j|qWqWdS(s Yields (page, page_url) from the given locations, skipping locations that have errors, and adding download/homepage links is@Not searching %s for files because external urls are disallowed.s_Not searching %s for urls, it is an untrusted link and cannot produce safe or verifiable files.N(RR(tpoptaddRR#t rel_linksRRRR+R-ReR0RwRRR,R1RA( R5RORt all_locationstseenRVRRt normalized((s//usr/lib/python2.7/vendor-packages/pip/index.pyR)s:          s #egg=([^&]*)s([a-z0-9_.]+)-([a-z0-9_.!+-]+)s-py([123]\.?[0-9]?)$cC@sqgg}}t}xP|D]H}||kr|j||jrU|j|qe|j|qqW||S(s Returns elements of links in order, non-egg links first, egg links second, while eliminating duplicates (R(Rt egg_fragmentRA(R5R<teggstno_eggsRR((s//usr/lib/python2.7/vendor-packages/pip/index.pyt _sort_links\s      cc@sDx=|j|D],}|j||}|dk r|VqqWdS(N(Rt_link_package_versionsR#(R5R<t search_nameRtv((s//usr/lib/python2.7/vendor-packages/pip/index.pyRls cC@sd}|jr|tfS|S(Ns.tar.gzs.tar.bz2s.tars.tgzs.zip(s.tar.gzs.tar.bz2s.tars.tgzs.zip(R*R(R5t extensions((s//usr/lib/python2.7/vendor-packages/pip/index.pyt_known_extensionsrs  c C@st}d}|jr$|j}nY|j\}}|sr||jkrntjd||jj|ndS|jdr|d }d|}n||j kr||jkrtjd|||jj|ndSd|j kr4|dkr4||jkr0tjd||jj|ndS|t kr}yt |j }Wn"tk rwtjd |dSXtj|jjtj|jkrtjd ||dS|jstjd |dSt|d d}|jd  rq|jd rq|dk rq|dk rqtj|jjjtjrq|jdtsqtjd|dSn|j}n|s|j|||}n|dkrtjd ||dS|jdk r|j rt|j|j kr|j! rtjd|t"|_#dS|j$dk rj|j$ rjt|j|j%krjtjd|t"|_&dS|j'j(|} | r|| j) }| j*d} | t+jd krtjd|dSntjd||t,|||S(s Return an iterable of triples (pkg_resources_version_key, link, python_version) that can be extracted from the given link. Meant to be overridden by subclasses, not called by clients. sSkipping link %s; not a fileNs.taris,Skipping link %s; unknown archive format: %stmacosx10s.zipsSkipping link %s; macosx10 ones1Skipping %s because the wheel filename is invalids-Skipping link %s; wrong project name (not %s)s9Skipping %s because it is not compatible with this Pythont comes_fromtwintmacosxtclittagssOSkipping %s because it is a pypi-hosted binary Wheel on an unsupported platforms,Skipping %s because it is externally hosted.s<Skipping %s because it is an insecure and unverifiable file.iis/Skipping %s because Python version is incorrectsFound link %s, version: %s(-RR#RRR)RwRRRRRBRRRYR Rt safe_nameRRRZtgetattrRIRiRjRCRRRR\t_egg_info_matchestinternalRR+R-ReR0RR,R1t_py_version_retsearchtstarttgrouptsysR( R5RRtplatformR\tegg_infoRXR`Rtmatcht py_version((s//usr/lib/python2.7/vendor-packages/pip/index.pyRxs                     cC@s|jj|}|s,tjd|dS|jdj}|jdd}|jd}|j|r|jdt |SdSdS(Ns%Could not parse version from link: %sit_t-( t _egg_info_reRRwRR#RRtreplaceRIRU(R5RRRRRtlook_for((s//usr/lib/python2.7/vendor-packages/pip/index.pyRscC@stj||d|jS(NR4(tHTMLPagetget_pageR4(R5RR((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs((N(t__name__t __module__t__doc__ReR/R#R8R=RTRaRgR}RRRtretcompilet_egg_fragment_retIRRRRRRRR(((s//usr/lib/python2.7/vendor-packages/pip/index.pyR4s,  5 ( E  /    RcB@seZdZejdejZejdejZejdejejBZ dddZ dZ e eddZedddZed Zed Zed Zed Zd ZddZdZejdejZdZRS(s'Represents one page, along with its URLs\s*home\s*pages\s*download\s+urls(href=(?:"([^"]*)"|'([^']*)'|([^>\s\n]*))cC@sd}|rMd|krMtj|d\}}d|krM|d}qMn||_tj|jd|dt|_||_||_ ||_ dS(Ns Content-TypetcharsettencodingtnamespaceHTMLElements( R#tcgit parse_headertcontentRRR/RxRCtheadersR(R5RRCRRRt content_typetparams((s//usr/lib/python2.7/vendor-packages/pip/index.pyR8s      cC@s|jS(N(RC(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__str__1sc C@sL|dkrtdn|j}|jddd}ddlm}xS|jD]H}|jj|rT|t |dkrTt j d||dSqTWy|r,|j }xwdd d d d gD]]} |j | r|j|d |} | jjdr Pq%t j d|| dSqqWnt j d|tj|\}} } } }}|dkrtjjtj| r|j ds|d7}ntj|d}t j d|n|j|didd6dd6}|j|jjdd} | jjds3t j d|| dS||j|j|jd|j}Wntjk r}|jjdkrdnd}|j ||||d|ntj!k r}|j ||d||notj"k r|j ||d |nFt#k rC}d!|}|j ||||ddd"t j$nX|SdS(#Ns9get_page() missing 1 required keyword argument: 'session't#ii(t VcsSupports+:sCannot look at %s URL %ss.tars.tar.gzs.tar.bz2s.tgzs.zipR4s text/htmls,Skipping page %s because of Content-Type: %ssGetting page %sR R~s index.htmls# file: URL is directory, getting %sRtAccepts max-age=600s Cache-Controls Content-TypetunknownRiitlevelsconnection error: %ss timed outs6There was a problem confirming the ssl certificate: %stmeth(%R#R$RCtsplittpip.vcsRtschemesRRIRURwRRYRt_get_content_typeRiRjRGRBRJturllib_requestt url2pathnameturljointgettraise_for_statusRRRtrequestst HTTPErrortresponset status_codet _handle_failtConnectionErrortTimeoutRtinfo(tclsRRt skip_archivesR4RCRRlRYtbad_extRRRBRtquerytfragmenttresptinsttexcRtreason((s//usr/lib/python2.7/vendor-packages/pip/index.pyR4s   + !    icC@sC|dkrtj}n|d|||d|j|fdS(NsCould not fetch URL %s: %ss7Will skip URL %s when looking for download links for %s(R#RwRRC(RRR RCRR((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs   cC@s`tj|\}}}}}|dkr.dS|j|dt}|j|jjddS(s;Get the Content-Type of the given url, using a HEAD requestthttpRttallow_redirectss Content-Type(shttpshttps(RiturlsplittheadReRRR(RCR4RlRRBRR R ((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs   cC@sg|jjdD]*}|jddjdkr|^q}|ryt|djddSWqttfk rqXndS(Ns.//metaRRs api-versionitvalue(RxtfindallRRtintR#R$Ru(R5Rtmetas((s//usr/lib/python2.7/vendor-packages/pip/index.pyt api_versions*cC@sog|jjdD]!}|jddk r|^q}|rd|djdrd|djdS|jSdS(Ns.//basethrefi(RxRRR#RC(R5Rtbases((s//usr/lib/python2.7/vendor-packages/pip/index.pytbase_urls !cc@sx|jjdD]}|jdr|jd}|jtj|j|}d}|jr|jdkrt |jdod|jdj k}nt ||d|VqqWdS(sYields all links in the pages.//aRitrelRN( RxRRt clean_linkRiRRR#RtboolRR(R5tanchorRRCR((s//usr/lib/python2.7/vendor-packages/pip/index.pyR<s!cc@s<x|jD] }|Vq Wx|jD] }|Vq)WdS(N(texplicit_rel_linkstscraped_rel_links(R5RC((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs thomepagetdownloadcc@st|}x|jjdD]}|jdr|jdrt|jdj}||@r|jd}|jtj|j|}t ||dt VqqqWdS(s)Yields all links with the given relationss.//aRRRN( R(RxRRRRRiRRRR/(R5trelsRt found_relsRRC((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs  cc@sx|j|jfD]}|j|j}|s7qn|jj|jd|j}|sdqn|jdp|jdp|jd}|sqny|jd}Wntk rqnX|j t j |j |}t ||dtdtVqWdS(NtposiiitasciiRR(t _homepage_ret _download_reRRt_href_retendRRstUnicodeDecodeErrorRRiRRRR/Re(R5tregexRt href_matchRC((s//usr/lib/python2.7/vendor-packages/pip/index.pyR s$! s[^a-z0-9$&+,/:;=?@.#%_\\|-]cC@s|jjd|S(sMakes sure a link is fully encoded. That is, if a ' ' shows up in the link, it will be rewritten to %20 (while not over-quoting % or other characters).cS@sdt|jdS(Ns%%%2xi(tordR(R((s//usr/lib/python2.7/vendor-packages/pip/index.pyts(t _clean_retsub(R5RC((s//usr/lib/python2.7/vendor-packages/pip/index.pyR s N(shomepageR"(RRRRRRR'R(tSR)R#R8Rt classmethodReRt staticmethodRRRRRtpropertyR<RRR R0R(((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs* _    RcB@s:eZdddedZdZdZdZdZdZ dZ dZ dZ d Z ed Zed Zed Zed ZdZedZedZejdZedZejdZedZedZedZedZRS(cC@s[|tkr*|jdr*t|}n||_||_||_||_||_dS(Ns\\(RRIRRCRRRR(R5RCRRRR((s//usr/lib/python2.7/vendor-packages/pip/index.pyR8s    cC@s.|jrd|j|jfSt|jSdS(Ns %s (from %s)(RRCRk(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyR"s cC@sd|S(Ns ((R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__repr__(scC@s#t|tstS|j|jkS(N(RqRtNotImplementedRC(R5tother((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__eq__+scC@s#t|tstS|j|jkS(N(RqRR7RC(R5R8((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__ne__0scC@s#t|tstS|j|jkS(N(RqRR7RC(R5R8((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__lt__5scC@s#t|tstS|j|jkS(N(RqRR7RC(R5R8((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__le__:scC@s#t|tstS|j|jkS(N(RqRR7RC(R5R8((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__gt__?scC@s#t|tstS|j|jkS(N(RqRR7RC(R5R8((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__ge__DscC@s t|jS(N(thashRC(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyt__hash__IscC@sktj|j\}}}}}tj|jdp<|}tj|}|sgtd|j|S(NR~sURL %r produced no filename(RiRRCRRRtunquotetAssertionError(R5RRRBR((s//usr/lib/python2.7/vendor-packages/pip/index.pyRYLs !cC@stj|jdS(Ni(RiRRC(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyRlTscC@stj|jdS(Ni(RiRRC(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyRXscC@stjtj|jdS(Ni(RiRARRC(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyRB\scC@sttj|jjdS(NR~(RRRRBR(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyR`scC@s|jdS(Ni(R(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pyRXcscC@s=tj|j\}}}}}tj||||dfS(N(RiRRCt urlunsplitR#(R5RlRRBRR ((s//usr/lib/python2.7/vendor-packages/pip/index.pyturl_without_fragmentgs!s #egg=([^&]*)cC@s,|jj|j}|sdS|jdS(Ni(RRRCR#R(R5R((s//usr/lib/python2.7/vendor-packages/pip/index.pyRnss2(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)cC@s,|jj|j}|r(|jdSdS(Ni(t_hash_reRRCRR#(R5R((s//usr/lib/python2.7/vendor-packages/pip/index.pyR?ys cC@s,|jj|j}|r(|jdSdS(Ni(RERRCRR#(R5R((s//usr/lib/python2.7/vendor-packages/pip/index.pyt hash_names cC@s0tj|jjdddjdddS(NRiit?(RRRCR(R5((s//usr/lib/python2.7/vendor-packages/pip/index.pytshow_urlscC@s|jpt|jdd}|dk r|ry%t|jdd}t|}Wnttfk rtd}nX|dks|dkrdS|jrtSt Sn|dk rt SdS(s Returns True if this link can be verified after download, False if it cannot, and None if we cannot determine. RRiN( RRRR#RRuR$R?ReR/(R5RR((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs   N(RRR#R/R8RR6R9R:R;R<R=R>R@R5RYRlRRBRRXRDRRRRRER?RFRHR(((s//usr/lib/python2.7/vendor-packages/pip/index.pyRs4            (CRt __future__RtloggingRRRGRR?RR9tpip._vendor.six.moves.urllibRRiRRt pip.compatRt pip.utilsRRRRtpip.utils.deprecationRR tpip.utils.loggingR tpip.exceptionsR R R Rt pip.downloadRRt pip.modelsRt pip.wheelRRtpip.pep425tagsRRRtpip.req.req_requirementRt pip._vendorRRRtpip._vendor.packaging.versionRRtrequests.exceptionsRt__all__R#Rot getLoggerRRwtobjectRRRRW(((s//usr/lib/python2.7/vendor-packages/pip/index.pytsN        ""