o
    3g                  	   @   sz  d dl mZ d dlZd dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
mZmZ dZze W n ey9   eZY nw ze W n eyI   eZY nw zd dlmZmZ ee_ee_W n eefye   Y nw g dZd,d	d
Zdd Zdd Zd-ddZdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd  Z"d!d" Z#d.d#d$Zd%d& Z$d,d'd(Z%d)d* Z&e'd+kre  dS dS )/    )print_functionN)defaultdict)DistributionNotFoundVersionConflictget_distributionworking_setz0.10.0)loggermain)pip
setuptoolszpip-autoremovewheelFc                 C   s,   t | }|r|stdrt| d S d S d S )NzUninstall (y/N)? )	list_deadconfirmremove_dists)namesyesdead r   S/home/garg/my-data/venv/lib/python3.10/site-packages/../../../bin/pip_autoremove.py
autoremove*   s   r   c              	   C   s   t  }| D ].}z	|t| W q ty"   td| tjd Y q ty3   td| tjd Y qw t }t	t
||}|D ]}t|| q@|S )Nz+%s is not an installed pip module, skippingfilez3%s is not the currently installed version, skipping)setaddr   r   printsysstderrr   	get_graphexclude_whitelistfind_all_dead	show_tree)r   startnamegraphr   dr   r   r   r   0   s"   
r   c                 C   s   dd | D S )Nc                 S   s   h | ]	}|j tvr|qS r   )project_name	WHITELIST).0distr   r   r   	<setcomp>D   s    z$exclude_whitelist.<locals>.<setcomp>r   )distsr   r   r   r   C   s   r   c                 C   sh   |d u rt  }| |v rd S ||  td| dd t|  t| D ]}||v r1t|||d | q"d S )Nz     )end   )r   r   r   	show_distrequiresr    )r(   r   indentvisitedreqr   r   r   r    G   s   
r    c                    s   t  fdd|S )Nc                    s
   t  | S N)	find_dead)r$   r#   r   r   <lambda>U   s   
 zfind_all_dead.<locals>.<lambda>)fixed_point)r#   r!   r   r5   r   r   T   s   r   c                    s     fdd} t t|B S )Nc                    s   |  }|o
|   S r3   r   )nodesuccr   r#   r   r   is_killed_by_usY   s   z"find_dead.<locals>.is_killed_by_us)r   filter)r#   r   r;   r   r:   r   r4   X   s   r4   c                 C   s   	 | |}||kr|S |}qr3   r   )fxyr   r   r   r7   `   s   r7   c                 C   s   t | dkS )Nr?   )	raw_input)promptr   r   r   r   h   s   r   c                 C   s   t d| j| j| jf  d S )Nz
%s %s (%s))r   r%   versionlocationr(   r   r   r   r.   l   s   r.   c                 C   s   t |   d S r3   )r   as_requirementrD   r   r   r   show_freezep   s   rF   c                 C   s>   t jr
t jddg}ndg}t|ddg dd | D   d S )Nz-mr
   	uninstall-yc                 S   s   g | ]}|j qS r   )r%   )r'   r$   r   r   r   
<listcomp>y   s    z remove_dists.<locals>.<listcomp>)r   
executable
subprocess
check_call)r*   pip_cmdr   r   r   r   t   s   $r   c                  C   s:   t t} tD ]}| |  t|D ]	}| | | qq| S r3   )r   r   r   r/   r   )gr(   r2   r   r   r   r   |   s   r   c                 C   s   g }|   D ]Y}z	|t| W q ty; } zt| tjd tdtjd |t|j W Y d }~qd }~w t	y_ } zt| tjd td|j tjd W Y d }~qd }~ww |S )Nr   z-Redoing requirement with just package name...zSkipping %s)
r/   appendr   r   r   reportr   r   r%   r   )r(   requiredpkger   r   r   r/      s    r/   c                 C   sj   t  }|| \}}|js|jrt|j d S |jr t| d S t|dkr,|  d S t	||j
d d S )Nr   )r   )create_parser
parse_argsleavesfreezelist_leaveslistr   len
print_helpr   r   )argvparseroptsargsr   r   r   r	      s   r	   c                    s    fdd}t | S )Nc                    s
    |   S r3   r   )r8   r5   r   r   is_leaf   s   
zget_leaves.<locals>.is_leaf)r<   )r#   r`   r   r5   r   
get_leaves   s   
ra   c                 C   s.   t  }t|D ]}| rt| qt| qd S r3   )r   ra   rF   r.   )rW   r#   r8   r   r   r   rX      s   

rX   c                  C   sf   t jddt d} | jdddddd	 | jd
ddddd	 | jdddddd	 | jdddddd	 | S )Nz"usage: %prog [OPTION]... [NAME]...z%prog )usagerB   z-lz--list
store_trueFz3list unused dependencies, but don't uninstall them.)actiondefaulthelpz-Lz--leavesz8list leaves (packages which are not used by any others).rH   z--yesz2don't ask for confirmation of uninstall deletions.z-fz--freezezRlist leaves (packages which are not used by any others) in requirements.txt format)optparseOptionParser__version__
add_option)r]   r   r   r   rT      sB   rT   __main__)F)r   Nr3   )(
__future__r   rg   rK   r   collectionsr   r
   pkg_resourcesr   r   r   r   ri   r@   	NameErrorinputModuleNotFoundErrorImportErrorpip._internalr   r	   r&   r   r   r   r    r   r4   r7   r   r.   rF   r   r   r/   ra   rX   rT   __name__r   r   r   r   <module>   s\    


	

	$
