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|||<qz4dVW|D] \}}||ur||=qh|||<qhn,|D] \}}||ur||=q|||<q0dSN)osenvironobjectitemsKeyError)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+r.r/r0rrr__exit__@szRequirementTracker.__exit__)linkr cCs$t|j}tj|j|Sr) hashlibZsha224Zurl_without_fragmentencodeZ hexdigestrr"joinr()r+r3Zhashedrrr _entry_pathHszRequirementTracker._entry_path)reqr cCs||j}z4t|}|}Wdn1s40YWntyRYn0d|j|}t|t|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)r7r3openreadFileNotFoundErrorformat LookupErrorwritestrr*addr#r$r()r+r8Z entry_pathfpcontentsmessagerrrrBLs  * , zRequirementTracker.addcCs2t||j|j|td||jdS)z1Remove an InstallRequirement from build tracking.z Removed %s from build tracker %rN) runlinkr7r3r*remover#r$r(r+r8rrrrGhs zRequirementTracker.removecCs,t|jD]}||q td|jdS)NzRemoved build tracker: %r)r)r*rGr#r$r(rHrrrr1rs zRequirementTracker.cleanupccs||dV||dSr)rBrGrHrrrtrackxs zRequirementTracker.track)__name__ __module__ __qualname__rAr,r-rr BaseExceptionrr2r r7r rBrGr1rcontextmanagerrrIrrrrr6s   )rr4ZloggingrtypesrtypingrrrrrrZpip._internal.models.linkr Zpip._internal.req.req_installr Zpip._internal.utils.temp_dirr Z getLoggerrJr#rNrArr'rrrrrs