� ��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�j|j� s,td|��|jd|gdtdidd6�}tj|�}|s�tj dt |��tj d |�d S|j d �j�}tj|�}|s�tj d t |��tj d |�|d fS||j d �fS(s/Returns (url, revision), where both are stringst/sBad directory: %stinfot 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(trstriptendswithtdirnametAssertionErrort 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(R R!R$trevt rev_options((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR&;s  cC@s"|jdg|||g�dS(Ntswitch(R(R tdestR$R.((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR/JscC@s|jdg||g�dS(Ntupdate(R(R R0R.((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR1MscC@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(R R0R$R-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(R tdisttdependency_linksR$R8R<((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 itentriesR ( R*twalkRtremoveR+R9R,t_get_svn_url_revt startswithtmax( R R!trevisiontbasetdirstfilest 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'RD(R R$R-((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,R9RRRRRC(R R!t 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@R2t8t9t10s ii s! I; 5 cC@s[|j|�}|dkrdS|j�jdd�d}|j|�}d|||fS(NR6iissvn+%s@%s#egg=%s(RRRtegg_nameR:RN(R R=R!trepotegg_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(R R0R.((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_parseturlsplittnetlocR:tschemeR+tquerytfragmentt urlunsplit(R$tpurltstripped_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__tnameRt repo_nametschemesR%R&R/R1R5R?RNR'RRRCRpRqt 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-rtusernameiRrit:s --usernames --password(NN(RsRtthasattrR�tpasswordR:R(R$R-R.trR�R�Rutauth((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyR(�s$    (t __future__RtloggingR*tretpip._vendor.six.moves.urllibRRst pip.indexRt pip.utilsRRtpip.utils.loggingRtpip.vcsRRtcompileR`RbRRReRdt getLoggerR~RRR(tregister(((s6/usr/lib/python2.7/site-packages/pip/vcs/subversion.pyts$   �