
    Ig"                     n    d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZ erd dlmZ  G d de      Zy)	    )TYPE_CHECKINGAnyCallableDictOptional)Document)get_from_dict_or_env)	BaseModelmodel_validatorApifyDatasetLoaderc                      e Zd ZU dZeed<   eed<   dZee   ed<    e	d      e
ded	efd
              Zdddddededeegef   dee   dee   dee   d	dfdZdddddededeegef   dee   dee   dee   d	dfdZdddddededeegef   dee   dee   dee   d	dfdZdddddededeegef   dee   dee   dee   d	dfdZy)ApifyWrapperzWrapper around Apify.
    To use, you should have the ``apify-client`` python package installed,
    and the environment variable ``APIFY_API_TOKEN`` set with your API key, or pass
    `apify_api_token` as a named parameter to the constructor.
    apify_clientapify_client_asyncNapify_api_tokenbefore)modevaluesreturnc                 R   t        |dd      }	 ddlm}m}  ||      }t	        |j
                  d      x}r|j                  dxx   dz  cc<    ||      }t	        |j
                  d      x}r|j                  dxx   dz  cc<   ||d	<   ||d
<   |S # t        $ r t        d      w xY w)zValidate environment.
        Validate that an Apify API token is set and the apify-client
        Python package exists in the current environment.
        r   APIFY_API_TOKENr   )ApifyClientApifyClientAsynchttpx_clientz
user-agentz; Origin/langchainhttpx_async_clientr   r   z`Could not import apify-client Python package. Please install it with `pip install apify-client`.)r	   r   r   r   getattrhttp_clientheadersImportError)	clsr   r   r   r   clientr   async_clientr   s	            `/var/www/html/answerous/venv/lib/python3.12/site-packages/langchain_community/utilities/apify.pyvalidate_environmentz!ApifyWrapper.validate_environment   s     /%'8
	B 1F&v'9'9>JJ|J$$\26JJ2+O<L%,((*>& !  #**<8<PP8%+F>"+7F'(   	E 	s   B B B&)buildmemory_mbytestimeout_secsactor_id	run_inputdataset_mapping_functionr&   r'   r(   r   c                    ddl m} | j                  j                  |      j	                  ||||      } ||d   |      S )a  Run an Actor on the Apify platform and wait for results to be ready.
        Args:
            actor_id (str): The ID or name of the Actor on the Apify platform.
            run_input (Dict): The input object of the Actor that you're trying to run.
            dataset_mapping_function (Callable): A function that takes a single
                dictionary (an Apify dataset item) and converts it to an
                instance of the Document class.
            build (str, optional): Optionally specifies the actor build to run.
                It can be either a build tag or build number.
            memory_mbytes (int, optional): Optional memory limit for the run,
                in megabytes.
            timeout_secs (int, optional): Optional timeout for the run, in seconds.
        Returns:
            ApifyDatasetLoader: A loader that will fetch the records from the
                Actor run's default dataset.
        r   r   r*   r&   r'   r(   defaultDatasetId
dataset_idr+   )$langchain_community.document_loadersr   r   actorcall	selfr)   r*   r+   r&   r'   r(   r   
actor_calls	            r$   
call_actorzApifyWrapper.call_actor8   sU    4 	L&&,,X6;;'%	 < 

 "!"45%=
 	
    c                   K   ddl m} | j                  j                  |      j	                  ||||       d{   } ||d   |      S 7 w)a  Run an Actor on the Apify platform and wait for results to be ready.
        Args:
            actor_id (str): The ID or name of the Actor on the Apify platform.
            run_input (Dict): The input object of the Actor that you're trying to run.
            dataset_mapping_function (Callable): A function that takes a single
                dictionary (an Apify dataset item) and converts it to
                an instance of the Document class.
            build (str, optional): Optionally specifies the actor build to run.
                It can be either a build tag or build number.
            memory_mbytes (int, optional): Optional memory limit for the run,
                in megabytes.
            timeout_secs (int, optional): Optional timeout for the run, in seconds.
        Returns:
            ApifyDatasetLoader: A loader that will fetch the records from the
                Actor run's default dataset.
        r   r   r-   Nr.   r/   )r1   r   r   r2   r3   r4   s	            r$   acall_actorzApifyWrapper.acall_actor`   sd     4 	L2288BGG'%	 H 
 

 "!"45%=
 	

   8AAAtask_id
task_inputc                    ddl m} | j                  j                  |      j	                  ||||      } ||d   |      S )  Run a saved Actor task on Apify and wait for results to be ready.
        Args:
            task_id (str): The ID or name of the task on the Apify platform.
            task_input (Dict): The input object of the task that you're trying to run.
                Overrides the task's saved input.
            dataset_mapping_function (Callable): A function that takes a single
                dictionary (an Apify dataset item) and converts it to an
                instance of the Document class.
            build (str, optional): Optionally specifies the actor build to run.
                It can be either a build tag or build number.
            memory_mbytes (int, optional): Optional memory limit for the run,
                in megabytes.
            timeout_secs (int, optional): Optional timeout for the run, in seconds.
        Returns:
            ApifyDatasetLoader: A loader that will fetch the records from the
                task run's default dataset.
        r   r   r=   r&   r'   r(   r.   r/   )r1   r   r   taskr3   	r5   r<   r=   r+   r&   r'   r(   r   	task_calls	            r$   call_actor_taskzApifyWrapper.call_actor_task   sU    6 	L%%**7388!'%	 9 
	 " !34%=
 	
r8   c                   K   ddl m} | j                  j                  |      j	                  ||||       d{   } ||d   |      S 7 w)r?   r   r   r@   Nr.   r/   )r1   r   r   rA   r3   rB   s	            r$   acall_actor_taskzApifyWrapper.acall_actor_task   sd     6 	L1166w?DD!'%	 E 
 
	 " !34%=
 	

r;   )__name__
__module____qualname____doc__r   __annotations__r   r   strr   classmethodr   r%   r   r   intr7   r:   rD   rF    r8   r$   r   r      s    %)OXc])(#$ 3   $L  $'+&*&
&
 &
 #+D68+;"<	&
 }&
  }&
 sm&
 
&
\  $'+&*&
&
 &
 #+D68+;"<	&
 }&
  }&
 sm&
 
&
\  $'+&*'
'
 '
 #+D68+;"<	'
 }'
  }'
 sm'
 
'
^  $'+&*'
'
 '
 #+D68+;"<	'
 }'
  }'
 sm'
 
'
r8   r   N)typingr   r   r   r   r   langchain_core.documentsr   langchain_core.utilsr	   pydanticr
   r   r1   r   r   rO   r8   r$   <module>rT      s(    ? ? - 5 /GM
9 M
r8   