
    Evg                         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dS )    N)BytesIOStringIOUnsupportedOperation)FileProxyMixin)cached_propertyc                   x    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dS )Filei   Nc                     || _         |t          |dd           }|| _        t          |d          r|j        | _        d S d S )Nnamemode)filegetattrr   hasattrr   )selfr   r   s      S/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/core/files/base.py__init__zFile.__init__   sO    	<4..D	4   	"	DIII	" 	"    c                     | j         pdS )N r   r   s    r   __str__zFile.__str__   s    yBr   c                 ,    d| j         j        d| pddS )N<z: None>)	__class____name__r   s    r   __repr__zFile.__repr__   s"     !^444dnfnnEEr   c                 *    t          | j                  S N)boolr   r   s    r   __bool__zFile.__bool__   s    DIr   c                     | j         S r!   )sizer   s    r   __len__zFile.__len__   s
    yr   c                 H   t          | j        d          r| j        j        S t          | j        d          rA	 t          j                            | j        j                  S # t          t          f$ r Y nw xY wt          | j        d          rt          | j        d          rs| j        	                                }| j        
                    dt          j                   | j        	                                }| j        
                    |           |S t          d          )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    49f%% 	"9>!49f%% 	wty~666Y'   49f%% 	'$)V*D*D 	)..""CINN1bk***9>>##DINN3KCDDDs   (A! !A54A5c              #      K   |p| j         }	 |                     d           n# t          t          f$ r Y nw xY w	 |                     |          }|sdS |V  )z{
        Read the file and yield chunks of ``chunk_size`` bytes (defaults to
        ``File.DEFAULT_CHUNK_SIZE``).
        r   TN)DEFAULT_CHUNK_SIZEr)   r0   r   read)r   
chunk_sizedatas      r   chunkszFile.chunks0   s      
  :4#:
	IIaLLLL 45 	 	 	D		99Z((D JJJ		s   # 77c                 &    | j         |p| j        k    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     yJA$*ABBr   c              #      K   d }|                                  D ]\}|                    d          D ]D}|r*t          |          rt          |          s|V  n||z   }d }t	          |          r|V  B|}E]||V  d S d S NT)r7   
splitlinesendswith_cr	equals_lfendswith_lf)r   buffer_chunklines       r   __iter__zFile.__iter__K   s      [[]] 	# 	#E((.. # # #"7++ .IdOO .%  '~"G t$$ #JJJJ"GG%#( MMMMM r   c                     | S r!    r   s    r   	__enter__zFile.__enter__f   s    r   c                 .    |                                   d S r!   )close)r   exc_type	exc_valuetbs       r   __exit__zFile.__exit__i   s    

r   c                     | j         s|                     d           n]| j        rGt          j                            | j                  r#t          | j        |p| j        g|R i || _        nt          d          | S )Nr   zThe file cannot be reopened.)
closedr)   r   r*   r+   existsopenr   r   
ValueError)r   r   argskwargss       r   rP   z	File.openl   s~    { 	=IIaLLLLY 	=27>>$)44 	=TY(9	KDKKKFKKDII;<<<r   c                 8    | j                                          d S 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 F F     E E _E    "C C C 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.
    Nc                     t          |t                    rt          nt          }t	                                           ||          |           t          |          | _        d S )Nr   )
isinstancestrr   r   superr   lenr%   )r   contentr   stream_classr   s       r   r   zContentFile.__init__~   sS    #-gs#;#;Hxxg..T:::LL			r   c                     dS )NzRaw contentrE   r   s    r   r   zContentFile.__str__   s    }r   c                     dS r;   rE   r   s    r   r#   zContentFile.__bool__   s    tr   c                 0    |                      d           | S )Nr   )r)   )r   r   s     r   rP   zContentFile.open   s    		!r   c                     d S r!   rE   r   s    r   rH   zContentFile.close   s    r   c                 l    | j                             dd            | j                            |          S )Nr%   )__dict__popr   write)r   r6   s     r   rg   zContentFile.write   s.    &$'''yt$$$r   r!   )r   rU   rV   __doc__r   r   r#   rP   rH   rg   __classcell__)r   s   @r   rX   rX   y   s         ! ! ! ! ! !
         % % % % % % %r   rX   c                 Z    |                      t          | t                    rdnd          S )z9Return True if line (a text or bytestring) ends with ''.   endswithrZ   r[   rB   s    r   r=   r=      '    ==D#!6!6AEBBBr   c                 Z    |                      t          | t                    rdnd          S )z9Return True if line (a text or bytestring) ends with '
'.
   
rm   ro   s    r   r?   r?      rp   r   c                 <    | t          | t                    rdndk    S )z6Return True if line (a text or bytestring) equals '
'.rr   rs   )rZ   r[   ro   s    r   r>   r>      s     JtS11<DDu==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 6 6 6 6 6 6 6 6 2 2 2 2 2 2 3 3 3 3 3 3n n n n n> n n nb% % % % %$ % % %8C C C
C C C
> > > > >r   