§
    æ˜ºhŠ  ã                   ó¤   — d Z ddlmZ ddlmZmZmZmZ ddlZddl	m
Z
 ddlmZmZmZmZmZ ddlmZ  G d„ d	e¦  «        Z G d
„ dee¦  «        ZdS )z!Loads data from OneNote Notebooksé    )ÚPath)ÚDictÚIteratorÚListÚOptionalN)ÚDocument)Ú	BaseModelÚBaseSettingsÚFieldÚFilePathÚ	SecretStr)Ú
BaseLoaderc                   ór   — e Zd ZU  edd¬¦  «        Zeed<    edd¬¦  «        Zeed<    G d„ d¦  «        Z	d	S )
Ú_OneNoteGraphSettings.ÚMS_GRAPH_CLIENT_ID)ÚenvÚ	client_idÚMS_GRAPH_CLIENT_SECRETÚclient_secretc                   ó   — e Zd ZdZdZdZdZdS )ú_OneNoteGraphSettings.Configz Config for OneNoteGraphSettings.Ú Fz.envN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
env_prefixÚcase_sentiveÚenv_file© ó    út/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/document_loaders/onenote.pyÚConfigr      s#   € € € € € Ø.Ð.àˆ
ØˆØˆˆˆr!   r#   N)
r   r   r   r   r   ÚstrÚ__annotations__r   r   r#   r    r!   r"   r   r      s~   € € € € € € Ø�U˜3Ð$8Ð9Ñ9Ô9€IˆsÐ9Ð9Ñ9Ø$˜u SÐ.FÐGÑGÔG€M�9ÐGÐGÑGðð ð ð ð ñ ô ð ð ð r!   r   c                   óØ  — e Zd ZU dZ ee¬¦  «        Zeed<   	 dZe	ed<   	 dZ
eed<   	 dZeed	<   	 d
Z	  ej        ¦   «         dz  dz  Zeed<   	 dZee         ed<   	 dZee         ed<   	 dZee         ed<   	 dZeee                  ed<   	 dee         fd„Zdee         fd„Zdedefd„Zedeeef         fd„¦   «         Zedee         fd„¦   «         Z dd„Z!edefd„¦   «         Z"dS )ÚOneNoteLoaderz"Load pages from OneNote notebooks.)Údefault_factoryÚsettingsFÚauth_with_tokenr   Úaccess_tokenz+https://graph.microsoft.com/v1.0/me/onenoteÚonenote_api_base_urlz,https://login.microsoftonline.com/consumers/z.credentialszonenote_graph_token.txtÚ
token_pathNÚnotebook_nameÚsection_nameÚ
page_titleÚ
object_idsÚreturnc              #   ó$  K  — |                       ¦   «          	 ddlm} n# t          $ r t          d¦  «        ‚w xY w| j        �z| j        D ]p}|                      |¦  «        } ||d¦  «        }d}|j        }|r|                     d¬¦  «        }|                     d	d¬
¦  «        }t          |d|i¬¦  «        V — ŒqdS | j	        }|dk    rÆt          j        || j        d¬¦  «        }	|	                     ¦   «          |	                     ¦   «         }
|
d         D ]b}|d         }|                      |¦  «        } ||d¦  «        }d}|j        }|r|                     d	d¬
¦  «        }t          |d|i¬¦  «        V — Œcd|
v r	|
d         }nd}|dk    °ÄdS dS )úÌ
        Get pages from OneNote notebooks.

        Returns:
            A list of Documents with attributes:
                - page_content
                - metadata
                    - title
        r   )ÚBeautifulSoupzJbeautifulsoup4 package not found, please install it with `pip install bs4`Nzhtml.parserr   T)Ústripú
)Ú	separatorr6   Útitle)Úpage_contentÚmetadataé
   ©ÚheadersÚtimeoutÚvalueÚidz@odata.nextLink)Ú_authÚbs4r5   ÚImportErrorr1   Ú_get_page_contentr9   Úget_textr   Ú_urlÚrequestsÚgetÚ_headersÚraise_for_statusÚjson)Úselfr5   Ú	object_idÚpage_content_htmlÚsoupr0   Ú	title_tagr:   Úrequest_urlÚresponseÚpagesÚpageÚpage_ids                r"   Ú	lazy_loadzOneNoteLoader.lazy_load6   s<  è è € ð 	�
Š
‰Œˆð	Ø)Ð)Ð)Ð)Ð)Ð)Ð)øÝð 	ð 	ð 	Ýð$ñô ð ð	øøøð Œ?Ð&Ø!œ_ð 
ð 
�	Ø$(×$:Ò$:¸9Ñ$EÔ$EÐ!Ø$�}Ð%6¸ÑFÔF�Ø�
Ø œJ�	Øð @Ø!*×!3Ò!3¸$Ð!3Ñ!?Ô!?�JØ#Ÿ}š}°tÀ4˜}ÑHÔH�ÝØ!-¸À*Ð8Mðñ ô ð ð ð ð ð
ð 
ð œ)ˆKà Ò#Ð#Ý#œ<¨¸T¼]ÐTVÐWÑWÔW�Ø×)Ò)Ñ+Ô+Ð+Ø Ÿš™œ�à! 'œNð 
ð 
�DØ" 4œj�GØ(,×(>Ò(>¸wÑ(GÔ(GÐ%Ø(˜=Ð):¸MÑJÔJ�DØ!#�JØ $¤
�IØ ð QØ'+§}¢}¸tÈ4 }Ñ'PÔ'P˜Ý"Ø%1¸WÀjÐ<Qðñ ô ð ð ð ð ð %¨Ð-Ð-Ø"'Ð(9Ô":�K�Kà"$�Kð)  Ò#Ð#Ð#Ð#Ð#Ð#s   ˜ Ÿ9c                 óD   — t          |                      ¦   «         ¦  «        S )r4   )ÚlistrW   ©rM   s    r"   ÚloadzOneNoteLoader.loado   s   € õ �D—N’NÑ$Ô$Ñ%Ô%Ð%r!   rV   c                 óŒ   — | j         d|› d�z   }t          j        || j        d¬¦  «        }|                     ¦   «          |j        S )z!Get page content from OneNote APIz/pages/z/contentr<   r=   )r,   rH   rI   rJ   rK   Útext)rM   rV   rR   rS   s       r"   rE   zOneNoteLoader._get_page_content{   sM   € àÔ/Ð2M¸GÐ2MÐ2MÐ2MÑMˆÝ”< °T´]ÈBÐOÑOÔOˆØ×!Ò!Ñ#Ô#Ð#ØŒ}Ðr!   c                 ó   — dd| j         › �iS )z*Return headers for requests to OneNote APIÚAuthorizationzBearer )r+   rZ   s    r"   rJ   zOneNoteLoader._headers‚   s   € ð Ð: tÔ'8Ð:Ð:ð
ð 	
r!   c                 ó   — dgS )zReturn required scopes.z
Notes.Readr    rZ   s    r"   Ú_scopeszOneNoteLoader._scopes‰   s   € ð ˆ~Ðr!   c                 óX  — | j         dk    rdS | j        rN| j                             d¦  «        5 }|                     ¦   «         | _         ddd¦  «         dS # 1 swxY w Y   dS 	 ddlm} n"# t          $ r}t          d¦  «        |‚d}~ww xY w || j        j	        | j        j
                             ¦   «         | j        ¬¦  «        }|                     | j        ¦  «        }t          d¦  «         t          |¦  «         t!          d	¦  «        }|                     d
¦  «        d                              d¦  «        d         }|                     || j        ¬¦  «        }|d         | _         	 | j        j                             ¦   «         s | j        j                             d¬¦  «         n3# t,          $ r&}t-          d| j        j        › d�dz   ¦  «        |‚d}~ww xY w| j                             d¦  «        5 }|                     | j         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z%Authenticate with Microsoft Graph APIr   NÚrr   )ÚConfidentialClientApplicationzAMSAL package not found, please install it with `pip install msal`)r   Úclient_credentialÚ	authorityz(Visit the following url to give consent:z"Paste the authenticated url here:
zcode=é   ú&)ÚcodeÚscopesr+   T)ÚparentszCould not create the folder ú zto store the access token.Úw)r+   r*   r-   ÚopenÚreadÚmsalrd   rD   r)   r   r   Úget_secret_valueÚauthority_urlÚget_authorization_request_urlra   ÚprintÚinputÚsplitÚ#acquire_token_by_authorization_codeÚparentÚexistsÚmkdirÚ	ExceptionÚwrite)	rM   Ú
token_filerd   ÚeÚclient_instanceÚauthorization_request_urlÚauthorization_urlÚauthorization_codeÚaccess_token_jsons	            r"   rB   zOneNoteLoader._authŽ   sü  € àÔ Ò"Ð"ØˆFàÔð (	4Ø”×%Ò% cÑ*Ô*ð 6¨jØ$.§O¢OÑ$5Ô$5�Ô!ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6ðØ>Ð>Ð>Ð>Ð>Ð>Ð>øÝð ð ð Ý!ØWñô àðøøøøðøøøð
 <Ð;Øœ-Ô1Ø"&¤-Ô"=×"NÒ"NÑ"PÔ"PØÔ,ðñ ô ˆOð )8×(UÒ(UØ”ñ)ô )Ð%õ Ð<Ñ=Ô=Ð=ÝÐ+Ñ,Ô,Ð,Ý %Ð&KÑ LÔ LÐà!2×!8Ò!8¸Ñ!AÔ!AÀ!Ô!D×!JÒ!JÈ3Ñ!OÔ!OÐPQÔ!RÐØ /× SÒ SØ'°´ð !Tñ !ô !Ðð !2°.Ô AˆDÔðØ”Ô-×4Ò4Ñ6Ô6ð ?Ø”OÔ*×0Ò0¸Ð0Ñ>Ô>Ð>øøÝð ð ð ÝØL°4´?Ô3IÐLÐLÐLØ2ñ3ñô ð ðøøøøðøøøð ”×%Ò% cÑ*Ô*ð 4¨jØ× Ò  Ô!2Ñ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4sS   ¯AÁAÁAÁ$A+ Á+
B
Á5BÂB
Å+>F* Æ*
GÆ4!GÇGÇ7HÈH#È&H#c                 óD  — g }g }g }|                      d¦  «         | j        �J|                      dd| j                             dd¦  «        › d�z   ¦  «         |                      d¦  «         | j        �J|                      dd| j                             dd¦  «        › d�z   ¦  «         |                      d	¦  «         | j        �5|                      d
d| j                             dd¦  «        › d�z   ¦  «         t          |¦  «        dk    r+|                      dd                     |¦  «        z   ¦  «         t          |¦  «        dk    r+|                      dd                     |¦  «        z   ¦  «         d                     |¦  «        }|dk    rd|z   }| j        › d|› �S )z8Create URL for getting page ids from the OneNoteApi API.z
$select=idNz"parentNotebook/displayName%20eq%20ú'rl   z%20ÚparentNotebookz!parentSection/displayName%20eq%20ÚparentSectionztitle%20eq%20r   z$expand=ú,z$filter=z	%20and%20rh   r   ú?z/pages)Úappendr.   Úreplacer/   r0   ÚlenÚjoinr,   )rM   Úquery_params_listÚfilter_listÚexpand_listÚquery_paramss        r"   rG   zOneNoteLoader._url½   sâ  € ð ÐØˆØˆà× Ò  Ñ.Ô.Ð.ØÔÐ)Ø×ÒØ4Ø?�dÔ(×0Ò0°°eÑ<Ô<Ð?Ð?Ð?ñ@ñô ð ð ×ÒÐ/Ñ0Ô0Ð0ØÔÐ(Ø×ÒØ3Ø>�dÔ'×/Ò/°°UÑ;Ô;Ð>Ð>Ð>ñ?ñô ð ð ×Ò˜Ñ/Ô/Ð/ØŒ?Ð&Ø×ÒØÐ"L d¤o×&=Ò&=¸cÀ5Ñ&IÔ&IÐ"LÐ"LÐ"LÑLñô ð õ ˆ{ÑÔ˜aÒÐØ×$Ò$ Z°#·(²(¸;Ñ2GÔ2GÑ%GÑHÔHÐHÝˆ{ÑÔ˜aÒÐØ×$Ò$ Z°+×2BÒ2BÀ;Ñ2OÔ2OÑ%OÑPÔPÐPà—x’xÐ 1Ñ2Ô2ˆØ˜2ÒÐØ Ñ-ˆLØÔ+ÐAÐA°<ÐAÐAÐAr!   )r2   N)#r   r   r   r   r   r   r)   r%   r*   Úboolr+   r$   r,   rr   r   Úhomer-   r   r.   r   r/   r0   r1   r   r   r   rW   r[   rE   Úpropertyr   rJ   ra   rB   rG   r    r!   r"   r'   r'      s  € € € € € € Ø,Ð,à&+ eÐ<QÐ&RÑ&RÔ&R€HÐ#ÐRÐRÑRØ6Ø!€O�TÐ!Ð!Ñ!ØIØ€L�#ÐÐÑØØ MÐ˜#ÐMÐMÑMØ0ØB€MØ1Ø$˜4œ9™;œ;¨Ñ7Ð:SÑS€J�ÐSÐSÑSØ;Ø#'€M�8˜C”=Ð'Ð'Ñ'Ø!Ø"&€L�(˜3”-Ð&Ð&Ñ&Ø Ø $€J�˜”Ð$Ð$Ñ$Ø Ø&*€J�˜˜cœÔ#Ð*Ð*Ñ*Ø4ð7%˜8 HÔ-ð 7%ð 7%ð 7%ð 7%ðr
&�d˜8”nð 
&ð 
&ð 
&ð 
&ð¨ð °ð ð ð ð ð ð
˜$˜s C˜xœ.ð 
ð 
ð 
ñ „Xð
ð ð˜˜cœð ð ð ñ „Xðð-4ð -4ð -4ð -4ð^ ð B�cð  Bð  Bð  Bñ „Xð Bð  Bð  Br!   r'   )r   Úpathlibr   Útypingr   r   r   r   rH   Úlangchain_core.documentsr   Úlangchain_core.pydantic_v1r	   r
   r   r   r   Ú)langchain_community.document_loaders.baser   r   r'   r    r!   r"   ú<module>rš      s+  ðØ 'Ð 'Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à €€€Ø -Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @ð	ð 	ð 	ð 	ð 	˜Lñ 	ô 	ð 	ð@Bð @Bð @Bð @Bð @B�J 	ñ @Bô @Bð @Bð @Bð @Br!   