Current File : //lib/python3.9/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-39.pyc
a

[��fQ�@s�ddlZddlZddlZddlmZmZddlmZmZddl	m
Z
mZddlm
Z
ddlmZddlmZmZmZmZe�e�ZGdd	�d	e�Ze�e�dS)
�N)�List�Optional)�
BadCommand�InstallationError)�
HiddenText�display_path)�make_command)�path_to_url)�
RevOptions�VersionControl�(find_path_to_project_root_from_repo_root�vcscs�eZdZdZdZdZdZeee	ed�dd��Z
eeedd	�d
d�Z
eeedd	�dd
�Zeeedd	�dd�Zeeed�dd��Zeeed�dd��Zeeed�dd��Zeeeeed�dd��Zeeeed�dd��Zeeeed��fdd��Z�ZS)�	MercurialZhgz.hg�clone)zhg+filezhg+httpzhg+httpszhg+sshzhg+static-http)�rev�returncCs|gS)N�)rrr�?/usr/lib/python3.9/site-packages/pip/_internal/vcs/mercurial.py�get_base_rev_args szMercurial.get_base_rev_argsN)�dest�url�rev_optionsrcCsP|��}t�d||t|��|�tddd||��|jtdd|���|d�dS)NzCloning hg %s%s to %srz
--noupdate�-q�update��cwd)Z
to_display�logger�infor�run_commandr�to_args)�selfrrrZrev_displayrrr�	fetch_new$s��zMercurial.fetch_newc	
Cs�tj�||jd�}t��}zR|�|�|�dd|j�t	|d��}|�
|�Wd�n1s`0YWn8ttjfy�}zt
�d||�WYd}~n(d}~00tdd|���}|j||d�dS)	NZhgrc�paths�default�wz/Could not switch Mercurial repository to %s: %srrr)�os�path�join�dirname�configparserZRawConfigParser�read�setZsecret�open�write�OSErrorZNoSectionErrorrZwarningrrr)	r rrrZrepo_configZconfigZconfig_file�exc�cmd_argsrrr�switch2s
,$zMercurial.switchcCs4|jddg|d�tdd|���}|j||d�dS)NZpullrrr)rrr)r rrrr0rrrr@szMercurial.update)�locationrcCs4|jddgdd|d���}|�|�r,t|�}|��S)NZ
showconfigz
paths.defaultFT��show_stdout�stdout_onlyr)r�stripZ_is_local_repositoryr	)�clsr2rrrr�get_remote_urlEs�

zMercurial.get_remote_urlcCs|jddgdd|d���}|S)zW
        Return the repository-local changeset revision number, as an integer.
        �parentsz--template={rev}FTr3�rr6)r7r2Zcurrent_revisionrrr�get_revisionQs�
zMercurial.get_revisioncCs|jddgdd|d���}|S)zh
        Return the changeset identification hash, as a 40-character
        hexadecimal string
        r9z--template={node}FTr3r:)r7r2Zcurrent_rev_hashrrr�get_requirement_revision^s�
z"Mercurial.get_requirement_revision)r�namercCsdS)z&Always assume the versions don't matchFr)r7rr=rrr�is_commit_id_equallszMercurial.is_commit_id_equalcCsD|jdgdd|d���}tj�|�s:tj�tj�||��}t||�S)z�
        Return the path to Python project root, relative to the repo root.
        Return None if the project root is in the repo root.
        �rootFTr3)rr6r%r&�isabs�abspathr'r)r7r2Z	repo_rootrrr�get_subdirectoryqs
�
zMercurial.get_subdirectorycsvt��|�}|r|Sz|jdg|ddddd�}Wn2tyPt�d|�YdStybYdS0tj�	|�
d��S)Nr?FT�raise)rr4r5Z
on_returncodeZlog_failed_cmdzIcould not determine if %s is under hg control because hg is not availablez
)�super�get_repository_rootrrr�debugrr%r&�normpath�rstrip)r7r2�loc�r��	__class__rrrEs*�
�zMercurial.get_repository_root)�__name__�
__module__�__qualname__r=r(Z	repo_nameZschemes�staticmethod�strrrrr
r!r1r�classmethodr8r;r<r�boolr>rBrE�
__classcell__rrrKrrs*

r)r)Zloggingr%�typingrrZpip._internal.exceptionsrrZpip._internal.utils.miscrrZpip._internal.utils.subprocessrZpip._internal.utils.urlsr	Z pip._internal.vcs.versioncontrolr
rrr
Z	getLoggerrMrr�registerrrrr�<module>s