
    e-                     V   d dl Z d dlZd dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZ d dlmZmZmZmZmZ  e j        e          Z ej        d          Z ej        d          Z ej        d          Z ej        d	          Z G d
 de          Z ej        e           dS )    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="([^"]+)"zcommitted-rev="(\d+)"z\s*revision="(\d+)"z<url>(.*)</url>c                       e Zd ZdZdZdZdZedede	fd            Z
ededee         fd	            Zed
edefd            Zedededeeeee         ee         f         f         f fd            Zededeeee         ef         f fd            Zedee         dee         defd            Zed
edefd            Zed
edeee         ef         fd            Zededee         de	fd            Zd%dee	         ddf fdZdeedf         fdZdeedf         fdZdefdZdeded ed!eddf
d"Z deded eddfd#Z!deded eddfd$Z" xZ#S )&
Subversionsvnz.svncheckout)zsvn+sshzsvn+httpz	svn+httpszsvn+svnzsvn+file
remote_urlreturnc                     dS )NT )clsr   s     S/var/www/html/api/venv/lib/python3.11/site-packages/pip/_internal/vcs/subversion.pyshould_add_vcs_url_prefixz$Subversion.should_add_vcs_url_prefix$   s    t    revc                 
    d| gS )Nz-rr   )r   s    r   get_base_rev_argszSubversion.get_base_rev_args(   s    c{r   locationc                    d}t          j        |          D ]\  }}}| j        |vrg |dd<   |                    | j                   t           j                            || j        d          }t           j                            |          sw|                     |          \  }}||k    r
|J |dz   }n|r|                    |          sg |dd<   t          ||          }t          |          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str)	r   r!   revisionbasedirs_
entries_fndirurllocalrevs	            r   get_revisionzSubversion.get_revision,   s    WX.. 	/ 	/MD${$&&QQQKK$$$dCKCCJ7>>*-- "33D99FHx)))| 6#4#4T#:#: QQQ8X..HH8}}r   netlocschemec                 r    |dk    r"t                                          ||          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)superget_netloc_and_authr
   )r   r8   r9   	__class__s      r   r=   zSubversion.get_netloc_and_authI   s8     U?? 77..vv>>>%f---r   urlc                     t                                          |          \  }}}|                    d          rd|z   }|||fS )Nzssh://zsvn+)r<   get_url_rev_and_authr-   )r   r?   r   	user_passr>   s       r   rA   zSubversion.get_url_rev_and_authX   sM     $gg::3??S)>>(## 	3,CC""r   usernamepasswordc                 .    g }| r|d| gz  }|r|d|gz  }|S )Nz
--usernamez
--passwordr   )rC   rD   
extra_argss      r   make_rev_argszSubversion.make_rev_args`   s=     #%
 	3<22J 	3<22Jr   c                    |}t          |          sX|}t          j                            |          }||k    r"t                              d|           t          t          |          X|                     |          \  }}|t          |S )NzMCould not find Python project for directory %s (tried all parent directories))r	   r%   r)   r'   loggerwarningr   r,   )r   r!   orig_locationlast_locationr?   _revs         r   get_remote_urlzSubversion.get_remote_urll   s     !$X.. 	*$Mwx00H=(( *!  
 *) %X.. 	* ((22	T;%%
r   c                    ddl m} t          j                            || j        d          }t          j                            |          r<t          |          5 }|                                }d d d            n# 1 swxY w Y   nd}d }|	                    d          s*|	                    d          s|	                    d          rct          t          t          j        |                    d                              }|d         d= |d         d	         }d
 |D             dgz   }n|	                    d          rlt                              |          }	|	st#          d|          |	                    d          }d t&                              |          D             dgz   }n	 |                     dd|gdd          }
t,                              |
          }	|	J |	                    d          }d t.                              |
          D             }n# |$ r d g }}Y nw xY w|rt1          |          }nd}||fS )Nr   )InstallationErrorr#    8910z

   c                 n    g | ]2}t          |          d k    |d          t          |d                    3S )	   )lenint).0ds     r   
<listcomp>z/Subversion._get_svn_url_rev.<locals>.<listcomp>   s5    FFF!#a&&1**1*C!II***r   z<?xmlzBadly formatted data:    c                 R    g | ]$}t          |                    d                     %S r]   rY   grouprZ   ms     r   r\   z/Subversion._get_svn_url_rev.<locals>.<listcomp>   s(    HHHC

OOHHHr   infoz--xmlFTshow_stdoutstdout_onlyc                 R    g | ]$}t          |                    d                     %S r_   r`   rb   s     r   r\   z/Subversion._get_svn_url_rev.<locals>.<listcomp>   s(    TTTAAGGAJJTTTr   )pip._internal.exceptionsrP   r%   r)   r*   r'   r+   openreadr-   listmapr/   
splitlinessplit_svn_xml_url_research
ValueErrorra   _svn_rev_refinditerrun_command_svn_info_xml_url_re_svn_info_xml_rev_rer.   )r   r!   rP   entries_pathfdatar?   r#   revsmatchxmlr   s               r   r,   zSubversion._get_svn_url_rev   s   >>>>>>w||Hck9EE7>>,'' 	l##  qvvxx                              D??3 	%4??3#7#7 	%4??4;P;P 	%3s~tzz*/E/EFFGGG
1!*Q-CFFwFFF!LDD__W%% 	%#**400E D !B$!B!BCCC++a..CHH[-A-A$-G-GHHHA3NDD% ooWh/ % $ &  
 -33C88(((kk!nnTT1E1N1Ns1S1STTT$ % % % "T%  	d))CCCCxs%   A<<B B 0A2H# #	H/.H/destnamec                     dS )z&Always assume the versions don't matchFr   )r   r~   r   s      r   is_commit_id_equalzSubversion.is_commit_id_equal   s	     ur   Nuse_interactivec                     |t                      }|| _        d | _        t                                                       d S N)r   r   _vcs_versionr<   __init__)selfr   r>   s     r   r   zSubversion.__init__   sB    "466O. 8<r   .c                    d}|                      dgdd          }|                    |          sdS |t          |          d                                         d         }|                    d	          d                             d
          }	 t          t          t          |                    }n# t          $ r Y dS w xY w|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	--versionFTre   r   Nr   -.)	ru   r-   rX   ro   	partitiontuplerm   rY   rr   )r   version_prefixversionversion_listparsed_versions        r   call_vcs_versionzSubversion.call_vcs_version   s     )""K=eQU"VV!!.11 	2#n--//06688;((--a066s;;	"3sL#9#9::NN 	 	 	22	 s   "B4 4
CCc                 X    | j         | j         S |                                 }|| _         |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.
        )r   r   )r   vcs_versions     r   get_vcs_versionzSubversion.get_vcs_version   s7     ( $$++--'r   c                 T    | j         sdgS |                                 }|dk    rdgS g S )aC  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
            - switch
            - update

        :return: A list of command line arguments to pass to ``svn``.
        z--non-interactive)r]      z--force-interactive)r   r   )r   svn_versions     r   get_remote_call_optionsz"Subversion.get_remote_call_options   sF     # 	) (((**,, &  )**	r   rev_options	verbosityc                 2   |                                 }t                              d||t          |                     |dk    rd}nd}t	          d||                                 |                                ||          }|                     |           d S )NzChecking out %s%s to %sr   z--quietrQ   r   )
to_displayrI   rd   r   r   r   to_argsru   )r   r~   r?   r   r   rev_displayflagcmd_argss           r   	fetch_newzSubversion.fetch_new  s     ",,..%		
 	
 	
 >>DDD((**!!
 
 	"""""r   c                     t          d|                                 |                                ||          }|                     |           d S )Nswitchr   r   r   ru   r   r~   r?   r   r   s        r   r   zSubversion.switch0  sT    ((**!!
 
 	"""""r   c                     t          d|                                 |                                |          }|                     |           d S )Nupdater   r   s        r   r   zSubversion.update:  sQ    ((**!!	
 
 	"""""r   r   )$__name__
__module____qualname__r   r'   	repo_nameschemesclassmethodr/   boolr   staticmethodr   r    r7   r   r   r=   r   rA   r   r   rG   rN   rY   r,   r   r   r   r   r   r   r   r   r   __classcell__)r>   s   @r   r   r      s|       DGIIG3 4    [ s tCy    \ C C    [8 .."%.	sE(3-#677	8. . . . . [. #s #uS(3-5Q/R # # # # # [# 	3-	+3J+?			 	 	 \	 c c    [. / /hsmS6H0I / / / [/b c # 4    [  $      %S/    8sCx    (    >##(#7A#NQ#	# # # #0#3 #Z #j #T # # # ##3 #Z #j #T # # # # # # # #r   r   ) loggingr%   retypingr   r   r   pip._internal.utils.miscr   r   r   r	   r
   pip._internal.utils.subprocessr   r    pip._internal.vcs.versioncontrolr   r   r   r   r   	getLoggerr   rI   compilerp   rs   rw   rv   r   registerr   r   r   <module>r      s    				 				 ( ( ( ( ( ( ( ( ( (              E D D D D D D D              
	8	$	$"*_--bj122!rz"899 !rz"455 c# c# c# c# c# c# c# c#L	 Z     r   