U .e0@sddlmZddlZddlZddlZddlmZddlmZm Z m Z m Z ddl m Z ddlmZddlmZmZedZed Zed Zed Zerdd lmZmZdd l mZddlmZddlmZmZee Z!GdddeZ"e#e"dS))absolute_importN) indent_log) display_pathis_console_interactivermtreesplit_auth_from_netloc) make_command)MYPY_CHECK_RUNNING)VersionControlvcsz url="([^"]+)"zcommitted-rev="(\d+)"z\s*revision="(\d+)"z(.*))OptionalTuple) CommandArgs) HiddenText)AuthInfo RevOptionscseZdZdZdZdZdZeddZe ddZ ed d Z efd d Z efd dZ e ddZeddZeddZeddZd(fdd ZddZddZddZd d!Zd"d#Zd$d%Zd&d'ZZS)) Subversionsvnz.svncheckout)rzsvn+sshzsvn+httpz svn+httpszsvn+svncCsdS)NT)clsZ remote_urlrr@/usr/lib/python3.8/site-packages/pip/_internal/vcs/subversion.pyshould_add_vcs_url_prefix+sz$Subversion.should_add_vcs_url_prefixcCsd|gS)Nz-rr)revrrrget_base_rev_args/szSubversion.get_base_rev_argsc Csd}t|D]\}}}|j|kr0g|dd<q||jtj||jd}tj|s\q||\}}||kr||d}n|r||sg|dd<qt ||}q|S)zR Return the maximum revision for all files under a given location rNentries/) oswalkdirnameremovepathjoinexists_get_svn_url_rev startswithmax) rlocationZrevisionbasedirsfilesZ entries_fnZdirurlZlocalrevrrr get_revision3s"       zSubversion.get_revisioncs"|dkrtt|||St|S)z This override allows the auth information to be passed to svn via the --username and --password options instead of via the URL. Zssh)superrget_netloc_and_authr)rZnetlocZscheme __class__rrr-OszSubversion.get_netloc_and_authcs2tt||\}}}|dr(d|}|||fS)Nzssh://zsvn+)r,rget_url_rev_and_authr%)rurlrZ user_passr.rrr0\s zSubversion.get_url_rev_and_authcCs(g}|r|d|g7}|r$|d|g7}|S)Nz --usernamez --passwordr)ZusernameZpasswordZ extra_argsrrr make_rev_argses   zSubversion.make_rev_argscCsR|}tjtj|dsD|}tj|}||krtd|dSq||dS)Nzsetup.pyzGCould not find setup.py for directory %s (tried all parent directories)r)rr!r#r"rloggerZwarningr$)rr'Z orig_locationZ last_locationrrrget_remote_urlps zSubversion.get_remote_urlc Cspddlm}tj||jd}tj|rHt|}|}W5QRXnd}| dsj| dsj| drt t t j |d}|dd=|dd }d d |Ddg}n| d rt|}|std ||d}dd t|Ddg}n^z<|jdd|gdd} t| d}dd t| D}Wn |k rRdg}}YnX|rdt|} nd} || fS)Nr)InstallationErrorr89Z10z cSs,g|]$}t|dkr|drt|dqS) )lenint).0drrr s z/Subversion._get_svn_url_rev..zs,           *