
    Ng                    j    d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ  G d de
          ZdS )	    )annotations)AnyIteratorOptionalSequence)Document)
BaseLoader)MaxComputeAPIWrapperc                  J    e Zd ZdZdddddZeddddd            ZddZdS )MaxComputeLoaderz+Load from `Alibaba Cloud MaxCompute` table.N)page_content_columnsmetadata_columnsquerystrapi_wrapperr
   r   Optional[Sequence[str]]r   c               >    || _         || _        || _        || _        dS )a  Initialize Alibaba Cloud MaxCompute document loader.

        Args:
            query: SQL query to execute.
            api_wrapper: MaxCompute API wrapper.
            page_content_columns: The columns to write into the `page_content` of the
                Document. If unspecified, all columns will be written to `page_content`.
            metadata_columns: The columns to write into the `metadata` of the Document.
                If unspecified, all columns not added to `page_content` will be written.
        N)r   r   r   r   )selfr   r   r   r   s        l/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/max_compute.py__init__zMaxComputeLoader.__init__   s)    $ 
&$8! 0    	access_idsecret_access_keyendpointprojectr   Optional[str]r   kwargsr   returnc               F    t          j        ||||          } | ||fi |S )a  Convenience constructor that builds the MaxCompute API wrapper from
            given parameters.

        Args:
            query: SQL query to execute.
            endpoint: MaxCompute endpoint.
            project: A project is a basic organizational unit of MaxCompute, which is
                similar to a database.
            access_id: MaxCompute access ID. Should be passed in directly or set as the
                environment variable `MAX_COMPUTE_ACCESS_ID`.
            secret_access_key: MaxCompute secret access key. Should be passed in
                directly or set as the environment variable
                `MAX_COMPUTE_SECRET_ACCESS_KEY`.
        r   )r
   from_params)clsr   r   r   r   r   r   r   s           r   r!   zMaxComputeLoader.from_params%   sA    2 +6gFW
 
 
 s5+00000r   Iterator[Document]c              #     K    j                              j                  D ]} j        r! fd|                                D             n|d                    d                                 D                       } j        r! fd|                                D             }n fd|                                D             }t          ||          V  d S )Nc                .    i | ]\  }}|j         v ||S  )r   .0kvr   s      r   
<dictcomp>z.MaxComputeLoader.lazy_load.<locals>.<dictcomp>F   s3     % % %!QA9R4R4RAq4R4R4Rr   
c              3  *   K   | ]\  }}| d | V  dS )z: Nr&   )r(   r)   r*   s      r   	<genexpr>z-MaxComputeLoader.lazy_load.<locals>.<genexpr>K   s0      $W$WTQ[[Q[[$W$W$W$W$W$Wr   c                .    i | ]\  }}|j         v ||S r&   )r   r'   s      r   r+   z.MaxComputeLoader.lazy_load.<locals>.<dictcomp>M   s,    WWWTQAAV<V<VAq<V<V<Vr   c                $    i | ]\  }}|v	||S r&   r&   )r(   r)   r*   page_content_datas      r   r+   z.MaxComputeLoader.lazy_load.<locals>.<dictcomp>O   s*    WWWTQAEV<V<VAq<V<V<Vr   )page_contentmetadata)r   r   r   itemsjoinr   r   )r   rowr2   r3   r1   s   `   @r   	lazy_loadzMaxComputeLoader.lazy_loadC   s     #))$*55 	I 	IC( (% % % %%(YY[[% % %!! %(!99$W$W=N=T=T=V=V$W$W$WWWL$ XWWWWSYY[[WWWWWWWSYY[[WWWxHHHHHHH	I 	Ir   )r   r   r   r
   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r#   )__name__
__module____qualname____doc__r   classmethodr!   r7   r&   r   r   r   r      s        55 9=481 1 1 1 1 1.  $(+/1 1 1 1 1 [1:I I I I I Ir   r   N)
__future__r   typingr   r   r   r   langchain_core.documentsr   )langchain_community.document_loaders.baser	   )langchain_community.utilities.max_computer
   r   r&   r   r   <module>rB      s    " " " " " " 4 4 4 4 4 4 4 4 4 4 4 4 - - - - - - @ @ @ @ @ @ J J J J J JEI EI EI EI EIz EI EI EI EI EIr   