3 Bu_R@sddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z e rddl mZddlmZmZmZmZmZmZddlmZdd lmZejeZejd d Zejd d ZGddde Z!dS))absolute_importN) contextlib2) TempDirectory)MYPY_CHECK_RUNNING) TracebackType)DictIteratorOptionalSetTypeUnion)InstallRequirement)Linkc kstj}t}i}xJ|jD]>\}}y||||<Wntk rN|||<YnX|||<qWz dVWdx:|jD].\}}||kr||=qrt|tst|||<qrWXdS)N)osenvironobjectitemsKeyError isinstancestrAssertionError)changestargetnon_existent_marker saved_valuesname new_valueoriginal_valuer/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-1.el7.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/req/req_tracker.pyupdate_env_context_managers   r ccsttjjd}tjV}|dkrL|jtddj}|jt|dt j d|t | }|VWdQRXWdQRXdS)NPIP_REQ_TRACKERz req-tracker)kind)r!z Initialized build tracking at %s) rrgetr ExitStack enter_contextrpathr loggerdebugRequirementTracker)rootctxtrackerrrrget_requirement_tracker2s    r-c@sReZdZddZddZddZddZd d Zd d Zd dZ e j ddZ dS)r)cCs ||_t|_tjd|jdS)NzCreated build tracker: %s)_rootset_entriesr'r()selfr*rrr__init__DszRequirementTracker.__init__cCstjd|j|S)NzEntered build tracker: %s)r'r(r.)r1rrr __enter__JszRequirementTracker.__enter__cCs |jdS)N)cleanup)r1exc_typeexc_valexc_tbrrr__exit__OszRequirementTracker.__exit__cCs$tj|jjj}tjj|j|S)N) hashlibsha224url_without_fragmentencode hexdigestrr&joinr.)r1linkhashedrrr _entry_pathXszRequirementTracker._entry_pathcCs|js t|j|j}y t|}|j}WdQRXWn0tk rf}z|jtjkrVWYdd}~XnXdj|j|}t |||j kstt|d}|j t |WdQRX|j j |tjd||jdS)z5Add an InstallRequirement to build tracking. Nz{} is already being built: {}wzAdded %s to build tracker %r)r?rrAopenreadIOErrorerrnoENOENTformat LookupErrorr0writeraddr'r(r.)r1req entry_pathfpcontentsemessagerrrrK]s        zRequirementTracker.addcCs<|js ttj|j|j|jj|tjd||j dS)z:Remove an InstallRequirement from build tracking. z Removed %s from build tracker %rN) r?rrunlinkrAr0remover'r(r.)r1rLrrrrS~s  zRequirementTracker.removecCs0xt|jD]}|j|q Wtjd|jdS)NzRemoved build tracker: %r)r/r0rSr'r(r.)r1rLrrrr4szRequirementTracker.cleanupccs|j|dV|j|dS)N)rKrS)r1rLrrrtracks zRequirementTracker.trackN) __name__ __module__ __qualname__r2r3r8rArKrSr4 contextlibcontextmanagerrTrrrrr)Bs ! r))" __future__rrXrFr9loggingr pip._vendorrpip._internal.utils.temp_dirrpip._internal.utils.typingrtypesrtypingrrr r r r Zpip._internal.req.req_installr pip._internal.models.linkr getLoggerrUr'rYr r-rr)rrrrs"