
    g*
                     <    d dl Z d dlZd dlmZ ddZ G d d      Zy)    N)SuspiciousFileOperationc                    t         j                  j                  |       dv rt        d| z        |r\t	        j
                  t        |       j                  dd            }|j                         sd|j                  v rt        d| z        | S | t         j                  j                  |       k7  rt        d| z        | S )N>    ...z$Could not derive file name from '%s'\/r   z'Detected path traversal attempt in '%s'z%File name '%s' includes path elements)
ospathbasenamer   pathlibPurePosixPathstrreplaceis_absoluteparts)nameallow_relative_pathr   s      o/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/core/files/utils.pyvalidate_file_namer      s    	ww0%&Lt&STT $$SY%6%6tS%AB!3)9D@  K 
!!$'	'%&MPT&TUUK    c                   4   e Zd ZdZ ed       Z ed       Z ed       Z ed       Z ed       Z	 ed       Z
 ed       Z ed	       Z ed
       Z ed       Z ed       Z ed       Z ed       Z ed       Zed        Zd Zd Zd Zd Zy)FileProxyMixinz
    A mixin class used to forward file methods to an underlying file
    object.  The internal file object has to be called "file"::

        class FileProxy(FileProxyMixin):
            def __init__(self, file):
                self.file = file
    c                 .    | j                   j                  S N)fileencodingselfs    r   <lambda>zFileProxyMixin.<lambda>$       TYY%7%7r   c                 .    | j                   j                  S r   )r   filenor   s    r   r    zFileProxyMixin.<lambda>%       499#3#3r   c                 .    | j                   j                  S r   )r   flushr   s    r   r    zFileProxyMixin.<lambda>&       $))//r   c                 .    | j                   j                  S r   )r   isattyr   s    r   r    zFileProxyMixin.<lambda>'   r$   r   c                 .    | j                   j                  S r   )r   newlinesr   s    r   r    zFileProxyMixin.<lambda>(   r!   r   c                 .    | j                   j                  S r   )r   readr   s    r   r    zFileProxyMixin.<lambda>)       r   c                 .    | j                   j                  S r   )r   readintor   s    r   r    zFileProxyMixin.<lambda>*   r!   r   c                 .    | j                   j                  S r   )r   readliner   s    r   r    zFileProxyMixin.<lambda>+   r!   r   c                 .    | j                   j                  S r   )r   	readlinesr   s    r   r    zFileProxyMixin.<lambda>,   s    dii&9&9r   c                 .    | j                   j                  S r   )r   seekr   s    r   r    zFileProxyMixin.<lambda>-   r.   r   c                 .    | j                   j                  S r   )r   tellr   s    r   r    zFileProxyMixin.<lambda>.   r.   r   c                 .    | j                   j                  S r   )r   truncater   s    r   r    zFileProxyMixin.<lambda>/   r!   r   c                 .    | j                   j                  S r   )r   writer   s    r   r    zFileProxyMixin.<lambda>0   r'   r   c                 .    | j                   j                  S r   )r   
writelinesr   s    r   r    zFileProxyMixin.<lambda>1   s    tyy';';r   c                 L    | j                    xs | j                   j                  S r   )r   closedr   s    r   r@   zFileProxyMixin.closed3   s    99}0		 0 00r   c                 ~    | j                   ryt        | j                  d      r| j                  j                         S y)NFreadableT)r@   hasattrr   rB   r   s    r   rB   zFileProxyMixin.readable7   0    ;;499j)99%%''r   c                     | j                   ryt        | j                  d      r| j                  j                         S dt	        | j                  dd      v S )NFwritablewmoder   )r@   rC   r   rF   getattrr   s    r   rF   zFileProxyMixin.writable>   sE    ;;499j)99%%''gdii444r   c                 ~    | j                   ryt        | j                  d      r| j                  j                         S y)NFseekableT)r@   rC   r   rK   r   s    r   rK   zFileProxyMixin.seekableE   rD   r   c                 ,    t        | j                        S r   )iterr   r   s    r   __iter__zFileProxyMixin.__iter__L   s    DIIr   N)__name__
__module____qualname____doc__propertyr   r#   r&   r)   r+   r-   r0   r2   r4   r6   r8   r:   r<   r>   r@   rB   rF   rK   rN    r   r   r   r      s     78H34F12E34F78H/0D78H78H9:I/0D/0D78H12E;<J1 15r   r   )F)r
   r   django.core.exceptionsr   r   r   rT   r   r   <module>rV      s    	  :&3 3r   