o
    el                     @  s   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZmZ d
d Zdd ZedddZdddZdd ZdS )z Interface to pngquant executable    )annotations)contextmanager)BytesIO)Path)PIPE)Image)MissingDependencyError)get_versionrunc                   C  s   t dddS )Npngquantz(\d+(\.\d+)*).*)regex)r	    r   r   GD:\Projects\ConvertPro\env\Lib\site-packages\ocrmypdf/_exec/pngquant.pyversion   s   r   c                   C  s"   zt   W dS  ty   Y dS w )NFT)r   r   r   r   r   r   	available   s   r   
input_filer   c                 c  s    | j ds1t| }t }|j|dd |d |V  W d    d S 1 s*w   Y  d S t| d}|V  W d    d S 1 sEw   Y  d S )Nz.pngZpng)formatr   rb)nameendswithr   openr   saveseek)r   ZimZbiofr   r   r   input_as_png   s   
""r   output_filequality_minintquality_maxc                 C  st   t | }dddd| d| ddg}t||ttdd}W d    n1 s&w   Y  |jd	kr8||j d S d S )
Nr   z--forcez--skip-if-largerz	--quality-z--F)stdinstdoutstderrcheckr   )r   r
   r   
returncodewrite_bytesr!   )r   r   r   r   Zinput_streamargsresultr   r   r   quantize,   s   
	
r(   c                 C  s   t |  S )N)r(   )r&   r   r   r   quantize_mp>   s   r)   N)r   r   )r   r   r   r   r   r   r   r   )__doc__
__future__r   
contextlibr   ior   pathlibr   
subprocessr   ZPILr   Zocrmypdf.exceptionsr   Zocrmypdf.subprocessr	   r
   r   r   r   r(   r)   r   r   r   r   <module>   s   
