Ë
    µŒj{  ã                   óx   — d dl Z d dlZ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mZ d dlmZ  G d„ dee«      Zy)	é    N)ÚPath)ÚAnyÚDictÚListÚOptional)ÚDocument)Ú	BaseModelÚmodel_validator)Ú
BaseLoaderc                   óø   — e Zd ZU dZeed<   	 dZee   ed<   	 dZee	e      ed<   	 dZ
eed<   	  ed¬	«      ed
eeef   defd„«       «       Zdefd„Zdede	e   fd„Zdedee   fd„Zde	e   fd„Zde	e   fd„Zy)ÚDropboxLoaderzˆLoad files from `Dropbox`.

    In addition to common files such as text and PDF files, it also supports
    *Dropbox Paper* files.
    Údropbox_access_tokenNÚdropbox_folder_pathÚdropbox_file_pathsFÚ	recursiveÚbefore©ÚmodeÚvaluesÚreturnc                 óº   — |j                  d«      �|j                  d«      �t        d«      ‚|j                  d«      €|j                  d«      st        d«      ‚|S )zDValidate that either folder_path or file_paths is set, but not both.r   r   z.Cannot specify both folder_path and file_pathsz-Must specify either folder_path or file_paths)ÚgetÚ
ValueError)Úclsr   s     úv/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/document_loaders/dropbox.pyÚvalidate_inputszDropboxLoader.validate_inputs$   sa   € ð
 �J‰JÐ,Ó-Ð9Ø—
‘
Ð/Ó0Ð<äÐMÓNÐNØ�:‰:Ð+Ó,Ð4¸V¿Z¹ZØ ô>
ô ÐLÓMÐMàˆó    c                 óÔ   — 	 ddl m}m} 	  || j                  «      }|j                  «        |S # t        $ r t        d«      ‚w xY w# |j                  $ r}t        d«      |‚d}~ww xY w)zCreate a Dropbox client.r   )ÚDropboxÚ
exceptionsú!You must run `pip install dropboxzEInvalid Dropbox access token. Please verify your token and try again.N)Údropboxr   r    ÚImportErrorr   Úusers_get_current_accountÚ	AuthErrorr   )Úselfr   r    ÚdbxÚexs        r   Ú_create_dropbox_clientz$DropboxLoader._create_dropbox_client4   s|   € ð	Cß3ð	Ù˜$×3Ñ3Ó4ˆCØ×)Ñ)Ô+ð
 ˆ
øô ò 	CÜÐAÓBÐBð	Cûð ×#Ñ#ò 	ÜØWóàðûð	ús    ‚/ ‹"A ¯AÁA'ÁA"Á"A'Úfolder_pathc                 ó�  ‡ — ‰ j                  «       }	 ddlm} ddlm} 	 |j                  |‰ j                  ¬«      }|j                  D �cg c]  }t        ||«      sŒ|‘Œ }}ˆ fd	„|D «       D �	cg c]  }	|	�|	‘Œ }
}	|
S # t
        $ r t        d«      ‚w xY w# |j                  $ r}t        d|› d�«      |‚d}~ww xY wc c}w c c}	w )
z%Load documents from a Dropbox folder.r   ©r    )ÚFileMetadatar!   )r   z$Could not list files in the folder: z.. Please verify the folder path and try again.Nc              3   óT   •K  — | ]  }‰j                  |j                  «      –— Œ! y ­w©N)Ú_load_file_from_pathÚpath_display)Ú.0Úfiler&   s     €r   Ú	<genexpr>z<DropboxLoader._load_documents_from_folder.<locals>.<genexpr>Y   s%   øè ø€ ÐWÑQVÈ˜×1Ñ1°$×2CÑ2C×DÑQVùs   ƒ%()r)   r"   r    Údropbox.filesr-   r#   Úfiles_list_folderr   ÚApiErrorr   ÚentriesÚ
isinstance)r&   r*   r'   r    r-   Úresultsr(   ÚentryÚfilesÚdocÚ	documentss   `          r   Ú_load_documents_from_folderz)DropboxLoader._load_documents_from_folderD   sø   ø€ à×)Ñ)Ó+ˆð	CÝ*Ý2ð	Ø×+Ñ+¨KÀ4Ç>Á>Ð+ÓRˆGð %,§O¢OÓW¡O˜5´zÀ%ÈÕ7V’ OˆÐWó XÑQVÔWó
áW�Øˆò ØWð 	ð 
ð
 Ðøô# ò 	CÜÐAÓBÐBð	Cûð
 ×"Ñ"ò 	ÜØ6°{°mð D?ð ?óð ðûð	üò Xùò
s4   “A?  B ÁB>ÁB>Á0CÁ?BÂB;Â&B6Â6B;Ú	file_pathc                 óD  — | j                  «       }	 ddlm} 	 |j	                  |«      }|j
                  r|j                  |«      \  }}n!|j                  r|j                  |d«      \  }}	 j                  j                  d«      }d|› �t        j                  j=                  |«      dœ}t?        ||¬«      S # t        $ r t        d«      ‚w xY w# |j                  $ r}t        d|› d�«      |‚d}~ww xY w# t        $ �r t        j                  j!                  |«      d	   j#                  «       }	|	d
k(  rÕt%        d|› d�«       ddlm}
 t+        j,                  «       }t/        |j0                  «      dz  }t3        |d¬«      5 }|j5                  j                  «       ddd«       n# 1 sw Y   nxY w	  |
t7        |«      «      }|j9                  «       }|r|d   cY S 	 Y y# t:        $ r}t%        d|› d|› �«       Y d}~Y yd}~ww xY wt%        d|› d�«       Y yw xY w)z Load a file from a Dropbox path.r   r,   r!   ÚmarkdownzCould not load file: z+. Please verify the file pathand try again.Nzutf-8é   z.pdfzFile z type detected as .pdf)ÚUnstructuredPDFLoaderztmp.pdfÚwbr   z Error while trying to parse PDF z: z/ could not be decoded as pdf or text. Skipping.z
dropbox://)ÚsourceÚtitle)Úpage_contentÚmetadata) r)   r"   r    r#   Úfiles_get_metadataÚis_downloadableÚfiles_downloadÚexport_infoÚfiles_exportr7   r   ÚcontentÚdecodeÚUnicodeDecodeErrorÚosÚpathÚsplitextÚlowerÚprintÚ$langchain_community.document_loadersrD   ÚtempfileÚTemporaryDirectoryr   ÚnameÚopenÚwriteÚstrÚloadÚ	ExceptionÚbasenamer   )r&   r@   r'   r    Úfile_metadataÚ_Úresponser(   ÚtextÚfile_extensionrD   Útemp_dirÚtemp_pdfÚfÚloaderÚdocsÚpdf_exrI   s                     r   r0   z"DropboxLoader._load_file_from_path^   s,  € à×)Ñ)Ó+ˆð	CÝ*ð	Ø×2Ñ2°9Ó=ˆMà×,Ò,Ø!×0Ñ0°Ó;‘�‘8ð ×*Ò*Ø!×.Ñ.¨y¸*ÓE‘��8ð	Ø×#Ñ#×*Ñ*¨7Ó3ˆDð< # 9 +Ð.Ü—W‘W×%Ñ% iÓ0ñ
ˆô  T°HÔ=Ð=øôk ò 	CÜÐAÓBÐBð	Cûð ×"Ñ"ò 	ÜØ'¨	 {ð 3!ð !óð ðûð	ûô "ó 	ÜŸW™W×-Ñ-¨iÓ8¸Ñ;×AÑAÓCˆNà Ò'Ü˜˜i˜[Ð(>Ð?Ô@ÝVô $×6Ñ6Ó8�Ü §¡Ó.°Ñ:�Ü˜(¨Õ.°!Ø—G‘G˜H×,Ñ,Ô-÷ /×.Ñ.úð Ù2´3°x³=ÓA�FØ!Ÿ;™;›=�DÙØ# A™wšð ñ øô !ò  ÜÐ<¸Y¸KÀrÈ&ÈÐRÔSÝûð úô Ø˜I˜;Ð&UÐVôñ ð5	úsx   ’B: ™AC Á-C9 Â:CÃC6Ã!C1Ã1C6Ã9BHÆF+Æ"	HÆ+F4	Æ0HÆ8'G%ÇHÇ%	H
Ç.HÇ?HÈH
È
HÈHc                 ó†   ‡ — ‰ j                   st        d«      ‚ˆ fd„‰ j                   D «       D �cg c]  }|�|‘Œ c}S c c}w )z1Load documents from a list of Dropbox file paths.zfile_paths must be setc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr/   )r0   )r2   r@   r&   s     €r   r4   z;DropboxLoader._load_documents_from_paths.<locals>.<genexpr>¢   s$   øè ø€ ð á!8�Ið ×)Ñ)¨)×4Ù!8ùs   ƒ)r   r   )r&   r=   s   ` r   Ú_load_documents_from_pathsz(DropboxLoader._load_documents_from_paths›   sX   ø€ à×&Ò&ÜÐ5Ó6Ð6óà!%×!8Ò!8ôó
ñ�ð ˆò ðñ
ð 	
ùò 
s   °>c                 óp   — | j                   �| j                  | j                   «      S | j                  «       S )zLoad documents.)r   r?   rn   )r&   s    r   r^   zDropboxLoader.load©   s4   € à×#Ñ#Ð/Ø×3Ñ3°D×4LÑ4LÓMÐMà×2Ñ2Ó4Ð4r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r]   Ú__annotations__r   r   r   r   r   Úboolr
   Úclassmethodr   r   r   r)   r   r?   r0   rn   r^   © r   r   r   r      sÙ   … ñð ÓØØ)-Ð˜ #™Ó-Ø'Ø.2Ð˜  c¡Ñ+Ó2Ø&Ø€IˆtÓØMá˜(Ô#Øð T¨#¨s¨(¡^ð ¸ò ó ó $ðð¨ó ð °sð ¸tÀH¹~ó ð4;>¨cð ;>°h¸xÑ6Hó ;>ðz
¨D°©Nó 
ð5�d˜8‘nô 5r   r   )rR   rX   Úpathlibr   Útypingr   r   r   r   Úlangchain_core.documentsr   Úpydanticr	   r
   Ú)langchain_community.document_loaders.baser   r   rw   r   r   Ú<module>r}      s/   ðó 
Û Ý ß ,Ó ,å -ß /å @ôZ5�J 	õ Z5r   