3 ”ReRã@sÚddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z e r ddl mZddlmZmZmZmZmZmZddlmZdd lmZejeƒZejd d „ƒZejd d „ƒZGdd„de ƒZ!dS)é)Úabsolute_importN)Ú contextlib2)Ú TempDirectory)ÚMYPY_CHECK_RUNNING)Ú TracebackType)ÚDictÚIteratorÚOptionalÚSetÚTypeÚUnion)ÚInstallRequirement)ÚLinkc ksªtj}tƒ}i}xJ|jƒD]>\}}y||||<Wntk rN|||<YnX|||<qWz dVWdx:|jƒD].\}}||krŠ||=qrt|tƒs˜t‚|||<qrWXdS)N)ÚosÚenvironÚobjectÚitemsÚKeyErrorÚ isinstanceÚstrÚAssertionError)ÚchangesÚtargetÚnon_existent_markerÚ saved_valuesÚnameÚ new_valueÚoriginal_value©rúŒ/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/req/req_tracker.pyÚupdate_env_context_managers   r ccsttjjdƒ}tjƒ�V}|dkrL|jtdd�ƒj}|jt|d�ƒt j d|ƒt |ƒ� }|VWdQRXWdQRXdS)NÚPIP_REQ_TRACKERz req-tracker)Úkind)r!z Initialized build tracking at %s) rrÚgetrÚ ExitStackÚ enter_contextrÚpathr ÚloggerÚdebugÚRequirementTracker)ÚrootÚctxÚtrackerrrrÚget_requirement_tracker2s    r-c@sReZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z e j dd„ƒZ dS)r)cCs ||_tƒ|_tjd|jƒdS)NzCreated build tracker: %s)Ú_rootÚsetÚ_entriesr'r()Úselfr*rrrÚ__init__DszRequirementTracker.__init__cCstjd|jƒ|S)NzEntered build tracker: %s)r'r(r.)r1rrrÚ __enter__JszRequirementTracker.__enter__cCs |jƒdS)N)Úcleanup)r1Úexc_typeÚexc_valÚexc_tbrrrÚ__exit__OszRequirementTracker.__exit__cCs$tj|jjƒƒjƒ}tjj|j|ƒS)N) ÚhashlibÚsha224Úurl_without_fragmentÚencodeÚ hexdigestrr&Újoinr.)r1ÚlinkÚhashedrrrÚ _entry_pathXszRequirementTracker._entry_pathcCsÐ|js t‚|j|jƒ}y t|ƒ�}|jƒ}WdQRXWn0tk rf}z|jtjkrV‚WYdd}~XnXdj|j|ƒ}t |ƒ‚||j ksŒt‚t|dƒ�}|j t |ƒƒWdQRX|j j |ƒtjd||jƒdS)z5Add an InstallRequirement to build tracking. Nz{} is already being built: {}ÚwzAdded %s to build tracker %r)r?rrAÚopenÚreadÚIOErrorÚerrnoÚENOENTÚformatÚ LookupErrorr0ÚwriterÚaddr'r(r.)r1ÚreqÚ entry_pathÚfpÚcontentsÚeÚmessagerrrrK]s        zRequirementTracker.addcCs<|js t‚tj|j|jƒƒ|jj|ƒtjd||j ƒdS)z:Remove an InstallRequirement from build tracking. z Removed %s from build tracker %rN) r?rrÚunlinkrAr0Úremover'r(r.)r1rLrrrrS~s  zRequirementTracker.removecCs0xt|jƒD]}|j|ƒq Wtjd|jƒdS)NzRemoved build tracker: %r)r/r0rSr'r(r.)r1rLrrrr4ŠszRequirementTracker.cleanupccs|j|ƒdV|j|ƒdS)N)rKrS)r1rLrrrÚtrack‘s zRequirementTracker.trackN) Ú__name__Ú __module__Ú __qualname__r2r3r8rArKrSr4Ú contextlibÚcontextmanagerrTrrrrr)Bs ! r))"Ú __future__rrXrFr9ÚloggingrÚ pip._vendorrÚpip._internal.utils.temp_dirrÚpip._internal.utils.typingrÚtypesrÚtypingrrr r r r Zpip._internal.req.req_installr Úpip._internal.models.linkrÚ getLoggerrUr'rYr r-rr)rrrrÚs"