
    dh                     r    S SK r S SKJrJrJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr   " S S\5      rg)	    N)AnyDictIteratorListOptionalUnion)Document)get_from_dict_or_env)PyPDFLoader)
BaseLoaderc                       \ rS rSrSr SS\S\\   S\\   4S jjr\S\	S	\	4S
 j5       r
S	\4S jrS\S\S\\\4   S	\4S jrS	\\   4S jrS	\\   4S jrS	\\   4S jrS	\\   4S jrSrg)RSpaceLoader   a  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                 v    UUUS.n[         R                  U5      nUS   U l        US   U l        US   U l        g)aj  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         c/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/document_loaders/rspace.py__init__RSpaceLoader.__init__   sJ     "*

 )5(I(I$(O$Y/ '+K8    valuesreturnc                 t    [        USS5      US'   [        USS5      US'   SU;  d  US   c  [        S5      eU$ )z3Validate that API key and URL exist in environment.r   RSPACE_API_KEYr   
RSPACE_URLr   zBNo value supplied for global_id. Please supply an RSpace global ID)r
   
ValueError)clsr   s     r   r   !RSpaceLoader.validate_environment,   sS     1DTUy,VULIuf${(;(CT  r   c                     SSK JnJn   UR	                  U R
                  U R                  5      nUR                  5         XR                  4$ ! [         a    [        S5      ef = f! [         a    [        SU R
                   S35      ef = f)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_client"RSpaceLoader._create_rspace_client7   s    	J<
	--$,,7CNN ....  	JHII	J  	7zAVW 	s   A 6A' A$'$Bclir&   d_idc                     SnUR                  U5      nUSUS    S3-  nUS    H/  nXFS    S3-  nU" US   5      nXGR                  5       -  nUS-  nM1     [        SS	US    S
US    30US9$ )N z<h2>namez<h2/>fields
contentsourcezrspace: -globalId)metadatapage_content)get_documentget_textr	   )r   r/   r&   r0   r6   docffcs           r   _get_docRSpaceLoader._get_docJ   s    t$T#f+e,,XAF)B''Gq|,B{{}$GtOG	 
 (3v;-qZ8I JK 
 	
r   c              #   l   #    U R                  5       u  pU R                  XU R                  5      v   g 7f)N)r-   rA   r   )r   r/   r&   s      r   _load_structured_doc!RSpaceLoader._load_structured_docX   s+     !779mmC??s   24c              #      #    U R                  5       u  pU R                  (       a  UR                  U R                  SS  S/S9nWS    Vs/ sH  oDS   PM	     nnU H  nU R                  XU5      v   M     g s  snf 7f)N   document)	folder_idtypesToIncluderecordsid)r-   r   list_folder_treerA   )r   r/   r&   docs_in_folderddoc_idsdoc_ids          r   _load_folder_treeRSpaceLoader._load_folder_tree\   s     !779>> 11..,j\ 2 N 0>i/HI/H!g/HIF--F;;  Js   A	A=A8%A=c              #     #    U R                  5       u  pUR                  U R                  5      n[        R                  R                  US   5      u  pEUR                  5       S:X  ak  U R                   S3nUR                  U R                  U5        [        U5      nUR                  5        H   nU R                  UR                  S'   Uv   M"     g g 7f)Nr3   z.pdf
rspace_src)r-   get_file_infor   ospathsplitextlowerdownload_filer   	lazy_loadr:   )	r   r/   r&   	file_info_extoutfile
pdf_loaderpdfs	            r   	_load_pdfRSpaceLoader._load_pdff   s     !779%%dnn5	!!)F"3499;& (-Gdnng6$W-J!++--1^^\*	 .	 !s   CCc              #     #    U R                   (       a,  SU R                   ;   a  U R                  5        H  nUv   M	     g U R                   (       a,  SU R                   ;   a  U R                  5        H  nUv   M	     g U R                   (       a/  U R                   SS S;   a  U R                  5        H  nUv   M	     g [	        S5      e7f)NGLSDr   rG   )FLNBzUnknown global ID type)r   rc   rD   rR   r!   )r   rO   s     r   r\   RSpaceLoader.lazy_loadr   s     >>ddnn4^^% &^^ 6..0 1^^q 3| C++- . 566s   CC)r   r   r   )NN)__name__
__module____qualname____firstlineno____doc__strr   r   classmethodr   r   r   r-   r   intr	   rA   r   rD   rR   rc   r\   __static_attributes__ r   r   r   r      s     SW99'/}9BJ3-9. $ 4  /s /&
C 
 
5c? 
x 
@hx&8 @<8H#5 <
8H- 
78H- 7r   r   )rW   typingr   r   r   r   r   r   langchain_core.documentsr	   langchain_core.utilsr
   $langchain_community.document_loadersr   )langchain_community.document_loaders.baser   r   rt   r   r   <module>rz      s(    	 = = - 5 < @r7: r7r   