ó •abc@@s)ddlmZddlZddlZddlZddlmZddlm Z ddl m Z m Z ddl mZddlmZmZejdƒZejd ƒZejd ƒZejd ƒZejd ƒZejd ƒZejeƒZdefd„ƒYZd„ZejeƒdS(i(tabsolute_importN(tparse(tLink(trmtreet display_path(t indent_log(tvcstVersionControls url="([^"]+)"scommitted-rev="(\d+)"s URL: (.+)sRevision: (.+)s\s*revision="(\d+)"s(.*)t SubversioncB@s›eZdZdZdZdZd„Zd„Zd „Zd „Z d „Z d „Z d „Z d„Z d„Zd„Zd„Zd„Zed„ƒZRS(tsvns.svntcheckoutssvn+sshssvn+https svn+httpsssvn+svncC@sÔ|jd|gdtdidd6ƒ}tj|ƒ}|sgtjdt|ƒƒtjd|ƒd S|j dƒj ƒ}t j|ƒ}|sÁtjd t|ƒƒtjd|ƒ|d fS||j dƒfS( s/Returns (url, revision), where both are stringstinfot show_stdoutt extra_environtCtLANGs'Cannot determine URL of svn checkout %ss!Output that cannot be parsed: %sis,Cannot determine revision of svn checkout %sN(NN( t run_commandtFalset _svn_url_retsearchtloggertwarningRtdebugtNonetgrouptstript_svn_revision_re(tselftlocationtoutputtmatchturl((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pytget_infos(    cC@sš|jƒ\}}t||ƒ}|j|ƒ}tjd||ƒtƒHtjj|ƒrlt |ƒn|j dg|||gdt ƒWdQXdS(s@Export the svn repository at the url to the destination locations!Exporting svn repository %s to %stexportR N( t get_url_revtget_rev_optionstremove_auth_from_urlRR RtostpathtexistsRRR(RRRtrevt rev_options((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR!;s  cC@s"|jdg|||gƒdS(Ntswitch(R(RtdestRR)((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR*JscC@s|jdg||gƒdS(Ntupdate(R(RR+R)((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR,MscC@s¥|jƒ\}}t||ƒ}|j|ƒ}|rCd|}nd}|j||||ƒr¡tjd||t|ƒƒ|jddg|||gƒndS(Ns (to revision %s)tsChecking out %s%s to %sR s-q(R"R#R$tcheck_destinationRR RR(RR+RR(R)t rev_display((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pytobtainPs  cC@sŠxƒ|D]{}t|ƒj}|s(qnd|krYdj|jdƒd ƒjƒ}n|}||jkr|jddƒdSqWdS(Nt-iÿÿÿÿt#ii(Rt egg_fragmenttjointsplittlowertkeyR(Rtdisttdependency_linksRR3R7((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyt get_locationas  %c C@síd}xàtj|ƒD]Ï\}}}|j|krAg|(qn|j|jƒtjj||jdƒ}tjj|ƒs„qn|j|ƒ\}}||kr²|d} n$| sÉ|j| ƒ rÖg|(qnt ||ƒ}qW|S(sR Return the maximum revision for all files under a given location itentriest/( R%twalktdirnametremoveR&R4R't_get_svn_url_revt startswithtmax( RRtrevisiontbasetdirstfilest entries_fntdirurltlocalrevtbase_url((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyt get_revisionos"  cC@sAtt|ƒjƒ\}}|jdƒr7d|}n||fS(Nsssh://ssvn+(tsuperRR"RA(RRR(((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR"Šs cC@sw|}x]tjjtjj|dƒƒse|}tjj|ƒ}||kr tjd|ƒdSq W|j|ƒdS(Nssetup.pysGCould not find setup.py for directory %s (tried all parent directories)i( R%R&R'R4R>RRRR@(RRt orig_locationt last_location((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pytget_url‘s$ c C@sIddlm}tjj||jdƒ}tjj|ƒrat|ƒ}|jƒ}WdQXnd}|j dƒs”|j dƒs”|j dƒrt t t j |jdƒƒƒ}|dd=|dd }g|D]2}t|ƒd krÕ|d rÕt|d ƒ^qÕdg}n |j d ƒr˜tj|ƒ} | sNtd |ƒ‚n| jd ƒ}gtj|ƒD]} t| jd ƒƒ^qmdg}nŒyk|jdd|gdtƒ} tj| ƒjd ƒ}gtj| ƒD]} t| jd ƒƒ^qá}Wn|k r#dg}}nX|r9t|ƒ} nd} || fS(Ni(tInstallationErrorR;R-t8t9t10s ii sR'topentreadRAtlisttmaptstrt splitlinesR5tlentintt_svn_xml_url_reRt ValueErrorRt _svn_rev_retfinditerRRt_svn_info_xml_url_ret_svn_info_xml_rev_reRRB( RRRPt entries_pathtftdataRtdtrevsRtmtxmlR(((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR@¥s>! I; 5 cC@s[|j|ƒ}|dkrdS|jƒjddƒd}|j|ƒ}d|||fS(NR1iissvn+%s@%s#egg=%s(RORtegg_nameR5RK(RR8Rtrepotegg_project_nameR(((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pytget_src_requirementÑs  cC@stS(s&Always assume the versions don't match(R(RR+R)((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyt check_versionÚscC@sYtj|ƒ}|jjdƒd}|j||j|j|jf}tj|ƒ}|S(Nt@iÿÿÿÿ( t urllib_parseturlsplittnetlocR5tschemeR&tquerytfragmentt urlunsplit(Rtpurltstripped_netloct url_piecestsurl((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR$Þs !(R ssvn+sshssvn+https svn+httpsssvn+svn(t__name__t __module__tnameR>t repo_nametschemesR R!R*R,R0R:RKR"ROR@RmRnt staticmethodR$(((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyRs"          , cC@sñ|rd|g}ng}tj|ƒ}t|dƒrO|j|j}}nl|d}d|kr¯|jdƒd}d|krŸ|jddƒ\}}q»|d}}n d \}}|rÔ|d|g7}n|rí|d|g7}n|S( Ns-rtusernameiRoit:s --usernames --password(NN(RpRqthasattrRtpasswordR5R(RR(R)trRR„Rrtauth((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR#ñs$    (t __future__RtloggingR%tretpip._vendor.six.moves.urllibRRpt pip.indexRt pip.utilsRRtpip.utils.loggingRtpip.vcsRRtcompileR]R_RRRbRat getLoggerR{RRR#tregister(((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyts$   Ø