o
    hv                     @   s   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	 d dl
mZmZ d dlmZ d dlmZ d dlmZmZmZmZ eeZG dd	 d	eZee dS )
    N)ListOptionalTuple)
BadCommandInstallationError)
HiddenTextdisplay_path)make_command)path_to_url)
RevOptionsVersionControl(find_path_to_project_root_from_repo_rootvcsc                
       s$  e Zd ZdZdZdZdZedede	e fddZ
d	ed
edededdf
ddZd	ed
ededdfddZd	ed
ededdfddZededefddZededefddZededefddZed	edee defddZededee fddZededee f fd d!Z  ZS )"	Mercurialhgz.hgclone)zhg+filezhg+httpzhg+httpszhg+sshzhg+static-httprevreturnc                 C   s   | gS )N )r   r   r   W/var/www/html/olx_land/venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.pyget_base_rev_args    s   zMercurial.get_base_rev_argsdesturlrev_options	verbosityNc                 C   s   |  }td||t| |dkrd}n|dkrd}n	|dkr#d}nd}| td	d
g|||R   | jtdg|| R  |d d S )NzCloning hg %s%s to %sr   )z--quiet   r      )	--verbose)r   z--debugr   z
--noupdateupdatecwd)
to_displayloggerinfor   run_commandr	   to_args)selfr   r   r   r   rev_displayflagsr   r   r   	fetch_new$   s&    
zMercurial.fetch_newc           	   
   C   s   t j|| jd}t }z)|| |dd|j t	|d}|
| W d    n1 s0w   Y  W n ttjfyS } ztd|| W Y d }~d S d }~ww tdd| }| j||d d S )	Nhgrcpathsdefaultwz/Could not switch Mercurial repository to %s: %sr   -qr   )ospathjoindirnameconfigparserRawConfigParserreadsetsecretopenwriteOSErrorNoSectionErrorr"   warningr	   r%   r$   )	r&   r   r   r   repo_configconfigconfig_fileexccmd_argsr   r   r   switch<   s   
zMercurial.switchc                 C   s4   | j ddg|d tdd| }| j ||d d S )Npullr.   r   r   )r$   r	   r%   )r&   r   r   r   rA   r   r   r   r   J   s   zMercurial.updatelocationc                 C   s4   | j ddgdd|d }| |rt|}| S )N
showconfigzpaths.defaultFTshow_stdoutstdout_onlyr    )r$   strip_is_local_repositoryr
   )clsrD   r   r   r   r   get_remote_urlO   s   
zMercurial.get_remote_urlc                 C      | j ddgdd|d }|S )zW
        Return the repository-local changeset revision number, as an integer.
        parentsz--template={rev}FTrF   r$   rI   )rK   rD   current_revisionr   r   r   get_revision[   s   zMercurial.get_revisionc                 C   rM   )zh
        Return the changeset identification hash, as a 40-character
        hexadecimal string
        rN   z--template={node}FTrF   rO   )rK   rD   current_rev_hashr   r   r   get_requirement_revisionh   s   z"Mercurial.get_requirement_revisionnamec                 C   s   dS )z&Always assume the versions don't matchFr   )rK   r   rT   r   r   r   is_commit_id_equalv   s   zMercurial.is_commit_id_equalc                 C   sD   | j dgdd|d }tj|stjtj||}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.
        rootFTrF   )r$   rI   r/   r0   isabsabspathr1   r   )rK   rD   	repo_rootr   r   r   get_subdirectory{   s   

zMercurial.get_subdirectoryc                    sv   t  |}|r
|S z| jdg|ddddd}W n ty(   td| Y d S  ty1   Y d S w tj	|
dS )NrV   FTraise)r    rG   rH   on_returncodelog_failed_cmdzIcould not determine if %s is under hg control because hg is not availablez
)superget_repository_rootr$   r   r"   debugr   r/   r0   normpathrstrip)rK   rD   locr	__class__r   r   r_      s,   
zMercurial.get_repository_root)__name__
__module____qualname__rT   r2   	repo_nameschemesstaticmethodstrr   r   r   r   intr)   rB   r   classmethodrL   rQ   rS   r   boolrU   rZ   r_   __classcell__r   r   re   r   r      s@    
$r   )r3   loggingr/   typingr   r   r   pip._internal.exceptionsr   r   pip._internal.utils.miscr   r   pip._internal.utils.subprocessr	   pip._internal.utils.urlsr
    pip._internal.vcs.versioncontrolr   r   r   r   	getLoggerrg   r"   r   registerr   r   r   r   <module>   s    
 