ó
b]c           @@  sð   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l	 m
 Z
 e
 rÇ d  d l m Z d  d l m Z m Z m Z m Z d  d l m Z d  d l m Z n  e j e ƒ Z d	 e f d
 „  ƒ  YZ d S(   i    (   t   absolute_importN(   t   TempDirectory(   t   MYPY_CHECK_RUNNING(   t   TracebackType(   t   Iteratort   Optionalt   Sett   Type(   t   InstallRequirement(   t   Linkt   RequirementTrackerc           B@  sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e	 j
 d „  ƒ Z RS(   c         C@  s¥   t  j j d ƒ |  _ |  j d  k ry t d t d d ƒ |  _ |  j j ƒ  |  j j	 |  _ t  j d <t
 j d |  j ƒ n d  |  _ t
 j d |  j ƒ t ƒ  |  _ d  S(   Nt   PIP_REQ_TRACKERt   deletet   kinds   req-trackers   Created requirements tracker %rs    Re-using requirements tracker %r(   t   ost   environt   gett   _roott   NoneR   t   Falset	   _temp_dirt   createt   patht   loggert   debugt   sett   _entries(   t   self(    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyt   __init__   s    	c         C@  s   |  S(   N(    (   R   (    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyt	   __enter__$   s    c         C@  s   |  j  ƒ  d  S(   N(   t   cleanup(   R   t   exc_typet   exc_valt   exc_tb(    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyt   __exit__(   s    c         C@  s4   t  j | j j ƒ  ƒ j ƒ  } t j j |  j | ƒ S(   N(	   t   hashlibt   sha224t   url_without_fragmentt   encodet	   hexdigestR   R   t   joinR   (   R   t   linkt   hashed(    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyt   _entry_path1   s    c         C@  së   | j  } t | ƒ } |  j | ƒ } y5 t | ƒ # } t d | | j ƒ  f ƒ ‚ Wd  QXWn‹ t k
 ræ } | j t j k rƒ ‚  n  | |  j	 k s˜ t
 ‚ t | d ƒ  } | j | ƒ Wd  QX|  j	 j | ƒ t j d | |  j ƒ n Xd  S(   Ns   %s is already being built: %st   ws   Added %s to build tracker %r(   R)   t   strR+   t   opent   LookupErrort   readt   IOErrort   errnot   ENOENTR   t   AssertionErrort   writet   addR   R   R   (   R   t   reqR)   t   infot
   entry_patht   fpt   e(    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyR6   6   s    	 c         C@  sI   | j  } |  j j | ƒ t j |  j | ƒ ƒ t j d | |  j ƒ d  S(   Ns    Removed %s from build tracker %r(	   R)   R   t   removeR   t   unlinkR+   R   R   R   (   R   R7   R)   (    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyR<   I   s    	c         C@  sr   x$ t  |  j ƒ D] } |  j | ƒ q W|  j d  k	 } | rL |  j j ƒ  n  t j d | ra d n d |  j ƒ d  S(   Ns   %s build tracker %rt   Removedt   Cleaned(	   R   R   R<   R   R   R   R   R   R   (   R   R7   R<   (    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyR   P   s    	c         c@  s#   |  j  | ƒ d  V|  j | ƒ d  S(   N(   R6   R<   (   R   R7   (    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyt   track[   s    (   t   __name__t
   __module__R   R   R"   R+   R6   R<   R   t
   contextlibt   contextmanagerR@   (    (    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyR
      s   								(   t
   __future__R    RC   R2   R#   t   loggingR   t   pip._internal.utils.temp_dirR   t   pip._internal.utils.typingR   t   typesR   t   typingR   R   R   R   t   pip._internal.req.req_installR   t   pip._internal.models.linkR	   t	   getLoggerRA   R   t   objectR
   (    (    (    s<   lib/python2.7/site-packages/pip/_internal/req/req_tracker.pyt   <module>   s   "