o
    e                     @   sF   d Z ddlZddlmZmZ ddlmZ dgZdd Z		dd
dZ	dS )z
Move a file in the safest way possible::

    >>> from django.core.files.move import file_move_safe
    >>> file_move_safe("/tmp/old_file", "/tmp/new_file")
    N)copymodecopystat)locksfile_move_safec                 C   sZ   t tjdrztj| |W S  ty   Y dS w tjtj| tjtj|kS )NsamefileF)hasattrospathr   OSErrornormcaseabspath)srcdst r   I/var/www/html/venv/lib/python3.10/site-packages/django/core/files/move.py	_samefile   s   
r      Fc                 C   s  t | |rdS z|st|tjrtd| t| | W dS  ty(   Y nw t| dS}t|tjtj	B t
tddB |sBtjndB }z(t|tj d}|dkrc||}t|| |dksTW t| t| nt| t| w W d   n1 sw   Y  zt| | W n ty   zt| | W n	 ty   Y nw Y nw zt|  W dS  ty } zt
|dddkrĂ W Y d}~dS d}~ww )	aU  
    Move a file from one location to another in the safest way possible.

    First, try ``os.rename``, which is simple but will break across filesystems.
    If that fails, stream manually from one file to another in pure Python.

    If the destination file exists and ``allow_overwrite`` is ``False``, raise
    ``FileExistsError``.
    Nz8Destination file %s exists and allow_overwrite is False.rbO_BINARYr       winerror    )r   r   accessF_OKFileExistsErrorrenamer
   openO_WRONLYO_CREATgetattrO_EXCLr   lockLOCK_EXreadwriteunlockcloser   PermissionErrorr   remove)old_file_namenew_file_name
chunk_sizeallow_overwriteold_filefdcurrent_chunker   r   r   r      sp   

	



)r   F)
__doc__r   shutilr   r   django.core.filesr   __all__r   r   r   r   r   r   <module>   s    