
}«‘_Û  ã               @   sÛ   d  d l  m Z d  d l Z d  d l Z d  d l Z y d  d l m Z Wn e k
 rh d  d l	 Z Yn Xd  d l
 m Z m Z d  d l m Z m Z d  d l m Z e j e ƒ Z Gd d „  d e ƒ Z e j e ƒ d S)	é    )Úabsolute_importN)Úparse)ÚrmtreeÚdisplay_path)ÚvcsÚVersionControl)Úpath_to_urlc                   s¯   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 ‡  S) ÚBazaarÚbzrz.bzrÚbranchúbzr+httpú	bzr+httpsúbzr+sshúbzr+sftpúbzr+ftpúbzr+lpNc                sX   t  t |  ƒ j | | | Ž t t d d  ƒ rT t j j d g ƒ t j 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-3_sjtvrs/pip/pip/vcs/bazaar.pyr      s    zBazaar.__init__c             C   sp   t  j d d ƒ } |  j | ƒ t j j | ƒ r; t | ƒ z# |  j d | g d | d d ƒWd t | ƒ Xd S)zU
        Export the Bazaar repository at the url to the destination location
        z-exportzpip-ÚexportÚcwdÚshow_stdoutFN)Ú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Úswitchr"   )r*   )r   Údestr   Úrev_optionsr   r   r    r-   5   s    zBazaar.switchc             C   s!   |  j  d d g | d | ƒd  S)NÚpullz-qr"   )r*   )r   r.   r/   r   r   r    Úupdate8   s    zBazaar.updatec             C   s–   |  j  ƒ  \ } } | r1 d | g } d | } n g  } d } |  j | | | | ƒ r’ t j d | | t | ƒ ƒ |  j d d g | | | g ƒ d  S)Nz-rz (to revision %s)Ú zChecking out %s%s to %sr   z-q)Úget_url_revÚcheck_destinationÚloggerÚinfor   r*   )r   r.   r   Úrevr/   Úrev_displayr   r   r    Úobtain;   s    zBazaar.obtainc                s>   t  t |  ƒ j ƒ  \ } } | j d ƒ r4 d | } | | f S)Nzssh://zbzr+)r   r	   r3   Ú
startswith)r   r   r7   )r   r   r    r3   L   s    
zBazaar.get_url_revc             C   s•   |  j  d g d d d | ƒ} xp | j ƒ  D]b } | j ƒ  } xM d D]E } | j | ƒ rD | j | ƒ d } |  j | ƒ r… t | ƒ S| SqD Wq+ Wd  S)	Nr6   r#   Fr"   úcheckout of branch: úparent branch: é   )r;   r<   )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 | ƒ} | j ƒ  d S)NÚrevnor#   Fr"   r=   éÿÿÿÿ)r*   r>   )r   r+   Úrevisionr   r   r    Úget_revision`   s    zBazaar.get_revisionc             C   st   |  j  | ƒ } | s d  S| j ƒ  j d ƒ s8 d | } | j ƒ  j d d ƒ d } |  j | ƒ } d | | | f S)Nzbzr:zbzr+ú-r=   r   z%s@%s#egg=%s)rF   Úlowerr:   Úegg_namer@   rJ   )r   Údistr+   rE   Ú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   r   r    Úcheck_versiono   s    zBazaar.check_version)r
   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__ÚnameÚdirnameÚ	repo_nameÚschemesr   r!   r-   r1   r9   r3   rF   rJ   rQ   rR   r   r   )r   r    r	      s    
r	   )Ú
__future__r   Úloggingr'   r$   Úurllibr   r   ÚImportErrorÚurlparseÚ	pip.utilsr   r   Úpip.vcsr   r   Úpip.downloadr   Ú	getLoggerrS   r5   r	   Úregisterr   r   r   r    Ú<module>   s   _