a
    aj                     @   sR   d dl Z d dlmZmZmZmZmZ d dlmZ d dl	m
Z
mZ G dd dZdS )    N)DictAnySetOptionalCallable)logger)set_i2c_call_context_clear_i2c_call_contextc                	   @   sB   e Zd Zdd Zdeeee eeee	egdf  e
dddZdS )TaskExecutorc                 C   s   d S )N )selfr   r   */var/aqua_controller/core/task_executor.py__init__   s    zTaskExecutor.__init__N)taskdevicesavailable_deviceson_get_resultreturnc                 C   s
  d|vr$t d|dd  dS |dd}t d| d|d  d	 |d D ]@}|d
}|d}|r||r|||v sTt d| d  dS qT|d D ]d}|d
}	|dd }dd | D }
||	 }z zt d| d	 t|	||d |dkr||
 n^|dkrJ||
}|d urr|d urr||	|| n(t d| d|	 d	 W W t	   dS W n| t
y } zbt d|  t d|	 d| d|
 d|  t dtjdd  W Y d }~W t	   dS d }~0 0 W t	  qt	  0 qdS ) Nactionsu&   Задача без действий: nameu   безымяннаяFZNoNameu1   Взято в обработку правило 'u   ' параметры: ''devicemethodu   Устройство 'u}   ' не доступно или действие некорректно. Выполнение задания прервано. c                 S   s   i | ]\}}|d vr||qS ))r   r   r   ).0kvr   r   r   
<dictcomp>?       z-TaskExecutor.execute_task.<locals>.<dictcomp>u%   Выполнение задания ')r   rule_id	operationsetgetu#   Неизвестный метод 'u   ' для устройства 'u5   Прервано выполнение правила u/   Ошибка выполнения метода .(z): u   Трассировка:    )limitT)r   debugr"   criticalloweritemsr   r!   warningr	   	Exceptionerror	traceback
format_exc)r   r   r   r   r   Z	task_nameactionZdev_namer   device_nameparamsr   resulter   r   r   execute_task   sL    





	
"zTaskExecutor.execute_task)N)__name__
__module____qualname__r   dictr   strr   r   r   boolr5   r   r   r   r   r
      s    r
   )r.   typingr   r   r   r   r   core.loggerr   core.resilient_i2c_busr   r	   r
   r   r   r   r   <module>   s   