3 ”Reo0ã@süddlmZddlZddlZddlZddlmZddlmZm Z m Z m Z ddl m Z ddlmZddlmZmZejdƒZejd ƒZejd ƒZejd ƒZerÔdd lmZmZdd l mZddlmZddlmZmZeje ƒZ!Gdd„deƒZ"ej#e"ƒdS)é)Úabsolute_importN)Ú indent_log)Ú display_pathÚis_console_interactiveÚrmtreeÚsplit_auth_from_netloc)Ú make_command)ÚMYPY_CHECK_RUNNING)ÚVersionControlÚvcsz url="([^"]+)"zcommitted-rev="(\d+)"z\s*revision="(\d+)"z(.*))ÚOptionalÚTuple)Ú CommandArgs)Ú HiddenText)ÚAuthInfoÚ RevOptionscsÚeZdZdZdZdZd+Zedd „ƒZe d d „ƒZ ed d „ƒZ e‡fdd„ƒZ e‡fdd„ƒZ e dd„ƒZedd„ƒZedd„ƒZedd„ƒZd,‡fdd„ Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Z‡ZS)-Ú SubversionÚsvnz.svnÚcheckoutúsvn+sshúsvn+httpú svn+httpsúsvn+svncCsdS)NT©)ÚclsÚ remote_urlrrú‹/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/vcs/subversion.pyÚshould_add_vcs_url_prefix+sz$Subversion.should_add_vcs_url_prefixcCsd|gS)Nz-rr)ÚrevrrrÚget_base_rev_args/szSubversion.get_base_rev_argsc Cs°d}x¦tj|ƒD]˜\}}}|j|kr2g|dd…<q|j|jƒtjj||jdƒ}tjj|ƒs^q|j|ƒ\}}||kr~|d}n | s�|j|ƒ ržg|dd…<qt ||ƒ}qW|S)zR Return the maximum revision for all files under a given location rNÚentriesú/) ÚosÚwalkÚdirnameÚremoveÚpathÚjoinÚexistsÚ_get_svn_url_revÚ startswithÚmax) rÚlocationÚrevisionÚbaseÚdirsÚ_Ú entries_fnÚdirurlÚlocalrevrrrÚ get_revision3s"      zSubversion.get_revisioncs"|dkrtt|ƒj||ƒ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)ÚsuperrÚget_netloc_and_authr)rÚnetlocÚscheme)Ú __class__rrr7OszSubversion.get_netloc_and_authcs2tt|ƒj|ƒ\}}}|jdƒr(d|}|||fS)Nzssh://zsvn+)r6rÚget_url_rev_and_authr*)rÚurlrÚ user_pass)r:rrr;\s zSubversion.get_url_rev_and_authcCs(g}|r|d|g7}|r$|d|g7}|S)Nz --usernamez --passwordr)ÚusernameÚpasswordÚ extra_argsrrrÚ make_rev_argses   zSubversion.make_rev_argscCsV|}xBtjjtjj|dƒƒsF|}tjj|ƒ}||krtjd|ƒdSqW|j|ƒdS)Nzsetup.pyzGCould not find setup.py for directory %s (tried all parent directories)r)r"r&r(r'r$ÚloggerÚwarningr))rr,Ú orig_locationÚ last_locationrrrÚget_remote_urlps zSubversion.get_remote_urlc Csrddlm}tjj||jdƒ}tjj|ƒrHt|ƒ�}|jƒ}WdQRXnd}|j dƒsj|j dƒsj|j dƒr¬t t t j |jdƒƒƒ}|dd=|dd }d d „|Dƒdg}nª|j d ƒrütj|ƒ}|sÖtd jftƒŽƒ‚|jdƒ}dd „tj|ƒDƒdg}nZy8|jdd|gƒ} tj| ƒjdƒ}dd „tj| ƒDƒ}Wn |k �rTdg}}YnX|�rft|ƒ} nd} || fS)Nr)ÚSubProcessErrorr ÚÚ8Ú9Ú10z écSs,g|]$}t|ƒdkr|drt|dƒ‘qS)é )ÚlenÚint)Ú.0Údrrrú –sz/Subversion._get_svn_url_rev..z             zSubversion._get_svn_url_revcCsdS)z&Always assume the versions don't matchFr)rÚdestÚnamerrrÚis_commit_id_equal·szSubversion.is_commit_id_equalNcs,|dkrtƒ}||_d|_tt|ƒjƒdS)N)rÚuse_interactiveÚ _vcs_versionr6rÚ__init__)Úselfrr)r:rrrt¼s zSubversion.__init__c Csvd}|jdgƒ}|j|ƒsfS|t|ƒd…jƒd}|jdƒdjdƒ}yttt|ƒƒ}Wntk rpfSX|S)aQuery the version of the currently installed Subversion client. :return: A tuple containing the parts of the version information or ``()`` if the version returned from ``svn`` could not be parsed. :raises: BadCommand: If ``svn`` is not installed. z svn, version z --versionNrú-Ú.) rfr*rNr^Ú partitionÚtupler[rOra)ruÚversion_prefixÚversionÚ version_listÚparsed_versionrrrÚcall_vcs_versionËs  zSubversion.call_vcs_versioncCs"|jdk r|jS|jƒ}||_|S)a�Return the version of the currently installed Subversion client. If the version of the Subversion client has already been queried, a cached value will be used. :return: A tuple containing the parts of the version information or ``()`` if the version returned from ``svn`` could not be parsed. :raises: BadCommand: If ``svn`` is not installed. N)rsr~)ruÚ vcs_versionrrrÚget_vcs_versionés zSubversion.get_vcs_versioncCs&|js dgS|jƒ}|dkr"dgSgS)aXReturn options to be used on calls to Subversion that contact the server. These options are applicable for the following ``svn`` subcommands used in this class. - checkout - export - switch - update :return: A list of command line arguments to pass to ``svn``. z--non-interactiverSéz--force-interactive)rSr�)rrr€)ruÚ svn_versionrrrÚget_remote_call_optionsþs  z"Subversion.get_remote_call_optionsc Csh|j|ƒ\}}tjd||ƒtƒ�<tjj|ƒr8t|ƒtd|j ƒ|j ƒ||ƒ}|j |ƒWdQRXdS)z@Export the svn repository at the url to the destination locationz!Exporting svn repository %s to %sÚexportN) Úget_url_rev_optionsrBrVrr"r&r(rrrƒÚto_argsrf)rur,r<Ú rev_optionsÚcmd_argsrrrr„s zSubversion.exportcCsD|jƒ}tjd||t|ƒƒtdd|jƒ|jƒ||ƒ}|j|ƒdS)NzChecking out %s%s to %srz-q)Ú to_displayrBrVrrrƒr†rf)ruror<r‡Ú rev_displayrˆrrrÚ fetch_new0s  zSubversion.fetch_newcCs&td|jƒ|jƒ||ƒ}|j|ƒdS)NÚswitch)rrƒr†rf)ruror<r‡rˆrrrrŒ?szSubversion.switchcCs$td|jƒ|jƒ|ƒ}|j|ƒdS)NÚupdate)rrƒr†rf)ruror<r‡rˆrrrr�GszSubversion.update)rrrrr)N)Ú__name__Ú __module__Ú __qualname__rpr$Ú repo_nameÚschemesÚ classmethodrÚ staticmethodrr4r7r;rArFr)rqrtr~r€rƒr„r‹rŒr�Ú __classcell__rr)r:rr%s*      2 !r)$Ú __future__rÚloggingr"ÚreÚpip._internal.utils.loggingrÚpip._internal.utils.miscrrrrÚpip._internal.utils.subprocessrÚpip._internal.utils.typingr Ú pip._internal.vcs.versioncontrolr r Úcompiler_rdrhrgÚtypingr r rrrrÚ getLoggerrŽrBrÚregisterrrrrÚs,           -