a
    CgI                     @   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)ClassVarZ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	ee
dddZe	ee d	d
dZe	e
d	ddZe	eee dddZe	ed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__Zabstract r
   r
   U/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/willow/optimizers/base.pyMeta   s   r   )r   returnc                 C   s   |  | j  kS )N)lowerr   )clsr   r
   r
   r   
applies_to   s    zOptimizerBase.applies_to)r   c                 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   sF   | j g|   }ztj|tjd W dS  ttjfy@   Y dS 0 d S )NstderrTF)r   r   
subprocesscheck_outputSTDOUTFileNotFoundErrorCalledProcessError)r   argsr
   r
   r   check_library   s    zOptimizerBase.check_library)	file_pathr   c                 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_arguments)r   c              
   C   sf   | j g| | }ztj|tjd W n: tjy` } z td|| j |j W Y d }~n
d }~0 0 d S )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   
