
    biA                         d dl mZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZ d dlmZmZmZmZ d dlmZ ej*                  Zej,                  Zej.                  Zej0                  Z G d de      ZdZd	Zd
ZdZdZdZdZ dZ!dZ"d Z#d Z$d Z%d Z&d Z'y)    )unicode_literalsN)windll	Structurebyrefc_uintcreate_unicode_buffer	addressofGetLastErrorFormatError)HWNDUINTLPCWSTRBOOL)preprocess_pathsc            	       @    e Zd ZdefdefdefdefdefdefdefdefgZy	)
SHFILEOPSTRUCTWhwndwFuncpFrompTofFlagsfAnyOperationsAbortedhNameMappingslpszProgressTitleN)	__name__
__module____qualname__r   r   r   r   r   _fields_     P/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/send2trash/win/legacy.pyr   r      sG    		$	'		6	 $'	&!	g&	Hr    r                  @   i   c           
          i ddddddddddd	dd
dddddddddddddddddddddddddddddd}|j                  | |       S )Nq   P   r   W   s   t   u   i  v   x      y   o   z   |      }   ~                        i        )            r:   i  i   it  )get)resultresultss     r!   convert_sh_file_opt_resultrJ   7   s   dd 	d 	d	
 	e 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d  	d!" 	e#$ 3G8 ;;vv&&r    c                     d| }}| j                  |      s(| j                  d      rd}|| dd z   }||fS || z   }||fS | j                  |dz         rd}||fS )zGuess the long-path prefix based on the kind of *path*.
    Local paths (C:\folder\file.ext) and UNC names (\\server\folder\file.ext)
    are handled.

    Return a tuple of the long-path prefix and the prefixed path.
    z\\?\z\\\\?\UNCr"   NzUNC\)
startswith)pathprefix	long_paths      r!   prefix_and_pathrQ   Z   s     "4IF??6"??6"!Fab)I 9 I
 9	 
')	*9r    c                 J    | dk(  rd|t        |       d z   S |t        |       d S )zGuess the correct path to pass to the SHFileOperationW() call.
    The long-path prefix must be removed, so we should take care of
    different long-path prefixes.
    rL   \N)len)rO   rN   s     r!   get_awaited_path_from_prefixrU   r   s5    
  d3v;=)))Fr    c                     t        |       \  }}t        |d d      }|s t               }t        |t	        |      |      t        |      }t        |||       t        ||j                        S )Nr   )rQ   GetShortPathNameWr
   WindowsErrorr   r   rU   value)	long_namerO   rP   buf_sizeerr_nooutputs         r!   get_short_path_namer^   ~   sf    '	2FI D!4H 6;v#6	BB"8,Fi2'==r    c                    t        |       } | sy | D cg c]   }t        |t              st        |d      n|" } }| D cg c].  }t        j                  |      st        j
                  |      n|0 } }| D cg c]  }t        |       } }t               }d|_        t        |_
        t        dj                  |             }dj                  |       }t        |t        |      dz         }t        t        |            |_        d |_        t$        t&        z  t(        z  t*        z  |_        d|_        d|_        d |_        t5        t7        |            }|r"t9        |      }t;        d t=        |      | |      y c c}w c c}w c c}w )Nmbcsr     r"   )r   
isinstancestropisabsabspathr^   r   r   	FO_DELETEr   r   joinrT   r   r	   r   r   FOF_ALLOWUNDOFOF_NOCONFIRMATIONFOF_NOERRORUI
FOF_SILENTr   r   r   r   SHFileOperationWr   rJ   rX   r   )pathsrN   fileopbufferpath_stringrH   errors          r!   
send2trashrt      sT   U#ERWX$js&;SvEXEXJOP$RXXd^RZZ=PEP3894 &9E9FFKFL" #388E?3F))E"K";Fa@F9V,-FLFJ!$66FSFM#$F F#FeFm,F*624U!3UEBB G YP9s   %E83E=7F)(
__future__r   os.pathrN   re   ctypesr   r   r   r   r   r	   r
   r   ctypes.wintypesr   r   r   r   send2trash.utilr   kernel32rW   shell32rn   r   FO_MOVEFO_COPYrh   	FO_RENAMEFOF_MULTIDESTFILESrm   rk   rj   rl   rJ   rQ   rU   r^   rt   r   r    r!   <module>r      s    ( 	 	 	 6 5 ,??.. 
..++ 
i 
 
		 
  'F0	
>*Cr    