
    dh.                    ^   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       y)    )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                  X    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	 	 	 	 	 	 d fd       Zed fd	       Ze	dd
       Zedd       Zedd       Zedd       Zdd fdZddZddZd dZ	 	 	 	 	 	 	 	 	 	 d!dZ	 d"	 	 	 	 	 	 	 	 	 d!dZ	 d"	 	 	 	 	 	 	 	 	 d!dZ xZS )#
Subversionsvnz.svncheckout)zsvn+sshzsvn+httpz	svn+httpszsvn+svnzsvn+filec                     y)NT )cls
remote_urls     ^/var/www/html/vivango/api/ia/venv/lib/python3.12/site-packages/pip/_internal/vcs/subversion.pyshould_add_vcs_url_prefixz$Subversion.should_add_vcs_url_prefix%   s        c                
    d| gS )Nz-rr   )revs    r   get_base_rev_argszSubversion.get_base_rev_args)   s    c{r   c                   d}t        j                  |      D ]  \  }}}| j                  |vrg |dd |j                  | j                         t         j                  j                  || j                  d      }t         j                  j                  |      s| j                  |      \  }}||k(  r
|J |dz   }n|r|j                  |      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   locationrevisionbasedirs_
entries_fndirurllocalrevs	            r   get_revisionzSubversion.get_revision-   s     WWX. 	/MD${{$&QKK$dCKKCJ77>>*-"33D9FHx)))|6#4#4T#:Q8X.H%	/& 8}r   c                D    |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   netlocscheme	__class__s      r   r8   zSubversion.get_netloc_and_authJ   s+     U? 7.vv>>%f--r   c                `    t         |   |      \  }}}|j                  d      rd|z   }|||fS )Nzssh://zsvn+)r7   get_url_rev_and_authr)   )r   urlr   	user_passr;   s       r   r=   zSubversion.get_url_rev_and_authY   s=     $g:3?S)>>(#3,CC""r   c                .    g }| r|d| gz  }|r|d|gz  }|S )Nz
--usernamez
--passwordr   )usernamepassword
extra_argss      r   make_rev_argszSubversion.make_rev_argsa   s1    "$
<22J<22Jr   c                    |}t        |      sN|}t        j                  j                  |      }||k(  rt        j                  d|       t        t        |      sN| j                  |      \  }}|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wwx0H=( *!
 *) %X. ((2	T;%%
r   c                   ddl m} t        j                  j	                  || j
                  d      }t        j                  j                  |      r%t        |      5 }|j                         }d d d        nd}d }j                  d      rwt        t        t        j                  |j                  d                  }|d   d= |d   d   }|D cg c]%  }t        |      dkD  s|d   st!        |d         ' c}dgz   }	n|j                  d	      rvt"        j%                  |      }
|
st'        d
|      |
j)                  d      }t*        j-                  |      D cg c]  }t!        |j)                  d             c}dgz   }	n|	 | j/                  dd|gdd      }t0        j%                  |      }
|
J |
j)                  d      }t2        j-                  |      D cg c]  }t!        |j)                  d             }	}|	rt5        |	      }||fS d}||fS # 1 sw Y   xY wc c}w c c}w c c}w # |$ r d g }	}Y >w xY w)Nr   )InstallationErrorr    )8910z

   	   z<?xmlzBadly formatted data:    infoz--xmlFTshow_stdoutstdout_only)pip._internal.exceptionsrM   r!   r%   r&   r#   r'   openreadr)   listmapr+   
splitlinessplitlenint_svn_xml_url_research
ValueErrorgroup_svn_rev_refinditerrun_command_svn_info_xml_url_re_svn_info_xml_rev_rer*   )r   r,   rM   entries_pathfdatar>   r   drevsmatchmxmlr   s                 r   r(   zSubversion._get_svn_url_rev   s   >ww||Hckk9E77>>,'l#  qvvx    D??+,3s~~tzz*/EFGG
1!*Q-C'.F!#a&1*1C!IF!LD__W%#**40E #9$!BCC++a.C-8-A-A$-GHC
OHA3ND% ooWh/ % $ & 
 -33C8(((kk!n1E1N1Ns1STAAGGAJTT d)C Cx CCxU    G I" U$ % "T%sI   HH)#H))H) !H.
AH8 "!H3H8 H&3H8 8	IIc                     y)z&Always assume the versions don't matchFr   )r   destnames      r   is_commit_id_equalzSubversion.is_commit_id_equal   s     r   c                V    |
t               }|| _        d | _        t        |           y N)r   use_interactive_vcs_versionr7   __init__)selfry   r;   s     r   r{   zSubversion.__init__   s.    "46O. 59r   c                .   d}| j                  dgdd      }|j                  |      sy|t        |      d j                         d   }|j	                  d	      d   j                  d
      }	 t        t        t        |            }|S # t        $ r Y yw xY w)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	--versionFTrV   r   Nr   -.)	rh   r)   r`   r_   	partitiontupler]   ra   rd   )r|   version_prefixversionversion_listparsed_versions        r   call_vcs_versionzSubversion.call_vcs_version   s     )""K=eQU"V!!.1#n-/0668;((-a066s;	"3sL#9:N   		s   -B 	BBc                d    | j                   | 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.
        )rz   r   )r|   vcs_versions     r   get_vcs_versionzSubversion.get_vcs_version   s:     ( $$$++-'r   c                T    | j                   sdgS | j                         }|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)rT      z--force-interactive)ry   r   )r|   svn_versions     r   get_remote_call_optionsz"Subversion.get_remote_call_options   s>     ## (((**, & )**	r   c                    |j                         }t        j                  d||t        |             |dk  rdg}ng }t	        dg|| j                         |j                         || }| j                  |       y )NzChecking out %s%s to %sr   z--quietr   )
to_displayrF   rU   r   r
   r   to_argsrh   )r|   rt   r>   rev_options	verbosityrev_displayflagscmd_argss           r   	fetch_newzSubversion.fetch_new  s     ",,.%		
 >KEE

 ((*
 !	

 
 
 	"r   c                |    t        d| j                         |j                         ||      }| j                  |       y )Nswitchr
   r   r   rh   r|   rt   r>   r   r   r   s         r   r   zSubversion.switch/  s?      ((*!
 	"r   c                z    t        d| j                         |j                         |      }| j                  |       y )Nupdater   r   s         r   r   zSubversion.update?  s<      ((*!	
 	"r   )r   r+   returnbool)r   r+   r   z	list[str])r,   r+   r   r+   )r9   r+   r:   r+   r   z)tuple[str, tuple[str | None, str | None]])r>   r+   r   z tuple[str, str | None, AuthInfo])rA   
str | NonerB   zHiddenText | Noner   r	   )r,   r+   r   ztuple[str | None, int])rt   r+   ru   r   r   r   rx   )ry   zbool | Noner   None)r   ztuple[int, ...])r   r	   )
rt   r+   r>   r   r   r   r   ra   r   r   )r   )__name__
__module____qualname__ru   r#   	repo_nameschemesclassmethodr   staticmethodr   r4   r8   r=   rD   rK   r(   rv   r{   r   r   r   r   r   r   __classcell__)r;   s   @r   r   r      s   DGIIG     8 .."%.	2. . # #    . / /b  8(>##(#7A#NQ#	#: ## #  	#
 # 
#* ## #  	#
 # 
#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   rF   compilerb   rf   rj   ri   r   registerr   r   r   <module>r      s    "  	 	  E  
		8	$"**_-bjj12!rzz"89 !rzz"45 m# m#`	 Z r   