<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
Reo0                 @   s   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZmZ ejdZejd	Zejd
ZejdZerd dlmZmZ d dlmZ d dlmZ d dlmZmZ eje Z!G dd deZ"ej#e" dS )    )absolute_importN)
indent_log)display_pathis_console_interactivermtreesplit_auth_from_netloc)make_command)MYPY_CHECK_RUNNING)VersionControlvcszurl="([^"]+)"zcommitted-rev="(\d+)"z\s*revision="(\d+)"z<url>(.*)</url>)OptionalTuple)CommandArgs)
HiddenText)AuthInfo
RevOptionsc                   s   e Zd ZdZdZdZd+Zedd	 Ze	d
d Z
edd Ze fddZe fddZe	dd Zedd Zedd Zedd Zd, fdd	Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z  ZS )-
Subversionsvnz.svncheckoutsvn+sshsvn+http	svn+httpssvn+svnc             C   s   dS )NT )cls
remote_urlr   r   /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+   s    z$Subversion.should_add_vcs_url_prefixc             C   s   d| gS )Nz-rr   )revr   r   r   get_base_rev_args/   s    zSubversion.get_base_rev_argsc       	      C   s   d}xt j|D ]\}}}| j|kr2g |dd< q|j| j t jj|| jd}t jj|s^q| j|\}}||kr~|d }n | s|j| rg |dd< qt	||}qW |S )zR
        Return the maximum revision for all files under a given location
        r   Nentries/)
oswalkdirnameremovepathjoinexists_get_svn_url_rev
startswithmax)	r   locationrevisionbasedirs_
entries_fndirurllocalrevr   r   r   get_revision3   s"    

zSubversion.get_revisionc                s"   |dkrt t| j||S t|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__r   r   r7   O   s    zSubversion.get_netloc_and_authc                s2   t t| j|\}}}|jdr(d| }|||fS )Nzssh://zsvn+)r6   r   get_url_rev_and_authr*   )r   urlr   	user_pass)r:   r   r   r;   \   s    
zSubversion.get_url_rev_and_authc             C   s(   g }| r|d| g7 }|r$|d|g7 }|S )Nz
--usernamez
--passwordr   )usernamepassword
extra_argsr   r   r   make_rev_argse   s    zSubversion.make_rev_argsc             C   sV   |}xBt jjt jj|dsF|}t jj|}||krtjd| d S qW | j|d S )Nzsetup.pyzGCould not find setup.py for directory %s (tried all parent directories)r   )r"   r&   r(   r'   r$   loggerwarningr)   )r   r,   orig_locationlast_locationr   r   r   get_remote_urlp   s    zSubversion.get_remote_urlc             C   sr  ddl m} tjj|| jd}tjj|rHt|}|j }W d Q R X nd}|j	dsj|j	dsj|j	drt
ttj|jd}|d d= |d d	 }d
d |D dg }n|j	drtj|}|stdjf t |jd}dd tj|D dg }nZy8| jdd|g}	tj|	jd}dd tj|	D }W n  |k
rT   d g  }}Y nX |rft|}
nd}
||
fS )Nr   )SubProcessErrorr     8910z

   c             S   s,   g | ]$}t |d kr|d  rt|d  qS )	   )lenint).0dr   r   r   
<listcomp>   s    z/Subversion._get_svn_url_rev.<locals>.<listcomp>z<?xmlzBadly formatted data: {data!r}   c             S   s   g | ]}t |jd qS )rS   )rO   group)rP   mr   r   r   rR      s    infoz--xmlc             S   s   g | ]}t |jd qS )rS   )rO   rT   )rP   rU   r   r   r   rR      s    )pip._internal.exceptionsrG   r"   r&   r'   r$   r(   openreadr*   listmapstr
splitlinessplit_svn_xml_url_research
ValueErrorformatlocalsrT   _svn_rev_refinditerrun_command_svn_info_xml_url_re_svn_info_xml_rev_rer+   )r   r,   rG   entries_pathfdatar<   revsmatchxmlr   r   r   r   r)      s>    








zSubversion._get_svn_url_revc             C   s   dS )z&Always assume the versions don't matchFr   )r   destnamer   r   r   is_commit_id_equal   s    zSubversion.is_commit_id_equalNc                s,   |d krt  }|| _d | _tt| j  d S )N)r   use_interactive_vcs_versionr6   r   __init__)selfrr   )r:   r   r   rt      s
    zSubversion.__init__c             C   sv   d}| j dg}|j|sf S |t|d j d }|jdd jd}yttt|}W n tk
rp   f S X |S )a  Query 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   -.)	rf   r*   rN   r^   	partitiontupler[   rO   ra   )ru   version_prefixversionversion_listparsed_versionr   r   r   call_vcs_version   s    
zSubversion.call_vcs_versionc             C   s"   | j dk	r| j S | 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)rs   r~   )ru   vcs_versionr   r   r   get_vcs_version   s
    
zSubversion.get_vcs_versionc             C   s&   | j sdgS | j }|dkr"dgS g S )aX  Return 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)rS   r   )rr   r   )ru   svn_versionr   r   r   get_remote_call_options   s    	z"Subversion.get_remote_call_optionsc             C   sh   | j |\}}tjd|| t < tjj|r8t| td| j	 |j
 ||}| j| W dQ R X dS )z@Export the svn repository at the url to the destination locationz!Exporting svn repository %s to %sexportN)get_url_rev_optionsrB   rV   r   r"   r&   r(   r   r   r   to_argsrf   )ru   r,   r<   rev_optionscmd_argsr   r   r   r     s    zSubversion.exportc             C   sD   |j  }tjd||t| tdd| j |j ||}| j| d S )NzChecking out %s%s to %sr   z-q)
to_displayrB   rV   r   r   r   r   rf   )ru   ro   r<   r   rev_displayr   r   r   r   	fetch_new0  s    

zSubversion.fetch_newc             C   s&   t d| j |j ||}| j| d S )Nswitch)r   r   r   rf   )ru   ro   r<   r   r   r   r   r   r   ?  s    zSubversion.switchc             C   s$   t d| j |j |}| j| d S )Nupdate)r   r   r   rf   )ru   ro   r<   r   r   r   r   r   r   G  s    zSubversion.update)r   r   r   r   r   )N)__name__
__module____qualname__rp   r$   	repo_nameschemesclassmethodr   staticmethodr   r4   r7   r;   rA   rF   r)   rq   rt   r~   r   r   r   r   r   r   __classcell__r   r   )r:   r   r   %   s*   	2!r   )$
__future__r   loggingr"   repip._internal.utils.loggingr   pip._internal.utils.miscr   r   r   r   pip._internal.utils.subprocessr   pip._internal.utils.typingr	    pip._internal.vcs.versioncontrolr
   r   compiler_   rd   rh   rg   typingr   r   r   r   r   r   	getLoggerr   rB   r   registerr   r   r   r   <module>   s,   




  -