
    3fi                        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 d dlmZ erd dlmZ ddZ G d	 d
e      Zy)    )annotations)TYPE_CHECKINGAnyListOptional)
BaseLoader)Documentguard_import)get_client_info)Credentialsc                     t        dd      S )z?Import the google-cloud-bigquery library and return the client.zgoogle.cloud.bigqueryz$langchain-google-community[bigquery])pip_namer
        a/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_google_community/bigquery.pyimport_bigqueryr      s    *P r   c                  <    e Zd ZdZ	 	 	 	 d	 	 	 	 	 	 	 	 	 ddZddZy)BigQueryLoadera  Load documents from Google Cloud BigQuery.

    Inherits from [`BaseLoader`][langchain_core.document_loaders.BaseLoader].

    Each row becomes a document. Columns can be mapped to `page_content` or
    `metadata`. By default, all columns map to `page_content`.

    !!! note "Installation"

        Requires additional dependencies:

        ```bash
        pip install langchain-google-community[bigquery]
        ```
    Nc                ^    t                || _        || _        || _        || _        || _        y)a  Initialize BigQuery document loader.

        Args:
            query: The query to run in BigQuery.
            project: Optional. The project to run the query in.
            page_content_columns: Optional. The columns to write into the `page_content`
                of the document.
            metadata_columns: Optional. The columns to write into the `metadata` of the
                document.
            credentials: Optional. Credentials for accessing Google APIs. Use this
                parameter to override default credentials, such as to use Compute Engine
                (`google.auth.compute_engine.Credentials`) or Service Account
                (`google.oauth2.service_account.Credentials`) credentials directly.
        N)r   queryprojectpage_content_columnsmetadata_columnscredentials)selfr   r   r   r   r   s         r   __init__zBigQueryLoader.__init__'   s0    , 	
$8! 0&r   c                   	 ddl m} |j                  | j                  | j
                  t        d            }|j
                  sd}t        |      |j                  | j                        j                         }g }| j                  | j                  }$|j                  D cg c]  }|j                   c}|g }|D ]p  }	dj                  fd	|	j                         D              }
|	j                         D ci c]  \  }}||v s|| }}}t!        |
|
      }|j#                  |       r |S # t        $ r}t        d      |d }~ww xY wc c}w c c}}w )Nr   )bigqueryzCould not import google-cloud-bigquery python package. Please, install bigquery dependency group: `pip install langchain-google-community[bigquery]`r   )module)r   r   client_infozGCP project for Big Query is not set! Either provide a `project` argument during BigQueryLoader instantiation, or set a default project with `gcloud config set project` command.
c              3  <   K   | ]  \  }}|v s| d |   yw)z: Nr   ).0kvr   s      r   	<genexpr>z&BigQueryLoader.load.<locals>.<genexpr>g   s,      % $1q<P7P1#Rs%s   )page_contentmetadata)google.cloudr   ImportErrorClientr   r   r   
ValueErrorr   resultr   r   schemanamejoinitemsr	   append)r   r   ex	bq_client
error_descquery_resultdocsr   columnrowr(   r%   r&   r)   docr   s                  @r   loadzBigQueryLoader.loadD   so   	- OO((LL'z: $ 
	
     Z(( tzz299;!#8800'>J>Q>Q#RFFKK#R #! 	C99 %(+		% L *-NA=M8M1NHNxHCKK	 O  	E 		6 $S Os)   D8 'EEE8	EEE)NNNN)
r   strr   zOptional[str]r   Optional[List[str]]r   r>   r   zOptional[Credentials])returnzList[Document])__name__
__module____qualname____doc__r   r<   r   r   r   r   r      sO    & "&4804-1'' ' 2	'
 .' +':*r   r   N)r?   r   )
__future__r   typingr   r   r   r   langchain_core.document_loadersr   langchain_core.documentsr	   langchain_core.utilsr   !langchain_google_community._utilsr   google.auth.credentialsr   r   r   r   r   r   <module>rK      s3    " 5 5 6 - - =3XZ Xr   