o
    ^i]                     @   s  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mZ d dl	Z	d dl
mZ d dlmZ d dlmZ dZdZd	Zeej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$ Z*d%d& Z+dS )(    )unicode_literalsN)datetime)quote)preprocess_paths)TrashPermissionErrors   filess   infos
   .trashinfos   XDG_DATA_HOMEs   ~/.local/shares   Trashs   .Trashs   .Trash-asciic                 C   sF   t |}t|trt|}t | } t| trt| } || S N)oprealpath
isinstancestrosfsencode
startswith)parentpath r   P/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/send2trash/plat_other.py	is_parent+   s   






r   c                 C   s
   |  dS )Nz%Y-%m-%dT%H:%M:%S)strftime)dater   r   r   format_date5   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_for9   s   r   c                 C   s   t | st| d d S d S )Ni  )r	   existsr   makedirs)folderr   r   r   check_createG   s   
r#   Fc                 C   s<  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   encoder#   openwriter   shutilmover   fsdecoderename)r   dstr   	cross_dev	file_name
files_path	info_path	base_nameextcounter	dest_namef	dest_pathr   r   r   
trash_moveM   s&   
((r?   c                 C   s0   t | } t | st | d } t | r
| S )Nr   )r	   r
   ismountsplitr   r   r   r   find_mount_pointe   s
   


rC   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	   r(   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_trashn   s   

rP   c              
   C   sN   t | t}zt| W |S  ty& } z|jtjkr!t|j| d }~ww r   )	r	   r(   TOPDIR_FALLBACKr#   rL   errnoEACCESr   filename)rM   rN   er   r   r   find_ext_volume_fallback_trash   s   
rV   c                 C   s   t | }|d u rt| }|S r   )rP   rV   )rM   rN   r   r   r   find_ext_volume_trash   s   rW   c                 C   s   t | jS r   )r   rE   st_devrB   r   r   r   get_dev   s   rY   c                 C   s4  t | } | D ]}t|trt|}nt|tr|}n	tdt| t	|s2t
tjd| t|tjsBt
tjd| t|}ttd}||krVt}t}nt|}t|}||krit
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 zFile not found: zPermission denied:    ~zCouldn't find mount point for T)r5   )r   r   r   r   r   bytes	TypeErrortyper	   r    rL   rR   ENOENTaccessW_OKrS   rY   
expanduserXDG_DATA_HOMEHOMETRASH_BrC   rW   r?   EXDEV)pathsr   path_bpath_dev	trash_devr   
dest_trasherrorr   r   r   
send2trash   s>   


rk   )NF),
__future__r   rR   r0   r   os.pathr   r	   r   rI   urllib.parser   send2trash.utilr   send2trash.exceptionsr   r)   r*   r,   ra   environbgetrb   r(   rc   r2   	HOMETRASHgetuidrK   rD   r   r-   rQ   r   r   r   r#   r?   rC   rP   rV   rW   rY   rk   r   r   r   r   <module>   s<   


	