
    Xh                     "   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
	 d dlmZ d dlmZmZ d dlmZ d dlmZ 	 ej,                  Zej.                  Zd
ZdZdZ ej8                   ej:                  dd            Z ej>                  ed      Z  ee       Z! ejD                         Z#dZ$d ee#      jK                  d      z   Z&d Z'd Z(d Z)d Z*ddZ+d Z,d Z-d Z.d Z/d Z0d Z1y# e$ r	 d dlmZ Y w xY w# e$ r	 d Zd	 ZY w xY w)    )unicode_literalsN)datetime)quote)	text_typeenvironb)preprocess_paths)TrashPermissionErrorc                 H    | j                  t        j                               S N)encodesysgetfilesystemencoding)us    I/var/www/html/myenv/lib/python3.12/site-packages/send2trash/plat_other.pyfsencoder   *       xx11344    c                 H    | j                  t        j                               S r   )decoder   r   )bs    r   fsdecoder   -   r   r   s   filess   infos
   .trashinfos   XDG_DATA_HOMEs   ~/.local/shares   Trashs   .Trashs   .Trash-asciic                     t        j                  |      }t        |t              rt	        |      }t        j                  |       } t        | t              rt	        |       } |j                  |       S r   )oprealpath
isinstancer   r   
startswith)parentpaths     r   	is_parentr    A   sT    ;;tD$	"~[[ F&)$&!??6""r   c                 $    | j                  d      S )Nz%Y-%m-%dT%H:%M:%S)strftime)dates    r   format_dater$   K   s    ==,--r   c                     |t        ||       st        j                  |       } nt        j                  | |      } d}|dt	        |       z   dz   z  }|dt        t        j                               z   dz   z  }|S )Nz[Trash Info]
zPath=
zDeletionDate=)r    r   abspathrelpathr   r$   r   now)srctopdirinfos      r   info_forr-   O   sp     ~Yvs3jjojjf%DGeCj 4''DOk(,,.99D@@DKr   c                 \    t        j                  |       st        j                  | d       y y )Ni  )r   existsosmakedirs)dirs    r   check_creater3   ]   s     99S>
C r   c                    t        j                  |       }t        j                  |t              }t        j                  |t              }t        j
                  |      \  }}d}	|}
t        j                  t        j                  ||
            s0t        j                  t        j                  ||
t        z               r|	dz  }	|dz   t        |	      j                  d      z   |z   }
t        j                  t        j                  ||
            rRt        j                  t        j                  ||
t        z               rt        |       t        |       t        t        j                  ||
t        z         d      5 }|j                  t        | |             d d d        t        j                  ||
      }|r)t        j                  t!        |       t!        |             y t#        j$                  | |       y # 1 sw Y   axY w)Nr          r   w)r   basenamejoin	FILES_DIRINFO_DIRsplitextr/   INFO_SUFFIXr   r   r3   openwriter-   shutilmover   r0   rename)r*   dstr+   	cross_devfilename	filespathinfopath	base_nameextcounterdestnamefdestpaths                r   
trash_moverN   c   sq   {{3HY'IwwsH%H[[*NIsGH
))BGGIx0
1RYYrwwxQY\gQg?h5i1t#i&8&?&?&HH3N ))BGGIx0
1RYYrwwxQY\gQg?h5i 	bggh; 67	= '	f%&'wwy(+HHSM8H#56
		#x ' 's   ?G;;Hc                     t        j                  |       } t        j                  |       s.t        j                  |       d   } t        j                  |       s.| S )Nr   )r   r   ismountsplitr   s    r   find_mount_pointrS   {   sC     ;;tDjjxx~a  jjKr   c                    t        j                  | t              }t        j                  |      sy t	        j
                  |      j                  }t        j                  |      r(t        j                  |      s|t        j                  z  sy t        j                  |t        t              j                  d            }	 t        |       |S # t        $ r Y y w xY w)Nr   )r   r9   TOPDIR_TRASHr/   r0   lstatst_modeisdirislinkstatS_ISVTXr   uidr   r3   OSError)volume_root	trash_dirmodes      r   find_ext_volume_global_trashra      s     \2I99Y88I&&D 88I"))I"6tdll?R	9S>#8#8#ABIY   s   C 	CCc                     t        j                  | t              }	 t        |       |S # t        $ r8}|j
                  t
        j                  k(  rt        |j                         d }~ww xY wr   )	r   r9   TOPDIR_FALLBACKr3   r]   errnoEACCESr	   rE   )r^   r_   es      r   find_ext_volume_fallback_trashrg      s[    _5IY
 	  77ell"&qzz22s   ) 	A*3A%%A*c                 6    t        |       }|t        |       }|S r   )ra   rg   )r^   r_   s     r   find_ext_volume_trashri      s"    ,[9I2;?	r   c                 @    t        j                  |       j                  S r   )r0   rV   st_devrR   s    r   get_devrl      s    88D>   r   c                 2   t        |       } | D ]9  }t        |t              rt        |      }n*t        |t              r|}nt        dt        |      z        t        j                  |      st        t        j                  d|z        t        j                  |t        j                        st        t        j                  d|z        t!        |      }t!        t        j"                  d            }||k(  rt$        }t&        }n4t)        |      }t!        |      }||k7  rt        d|z        t+        |      }	 t-        |||       < y # t        $ rA}|j                  t        j.                  k(  rt-        |t&        t$        d       n Y d }~d }~ww xY w)Nz'str, bytes or PathLike expected, not %rzFile not found: %szPermission denied: %s   ~z Couldn't find mount point for %sT)rD   )r   r   r   r   bytes	TypeErrortyper   r/   r]   rd   ENOENTr0   accessW_OKre   rl   
expanduserXDG_DATA_HOMEHOMETRASH_BrS   ri   rN   EXDEV)pathsr   path_bpath_dev	trash_devr+   
dest_trasherrors           r   
send2trashr      sT   U#E &dI&d^Fe$FET
RSSyy %,,(<t(CDD yy)%,,(?$(FGG6? BMM$/0	 y "F$J%f-FIH$@4GHH.v6J	vz62A&B  	{{ekk)6;N O	s   ;E	F6FF)NF)2
__future__r   rd   r   r0   r@   os.pathr   r   r   rZ   urllib.parser   ImportErrorurllibsend2trash.compatr   r   send2trash.utilr   send2trash.exceptionsr	   r   r   AttributeErrorr:   r;   r=   ru   getrv   r9   rw   	HOMETRASHgetuidr\   rU   r   rc   r    r$   r-   r3   rN   rS   ra   rg   ri   rl   r    r   r   <module>r      s(  " (  
 	    "
 2 , 6	5{{H{{H 	 lhll+;=NOPbggmX.[!	biiky~44W==#. !0*
!(k    5555s#   C/ D  /C=<C= DD