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	zd dl
mZ W n ey9   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yg   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) Z/d*d+ Z0dS )-    )unicode_literalsN)datetime)quote   )	text_typeenvironb)preprocess_paths)TrashPermissionErrorc                 C      |  t S N)encodesysgetfilesystemencoding)u r   P/var/www/edux/Edux_v2/venv/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_parent@   s   




r   c                 C   s
   |  dS )Nz%Y-%m-%dT%H:%M:%S)strftime)dater   r   r   format_dateJ   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_forN   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.   c                 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| t ||	 d S )Nr   r       r   w)r   basenamejoin	FILES_DIRINFO_DIRsplitextr*   INFO_SUFFIXr   r   r.   openwriter)   r+   rename)r&   dstr'   filename	filespathinfopath	base_nameextcounterdestnamefr   r   r   
trash_moveb   s(   
rC   c                 C   s0   t | } t | st | d } t | r
| S )Nr   )r   r   ismountsplitr   r   r   r   find_mount_pointx   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 ]q}t|trt|}nt|tr|}nt|dr't|   S tdt	| t
|s:td| t|tjsGtd| t|}tt
d}||kr[t}t}nt|}t|}||krmtd| t|}t||| qd S )N
__fspath__z'str, bytes or PathLike expected, not %rzFile not found: %szPermission denied: %s   ~z Couldn't find mount point for %s)r   r   r   r   byteshasattr
send2trashr]   	TypeErrortyper   r*   rP   r+   accessW_OKr\   
expanduserXDG_DATA_HOMEHOMETRASH_BrG   rZ   rC   )pathsr   path_bpath_dev	trash_devr'   
dest_trashr   r   r   ra      s2   




ra   r   )1
__future__r   rV   r   r+   os.pathr   r   r   rM   urllib.parser   ImportErrorurllibcompatr   r   utilr   
exceptionsr	   r   r   AttributeErrorr3   r4   r6   rf   getrg   r2   rh   	HOMETRASHgetuidrO   rH   r   rU   r   r!   r)   r.   rC   rG   rT   rY   rZ   r\   ra   r   r   r   r   <module>   sT   


	