
    :jK                     p    d Z ddlmZmZmZ ddlmZmZmZm	Z	m
Z
mZmZ ddlmZ  ed      Z G d d      Zy)	z
Task Factory for the asynchronous pipeline system.
Provides factory methods for creating tasks from configuration and serialized data.
    )AnyDictUnion)AcquisitionTask	CheckTaskInspectTaskPatternsProviderTask
SearchTaskService)
get_loggerstagec                       e Zd ZdZe	 	 	 	 	 	 ddededededededed	ed
efd       Z	ededede
eeef   ef   d
efd       Zededed
efd       Zededed
efd       Zedeeef   d
efd       Zy)TaskFactoryzAFactory for creating tasks from configuration and serialized dataproviderqueryregexpageuse_apiaddress_patternendpoint_patternmodel_patternreturnc           
      (    t        | |||||||      S )zCreate a search taskr   r   r   r   r   r   r   r   )r   r   s           4/root/.openclaw/workspace/harvester/stage/factory.pycreate_search_taskzTaskFactory.create_search_task   s)     +-'	
 		
    urlpatternsc                 6   t        |t              r9t        | ||j                  |j                  |j
                  |j                        S t        | ||j                  dd      |j                  dd      |j                  dd      |j                  dd            S )z3Create an acquisition task with extraction patterns)r   r   key_patternr   r   r   r"    r   r   r   )
isinstancer	   r   r"   r   r   r   get)r   r   r    s      r   create_acquisition_taskz#TaskFactory.create_acquisition_task2   s     h)"!$00 ( 8 8!)!:!:&44  #!$LL; (-> C!).@"!E&ll?B? r   servicec                     t        | |      S )z*Create a check task for API key validationr   r'   )r   r)   s     r   create_check_taskzTaskFactory.create_check_taskH   s     (G<<r   c                     t        | |      S )z6Create an inspect task for inspecting API capabilitiesr)   )r   r)   s     r   create_inspect_taskzTaskFactory.create_inspect_taskM   s     Hg>>r   datac                    | j                  d      }|dk(  rt        j                  |       S |dk(  rt        j                  |       S |dk(  rt	        j                  |       S |dk(  rt        j                  |       S t        d|       )z&Create task from serialized dictionarytyper   r   r   r   zUnknown task type: )r%   r   	from_dictr   r   r   
ValueError)r-   	task_types     r   r0   zTaskFactory.from_dictR   s     HHV$	$''--++",,T22+%&&t,,-'((..29+>??r   N)r#      Fr#   r#   r#   )__name__
__module____qualname____doc__staticmethodstrintboolr   r   r   r   r	   r   r&   r   r   r*   r   r,   r   r
   r0    r   r   r   r      sF   K ! "


 
 	

 
 
 
 
 

 
, # C 5cSVhYaIaCb gv  * =C =' =i = = ?c ?G ? ? ? @S#X @< @ @r   r   N)r7   typingr   r   r   core.modelsr   r   r   r	   r
   r   r   tools.loggerr   loggerr   r<   r   r   <module>rA      s>   
 $ #   $	G	H@ H@r   