a [f@sddlZddlZddlZddlZddlmZddlmZmZm Z m Z m Z m Z ddl mZddlmZddlmZeeZejeedddd Zejed d d d ZGdd d ZdS)N) TracebackType)DictIteratorOptionalSetTypeUnion)Link)InstallRequirement) TempDirectory)changesreturnc kstj}t}i}|D]<\}}z||||<WntyJ|||<Yn0|||<qzBdVW|D].\}}||ur||=qht|tsJ|||<qhn:|D].\}}||ur||=qt|tsJ|||<q0dSN)osenvironobjectitemsKeyError isinstancestr)r targetZnon_existent_markerZ saved_valuesnameZ new_valueoriginal_valuerA/usr/lib/python3.9/site-packages/pip/_internal/req/req_tracker.pyupdate_env_context_managers*   rRequirementTrackerr c cstjd}tt}|durL|tddj}|t|dt d|t |}|VWdn1sp0YWdn1s0YdS)NPIP_REQ_TRACKERz req-tracker)kind)rz Initialized build tracking at %s) rrget contextlib ExitStack enter_contextr pathrloggerdebugr)rootctxZtrackerrrrget_requirement_tracker)s    r)c@seZdZeddddZddddZeeeeeee ddd d Z e ed d d Z e ddddZe ddddZddddZeje eddddZdS)rN)r'r cCs ||_t|_td|jdS)NzCreated build tracker: %s)_rootset_entriesr%r&)selfr'rrr__init__7szRequirementTracker.__init__rcCstd|j|S)NzEntered build tracker: %s)r%r&r*)r-rrr __enter__<szRequirementTracker.__enter__)exc_typeexc_valexc_tbr cCs |dSr)cleanup)r-r0r1r2rrr__exit__@szRequirementTracker.__exit__)linkr cCs$t|j}tj|j|Sr) hashlibZsha224Zurl_without_fragmentencodeZ hexdigestrr$joinr*)r-r5Zhashedrrr _entry_pathHszRequirementTracker._entry_path)reqr cCs|js J||j}z4t|}|}Wdn1s>0YWnty\Yn0d|j|}t|||jvsJt|ddd}|t |Wdn1s0Y|j |t d||j dS)z,Add an InstallRequirement to build tracking.Nz{} is already being built: {}wzutf-8)encodingzAdded %s to build tracker %r)r5r9openreadFileNotFoundErrorformat LookupErrorr,writeraddr%r&r*)r-r:Z entry_pathfpcontentsmessagerrrrCLs   * , zRequirementTracker.addcCs<|js Jt||j|j|td||jdS)z1Remove an InstallRequirement from build tracking.z Removed %s from build tracker %rN) r5runlinkr9r,remover%r&r*r-r:rrrrHhs  zRequirementTracker.removecCs,t|jD]}||q td|jdS)NzRemoved build tracker: %r)r+r,rHr%r&r*rIrrrr3rs zRequirementTracker.cleanupccs||dV||dSr)rCrHrIrrrtrackxs zRequirementTracker.track)__name__ __module__ __qualname__rr.r/rr BaseExceptionrr4r r9r rCrHr3r!contextmanagerrrJrrrrr6s   )r!r6ZloggingrtypesrtypingrrrrrrZpip._internal.models.linkr Zpip._internal.req.req_installr Zpip._internal.utils.temp_dirr Z getLoggerrKr%rOrrr)rrrrrs