3 ÝPfñ ã @ sš d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl m Z d dlmZm Z mZmZmZ d dlmZ ejeƒZG dd„ deƒZG d d „ d eƒZdS )é )Úabsolute_importN)Úuses_pycacheÚWINDOWSÚcache_from_source)ÚUninstallationError)ÚrmtreeÚaskÚis_localÚrenamesÚnormalize_path)Ú indent_logc @ sZ e Zd ZdZdd„ Zdd„ Zdd„ Zdd „ Zd d„ Zdd „ Z ddd„Z dd„ Zdd„ ZdS )ÚUninstallPathSetzMA set of file paths to be removed in the uninstallation of a requirement.c C s, t ƒ | _t ƒ | _i | _|| _d | _g | _d S )N)ÚsetÚpathsÚ_refuseÚpthÚdistÚsave_dirÚ_moved_paths)Úselfr © r ú#/usr/lib/python3.6/req_uninstall.pyÚ__init__ s zUninstallPathSet.__init__c C s t |ƒS )zs Return True if the given path is one we are permitted to remove/modify, False otherwise. )r )r Úpathr r r Ú _permitted s zUninstallPathSet._permittedc C sˆ t jj|ƒ\}}t jjt|ƒt jj|ƒƒ}t jj|ƒs:d S | j|ƒrR| jj |ƒ n| j j |ƒ t jj|ƒd dkr„tr„| j t |ƒƒ d S )Né z.py)Úosr ÚsplitÚjoinr ÚnormcaseÚexistsr r Úaddr Úsplitextr r )r r ÚheadÚtailr r r r! # s zUninstallPathSet.addc C sL t |ƒ}| j|ƒr<|| jkr*t|ƒ| j|<