HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/CommandNotFound/__pycache__/CommandNotFound.cpython-38.pyc
U

���a�<�@s�ddlmZmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
e
jdkrtdZndZeejddd	�e�Zd
d�Zdd
�ZdZGdd�de�ZdS)�)�print_function�absolute_importN)�SqliteDatabase�3�gettextZugettextzcommand-not-foundT)�fallbackcsvd��fdd�tt��d�D�}dd�|D�}dd�|D�}�fdd�|D�}�fdd�|D�}t||||�S)	zw
    return a set with spelling1 distance alternative spellings

    based on http://norvig.com/spell-correct.html
    z&abcdefghijklmnopqrstuvwxyz-_0123456789cs$g|]}�d|��|d�f�qS�N�)�.0�i)�wordr	�A/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py�
<listcomp>#sz!similar_words.<locals>.<listcomp>�cSs$g|]\}}|r||dd��qS�rNr	�r
�a�br	r	r
r$scSs<g|]4\}}t|�dkr||d|d|dd��qS)rr�N��lenrr	r	r
r%scs2g|]*\}}�D]}|r|||dd��qqSrr	�r
rr�c��alphabetr	r
r&s
cs&g|]\}}�D]}|||�qqSr	r	rrr	r
r's)�ranger�set)r�sZdeletesZ
transposesZreplacesZinsertsr	)rrr
�
similar_wordssrcCsJz.t��}t�d�d|kp,t�d�d|kWStk
rDYdSXdS)N�sudorZadminF)�posix�	getgroups�grpZgetgrnam�KeyError)�groupsr	r	r
�
user_can_sudo+s�r%z&/var/lib/command-not-found/commands.dbc@s�eZdZdZdZdZdZejZ	d*dd�Z
d+d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Zd,dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd-d'd(�Zd)S).�CommandNotFoundz
programs.d�)z	/snap/binz/binz/usr/binz/usr/local/binz/sbinz	/usr/sbinz/usr/local/sbinz
/usr/gamesz
/usr/bin/snap�/usr/share/command-not-foundcCsN|��|_tj�t�r0t�ttj�r0tt�|_	nt
d��t�|_t�
�|_dS)NzCannot find database)�_getSourcesList�sources_list�os�path�exists�dbpath�access�R_OKr�db�FileNotFoundErrorr%r �geteuid�euid)�self�data_dirr	r	r
�__init__Ks
zCommandNotFound.__init__�c	Csbg}|t|�kr|jks$n|St|�D]0}|�|�}|D]\}}}|�||||f�q>q,|S)z try to correct the spelling )r�max_lenr�get_packages�append)	r5rZmin_lenZpossible_alternatives�w�packages�package�ver�compr	r	r
�spelling_suggestionsUs
z$CommandNotFound.spelling_suggestionscCs|j�|�Sr)r1�lookup�r5�commandr	r	r
r:`szCommandNotFound.get_packagesc	
Csbg}g}tj�|j�s.t�d|j�ggfSz6ttj��"}tj	|jddd|g|dd�}W5QRXWn>tj
k
r�}zt�d|�ggfWY�Sd}~XYnXt�d|�zt�|�}Wn@tj
k
�r}zt�d	|�ggfWY�Sd}~XYnX|D]R}|d
|k�r8|�|d|d
|�d�f�n|�|d
|d|�d�f��q||fS)
Nz
%s not existszadvise-snapz
--format=jsonz	--commandT)�stderrZuniversal_newlinesz.calling snap advice-snap returned an error: %szgot %s from snap advise-snapzcannot decoding json: %sZCommandZSnapZVersion)r+r,r-�snap_cmd�logging�debug�open�devnull�
subprocessZcheck_outputZCalledProcessError�json�loadsZJSONDecodeErrorr;�get)	r5rDZexact_resultZmispell_resultrJ�output�e�snaps�snapr	r	r
�	get_snapscs:�� "zCommandNotFound.get_snapsc
CsbzDttj�t�dd�df���}dd�|D�W5QR�WSQRXWntk
r\gYSXdS)N�HOMEz/rootz.command-not-found.blacklistcSs g|]}|��dkr|���qS)�)�strip)r
�liner	r	r
r�sz0CommandNotFound.getBlacklist.<locals>.<listcomp>)rIr+�sep�join�getenv�IOError)r5Z	blacklistr	r	r
�getBlacklist�s
&zCommandNotFound.getBlacklistc	Cs|z ddl}ddlm}|��Wnttfk
r<gYSXtg�}|dd�D]&}|jsP|jsP|j	D]}|�
|�qfqP|S)Nr)�SourcesListF)ZwithMatcher)�apt_pkgZaptsources.sourceslistr]Zinit�SystemError�ImportErrorrZdisabledZinvalid�comps�add)r5r^r]r*�sourceZ	componentr	r	r
r)�s

zCommandNotFound._getSourcesListcCs�dtjkrdS|r�td�}tjdkr6t|�}dd�}n(||�}tjjr^t|t	�r^|�
tjj�}|��td�kr�|jdkr~d}nd	}d
||f}t
d|tjd�tj|��d
d�dS)NZ COMMAND_NOT_FOUND_INSTALL_PROMPTz Do you want to install it? (N/y)rcSs|Srr	)�xr	r	r
�<lambda>��z0CommandNotFound.install_prompt.<locals>.<lambda>�yrrU�sudo z%sapt install %sz%s��fileF)�shell)r+�environ�_�sys�version�input�stdin�encoding�
isinstance�str�decode�lowerr4�print�stdoutrK�call�split)r5Zpackage_name�promptZanswerZ	raw_inputZcommand_prefixZinstall_commandr	r	r
�install_prompt�s"



zCommandNotFound.install_prompt�c
Cs\t|�t|�|kr@ttd�|t|�f|jd�|j��dSt|�t|�dkr�ttd�||jd�|D]8\}}}|r�d|}nd}ttd�|||f|jd�qn|D]:\}}}	}|r�d|}nd}ttd	�|||f|jd�q�t|�dk�r
ttd
�|jd�nDt|�dk�rN|j�r8ttd�d|jd�nttd�d
|jd�|j��dS)z3 print spelling suggestions for packages and snaps z6Command '%s' not found, but there are %s similar ones.riNr�%Command '%s' not found, did you mean:z (%s)rUz  command '%s' from snap %s%s�  command '%s' from deb %s%s�3See 'snap info <snapname>' for additional versions.zTry: %s <deb name>zsudo apt installzapt install)rrwrm�	output_fd�flushr%)
r5r�mispell_packages�
mispell_snapsZmax_altrDrRr?r>r@r	r	r
�print_spelling_suggestions�s.


z*CommandNotFound.print_spelling_suggestionscCsttd�d|i|jd�dS)Nz;Command '%(command)s' not found, but can be installed with:rDri)rwrmr�rCr	r	r
�_print_exact_header�s��z#CommandNotFound._print_exact_headercCs�|�|�|d}|jdkr4td|d|jd�n@|jrRtd|d|jd�n"td|d|jd�ttd��|j��dS)Nrzsnap install %srizsudo snap install %s�Please ask your administrator.)r�r4rwr�r%rmr�)r5rDr=rQrRr	r	r
�advice_single_snap_package�s

z*CommandNotFound.advice_single_snap_packagecCs�|�|�|jdkrBtd|dd|jd�|�|dd�n�|jrvtd|dd|jd�|�|dd�nVtd|dd|jd�ttd��|dd|jkr�ttd�|dd|jd�|j��dS)Nrzapt install %srizsudo apt install %sr�rz1You will have to enable the component called '%s')	r�r4rwr�r|r%rmr*r�)r5rDr=rQr	r	r
�advice_single_deb_package�s

z)CommandNotFound.advice_single_deb_packagecCs|jdkr|jrdSdS)NrrhrU)r4r%)r5r	r	r
r�szCommandNotFound.sudocCs|�|�tdd�||D��}t|�D]�\}}d}|drj|dkr^t|�dkr^d|d}nd|d}|d|jkr�td	|��||d|f|jd
�q(td	|��||d|fdtd�|dd
|jd
�q(|j	dkr�|j
s�ttd�|jd
�|j��dS)NcSsg|]}t|d��qS�rr�r
rr	r	r
r�sz<CommandNotFound.advice_multi_deb_package.<locals>.<listcomp>rUrr�  # version %s, or�  # version %srz%sapt install %-*s%sriz (z-You will have to enable component called '%s'�)z.Ask your administrator to install one of them.)r��max�	enumeraterr*rwrr�rmr4r%r�)r5rDr=rQ�padrr>r?r	r	r
�advice_multi_deb_package�s
$<z(CommandNotFound.advice_multi_deb_packagecCs�|�|�tdd�||D��}t|�D]d\}}d}|drj|dkr^t|�dkr^d|d}nd|d}td|��||d|f|jd	�q(ttd
�|jd	�|j��dS)NcSsg|]}t|d��qSr�rr�r	r	r
rsz>CommandNotFound.advice_multi_snap_packages.<locals>.<listcomp>rUrrr�r��%ssnap install %-*s%srir�)	r�r�r�rrwrr�rmr�)r5rDr=rQr�rrRr?r	r	r
�advice_multi_snap_packagess
$z*CommandNotFound.advice_multi_snap_packagesc	Cs|�|�tdd�||D��}t|�D]X\}}d}|dr^|dkrRd|d}nd|d}td|��||d|f|jd	�q(|D]>}d}|d
r�d|d
}td|��||d|f|jd	�q�t|�d
kr�ttd�|dd|jd	�nttd
�|jd	�|j��dS)NcSsg|]}t|d��qSr�rr�r	r	r
rsz?CommandNotFound.advice_multi_mixed_packages.<locals>.<listcomp>rUrrr�r�r�rirz%sapt  install %-*s%sz+See 'snap info %s' for additional versions.r�)	r�r�r�rwrr�rrmr�)	r5rDr=rQr�rrRr?r>r	r	r
�advice_multi_mixed_packagess$
$$ z+CommandNotFound.advice_multi_mixed_packagesFc
s`dd��t��|jkrdS��d�rFtj���r@tj���g}q\g}n��fdd�|jD�}|�rR|�sRt|�dkr�tt	d��tj�
|d	��d
�|jd�n@tt	d�d
�i|jd�|D] }tdtj�
|��|jd�q�tt
|�t
t�dd��d���}t|�d	k�rNtt	d�d�
|�|jd�dd�
|�k�rNtt	d�|jd�dStj�d��srtj�d��srdS�|��k�r�dS�dk�r�tt	d��|jd�tt	d�d|jd�tt	d�d|jd�dS|���}|���\}}t�d||f�t|�d	k�rPt|�d	k�rP|���}	t|	�d	k�s@t|�d	k�r*|��|	|�n�t|�d	k�r|t|�dk�r||��||�n�t|�d	k�r�t|�d	k�r�|��||�n�t|�dk�r�t|�d	k�r�|��||�nVt|�dk�rt|�d	k�r|��||�n*t|�d	k�r*t|�d	k�r*|��||�t|�d	k�p^t|�d	k�p^t|�d	k�p^t|	�d	kS)z7 give advice where to find the given command to stderr cSs.tj�tj�||��o,tj�tj�||��S)z? helper that returns if a command is found in the given prefix )r+r,r-rY�isdir)�prefixrDr	r	r
�
_in_prefix's�z*CommandNotFound.advise.<locals>._in_prefixF�/csg|]}�|��r|�qSr	r	)r
r��r�rDr	r
r5s
z*CommandNotFound.advise.<locals>.<listcomp>rz1Command '%(command)s' is available in '%(place)s'r)rDZplaceriz:Command '%(command)s' is available in the following placesrDz * %s�PATHrU�:z_The command could not be located because '%s' is not included in the PATH environment variable.ZsbinzfThis is most likely caused by the lack of administrative privileges associated with your user account.z/usr/bin/aptz/usr/bin/aptitude�pythonr~r)�python3r�rU)r�zpython-is-python3rUTzgot debs: %s snaps: %s)rr9�
startswithr+r,r-�dirname�prefixesrwrmrYr��listrrZrzr\r:rSrGrHrAr�r�r�r�r�r�)
r5rD�ignore_installedr�r��missingr=rQr�r�r	r�r
�advise%sj
,"
�



�
�zCommandNotFound.adviseN)r()r8)r})F)�__name__�
__module__�__qualname__Zprograms_dirr9r�rFrnrEr�r7rAr:rSr\r)r|r�r�r�r�rr�r�r�r�r	r	r	r
r&8s*




r&)�
__future__rrrr"rLrGr+Zos.pathr rnrKZCommandNotFound.db.dbrro�_gettext_method�getattr�translationrmrr%r.�objectr&r	r	r	r
�<module>s$