U ��.e0�@s�ddlmZddlZddlZddlZddlmZddlmZm Z m Z m Z ddl m Z ddlmZddlmZmZe�d�Ze�d �Ze�d �Ze�d �Zer�dd lmZmZdd l mZddlmZddlmZmZe�e �Z!Gdd�de�Z"e�#e"�dS)�)�absolute_importN)� indent_log)� display_path�is_console_interactive�rmtree�split_auth_from_netloc)� make_command)�MYPY_CHECK_RUNNING)�VersionControl�vcsz url="([^"]+)"zcommitted-rev="(\d+)"z\s*revision="(\d+)"z(.*))�Optional�Tuple)� CommandArgs)� HiddenText)�AuthInfo� RevOptionscs�eZdZdZdZdZdZedd��Ze dd��Z ed d ��Z e�fd d ��Z e�fd d��Z e dd��Zedd��Zedd��Zedd��Zd(�fdd� Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Z�ZS))� Subversion�svnz.svn�checkout)rzsvn+sshzsvn+httpz svn+httpszsvn+svncCsdS)NT�)�clsZ remote_urlrr�@/usr/lib/python3.8/site-packages/pip/_internal/vcs/subversion.py�should_add_vcs_url_prefix+sz$Subversion.should_add_vcs_url_prefixcCsd|gS)Nz-rr)�revrrr�get_base_rev_args/szSubversion.get_base_rev_argsc Cs�d}t�|�D]�\}}}|j|kr0g|dd�<q|�|j�tj�||jd�}tj�|�s\q|�|�\}}||kr||d}n|r�|�|�s�g|dd�<qt ||�}q|S)zR Return the maximum revision for all files under a given location rN�entries�/) �os�walk�dirname�remove�path�join�exists�_get_svn_url_rev� startswith�max) r�locationZrevision�base�dirs�filesZ entries_fnZdirurlZlocalrevrrr� get_revision3s"       zSubversion.get_revisioncs"|dkrtt|��||�St|�S)z� This override allows the auth information to be passed to svn via the --username and --password options instead of via the URL. Zssh)�superr�get_netloc_and_authr)rZnetlocZscheme�� __class__rrr-OszSubversion.get_netloc_and_authcs2tt|��|�\}}}|�d�r(d|}|||fS)Nzssh://zsvn+)r,r�get_url_rev_and_authr%)r�urlrZ user_passr.rrr0\s zSubversion.get_url_rev_and_authcCs(g}|r|d|g7}|r$|d|g7}|S)Nz --usernamez --passwordr)ZusernameZpasswordZ extra_argsrrr� make_rev_argses   zSubversion.make_rev_argscCsR|}tj�tj�|d��sD|}tj�|�}||krt�d|�dSq|�|�dS)Nzsetup.pyzGCould not find setup.py for directory %s (tried all parent directories)r)rr!r#r"r�loggerZwarningr$)rr'Z orig_locationZ last_locationrrr�get_remote_urlps �zSubversion.get_remote_urlc Cspddlm}tj�||jd�}tj�|�rHt|��}|��}W5QRXnd}|� d�sj|� d�sj|� d�r�t t t j |�d���}|dd=|dd }d d �|D�dg}n�|� d �r�t�|�}|s�td |��|�d�}dd �t�|�D�dg}n^z<|jdd|gdd�} t�| ��d�}dd �t�| �D�}Wn |k �rRdg}}YnX|�rdt|�} nd} || fS)Nr)�InstallationErrorr��8�9Z10z �cSs,g|]$}t|�dkr|drt|d��qS)� )�len�int)�.0�drrr� �s z/Subversion._get_svn_url_rev..zs,           *