
    Xh                     ,   d dl mZ d dlmZ 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 e
j.                  Zej0                  Ze
j2                  Zej4                  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)	text_type)preprocess_paths)windll	Structurebyrefc_uintcreate_unicode_buffer	addressofGetLastErrorFormatError)HWNDUINTLPCWSTRBOOLc            	       @    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_     I/var/www/html/myenv/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_resultrK   9   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_pathrR   \   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.
    rM   \N)len)rP   rO   s     r"   get_awaited_path_from_prefixrV   t   s5    
  d3v;=)))Fr!   c                     t        |       \  }}t        |d d      }|s t               }t        |t	        |      |      t        |      }t        |||       t        ||j                        S )Nr   )rR   GetShortPathNameWr   WindowsErrorr   r
   rV   value)	long_namerP   rQ   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   
isinstancer   opisabsabspathr_   r   r   	FO_DELETEr   r
   joinrU   r   r   r   r   FOF_ALLOWUNDOFOF_NOCONFIRMATIONFOF_NOERRORUI
FOF_SILENTr   r   r   r   SHFileOperationWr   rK   rY   r   )pathsrO   fileopbufferpath_stringrI   errors          r"   
send2trashrt      sU   U#E^cdVZJtY,GYtV$TQdEdJO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 eP9s   %E83E=7F)*
__future__r   os.pathrO   re   send2trash.compatr   send2trash.utilr   ctypesr   r   r   r	   r
   r   r   r   ctypes.wintypesr   r   r   r   kernel32rX   shell32rn   r   FO_MOVEFO_COPYrh   	FO_RENAMEFOF_MULTIDESTFILESrm   rk   rj   rl   rK   rR   rV   r_   rt   r    r!   r"   <module>r      s    (  ' ,	 	 	 6 5??.. 
..++ 
i 
 
		 
  'F0	
>*Cr!   