o
    hI                     @   s8   d dl Z d dlZd dlmZ e dZG dd dZdS )    N)ClassVarwillowc                   @   s   e Zd ZU dZee ed< dZee ed< G dd dZe	dede
fddZe	dee fd	d
Ze	de
fddZe	dedee fddZe	defddZdS )OptimizerBase library_nameimage_formatc                   @   s   e Zd ZdZdS )zOptimizerBase.MetaTN)__name__
__module____qualname__abstract r   r   V/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/willow/optimizers/base.pyMeta   s    r   returnc                 C   s   |  | j  kS )N)lowerr   )clsr   r   r   r   
applies_to   s   zOptimizerBase.applies_toc                 C   s   dgS )z
        Return a list of arguments to check if the library exists.

        Note: using --help by default as that usually returns a zero exit code
        z--helpr   )r   r   r   r   get_check_library_arguments   s   z)OptimizerBase.get_check_library_argumentsc              	   C   sB   | j g|   }ztj|tjd W dS  ttjfy    Y dS w )NstderrTF)r   r   
subprocesscheck_outputSTDOUTFileNotFoundErrorCalledProcessError)r   argsr   r   r   check_library   s   zOptimizerBase.check_library	file_pathc                 C   s   g S )z;Return a list of arguments for the given optimizer library.r   )r   r   r   r   r   get_command_arguments%   s   z#OptimizerBase.get_command_argumentsc              
   C   sf   | j g| | }ztj|tjd W d S  tjy2 } ztd|| j |j W Y d }~d S d }~ww )Nr   z8Error optimizing %s with the '%s' library with error: %s)	r   r   r   r   r   r   logger	exceptionoutput)r   r   r   excr   r   r   process*   s   zOptimizerBase.processN)r   r	   r
   r   r   str__annotations__r   r   classmethodboolr   listr   r   r   r#   r   r   r   r   r      s   
 r   )loggingr   typingr   	getLoggerr   r   r   r   r   r   <module>   s
    
