B ReR@sddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z e rddl mZddlmZmZmZmZmZmZddlmZdd lmZeeZejd d Zejd d ZGddde Z!dS))absolute_importN) contextlib2) TempDirectory)MYPY_CHECK_RUNNING) TracebackType)DictIteratorOptionalSetTypeUnion)InstallRequirement)Linkc kstj}t}i}xJ|D]>\}}y||||<Wntk rN|||<YnX|||<qWz dVWdx:|D].\}}||kr||=qrt|tst|||<qrWXdS)N)osenvironobjectitemsKeyError isinstancestrAssertionError)changestargetnon_existent_marker saved_valuesname new_valueoriginal_valuer/builddir/build/BUILDROOT/alt-python37-pip-20.2.4-6.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/pip/_internal/req/req_tracker.pyupdate_env_context_managers   r c csttjd}tV}|dkrL|tddj}|t|dt 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|_td|jdS)NzCreated build tracker: %s)_rootset_entriesr'r()selfr*rrr__init__DszRequirementTracker.__init__cCstd|j|S)NzEntered build tracker: %s)r'r(r.)r1rrr __enter__JszRequirementTracker.__enter__cCs |dS)N)cleanup)r1exc_typeexc_valexc_tbrrr__exit__OszRequirementTracker.__exit__cCs$t|j}tj|j|S)N) hashlibsha224url_without_fragmentencode hexdigestrr&joinr.)r1linkhashedrrr _entry_pathXszRequirementTracker._entry_pathc Cs|js t||j}y t|}|}WdQRXWn0tk rf}z|jtjkrVWdd}~XYnXd|j|}t |||j kstt|d}| t |WdQRX|j |td||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 tt||j|j|td||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]}||q Wtd|jdS)NzRemoved build tracker: %r)r/r0rSr'r(r.)r1rLrrrr4szRequirementTracker.cleanupccs||dV||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"