
    g                     v    d dl Z d dlmZmZmZ d dlmZ d dlmZ  G d de      Z	 G d de	      Z
d	 Zd
 Zd Zy)    N)BytesIOStringIOUnsupportedOperation)FileProxyMixin)cached_propertyc                   p    e Zd ZdZddZd Zd Zd Zd Ze	d        Z
dd	Zdd
Zd Zd Zd ZddZd Zy)Filei   Nc                 z    || _         |t        |dd       }|| _        t        |d      r|j                  | _        y y )Nnamemode)filegetattrr   hasattrr   )selfr   r   s      n/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/core/files/base.py__init__zFile.__init__   s=    	<4.D	4 		DI !    c                 "    | j                   xs dS )N r   r   s    r   __str__zFile.__str__   s    yyBr   c                 D    d| j                   j                  d| xs ddS )N<z: None>)	__class____name__r   s    r   __repr__zFile.__repr__   s    !^^44dnfnEEr   c                 ,    t        | j                        S N)boolr   r   s    r   __bool__zFile.__bool__   s    DIIr   c                     | j                   S r!   )sizer   s    r   __len__zFile.__len__   s    yyr   c                 |   t        | j                  d      r| j                  j                  S t        | j                  d      r4	 t        j                  j                  | j                  j                        S t        | j                  d      rt        | j                  d      r{| j                  j                         }| j                  j                  dt        j                         | j                  j                         }| j                  j                  |       |S t        d      # t        t        f$ r Y w xY w)Nr%   r   tellseekr   z$Unable to determine the file's size.)r   r   r%   ospathgetsizer   OSError	TypeErrorr(   r)   SEEK_ENDAttributeError)r   posr%   s      r   r%   z	File.size   s    499f%99>>!499f%wwtyy~~66 499f%'$))V*D)).."CIINN1bkk*99>>#DIINN3KCDD Y' s   2D) )D;:D;c              #      K   |xs | j                   }	 | j                  d       	 | j	                  |      }|sy| # t        t        f$ r Y +w xY ww)z{
        Read the file and yield chunks of ``chunk_size`` bytes (defaults to
        ``File.DEFAULT_CHUNK_SIZE``).
        r   N)DEFAULT_CHUNK_SIZEr)   r0   r   read)r   
chunk_sizedatas      r   chunkszFile.chunks0   sd     
  :4#:#:
	IIaL 99Z(DJ	   45 		s%   A? AAAAAc                 <    | j                   |xs | j                  kD  S )z
        Return ``True`` if you can expect multiple chunks.

        NB: If a particular file representation is in memory, subclasses should
        always return ``False`` -- there's no good reason to read from memory in
        chunks.
        )r%   r3   )r   r5   s     r   multiple_chunkszFile.multiple_chunksA   s     yyJA$*A*ABBr   c              #      K   d }| j                         D ]N  }|j                  d      D ]8  }|r"t        |      rt        |      s| n||z   }d }t	        |      r| 7|}: P || y y wNT)r7   
splitlinesendswith_cr	equals_lfendswith_lf)r   buffer_chunklines       r   __iter__zFile.__iter__K   s|     [[]E((."7+IdO%  '~"G t$J"G% / #* M s   A,A.c                     | S r!    r   s    r   	__enter__zFile.__enter__f   s    r   c                 $    | j                          y r!   )close)r   exc_type	exc_valuetbs       r   __exit__zFile.__exit__i   s    

r   c                    | j                   s| j                  d       | S | j                  rXt        j                  j                  | j                        r/t        | j                  |xs | j                  g|i || _        | S t        d      )Nr   zThe file cannot be reopened.)
closedr)   r   r*   r+   existsopenr   r   
ValueError)r   r   argskwargss       r   rP   z	File.openl   sq    {{IIaL
 	 YY277>>$))4TYY(9		KDKFKDI  ;<<r   c                 8    | j                   j                          y r!   )r   rH   r   s    r   rH   z
File.closeu   s    		r   r!   )r   
__module____qualname__r3   r   r   r   r#   r&   r   r%   r7   r9   rC   rF   rL   rP   rH   rE   r   r   r	   r	      s\    #"F E E "C6r   r	   c                   D     e Zd ZdZd fd	Zd Zd ZddZd Zd Z	 xZ
S )	ContentFilezU
    A File-like object that takes just raw content, rather than an actual file.
    c                     t        |t              rt        nt        }t        |    ||      |       t        |      | _        y )Nr   )
isinstancestrr   r   superr   lenr%   )r   contentr   stream_classr   s       r   r   zContentFile.__init__~   s5    #-gs#;xg.T:L	r   c                      y)NzRaw contentrE   r   s    r   r   zContentFile.__str__   s    r   c                      yr;   rE   r   s    r   r#   zContentFile.__bool__   s    r   c                 (    | j                  d       | S )Nr   )r)   )r   r   s     r   rP   zContentFile.open   s    		!r   c                      y r!   rE   r   s    r   rH   zContentFile.close   s    r   c                 p    | j                   j                  dd        | j                  j                  |      S )Nr%   )__dict__popr   write)r   r6   s     r   rg   zContentFile.write   s)    &$'yyt$$r   r!   )r   rU   rV   __doc__r   r   r#   rP   rH   rg   __classcell__)r   s   @r   rX   rX   y   s&    !
%r   rX   c                 P    | j                  t        | t              rd      S d      S )z9Return True if line (a text or bytestring) ends with ''.   endswithrZ   r[   rB   s    r   r=   r=      "    ==D#!6BBEBBr   c                 P    | j                  t        | t              rd      S d      S )z9Return True if line (a text or bytestring) ends with '
'.
   
rm   ro   s    r   r?   r?      rp   r   c                 4    | t        | t              rdk(  S dk(  S )z6Return True if line (a text or bytestring) equals '
'.rr   rs   )rZ   r[   ro   s    r   r>   r>      s    JtS1D==u==r   )r*   ior   r   r   django.core.files.utilsr   django.utils.functionalr   r	   rX   r=   r?   r>   rE   r   r   <module>rx      s@    	 6 6 2 3n> nb%$ %8C
C
>r   