U .e{ @sddlmZddlZddlZddlZddlZddlZddlmZddl m Z e rddl m Z ddl mZmZmZmZddlmZddlmZeeZGd d d eZdS) )absolute_importN) TempDirectory)MYPY_CHECK_RUNNING) TracebackType)IteratorOptionalSetType)InstallRequirement)Linkc@sReZdZddZddZddZddZd d Zd d Zd dZ e j ddZ dS)RequirementTrackercCsjtjd|_|jdkrJtddd|_|jj|_tjd<td|jnd|_td|jt |_ dS)NZPIP_REQ_TRACKERFz req-tracker)deleteZkindzCreated requirements tracker %rz Re-using requirements tracker %r) osenvironget_rootr _temp_dirpathloggerdebugset_entriesselfrA/usr/lib/python3.8/site-packages/pip/_internal/req/req_tracker.py__init__s zRequirementTracker.__init__cCs|SNrrrrr __enter__&szRequirementTracker.__enter__cCs |dSr)cleanup)rexc_typeZexc_valZexc_tbrrr__exit__*szRequirementTracker.__exit__cCs$t|j}tj|j|Sr) hashlibZsha224Zurl_without_fragmentencodeZ hexdigestrrjoinr)rlinkZhashedrrr _entry_path3szRequirementTracker._entry_pathc Cs|j}t|}||}z,t|}td||fW5QRXWnztk r}z\|jtjkrd||j ksrt t|d}| |W5QRX|j |t d||jW5d}~XYnXdS)Nz%s is already being built: %swzAdded %s to build tracker %r)r%strr&open LookupErrorreadIOErrorerrnoZENOENTrAssertionErrorwriteaddrrr)rreqr%infoZ entry_pathfperrrr08s       zRequirementTracker.addcCs6|j}|j|t||td||jdS)Nz Removed %s from build tracker %r) r%rremoverunlinkr&rrr)rr1r%rrrr5Ks zRequirementTracker.removecCsNt|jD]}||q |jdk }|r2|jtd|r@dnd|jdS)Nz%s build tracker %rZRemovedZCleaned)rrr5rrrrr)rr1r5rrrrRs    zRequirementTracker.cleanupccs||dV||dSr)r0r5)rr1rrrtrack]s zRequirementTracker.trackN) __name__ __module__ __qualname__rrr!r&r0r5r contextlibcontextmanagerr7rrrrr s   r )Z __future__rr;r-r"ZloggingrZpip._internal.utils.temp_dirrZpip._internal.utils.typingrtypesrtypingrrrr Zpip._internal.req.req_installr Zpip._internal.models.linkr Z getLoggerr8robjectr rrrrs