§
    šŠtjp4  ã                  ó¬  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZ dd	lmZm Z  dd
l!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l.m/Z/m0Z0  ej1        e2¦  «        Z3dZ4 G d„ de¦  «        Z5 G d„ de¦  «        Z6dd„Z7d d„Z8 G d„ de#e¦  «        Z9dS )!ú1Base class for all loaders that uses O365 Packageé    )ÚannotationsN)Úabstractmethod)Údatetime)ÚPathÚPurePath)ÚTYPE_CHECKINGÚAnyÚDictÚIterableÚListÚOptionalÚSequenceÚUnion)Ú	BaseModelÚFieldÚFilePathÚPrivateAttrÚ	SecretStr)ÚBaseSettingsÚSettingsConfigDict)ÚBaseBlobParserÚ
BaseLoader)ÚFileSystemBlobLoader)ÚBlob)ÚMimeTypeBasedParser)Ú
get_parser)ÚAccount)ÚDriveÚFolderi  P c                  óv   — e Zd ZU  edd¬¦  «        Zded<    edd¬¦  «        Zded<    ed	d
dd¬¦  «        ZdS )Ú_O365Settings.ÚO365_CLIENT_ID)ÚaliasÚstrÚ	client_idÚO365_CLIENT_SECRETr   Úclient_secretFz.envÚ Úignore)Úcase_sensitiveÚenv_fileÚ
env_prefixÚextraN)	Ú__name__Ú
__module__Ú__qualname__r   r&   Ú__annotations__r(   r   Úmodel_config© ó    úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/document_loaders/base_o365.pyr"   r"   *   sr   € € € € € € Ø�U˜3Ð&6Ð7Ñ7Ô7€IÐ7Ð7Ð7Ñ7Ø$˜u SÐ0DÐEÑEÔE€MÐEÐEÐEÑEà%Ð%Ø v¸"ÀHðñ ô €L€L€Lr5   r"   c                  óD   — e Zd ZU  ej        ¦   «         dz  dz  Zded<   dS )Ú_O365TokenStorageú.credentialszo365_token.txtr   Ú
token_pathN)r/   r0   r1   r   Úhomer:   r2   r4   r5   r6   r8   r8   3   s6   € € € € € € Ø$˜4œ9™;œ;¨Ñ7Ð:JÑJ€JÐJÐJÐJÑJÐJÐJr5   r8   Ú
file_typesúSequence[str]ÚreturnúDict[str, str]c                óz   — i }| D ]5}t          j        d|› �¦  «        \  }}|r|||<   Œ$t          d|› �¦  «        ‚|S )ú2Fetch the mime types for the specified file types.zfile.zUnknown mimetype of extension )Ú	mimetypesÚ
guess_typeÚ
ValueError)r<   Úmime_types_mappingÚextÚ	mime_typeÚ_s        r6   Úfetch_mime_typesrI   7   sg   € àÐØð Eð EˆÝ Ô+¨M°C¨M¨MÑ:Ô:‰ˆ	�1Øð 	EØ&/Ð˜sÑ#Ð#åÐC¸cÐCÐCÑDÔDÐDØÐr5   Ú
mime_typesc                ó~   — i }| D ]7}t          j        |¦  «        }|r|||dd…         <   Œ&t          d|› �¦  «        ‚|S )rA   é   NzUnknown mimetype )rB   Úguess_extensionrD   )rJ   rE   rG   rF   s       r6   Úfetch_extensionsrN   C   sb   € àÐØð >ð >ˆ	ÝÔ'¨	Ñ2Ô2ˆØð 	>Ø*3Ð˜s 1 2 2œwÑ'Ð'åÐ<°Ð<Ð<Ñ=Ô=Ð=ØÐr5   c                  óL  ‡ — e Zd ZU dZ ee¬¦  «        Zded<   	 dZded<   	 e	Z
ded	<   	 dZded
<   	 dZded<   	 i Zded<   	  e¦   «         Zded<    e¦   «         Zded<    e¦   «         Zded<   d(ˆ fd„Zed)d„¦   «         Zeed*d„¦   «         ¦   «         Zd+d!„Zd,d%„Zd-d'„Zˆ xZS ).ÚO365BaseLoaderr   )Údefault_factoryr"   ÚsettingsFÚboolÚauth_with_tokenzUnion[int, str]Ú
chunk_sizeÚ	recursiveNzOptional[datetime]Úmodified_sincezOptional[Dict[str, Any]]Úhandlersr   Ú_blob_parserr=   Ú_file_typesr?   Ú_mime_typesÚkwargsr
   r>   ÚNonec                óª  •‡ —  t          ¦   «         j        di |¤Ž ‰ j        �r t          ‰ j                             ¦   «         ¦  «        }	 t          |¦  «        ‰ _        t          t          |¦  «        ¦  «        ‰ _        ˆ fd„‰ j         	                    ¦   «         D ¦   «         }n†# t          $ ry 	 t          |¦  «        ‰ _        t          t          ‰ j                             ¦   «         ¦  «        ¦  «        ‰ _        ‰ j        }n!# t          $ r t          d|› d�¦  «        ‚w xY wY nw xY wt          |d ¬¦  «        ‰ _        d S t          d¦  «        ‰ _        t          ‰ j        t          ¦  «        s$t!          dt#          ‰ j        ¦  «        › �¦  «        ‚t          t          ‰ j        j                             ¦   «         ¦  «        ¦  «        ‰ _        d S )Nc                ó2   •— i | ]\  }}‰j         |         |“ŒS r4   ©r[   )Ú.0Ú	extensionÚhandlerÚselfs      €r6   ú
<dictcomp>z+O365BaseLoader.__init__.<locals>.<dictcomp>‡   s7   ø€ ð !ð !ð !á*˜	 7ð Ô$ YÔ/°ð!ð !ð !r5   z=`handlers` keys must be either file extensions or mimetypes.
zj could not be interpreted as either.
File extensions and mimetypes cannot mix. Use either one or the other)rX   Úfallback_parserÚdefaultzLget_parser("default) was supposed to return MimeTypeBasedParser.It returned r4   )ÚsuperÚ__init__rX   ÚlistÚkeysrI   r[   ÚsetrZ   ÚitemsrD   rN   r   rY   r   Ú
isinstanceÚ	TypeErrorÚtype)rd   r\   Úhandler_keysÚmime_handlersÚ	__class__s   `   €r6   ri   zO365BaseLoader.__init__   s  øø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØŒ=ñ "	YÝ ¤× 2Ò 2Ñ 4Ô 4Ñ5Ô5ˆLðå#3°LÑ#AÔ#A�Ô Ý#'­¨LÑ(9Ô(9Ñ#:Ô#:�Ô ð!ð !ð !ð !à.2¬m×.AÒ.AÑ.CÔ.Cð!ñ !ô !��øõ ð ð ð ðå'7¸Ñ'EÔ'E�DÔ$Ý'+­C°Ô0@×0EÒ0EÑ0GÔ0GÑ,HÔ,HÑ'IÔ'I�DÔ$Ø$(¤M�M�MøÝ!ð ð ð Ý$ð6Ø'ð6ð 6ð 6ñô ð ðøøøð "�Mðøøøõ !4Ø&¸ð!ñ !ô !ˆDÔÐÐõ !+¨9Ñ 5Ô 5ˆDÔÝ˜dÔ/Õ1DÑEÔEð Ýð=Ý#'¨Ô(9Ñ#:Ô#:ð=ð =ñô ð õ  0µ°TÔ5FÔ5O×5TÒ5TÑ5VÔ5VÑ0WÔ0WÑXÔXˆDÔÐÐs,   ÁAB& Â&
D)Â1ADÄD)ÄD#Ä#D)Ä(D)c                ó   — | j         S )zBReturn a dict of supported file types to corresponding mime types.r`   ©rd   s    r6   Ú_fetch_mime_typesz O365BaseLoader._fetch_mime_types¥   s   € ð ÔÐr5   ú	List[str]c                ó   — dS )zReturn required scopes.Nr4   ru   s    r6   Ú_scopeszO365BaseLoader._scopesª   s   € € € r5   Úfolderr    úIterable[Blob]c              #  ó(  K  — | j         }|                     ¦   «         }i }t          j        ¦   «         5 }t	          j        t          j                             |¦  «        d¬¦  «         |D �]2}|j        �r'|j	        t          |                     ¦   «         ¦  «        v rÿ| j        r|j        | j        k    rè|j        }t          j        d|j        ¦  «        r4|j        j        dz   t$          j                             |j        ¦  «        z   }|                     || j        ¬¦  «         ||j	        t1          |j        ¦  «        t1          |j        ¦  «        t1          |j        ¦  «        t1          |j        ¦  «        |j        t1          |j        ¦  «        dœ||j        <   �Œ4t=          |¬¦  «        }|                     ¦   «         D ]}}	tA          |	j        tB          ¦  «        stE          d¦  «        ‚|	j        rG| #                    t1          |	j        j        ¦  «        i ¦  «        }
|	j$         %                    |
¦  «         |	V — Œ~	 d	d	d	¦  «         n# 1 swxY w Y   | j&        r2| '                    ¦   «         D ]}|  (                    |¦  «        E d	{V —† Œd	S d	S )
aË  Lazily load all files from a specified folder of the configured MIME type.

        Args:
            folder: The Folder instance from which the files are to be loaded. This
                Folder instance should represent a directory in a file system where the
                files are stored.

        Yields:
            An iterator that yields Blob instances, which are binary representations of
                the files loaded from the folder.
        T)Úexist_okú"Doc.aspx\?sourcedoc=.*file=([^&]+)ú/©Úto_pathrU   ©ÚsourcerG   ÚcreatedÚmodifiedÚ
created_byÚmodified_byÚdescriptionÚid©Úpathú#Expected blob path to be a PurePathN))rv   Ú	get_itemsÚtempfileÚTemporaryDirectoryÚosÚmakedirsr‹   ÚdirnameÚis_filerG   rj   ÚvaluesrW   r…   Úweb_urlÚreÚsearchÚ_parentÚurllibÚparseÚquoteÚnameÚdownloadrU   r%   r„   r†   r‡   rˆ   Ú	object_idr   Úyield_blobsrn   r   ÚNotImplementedErrorÚgetÚmetadataÚupdaterV   Úget_child_foldersÚ_load_from_folder)rd   rz   Úfile_mime_typesrm   Úmetadata_dictÚtemp_dirÚfilerƒ   ÚloaderÚblobÚfile_metadata_Ú	subfolders               r6   r¥   z O365BaseLoader._load_from_folder¯   sØ  è è € ð Ô0ˆØ× Ò Ñ"Ô"ˆØ35ˆÝÔ(Ñ*Ô*ð $	¨hÝŒK�œŸš¨Ñ1Ô1¸DÐAÑAÔAÐAØð ñ �Ø”<ñ Ø”~­¨o×.DÒ.DÑ.FÔ.FÑ)GÔ)GÐGÐGØ $Ô 3ð Ø œM¨DÔ,?Ò?Ð?à%)¤\˜FÝ!œyØ EÀtÄ|ñ ô  ð "ð %)¤LÔ$8Ø&)ñ%*å&,¤l×&8Ò&8¸¼Ñ&CÔ&Cñ%Dð !'ð
 !ŸMšM°(ÀtÄ˜MÑWÔWÐWà*0Ø-1¬^Ý+.¨t¬|Ñ+<Ô+<Ý,/°´Ñ,>Ô,>Ý.1°$´/Ñ.BÔ.BÝ/2°4Ô3CÑ/DÔ/DØ/3Ô/?Ý&)¨$¬.Ñ&9Ô&9ð	8ð 	8˜M¨$¬)Ñ4ùõ *¨xÐ8Ñ8Ô8ˆFØ×*Ò*Ñ,Ô,ð ð �Ý! $¤)­XÑ6Ô6ð UÝ-Ð.SÑTÔTÐTØ”9ð 9Ø%2×%6Ò%6µs¸4¼9¼>Ñ7JÔ7JÈBÑ%OÔ%O�NØ”M×(Ò(¨Ñ8Ô8Ð8Ø�
�
�
�
ðð=$	ð $	ð $	ñ $	ô $	ð $	ð $	ð $	ð $	ð $	ð $	øøøð $	ð $	ð $	ð $	ðJ Œ>ð 	=Ø#×5Ò5Ñ7Ô7ð =ð =�	Ø×1Ò1°)Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð	=ð 	=ð=ð =s   ³HIÉIÉIÚdriver   Ú
object_idsc              #  ó(  K  — | j         }i }t          j        ¦   «         5 }|D �]3}|                     |¦  «        }|st	          j        d|› d|› d�¦  «         Œ6|j        rö|j        t          | 	                    ¦   «         ¦  «        v rÎ|j
        }t          j        d|j
        ¦  «        r4|j        j
        dz   t          j                             |j        ¦  «        z   }|                     || j        ¬¦  «         ||j        |j        |j        t-          |j        ¦  «        t-          |j        ¦  «        |j        t-          |j        ¦  «        dœ||j        <   �Œ5t7          |¬¦  «        }	|	                     ¦   «         D ]}}
t;          |
j        t>          ¦  «        stA          d	¦  «        ‚|
j        rG| !                    t-          |
j        j        ¦  «        i ¦  «        }|
j"         #                    |¦  «         |
V — Œ~	 d
d
d
¦  «         d
S # 1 swxY w Y   d
S )aÏ  Lazily load files specified by their object_ids from a drive.

        Load files into the system as binary large objects (Blobs) and return Iterable.

        Args:
            drive: The Drive instance from which the files are to be loaded. This Drive
                instance should represent a cloud storage service or similar storage
                system where the files are stored.
            object_ids: A list of object_id strings. Each object_id represents a unique
                identifier for a file in the drive.

        Yields:
            An iterator that yields Blob instances, which are binary representations of
            the files loaded from the drive using the specified object_ids.
        z!There isn't a file withobject_id z
 in drive ú.r~   r   r€   r‚   rŠ   rŒ   N)$rv   rŽ   r�   Úget_itemÚloggingÚwarningr“   rG   rj   r”   r•   r–   r—   r˜   r™   rš   r›   rœ   r�   rU   r„   r…   r%   r†   r‡   rˆ   rž   r   rŸ   rn   r‹   r   r    r¡   r¢   r£   )rd   r®   r¯   r¦   r§   r¨   rž   r©   rƒ   rª   r«   r¬   s               r6   Ú_load_from_object_idsz$O365BaseLoader._load_from_object_idsç   s€  è è € ð$ Ô0ˆØ35ˆÝÔ(Ñ*Ô*ð '	¨hØ'ð ñ �	Ø—~’~ iÑ0Ô0�Øð Ý”OðCØ%.ðCð CØ:?ðCð Cð Cñô ð ð Ø”<ð Ø”~­¨o×.DÒ.DÑ.FÔ.FÑ)GÔ)GÐGÐGØ!%¤˜Ýœ9ØAÀ4Ä<ñô ð ð !%¤Ô 4Ø"%ñ!&å"(¤,×"4Ò"4°T´YÑ"?Ô"?ñ!@ð #ð
 Ÿš¨hÀ4Ä?˜ÑSÔSÐSà&,Ø)-¬Ø'+¤|Ø(,¬Ý*-¨d¬oÑ*>Ô*>Ý+.¨tÔ/?Ñ+@Ô+@Ø+/Ô+;Ý"% d¤nÑ"5Ô"5ð	4ð 	4˜ d¤iÑ0ùõ *¨xÐ8Ñ8Ô8ˆFØ×*Ò*Ñ,Ô,ð ð �Ý! $¤)­XÑ6Ô6ð UÝ-Ð.SÑTÔTÐTØ”9ð 9Ø%2×%6Ò%6µs¸4¼9¼>Ñ7JÔ7JÈBÑ%OÔ%O�NØ”M×(Ò(¨Ñ8Ô8Ð8Ø�
�
�
�
ððC'	ð '	ð '	ñ '	ô '	ð '	ð '	ð '	ð '	ð '	ð '	ð '	øøøð '	ð '	ð '	ð '	ð '	ð '	s   ŸGHÈHÈHr   c                ó  — 	 ddl m}m} n# t          $ r t          d¦  «        ‚w xY w| j        rht          ¦   «         }|j        } ||j        |j        ¬¦  «        } |d
| j	        j
        | j	        j                             ¦   «         f| j        |dœddi¤Ž}no |t          j        ¦   «         dz  ¬	¦  «        } |d
| j	        j
        | j	        j                             ¦   «         f| j        |dœddi¤Ž}|                     ¦   «          |S )znAuthenticates the OneDrive API client

        Returns:
            The authenticated Account object.
        r   )r   ÚFileSystemTokenBackendzAO365 package not found, please install it with `pip install o365`)r:   Útoken_filename)ÚcredentialsÚscopesÚtoken_backendÚraise_http_errorsFr9   )r:   r4   )ÚO365r   r·   ÚImportErrorrT   r8   r:   Úparentrœ   rR   r&   r(   Úget_secret_valuery   r   r;   Úauthenticate)rd   r   r·   Útoken_storager:   r»   Úaccounts          r6   Ú_authzO365BaseLoader._auth$  sƒ  € ð	Ø<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<øÝð 	ð 	ð 	ÝØSñô ð ð	øøøð Ôð 	#Ý-Ñ/Ô/ˆMØ&Ô1ˆJØ2Ð2Ø%Ô,¸Z¼_ðñ ô ˆMð �gð à”MÔ+Ø”MÔ/×@Ò@ÑBÔBðð ”|Ø+ðð ð '¨Ð.ðð ˆGˆGð 3Ð2Ýœ9™;œ;¨Ñ7ðñ ô ˆMð �gð à”MÔ+Ø”MÔ/×@Ò@ÑBÔBðð ”|Ø+ðð ð '¨Ð.ðð ˆGð × Ò Ñ"Ô"Ð"Øˆs   ‚ ‹%)r\   r
   r>   r]   )r>   r?   )r>   rw   )rz   r    r>   r{   )r®   r   r¯   rw   r>   r{   )r>   r   )r/   r0   r1   Ú__doc__r   r"   rR   r2   rT   Ú
CHUNK_SIZErU   rV   rW   rX   r   rY   rZ   r[   ri   Úpropertyrv   r   ry   r¥   rµ   rÄ   Ú__classcell__)rs   s   @r6   rP   rP   O   s¤  ø€ € € € € € Ø;Ð;à#˜e°MÐBÑBÔB€HÐBÐBÐBÑBØ0Ø!€OÐ!Ð!Ð!Ñ!ØIØ",€JÐ,Ð,Ð,Ñ,ØVØ€IÐÐÐÑØ8Ø)-€NÐ-Ð-Ð-Ñ-ðà)+€HÐ+Ð+Ð+Ñ+ðð: $/ ;¡=¤=€LÐ0Ð0Ð0Ñ0Ø!, ¡¤€KÐ.Ð.Ð.Ñ.Ø"- +¡-¤-€KÐ/Ð/Ð/Ñ/ð$Yð $Yð $Yð $Yð $Yð $YðL ð ð  ð  ñ „Xð ð Øð&ð &ð &ñ „^ñ „Xð&ð6=ð 6=ð 6=ð 6=ðp;ð ;ð ;ð ;ðz*ð *ð *ð *ð *ð *ð *ð *r5   rP   )r<   r=   r>   r?   )rJ   r=   r>   r?   ):rÅ   Ú
__future__r   r³   rB   r�   r–   rŽ   r™   Úabcr   r   Úpathlibr   r   Útypingr	   r
   r   r   r   r   r   r   Úpydanticr   r   r   r   r   Úpydantic_settingsr   r   Ú)langchain_community.document_loaders.baser   r   Ú=langchain_community.document_loaders.blob_loaders.file_systemr   Ú8langchain_community.document_loaders.blob_loaders.schemar   Ú4langchain_community.document_loaders.parsers.genericr   Ú5langchain_community.document_loaders.parsers.registryr   r½   r   Ú
O365.driver   r    Ú	getLoggerr/   ÚloggerrÆ   r"   r8   rI   rN   rP   r4   r5   r6   ú<module>r×      sª  ðØ 7Ð 7à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ Vðð ð ð ð ð ð ð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >Ð >Ð >à PÐ PÐ PÐ PÐ PÐ PÐ PÐ Pðð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ IØ TÐ TÐ TÐ TÐ TÐ TØ LÐ LÐ LÐ LÐ LÐ Làð )ØÐÐÐÐÐØ(Ð(Ð(Ð(Ð(Ð(Ð(Ð(à	ˆÔ	˜8Ñ	$Ô	$€à€
ðð ð ð ð �Lñ ô ð ðKð Kð Kð Kð K˜ñ Kô Kð Kð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ðð ð ð ð �Z ñ ô ð ð ð r5   