
    Wh.                    N   d dl mZ d dlZd dlZd dl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 )    )annotationsN)
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                  J    e Zd ZdZdZdZdZed4d	            Ze	d5d            Z
ed6d            Zed7 fd            Zed8 fd            Ze	d9d            Zed6d            Zed:d            Zed;d!            Zd<d= fd&Zd>d(Zd>d)Zd?d*Zd@d0Z	 dAd@d2Z	 dAd@d3Z xZS )B
Subversionsvnz.svncheckout)zsvn+sshzsvn+httpz	svn+httpszsvn+svnzsvn+file
remote_urlstrreturnboolc                    dS )NT )clsr   s     n/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/pip/_internal/vcs/subversion.pyshould_add_vcs_url_prefixz$Subversion.should_add_vcs_url_prefix%   s    t    rev	list[str]c                
    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maxr   )	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scheme)tuple[str, tuple[str | None, str | None]]c                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_authJ   s8     U?? 77..vv>>>%f---r   url tuple[str, str | None, AuthInfo]c                    t                                          |          \  }}}|                    d          rd|z   }|||fS )Nzssh://zsvn+)r=   get_url_rev_and_authr.   )r   r@   r   	user_passr?   s       r   rC   zSubversion.get_url_rev_and_authY   sM     $gg::3??S)>>(## 	3,CC""r   username
str | NonepasswordHiddenText | Noner	   c                .    g }| r|d| gz  }|r|d|gz  }|S )Nz
--usernamez
--passwordr   )rE   rG   
extra_argss      r   make_rev_argszSubversion.make_rev_argsa   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_urlk   s     !$X.. 	*$Mwx00H=(( *!  
 *) %X.. 	* ((22	T;%%
r   tuple[str | None, int]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          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 rb   r^   groupr_   ms     r   ra   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 rd   re   rg   s     r   ra   z/Subversion._get_svn_url_rev.<locals>.<listcomp>   s(    TTTAAGGAJJTTTr   )pip._internal.exceptionsrU   r&   r*   r+   r(   r,   openreadr.   listmapr   
splitlinessplit_svn_xml_url_research
ValueErrorrf   _svn_rev_refinditerrun_command_svn_info_xml_url_re_svn_info_xml_rev_rer/   )r   r"   rU   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??+,, 	%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 A2G9 9	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_interactivebool | NoneNonec                    |t                      }|| _        d | _        t                                                       d S N)r   r   _vcs_versionr=   __init__)selfr   r?   s     r   r   zSubversion.__init__   sB    "466O. 59r   tuple[int, ...]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	--versionFTrj   r   Nr   -.)	rz   r.   r]   rt   	partitiontuplerr   r^   rw   )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)rb      z--force-interactive)r   r   )r   svn_versions     r   get_remote_call_optionsz"Subversion.get_remote_call_options   sF     # 	) (((**,, &  )**	r   r   rev_optionsr   	verbosityr^   c                6   |                                 }t                              d||t          |                     |dk    rdg}ng }t	          dg||                                 |                                ||R  }|                     |           d S )NzChecking out %s%s to %sr   z--quietr   )
to_displayrM   ri   r   r
   r   to_argsrz   )r   r   r@   r   r   rev_displayflagscmd_argss           r   	fetch_newzSubversion.fetch_new  s     ",,..%		
 	
 	
 >>KEEE

 ((**
 !!	

 
 
 
 
 	"""""r   r   c                    t          d|                                 |                                ||          }|                     |           d S )Nswitchr
   r   r   rz   r   r   r@   r   r   r   s         r   r   zSubversion.switch/  sV      ((**!!
 
 	"""""r   c                    t          d|                                 |                                |          }|                     |           d S )Nupdater   r   s         r   r   zSubversion.update?  sS      ((**!!	
 
 	"""""r   )r   r   r   r   )r   r   r   r   )r"   r   r   r   )r8   r   r9   r   r   r:   )r@   r   r   rA   )rE   rF   rG   rH   r   r	   )r"   r   r   rS   )r   r   r   rF   r   r   r   )r   r   r   r   )r   r   )r   r	   )
r   r   r@   r   r   r   r   r^   r   r   )r   )__name__
__module____qualname__r   r(   	repo_nameschemesclassmethodr   staticmethodr!   r7   r>   rC   rK   rR   r-   r   r   r   r   r   r   r   r   __classcell__)r?   s   @r   r   r      s       DGIIG   [    \    [8 . . . . . [. # # # # # [#    \    [. / / / [/b    [         8   (   ># # # #: # # # # #* # # # # # # # # #r   r   )
__future__r   loggingr&   repip._internal.utils.miscr   r   r   r   r   pip._internal.utils.subprocessr	   r
    pip._internal.vcs.versioncontrolr   r   r   r   r   	getLoggerr   rM   compileru   rx   r|   r{   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 m# m# m# m# m# m# m# m#`	 Z     r   