Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ÝPfñã@sšddlmZddlZddlZddlZddlmZmZmZddl m Z ddl m Z m Z mZmZmZddlmZejeƒZGdd„deƒZGd d „d eƒZdS) é)Úabsolute_importN)Ú uses_pycacheÚWINDOWSÚcache_from_source)ÚUninstallationError)ÚrmtreeÚaskÚis_localÚrenamesÚnormalize_path)Ú indent_logc@sZeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z ddd„Z dd„Z dd„Z dS)ÚUninstallPathSetzMA set of file paths to be removed in the uninstallation of a requirement.cCs,tƒ|_tƒ|_i|_||_d|_g|_dS)N)ÚsetÚpathsÚ_refuseÚpthÚdistÚsave_dirÚ _moved_paths)Úselfr©rú#/usr/lib/python3.6/req_uninstall.pyÚ__init__s zUninstallPathSet.__init__cCst|ƒS)zs Return True if the given path is one we are permitted to remove/modify, False otherwise. )r )rÚpathrrrÚ _permittedszUninstallPathSet._permittedcCsˆtjj|ƒ\}}tjjt|ƒtjj|ƒƒ}tjj|ƒs:dS|j|ƒrR|jj |ƒn |j j |ƒtjj |ƒddkr„t r„|j t |ƒƒdS)Néz.py)ÚosrÚsplitÚjoinr ÚnormcaseÚexistsrrÚaddrÚsplitextrr)rrÚheadÚtailrrrr!#s   zUninstallPathSet.addcCsLt|ƒ}|j|ƒr<||jkr*t|ƒ|j|<|j|j|ƒn |jj|ƒdS)N)r rrÚUninstallPthEntriesr!r)rÚpth_fileÚentryrrrÚadd_pth6s   zUninstallPathSet.add_pthcs@tƒ}x4t|td�D]$‰t‡fdd„|Dƒƒs|jˆƒqW|S)zÔCompact a path set to contain the minimal number of paths necessary to contain all paths in the set. If /a/path/ and /a/path/to/a/file.txt are both in the set, leave only the shorter path.)Úkeycs4g|],}ˆj|ƒo.ˆt|jtjjƒƒtjjk‘qSr)Ú startswithÚlenÚrstriprrÚsep)Ú.0Z shortpath)rrrú Gsz,UninstallPathSet.compact..)rÚsortedr+Úanyr!)rrZ short_pathsr)rrÚcompact?s  zUninstallPathSet.compactcCs&tjj|jtjj|ƒdjtjjƒƒS)Nr)rrrrÚ splitdriveÚlstripr-)rrrrrÚ_stashMszUninstallPathSet._stashFc Cs:|jstjd|jjƒdStjd|jj|jjƒtƒ�út|j|jƒƒ}|rRd}n"x|D]}tj|ƒqXWt dd ƒ}|j r¤tjdƒx|j|j ƒD]}tj|ƒq’W|dk�r,t j dd d �|_ x8|D]0}|j|ƒ}tjd |ƒ|jj|ƒt||ƒqÄWx|jjƒD]}|jƒ�qWtjd |jj|jjƒWdQRXdS)z[Remove paths in ``self.paths`` with confirmation (unless ``auto_confirm`` is True).z7Can't uninstall '%s'. No files were found to uninstall.NzUninstalling %s-%s:ÚyzProceed (y/n)? Únz.Not removing or modifying (outside of prefix):z -uninstallzpip-)ÚsuffixÚprefixzRemoving file or directory %szSuccessfully uninstalled %s-%s)r6r7)rÚloggerÚinforÚ project_nameÚversionr r0r2rrÚtempfileZmkdtemprr5ÚdebugrÚappendr rÚvaluesÚremove)rZ auto_confirmrZresponserÚnew_pathrrrrrBQs@          zUninstallPathSet.removecCs~|jdkrtjd|jjƒdStjd|jjƒx.|jD]$}|j|ƒ}tjd|ƒt ||ƒq6Wx|j j ƒD] }|j ƒqjWdS)z1Rollback the changes previously made by remove().Nz'Can't roll back %s; was not uninstalledFzRolling back uninstall of %sz Replacing %s) rr:Úerrorrr<r;rr5r?r rrAÚrollback)rrZtmp_pathrrrrrE{s     zUninstallPathSet.rollbackcCs$|jdk r t|jƒd|_g|_dS)z?Remove temporary save dir: rollback will no longer be possible.N)rrr)rrrrÚcommit‹s  zUninstallPathSet.commitN)F) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrr!r(r2r5rBrErFrrrrr s  *r c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) r%cCs0tjj|ƒstd|ƒ‚||_tƒ|_d|_dS)Nz.Cannot remove entries from nonexistent file %s)rrÚisfilerÚfilerÚentriesÚ _saved_lines)rr&rrrr”s   zUninstallPthEntries.__init__cCs>tjj|ƒ}tr.tjj|ƒd r.|jddƒ}|jj|ƒdS)Nrú\ú/)rrrrr3ÚreplacerMr!)rr'rrrr!�s  zUninstallPthEntries.addcCsÀtjd|jƒt|jdƒ�}|jƒ}||_WdQRXtdd„|DƒƒrLd}nd}xH|jD]>}y$tjd|ƒ|j||j dƒƒWqXt k r”YqXXqXWt|jd ƒ�}|j |ƒWdQRXdS) NzRemoving pth entries from %s:Úrbcss|]}d|kVqdS)s Nr)r.Úlinerrrú ­sz-UninstallPthEntries.remove..z Ú zRemoving entry: %szutf-8Úwb) r:r?rLÚopenÚ readlinesrNr1rMrBÚencodeÚ ValueErrorÚ writelines)rÚfhÚlinesZendliner'rrrrB§s   zUninstallPthEntries.removec CsR|jdkrtjd|jƒdStjd|jƒt|jdƒ�}|j|jƒWdQRXdS)Nz.Cannot roll back changes to %s, none were madeFz!Rolling %s back to previous staterVT)rNr:rDrLr?rWr[)rr\rrrrEºs  zUninstallPthEntries.rollbackN)rGrHrIrr!rBrErrrrr%“s  r%)Z __future__rZloggingrr>Z pip.compatrrrZpip.exceptionsrZ pip.utilsrrr r r Zpip.utils.loggingr Z getLoggerrGr:Úobjectr r%rrrrÚs