JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-39.opt-1.pyc

a

[��fL-�@s�ddlZddlZddlZddlmZmZmZddlmZm	Z	m
Z
mZmZddl
mZmZddlmZmZmZmZmZe�e�Ze�d�Ze�d�Ze�d�Ze�d	�ZGd
d�de�Ze�e�dS)�N)�List�Optional�Tuple)�
HiddenText�display_path�is_console_interactive�is_installable_dir�split_auth_from_netloc)�CommandArgs�make_command)�AuthInfo�RemoteNotFoundError�
RevOptions�VersionControl�vcsz
url="([^"]+)"zcommitted-rev="(\d+)"z\s*revision="(\d+)"z<url>(.*)</url>c	s�eZdZdZdZdZdZeee	d�dd��Z
eeeed�d	d
��Z
eeed�dd
��Zeeeeeeeeeeffd��fdd��Zeeeeeeefd��fdd��Zeeeeeed�dd��Zeeed�dd��Zeeeeeefd�dd��Zeeeee	d�dd��Zd1e	dd��fd d!�
Zeed"fd#�d$d%�Zeed"fd#�d&d'�Zed#�d(d)�Zeeedd*�d+d,�Z eeedd*�d-d.�Z!eeedd*�d/d0�Z"�Z#S)2�
Subversion�svnz.svn�checkout)zsvn+sshzsvn+httpz	svn+httpszsvn+svnzsvn+file)�
remote_url�returncCsdS)NT�)�clsrrr�@/usr/lib/python3.9/site-packages/pip/_internal/vcs/subversion.py�should_add_vcs_url_prefix$sz$Subversion.should_add_vcs_url_prefix)�revrcCsd|gS)Nz-rr)rrrr�get_base_rev_args(szSubversion.get_base_rev_args)�locationrc	Cs�d}t�|�D]�\}}}|j|vr0g|dd�<q|�|j�tj�||jd�}tj�|�s\q|�|�\}}||kr||d}n|r�|�|�s�g|dd�<qt	||�}qt
|�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�str)	rrZrevision�base�dirs�_Z
entries_fnZdirurlZlocalrevrrr�get_revision,s"

zSubversion.get_revision)�netloc�schemercs|dkrt��||�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)�super�get_netloc_and_authr	)rr.r/��	__class__rrr1IszSubversion.get_netloc_and_auth)�urlrcs.t��|�\}}}|�d�r$d|}|||fS)Nzssh://zsvn+)r0�get_url_rev_and_authr')rr4rZ	user_passr2rrr5Xs
zSubversion.get_url_rev_and_auth)�username�passwordrcCs(g}|r|d|g7}|r$|d|g7}|S)Nz
--usernamez
--passwordr)r6r7�
extra_argsrrr�
make_rev_args`szSubversion.make_rev_argscCsT|}t|�s6|}tj�|�}||krt�d|�t�q|�|�\}}|durPt�|S)NzMCould not find Python project for directory %s (tried all parent directories))rrr#r!�loggerZwarningr
r&)rrZ
orig_locationZ
last_locationr4Z_revrrr�get_remote_urlls�zSubversion.get_remote_urlcCs�ddlm}tj�||jd�}tj�|�r\t|��}|��}Wd�q`1sP0Ynd}d}|�	d�s�|�	d�s�|�	d�r�t
ttj
|�d���}|dd=|dd	}d
d�|D�dg}n�|�	d��rt�|�}	|	s�td
|����|	�d�}dd�t�|�D�dg}nbzB|jdd|gddd�}
t�|
�}	|	�d�}dd�t�|
�D�}Wn|�yrdg}}Yn0|�r�t|�}nd}||fS)Nr)�InstallationErrorr��8�9Z10z

�cSs,g|]$}t|�dkr|drt|d��qS)�	)�len�int)�.0�drrr�
<listcomp>��z/Subversion._get_svn_url_rev.<locals>.<listcomp>z<?xmlzBadly formatted data: �cSsg|]}t|�d���qS�rH�rC�group�rD�mrrrrF�rG�infoz--xmlFT�Zshow_stdoutZstdout_onlycSsg|]}t|�d���qSrIrJrLrrrrF�rG)Zpip._internal.exceptionsr<rr#r$r!r%�open�readr'�list�mapr)�
splitlines�split�_svn_xml_url_re�search�
ValueErrorrK�_svn_rev_re�finditer�run_command�_svn_info_xml_url_re�_svn_info_xml_rev_rer()rrr<Zentries_path�f�datar4rZrevs�matchZxmlrrrrr&�sB
(


�


zSubversion._get_svn_url_rev)�dest�namercCsdS)z&Always assume the versions don't matchFr)rrarbrrr�is_commit_id_equal�szSubversion.is_commit_id_equalN)�use_interactivercs(|durt�}||_d|_t���dS)N)rrd�_vcs_versionr0�__init__)�selfrdr2rrrf�s
zSubversion.__init__.)rcCs|d}|jdgddd�}|�|�s$dS|t|�d���d}|�d	�d�d
�}zttt|��}WntyvYdS0|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	--versionFTrOrNr�-�.)	r[r'rBrU�	partition�tuplerSrCrX)rgZversion_prefix�versionZversion_listZparsed_versionrrr�call_vcs_version�s
zSubversion.call_vcs_versioncCs"|jdur|jS|��}||_|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)rerm)rgZvcs_versionrrr�get_vcs_version�s


zSubversion.get_vcs_versioncCs&|jsdgS|��}|dkr"dgSgS)aCReturn 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
            - switch
            - update

        :return: A list of command line arguments to pass to ``svn``.
        z--non-interactive)rH�z--force-interactive)rdrn)rgZsvn_versionrrr�get_remote_call_options�s	z"Subversion.get_remote_call_options)rar4�rev_optionsrcCsD|��}t�d||t|��tdd|��|��||�}|�|�dS)NzChecking out %s%s to %srz-q)Z
to_displayr:rNrrrp�to_argsr[)rgrar4rqZrev_display�cmd_argsrrr�	fetch_news ��zSubversion.fetch_newcCs&td|��|��||�}|�|�dS)N�switch�rrprrr[�rgrar4rqrsrrrru*s�zSubversion.switchcCs$td|��|��|�}|�|�dS)N�updatervrwrrrrx4s�zSubversion.update)N)$�__name__�
__module__�__qualname__rbr!Z	repo_nameZschemes�classmethodr)�boolr�staticmethodrrr-rrr1rr5rr
r9r;rCr&rcrfrmrnrprrtrurx�
__classcell__rrr2rrsB�$�1
r) Zloggingr�re�typingrrrZpip._internal.utils.miscrrrrr	Zpip._internal.utils.subprocessr
rZ pip._internal.vcs.versioncontrolrr
rrrZ	getLoggerryr:�compilerVrYr]r\r�registerrrrr�<module>s




"
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg