
    bi]                        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j&                  ej(                  j+                  d
d            Z ej.                  ed      Z ej2                  e      Z ej6                         ZdZd ee      j?                  d      z   Z d Z!d Z"d Z#d Z$ddZ%d Z&d Z'd Z(d Z)d Z*d Z+y)    )unicode_literalsN)datetime)quote)preprocess_paths)TrashPermissionErrors   filess   infos
   .trashinfos   XDG_DATA_HOMEs   ~/.local/shares   Trashs   .Trashs   .Trash-asciic                    t        j                  |      }t        |t              rt	        j
                  |      }t        j                  |       } t        | t              rt	        j
                  |       } |j                  |       S N)oprealpath
isinstancestrosfsencode
startswith)parentpaths     P/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/send2trash/plat_other.py	is_parentr   +   s]    ;;tD${{4 [[ F&#V$??6""    c                 $    | j                  d      S )Nz%Y-%m-%dT%H:%M:%S)strftime)dates    r   format_dater   5   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#   9   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   existsr   makedirs)folders    r   check_creater(   G   s!    99V
FE" r   c                 6   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!        j"                  |       t!        j"                  |             y t!        j$                  | |       y # 1 sw Y   uxY w)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_paths                r   
trash_moverE   M   sy   C Ii(JX&I[[+NIsGI
))BGGJ	2
3ryyT]`kTkAl7m1$s7|':':7'CCcI	 ))BGGJ	2
3ryyT]`kTkAl7m 	bggi[!893	? '1	f%&'
I.IBKK$bkk)&<=
		#y!' 's   ?HHc                     t        j                  |       } t        j                  |       s.t        j                  |       d   } t        j                  |       s.| S )Nr   )r   r   ismountsplitr   s    r   find_mount_pointrJ   e   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   r.   TOPDIR_TRASHr%   r   lstatst_modeisdirislinkstatS_ISVTXr   uidr3   r(   OSError)volume_root	trash_dirmodes      r   find_ext_volume_global_trashrX   n   s     \2I99Y88I&&D 88I"))I"6dT\\>Q	3s8??7#;<IY   s   C 	CCc                     t        j                  | t              }	 t        |       |S # t        $ r9}|j
                  t
        j                  k(  rt        |j                        | d }~ww xY wr
   )	r   r.   TOPDIR_FALLBACKr(   rT   errnoEACCESr   filename)rU   rV   es      r   find_ext_volume_fallback_trashr_      s]    _5IY
 	  77ell"&qzz29s   ) 	A+4A&&A+c                 6    t        |       }|t        |       }|S r
   )rX   r_   )rU   rV   s     r   find_ext_volume_trashra      s"    ,[9I2;?	r   c                 @    t        j                  |       j                  S r
   )r   rM   st_devrI   s    r   get_devrd      s    88D>   r   c                 F   t        |       } | D ]C  }t        |t              rt        j                  |      }n*t        |t
              r|}nt        dt        |             t        j                  |      st        t        j                  d|       t        j                  |t        j                        st        t        j                  d|       t!        |      }t!        t        j"                  d            }||k(  rt$        }t&        }n4t)        |      }t!        |      }||k7  rt        d|       t+        |      }	 t-        |||       F 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 zFile not found: zPermission denied:    ~zCouldn't find mount point for T)r;   )r   r   r   r   r   bytes	TypeErrortyper   r%   rT   r[   ENOENTaccessW_OKr\   rd   
expanduserXDG_DATA_HOMEHOMETRASH_BrJ   ra   rE   EXDEV)pathsr   path_bpath_dev	trash_devr!   
dest_trasherrors           r   
send2trashrw      sa   U#E &dC [[&Fe$FCDJ<PQQyy %,,*:4&(ABB yy)%,,*=dV(DEE6? BMM$/0	 y "F$J%f-FIH$ >tfEFF.v6J	vz62A&B  	{{ekk)6;N O	s   E	F 6FF )NF),
__future__r   r[   r6   r   os.pathr   r   r   rQ   urllib.parser   send2trash.utilr   send2trash.exceptionsr   r/   r0   r2   rm   environbgetrn   r.   ro   r8   	HOMETRASHgetuidrS   rL   r   r3   rZ   r   r   r#   r(   rE   rJ   rX   r_   ra   rd   rw    r   r   <module>r      s   " (   	     , 6	 bkkoo.>@QRSbggmX.BKK$	biiks3xw77#.#"0*
!(r   