
    +Jfa                        d dl mZ d dlZd dlZd dlZd dlZd dlmZ 	 d dlZdZ	n# e
$ r dZ	Y nw xY w G d d          Zd
dZed	k    r e e                      dS )    )annotationsN)BytesIOTFc                      e Zd ZdZdddedfdZed             Zd Zd Z	d	 Z
ed
             Zed             Zd Zd ZdS )
Compressor)jpgjpegpnggifwebpzipgztgzbz2tbzxzbrswfflvwoffwoff23gp3gppasfavim4vmovmp4mpegmpgwebmwmvNTFc                    || j         }|                     |          | _        || _        |ot          | _        |s	|| _        d S d S N)SKIP_COMPRESS_EXTENSIONSget_extension_reextension_reuse_gzipbrotli_installed
use_brotlilog)self
extensionsr'   r)   r*   quiets         V/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/whitenoise/compress.py__init__zCompressor.__init__6   sY     6J 11*== $9)9 	DHHH	 	    c           
         | st          j        d          S t          j        d                    d                    t	          t           j        |                               t           j                  S )Nz^$z\.({})$|)recompileformatjoinmapescape
IGNORECASE)r,   s    r.   r%   zCompressor.get_extension_reA   s[     	:d###:!!#((3ry*+E+E"F"FGG  r0   c                8    | j                             |           S r#   )r&   search)r+   filenames     r.   should_compresszCompressor.should_compressJ   s    $++H5555r0   c                    d S r#    )r+   messages     r.   r*   zCompressor.logM   s    r0   c              #  2  K   t          |d          5 }t          j        |                                          }|                                }d d d            n# 1 swxY w Y   t          |          }| j        rJ|                     |          }|                     d|||          r| 	                    ||d|          V  nd S | j
        rI|                     |          }|                     d|||          r| 	                    ||d|          V  d S d S d S )NrbBrotliz.brGzipz.gz)openosfstatfilenoreadlenr)   compress_brotliis_compressed_effectively
write_datar'   compress_gzip)r+   pathfstat_resultdatasize
compresseds          r.   compresszCompressor.compressP   sq     $ 	(188::..K6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 4yy? 	--d33J--hdJOO oodJ{KKKKKK = 	L++D11J--fdD*MM LoodJ{KKKKKKK	L 	LL Ls   ;AA!Ac                    t                      }t          j        dd|dd          5 }|                    |            d d d            n# 1 swxY w Y   |                                S )N wb	   r   )r<   modefileobjcompresslevelmtime)r   gzipGzipFilewritegetvalue)rR   outputgz_files      r.   rN   zCompressor.compress_gzipa   s     ]dF!1
 
 
 	 MM$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	     s   A

AAc                *    t          j        |           S r#   )brotlirU   )rR   s    r.   rK   zCompressor.compress_brotlil   s    t$$$r0   c           	         t          |          }|dk    rd}n||z  }|dk    }|r2|                     d                    |||dz  |dz                       n|                     d| d| d           |S )	Nr   Fgffffff?z{} compressed {} ({}K -> {}K)i   z	Skipping z (z compression not effective))rJ   r*   r5   )r+   encoding_namerO   	orig_sizerR   compressed_sizeis_effectiveratios           r.   rL   z$Compressor.is_compressed_effectivelyp   s    d))>> LL#i/E D=L 	UHH/66!4d):Ot<S     HHSSSSSSTTTr0   c                    ||z   }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        ||j        |j        f           |S )NrX   )rE   r`   rF   utimest_atimest_mtime)r+   rO   rR   suffixrQ   r<   rP   s          r.   rM   zCompressor.write_data   s    &=(D!! 	QGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
K0+2FGHHHs   8<<)__name__
__module____qualname__r$   printr/   staticmethodr%   r=   r*   rU   rN   rK   rL   rM   r?   r0   r.   r   r      s        ! H 5PU	 	 	 	   \6 6 6  L L L" ! ! \! % % \%  "    r0   r   c                   t          j        d          }|                    dddd           |                    dd	d
d           |                    ddd
d           |                    dd           d                    t          j                  }|                    dddd| dz   t          j                   |                    |           }t	          |j        |j        |j	        |j
                  }t          j        |j                  D ]X\  }}}|D ]O}|                    |          r8t          j                            ||          }	|                    |	          D ]}
PYdS )NzSearch for all files inside <root> *not* matching <extensions> and produce compressed versions with '.gz' and '.br' suffixes (as long as this results in a smaller file))descriptionz-qz--quietzDon't produce log output
store_true)helpactionz	--no-gzipzDon't produce gzip '.gz' filesstore_falser'   )ry   rz   destz--no-brotliz Don't produce brotli '.br' filesr)   rootz(Path root from which to search for files)ry   z, r,   *z,File extensions to exclude from compression z
(default: ))nargsry   default)r,   r'   r)   r-   r   )argparseArgumentParseradd_argumentr6   r   r$   
parse_argsr,   r'   r)   r-   rF   walkr}   r=   rO   rU   )argvparserdefault_excludeargs
compressordirpath_dirsfilesr<   rO   _compresseds              r.   mainr      s   $  F i8     -	     /	     %OPPPii
 CDDO
:-?---. 3     T""D??j	  J "$!3!3   	 	H))(33 w||GX66#-#6#6t#<#<  K		 1r0   __main__r#   )
__future__r   r   r^   rF   r3   ior   re   r(   ImportErrorr   r   rq   
SystemExitr?   r0   r.   <module>r      s    " " " " " "   				 				      MMM   u u u u u u u up0 0 0 0f z
*TTVV

 s   % //