
    fa                        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	 G d d      Zd
dZed	k(  r e e             y# e
$ r dZ	Y *w xY w)    )annotationsN)BytesIOTFc                  p    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y)
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                   }| j                  |      | _        || _        |xr t        | _        |s|| _        y y N)SKIP_COMPRESS_EXTENSIONSget_extension_reextension_reuse_gzipbrotli_installed
use_brotlilog)self
extensionsr'   r)   r*   quiets         N/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/whitenoise/compress.py__init__zCompressor.__init__6   sK     66J 11*= $9)9DH     c           
         | st        j                  d      S t        j                  dj                  dj                  t	        t         j
                  |                   t         j                        S )Nz^$z\.({})$|)recompileformatjoinmapescape
IGNORECASE)r,   s    r.   r%   zCompressor.get_extension_reA   sM    ::d##::!!#((3ryy*+E"FG r0   c                :    | j                   j                  |       S r#   )r&   search)r+   filenames     r.   should_compresszCompressor.should_compressJ   s    $$++H555r0   c                     y r#    )r+   messages     r.   r*   zCompressor.logM   s    r0   c              #    K   t        |d      5 }t        j                  |j                               }|j	                         }d d d        t              }| j                  r=| j                  |      }| j                  d|||      r| j                  ||d       ny | j                  r=| j                  |      }| j                  d|||      r| j                  ||d       y y y # 1 sw Y   xY ww)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   s     $ 	((188:.K668D	 4y??--d3J--hdJOoodJ{KK ==++D1J--fdD*MoodJ{KK N 	 	s   C54C)B&C5)C2.C5c                    t               }t        j                  dd|dd      5 }|j                  |        d d d        |j	                         S # 1 sw Y   |j	                         S xY w)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'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  }|r+| j                  dj                  |||dz  |dz               |S | j                  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)> L#i/E D=LHH/66!4d):Ot<S  HHyb7RSTr0   c                    ||z   }t        |d      5 }|j                  |       d d d        t        j                  ||j                  |j
                  f       |S # 1 sw Y   7xY w)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GGDM	
K00+2F2FGH	 	s   AA#)__name__
__module____qualname__r$   printr/   staticmethodr%   r=   r*   rU   rN   rK   rL   rM   r?   r0   r.   r   r      st    ! H 5PU	  6L" ! ! % %"r0   r   c                   t        j                  d      }|j                  dddd       |j                  dd	d
d       |j                  ddd
d       |j                  dd       dj                  t        j
                        }|j                  dddd| dz   t        j
                         |j                  |       }t	        |j                  |j                  |j                  |j                        }t        j                  |j                        D ]U  \  }}}|D ]J  }|j                  |      st        j                  j                  ||      }	|j!                  |	      D ]  }
 L W y)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ii
 C CDO
:?+1-. 33   T"D????jj	J "$!3  	H))(3ww||GX6#-#6#6t#< K	 r0   __main__r#   )
__future__r   r   r^   rF   r3   ior   re   r(   ImportErrorr   r   rq   
SystemExitr?   r0   r.   <module>r      sl    "   	 	 
u up0f z
TV
 _  s   A AA