§
    æ˜ºh5  ã                  óÂ   — d Z ddlm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mZ ddlmZ erdd	lmZmZ  ej        e¦  «        Z G d
„ de¦  «        ZdS )zLoads data from OneDriveé    )ÚannotationsN)ÚTYPE_CHECKINGÚIteratorÚListÚOptionalÚSequenceÚUnion)ÚDocument)ÚField)ÚO365BaseLoaderÚ	_FileType)Ú
get_parser)ÚDriveÚFolderc                  óž   — e Zd ZU dZ ed¦  «        Zded<   	 dZded<   	 dZded	<   	 e	dd„¦   «         Z
e	dd„¦   «         Zdd„Zdd„Zdd„ZdS )ÚOneDriveLoaderzLoad from `Microsoft OneDrive`..ÚstrÚdrive_idNzOptional[str]Úfolder_pathzOptional[List[str]]Ú
object_idsÚreturnúSequence[_FileType]c                óH   — t           j        t           j        t           j        fS )zReturn supported file types.)r   ÚDOCÚDOCXÚPDF©Úselfs    úu/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/document_loaders/onedrive.pyÚ_file_typeszOneDriveLoader._file_types    s   € õ Œ}�iœn­i¬mÐ;Ð;ó    ú	List[str]c                ó
   — ddgS )zReturn required scopes.Úoffline_accesszFiles.Read.All© r   s    r   Ú_scopeszOneDriveLoader._scopes%   s   € ð !Ð"2Ð3Ð3r!   Údriver   úUnion[Folder, Drive]c                ó°  ‡— |}| j         €|S d„ | j                              d¦  «        D ¦   «         }t          |¦  «        dk    r|S |                     ¦   «         }|D ]yŠ	 t	          t          ˆfd„|¦  «        ¦  «        d         }|                     ¦   «         }Œ># t          t          f$ r( t          d 	                    | j         ¦  «        ¦  «        ‚w xY w|S )až  
        Returns the folder or drive object located at the
        specified path relative to the given drive.

        Args:
            drive (Drive): The root drive from which the folder path is relative.

        Returns:
            Union[Folder, Drive]: The folder or drive object
            located at the specified path.

        Raises:
            FileNotFoundError: If the path does not exist.
        Nc                ó   — g | ]
}|d k    ¯|‘ŒS )Ú r%   )Ú.0Úfs     r   ú
<listcomp>z8OneDriveLoader._get_folder_from_path.<locals>.<listcomp>>   s   € ÐHÐHÐH˜AÀÀRÂÀ�aÀÀÀr!   ú/r   c                ó   •— ‰| j         v S )N)Úname)ÚxÚ	subfolders    €r   ú<lambda>z6OneDriveLoader._get_folder_from_path.<locals>.<lambda>E   s   ø€ ¸	ÀQÄVÐ8K€ r!   zPath {} not exist.)
r   ÚsplitÚlenÚ	get_itemsÚlistÚfilterÚ
IndexErrorÚAttributeErrorÚFileNotFoundErrorÚformat)r   r'   Úsubfolder_driveÚ
subfoldersÚitemsr3   s        @r   Ú_get_folder_from_pathz$OneDriveLoader._get_folder_from_path*   s   ø€ ð   ˆØÔÐ#Ø"Ð"àHÐH Ô!1×!7Ò!7¸Ñ!<Ô!<ÐHÑHÔHˆ
Ýˆz‰?Œ?˜aÒÐØ"Ð"à×)Ò)Ñ+Ô+ˆØ#ð 	Wð 	WˆIðWÝ"&¥vÐ.KÐ.KÐ.KÐ.KÈUÑ'SÔ'SÑ"TÔ"TÐUVÔ"W�Ø'×1Ò1Ñ3Ô3��øÝ¥Ð/ð Wð Wð WÝ'Ð(<×(CÒ(CÀDÔDTÑ(UÔ(UÑVÔVÐVðWøøøàÐs   Á:BÂ9CúIterator[Document]c              #  ó`  K  — 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w|                      ¦   «                              ¦   «                              | j        ¦  «        }t          ||¦  «        st          d| j        › d�¦  «        ‚t          d¦  «        }| j
        rH|                      |¦  «        }|                      |¦  «        D ]}|                     |¦  «        E d{V —† Œ| j        r9|                      || j        ¦  «        D ]}|                     |¦  «        E d{V —† ŒdS dS )z>Load documents lazily. Use this when working at a large scale.r   )r   zAO365 package not found, please install it with `pip install o365`zThere isn't a Drive with id ú.ÚdefaultN)Ú
O365.driver   ÚImportErrorÚ_authÚstorageÚ	get_driver   Ú
isinstanceÚ
ValueErrorr   r   rA   Ú_load_from_folderÚ
lazy_parser   Ú_load_from_object_ids)r   r   r'   Úblob_parserÚfolderÚblobs         r   Ú	lazy_loadzOneDriveLoader.lazy_loadK   sƒ  è è € ð	Ø(Ð(Ð(Ð(Ð(Ð(Ð(øÝð 	ð 	ð 	ÝØSñô ð ð	øøøð —
’
‘”×$Ò$Ñ&Ô&×0Ò0°´Ñ?Ô?ˆÝ˜% Ñ'Ô'ð 	NÝÐL¸D¼MÐLÐLÐLÑMÔMÐMÝ  Ñ+Ô+ˆØÔð 	8Ø×/Ò/°Ñ6Ô6ˆFØ×.Ò.¨vÑ6Ô6ð 8ð 8�Ø&×1Ò1°$Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØŒ?ð 	8Ø×2Ò2°5¸$¼/ÑJÔJð 8ð 8�Ø&×1Ò1°$Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ð	8ð 	8ð8ð 8s   „ ‹%úList[Document]c                óD   — t          |                      ¦   «         ¦  «        S )zLoad all documents.)r8   rS   r   s    r   ÚloadzOneDriveLoader.load_   s   € å�D—N’NÑ$Ô$Ñ%Ô%Ð%r!   )r   r   )r   r"   )r'   r   r   r(   )r   rB   )r   rT   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   Úpropertyr    r&   rA   rS   rV   r%   r!   r   r   r      sÛ   € € € € € € Ø)Ð)à�E˜#‘J”J€HÐÐÐÑØ:Ø!%€KÐ%Ð%Ð%Ñ%Ø4Ø&*€JÐ*Ð*Ð*Ñ*Ø4àð<ð <ð <ñ „Xð<ð ð4ð 4ð 4ñ „Xð4ðð ð ð ðB8ð 8ð 8ð 8ð(&ð &ð &ð &ð &ð &r!   r   )rZ   Ú
__future__r   ÚloggingÚtypingr   r   r   r   r   r	   Úlangchain_core.documentsr
   Úlangchain_core.pydantic_v1r   Ú.langchain_community.document_loaders.base_o365r   r   Ú5langchain_community.document_loaders.parsers.registryr   rF   r   r   Ú	getLoggerrW   Úloggerr   r%   r!   r   ú<module>rf      s'  ðØ Ð Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kà -Ð -Ð -Ð -Ð -Ð -Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð MÐ LÐ LÐ LÐ LÐ Làð )Ø(Ð(Ð(Ð(Ð(Ð(Ð(Ð(à	ˆÔ	˜8Ñ	$Ô	$€ðK&ð K&ð K&ð K&ð K&�^ñ K&ô K&ð K&ð K&ð K&r!   