o
    tf                     @   s  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dl	m	Z	 d dl
Z
zd dlmZ W n ey=   d dlmZ Y nw d dlmZmZ d dlmZ d dlmZ zejZejZW n eyk   dd	 Zd
d ZY nw dZdZdZeeddZeedZ ee Z!e" Z#dZ$dee#%d Z&dd Z'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) Z0d*d+ Z1dS )-    )unicode_literalsN)datetime)quote)	text_typeenvironb)preprocess_paths)TrashPermissionErrorc                 C      |  t S N)encodesysgetfilesystemencoding)u r   ^/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/send2trash/plat_other.pyfsencode*      r   c                 C   r	   r
   )decoder   r   )br   r   r   fsdecode-   r   r   s   filess   infos
   .trashinfos   XDG_DATA_HOMEs   ~/.local/shares   Trashs   .Trashs   .Trash-asciic                 C   sB   t |}t|trt|}t | } t| trt| } || S r
   )oprealpath
isinstancer   r   
startswith)parentpathr   r   r   	is_parentA   s   




r   c                 C   s
   |  dS )Nz%Y-%m-%dT%H:%M:%S)strftime)dater   r   r   format_dateK   s   
r    c                 C   s^   |d u s	t || st| } nt| |} d}|dt|  d 7 }|dtt  d 7 }|S )Nz[Trash Info]
zPath=
zDeletionDate=)r   r   abspathrelpathr   r    r   now)srctopdirinfor   r   r   info_forO   s   r(   c                 C   s   t | st| d d S d S )Ni  )r   existsosmakedirs)dirr   r   r   check_create]   s   
r-   Fc                 C   s8  t | }t |t}t |t}t |\}}d}	|}
t t ||
s0t t ||
t rU|	d7 }	|d t|		d | }
t t ||
s0t t ||
t s0t
| t
| tt ||
t d}|t| | W d    n1 s{w   Y  t ||
}|rtt| t| d S t| | d S )Nr          r   w)r   basenamejoin	FILES_DIRINFO_DIRsplitextr)   INFO_SUFFIXr   r   r-   openwriter(   shutilmover   r*   rename)r%   dstr&   	cross_devfilenameZ	filespathZinfopath	base_nameextcounterZdestnamefZdestpathr   r   r   
trash_movec   s&   
((rC   c                 C   s0   t | } t | st | d } t | r
| S )Nr   )r   r   ismountsplitr   r   r   r   find_mount_point{   s
   


rG   c                 C   s   t | t}t |sd S t|j}t |r"t |s"|t	j
@ s$d S t |ttd}zt| W |S  ty@   Y d S w )Nr   )r   r2   TOPDIR_TRASHr)   r*   lstatst_modeisdirislinkstatS_ISVTXr   uidr   r-   OSError)volume_root	trash_dirmoder   r   r   find_ext_volume_global_trash   s   

rT   c              
   C   sL   t | t}zt| W |S  ty% } z|jtjkr t|j d }~ww r
   )	r   r2   TOPDIR_FALLBACKr-   rP   errnoEACCESr   r>   )rQ   rR   er   r   r   find_ext_volume_fallback_trash   s   

rY   c                 C   s   t | }|d u rt| }|S r
   )rT   rY   )rQ   rR   r   r   r   find_ext_volume_trash   s   rZ   c                 C   s   t | jS r
   )r*   rI   st_devrF   r   r   r   get_dev   s   r\   c                 C   s*  t | } | D ]}t|trt|}nt|tr|}ntdt| t|s/t	t
jd| t|tjs>t	t
jd| t|}ttd}||krRt}t}nt|}t|}||krdt	d| t|}zt||| W q t	y } z|j
t
jkrt|ttdd n W Y d }~qd }~ww d S )Nz'str, bytes or PathLike expected, not %rzFile not found: %szPermission denied: %s   ~z Couldn't find mount point for %sT)r=   )r   r   r   r   bytes	TypeErrortyper   r)   rP   rV   ENOENTr*   accessW_OKrW   r\   
expanduserXDG_DATA_HOMEHOMETRASH_BrG   rZ   rC   ZEXDEV)pathsr   Zpath_bZpath_devZ	trash_devr&   Z
dest_trasherrorr   r   r   
send2trash   s>   



ri   )NF)2
__future__r   rV   r   r*   r9   Zos.pathr   r   r   rM   urllib.parser   ImportErrorurllibZsend2trash.compatr   r   Zsend2trash.utilr   Zsend2trash.exceptionsr   r   r   AttributeErrorr3   r4   r6   rd   getre   r2   rf   Z	HOMETRASHgetuidrO   rH   r   rU   r   r    r(   r-   rC   rG   rT   rY   rZ   r\   ri   r   r   r   r   <module>   sV   


	