U
    KQh                     @   s   d dl mZ d dlZd dlZd dlZzd dlmZ W n ek
rP   d dl	ZY nX d dl
mZmZ d dlmZmZ d dlmZ eeZG dd deZee dS )	    )absolute_importN)parse)rmtreedisplay_path)vcsVersionControl)path_to_urlc                       sz   e Zd ZdZdZdZdZd fdd	Zdd	 Zd
d Z	dd Z
dd Z fddZdd Zdd Zdd Zdd Z  ZS )Bazaarbzrz.bzrbranch)r
   zbzr+httpz	bzr+httpszbzr+sshzbzr+sftpzbzr+ftpzbzr+lpNc                    sD   t t| j|f|| ttdd r@tjdg tjdg d S )Nuses_fragmentlp)superr	   __init__getattrurllib_parser   extendnon_hierarchical)selfurlargskwargs	__class__ -/tmp/pip-build-tlro1kwj/pip/pip/vcs/bazaar.pyr      s    zBazaar.__init__c                 C   sR   t dd}| | tj|r*t| z| jd|g|dd W 5 t| X dS )zU
        Export the Bazaar repository at the url to the destination location
        z-exportzpip-exportF)cwdshow_stdoutN)tempfilemkdtempunpackospathexistsr   run_command)r   locationtemp_dirr   r   r   r   &   s    

zBazaar.exportc                 C   s   | j d|g|d d S )Nswitchr   r%   )r   destr   rev_optionsr   r   r   r(   5   s    zBazaar.switchc                 C   s   | j ddg| |d d S )Npull-qr)   r*   r   r+   r,   r   r   r   update8   s    zBazaar.updatec                 C   sl   |   \}}|r"d|g}d| }ng }d}| ||||rhtd||t| | ddg| ||g  d S )Nz-rz (to revision %s) zChecking out %s%s to %sr   r.   )get_url_revcheck_destinationloggerinfor   r%   )r   r+   r   revr,   rev_displayr   r   r   obtain;   s    
zBazaar.obtainc                    s,   t t|  \}}|dr$d| }||fS )Nzssh://bzr+)r   r	   r2   
startswith)r   r   r6   r   r   r   r2   L   s    
zBazaar.get_url_revc                 C   st   | j dgd|d}| D ]T}| }dD ]B}||r*||d }| |r`t|    S |    S q*qd S )Nr5   Fr   r   )zcheckout of branch: zparent branch:    )r%   
splitlinesstripr:   split_is_local_repositoryr   )r   r&   urlslinexrepor   r   r   get_urlS   s    

zBazaar.get_urlc                 C   s   | j dgd|d}| d S )NrevnoFr;   )r%   r=   )r   r&   revisionr   r   r   get_revision`   s      zBazaar.get_revisionc                 C   sT   |  |}|sd S | ds(d| }| ddd }| |}d|||f S )Nzbzr:r9   -r<   r   z%s@%s#egg=%s)rE   lowerr:   egg_namer?   rI   )r   distr&   rD   egg_project_namecurrent_revr   r   r   get_src_requiremente   s    

zBazaar.get_src_requirementc                 C   s   dS )z&Always assume the versions don't matchFr   r/   r   r   r   check_versiono   s    zBazaar.check_version)N)__name__
__module____qualname__namedirname	repo_nameschemesr   r   r(   r0   r8   r2   rE   rI   rP   rQ   __classcell__r   r   r   r   r	      s   
r	   )
__future__r   loggingr"   r   urllibr   r   ImportErrorurlparse	pip.utilsr   r   pip.vcsr   r   pip.downloadr   	getLoggerrR   r4   r	   registerr   r   r   r   <module>   s   
_