
    Ng                     z    d dl Z d dlmZ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 d dlmZ  G d de          ZdS )	    N)AnyDictIteratorListOptionalUnion)Document)get_from_dict_or_env)PyPDFLoader)
BaseLoaderc                       e Zd ZdZ	 ddedee         dee         fdZededefd	            Z	de
fd
Zde
de
deeef         defdZdee         fdZdee         fdZdee         fdZdee         fdZdS )RSpaceLoadera'  Load content from RSpace notebooks, folders, documents or PDF Gallery files.

    Map RSpace document <-> Langchain Document in 1-1. PDFs are imported using PyPDF.

    Requirements are rspace_client (`pip install rspace_client`) and PyPDF if importing
     PDF docs (`pip install pypdf`).

    N	global_idapi_keyurlc                     |||d}t                               |          }|d         | _        |d         | _        |d         | _        dS )a  api_key: RSpace API key - can also be supplied as environment variable
        'RSPACE_API_KEY'
        url: str
        The URL of your RSpace instance - can also be supplied as environment
        variable 'RSPACE_URL'
        global_id: str
         The global ID of the resource to load,
        e.g. 'SD12344' (a single document); 'GL12345'(A PDF file in the gallery);
        'NB4567' (a notebook); 'FL12244' (a folder)
        )r   r   r   r   r   r   N)r   validate_environmentr   r   r   )selfr   r   r   argsverified_argss         g/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/rspace.py__init__zRSpaceLoader.__init__   sV     "*
 *

 )5(I(I$(O(O$Y/ '+K8    valuesreturnc                     t          |dd          |d<   t          |dd          |d<   d|vs|d         t          d          |S )z3Validate that API key and URL exist in environment.r   RSPACE_API_KEYr   
RSPACE_URLr   NzBNo value supplied for global_id. Please supply an RSpace global ID)r
   
ValueError)clsr   s     r   r   z!RSpaceLoader.validate_environment,   sa     1DTUUy,VULIIuf$${(;(CT   r   c                    	 ddl m}m} n# t          $ r t          d          w xY w	 |                    | j        | j                  }|                                 n&# t          $ r t          d| j         d          w xY w||j	        fS )zCreate a RSpace client.r   )elnfield_contentz(You must run `pip install rspace_client`z%Unable to initialize client - is url z or api key  correct?)
rspace_client.elnr"   r#   ImportError	ELNClientr   r   
get_status	ExceptionFieldContent)r   r"   r#   s      r   _create_rspace_clientz"RSpaceLoader._create_rspace_client7   s    	M<<<<<<<<< 	M 	M 	MKLLL	M	--$,77CNN 	 	 	% % % %  	 M...s    %4A #Bclir#   d_idc                 $   d}|                     |          }|d|d          dz  }|d         D ]=}||d          dz  } ||d                   }||                                z  }|dz  }>t          dd	|d          d
|d          i|          S )N z<h2>namez<h2/>fields
contentsourcezrspace: -globalId)metadatapage_content)get_documentget_textr	   )r   r+   r#   r,   r2   docffcs           r   _get_doczRSpaceLoader._get_docK   s    t$$,#f+,,,,X 	 	A!F)''''Gq|,,Br{{}}$GtOGG J3v; J JZ J JK 
 
 
 	
r   c              #   t   K   |                                  \  }}|                     ||| j                  V  d S )N)r*   r=   r   )r   r+   r#   s      r   _load_structured_docz!RSpaceLoader._load_structured_docY   s@      !7799]mmC???????r   c              #      K   |                                  \  }}| j        r%|                    | j        dd          dg          }d |d         D             }|D ]}|                     |||          V  d S )N   document)	folder_idtypesToIncludec                     g | ]
}|d          S )id ).0ds     r   
<listcomp>z2RSpaceLoader._load_folder_tree.<locals>.<listcomp>c   s    III!agIIIr   records)r*   r   list_folder_treer=   )r   r+   r#   docs_in_folderdoc_idsdoc_ids         r   _load_folder_treezRSpaceLoader._load_folder_tree]   s      !7799]> 	 11.,j\ 2  N JI~i/HIII 	< 	<F--]F;;;;;;	< 	<r   c              #     K   |                                  \  }}|                    | j                  }t          j                            |d                   \  }}|                                dk    r^| j         d}|                    | j        |           t          |          }|	                                D ]}| j        |j
        d<   |V  d S d S )Nr/   z.pdf
rspace_src)r*   get_file_infor   ospathsplitextlowerdownload_filer   	lazy_loadr6   )	r   r+   r#   	file_info_extoutfile
pdf_loaderpdfs	            r   	_load_pdfzRSpaceLoader._load_pdfg   s      !7799]%%dn55	!!)F"344399;;&  ---Gdng666$W--J!++--  -1^\*				 !  r   c              #   B  K   | j         r&d| j         v r|                                 D ]}|V  d S | j         r&d| j         v r|                                 D ]}|V  d S | j         r.| j         dd         dv r|                                 D ]}|V  d S t	          d          )NGLSDr   rA   )FLNBzUnknown global ID type)r   r`   r?   rP   r   )r   rI   s     r   rY   zRSpaceLoader.lazy_loads   s      > 
	7ddn44^^%%   ^ 	7 6 6..00   ^ 	7qs 3| C C++--    5666r   )NN)__name__
__module____qualname____doc__strr   r   classmethodr   r   r   r*   r   intr	   r=   r   r?   rP   r`   rY   rG   r   r   r   r      sd         SW9 99'/}9BJ3-9 9 9 9. $ 4    [/s / / / /(
C 
 
5c? 
x 
 
 
 
@hx&8 @ @ @ @<8H#5 < < < <
8H- 
 
 
 
78H- 7 7 7 7 7 7r   r   )rT   typingr   r   r   r   r   r   langchain_core.documentsr	   langchain_core.utilsr
   $langchain_community.document_loadersr   )langchain_community.document_loaders.baser   r   rG   r   r   <module>rr      s    				 = = = = = = = = = = = = = = = = - - - - - - 5 5 5 5 5 5 < < < < < < @ @ @ @ @ @s7 s7 s7 s7 s7: s7 s7 s7 s7 s7r   