o
    {l~i                     @   sf   d dl Z d dlZd dlmZ d dlmZ d dlmZ G dd de jZ	G dd dZ
G d	d
 d
ZdS )    NGzipFile)Optional)to_bytesc                       sH   e Zd ZdZejf fdd	Zedd Zde	de
e fdd	Z  ZS )
GzipCompressionWrapperz1Wrapper for compressing file contents on the fly.c                    s,   t    || _tj|dd| _t | _d S )N   )levelwbits)super__init__rawzlibcompressobjcompress	bytearrayleftover)selfr   r   	__class__ X/var/www/newdalilibackend/backend/venv/lib/python3.10/site-packages/storages/compress.pyr      s   
zGzipCompressionWrapper.__init__c                   C   s   dS )NTr   r   r   r   r   readable   s   zGzipCompressionWrapper.readablebufreturnc                 C   s   t |}t | j|k r:t| j|}|s(| jr'|  j| jtj7  _d | _n|  j| j|7  _t | j|k st | jdkrCdS | jd | }t |}||d |< | j|d  | _|S )Nr   )	lenr   r   r   readr   flushr   Z_FINISH)r   r   sizechunkoutputr   r   r   readinto   s"   zGzipCompressionWrapper.readinto)__name__
__module____qualname____doc__r   Z_BEST_COMPRESSIONr   staticmethodr   r   r   intr!   __classcell__r   r   r   r   r   	   s    
r   c                   @   s   e Zd Zdd ZdS )CompressStorageMixinc                 C   s   t |S )zGzip a given string content.)r   )r   contentr   r   r   _compress_content*   s   z&CompressStorageMixin._compress_contentN)r"   r#   r$   r,   r   r   r   r   r*   )   s    r*   c                   @   s   e Zd ZdddZdS )CompressedFileMixin        c                 C   s   t |||dS )N)modefileobjmtimer   )r   r/   filer1   r   r   r   _decompress_file0   s   z$CompressedFileMixin._decompress_fileN)r.   )r"   r#   r$   r3   r   r   r   r   r-   /   s    r-   )ior   gzipr   typingr   storages.utilsr   	RawIOBaser   r*   r-   r   r   r   r   <module>   s     