
    *,h-                     f   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j2                  d      Z ej2                  d      Z ej2                  d      Z ej2                  d	      Z G d
 de      Z ej>                  e       y)    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                      y)NT )clsr   s     ^/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/pip/_internal/vcs/subversion.pyshould_add_vcs_url_prefixz$Subversion.should_add_vcs_url_prefix$   s        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                  | 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   r!   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   netlocschemec                 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   r8   r9   	__class__s      r   r=   zSubversion.get_netloc_and_authI   s+     U? 7.vv>>%f--r   urlc                 `    t         |   |      \  }}}|j                  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   s=     $g: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`   s3     #%
<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_urll   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      s"|j                  d      s|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.exceptionsrP   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!   rP   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??34??3#74??4;P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>1III!I,AI !I%I >II 	I&%I&destnamec                      y)z&Always assume the versions don't matchFr   )r   rv   rw   s      r   is_commit_id_equalzSubversion.is_commit_id_equal   s     r   Nuse_interactivec                 V    |
t               }|| _        d | _        t        |           y N)r   rz   _vcs_versionr<   __init__)selfrz   r>   s     r   r~   zSubversion.__init__   s.    "46O. 8<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	--versionFTrY   r   Nr   -.)	rk   r-   rc   rb   	partitiontupler`   rd   rg   )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.
        )r}   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)rW      z--force-interactive)rz   r   )r   svn_versions     r   get_remote_call_optionsz"Subversion.get_remote_call_options   s>     ## (((**, & )**	r   rev_options	verbosityc                     |j                         }t        j                  d||t        |             |dk  rd}nd}t	        d|| j                         |j                         ||      }| j                  |       y )NzChecking out %s%s to %sr   z--quietrQ   r   )
to_displayrI   rX   r   r   r   to_argsrk   )r   rv   r?   r   r   rev_displayflagcmd_argss           r   	fetch_newzSubversion.fetch_new  s     ",,.%		
 >DD((*!
 	"r   c                 |    t        d| j                         |j                         ||      }| j                  |       y )Nswitchr   r   r   rk   r   rv   r?   r   r   s        r   r   zSubversion.switch0  s=    ((*!
 	"r   c                 z    t        d| j                         |j                         |      }| j                  |       y )Nupdater   r   s        r   r   zSubversion.update:  s:    ((*!	
 	"r   r|   )$__name__
__module____qualname__rw   r'   	repo_nameschemesclassmethodr/   boolr   staticmethodr   r    r7   r   r   r=   r   rA   r   r   rG   rN   rd   r,   ry   r~   r   r   r   r   r   r   r   __classcell__)r>   s   @r   r   r      sh   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   compilere   ri   rm   rl   r   registerr   r   r   <module>r      s     	 	 ( (  E  
		8	$"**_-bjj12!rzz"89 !rzz"45 c# c#L	 Z r   