PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  r2Wc@@sdZddlmZddlZddlZddlZddlZddlmZ ddl m Z ddl m Z mZmZmZmZddgZejeZd efd YZeZd efd YZd ZdS(s)Handles all VCS (version control) supporti(tabsolute_importN(tparse(t BadCommand(t display_patht backup_dirtcall_subprocesstrmtreetask_path_existstvcstget_src_requirementt VcsSupportcB@seZiZddddddgZdZdZedZed Zed Z d Z ddd Z d Z dZdZRS(tsshtgitthgtbzrtsftptsvncC@sRtjj|jttddr;tjj|jntt|j dS(Nt uses_fragment( t urllib_parset uses_netloctextendtschemestgetattrtNoneRtsuperR t__init__(tself((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyRscC@s |jjS(N(t _registryt__iter__(R((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyR#scC@st|jjS(N(tlistRtvalues(R((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pytbackends&scC@sg|jD]}|j^q S(N(Rtdirname(Rtbackend((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pytdirnames*scC@s.g}x!|jD]}|j|jqW|S(N(RRR(RRR!((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyt all_schemes.scC@sbt|ds&tjd|jdS|j|jkr^||j|j+://, e.g. svn+http://myrepo/svn/MyApp#egg=MyAppt+it@R7N(R8tAssertionErrortsplitRturlsplitRtrsplitt urlunsplit( Rt error_messageR8tschemetnetlocR<tquerytfragtrev((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyt get_url_revs" cC@sH|jdj|j s,td||j||j|fS(sA Returns (url, revision), where both are strings RDsBad directory: %s(trstriptendswithR RMtget_urlt get_revision(RR.((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pytget_infos cC@stj|jdS(si Normalize a URL for comparison by unquoting it and removing any trailing slash. RD(RtunquoteRY(RR8((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyt normalize_urlscC@s|j||j|kS(sV Compare two repo URLs for identity, ignoring incidental differences. (R_(Rturl1turl2((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyt compare_urlsscC@s tdS(sx Called when installing or updating an editable package, takes the source path of the checkout. N(RI(Rtdest((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pytobtainscC@s tdS(sB Switch the repo at ``dest`` to point to ``URL``. N(RI(RRcR8t rev_options((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pytswitchscC@s tdS(sO Update an already-existing repo to the given ``rev_options``. N(RI(RRcRe((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pytupdatescC@s tdS(sp Return True if the version is identical to what exists and doesn't need to be updated. N(RI(RRcRe((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyt check_versionsc C@sQt}t}tjj|rAt}tjjtjj||jr|j|}|j||rt j d|j j t |||j||st jdt ||j ||j||qt jdq>t jd|j|j t ||ddf}qAt jd ||j|j d df}n|rMt jd |j|td |d|d}|dkrt jd|j t ||||j|||qM|dkrqM|dkrt jdt |t|t}qM|d krMt|} t jdt || tj|| t}qMn|S(s Prepare a location to receive a checkout/clone. Return True if the location is ready for (and requires) a checkout/clone, False otherwise. s)%s in %s exists, and has correct URL (%s)sUpdating %s %s%ss$Skipping because already up-to-date.s%s %s in %s exists with URL %ss%(s)witch, (i)gnore, (w)ipe, (b)ackup tstitwtbs0Directory %s already exists, and is not a %s %s.s(i)gnore, (w)ipe, (b)ackup s+The plan is to install the %s repository %ssWhat to do? %siisSwitching %s %s to %s%ss Deleting %ssBacking up %s to %s(RiRjRkRl(RjRkRl(tTruetFalseR;R<texiststjoinR R[RbR&R)t repo_namettitleRRhtinfoRgR'R$RRfRRtshutiltmove( RRcR8Ret rev_displaytcheckouttpromptt existing_urltresponsetdest_dir((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pytcheck_destinations~$                 cC@s0tjj|rt|n|j|dS(sq Clean up current location and download the url repository (and vcs infos) into location N(R;R<RoRRd(RR.((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pytunpacks cC@s tdS(s Return a string representing the requirement needed to redownload the files currently present in location, something like: {repository_url}@{revision}#egg={project_name}-{version_identifier} N(RI(RtdistR.((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyR scC@s tdS(s_ Return the url used at location Used in get_info or check_destination N(RI(RR.((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyR[&scC@s tdS(s_ Return the current revision of the files at location Used in get_info N(RI(RR.((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyR\-straisec C@sx|jg|}y#t||||||||SWn>tk rs} | jtjkrmtd|jqtnXdS(s Run a VCS subcommand This is simply a wrapper around call_subprocess that adds the VCS command name, and checks that the VCS is available sCannot find command %rN(R$RtOSErrorterrnotENOENTR( Rtcmdt show_stdouttcwdt on_returncodet command_levelt command_desct extra_environtspinnerte((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyt run_command4s   cC@sDtjd||j|jtjj||j}tjj|S(s Check if a location is controlled by the vcs. It is meant to be overridden to implement smarter detection mechanisms for specific vcs. sChecking in %s for %s (%s)...(R&R)R R$R;R<RpRo(R*R.R<((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyR-Ks (N(R(R4R$R RRRRCRHRJRXR]R_RbRdRfRgRhR|R}R R[R\RmtloggingtDEBUGRt classmethodR-(((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyR6`s2            S   cC@sztj|}|r`y|j||SWq`tk r\tjd||j|jSXntjd||jS(NsPcannot determine version of editable source in %s (%s command not found in path)stcannot determine version of editable source in %s (is not SVN checkout, Git clone, Mercurial clone or Bazaar branch)(RR3R RR&R'R$tas_requirement(R~R.tversion_control((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyR Xs    (t__doc__t __future__RRRR;Rttpip._vendor.six.moves.urllibRRtpip.exceptionsRt pip.utilsRRRRRt__all__t getLoggerR(R&tobjectR RR6R (((s4/usr/lib/python2.7/site-packages/pip/vcs/__init__.pyts    ( G