o g-@sddlZddlZddlZddlmZmZmZddlmZm Z m Z m Z m Z ddl mZmZddlmZmZmZmZmZeeZedZedZedZed ZGd d d eZeedS) N)ListOptionalTuple) HiddenText display_pathis_console_interactiveis_installable_dirsplit_auth_from_netloc) CommandArgs make_command)AuthInfoRemoteNotFoundError RevOptionsVersionControlvcsz url="([^"]+)"zcommitted-rev="(\d+)"z\s*revision="(\d+)"z(.*)c seZdZdZdZdZdZedede fddZ e d ede efd d Z ed edefd dZedededeeeeeeeffffdd Zededeeeeefffdd Ze deedeedefddZed edefddZed edeeeeffddZededeede fd d!Zd5d#e dd"ffd$d% Zdeed&ffd'd(Zdeed&ffd)d*Zdefd+d,Zdeded-ed.edd"f d/d0Z deded-edd"fd1d2Z!deded-edd"fd3d4Z"Z#S)6 Subversionsvnz.svncheckout)zsvn+sshzsvn+httpz svn+httpszsvn+svnzsvn+file remote_urlreturncCdS)NT)clsrrr>/usr/lib/python3/dist-packages/pip/_internal/vcs/subversion.pyshould_add_vcs_url_prefix$sz$Subversion.should_add_vcs_url_prefixrevcCsd|gS)Nz-rr)rrrrget_base_rev_args(szSubversion.get_base_rev_argslocationc Csd}t|D]P\}}}|j|vrg|dd<q||jtj||jd}tj|s.q||\}}||krD|dus?J|d}n|rK||sRg|dd<qt ||}qt |S)zR Return the maximum revision for all files under a given location rNentries/) oswalkdirnameremovepathjoinexists_get_svn_url_rev startswithmaxstr) rrrevisionbasedirs_ entries_fndirurllocalrevrrr get_revision,s$        zSubversion.get_revisionnetlocschemecs|dkr t||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. ssh)superget_netloc_and_authr )rr3r4 __class__rrr7IszSubversion.get_netloc_and_authurlcs.t|\}}}|drd|}|||fS)Nzssh://zsvn+)r6get_url_rev_and_authr()rr:r user_passr8rrr;Xs  zSubversion.get_url_rev_and_authusernamepasswordcCs(g}|r |d|g7}|r|d|g7}|S)Nz --usernamez --passwordr)r=r> extra_argsrrr make_rev_args`s   zSubversion.make_rev_argscCsZ|}t|s|}tj|}||krtd|tt|r||\}}|dur+t|S)NzMCould not find Python project for directory %s (tried all parent directories))rr r$r"loggerwarningr r')rr orig_location last_locationr:_revrrrget_remote_urlls  zSubversion.get_remote_urlc Csddlm}tj||jd}tj|r.t| }|}Wdn1s(wYnd}d}| dsA| dsA| drbt t t j |d}|dd=|dd }d d |Ddg}n\| d rt|} | sutd || d}dd t|Ddg}n6z'|jdd|gddd} t| } | dusJ| d}dd t| D}Wn|ydg}}Ynw|rt|} || fSd} || fS)Nr)InstallationErrorr8910z cSs,g|]}t|dkr|drt|dqS) )lenint).0drrr s,z/Subversion._get_svn_url_rev..zs      (