Y$@s,ddlmZddlZddlZddlZddlmZddlm Z ddl m Z m Z ddl mZddlmZmZejdZejd Zejd Zejd Zejd Zejd ZejeZGdddeZddZejedS))absolute_importN)parse)Link)rmtree display_path) indent_log)vcsVersionControlz url="([^"]+)"zcommitted-rev="(\d+)"z URL: (.+)zRevision: (.+)z\s*revision="(\d+)"z(.*)cseZdZdZdZdZd"Zdd Zd d Zd d Z ddZ ddZ ddZ ddZ fddZddZddZddZddZed d!ZS)# Subversionsvnz.svncheckoutsvn+sshsvn+http svn+httpssvn+svncCs|jdj|j s,td||jd|gdddddi}tj|}|stjd t |tj d |dS|j d j }t j|}|stjd t |tj d ||d fS||j d fS)z/Returns (url, revision), where both are strings/zBad directory: %sinfo show_stdoutF extra_environLANGCz'Cannot determine URL of svn checkout %sz!Output that cannot be parsed: %sNz,Cannot determine revision of svn checkout %s)NN)rstripendswithdirnameAssertionError run_command _svn_url_researchloggerwarningrdebuggroupstrip_svn_revision_re)selflocationoutputmatchurlr*1/tmp/pip-build-3puug3g5/pip/pip/vcs/subversion.pyget_infos,     zSubversion.get_infoc Cs|j\}}t||}|j|}tjd||tEtjj|rit ||j dg|||gddWdQRXdS)z@Export the svn repository at the url to the destination locationz!Exporting svn repository %s to %sexportrFN) get_url_revget_rev_optionsremove_auth_from_urlrrrospathexistsrr)r%r&r)rev rev_optionsr*r*r+r-;s  zSubversion.exportcCs"|jdg|||gdS)Nswitch)r)r%destr)r5r*r*r+r6JszSubversion.switchcCs|jdg||gdS)Nupdate)r)r%r7r5r*r*r+r8MszSubversion.updatecCs|j\}}t||}|j|}|rCd|}nd}|j||||rtjd||t||jddg|||gdS)Nz (to revision %s)zChecking out %s%s to %sr z-q)r.r/r0check_destinationrrrr)r%r7r)r4r5 rev_displayr*r*r+obtainPs  zSubversion.obtaincCsx|D]~}t|j}|s%qd|kr\dj|jdddj}n|}||jkr|jdddSqWdS)N-r#r)r egg_fragmentjoinsplitlowerkey)r%distdependency_linksr)r@rDr*r*r+ get_locationas  +zSubversion.get_locationc Csd}xtj|D]\}}}|j|krGg|ddtt|j\}}|jdr4d|}||fS)Nzssh://zsvn+)superr r.rL)r%r)r4) __class__r*r+r.s zSubversion.get_url_revcCsw|}x]tjjtjj|dse|}tjj|}||kr tjd|dSq W|j|dS)Nzsetup.pyzGCould not find setup.py for directory %s (tried all parent directories)r)r1r2r3rArrr rK)r%r& orig_location last_locationr*r*r+get_urls$ zSubversion.get_urlc Csddlm}tjj||jd}tjj|rbt|}|j}WdQRXnd}|j ds|j ds|j drt t t j |jd}|dd=|dd }d d |Ddg}n|j d rUtj|}|s td ||jd}dd tj|Ddg}nxyV|jdd|gdd} tj| jd}dd tj| D}Wn|k rdg}}YnX|rt|} nd} || fS)Nr)InstallationErrorrHr98910z cSs<g|]2}t|dkr|drt|dqS) )lenint).0dr*r*r+ s z/Subversion._get_svn_url_rev..z! &   zSubversion._get_svn_url_revcCs[|j|}|dkrdS|jjddd}|j|}d|||fS)Nr=rrzsvn+%s@%s#egg=%s)r[egg_namerBrV)r%rEr&repoegg_project_namer4r*r*r+get_src_requirements  zSubversion.get_src_requirementcCsdS)z&Always assume the versions don't matchFr*)r%r7r5r*r*r+ check_versionszSubversion.check_versioncCsYtj|}|jjdd}|j||j|j|jf}tj|}|S)N@rr?) urllib_parseurlsplitnetlocrBschemer2queryfragment urlunsplit)r)purlstripped_netloc url_piecessurlr*r*r+r0s !zSubversion.remove_auth_from_url)zsvnr rrr)__name__ __module__ __qualname__namer repo_nameschemesr,r-r6r8r<rGrVr.r[rKr}r~ staticmethodr0r*r*)rXr+r s"          , r cCs|rd|g}ng}tj|}t|drO|j|j}}nl|d}d|kr|jdd}d|kr|jdd\}}q|d}}n d \}}|r|d|g7}|r|d|g7}|S) Nz-rusernamerrr:z --usernamez --password)NN)rrhasattrrpasswordrB)r)r4r5rrrrauthr*r*r+r/s$    r/) __future__rloggingr1reZpip._vendor.six.moves.urllibrr pip.indexr pip.utilsrrpip.utils.loggingrpip.vcsrr compilerorqrr$rtrs getLoggerrrr r/registerr*r*r*r+s$